AVX MAC

Códigos de autenticação de mensagem - HMAC, CMAC, Poly1305

HMAC CMAC Poly1305 Authentication

Visão Geral

🔐 HMAC

Hash-based Message Authentication Code. Autenticação usando funções hash criptográficas (SHA-256, BLAKE3).

🛡️ CMAC

Cipher-based MAC usando AES. Aprovado pelo NIST para autenticação baseada em cifras de bloco.

⚡ Poly1305

MAC de alta velocidade usado em ChaCha20-Poly1305. Excelente desempenho em software.

✅ Verificação

Comparação em tempo constante para prevenir ataques de timing side-channel.

Tipos Disponíveis

Tipo Descrição Tamanho Tag
HmacSha256 HMAC com SHA-256 256 bits
HmacSha512 HMAC com SHA-512 512 bits
HmacBlake3 HMAC com BLAKE3 256 bits
CmacAes128 CMAC com AES-128 128 bits
CmacAes256 CMAC com AES-256 128 bits
Poly1305 MAC Poly1305 128 bits

Exemplos de Uso

Exemplo Básico - HMAC-SHA256

use avx_mac::HmacSha256;

fn main() {
    let key = b"chave_secreta_32_bytes_min!!!!!!";
    let message = b"Mensagem a ser autenticada";

    // Criar MAC
    let mut mac = HmacSha256::new(key);
    mac.update(message);
    let tag = mac.finalize();

    println!("HMAC-SHA256: {}", hex::encode(tag));

    // Verificar MAC
    let mut verifier = HmacSha256::new(key);
    verifier.update(message);
    assert!(verifier.verify(&tag));

    println!("✅ MAC verificado!");
}

Exemplo - CMAC-AES

use avx_mac::CmacAes256;

fn main() {
    let key = [0u8; 32]; // Chave AES-256
    let message = b"Dados para autenticar";

    let mut cmac = CmacAes256::new(&key);
    cmac.update(message);
    let tag = cmac.finalize();

    println!("CMAC: {}", hex::encode(tag));
}

Exemplo - Poly1305

use avx_mac::Poly1305;

fn main() {
    let key = [0u8; 32]; // Chave única
    let message = b"Mensagem rápida";

    let tag = Poly1305::mac(&key, message);
    println!("Poly1305: {}", hex::encode(tag));

    // Verificar
    assert!(Poly1305::verify(&key, message, &tag));
}

Referências da API

HmacSha256

pub fn new(key: &[u8]) -> Self

Cria novo HMAC com chave.

pub fn update(&mut self, data: &[u8])

Adiciona dados ao MAC.

pub fn finalize(&self) -> [u8; 32]

Retorna tag de autenticação.

pub fn verify(&self, tag: &[u8]) -> bool

Verifica tag em tempo constante.

Poly1305

pub fn mac(key: &[u8; 32], message: &[u8]) -> [u8; 16]

Gera tag Poly1305.

pub fn verify(key: &[u8; 32], message: &[u8], tag: &[u8; 16]) -> bool

Verifica tag Poly1305.

Métricas de Performance

2.5 GB/s
HMAC-SHA256
Com SHA-NI
8 GB/s
Poly1305
AVX2 otimizado
5 GB/s
CMAC-AES
Com AES-NI
< 100ns
Verificação
Tempo constante

Casos de Uso

🔐

Autenticação de APIs

HMAC para verificar integridade e autenticidade de requests/responses em APIs REST.

📡

Protocolos de Rede

Autenticação de pacotes em protocolos seguros como TLS, IPsec e VPNs.

💾

Integridade de Dados

Verificação de integridade em armazenamento e transmissão de dados sensíveis.

🔑

Tokens & JWTs

Assinatura de tokens de autenticação e JSON Web Tokens (JWT).

Licença

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

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