LibreSSL

LibreSSL
LibreSSL
Puffy, the mascot of OpenBSD, made to resemble King Ferdinand[1]
페르디난드 왕을 닮은 OpenBSD의 마스코트 Pumpy[1]
원저작자OpenSSL 프로젝트
개발자OpenBSD 프로젝트
초기 릴리즈2.0.0 / 2014년 7월 11일, 8년 전(2014-07-11)
안정된 릴리스
3.5.3[2] / 2022년 5월 18일; 2개월 전 (2022년 5월 18일)
프리뷰 릴리즈없음 [±]
저장소
기입처C, 어셈블리, Perl
운영 체제OpenBSD, FreeBSD, NetBSD, Linux, HP-UX, Solaris, macOS, Windows[3]
유형암호화 도서관
면허증.Apache License 1.0, 4절 BSD 라이선스, ISC 라이선스, 퍼블릭 도메인
웹 사이트www.libressl.org

LibreSSL은 TLS(Transport Layer Security) 프로토콜오픈 소스 구현입니다.이 실장의 이름은 TLS의 폐지된 이전 버전인 Secure Sockets Layer(SSL; Secure 소켓레이어)의 이름을 따서 붙여졌습니다.이것에 대해서는, 릴리스 2.3.0에서는 서포트가 없어졌습니다.OpenBSD 프로젝트는 Libre를 분기시켰다.2014년 4월 OpenSSL 1.0.1g의 SSL코드베이스의 현대화, 보안의 향상 및 개발의 베스트 [8][9][10]프랙티스의 적용을 목적으로, Heartbled 보안 [4][5][6][7]취약성에 대한 대응책으로 제공되었습니다.

역사

OpenSSL에서 Heartbleed 보안 취약성이 발견된 후 OpenB는SD팀은 코드베이스를 감사하여 위험한 [4]코드를 제거하기 위해 OpenSSL을 포크할 필요가 있다고 판단했습니다.libressl.org 도메인은 2014년 4월 11일에 등록되었으며 프로젝트명은 2014년 4월 22일에 발표되었습니다.개발 첫 주에 9만 줄 이상의 C 코드가 [9][11]제거되었습니다.사용되지 않는 코드가 삭제되어 오래된 운영체제[which?] 대한 지원이 삭제되었습니다.

LibreSSL은 처음에 OpenBSD 5.6에서 OpenSSL을 대체하기 위해 개발되었으며 라이브러리의 제거 버전이 [12]안정되면 다른 플랫폼으로 이식되었습니다.2014년 4월 현재 이 프로젝트는 외부 자금의 "[11]안정적인 약속"을 요구하고 있습니다.2014년 5월 17일, Bob Beck는 "Libre"를 발표하였습니다.2014년 BSDCan 컨퍼런스에서 그는 첫 [13]달 동안의 진척 상황을 설명했다."The First 30 Days, and What The Future Holds 」2014년 6월 5일 몇 가지 OpenSSL 버그가 공개되었습니다.몇 개의 프로젝트가 사전에 [14]통지되어 있는 동안, Libre는Theo de Raadt는 OpenSSL 개발자가 OpenBSD 및 LibreSSL에서 [15]이 정보를 의도적으로 보류하고 있다고 비난했습니다.

2014년 6월 20일 구글BorlingSSL이라는 OpenSSL의 또 다른 포크를 만들었고 LibreSSL과 [16][17]수정 사항을 교환하기로 약속했다.구글은 이미 ISC 라이선스에 따라 기부금 일부를 Libre에 의해 요청받은 바 있다.SSL [16][18]개발자2014년 6월 21일, Theo de Raadt는 BorlingSSL을 환영하며 LibreSSL-portable [19]계획의 개요를 설명했습니다.7월 8일부터 macOS와 Solaris의 코드 포팅이 [20]시작되었으며 Linux로의 초기 포팅은 [21]6월 20일부터 시작되었습니다.

2021년 현재 OpenBSD는 Libre 사용프라이머리 SSL 라이브러리로 SSL을 사용합니다.Alpine Linux 지원 LibreSSL은 2019년 1월 릴리즈 3.9.0까지 3년간 기본 TLS 라이브러리로 사용됩니다.Gentoo가 지원하는 Libre2021년 [22]2월까지 SSL.Python 3.10이 Libre를 드롭Python 3.4.3(2015)[24] 이후 지원된 SSL[23] 지원.

