Segurança do modo contador AES vs. modo CBC

Evgeni Vaknin 09/05/2017. 1 answers, 401 views
aes cbc ctr nonce

Para que o AES-CBC seja CPA seguro, o IV utilizado deve ser selecionado aleatoriamente para cada pacote. Se o IV é previsível do que a criptografia não é seguro por CPA. É a mesma verdade para o modo AES-CTR? ou seja, para o modo AES-CTR, o primeiro contador deve ser aleatório ou pode ser um nonce? obrigado

1 Answers


Patrick K 07/31/2017.

O requisito para os blocos de entrada do AES-CTR é que eles devem ser unique durante a vida útil de uma chave. Na maioria dos casos, um nonce aleatório de 96 bits é usado com um contador de 32 bits que começa a partir de 0. Se o mesmo bloco de entrada para AES-CTR ocorrer duas vezes, o AES-CTR não é mais seguro para CPA. Neste caso, isto pode ser devido a um contrafluxo depois de $ 2 ^ {32} $ blocos ou devido à colisão de nonces de 96bit escolhidos aleatoriamente (paradoxo de aniversário: 50% de chance após mensagens de $ \ sqrt {2 ^ {96}} $). Considere o seguinte caso:

Duas mensagens distintas de 1 bloco $ P $ e $ P '$ são enviadas sob a mesma chave $ K $ (que pode ser negociado antecipadamente) e com o mesmo nonce $ N $. O invasor sabe que os textos cifrados relacionados $ C $ e $ C '$ foram calculados por XORing-los com o keystream (que é baseado no nonce e no contador):

$ C = P \ oplus E_K (N, 0) $

$ C '= P' \ oplus E_K (N, 0) $

Então o atacante pode simplesmente xorar os textos cifrados

$ C \ oplus C '= P \ oplus E_K (N, 0) \ oplus P' \ oplus E_K (N, 0) = P \ oplus P '$

e ele obtém a "distância" entre os dois textos simples. Devido a redundâncias no idioma inglês, ele pode ser capaz de determinar $ P $ e $ P '$.

Esse problema também é conhecido como "two-time-pad". Uma vez que o mesmo keystream é XORed com o texto simples, nos metemos em problemas. Portanto, é importante que a entrada para a criptografia AES seja exclusiva durante a vida útil de uma chave. Não precisa ser imprevisível, apenas exclusivo.

5 comments
Evgeni Vaknin 07/31/2017
pela declaração "2 ^ 32 mensagens" eu acho que você quer dizer 2 ^ 32 blocos de 16 bytes cada no AES? em caso afirmativo, de 2 ^ 32 blocos de tempo é de 2 ^ 32 * 128 bits, que está em 10Gbps, cerca de 1 minuto ... então a cada 1 minuto um algoritmo de troca de chave tem que ser executado para configurar uma nova chave e nonce ?
1 Patrick K 07/31/2017
Sim, você está certo. Eu editei a resposta. Se você tem um nonce estático, então você precisaria fazer uma troca de chaves a cada minuto neste caso. Mas como o nonce é geralmente alterado em cada mensagem, você está limitado a mensagens com um tamanho máximo de $ 2 ^ {32} \ cdot128 $ bits. O número máximo de mensagens que podem ser enviadas sob uma determinada chave é limitado pelo paradoxo de aniversário. Se o nonce de 96 bits for escolhido aleatoriamente de maneira uniforme para cada mensagem, a probabilidade de uma colisão nonce é de $ \ approx 0.5q ^ 2/2 ^ {96} $ para q mensagens. Se você quiser que este termo seja no máximo 1%, seu $ q_ {max} = 4 \ cdot10 ^ {13} $.
Evgeni Vaknin 07/31/2017
O que acontece se eu não usar o nonce aleatório, em vez disso, eu uso um valor aleatório para o valor inicial nonce e incremento cada pacote? Por exemplo, digamos que cada pacote contém menos de 256 blocos AES (128 bits cada), e o contador para o AES-CTR é composto de nonce de 120 bits, inicializado aleatoriamente quando a chave é trocada, e que dentro do pacote de 8 bits contador é usado para contar os blocos de 128 bits. E cada novo pacote, (continue no próximo comentário)
Evgeni Vaknin 07/31/2017
Eu incremento o nonce por 1 e limpe o contador de 8 bits. Nesse caso, o paradoxo do aniversário não é relevante, pois a colisão é impossível (supondo que eu esteja substituindo a chave antes que o contador de 120 bits do nonce tenha expirado)
1 Patrick K 08/01/2017
Sim, se você de alguma forma se certificar de nunca reutilizar o mesmo par (bloco de entrada, chave) para a geração de keystream, então está tudo bem. (claro que assumindo que a chave é mantida em segredo e é escolhida uniformemente de forma aleatória)

Related questions

Hot questions

Language

Popular Tags