Vector de Inicialização (IV)

Um vector de inicialização (IV) é um número aleatório usado em criptografia que é gerado para cada sessão de criptografia para garantir que a mesma mensagem não seja criptografada mais de uma vez com a mesma chave. Quantas SIV uma pessoa pode ter? Não há limite para o número de IVS que uma pessoa pode ter.

Porque é que a SIV é única?

A principal razão porque os IVs são únicos é porque são usados para inicializar o estado de um objeto. Isto é importante porque permite que o objeto seja criado em um estado conhecido, o que é necessário para muitas aplicações.

Existem outras razões pelas quais os IVs também são únicos. Por exemplo, eles podem ser usados para ajudar a garantir que os dados não sejam corrompidos quando são transmitidos entre diferentes partes de um sistema. Além disso, os IVs podem ser usados para ajudar a proteger contra certos tipos de ataques, tais como ataques de repetição.

Como se cria um IV no AES?

Para criar um vetor de inicialização (IV) para AES, você pode usar qualquer método que gere uma seqüência de bytes aleatórios ou pseudorandômicos. Alguns métodos comuns incluem o uso de um gerador de números aleatórios (RNG), uma função de hash criptográfico, ou um algoritmo determinístico.

Um método para gerar um IV aleatório é usar um gerador de números criptográficos pseudo-aleatórios seguros (CSPRNG). Um CSPRNG é um RNG concebido para ser resistente a ataques; ou seja, é difícil para um atacante prever a saída do CSPRNG. CSPRNGs comuns incluem o /dev/urandom do kernel Linux e a API Microsoft Windows CryptGenRandom().

Para gerar um IV usando uma função de hash criptográfico, você pode passar um valor gerado aleatoriamente (como uma saída CSPRNG) através da função de hash. A saída da função hash pode então ser usada como a IV. Este método é às vezes referido como um "IV baseado em hash".

Outro método para gerar um IV é o uso de um algoritmo determinístico. Este método é tipicamente usado quando a IV não precisa ser secreta (ou seja, não precisa ser mantida em segredo de um atacante). Um exemplo comum de algoritmo de geração de IV determinística é a utilização de um contador; por exemplo, o primeiro bloco de dados pode ser encriptado com um IV de 0, o segundo bloco com um IV de 1, e assim por diante. O IV deve ser diferente? A resposta a esta pergunta depende do que você está tentando fazer com o seu IV. Se você está simplesmente tentando criar um identificador único para cada usuário, então provavelmente não é necessário fazer com que o IV seja diferente. No entanto, se você está tentando criptografar dados para que eles só possam ser descriptografados por alguém com o IV correto, então é importante fazer o IV diferente para cada usuário.

O que é a chave do IV?

Na criptografia, um IV ou Vector de Inicialização é uma entrada de tamanho fixo para um primitivo criptográfico que normalmente é necessário ser aleatório ou pseudorandométrico. Os IVs são importantes porque a segurança de alguns primitivos criptográficos depende inteiramente de o IV ser imprevisível; por exemplo, o modo de funcionamento do CBC para cifras de bloco é inseguro se o IV for reutilizado ou não for aleatório.

Em alguns casos, a IV é especificada como parte do algoritmo criptográfico; em outros, é escolhida independentemente pela implementação. Neste último caso, é importante que a IV seja gerada de uma forma imprevisível para um atacante, para que ele não seja capaz de montar um ataque de texto escolhido.