도입

LibreSSL은 다음에 대한 TLS 기본 공급자입니다.

LibreSSL은 현재 중단된 시스템의 TLS 기본 공급자입니다.

LibreSSL은 다음에 대해 선택 가능한 TLS 공급자입니다.

변화들

메모리 관련

변경 사항으로는 커스텀 메모리 호출을 표준 라이브러리의 호출로 교체하는 것이 포함됩니다(예:strlcpy,calloc,asprintf,reallocarray등).[38][self-published source?][39]이 프로세스는 나중에 고급 메모리 분석 도구를 사용하거나 프로그램 크래시를 관찰함으로써(ASLR, NX 비트, 스택 카나리 사용 등을 통해) 버퍼 오버플로 오류를 포착하는 데 도움이 될 수 있습니다.

VCS 커밋 로그(null 포인터 [40]의 명시적 할당 포함)에도 잠재적인 이중 사용 가능 시나리오에 대한 수정 사항이 인용되었습니다.커밋 로그에는 길이 인수, 서명되지 않은 변수 할당, 포인터 값 및 메서드 반환 확인과 관련된 추가 건전성 검사도 포함되어 있습니다.

예방적 조치

양호한 프로그래밍 프랙티스를 유지하기 위해 안전을 위해 설계된 다수의 컴파일러 옵션과 플래그가 디폴트로 활성화되어 있어 잠재적인 문제를 조기에 해결할 수 있습니다(Wall, -Werror, -Wextra, -Uninitialized).프로그램의 정확성을 검증하는 데 도움이 되는 코드 가독성도 업데이트되었습니다(KNF, 공백 공간, 줄 바꿈 등).불필요한 메서드 래퍼 및 매크로의 변경 또는 삭제는 코드 가독성과 감사에도 도움이 됩니다(오류 및 I/O 추상화 라이브러리 참조).

Libre를 확실하게 하기 위해 변경되었다.SSL은 2038년에 호환되며, 다른 유사한 플랫폼에서도 휴대성을 유지할 수 있습니다.게다가.explicit_bzero그리고.bn_clear콜이 추가되어 컴파일러가 콜을 최적화하는 것을 방지하고 공격자가 이전에 할당된 메모리를 읽는 것을 방지합니다.

암호화

안전하지 않은 시드 관행의 대체를 통해 랜덤 번호 생성기 기반 메서드의 적절한 시드를 보장하는 데 도움이 되는 변경 사항이 있었습니다(커널 자체에서 [41][42]기본적으로 제공되는 기능을 활용).주목할 만한 추가 사항으로 볼 때 OpenB는SD는 보다 안전한 타원 곡선 세트(RFC 5639의 브레인풀 곡선, 최대 512비트 강도)와 함께 새롭고 평판이 좋은 알고리즘(ChaCha 스트림 암호 및 Poly1305 메시지 인증 코드)에 대한 지원을 추가했습니다.

기능 추가

Libre의 초기 릴리즈SSL은 ChaChaPoly1305 알고리즘, BrainpoolANSSI 타원곡선, AES-GCMChaCha20-Poly1305 AED 모드 등 다양한 기능을 추가했습니다.

이후 버전에서는 [43]다음이 추가되었습니다.

  • 2.1.0: 자동 사용 후 삭제 EC 키.[44]
  • 2.1.2: macOS 및 FreeB에 내장된 arc4random 구현SD.[45]
  • 2.1.2: GOST 암호 스위트 지원 수정.
  • 2.1.3: ALPN 지원.[46]
  • 2.1.3: SHA-256Camelia 암호 스위트 지원.
  • 2.1.4: TLS_FALLBACK_SCSV 서버측 지원.[47]
  • 2.1.4: c_contrach 스크립트를 대체한 certhash.
  • 2.1.4: 메모리에서 증명서를 로드하기 위한 X509_STORE_load_mem API(확장 chroot 지원).
  • 2.1.4: 실험적인 Windows 바이너리.
  • 2.1.5: 주로 Windows 지원 향상을 위한 마이너 업데이트로, 처음에는 32비트 [48]64비트 바이너리가 동작합니다.
  • 2.1.6: libtls가 안정적이고 [49]디폴트로 유효하다고 선언되었습니다.
  • 2.2.0: AIXCygwin 지원.[50]
  • 2.2.1: OpenSSL에서 EC_curve_nid2nist 및 EC_curve_nist2nid[51] 추가, 초기 Windows XP/2003 지원.
  • 2.2.2: LIBRESSL_VERSION_NUMBER를 [52]정의합니다.SSLv23_* 방식 호출 대신 TLS_* 방식을 추가하고 cmake 빌드 지원을 추가했습니다.

