El ‘number that can be only used once’, (número que solo puede usarse una vez) también conocido como nonce, es un número arbitrario que se emplea en criptografía dentro de los denominados protocolos de autenticación.
En una red blockchain basada en Proof of Work (Prueba de Trabajo) el nonce funciona en combinación con el hash como un elemento de control para evitar la manipulación de la información de los bloques.
Este número aleatorio garantiza que los hash antiguos no se pueden volver a utilizar en lo que se denominan ataques de repetición.
Un nonce en criptografía es:
Un número aleatorio usado una sola vez destinado a la autenticación de transferencia de datos entre dos o más partes.
Normalmente el nonce implementa también un timestamp o marca de tiempo.
Se podría añadir también un cliente nonce o ‘cnonce’, lo cual permitirá mejorar la seguridad implementando la autenticación de acceso.
Se debe garantizar que el nonce se utiliza una sola vez. Por lo tanto, se le debe añadir una variante de tiempo que impida la repetición. Para garantizar eso también se puede generar de forma aleatoria, un número suficiente de bits que reduzca esta probabilidad.
Esto añade seguridad y provoca que cualquier cambio dentro del bloque, sea cual sea, se convierta en imposible. Esto gracias a que la alteración de cualquier elemento dentro de un bloque altera todo el hash y toda la estructura del bloque.
El cálculo del nonce se realiza de manera forzada, o lo que es lo mismo: se requieren de grandes cantidades de recursos de cómputo y también de tiempo, por lo que conseguir este valor se necesita realizar una prueba de trabajo o PoW.
Es imposible predecir la combinación de bits, que normalmente es de 32 bits y que dará como resultado un hash correcto.