Quello di cui si sta parlando assomiglia molto molto a un'altra implementazione di un Algoritmo di crittografia asimmetrico trovato nel framework .Net.
. Net utilizza due rami per la crittografia asimmetrica !!!
- RSA ** Papà Grand Mac utilizzato per tutti gli scopi asimmetrici.
- DSA ** più relativo all'utilizzo e alla creazione di firma digitale per verificare un autore.
Entrambi sono astratta
Entrambi sono molto simili tra loro su come funzionano e come uno sviluppatore li implementa ma sotto sotto ho letto che esistono due algoritmi molto diversi.
Si sta parlando l'opzione 2.
NET fornisce una classe chiamata DSACryptoServiceProvider che permette di contrassegnare i dati con un valore che viene comunemente indicato come firma.
Secondo un manuale scolastico ufficiale di MS, è più o meno come funziona.
>>> dati Hash Hash Alg >>> Valore >>>>>>>>> ASYMM' Alg >>>> Firma PVT.KEY mittente >>>
Qui di seguito mostra come Bob può controllare per vedere se Alice è davvero il mittente.
Dati >>> Hash Alg >>> Valore hash || Firma decifrati < < < PUB.KEY ASYMM' Alg < < < Firma < < < mittente ? ==?
Come si può vedere, Bob deve confrontare l'Hash generato e la Firma decrittografata per verificare che Alice sia il mittente. La classe DSACrypto 'ha 4 metodi che possono essere usati qui ma solo due sono efficaci dal punto di vista contestuale. A questo punto nel tempo, questo è tutto ciò che Bob può fare, se la sua chiave pubblica non è la chiave pubblica di Alice, in sostanza l'applicazione software dovrebbe impedire a Bob di continuare a procedere mentre Bob sta cercando di usare una chiave pubblica falsa quando cercando di comunicare con Alice. Questa è la relazione imposta e l'importanza sottolineata della chiave pubblica. La firma consente di verificare il proprietario delle chiavi pubbliche.
Ecco perché? ::
Se Bob ha la chiave pubblica di Alice, può utilizzare nuovamente lo stesso algoritmo per decrittografare i dati crittografati utilizzando i metodi .VerifyHash o VerifyData. Dovrebbe essere semplice ciò che fanno dato questo contesto. Questo è tutto fatto usando la chiave pubblica di Alice. Solo Alice può utilizzare i metodi SignHash e SignData poiché richiedono la chiave privata di Alice.
Come si può vedere sopra, un certo livello di funzionalità è incapsulato già nelle classi DSA e RSA CryptoServiceProvider. Si riduce a quanto bene li si implementa per verificare ogni volta che Alice è il mittente in quanto l'algoritmo DSA consente di certificare un mittente facendo corrispondere l'output generato. Una determinata firma e hash devono corrispondere, se lo fanno, in sostanza DSA ti ha concesso un certo livello di riservatezza tra Bob e Alice.
Quindi è necessario verificare TUTTI i byte della chiave pubblica? C'è una parte specifica della chiave che puoi guardare per assicurarti che sia reale tra di voi? L'impronta digitale è sufficiente per combaciare? – tbarbe
No, si utilizza la chiave pubblica per decrittografare l'hash del messaggio (la firma), quindi cancellare il messaggio come destinatario. Se gli hash corrispondono, allora sai che è stato inviato da Alice. http://en.wikipedia.org/wiki/Digital_signature – Nathan
Ah sì ... md5 o SHA-1 - sì? Quindi, una volta che il certificato arriva alla destinazione, il modo per verificarlo è quello di confrontare md5 e SHA-1 .... i certs che ho - mostra entrambi questi ...e immagino che questo sia ciò che sto leggendo sul tema "paragonarli fuori dalla band" - cioè non farlo su un set insicuro? – tbarbe