En criptografía , un nonce es un número arbitrario que se puede usar solo una vez en una comunicación criptográfica. Es similar en espíritu a una palabra nonce , de ahí el nombre. A menudo es un número aleatorio o pseudoaleatorio emitido en un protocolo de autenticación para garantizar que las comunicaciones antiguas no se puedan reutilizar en ataques de repetición . También pueden ser útiles como vectores de inicialización y en funciones hash criptográficas .
Definición
Un nonce es un número arbitrario que se usa solo una vez en una comunicación criptográfica, en el espíritu de una palabra nonce. A menudo son números aleatorios o pseudoaleatorios . Muchos nonces también incluyen una marca de tiempo para garantizar la puntualidad exacta, aunque esto requiere sincronización de reloj entre organizaciones. La adición de un cliente nonce (" cnonce ") ayuda a mejorar la seguridad de alguna manera, tal como se implementa en la autenticación de acceso implícito . Para asegurarse de que un nonce se use solo una vez, debe ser una variante en el tiempo (incluyendo una marca de tiempo adecuadamente detallada en su valor), o generada con suficientes bits aleatorios para asegurar una probabilidad probabilísticamente insignificante de repetir un valor generado previamente. Algunos autores definen la pseudoaleatoriedad (o imprevisibilidad) como un requisito para un nonce. [1]
Uso
Autenticación
Los protocolos de autenticación pueden utilizar nonces para garantizar que las comunicaciones antiguas no se puedan reutilizar en ataques de repetición . Por ejemplo, los nonces se utilizan en la autenticación de acceso de resumen HTTP para calcular un resumen MD5 de la contraseña . Los nonces son diferentes cada vez que se presenta el código de respuesta de desafío de autenticación 401 , lo que hace que los ataques de repetición sean prácticamente imposibles. El escenario de pedidos de productos a través de Internet puede proporcionar un ejemplo de la utilidad de los nonces en los ataques de reproducción. Un atacante podría tomar la información cifrada y, sin necesidad de descifrar, podría continuar enviando un pedido en particular al proveedor, ordenando productos una y otra vez con el mismo nombre e información de compra. El nonce se utiliza para dar "originalidad" a un mensaje dado, de modo que si la empresa recibe cualquier otro pedido de la misma persona con el mismo nonce, los descarte como pedidos inválidos.
Se puede usar un nonce para garantizar la seguridad de un cifrado de flujo . Cuando se usa la misma clave para más de un mensaje y luego se usa un nonce diferente para asegurar que el flujo de claves sea diferente para diferentes mensajes encriptados con esa clave; a menudo se utiliza el número de mensaje.
El esquema de firmas de Lamport utiliza valores de nonce secretos como un secreto del lado del firmante que puede ser revelado selectivamente para su comparación con hashes públicos para la creación y verificación de firmas.
Vectores de inicializacion
Los vectores de inicialización pueden denominarse nonces, ya que normalmente son aleatorios o pseudoaleatorios.
Hashing
Los nonces se utilizan en los sistemas de prueba de trabajo para variar la entrada a una función hash criptográfica a fin de obtener un hash para una determinada entrada que cumpla ciertas condiciones arbitrarias. Al hacerlo, se vuelve mucho más difícil crear un hash "deseable" que verificarlo, trasladando la carga del trabajo a un lado de una transacción o sistema. Por ejemplo, la prueba de trabajo, utilizando funciones hash, se consideró como un medio para combatir el spam de correo electrónico al obligar a los remitentes de correo electrónico a encontrar un valor hash para el correo electrónico (que incluía una marca de tiempo para evitar el cálculo previo de hashes útiles para su uso posterior) que tenía un número arbitrario de ceros a la izquierda, mediante el hash de la misma entrada con un gran número de valores hasta que se obtuvo un hash "deseable".
De manera similar, el algoritmo de hash de la cadena de bloques de bitcoin se puede ajustar a una dificultad arbitraria cambiando el valor mínimo / máximo requerido del hash para que la cantidad de bitcoins otorgados por nuevos bloques no aumente linealmente con un mayor poder de cálculo de la red a medida que se unen nuevos usuarios. Esto también se logra obligando a los mineros de bitcoin a agregar valores nonce al valor hash para cambiar la salida del algoritmo hash. Como los algoritmos de hash criptográficos no se pueden predecir fácilmente en función de sus entradas, esto hace que el acto del hash de blockchain y la posibilidad de recibir bitcoins sea una especie de lotería, donde el primer "minero" en encontrar un nonce que entregue un hash deseable recibe bitcoins. .
Ver también
Referencias
- ^ Rogaway, P. (2004). "Cifrado simétrico basado en Nonce" (PDF) . En Bimal Roy; Willi Meier (eds.). Cifrado de software rápido . Apuntes de conferencias en informática. 3017 . págs. 348–358. doi : 10.1007 / 978-3-540-25937-4_22 . ISBN 978-3-540-25937-4.