
rscrypto v0.9.0
Rust crypto com zero dependências padrão: BLAKE3, Ed25519/X25519, hashes, MACs, KDFs, AEADs e checksums com aceleração SIMD/ASM completa.
rscrypto
O rscrypto coloca primitivas criptográficas, hashes criptográficos e rápidos,
hash de senhas e checksums atrás de um único modelo de recursos. SIMD e assembly
direcionados por alvo aceleram os backends Rust portáteis sem dependência de
C/FFI de produção, OpenSSL ou bibliotecas do sistema.
O rscrypto é um crate de primitivas, não uma pilha TLS, kit PKI, armazenamento
de chaves ou implementação de protocolo.
Desempenho medido
O snapshot de 2026-08-18 compara o commit 7eb44e9 com a implementação externa
correspondente mais rápida para cada plataforma, primitiva, operação e formato
de entrada em oito runners Linux de CI. A linha de base externa é selecionada
caso a caso, não calculada como média entre concorrentes. As proporções são
external / rscrypto; quanto maior, melhor.
Em 6.144 comparações de casos exatos, o rscrypto foi mais de 5% mais rápido em
3.780, dentro de 5% em 1.695 e mais lento em 669. A aceleração média geométrica
foi de 1,62x no geral, incluindo 6,18x para checksums, 1,65x para RSA, 1,61x
para AEAD e 1,55x para ML-KEM.
O resultado Apple Silicon no gráfico é um snapshot local separado de 2026-07-04; ele não está incluído no agregado Linux.
Esta é uma liderança geral do conjunto, não uma afirmação de que toda operação
vence. O mesmo snapshot publica a regressão ECDSA s390x e o caminho mais lento
rapidhash-stream/one-write junto com cada linha bruta. Leia a
visão geral de benchmarks para o placar
completo e o guia de benchmarking antes de aplicar um
resultado a uma carga de trabalho de implantação.
Garantia
As afirmações de segurança falham de forma fechada: evidências ausentes ou desatualizadas removem a afirmação em vez de enfraquecer a barreira.
- A evidência de correção combina vetores NIST, RFC, upstream e Wycheproof com implementações separadas, propriedades, testes negativos e Miri.
- Alvos de fuzzing exercitam implementações de produção através de fronteiras de primitivas, parsers, máquinas de estado e traits. Sementes minimizadas são reproduzidas como testes, com uma faixa separada de sanitizadores.
- Testes diferenciais portátil-versus-acelerado cobrem comprimentos, alinhamentos, caudas, transições de estado, despacho e comportamento de fallback em alvos nativos.
- O harness de tempo constante inventaria operações exatas em
ct.tomle combina inspeção otimizada de binários vinculados, provas BINSEC para kernels declarados de forma fixa e testes de temporização DudeCT para casos declarados de ponta a ponta. - Proprietários de segredos de tamanho fixo mascaram
Debug, omitem igualdade comum e sobrescrevem bytes próprios na liberação. Falhas de verificação são opacas; aberturas AEAD com falha limpam buffers de saída do chamador.
Uma afirmação de tempo constante existe somente quando a versão assinada correspondente inclui um pacote de evidências atestado cujas barreiras exigidas de alvo, recurso, compilador, perfil e operação passam. Código-fonte que parece sem ramificações não é tratado como prova. Artefatos de versão são limitados por tags assinadas, publicados através do Trusted Publishing do crates.io e cobertos por atestações de proveniência de build do GitHub.
Inspecione a evidência de testes, o
modelo de tempo constante, o
ciclo de vida de segredos, o
modelo de ameaças e o contrato de versão.
A lacuna restante de revisão independente é uma auditoria de segurança de
terceiros. O projeto atualmente não pode financiar uma. Evidências automatizadas
não substituem essa revisão, então o rscrypto não afirma ser auditado,
validado FIPS 140-3, formalmente verificado ou de tempo constante como um crate
inteiro.
Relate vulnerabilidades suspeitas através do
Relatório Privado de Vulnerabilidades do GitHub
sob o processo do SECURITY.md, não em uma issue pública.
Instale apenas o que você usa
Build mínimo no_std de SHA-2:
[dependencies]
rscrypto = { version = "0.9", default-features = false, features = ["sha2"] }
Pilha completa de primitivas com aleatoriedade do SO habilitada:
[dependencies]
rscrypto = { version = "0.9", features = ["full", "getrandom"] }
O recurso padrão é std; default-features = false o remove. Habilite
getrandom apenas para APIs que obtêm salts, chaves, nonces ou entropia de
geração de chaves RSA do sistema operacional. O guia de recursos
é o dono das dependências exatas e dos controles de implantação.
Início rápido
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);
As APIs de hash suportam uso de uma única chamada e streaming. Fluxos de trabalho
executáveis para AEAD, assinaturas, RSA, X25519, ML-KEM, hash de senhas e
introspecção de backend estão em examples/README.md.
Mapa de primitivas e recursos
| Família | Incluído | Habilitar |
|---|---|---|
| Checksums | CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMe | checksums ou recursos folha |
| Hashes criptográficos | SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOF | crypto-hashes ou recursos folha |
| Hashes rápidos | XXH3-64/128, RapidHash V3-64 | fast-hashes ou recursos folha |
| MACs e KDFs | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs, kdfs ou recursos folha |
| Hash de senhas | Argon2d/i/id, scrypt, registros PHC de senha limitados | password-hashing ou recursos folha |
| Assinaturas e RSA | ECDSA P-256/P-384, Ed25519, assinatura RSA, verificação, criptografia e geração de chaves | signatures ou recursos folha |
| Troca de chaves e KEMs | X25519, ML-KEM-512/768/1024 | key-exchange ou recursos folha |
| AEADs | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead ou recursos folha |
Use o docs.rs para tipos e métodos exatos. Use o
guia de migração ao substituir outra biblioteca.
Plataformas e despacho
A implementação Rust portátil é a autoridade byte por byte. O suporte de alvo em
tempo de compilação e, com std, as capacidades de CPU detectadas em tempo de
execução selecionam kernels SIMD ou assembly elegíveis. Aceleração não suportada
recai para Rust portátil.
O guia de plataformas é o dono da matriz de alvos, do
modelo de despacho, da cobertura no_std e dos limites de portable-only.
Projeto
Leia o CONTRIBUTING.md antes de alterar código. Mudanças
publicadas estão no CHANGELOG.md.
Licença
Dupla licença sob Apache-2.0 ou MIT, à sua escolha.