오래된 안전하지 않은 기능

Libre의 초기 릴리즈SSL은 기본적으로 [26]많은 기능을 사용하지 않도록 설정했습니다.Kerberos, US-Export 암호, TLS 압축, DTLS 하트비트, SSL v2, SSL v3 등 이러한 기능의 코드 중 일부는 나중에 삭제되었습니다.

이후 버전에서는 더 많은 기능이 비활성화되었습니다.

  • 2.1.1: 레거시 SSL 3.0 프로토콜에서 POODLE 취약성이 발견된 후 LibreSSL은 [53]디폴트로 SSL 3.0 사용을 디세블로 합니다.
  • 2.1.3: GOST R 34.10-94 시그니처 인증.[43][46]
  • 2.2.1: 다이내믹 엔진 및 MDC-2DES 지원[51] 분리
  • 2.2.2: openssl 바이너리에서 SSL 3.0 삭제, Internet Explorer 6 회피책 삭제, RAX 엔진.[52]
  • 2.3.0:SSL 3.0, SHA-0 및 DTLS1_BAD_VER를 완전히 삭제합니다.

코드 삭제

Libre의 초기 릴리즈SSL은 OpenBSD 5.[26]6의 일부로서 안전하지 않거나 불필요하거나 권장되지 않는 많은 기능을 삭제했습니다.

  • Heartbleed에 대한 응답으로 하트비트[54] 기능은 가장 먼저 제거된 기능 중 하나입니다.
  • 불필요한 플랫폼(Classic Mac OS, NetWare, OS/2, OpenVMS, 16비트 Windows 등)이 제거되었습니다.
  • 엔디안 i386amd64 [55]등 존재하지 않는 플랫폼 지원
  • 오래된 컴파일러 지원.
  • IBM 4758, Broadcom ubsec, Sureware, Nuron, GOST, GMP, CSwift, CHIL, CAPI, Atalla 및 AEP 엔진은 하드웨어가 부적절하거나 무료 라이브러리가 아닌 으로 인해 제거되었습니다.
  • OpenSSL PRNG가 삭제되어 ChaCha20 기반의 arc4random 구현으로 대체되었습니다.
  • 불필요하거나 안전하지 않다고 간주되거나 OpenSSL에서 이미 오랫동안 사용되지 않았던 프리프로세서 매크로(예: des_old.h).
  • 어셈블리 언어, CPerl(: EGD)에 대한 오래된 불필요한 파일입니다.
  • MD2, SEED 기능
  • SSL 3.0, SHA-0, DTLS1_BAD_확인

백도어있는 것으로 의심되는 듀얼 EC [56]DRBG 알고리즘은 필요[citation needed] FIPS 140-2 규격의 지원과 함께 절단되었습니다.FIPS 140-2,[57] MD4/MD5[43] J-PAKE [26]SRP [58]지원을 포함하여 사용되지 않는 프로토콜 및 안전하지 않은 알고리즘도 제거되었습니다.

버그백로그

