- Python은 이제 모든 해시 및 HMAC 알고리듬을 HACL*이라는 검증된 암호화 라이브러리를 통해 제공함
- HACL*는 Python의 요구 사항을 충족하기 위해 새로운 기능을 성공적으로 구현했으며, Python 사용자에게 투명하게 전환됨
-
스트리밍 API는 복잡한 상태를 다루기 때문에 검증이 필요하며, HACL*는 이를 해결하기 위한 일반적인 스트리밍 구조를 제공함
- Python의 빌드 시스템은 다양한 도구 체인과 아키텍처를 지원하며, HACL*의 통합 과정에서 여러 문제를 해결함
- HACL*의 최신 버전을 Python에 통합하는 과정은 자동화되어 있으며, Python의 SBOM을 업데이트하여 최신 개선 사항을 통합할 수 있음
15,000줄의 검증된 암호화 코드가 이제 Python에 포함됨
- 2022년 11월, SHA3 구현의 최근 CVE 이후, Python의 해시 관련 인프라에 검증된 코드를 도입해야 한다는 이슈가 제기됨
- 이제 모든 해시 및 HMAC 알고리듬이 HACL* 라이브러리를 통해 제공되며, Python 사용자에게는 기능 손실 없이 투명하게 전환됨
- HACL*는 Python의 요구 사항을 충족하기 위해 새로운 기능을 성공적으로 구현함
스트리밍 API에 대한 기본 이해
- 많은 암호화 알고리듬은 블록 알고리듬으로, 입력이 블록 단위로 제공됨
- 스트리밍 API는 사용자가 임의의 길이의 입력을 제공할 수 있도록 하며, 중간 해시를 추출할 수 있음
- 스트리밍 API는 복잡한 상태를 다루기 때문에 검증이 필요함
완전히 일반적인 검증
- 블록 알고리듬을 정의하고, 이를 기반으로 일반적인 스트리밍 구조를 검증함
- 다양한 요구 사항을 충족하기 위해 여러 번의 수정이 필요했으며, 최종적으로 HMAC에 대한 검증이 완료됨
견고한 빌드 시스템
- Python의 빌드 시스템은 다양한 도구 체인과 아키텍처를 지원하며, HACL*의 통합 과정에서 여러 문제를 해결함
- HMAC 구현에서 발생한 빌드 문제를 해결하기 위해 상당한 리팩토링이 필요했음
메모리 할당 실패 처리
- Python에서는 메모리 할당 실패를 전파할 수 있도록 정의를 수정함
-
option 타입을 사용하여 메모리 할당 실패를 처리하며, 이는 C 코드에서 태그된 유니온으로 컴파일됨
HACL*의 최신 버전을 Python에 통합
- 초기 PR은 HACL*의 필요한 파일을 가져오는 스크립트를 포함했으며, 이후 유지보수의 용이성을 위해 수정됨
- 최신 개선 사항을 통합하기 위해 Python의 SBOM을 업데이트하여 HACL*를 새로 고칠 수 있음
결론
- 검증된 암호화 코드가 Python과 같은 주요 프로젝트에 대규모로 통합된 것을 기쁘게 생각함
- 이는 검증된 암호화가 학문적 관점에서뿐만 아니라 실제 소프트웨어에 통합될 만큼 성숙했음을 보여줌