O que é Vetor de inicialização?
Um vetor de inicialização (IV) é um valor aleatório ou pseudoaleatório usado como entrada adicional de um algoritmo de criptografia junto à chave, garantindo que um texto simples idêntico criptografado com a mesma chave produza um texto cifrado diferente a cada operação.
Também conhecido como: IV, initialisation vector
Um vetor de inicialização cumpre o mesmo propósito fundamental de um nonce: introduz unicidade em cada operação de criptografia. Os termos são frequentemente usados de forma intercambiável, embora "IV" seja mais comum no contexto dos modos de cifra de bloco (CBC, GCM, CTR), enquanto "nonce" é usado de forma mais ampla. No AES-GCM especificamente, o IV é um valor de 12 bytes que inicializa o contador usado no modo Galois/Counter.
O IV não precisa ser secreto: normalmente é armazenado ou transmitido em texto simples junto ao texto cifrado. Sua contribuição à segurança vem da unicidade, e não do sigilo. No entanto, dependendo do modo de cifra, o IV pode precisar ser imprevisível (como no modo CBC) ou simplesmente único (como no modo GCM). Usar um IV previsível com o modo CBC habilita ataques específicos, enquanto o GCM apenas requer que o IV nunca seja reutilizado com a mesma chave.
A reutilização do IV com o AES-GCM é catastrófica: ela permite que um atacante recupere a chave de autenticação e forje textos cifrados válidos, e vaza informações sobre o texto simples por meio do XOR dos dois fluxos de texto cifrado. Por isso as implementações devem usar um gerador de números aleatórios criptograficamente seguro para a geração do IV e nunca devem construir nem reutilizar IVs manualmente.
Como o Vaulted usa Vetor de inicialização
A Vaulted gera um IV novo de 12 bytes usando crypto.getRandomValues() da Web Crypto API para cada segredo. O IV é enviado ao servidor junto ao texto cifrado e armazenado no Redis como parte do registro criptografado. Quando o destinatário recupera o segredo, o IV é devolvido junto ao texto cifrado para que o navegador possa reconstruir os parâmetros de descriptografia do AES-256-GCM. Como a Vaulted também gera uma chave única por segredo, o par chave-IV é sempre único.