¿Qué es un nonce?

Autor: | Última modificación: 4 de agosto de 2022 | Tiempo de Lectura: 3 minutos

¿Sabes qué es un nonce y qué diferentes usos tiene en criptografía? En el desarrollo de sistemas criptográficos, es habitual el uso de ciertos números que se combinan con los datos originales con el fin de lograr una encriptación más segura. Hay diferentes tipos de números que se usan para estos propósitos y cada uno de ellos tiene propiedades específicas y diferentes. En este post, hablaremos sobre un tipo de número que se utiliza bastante en esquemas criptográficos y es conocido por formar parte de sistemas como los modos CTR, GMC e, incluso, bitcoin. A continuación, te explicaremos qué es un nonce.

¿Qué es un nonce?

Un número nonce es un valor aleatorio que se combina con una cadena de datos antes de ser ser sometida a una función de cifrado. El nonce se utiliza en sistemas como los modos de operación de cifrado CRT o GCM y también es famoso por ser una parte fundamental del esquema de bitcoin. Las principales propiedades de un nonce son que debe generarse de forma realmente aleatoria y que debe tener un tamaño específico, dado por los bloques del sistema utilizado.

Nonce en los modos CTR y GMC

Para entender qué es un nonce, es útil comprender cómo se utiliza este valor en los modos de cifrado por bloques CRT y GCM.

El modo de cifrado por bloques CRT o counter es un mecanismo que permite cifrar una serie de bloques, todos a la vez, de forma relativamente segura. CTR es vulnerable, pero existe una versión segura conocida como GCM o Galois/Counter mode. Para entender cómo funcionan ambos, explicaremos el modo CTR:

  1. Primero, se genera un número nonce, que debe ser totalmente aleatorio y tener la mitad del tamaño de cada bloque de datos.
  2. La otra mitad del bloque se rellena con un número llamado «contador», que crece progresivamente de acuerdo con cada bloque, comenzando desde «00000000», hasta llegar a «99999999», suponiendo que se trata de un bloque de 16 bytes.
  3. La combinación del nonce con el contador es el bloque que se encripta con el algoritmo de cifrado AES.
  4. Finalmente, al resultado del paso anterior se le ejecuta una operación XOR con el bloque de texto plano original del mensaje, lo que produce el bloque de texto cifrado final.

Qué es un nonce en bitcoin

Ahora sabes qué es un nonce y cómo funciona dentro del modo cifrado CTR y GCM (que es una versión de CTR, pero con protocolos de autenticación HMAC). A continuación, hablaremos brevemente sobre qué papel cumplen los números nonce dentro del funcionamiento del bitcoin.

Para entender cómo se utiliza el nonce en bitcoin, es necesario repasar el concepto de proof of work (PoW) o prueba de trabajo, que se refiere a un mecanismo para incentivar a los mineros a verificar transacciones de forma honesta. Además, es un método que impide por completo que hagan lo contrario.

Para garantizar esto, la función de los mineros es generar un número aleatorio nonce que, al combinarse con la cadena de datos de una transacción, produzca una función criptográfica hash que comience con cinco ceros. De este modo, la prueba de trabajo es el gasto computacional que hace el minero a cambio de una recompensa.

🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴

Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en Ciberseguridad por una semana

Así, gracias al uso inteligente de un nonce, sería inútil gastar dinero y energía en encontrar códigos para verificar transacciones falsas. En realidad, es mucho mejor gastar dichos recursos en encontrar números aleatorios que verdaderamente autentifiquen cada transacción.

¿Cómo aprender más?

Ahora sabes qué es un nonce y cómo se utiliza en diferentes escenarios de la criptografía, puedes aprender más y convertirte en un experto en ciberseguridad con nuestro Ciberseguridad Full Stack Bootcamp. ¡Inscríbete ya y especialízate en hacking ético, criptografía y mucho más en pocos meses!

[email protected]

¿Trabajo? Aprende a programar y consíguelo.

¡No te pierdas la próxima edición del Aprende a Programar desde Cero Full Stack Jr. Bootcamp!

 

Prepárate en 4 meses, aprende las últimas tecnologías y consigue trabajo desde ya. 

 

Solo en España hay más de 120.400 puestos tech sin cubrir, y con un sueldo 11.000€ por encima de la media nacional. ¡Es tu momento!

 

🗓️ Próxima edición: 13 de febrero

 

Reserva tu plaza descubre las becas disponibles.