Cifras autenticadas com dados associados - ChaCha20-Poly1305, AES-GCM
Cifras que fornecem confidencialidade e autenticidade simultaneamente. Protege contra adulteração e garante integridade dos dados.
Cifra de fluxo moderna com autenticação Poly1305. Excelente desempenho em software e resistente a ataques de timing.
Advanced Encryption Standard no modo Galois/Counter Mode. Aprovado pelo NIST e acelerado por hardware AES-NI.
Suporte para dados adicionais não criptografados mas autenticados (AAD), ideal para headers e metadados.
| Tipo | Descrição | Tamanho da Chave |
|---|---|---|
ChaCha20Poly1305 |
Cifra de fluxo ChaCha20 com MAC Poly1305 | 256 bits |
XChaCha20Poly1305 |
Variante com nonce estendido (192 bits) | 256 bits |
AesGcm128 |
AES-128 no modo GCM | 128 bits |
AesGcm192 |
AES-192 no modo GCM | 192 bits |
AesGcm256 |
AES-256 no modo GCM | 256 bits |
Nonce |
Número usado uma vez (nonce) | 96/192 bits |
Tag |
Tag de autenticação | 128 bits |
use avx_aead::{ChaCha20Poly1305, Nonce};
fn main() {
// Chave de 256 bits
let key = [0u8; 32];
let cipher = ChaCha20Poly1305::new(&key);
// Nonce único de 96 bits
let nonce = Nonce::from_slice(&[0u8; 12]);
// Dados associados (não criptografados)
let aad = b"metadata";
// Criptografar
let plaintext = b"Mensagem secreta AVX";
let ciphertext = cipher.encrypt(&nonce, aad, plaintext)
.expect("Falha na criptografia");
// Descriptografar
let decrypted = cipher.decrypt(&nonce, aad, &ciphertext)
.expect("Falha na descriptografia");
assert_eq!(plaintext, &decrypted[..]);
println!("✅ ChaCha20-Poly1305 funcional!");
}
use avx_aead::{AesGcm256, Nonce};
fn main() {
// Chave de 256 bits
let key = [0u8; 32];
let cipher = AesGcm256::new(&key);
// Nonce de 96 bits
let nonce = Nonce::from_slice(&[1u8; 12]);
// Dados associados
let aad = b"header_info";
// Criptografar com autenticação
let plaintext = b"Dados confidenciais";
let ciphertext = cipher.encrypt(&nonce, aad, plaintext)
.expect("Erro ao criptografar");
// Descriptografar e verificar autenticidade
let decrypted = cipher.decrypt(&nonce, aad, &ciphertext)
.expect("Falha na autenticação ou descriptografia");
assert_eq!(plaintext, &decrypted[..]);
println!("✅ AES-GCM verificado!");
}
use avx_aead::{ChaCha20Poly1305, Nonce};
fn main() {
let key = [0u8; 32];
let cipher = ChaCha20Poly1305::new(&key);
let nonce = Nonce::from_slice(&[2u8; 12]);
// Processar grandes volumes de dados em chunks
let mut ciphertext = Vec::new();
for chunk in data_stream.chunks(4096) {
let encrypted = cipher.encrypt_chunk(&nonce, chunk)
.expect("Erro no chunk");
ciphertext.extend_from_slice(&encrypted);
}
println!("✅ Stream processado: {} bytes", ciphertext.len());
}
pub fn new(key: &[u8; 32]) -> Self
Cria uma nova instância com chave de 256 bits.
pub fn encrypt(&self, nonce: &Nonce, aad: &[u8], plaintext: &[u8]) -> Result<Vec<u8>, AeadError>
Criptografa dados com autenticação.
pub fn decrypt(&self, nonce: &Nonce, aad: &[u8], ciphertext: &[u8]) -> Result<Vec<u8>, AeadError>
Descriptografa e verifica autenticidade.
pub fn new(key: &[u8; 32]) -> Self
Cria instância AES-256-GCM.
pub fn encrypt(&self, nonce: &Nonce, aad: &[u8], plaintext: &[u8]) -> Result<Vec<u8>, AeadError>
Criptografa com AES-GCM.
pub fn decrypt(&self, nonce: &Nonce, aad: &[u8], ciphertext: &[u8]) -> Result<Vec<u8>, AeadError>
Descriptografa com verificação de tag.
pub fn from_slice(bytes: &[u8]) -> Self
Cria nonce a partir de slice.
pub fn random() -> Self
Gera nonce aleatório criptograficamente seguro.
TLS 1.3, QUIC, WireGuard e outros protocolos modernos que requerem AEAD para comunicação segura.
Criptografia de discos, bancos de dados e arquivos com verificação de integridade automática.
Aplicações de mensagens end-to-end com proteção contra adulteração e replay attacks.
Autenticação de requests e responses com dados associados (headers, timestamps).
AVX AEAD é software proprietário desenvolvido pela Ávila Inc. Todos os direitos reservados.
Para licenciamento comercial, entre em contato: nicolas@avila.inc