LibreSSL
![]() | |
개발자 | OpenBSD 프로젝트 |
---|---|
발표일 | 2.0.0 / 2014년 7월 11일 |
저장소 | |
프로그래밍 언어 | C, 어셈블리어 |
운영 체제 | OpenBSD |
종류 | 보안 라이브러리 |
라이선스 | 아파치 라이선스 1.0 및 4-clause BSD 라이선스 |
웹사이트 | www |
LibreSSL은 SSL과 TLS 프로토콜의 오픈소스 구현판이다. 2014년 4월에 OpenBSD개발자들이 하트블리드 보안취약점에 대응하기 위해, OpenSSL 암호학 소프트웨어 라이브러리의 코드를 리팩토링해 더 안전한 구현을 만들기 위해 OpenSSL로부터 포크했다.[2][3][4]
LibreSSL OpenSSL의 1.0.1g 브랜치로부터 포크되었으며 OpenBSD 프로젝트의 보안 가이드라인을 따른다.[5]
역사
[편집]OpenSSL에서 하트블리드 버그가 발견된 다음, OpenBSD팀은 코드를 새로이 검토하였으며, 포크한 코드를 스스로 유지 보수 해야함을 알게되었다.[2] libressl.org 도메인은 4월 11일에 등록됐으며 프로젝트는 4월 22일에 발표됐다.
코드 가지치기의 첫 번째 주에서, 90,000줄 이상의 C코드들이 제거되었다.[6][7] 오래되거나 쓰이지 않는 코드들과 몇몇 오래되고 지금은 잘 쓰이지 않는 운영체제 지원 코드들은 제거되었다. LibreSSL은 초기 OpenSSL을 OpenBSD 5.6버전에서 제거하기 위해 개발되었으나, 코드 제거작업된 라이브러리가 안정이 되면 다른 플랫폼으로 다시 포팅될 것으로 기대되고 있다.[8] 2014년 04월 기준[update], 프로젝트는 현재 안정적인 외부 자금 기부자를 찾고 있다.[7]
변화
[편집]메모리 관련
[편집]더 자세히 들어가면, 지금까지의 일부 눈에띄고 중요한 변화 중에는 커스텀 메모리 호출을 표준 라이브러리로 바꾼것이다(예를 들어 en:strlcpy, en:calloc, en:asprintf, en:reallocarry, 등).[9][10] 이 절차는 나중에 더 나은 메모리 디버거를 사용하거나 프로그램 오류 발생을 관찰(주소 공간 배치 난수화(ASLR), NX 비트, Stack Canary 등을 통해) 버퍼 오버플로에러를 수정하는데 도움을 줄 수도 있다.
잠재적인 Double Free(C 동적 메모리 할당에러) 해결은 CVS 커밋 로그(명시적 널 포인터 변수 할당 포함)[11]에 언급되어 있다. 또한 인자 길이, 부호없는 변수를 부호화된 변수에 할당, 포인터 변수, 함수의 반환 값의 보장과 관련된 Sanity 검사또한 커밋 로그에 언급되어 있다.
사전 방지책
[편집]좋은 프로그래밍 결과를 유지하기 위해 안전을 위해 디자인된 많은 컴파일러 옵션과 플래그들이 잠재적인 문제를 감지해 더 빨리 오류를 고치기 위해 기본적으로 활성화되어 있다(-Wall, -Werror, -Wextra, -Wuninitialized). 차후 공헌자들의 프로그램 검수를 돕기 위해 코드의 가독성 업데이트 또한 포함되어 있다(Kernel Normal Form, 공백, 라인 감싸기 등). 불필요한 메소드 감싸개와 매크로의 수정 또한 코드 가독성과 검사에 도움을 주고 있다(에러와 I/O추상화 라이브러리 레퍼런스).
LibreSSL은 2038년에 호환성을 갖추고 코드가 비슷한 플랫폼에 이식성을 갖도록 변화하였다.
암호학
[편집]불안정한 시드입력 절차를 바꿈으로써 난수생성기기반의 메소드의 난수조건을 적절하게 만드는 변화가 있었다(커널이 자체 제공하는 기능을 사용하였다).[12][13] 주목할만한 추가라는 측면에서, OpenBSD는 새로운 그리고 더 훌륭한 알고리즘(ChaCha 스트림 암호화와 Poly1305-AES 메시지 인증코드)과 함께 더 안전한 타원곡선셋(Brainpool 곡선 RFC5639, 최고 512bit 강도) 지원을 추가했다.
코드제거
[편집]하트블리드에 대응하기 위해 초기에 LibreSSL에서 제거된 특징중 하나는 heartbeat 기능이었다.[14] 게다가 필요하지 않은 운영체제와 하드웨어 아키텍처 지원(맥 OS, 넷웨어, OS/2, VMS, 윈도우 등), 불필요하거나 안전하지 못하다고 여겨진 전처리기 매크로, 어셈블리어, C 언어, Perl과 같이 오래된 데모와 문서파일들 또한 제거되었다.
백도어를 가졌다고 의심되어온 Dual_EC_DRBG알고리즘[15]또한 FIPS표준안이 요구함에 따라 제거되었다. 쓰이지 않는 통신규약 및 불안전한 알고리즘(MD2, en:SSL v2, 커베로스, J-PAKE, SRP) 또한 제거되었다.
남아있는 버그
[편집]OpenSSL의 해결되지 못한 불만 중 하나는 버그 트래커에 있는 알려진 버그들이 갑자기 주목되지 않는 곳으로 사라지거나 몇년동안 무시되는 것이었다. 오래된 버그들은 현재 LibreSSL에서 해결되는 중이다.[16]
같이 보기
[편집]- TLS 구현의 비교
- POSSE 프로젝트
- 오픈SSH: OpenBSD 커뮤니티에 의해 포크된 또 다른 보안 소프트웨어
각주
[편집]- ↑ “LibreSSL 3.9.2 Released” (영어). 2024년 5월 12일. 2024년 5월 12일에 확인함.
- ↑ 가 나 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)