ti-enxame.com

Devo usar um vetor de inicialização (iv) junto com minha criptografia?

É recomendável que eu use um vetor de inicialização para criptografar/descriptografar meus dados? Isso tornará as coisas mais seguras? É uma daquelas coisas que precisam ser avaliadas caso a caso?

Para colocar isso em contexto real, a função de criptografia Win32, cryptsetkypearam permite a configuração de um vetor de inicialização em uma chave antes da criptografia/descriptografia. Outras API também permitem isso.

O que geralmente é recomendado e por quê?

37
Scott Saad

Dê uma boa olhada em uma foto (veja abaixo) do modo CBC. Você perceberá rapidamente que um invasor sabendo que o IV é como o invasor sabendo um bloco anterior de Ciphertext (e sim eles já sabem muito disso).

Aqui está o que eu digo: a maioria dos "problemas" com iv = 0 são problemas gerais com modos de criptografia em bloco quando você não Certifique-se de integridade de dados. Você realmente deve garantir a integridade.

Aqui está o que faço: use uma soma de verificação forte (hash criptográfico ou HMAC) e prepare-a para o seu texto simples antes de criptografar. Há o primeiro bloco conhecido de ciphertext: é o IV da mesma coisa sem a soma de verificação, e você precisa do checksum por um milhão de outras razões.

Finalmente: qualquer analogia entre CBC e Cifra de Cluxo não é terrivelmente perspicaz IMHO.

Basta olhar para a foto do modo CBC, acho que você ficará agradavelmente surpreso.

Aqui está uma foto:

http://en.wikipedia.org/wiki/block_cipher_modes_of_operation

texto do link

5
Purfideas