
rscrypto v0.8.0
기본 의존성 제로 Rust 암호화: BLAKE3, Ed25519/X25519, 해시, MAC, KDF, AEAD, 그리고 완전한 SIMD/ASM 가속을 갖춘 체크섬
rscrypto
rscrypto는 암호화 기본 요소, 암호화 및 고속 해시, 비밀번호 해싱, 체크섬을 하나의 기능 모델 뒤에 배치합니다.
타깃 게이트 SIMD와 어셈블리는 프로덕션 C/FFI, OpenSSL 또는 시스템 라이브러리 의존성 없이 이식 가능한 Rust 백엔드를 가속합니다.
rscrypto는 기본 요소 크레이트이며, TLS 스택, PKI 툴킷, 키 저장소 또는 프로토콜 구현이 아닙니다.
측정된 성능
성능 주장은 정확히 유지된 캠페인과 동등한 워크로드로 제한됩니다. 수정된 2026년 9월 캠페인에는 수정된 ML-KEM 및 Argon2 비교를 포함하여 19,614개의 완료된 사례가 포함되어 있지만, 대체 집계 스코어카드는 아직 정리되지 않았습니다. 엔트로피, 키 준비, 출력 표현 또는 솔트 길이를 혼합한 이전 집계는 역사적 기록으로 남아 있으며 현재 성능 주장이 아닙니다.
벤치마크 개요는 캠페인, 타깃별 결과 및 남은 한계를 기록합니다.
비교 계약은 동등한 ML-KEM 및 Argon2 워크로드를 정의합니다.
보증
보안 주장은 실패 시 폐쇄됩니다: 누락되거나 오래된 증거는 게이트를 약화시키는 대신 주장을 제거합니다.
- 정확성 증거는 NIST, RFC, 업스트림 및 Wycheproof 벡터를 별도 구현, 속성, 부정 테스트 및 Miri와 결합합니다.
- 퍼즈 타깃은 기본 요소, 파서, 상태 머신 및 트레이트 경계 전반에 걸쳐 프로덕션 구현을 실행합니다. 최소화된 시드는 별도의 새니타이저 레인과 함께 테스트로 재생됩니다.
- 이식 가능 대 가속 차등 테스트는 네이티브 타깃에서 길이, 정렬, 꼬리, 상태 전환, 디스패치 및 폴백 동작을 다룹니다.
- 상수 시간 하네스는
ct.toml의 정확한 작업을 목록화하고 최적화된 링크 바이너리 검사, 선언된 고정 형태 커널에 대한 BINSEC 증명, 및 선언된 엔드투엔드 사례에 대한 DudeCT 타이밍 테스트를 결합합니다. - 비밀 소유자는
Debug를 삭제하고 드롭 시 초기화된 저장소를 지웁니다. 복제 규칙은 유형에 따라 다릅니다: 키가 있는 BLAKE2/BLAKE3 상태는Clone을 지원합니다. 소유권 인벤토리는 이러한 경계를 나열합니다. 검증 실패는 불투명합니다; 실패한 AEAD 열기는 인증되지 않은 평문을 지웁니다.
상수 시간 주장은 필요한 타깃, 기능, 컴파일러, 프로필 및 작업에 대한 증거가 통과할 때만 존재합니다. 분기 없는 것처럼 보이는 소스는 증거로 취급되지 않습니다.
테스트 증거, 상수 시간 모델, 비밀 수명 주기 및 위협 모델을 검사하십시오.
남은 독립 검토 격차는 제3자 보안 감사입니다.
프로젝트는 현재 이를 자금 조달할 수 없습니다.
자동화된 증거는 해당 검토를 대체하지 않으므로, rscrypto는 감사됨,
FIPS 140-3 검증됨, 형식적으로 검증됨 또는 전체 크레이트로서 상수 시간이라고 주장하지 않습니다.
의심되는 취약점은 공개 이슈가 아닌
SECURITY.md 프로세스에 따라 GitHub 비공개 취약점 보고를 통해 보고하십시오.
사용하는 것만 설치
최소 no_std SHA-2 빌드:
[dependencies]
rscrypto = { version = "0.10", default-features = false, features = ["sha2"] }
OS 무작위성이 활성화된 전체 기본 요소 스택:
[dependencies]
rscrypto = { version = "0.10", features = ["full", "getrandom"] }
기본 기능은 std입니다; default-features = false는 이를 제거합니다.
운영 체제에서 솔트, 키, 논스
또는 RSA 키 생성 엔트로피를 얻는 API에만 getrandom을 활성화하십시오.
기능 가이드는 빌드 선택을 설명합니다; Cargo.toml은 정확한 기능 그래프를 소유합니다.
빠른 시작
use rscrypto::Sha256;
let one_shot = Sha256::digest(b"hello world");
let mut hasher = Sha256::new();
hasher.update(b"hello ");
hasher.update(b"world");
assert_eq!(hasher.finalize(), one_shot);
해시 API는 원샷 및 스트리밍 사용을 지원합니다.
AEAD, 서명, RSA, P-256 ECDH, X25519, ML-KEM, 비밀번호 해싱
및 백엔드 내성을 위한 실행 가능한 워크플로는 examples/README.md에 있습니다.
기본 요소 및 기능 맵
| 패밀리 | 포함 | 활성화 |
|---|---|---|
| 체크섬 | CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMe | checksums 또는 리프 기능 |
| 암호화 해시 | SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOF | crypto-hashes 또는 리프 기능 |
| 고속 해시 | XXH3-64/128, RapidHash V3-64 | fast-hashes 또는 리프 기능 |
| MAC 및 KDF | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs, kdfs 또는 리프 기능 |
| 비밀번호 해싱 | Argon2d/i/id, scrypt, 경계 PHC 비밀번호 레코드 | password-hashing 또는 리프 기능 |
| 서명 및 RSA | ECDSA P-256/P-384, Ed25519, ML-DSA-44/65/87, RSA 서명, 검증, 암호화 및 키 생성 | signatures 또는 리프 기능 |
| 키 교환 및 KEM | P-256 ECDH, X25519, ML-KEM-512/768/1024 | key-exchange 또는 리프 기능 |
| AEAD | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead 또는 리프 기능 |
호환성 전용 WebSocket accept 다이제스트는 websocket-sha1을 필요로 하며,
이는 full 및 기타 모든 우산 기능에서 제외됩니다.
정확한 유형과 메서드는 docs.rs를 사용하십시오.
플랫폼 및 디스패치
이식 가능한 Rust 구현은 바이트 단위의 권위입니다.
컴파일 타임 타깃 지원 및 std와 함께
감지된 런타임 CPU 기능이 적격 SIMD 또는 어셈블리 커널을 선택합니다.
지원되지 않는 가속은 이식 가능한 Rust로 폴백합니다.
플랫폼 가이드는 지원되는 타깃 카탈로그, 디스패치, no_std 커버리지
및 portable-only의 한계를 설명합니다.
프로젝트
가이드와 예제는 함께 제공되는 소스를 설명합니다. 게시된 의존성에 대해서는 일치하는 버전의 API 문서를 사용하십시오.
코드를 변경하기 전에 CONTRIBUTING.md를 읽으십시오.
게시된 변경 사항은 CHANGELOG.md에 있습니다.
라이선스
Apache-2.0 또는 MIT 중 선택에 따라 이중 라이선스됩니다.