En este momento, trato con PyNaCl ( Docs ) y tengo una pregunta al respecto:
Mi situación es que quiero crear un servidor que interactúe con los clientes. Tanto el servidor como el cliente tendrán una clave / par clave privada a largo plazo.
Por lo tanto, la situación será que el cliente enviará una solicitud cifrada al servidor y que el servidor la descifre.
El proceso de cifrado (por parte del cliente) es relativamente fácil:
encrypted = client_box.encrypt(message, nonce)
Y el servidor puede descifrarlo de esta manera (dicen los documentos):
plaintext = server_box.decrypt(encrypted)
Ahora a la pregunta:
Para el cifrado, se utiliza un código de 24 bytes para una mejor seguridad. Pero lo que no entiendo: ¿el servidor también tiene que conocer esta fuente de 24 bytes? En los documentos, el descifrado se realiza sin que parezca un error.
Pero los Docs dicen que también puedo usar un nonce para descifrado ( link ) para que se vea de esta manera:
plaintext = server_box.decrypt(encrypted, nonce)
Pero en el ejemplo en los documentos no usan el nonce en el proceso de descifrado.
¿Puede, por favor, que alguien me explique cuándo debo usar el nonce y qué nonce debo usar entonces?