rscrypto: 고성능 순수 Rust 암호 원시 스택
rscrypto는 C 라이브러리, OpenSSL 또는 시스템 종속성에 의존하지 않고 높은 실행 속도, 작은 바이너리 크기 및 엄격한 배포 제어가 필요한 프로젝트를 위해 설계된 단일 종속성 원시 스택입니다. 휴대용 Rust 백엔드와 선택적 SIMD/ASM 가속을 갖춘 RSA, Ed25519, X25519, AEAD, 해시 및 KDF를 포함한 포괄적인 암호 도구 모음을 제공합니다.
성능 벤치마크
rscrypto는 여러 아키텍처에 걸쳐 가장 빠른 매치된 Rust 기준선보다 상당한 성능 이점을 보여줍니다. Linux CI 환경에서 라이브러리는 1.61배의 기하 평균 속도 향상을 달성했으며, 5,832개의 매치된 비교 중 3,545번 승리하고 5,210번 승리 또는 동점했습니다. Apple Silicon (MBP M1)에서는 1.25배의 기하 평균 속도 향상을 달성했으며, 463쌍 중 235번 승리하고 450번 승리 또는 동점했습니다.
주요 성능 지표
| 영역 | Linux CI 기하 평균 | Apple Silicon 기하 평균 |
|---|---|---|
| 체크섬 | 5.03x | 2.76x |
| BLAKE3 (>=64 KiB) | 2.31x | 1.80x |
| AEAD | 1.57x | 1.47x |
| RSA 가져오기 + 검증 | 1.32x | 1.45x |
| SHA-3 / SHAKE | 2.15x / 1.86x | 0.94x / 1.32x |
전반적으로 더 빠르지만, 저자는 라이브러리가 경쟁자보다 약간 느린 특정 "약점"을 언급합니다. 여기에는 PBKDF2-SHA256 (iters=1), X25519 Diffie-Hellman 및 특정 플랫폼에서의 RSA-4096 검증이 포함됩니다.
기능 세트 및 역량
rscrypto는 여러 암호화 계열을 하나의 일관된 스택으로 통합하여 수많은 별도 크레이트를 관리하는 복잡성을 피합니다. 이 라이브러리는 no_std 대상용으로 설계되어 서버, CLI, 임베디드, 베어 메탈 및 WASM 빌드에 적합합니다.
포함된 원시
- Cryptographic Hashes: SHA-2, SHA-3, SHAKE, cSHAKE256, BLAKE2, BLAKE3, 및 Ascon-Hash/XOF/CXOF.
- MACs and KDFs: HMAC-SHA-2, KMAC256, HKDF-SHA-2, 및 PBKDF2-HMAC-SHA-2.
- Password Hashing: Argon2d/i/id, scrypt, 및 PHC 문자열 인코딩/검증.
- Public-Key Primitives: Ed25519 서명, X25519 키 교환, 및 전체 RSA 지원(서명, 검증, OAEP, RSAES-PKCS1-v1_5, 및 FIPS 186-5 A.1.3 probable-prime 키 생성).
- AEAD Encryption: AES-128/256-GCM, AES-128/256-GCM-SIV, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, 및 Ascon-AEAD128.
- Checksums and Non-Crypto Hashes: CRC-16/24/32/32C/64, XXH3-64/128, 및 RapidHash 64/128.
아키텍처 및 이식성
이 라이브러리는 진리의 원천으로 휴대용 Rust 구현을 사용하고, ISA 전용 커널은 가속기로만 활용합니다. 이를 통해 라이브러리는 모든 대상에서 기능을 유지하면서 지원되는 하드웨어에서 성능을 극대화합니다.
하드웨어 가속 지원
- x86 / x86_64: SSE4.2, AVX2, AVX-512, AES-NI, SHA-NI, VAES, VPCLMULQDQ.
- Arm / AArch64 / Apple Silicon: NEON, AES, PMULL, SHA2, SHA3, SVE2-PMULL.
- IBM Z / POWER: CPACF, MSA, VGFM, 및 POWER8/9/10 벡터 확장.
- RISC-V: RVV, Zbc, Zvkned, Zvbc.
- WASM: SIMD128 지원 및 휴대용 폴백.
보안 구현
rscrypto는 API 및 빌드 프로세스에 여러 보안 위생 관행을 통합합니다. 여기에는 MAC, AEAD 및 서명에 대한 상수 시간 검증, 그리고 드롭 시 제로화하고 Debug 출력을 마스킹하는 비밀 보유 타입이 포함됩니다.
정확성을 보장하기 위해 프로젝트는 다음을 사용합니다:
- 휴대용 및 가속 백엔드 간 차등 테스트.
- 공식 테스트 벡터 및 퍼즈 코퍼스 재생.
- CI에서 Miri 및
cargo audit통합. - 부채널 누출을 방지하기 위한 불투명 검증 오류.
커뮤니티 토론 및 비판
이 라이브러리는 보안 주장 및 개발 프로세스와 관련해 암호학 커뮤니티의 면밀한 검토를 받았습니다. 특히 Rosenpass 프로토콜 설계자인 Karolin Varner는 라이브러리의 프로덕션 사용 준비에 대해 강한 우려를 표명했습니다.
"다음과 같은 이유로 이 라이브러리 사용을 강력히 권고하지 않습니다: 제3자 리뷰/기존 리뷰 프로세스의 부재... 완전한 상수 시간 암호화 지원의 부재... 저자가 이 pre-v1 코드를 고집하는 점... README에 언급되지 않아 특히 우려됩니다."
Varner는 저자가 상수 시간 MAC을 주장하면서 상수 시간 해시를 주장하지 않은 점을 구체적으로 질문했으며, MAC이 종종 해시를 통해 구현되기 때문에 모순이라고 지적했습니다. 그녀는 또한 보고된 성능 향상이 일반적으로 성능 패널티를 수반하는 엄격한 상수 시간 구현이 부족해서 비롯된 것일 수 있다고 제안했습니다.
이에 대해 저자는 라이브러리가 실제로 pre-v1이며 공개 리뷰를 찾고 있음을 명확히 했습니다. 그들은 휴대용 Rust 경로가 바이트 단위 권위임을 강조했으며, 향후 제3자 감사 및 FIPS 140-3 검증에 관심이 있다고 밝혔습니다.
Title: rscrypto: 고성능 순수 Rust 암호 원시 스택
Summary: rscrypto는 기본 종속성이 전혀 없으며 기존 Rust 기준선에 비해 상당한 성능 향상을 제공하는 다양한 원시를 제공하는 순수 Rust 암호화 라이브러리입니다.