OpenSSL의 불만 중 하나는 수년 동안 수정되지 않은 버그 트래커에 보고된 미해결 버그의 수였습니다.LibreSSL에서는 [59]오래된 버그가 수정되고 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Cook, Brent (2 May 2017). "LibreSSL, almost Two Years Later". InfoSec Southwest. YouTube. Retrieved 15 September 2018.
  2. ^ "LibreSSL 3.5.3 출시", 저자명 문자열: Brent Cook, 발행일: 2022년 5월 19일, 취득일: 2022년 5월 20일.
  3. ^ "LibreSSL Releases".
  4. ^ a b Unangst, Ted (22 April 2014). "Origins of libressl". flak. Retrieved 24 April 2014.
  5. ^ Kemer, Sean Michael (22 April 2014). "After Heartbleed, OpenSSL Is Forked Into LibreSSL". eWeek. Retrieved 24 April 2014.
  6. ^ "Not Just a Cleanup Any More: LibreSSL Project Announced". Slashdot. 22 April 2014. Retrieved 24 April 2014.
  7. ^ M, Constantine (17 May 2014). Soulskill (ed.). "30-Day Status Update On LibreSSL". Slashdot.
  8. ^ "LibreSSL".
  9. ^ a b Seltzer, Larry (21 April 2014). "OpenBSD forks, prunes, fixes OpenSSL". Zero Day. ZDNet. Retrieved 21 April 2014.
  10. ^ Hessler, Peter (15 April 2014). "OpenBSD has started a massive strip-down and cleanup of OpenSSL". OpenBSD Journal. Retrieved 24 April 2014.
  11. ^ a b Brodkin, Jon (22 April 2014). "OpenSSL code beyond repair, claims creator of "LibreSSL" fork". Ars Technica. Retrieved 24 April 2014.
  12. ^ McCallion, Jane (22 April 2014). "Heartbleed: LibreSSL scrubs "irresponsible" OpenSSL code". PC Pro. Archived from the original on 26 June 2014. Retrieved 23 April 2014.
  13. ^ Beck, Bob (17 May 2014). "LibreSSL: The first 30 days, and what the Future Holds Slides". Retrieved 17 May 2014.
  14. ^ "Re: OpenSSL seven security fixes". oss-sec (Mailing list). 5 June 2014. Retrieved 9 June 2014.
  15. ^ de Raadt, Theo (5 June 2014). "Re: new OpenSSL flaws". openbsd-misc (Mailing list). Retrieved 9 June 2014.
  16. ^ a b Langley, Adam (20 June 2014). "BoringSSL (20 Jun 2014)". Imperialviolet.org. Retrieved 21 June 2014.
  17. ^ Goodin, Dan (20 June 2014). "Google unveils independent "fork" of OpenSSL called "BoringSSL"". Ars Technica. Retrieved 21 June 2014.
  18. ^ Sing, Joel (21 June 2014). "OpenBSD — lib/libssl/src/crypto/evp evp_aead.c e_chacha20poly1305.c". Archived from the original on 22 June 2014. Retrieved 21 June 2014.
  19. ^ de Raadt, Theo (21 June 2014). "Boringssl and such". openbsd-tech (Mailing list). Retrieved 28 October 2015.
  20. ^ Beck, Bob (8 July 2014). "OpenBSD - lib/libcrypto/crypto getentropy_osx.c getentropy_solaris.c". Archived from the original on 22 July 2014. Retrieved 8 July 2014.
  21. ^ Beck, Bob (20 June 2014). "OpenBSD — lib/libcrypto/crypto getentropy_linux.c". Archived from the original on 9 July 2014.
  22. ^ "LibreSSL languishes on Linux [LWN.net]". lwn.net. Retrieved 6 January 2021.
  23. ^ "PEP 644 -- Require OpenSSL 1.1.1 or newer".
  24. ^ "Changelog — Python 3.4.10 documentation".
  25. ^ Marino, John. "[Beta] Switch base to use private LibreSSL libraries". Retrieved 9 November 2018.
  26. ^ a b c d Jacoutot, Antoine (1 November 2014). "OpenBSD 5.6 Released". openbsd-announce (Mailing list). Retrieved 28 October 2015.
  27. ^ "Milky Way v0.3 release". Hyperbola Project. 23 September 2019. Retrieved 23 September 2019.
  28. ^ Raue, Stephan. "OpenELEC Mediacenter - [Beta] OpenELEC 6.0 Beta 2 released". Openelec.tv. Archived from the original on 26 November 2015. Retrieved 20 August 2015.
  29. ^ "PC-BSD Evolves into TrueOS". Archived from the original on 16 September 2016. Retrieved 16 September 2016.
  30. ^ VonFange, Mark. "PC-BSD 10.1.2: an Interview with Kris Moore". Official PC-BSD Blog. Retrieved 15 October 2015.
  31. ^ "Add DEFAULT_VERSIONS=ssl=XXX". Svnweb.freebsd.org.
  32. ^ "Project:LibreSSL - Gentoo". Wiki.gentoo.org.
  33. ^ Górny, Michał (5 January 2021). "LibreSSL support discontinued". www.gentoo.org. Retrieved 30 March 2021.
  34. ^ Górny, Michał (31 December 2020). "Bug 762847 - dev-libs/libressl: Removal". bugs.gentoo.org. Retrieved 30 March 2021.
  35. ^ Górny, Michał (28 December 2020). "[gentoo-dev] [RFC] Discontinuing LibreSSL support?". archives.gentoo.org. Retrieved 30 March 2021.
  36. ^ "OPNsense version 15.7 Released". OPNsense. Retrieved 15 October 2015.
  37. ^ "OPNsense version 22.7 Released". OPNsense. Retrieved 5 August 2022.
  38. ^ Orr, William (23 April 2014). "A quick recap over the last week". OpenSSL Valhalla Rampage. Retrieved 30 April 2014.
  39. ^ "OpenBSD LibreSSL CVS Calloc Commits". Secure.freshbsd.org.
  40. ^ "OpenBSD LibreSSL CVS Double Free Commits". Secure.freshbsd.org.
  41. ^ "OpenBSD LibreSSL CVS insecure seeding". Secure.freshbsd.org.
  42. ^ "OpenBSD LibreSSL CVS Kernel Seeding". Secure.freshbsd.org. Archived from the original on 16 September 2014.
  43. ^ a b c "LibreSSL-portable ChangeLog". LibreSSL. 15 October 2021.
  44. ^ Beck, Bob (12 October 2014). "LibreSSL 2.1.0 released". openbsd-announce (Mailing list). Retrieved 28 October 2015.
  45. ^ Beck, Bob (9 December 2014). "LibreSSL 2.1.2 released". openbsd-announce (Mailing list). Retrieved 28 October 2015.
  46. ^ a b Cook, Brent (22 January 2015). "LibreSSL 2.1.3 released". openbsd-announce (Mailing list). Retrieved 28 October 2015.
  47. ^ Cook, Brent (4 March 2015). "LibreSSL 2.1.4 released". openbsd-announce (Mailing list). Retrieved 28 October 2015.
  48. ^ Cook, Brent (17 March 2015). "LibreSSL 2.1.5 released". openbsd-announce (Mailing list). Retrieved 28 October 2015.
  49. ^ Cook, Brent (19 March 2015). "LibreSSL 2.1.6 released". openbsd-announce (Mailing list). Retrieved 28 October 2015.
  50. ^ Cook, Brent (11 June 2015). "LibreSSL 2.1.7 and 2.2.0 released". openbsd-announce (Mailing list). Retrieved 28 October 2015.
  51. ^ a b Cook, Brent (9 July 2015). "LibreSSL 2.2.1 released". openbsd-announce (Mailing list). Retrieved 28 October 2015.
  52. ^ a b Cook, Brent (6 August 2015). "LibreSSL 2.2.2 released". openbsd-announce (Mailing list). Retrieved 28 October 2015.
  53. ^ Beck, Bob (16 October 2014). "LibreSSL 2.1.1 released". openbsd-tech (Mailing list).
  54. ^ "OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEATS".
  55. ^ Miod Vallat. "Remove support for big-endian i386 and amd64". openbsd-cvs (Mailing list).
  56. ^ Perlroth, Nicole (10 September 2013). "Government Announces Steps to Restore Confidence on Encryption Standards". The New York Times. Retrieved 9 May 2014.
  57. ^ "The future (or lack thereof) of LibreSSL's FIPS Object Module".
  58. ^ Beck, Bob (3 August 2014). "LibreSSL 2.0.4 released". openbsd-announce (Mailing list). Retrieved 28 October 2015.
  59. ^ Vallat, Miod (10 November 2014). "Re: CVS: cvs.openbsd.org: src". openbsd-cvs (Mailing list). Retrieved 28 October 2015.

외부 링크