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 puede garantizar que los hash antiguos no se vuelvan a utilizar en lo que se denominan ataques de repetición.
En una línea, 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 utilice una sola vez. Por lo tanto, se le debe agregar 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 existencia 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 requiere 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ía como resultado un hash correcto.