Al momento, mi occupo di PyNaCl ( Documenti ) e ho una domanda al riguardo:
La mia situazione è che voglio creare un server che interagisca con i clienti. Sia il server che il client avranno una chiave privata a lungo termine / keypair.
Quindi, la situazione sarà che il client invierà una richiesta crittografata al server e il server la decrittografa.
Il processo di crittografia (da parte del client) è relativamente semplice:
encrypted = client_box.encrypt(message, nonce)
E il server può decrittografarlo in questo modo (i Documenti dicono):
plaintext = server_box.decrypt(encrypted)
Ora alla domanda:
Per la crittografia viene utilizzato un nonce a 24 byte per una maggiore sicurezza. Ma cosa non capisco: il server deve conoscere anche questo nonce a 24 byte? In Docs la decrittazione viene eseguita senza un nonce sembra.
Ma i documenti dicono che posso anche usare un nonce per la decrittazione ( link ) in modo che appaia in questo modo:
plaintext = server_box.decrypt(encrypted, nonce)
Ma nell'esempio nei documenti non usano il nonce nel processo di decodifica.
Può, per favore, qualcuno mi spiega quando devo usare il nonce e quale nonce devo usare allora?