LibreSSL

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기
LibreSSL
LibreSSL logo as of 2014-04-22.png
개발자 OpenBSD 프로젝트
프로그래밍 언어 C, 어셈블리어
운영 체제 OpenBSD
종류 보안 라이브러리
라이선스 아파치 라이선스 1.0 and 4-clause BSD 라이선스
웹사이트 http://www.libressl.org

LibreSSLSSLTLS 프로토콜의 오픈소스 구현판이다. 2014년 4월에 OpenBSD개발자들이 하트블리드 보안취약점에 대응하기 위해, OpenSSL 암호학 소프트웨어 라이브러리의 코드를 리팩토링해 더 안전한 구현을 만들기 위해 OpenSSL로 부터 포크 (소프트웨어 개발)했다.[1][2][3]

LibreSSL OpenSSL의 1.0.1g 브랜치로부터 포크되었으며 OpenBSD 프로젝트의 보안 가이드라인을 따른다.[4]

역사[편집]

OpenSSL에서 하트블리드 버그가 발견된 다음, OpenBSD팀은 코드를 새로이 검토하였으며, 포크한 코드를 스스로 유지보수해야함을 알게되었다[1] . libressl.org 도메인은 4월 11일에 등록되으며; 프로젝트는 4월 22일에 발표됐다.

코드 가지치기의 첫번째 주에서, 90,000줄 이상의 C코드들이 제거되었다.[5][6] 오래되거나 쓰이지 않는 코드들과 몇몇 오래되고 지금은 잘 쓰이지 않는 운영체제 지원 코드들은 제거되었다. LibreSSL은 초기 OpenSSL을 OpenBSD 5.6버전에서 제거하기위해 개발되었으나, 코드 제거작업된 라이브러리가 안정이 되면 다른 플랫폼으로 다시 포팅될 것 기대되고 있다.[7] 2014년 04월 기준, 프로젝트는 현재 안정적인 외부 자금 기부자를 찾고있다.[6]

변화[편집]

메모리 관련[편집]

더 자세히 들어가면, 지금까지의 일부 눈에띄고 중요한 변화 중에는 커스텀 메모리 호출을 표준 라이브러리로 바꾼것이다(예를 들어 en:strlcpy, en:calloc, en:asprintf, en:reallocarry, 등).[8][9] 이 절차는 나중에 더 나은 메모리 디버거를 사용하거나 프로그램 오류 발생을 관찰(주소 공간 배치 난수화(ASLR), NX 비트, Stack Canary 등을 통해) 버퍼 오버플로에러를 수정하는데 도움을 줄 수도 있다.

잠재적인 Double Free(C 동적 메모리 할당에러) 해결은 CVS 커밋 로그(명시적 널 포인터 변수 할당 포함)[10]에 언급되어있다.또한 인자 길이, 부호없는 변수를 부호화된 변수에 할당, 포인터 변수, 함수의 반환 값의 보장과 관련된 Sanity 검사또한 커밋 로그에 언급되어있다.

사전 방지책[편집]

좋은 프로그래밍 결과를 유지하기 위해 안전을 위해 디자인된 많은 컴파일러 옵션과 플래그들이 잠재적인 문제를 감지해 더 빨리 오류를 고치기 위해 기본적으로 활성화 되어있다(-Wall, -Werror, -Wextra, -Wuninitialized). 차후 공헌자들의 프로그램 검수를 돕기 위해 코드의 가독성 업데이트 또한 포함되어있다(Kernel Normal Form, 공백, 라인 감싸기 등). 불필요한 메소드 감싸개와 매크로의 수정 또한 코드 가독성과 검사에 도움을 주고 있다(에러와 I/O추상화 라이브러리 레퍼런스).

LibreSSL은 2038년에 호환성을 갖추고 코드가 비슷한 플랫폼에 이식성을 갖도록 변화하였다.

암호학[편집]

