LibreSSL
개발자 | OpenBSD 프로젝트 |
---|---|
발표일 | 2.0.0 / 2014년 7월 11일 |
안정화 버전 | 3.9.1[1]
/ 2024년 3월 27일 |
미리보기 버전 | 3.9.0[2]
|
저장소 | |
프로그래밍 언어 | C, 어셈블리어 |
운영 체제 | OpenBSD |
종류 | 보안 라이브러리 |
라이선스 | 아파치 라이선스 1.0 및 4-clause BSD 라이선스 |
웹사이트 | www |
LibreSSL은 SSL과 TLS 프로토콜의 오픈소스 구현판이다. 2014년 4월에 OpenBSD개발자들이 하트블리드 보안취약점에 대응하기 위해, OpenSSL 암호학 소프트웨어 라이브러리의 코드를 리팩토링해 더 안전한 구현을 만들기 위해 OpenSSL로부터 포크 (소프트웨어 개발)했다.[3][4][5]
LibreSSL OpenSSL의 1.0.1g 브랜치로부터 포크되었으며 OpenBSD 프로젝트의 보안 가이드라인을 따른다.[6]
역사[편집]
OpenSSL에서 하트블리드 버그가 발견된 다음, OpenBSD팀은 코드를 새로이 검토하였으며, 포크한 코드를 스스로 유지보수해야함을 알게되었다[3] . libressl.org 도메인은 4월 11일에 등록되으며 프로젝트는 4월 22일에 발표됐다.
코드 가지치기의 첫번째 주에서, 90,000줄 이상의 C코드들이 제거되었다.[7][8] 오래되거나 쓰이지 않는 코드들과 몇몇 오래되고 지금은 잘 쓰이지 않는 운영체제 지원 코드들은 제거되었다. LibreSSL은 초기 OpenSSL을 OpenBSD 5.6버전에서 제거하기 위해 개발되었으나, 코드 제거작업된 라이브러리가 안정이 되면 다른 플랫폼으로 다시 포팅될 것으로 기대되고 있다.[9] 2014년 04월 기준[update], 프로젝트는 현재 안정적인 외부 자금 기부자를 찾고있다.[8]
변화[편집]
메모리 관련[편집]
더 자세히 들어가면, 지금까지의 일부 눈에띄고 중요한 변화 중에는 커스텀 메모리 호출을 표준 라이브러리로 바꾼것이다(예를 들어 en:strlcpy, en:calloc, en:asprintf, en:reallocarry, 등).[10][11] 이 절차는 나중에 더 나은 메모리 디버거를 사용하거나 프로그램 오류 발생을 관찰(주소 공간 배치 난수화(ASLR), NX 비트, Stack Canary 등을 통해) 버퍼 오버플로에러를 수정하는데 도움을 줄 수도 있다.
잠재적인 Double Free(C 동적 메모리 할당에러) 해결은 CVS 커밋 로그(명시적 널 포인터 변수 할당 포함)[12]에 언급되어 있다. 또한 인자 길이, 부호없는 변수를 부호화된 변수에 할당, 포인터 변수, 함수의 반환 값의 보장과 관련된 Sanity 검사또한 커밋 로그에 언급되어 있다.
사전 방지책[편집]
좋은 프로그래밍 결과를 유지하기 위해 안전을 위해 디자인된 많은 컴파일러 옵션과 플래그들이 잠재적인 문제를 감지해 더 빨리 오류를 고치기 위해 기본적으로 활성화되어 있다(-Wall, -Werror, -Wextra, -Wuninitialized). 차후 공헌자들의 프로그램 검수를 돕기 위해 코드의 가독성 업데이트 또한 포함되어 있다(Kernel Normal Form, 공백, 라인 감싸기 등). 불필요한 메소드 감싸개와 매크로의 수정 또한 코드 가독성과 검사에 도움을 주고 있다(에러와 I/O추상화 라이브러리 레퍼런스).
LibreSSL은 2038년에 호환성을 갖추고 코드가 비슷한 플랫폼에 이식성을 갖도록 변화하였다.
암호학[편집]
불안정한 시드입력 절차를 바꿈으로써 난수생성기기반의 메소드의 난수조건을 적절하게 만드는 변화가 있었다(커널이 자체 제공하는 기능을 사용하였다).[13][14] 주목할만한 추가라는 측면에서, OpenBSD는 새로운 그리고 더 훌륭한 알고리즘(ChaCha 스트림 암호화와 Poly1305-AES 메시지 인증코드)과 함께 더 안전한 타원곡선셋(Brainpool 곡선 RFC5639, 최고 512bit 강도) 지원을 추가했다.
코드제거[편집]
하트블리드에 대응하기 위해 초기에 LibreSSL에서 제거된 특징중 하나는 heartbeat 기능이었다.[15] 게다가 필요하지 않은 운영체제와 하드웨어 아키텍처 지원(맥 OS, 넷웨어, OS/2, VMS, 윈도우 등), 불필요하거나 안전하지 못하다고 여겨진 전처리기 매크로, 어셈블리어, C 언어, Perl과 같이 오래된 데모와 문서파일들 또한 제거되었다.
백도어를 가졌다고 의심되어온 Dual_EC_DRBG알고리즘[16]또한 FIPS표준안이 요구함에 따라 제거되었다. 쓰이지 않는 통신규약 및 불안전한 알고리즘(MD2, en:SSL v2, 커베로스, J-PAKE, SRP) 또한 제거되었다.
남아있는 버그[편집]
OpenSSL의 해결되지 못한 불만 중 하나는 버그 트래커에 있는 알려진 버그들이 갑자기 주목되지 않는 곳으로 사라지거나 몇년동안 무시되는 것이었다. 오래된 버그들은 현재 LibreSSL에서 해결되는 중이다.[17]
같이 보기[편집]
- en:Comparison of TLS implementations
- en:POSSE project
- 오픈SSH, OpenBSD 커뮤니티에 의해 포크된 또 다른 보안 소프트웨어
참고 문헌[편집]
- ↑ “LibreSSL 3.8.4 and 3.9.1 released” (영어). 2024년 3월 28일. 2024년 3월 28일에 확인함.
- ↑ "LibreSSL 3.9.0 released"; 저자 이름: Brent Cook; 출판 날짜: 2024년 3월 9일; 확인한 날짜: 2024년 3월 10일.
- ↑ 가 나 Unangst, Ted (2014년 4월 22일). “Origins of libressl”. 《flak》. 2014년 4월 24일에 원본 문서에서 보존된 문서. 2014년 4월 24일에 확인함.
- ↑ Kemer, Sean Michael (2014년 4월 22일). “After Heartbleed, OpenSSL Is Forked Into LibreSSL”. 《en:eWeek》. 2014년 4월 24일에 확인함.[깨진 링크(과거 내용 찾기)]
- ↑ “Not Just a Cleanup Any More: LibreSSL Project Announced”. en:Slashdot. 2014년 4월 22일. 2014년 4월 24일에 원본 문서에서 보존된 문서. 2014년 4월 24일에 확인함.
- ↑ Hessler, Peter (2014년 4월 15일). “OpenBSD has started a massive strip-down and cleanup of OpenSSL”. 《en:OpenBSD Journal》. 2014년 4월 24일에 확인함.
- ↑ Seltzer, Larry (2014년 4월 21일). “OpenBSD forks, prunes, fixes OpenSSL”. 《Zero Day》. en:ZDNet. 2014년 4월 21일에 확인함.
- ↑ 가 나 Brodkin, Jon (2014년 4월 22일). “OpenSSL code beyond repair, claims creator of "LibreSSL" fork”. 《en:Ars Technica》. 2014년 4월 24일에 확인함.
- ↑ McCallion, Jane (2014년 4월 22일). “Heartbleed: LibreSSL scrubs "irresponsible" OpenSSL code”. 《en:PC Pro》. 2014년 6월 26일에 원본 문서에서 보존된 문서. 2014년 4월 23일에 확인함.
- ↑ Orr, William (2014년 4월 23일). “A quick recap over the last week”. 《OpenSSL Valhalla Rampage》. 2014년 4월 29일에 원본 문서에서 보존된 문서. 2014년 4월 30일에 확인함.
- ↑ “OpenBSD LibreSSL CVS Calloc Commits”. 2019년 2월 17일에 원본 문서에서 보존된 문서. 2014년 5월 15일에 확인함.
- ↑ “OpenBSD LibreSSL CVS Double Free Commits”. 2019년 2월 17일에 원본 문서에서 보존된 문서. 2014년 5월 15일에 확인함.
- ↑ “OpenBSD LibreSSL CVS Insecure Seeding”.[깨진 링크(과거 내용 찾기)]
- ↑ “OpenBSD LibreSSL CVS Kernel Seeding”. 2014년 8월 16일에 원본 문서에서 보존된 문서. 2014년 5월 15일에 확인함.
- ↑ “OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEAT”.[깨진 링크(과거 내용 찾기)]
- ↑ Perlroth, Nicole (2013년 9월 10일). “Government Announces Steps to Restore Confidence on Encryption Standards”. 《The New York Times》. 2014년 5월 9일에 확인함.
- ↑ “OpenBSD LibreSSL CVS Buffer Release (#2167 bugfix) Commit”. 2014년 4월 10일. 2015년 4월 17일에 원본 문서에서 보존된 문서. 2014년 5월 1일에 확인함.
외부 링크[편집]
- LibreSSL - 공식 웹사이트
- LibreSSL source code (OpenGrok)
- OpenSSL Valhalla Rampage (blog of highlights of the code cleanup)