Sto tentando un flusso di lavoro per esemplificare il processo di firma digitale utilizzando la crittografia asimmetrica.
Se ho capito bene, la chiave pubblica e la chiave privata in una coppia di chiavi crittografiche asimmetriche sono funzioni inverse. Ergo, se la chiave privata è la funzione F, la chiave pubblica è G = F ^ (- 1), e F (G (x)) = x.
Se ho capito bene, una e-mail con firma digitale è composta da: a) un messaggio in chiaro, chiamiamolo M; b) un testo cifrato, chiamiamolo C.
Supponiamo che H sia una funzione di hash pubblicamente nota, come ad esempio sha1.
Quando invii un'email con firma digitale, desidero innanzitutto cancellare il messaggio in chiaro originale: H (M) = M '. Quindi vorrei scramble-up il valore di hash utilizzando la mia chiave privata: F (M ') = C.
Ora quando invio l'e-mail includo sia M che C. Se l'integrità dell'email firmata digitalmente non è stata compromessa, il destinatario troverà che G (C) = H (M).
La mia domanda non riguarda la teoria sottostante, perché penso di averlo capito abbastanza bene. (Se ciò che ho descritto sopra non è corretto, per favore dimmelo.) Infatti, la mia domanda riguarda l'implementazione e la verifica manuale del flusso di lavoro. Quali programmi \ comandi sono disponibili per implementare ogni passo che è stato descritto sopra? Ho soddisfatto il seguente comando alla riga di comando linux per richiamare la funzione di hash sha1:
echo -n "hello world" | sha1sum | awk '{print $1}'
Ho bisogno di un comando per trasformare del testo usando la funzione che è la mia chiave privata. E ho bisogno di un comando per trasformare del testo usando la funzione che è la mia chiave pubblica. Preferisco qualcosa che mi consenta di verificare manualmente ogni fase del processo.
Modifica So che uno strumento predefinito come gpg è un modo più pratico per fare le firme digitali in un caso d'uso reale. Il mio obiettivo è avere un flusso di lavoro alternativo che generi gli stessi risultati di gpg. È importante essere in grado di convalidare a croce il processo. Inoltre, vorrei essere in grado di insegnare qualche ipotetico sottotipo sulle firme digitali, e per farlo voglio essere in grado di suddividere il processo in una serie di passi ben compresi. E poiché lo scopo principale è quello di fare una validazione incrociata, e non di autenticare realmente \ non ripudiare alcune importanti comunicazioni, quindi le debolezze intrinseche di questo approccio non mi riguardano.