Nonce criptográfico - Cryptographic nonce

Comunicação cliente-servidor típica durante um processo de autenticação baseado em nonce , incluindo um nonce de servidor e um nonce de cliente

Na criptografia , um nonce ( número uma vez ) é um número arbitrário que pode ser usado apenas uma vez em uma comunicação criptográfica. Freqüentemente, é um número aleatório ou pseudoaleatório emitido em um protocolo de autenticação para garantir que as comunicações antigas não possam ser reutilizadas em ataques de repetição . Eles também podem ser úteis como vetores de inicialização e em funções hash criptográficas .

Definição

Um nonce é um número arbitrário usado apenas uma vez em uma comunicação criptográfica, no espírito de uma palavra nonce . Freqüentemente, são números aleatórios ou pseudoaleatórios . Muitos nonces também incluem um carimbo de data / hora para garantir a pontualidade exata, embora isso exija a sincronização do relógio entre as organizações. A adição de um cliente nonce (" cnonce ") ajuda a melhorar a segurança de algumas maneiras, conforme implementado na autenticação de acesso digest . Para garantir que um nonce seja usado apenas uma vez, ele deve ser variante de tempo (incluindo um carimbo de data / hora adequadamente granulado em seu valor) ou gerado com bits aleatórios suficientes para garantir uma chance probabilisticamente insignificante de repetir um valor gerado anteriormente. Alguns autores definem a pseudo-aleatoriedade (ou imprevisibilidade) como um requisito para um nonce.

Uso

Autenticação

Os protocolos de autenticação podem usar nonces para garantir que as comunicações antigas não possam ser reutilizadas em ataques de repetição . Por exemplo, os nonces são usados ​​na autenticação de acesso HTTP digest para calcular um resumo MD5 da senha . Os nonces são diferentes cada vez que o código de resposta do desafio de autenticação 401 é apresentado, tornando os ataques de repetição virtualmente impossíveis. O cenário de pedidos de produtos pela Internet pode fornecer um exemplo da utilidade de nonces em ataques de reprodução. Um invasor pode pegar as informações criptografadas e - sem precisar descriptografar - pode continuar a enviar um pedido específico ao fornecedor, solicitando produtos repetidamente com o mesmo nome e informações de compra. O nonce é usado para dar 'originalidade' a uma determinada mensagem, de forma que se a empresa receber quaisquer outros pedidos da mesma pessoa com o mesmo nonce, ela os descartará como pedidos inválidos.

Um nonce pode ser usado para garantir a segurança de uma cifra de fluxo . Onde a mesma chave é usada para mais de uma mensagem e, em seguida, um nonce diferente é usado para garantir que o fluxo de chaves seja diferente para diferentes mensagens criptografadas com essa chave; freqüentemente o número da mensagem é usado.

Valores secretos de nonce são usados ​​pelo esquema de assinatura Lamport como um segredo do lado do signatário que pode ser revelado seletivamente para comparação com hashes públicos para criação e verificação de assinatura.

Vetores de inicialização

Os vetores de inicialização podem ser referidos como nonces, pois são tipicamente aleatórios ou pseudo-aleatórios.

Hashing

Nonces são usados ​​em sistemas de prova de trabalho para variar a entrada para uma função hash criptográfica de modo a obter um hash para uma determinada entrada que atenda a certas condições arbitrárias. Ao fazer isso, torna-se muito mais difícil criar um hash "desejável" do que verificá-lo, transferindo a carga de trabalho para um lado de uma transação ou sistema. Por exemplo, a prova de trabalho, usando funções de hash, foi considerada como um meio de combater o spam de e-mail , forçando os remetentes de e-mail a encontrar um valor de hash para o e-mail (que incluía um carimbo de data / hora para evitar o pré-cálculo de hashes úteis para uso posterior) que tinha um número arbitrário de zeros à esquerda, fazendo o hash da mesma entrada com um grande número de valores até que um hash "desejável" fosse obtido.

Da mesma forma, o algoritmo de hashing de blockchain de bitcoin pode ser ajustado para uma dificuldade arbitrária, alterando o valor mínimo / máximo necessário do hash de modo que o número de bitcoins concedidos para novos blocos não aumente linearmente com o aumento do poder de computação da rede à medida que novos usuários se juntam. Isso é obtido da mesma forma forçando os mineradores de bitcoin a adicionar valores nonce ao valor que está sendo hash para alterar a saída do algoritmo de hash. Como os algoritmos criptográficos de hash não podem ser facilmente previstos com base em suas entradas, isso torna o ato de hashing de blockchain e a possibilidade de ganhar bitcoins algo parecido com uma loteria, onde o primeiro "minerador" a encontrar um nonce que entrega um hash desejável é premiado com bitcoins .

Veja também

Referências

links externos

  • RFC  2617 - Autenticação HTTP: autenticação de acesso básica e resumida
  • RFC  3540 - Sinalização Robust Explicit Congestion Notification (ECN) com Nonces
  • RFC  4418 - UMAC: Código de autenticação de mensagem usando Hashing universal
  • Segurança de serviços da web