Mi piace memorizzare alcune configurazioni ma le crittograferei con il codice Serpent. È sicuro farlo? Quando no, qual è la soluzione migliore?
Mi piace memorizzare alcune configurazioni ma le crittograferei con il codice Serpent. È sicuro farlo? Quando no, qual è la soluzione migliore?
Non si crea una chiave con una funzione hash. Crei una chiave con casualità . Oppure, potresti derivare una chiave da un altro valore segreto, utilizzando una funzione di derivazione chiave .
Un algoritmo di crittografia simmetrica viene normalmente definito per accettare "chiavi binarie": qualsiasi sequenza di bit di alcune dimensioni specifiche è accettabile come valore chiave. Quando un algoritmo di crittografia accetta una chiave binaria, è possibile utilizzare qualsiasi KDF sicuro che emetta sequenze di bit così imparziali per produrre la chiave.
I sospetto che stai provando a fare crittografia basata su password : per ricavare una chiave da una password , e quindi utilizzare la chiave con un algoritmo di crittografia simmetrica. Se questo è il caso, allora fai un favore a te stesso: usa un protocollo / formato esistente, non provare a progettarne uno da solo. Queste cose sono sottili . Nessuno sa davvero come creare un protocollo sicuro dal primo tentativo, o almeno assicurarsi che ciò che hanno progettato sia sicuro (non può essere testato). Quindi la cosa intelligente da fare è usare qualcosa che è già stato progettato e pesantemente rivisto da molte altre persone. Suggerisco OpenPGP .
Ancora meglio, se usi un formato standard, allora potresti sperare di usare una libreria già esistente che fa tutto il lavoro per te. Accade così che scrivere una implementazione sicura, anche a partire da un protocollo standard, sia anche molto difficile. Il codice che è più facile da scrivere correttamente è il codice che è già stato scritto correttamente. Nel caso di OpenPGP, questo rimanda a GnuPG . Oppure BouncyCastle se lavori con Java.
Leggi altre domande sui tag cryptography passwords hash