
SSL/TLS 프로토콜, 대칭/비대칭 암호화, 메시지 다이제스트, 디지털 인증서 및 X.509 PKI 인프라를 구현하는 포괄적인 오픈소스 암호화 라이브러리
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 프로젝트는 SSL(Secure Sockets Layer, SSL v2/v3) 및 TLS(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), 키보드에서 암호를 읽는 루틴을 포함하여 15가지 DES '모드/변형'(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/ 디렉터리의 문서를 읽으십시오. 문서가 다소 조악하지만 함수 목록을 제공합니다. 사용 방법을 파악하려면 코드를 살펴봐야 할 것입니다. 예제 프로그램을 참조하십시오.
일부 플랫폼에는 사용자나 애플리케이션 작성자에게 영향을 미칠 수 있는 몇 가지 알려진 문제가 있습니다. 당사는 이러한 문제를 OpenSSL의 향후 해결 방안에 대한 현재 생각과 함께 doc/PROBLEMS에 수집하려고 노력하고 있습니다.
상용 기술 지원을 받는 방법에 대한 자세한 내용은 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 프로젝트에 버그를 신고하십시오:
요청 추적기는 일반적인 도움말이나 지원 문의에 사용해서는 안 됩니다. 예상한 대로 작동하지 않는다고 해서 반드시 OpenSSL의 버그인 것은 아닙니다.
[email protected]로 보낸 메일은 공개적으로 읽을 수 있는 요청 추적기 데이터베이스에 기록되며 공개 메일링 리스트로 전달됩니다. 기밀 메일은 [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" 출력입니다. 다음과 같이 생성할 수 있습니다: