AVX AEAD

Cifras autenticadas com dados associados - ChaCha20-Poly1305, AES-GCM

ChaCha20-Poly1305 AES-GCM Authenticated Encryption no_std

Visão Geral

🔒 AEAD (Authenticated Encryption with Associated Data)

Cifras que fornecem confidencialidade e autenticidade simultaneamente. Protege contra adulteração e garante integridade dos dados.

⚡ ChaCha20-Poly1305

Cifra de fluxo moderna com autenticação Poly1305. Excelente desempenho em software e resistente a ataques de timing.

🛡️ AES-GCM

Advanced Encryption Standard no modo Galois/Counter Mode. Aprovado pelo NIST e acelerado por hardware AES-NI.

🔐 Dados Associados

Suporte para dados adicionais não criptografados mas autenticados (AAD), ideal para headers e metadados.

Tipos Disponíveis

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

Exemplos de Uso

Exemplo Básico - ChaCha20-Poly1305

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!");
}

Exemplo - AES-256-GCM

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!");
}

Exemplo - Criptografia Streaming

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());
}

Referências da API

ChaCha20Poly1305

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.

AesGcm256

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.

Nonce

pub fn from_slice(bytes: &[u8]) -> Self

Cria nonce a partir de slice.

pub fn random() -> Self

Gera nonce aleatório criptograficamente seguro.

Métricas de Performance

5.2 GB/s
ChaCha20-Poly1305
AVX2 otimizado
8.5 GB/s
AES-256-GCM
Com AES-NI
< 100ns
Latência
Por operação
Zero
Alocações
no_std compatível

Throughput Comparativo

ChaCha20-Poly1305
XChaCha20-Poly1305
AES-128-GCM
AES-256-GCM

Casos de Uso

📡

Protocolos de Rede

TLS 1.3, QUIC, WireGuard e outros protocolos modernos que requerem AEAD para comunicação segura.

💾

Armazenamento Criptografado

Criptografia de discos, bancos de dados e arquivos com verificação de integridade automática.

🔐

Mensagens Seguras

Aplicações de mensagens end-to-end com proteção contra adulteração e replay attacks.

📦

APIs REST/gRPC

Autenticação de requests e responses com dados associados (headers, timestamps).

Licença

AVX AEAD é software proprietário desenvolvido pela Ávila Inc. Todos os direitos reservados.

Para licenciamento comercial, entre em contato: nicolas@avila.inc