
SSL/TLS 프로토콜을 구현하고 암호화, 복호화, 인증서 관리, 해시 함수를 포함한 완전한 강도의 암호화 라이브러리를 제공하는 오픈소스 툴킷
OpenSSL 1.0.1g 7 Apr 2014
Copyright (c) 1998-2011 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson 모든 권리 보유.
OpenSSL 프로젝트는 Secure Sockets Layer(SSL v2/v3) 및 Transport Layer Security(TLS v1) 프로토콜과 완전한 기능을 갖춘 범용 암호화 라이브러리를 구현하는 견고하고 상용 수준의 완전한 오픈 소스 툴킷을 개발하기 위한 공동 작업입니다. 이 프로젝트는 인터넷을 통해 소통하고 계획하며 OpenSSL 툴킷과 관련 문서를 개발하는 전 세계 자원봉사자 커뮤니티에 의해 관리됩니다.
OpenSSL은 Eric A. Young과 Tim J. Hudson이 개발한 우수한 SSLeay 라이브러리를 기반으로 합니다. OpenSSL 툴킷은 이중 라이선스(OpenSSL 라이선스와 SSLeay 라이선스) 체제로 제공됩니다. 이는 기본적으로 두 라이선스의 조건을 모두 충족하는 한 상업적 및 비상업적 목적으로 자유롭게 획득하고 사용할 수 있음을 의미합니다.
OpenSSL 툴킷에는 다음이 포함됩니다:
libssl.a: SSLv2, SSLv3, TLSv1의 구현과 단일 서버 및 클라이언트에서 SSLv2, SSLv3 및 TLSv1을 모두 지원하는 데 필요한 코드.
libcrypto.a: SSL/TLS에 필요하지만 논리적으로는 그 일부가 아닌 일반 암호화 및 X.509 v1/v3 관련 기능. 다음을 위한 루틴이 포함됩니다:
암호
libdes - 수년간 네트워크에 유포되던 EAY의 libdes DES 암호화 패키지로, 이후 그가
SSLeay의 일부로 재라이선스했습니다. cbc 모드의 desx, 빠른 crypt(3),
키보드에서 비밀번호를 읽는 루틴을 포함하여 DES의 15가지
'모드/변형'(ecb, cbc, cfb 및 ofb의 1, 2, 3키 버전; pcbc 및 보다
일반적인 형태의 cfb와 ofb)이 포함됩니다.
RC4 암호화,
RC2 암호화 - ecb, cbc, cfb 및 ofb의 4가지 모드.
Blowfish 암호화 - ecb, cbc, cfb 및 ofb의 4가지 모드.
IDEA 암호화 - ecb, cbc, cfb 및 ofb의 4가지 모드.
다이제스트
MD5 및 MD2 메시지 다이제스트 알고리즘, 빠른 구현,
SHA(SHA-0) 및 SHA-1 메시지 다이제스트 알고리즘,
MDC2 메시지 다이제스트. 스마트 카드에서 널리 사용되는 DES 기반 해시.
공개 키
RSA 암호화/복호화/생성.
비트 수에 제한이 없습니다.
DSA 암호화/복호화/생성.
비트 수에 제한이 없습니다.
Diffie-Hellman 키 교환/키 생성.
비트 수에 제한이 없습니다.
X.509v3 인증서
바이너리 ASN1 및 개인 키로 암호화를 지원하는 PEM 기반 ASCII-바이너리 인코딩으로의/
로부터의 X509 인코딩/디코딩. RSA 및 DSA 인증서 요청을 생성하고 RSA 및 DSA 인증서를
생성하는 프로그램.
시스템
일반적인 디지털 봉투 루틴과 base64 인코딩. 이름별로 암호 및 다이제스트에 대한 상위
수준 액세스. 런타임에 새 암호를 로드할 수 있습니다. 단순한 비차단 IO 추상화인 BIO
입출력 시스템. 현재 지원되는 메서드는 파일 디스크립터, 소켓, 소켓 수락, 소켓 연결,
메모리 버퍼, 버퍼링, SSL 클라이언트/서버, 파일 포인터, 암호화, 다이제스트, 비차단
테스트 및 null입니다.
데이터 구조
동적으로 확장되는 해싱 시스템
간단한 스택.
MS .ini 파일과 유사한 형식을 사용하는 구성 로더.
openssl: 다음 용도로 사용할 수 있는 명령줄 도구: RSA, DH 및 DSA 키 매개변수 생성 X.509 인증서, CSR 및 CRL 생성 메시지 다이제스트 계산 암호를 사용한 암호화 및 복호화 SSL/TLS 클라이언트 및 서버 테스트 S/MIME 서명 또는 암호화된 메일 처리
전 세계 여러 지역에서 다양한 기업들이 다양한 알고리즘에 대한 다양한 특허를 보유하고 있습니다. _여러분_은 자신의 국가에 특허가 있는지 확인하여 사용하는 알고리즘이 합법적인지 확인할 책임이 있습니다. 이 파일에는 당사가 알고 있거나 존재하는 것으로 알려진 일부 특허가 포함되어 있습니다. 이는 확정적인 목록이 아닙니다.
RSA Security는 RC5 알고리즘에 대한 소프트웨어 특허를 보유하고 있습니다. 이 암호를 사용하려면 라이선스 조건을 위해 RSA Security에 문의해야 합니다. 해당 웹 페이지는 http://www.rsasecurity.com/입니다.
RC4는 RSA Security의 상표이므로 이 명칭은 RSA Security의 허가를 받은 경우에만 사용해야 합니다.
IDEA 알고리즘은 오스트리아, 프랑스, 독일, 이탈리아, 일본, 네덜란드, 스페인, 스웨덴, 스위스, 영국 및 미국에서 Ascom이 특허를 보유하고 있습니다. 해당 알고리즘을 사용하려면 Ascom에 문의해야 합니다. 해당 웹 페이지는 http://www.ascom.ch/입니다.
NTT와 Mitsubishi는 Camellia 알고리즘에 대한 특허 및 출원 중인 특허를 보유하고 있지만, 명시적인 라이선스 계약 없이 무료 사용을 허용합니다: http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html
Unix 계열 시스템에 이 패키지를 설치하려면 INSTALL 파일을 읽으십시오. Win32 플랫폼의 경우 INSTALL.W32 파일을 읽으십시오. OpenVMS 시스템의 경우 INSTALL.VMS를 읽으십시오.
doc/ 디렉토리의 문서를 읽으십시오. 문서는 상당히 조잡하지만 함수 목록을 제공합니다. 사용 방법을 파악하려면 코드를 살펴봐야 할 것입니다. 예제 프로그램을 참조하십시오.
일부 플랫폼에는 사용자나 애플리케이션 작성자에게 영향을 줄 수 있는 알려진 문제가 있습니다. 이러한 문제를 doc/PROBLEMS에 정리하고, 향후 OpenSSL에서 해결 방안에 대한 현재의 생각을 정리하고 있습니다.
상용 기술 지원을 받는 방법에 대한 자세한 내용은 OpenSSL 웹사이트 www.openssl.org를 참조하십시오.
OpenSSL에 문제가 있는 경우 먼저 다음 단계를 수행하십시오:
- ftp://ftp.openssl.org/snapshot/에서 현재 스냅샷을 다운로드하여 문제가 이미
해결되었는지 확인하십시오.
- 라이브러리의 ASM 버전을 제거하십시오.
- 컴파일러 최적화 플래그를 제거하십시오.
버그를 신고하려면 버그 보고서에 다음 정보를 포함하십시오:
- Unix 시스템의 경우:
'make report'로 생성된 자체 테스트 보고서
- 기타 시스템의 경우:
OpenSSL 버전: 'openssl version -a'의 출력
OS 이름, 버전, 하드웨어 플랫폼
컴파일러 정보(이름, 버전)
- 애플리케이션 정보(이름, 버전)
- 문제 설명(가능한 경우 문제를 재현하는 단계)
- 스택 역추적(애플리케이션이 코어 덤프를 생성하는 경우)
Request Tracker(http://www.openssl.org/support/rt.html)를 통해 다음 메일 주소로 OpenSSL 프로젝트에 버그를 신고하십시오:
Request Tracker는 일반적인 도움 요청이나 지원 문의에 사용해서는 안 됩니다. 예상한 대로 작동하지 않는다고 해서 반드시 OpenSSL의 버그인 것은 아닙니다.
[email protected]로 보내는 메일은 공개적으로 읽을 수 있는 Request Tracker 데이터베이스에 기록되고 공개 메일링 리스트로 전달됩니다. 기밀 메일은 [email protected]로 보낼 수 있습니다(키 서버에서 PGP 키를 얻을 수 있습니다).
개발은 openssl-dev 메일링 리스트에서 조정됩니다(구독 정보는 http://www.openssl.org 참조). 패치를 제출하려면 제목에 "[PATCH]" 문자열을 포함하여 [email protected]로 보내십시오. 패치가 수행하는 작업에 대한 텍스트 설명을 반드시 포함하십시오.
기능이 일반 OpenSSL 커뮤니티에 유용할지 확실하지 않은 경우 먼저 openssl-dev 메일링 리스트에서 논의하십시오. 이미 누군가 같은 작업을 하고 있거나 해당 기능이 구현되지 않은 데는 그만한 이유가 있을 수 있습니다.
패치는 가능한 한 최신 상태여야 하며, 가급적 현재 Git 또는 마지막 스냅샷 기준이어야 합니다. OpenSSL의 코딩 스타일을 따르고 경고 없이 컴파일되어야 합니다. 핵심 팀 개발자 타겟 중 일부 (debug-steve64, debug-geoff 등)를 테스트 목적으로 사용할 수 있습니다. OpenSSL은 다양한 플랫폼에서 컴파일됩니다. 이식 가능한 기능만 사용하도록 하십시오.
참고: 법적 이유로 미국에서의 기여는 TSU 알림과 패치 사본이 ENC 암호화 요청 코디네이터에게 참조되어 [email protected](이전 BXA)로 전송된 경우에만 수락될 수 있습니다. 자세한 내용은 다음을 확인하십시오: http://www.bis.doc.gov/Encryption/PubAvailEncSourceCodeNofify.html [sic] 및 http://w3.access.gpo.gov/bis/ear/pdf/740.pdf (EAR Section 740.13(e)) "암호화 소스 코드가 이메일 첨부 파일로 보내기에는 너무 큰 경우"에는 팩스로 받아줄 것입니다. 저렴한 장거리 요금제가 있기를 바랍니다.
변경 사항의 선호 형식은 "diff -u" 출력입니다. 다음과 같이 생성할 수 있습니다: