Comprendo che una funzione di hash crittografica è una funzione che genera una stringa casuale a dimensione fissa per un input arbitrario.
Tuttavia, è possibile utilizzare una funzione di hash crittografica per la firma digitale?
Is it possible to use a cryptographic hash function for digital signature?
Non è possibile utilizzare una funzione di hash come firma , ma si utilizza già una funzione di hash crittografica come parte della procedura per una firma digitale.
Per prima cosa, citiamo alcuni motivi comuni per l'applicazione di una firma digitale alle comunicazioni:
Se un messaggio è firmato digitalmente, qualsiasi modifica nel messaggio dopo la firma invalida la firma. Inoltre, non esiste un modo efficace per modificare un messaggio e la sua firma per produrre un nuovo messaggio con una firma valida, poiché questo è ancora considerato computazionalmente impossibile dalla maggior parte delle funzioni hash crittografiche (vedere resistenza alle collisioni ).
Una funzione di hash crittografica è un algoritmo che prende una quantità arbitraria di dati immessi - una credenziale - e produce un output a dimensione fissa di testo cifrato chiamato valore hash o semplicemente "hash". Il testo cifrato può quindi essere memorizzato invece della password stessa, e in seguito utilizzata per verificare l'utente. source
I understand that a cryptographic hash function is a function that generates a fixed size random string for an arbitrary input.
No; Le funzioni di hash non generano una stringa casuale. Sono funzioni deterministiche a senso unico. L'output può sembrare casuale, ma non lo è.
Ogni funzione hash ha collisioni che due messaggi diversi1 and
m2 can have same hash value
h (m1) = h (m2) and
m1! = m2 '. Possiamo vedere questo dal principio del piccione.
However, is it possible to use a cryptographic hash function for digital signature?
No;
Il tuo segno è unico per te quando firmi un documento cartaceo, controlli, ecc., più tardi gli esperti di firme possono decidere che questa è la tua firma o meno.
Allo stesso modo, una firma digitale è unica per te. Firmi digitalmente un documento con la tua chiave privata in modo che altri possano verificare la tua firma digitale utilizzando la tua chiave pubblica.
Lascia che tu abbia cancellato un file e distribuito come documento firmato da te. Vuoi affermare che sei il firmatario. Metti il file nella funzione di hash nota e genera l'hash. Chiunque, inoltre, può utilizzare questo documento e calcolare l'hash per rivendicare la proprietà o rivendicare la proprietà. Non esiste l'autenticazione .
Lasciato, ho cancellato un documento e ho affermato di aver firmato (hash) questo documento. Puoi mostrarmi che non sei il firmatario? Non puoi ripudiare .
Dal mio punto di vista, una funzione di hash crittografica è una funzione che, dato un input di byte, genera un dato di firma hash. Queste funzioni sono in generale le ben note sha1, sha256, blake2s e così via. Questo hash in generale verifica l'integrità dei dati, ad esempio
>>> hashlib.sha256("Good morning").hexdigest()
'90a90a48e23dcc51ad4a821a301e3440ffeb5e986bd69d7bf347a2ba2da23bd3'
quindi se cambi un byte sulla sorgente l'hash generato cambierà completamente
>>> hashlib.sha256("G0od morning").hexdigest()
'0057a9d2c5921a6a092d172167fa2874dcdf5d3d866667eba5502b7fa20c6fd3'
Questo può essere usato per molte cose, come l'integrità dei dati, la generazione di firme digitali e molti altri.
Quindi quando generi una "firma digitale" probabilmente è una combinazione di hash + crittografare alcuni dati e pubblico e amp; tecniche chiave privata.
Spero che ti aiuti ma la domanda non è affatto chiara
Leggi altre domande sui tag cryptography digital-signature hash