업데이트로 돌아가기
New releaseSep 3, 2026

rscrypto v0.9.0

Rust 암호화, 필수 의존성 제로: 해시, 체크섬, MAC, KDF, 비밀번호 해싱, AEAD, 서명, RSA, 키 교환, ML-KEM, ML-DSA. SIMD 및 ASM 백엔드를 갖춘 이식 가능한 Rust 참조 구현.

공유

rscrypto

Crates.io Docs.rs MSRV 1.100.0 License: MIT OR Apache-2.0

rscrypto는 암호화 기본 요소, 해시, 비밀번호 해싱, 체크섬을 제공하는 Rust 라이브러리입니다. 하나의 기능 모델이 이 모든 것을 제어합니다. 이식 가능한 Rust가 참조 구현입니다. SIMD 및 어셈블리 백엔드는 지원되는 대상에서 더 빠르게 만듭니다. 프로덕션 빌드는 C, FFI, OpenSSL 또는 시스템 라이브러리에 의존하지 않습니다.

rscrypto는 기본 요소만 제공합니다. TLS 스택, PKI 툴킷, 키 저장소 또는 프로토콜 구현이 아닙니다.

설치

rscrypto는 Rust 1.100이 필요합니다. Rust 1.100이 안정화될 때까지는 1.100 베타 또는 더 새로운 nightly를 사용하세요. 가속화된 POWER, IBM Z 및 RISC-V 빌드는 nightly 컴파일러가 필요합니다; portable-only 빌드는 선언된 MSRV를 지원합니다. 툴체인을 참조하세요.

SHA-2만 포함하는 최소 no_std 빌드:

[dependencies]
rscrypto = { version = "0.11", default-features = false, features = ["sha2"] }

운영 체제 무작위성을 사용하는 모든 기본 요소:

[dependencies]
rscrypto = { version = "0.11", 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);

해시 타입은 일회성 및 스트리밍 사용을 지원합니다. examples/README.md에는 AEAD, 서명, RSA, P-256 및 P-384 ECDH, X25519, ML-KEM, 비밀번호 해싱 및 백엔드 내부 검사를 위한 실행 가능한 예제가 있습니다.

기본 요소 및 기능

패밀리기본 요소기능
체크섬CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMechecksums 또는 리프 기능
암호화 해시SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOFcrypto-hashes 또는 리프 기능
고속 해시XXH3-64/128, RapidHash V3-64fast-hashes 또는 리프 기능
MAC 및 KDFHMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2macs, kdfs 또는 리프 기능
비밀번호 해싱Argon2d/i/id, scrypt, 제한된 PHC 비밀번호 레코드password-hashing 또는 리프 기능
서명 및 RSAECDSA P-256/P-384, Ed25519, ML-DSA-44/65/87, SLH-DSA (모든 12개 FIPS 205 세트, pure 및 HashSLH-DSA), RSA 서명, 검증, 암호화 및 키 생성signatures 또는 리프 기능
키 교환 및 KEMP-256 ECDH, P-384 ECDH, X25519, ML-KEM-512/768/1024key-exchange 또는 리프 기능
AEADAES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128aead 또는 리프 기능

