OpenSSL의 성능 저하, Rust 기반 라이브러리가 대안으로 떠오르다.
OpenSSL의 X.509 파싱(Parsing) 성능 저하로 인한 문제점 지적
pyca/cryptography 라이브러리의 Rust 기반 X.509 파싱 구현을 통해 성능 개선
OpenSSL API의 복잡성과 가독성 저하에 대한 개발자들의 불만(Developer Complaints) 제기
HAProxy 등 주요 프로젝트에서 OpenSSL 대신 AWS-LC로 전환하는 추세
OpenSSL의 성능 병목 현상
woodruffw의 댓글에 따르면 OpenSSL의 X.509 키 파싱(Key Parsing) 과정에서 심각한 성능 저하가 발생한다. 특히, pyca/cryptography는 자체 Rust 코드를 통해 X.509 경로 유효성 검사(Path Validation)를 구현하여 60%의 성능 향상을 달성했다. 이는 OpenSSL의 과도한 오버헤드(Overhead)와 비효율적인 구현 방식에 기인하며, 복사, 할당, 해시 테이블, 간접 호출, 락(Lock) 등 불필요한 연산이 주요 원인으로 지목된다.
pyca/cryptography의 Rust 기반 구현
pyca/cryptography는 안전성(Safety)과 사용 편의성(Ergonomics)을 최우선으로 설계되었으며, OpenSSL API를 직접 사용하는 대신 Rust로 구현된 자체 파싱 로직을 활용한다. 이러한 접근 방식은 OpenSSL API의 복잡성을 피하고, 성능 최적화(Performance Optimization)를 위한 유연성을 확보하는 데 기여했다. 결과적으로, pyca/cryptography는 OpenSSL보다 빠르고, 더 정확한 X.509 유효성 검사를 제공한다.
OpenSSL API의 가독성 및 유지보수 문제
formerly_proven은 OpenSSL 소스 코드의 가독성 저하 문제를 지적하며, API의 복잡성으로 인해 구현 방식을 파악하기 어렵다고 비판했다. 특히, 간접 호출, 조건부 컴파일, 다양한 최적화 구현 등으로 인해 코드 분석이 어렵고, 이는 개발자의 학습 곡선(Learning Curve)을 높이는 요인으로 작용한다. 이러한 문제는 OpenSSL의 유지보수(Maintenance)를 어렵게 만들고, 잠재적인 보안 취약점(Security Vulnerability)을 증가시킬 수 있다.
HAProxy의 OpenSSL 대안 채택
owenthejumper는 HAProxy가 OpenSSL 대신 AWS-LC를 채택한 사례를 언급하며, OpenSSL의 성능 및 유지보수 문제로 인해 다른 대안을 모색하는 추세임을 시사한다. HAProxy는 여전히 OpenSSL을 지원하지만, AWS-LC를 주요 SSL 스택(SSL Stack)으로 사용하며, 이는 OpenSSL의 미래에 대한 불확실성을 보여준다. 이러한 변화는 OpenSSL 생태계에 큰 영향을 미칠 수 있으며, 다른 프로젝트에도 유사한 변화를 가져올 수 있다.