불안정한 시드입력 절차를 바꿈으로써 난수생성기기반의 메소드의 난수조건을 적절하게 만드는 변화가 있었다(커널이 자체 제공하는 기능을 사용하였다).[11][12] 주목할만한 추가라는 측면에서, OpenBSD는 새로운 그리고 더 훌륭한 알고리즘(ChaCha 스트림 암호화와 Poly1305-AES 메시지 인증코드)과 함께 더 안전한 타원곡선셋(Brainpool 곡선 RFC5639, 최고 512bit 강도) 지원을 추가했다.

코드제거[편집]

하트블리드에 대응하기 위해 초기에 LibreSSL에서 제거된 특징중 하나는 heartbeat 기능이었다.[13] 게다가 필요하지 않은 운영체제와 하드웨어 아키텍처 지원(맥 OS, 넷웨어, OS/2, VMS, 윈도 등), 불필요하거나 안전하지 못하다고 여겨진 전처리기 매크로, 어셈블리어, C 언어, Perl과 같이 오래된 데모와 문서파일들 또한 제거되었다.

백도어를 가졌다고 의심되어온 Dual_EC_DRBG알고리즘[14]또한 FIPS표준안이 요구함에 따라 제거되었다. 쓰이지 않는 통신규약 및 불안전한 알고리즘(MD2, en:SSL v2, 커베로스, J-PAKE, SRP) 또한 제거되었다.

남아있는 버그[편집]

OpenSSL의 해결되지 못한 불만 중 하나는 버그 트래커에 있는 알려진 버그들이 갑자기 주목되지 않는곳으로 사라지거나 몇년동안 무시되는 것이었다. 오래된 버그들은 현재 LibreSSL에서 해결되는 중이다.[15]

같이 보기[편집]

참고문헌[편집]

  1. Unangst, Ted (2014년 4월 22일). “Origins of libressl”. 《flak》. 2014년 4월 24일에 확인함. 
  2. Kemer, Sean Michael (2014년 4월 22일). “After Heartbleed, OpenSSL Is Forked Into LibreSSL”. 《en:eWeek. 2014년 4월 24일에 확인함. 
  3. “Not Just a Cleanup Any More: LibreSSL Project Announced”. en:Slashdot. 2014년 4월 22일. 2014년 4월 24일에 확인함. 
  4. Hessler, Peter (2014년 4월 15일). “OpenBSD has started a massive strip-down and cleanup of OpenSSL”. 《en:OpenBSD Journal. 2014년 4월 24일에 확인함. 
  5. Seltzer, Larry (2014년 4월 21일). “OpenBSD forks, prunes, fixes OpenSSL”. 《Zero Day》. en:ZDNet. 2014년 4월 21일에 확인함. 
  6. Brodkin, Jon (2014년 4월 22일). “OpenSSL code beyond repair, claims creator of "LibreSSL" fork”. 《en:Ars Technica. 2014년 4월 24일에 확인함. 
  7. McCallion, Jane (2014년 4월 22일). “Heartbleed: LibreSSL scrubs "irresponsible" OpenSSL code”. 《en:PC Pro. 2014년 4월 23일에 확인함. 
  8. Orr, William (2014년 4월 23일). “A quick recap over the last week”. 《OpenSSL Valhalla Rampage》. 2014년 4월 30일에 확인함. 
  9. “OpenBSD LibreSSL CVS Calloc Commits”. 
  10. “OpenBSD LibreSSL CVS Double Free Commits”. 
  11. “OpenBSD LibreSSL CVS Insecure Seeding”. [깨진 링크(과거 내용 찾기)]
  12. “OpenBSD LibreSSL CVS Kernel Seeding”. 
  13. “OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEAT”. [깨진 링크(과거 내용 찾기)]
  14. Perlroth, Nicole (2013년 9월 10일). “Government Announces Steps to Restore Confidence on Encryption Standards”. 《The New York Times》. 2014년 5월 9일에 확인함. 
  15. “OpenBSD LibreSSL CVS Buffer Release (#2167 bugfix) Commit”. 2014년 4월 10일. 2014년 5월 1일에 확인함. 

외부 링크[편집]