서명 및 KEM 키는 ECDSA, Ed25519, RSA, ML-DSA, ML-KEM 및 SLH-DSA에 대해 표준 DER (PKCS #8 및 SubjectPublicKeyInfo)을 가져오고 내보냅니다.

WebSocket accept 다이제스트는 프로토콜 호환성을 위해서만 존재합니다. websocket-sha1 기능이 필요합니다. full을 포함한 어떤 우산 기능도 이를 활성화하지 않습니다.

정확한 타입과 메서드는 docs.rs를 참조하세요. API 호환성 노트는 출력 타입, 컬렉션 시드 및 유지된 메서드 이름을 설명합니다. 암호화 복원력 가이드는 보안 가정, 마이그레이션 경계 및 더 강력한 암호화를 선택할 때 검토해야 할 증거를 설명합니다.

플랫폼 및 디스패치

이식 가능한 Rust 구현은 바이트 단위로 정확한 출력을 정의합니다. 모든 가속 백엔드는 동일한 출력을 제공해야 합니다. 컴파일 시 대상은 사용 가능한 백엔드를 설정합니다. std를 사용하면 rscrypto는 런타임에 CPU 기능을 감지하고 백엔드를 선택합니다. 가속 백엔드를 사용할 수 없으면 이식 가능한 구현이 실행됩니다.

플랫폼 가이드는 지원되는 대상을 나열합니다. 또한 디스패치, no_std 지원 및 portable-only의 한계를 설명합니다.

보증

보안 주장은 그 증거가 통과하는 동안에만 존재합니다. 증거가 없거나 오래되면 주장이 제거되며, 게이트가 약화되지 않습니다.

  • 정확성: NIST, RFC, 업스트림 및 Wycheproof 벡터, 독립 구현, 속성 테스트, 부정 테스트 및 Miri.
  • 퍼징: 퍼즈 대상은 기본 요소, 파서, 상태 머신 및 트레이트 경계 전반에 걸쳐 프로덕션 코드를 실행합니다. 최소화된 입력은 테스트로 재생됩니다. 별도의 레인이 새니타이저와 함께 실행합니다.
  • 백엔드: 차등 테스트는 각 가속 백엔드를 이식 가능한 Rust와 비교합니다. 길이, 정렬, 꼬리, 상태 전환, 디스패치 및 네이티브 대상에서의 폴백을 다룹니다.
  • 상수 시간: ct.toml은 테스트 중인 정확한 작업을 나열합니다. 증거는 최적화된 링크된 바이너리 검사, 고정 형태 커널에 대한 BINSEC 증명 및 엔드투엔드 작업에 대한 DudeCT 타이밍 테스트를 결합합니다.
  • 비밀: 비밀을 소유하는 타입은 Debug 출력에서 내용을 숨기고 드롭 시 초기화된 저장소를 지웁니다. 복사 규칙은 타입에 따라 다릅니다; 예를 들어 키가 있는 BLAKE2 및 BLAKE3 상태는 Clone을 지원합니다. 비밀 소유권 인벤토리는 각 타입을 나열합니다.
  • 실패: 검증 실패는 실패 이유를 알려주지 않습니다. 실패한 AEAD 열기는 인증되지 않은 평문을 지웁니다.

상수 시간 주장은 그 증거가 다루는 대상, 기능, 컴파일러, 프로필 및 작업에만 적용됩니다. 분기 없는 것처럼 보이는 소스 코드는 증명이 아닙니다.

자세한 내용은 테스트 증거, 상수 시간 모델, 비밀 수명 주기 및 위협 모델을 참조하세요.

rscrypto는 제3자 보안 감사를 받은 적이 없습니다. 프로젝트는 현재 비용을 지불할 수 없으며 자동화된 증거가 이를 대체하지 않습니다. rscrypto는 감사, FIPS 140-3 검증, 형식 검증 또는 전체 크레이트로서 상수 시간이라고 주장하지 않습니다.

의심되는 취약점은 GitHub Private Vulnerability Reporting을 통해 보고하세요. SECURITY.md 프로세스를 따르세요. 공개 이슈를 열지 마세요.

성능

벤치 실행 #37092266645는 2026-10-03에 8개 플랫폼에서 v0.10.0 소스를 측정했습니다. 각 플랫폼은 해시, 체크섬, MAC, XOF 및 scrypt의 346개 동등 비교를 가집니다. 각 비교는 가장 빠른 외부 크레이트의 중앙값 시간을 rscrypto의 중앙값 시간으로 나눕니다. 1.00x 이상의 비율은 rscrypto가 더 빠르다는 것을 의미합니다.

플랫폼더 빠름3% 이내더 느림중앙값 비율
Intel Linux (c8i)21188471.09x
AMD Linux (c8a)2568191.13x
Intel Windows (c8i)186105551.05x
AMD Windows (c8a)26268161.09x
Graviton5 Linux (c9g)147121781.01x
POWER10 Linux206122181.07x
IBM Z Linux30119262.77x
RISC-V Linux19779701.05x

이 결과는 클라우드 및 공유 호스트에서의 한 번의 실행에서 나온 것입니다. AEAD, 서명, 키 교환, ML-KEM, ML-DSA, Argon2 또는 RSA 사례를 포함하지 않으며 macOS도 포함하지 않습니다. 벤치마크 개요는 패밀리별 결과, 방법 및 한계를 제공합니다. 비교 계약은 동등한 ML-KEM 및 Argon2 워크로드를 정의합니다. 이전 요약 표는 서로 다른 워크로드를 혼합했습니다. 이는 역사적 기록이며 현재 주장이 아닙니다.

프로젝트

가이드와 예제는 이 저장소의 소스를 설명합니다. 게시된 버전의 경우 일치하는 API 문서를 사용하세요.

코드를 변경하기 전에 CONTRIBUTING.md를 읽으세요. CHANGELOG.md는 게시된 변경 사항을 나열합니다.

라이선스

Apache-2.0 또는 MIT에 따라 이중 라이선스가 부여되며, 선택은 귀하에게 있습니다.

카테고리