Come funzionano gli algoritmi di firma digitale in un ambiente chiave privato / pubblico?

0

Dalla pagina di Wikipedia sull'argomento , ottengo, a livello teorico, come il processo di crittografia e decifrare un messaggio funziona. L'articolo afferma che:

In a public-key encryption system, any person can encrypt a message using the public key of the receiver, but such a message can be decrypted only with the receiver's private key.

Finora, tutto bene. In termini molto semplicistici, potrei avere il mio privato che è 123 e usare il suo hash md5 ( 202cb962ac59075b964b07152d234b70 ) come chiave pubblica. Quindi, posso sempre rigenerare la chiave pubblica conoscendo la chiave privata, ma non viceversa. Quindi, parlando di firmare un messaggio, è scritto che

Message authentication involves hashing the message to produce a "digest," and encrypting the digest with the private key to produce a digital signature. Thereafter anyone can verify this signature by (1) computing the hash of the message, (2) decrypting the signature with the signer's public key, and (3) comparing the computed digest with the decrypted digest

La parte che non ottengo è decrypting the signature with the signer's public key . Non è indicato nella prima parte che solo una chiave privata può decifrare un messaggio?

Per quanto ho capito, il tipo di algoritmo usato qui è qualcosa di diverso dal "md5 hash" che ho proposto in precedenza perché è possibile decodificare un messaggio crittografato con la chiave pubblica conoscendo la chiave privata e decifrando un messaggio crittografato con il chiave privata conoscendo la chiave pubblica.

Come funzionano questi algoritmi?

    
posta pistacchio 10.06.2016 - 13:44
fonte

2 risposte

3

In un algoritmo asimmetrico hai due chiavi. Li chiamiamo A e B. Qualunque sia la tua crittografia con A, devi decifrare con B. Qualunque cosa tu cripthi con B, devi decifrare con A. (Questo è vero per non tutti, ma per la maggior parte degli algoritmi asimmetrici. implementazioni è un po 'più complicato, vedi il commento di techrafs.)

Una di queste chiavi viene scelta come privata e mantenuta segreta. L'altro è scelto per essere pubblico e può essere distribuito.

Quando viene firmato un messaggio, il digest viene crittografato con la chiave privata . Pertanto deve essere decodificato con la chiave pubblica. Il fatto che sia stato crittografato con la chiave privata dimostra l'identità della persona che lo firma, poiché solo lei dovrebbe avere la chiave privata. Il fatto che possa essere decodificato con la chiave pubblica rende la firma utile, dal momento che chiunque può verificarlo.

Si noti che il nostro sistema in cui l'hash MD5 della chiave privata è la chiave pubblica non funzionerebbe. Come decifreresti un messaggio crittografato con la chiave privata se hai solo l'hash MD5 della chiave privata? Se vuoi capire come viene effettivamente fatto, dai un'occhiata a RSA .

    
risposta data 10.06.2016 - 13:51
fonte
1

Gli algoritmi asimmetrici sono progettati per avere una coppia di chiavi: la chiave pubblica , che è diffusa a chiunque , e la chiave privata , che viene mantenuto dall'individuo o dal sistema che ha generato la coppia di chiavi. I tasti sono speciali in quanto SOLO la chiave privata può decodificare i messaggi crittografati con la chiave pubblica e solo la chiave pubblica può decodificare i messaggi crittografati con la chiave privata .

Per qualsiasi due persone che desiderano comunicare in modo sicuro, ciascuna dovrà generare la propria coppia di chiavi PROPRIE e condividere le chiavi pubbliche tra loro. Quindi quando comunicano, sembra qualcosa del genere:

Ognimittentedelmessaggionell'esempioprecedenteutilizzalachiavepubblicadiAlicepercrittografareeinviaremessaggiadAlice.Aliceusalasuachiaveprivataperdecodificareimessaggievederecosasono.SeAlicevuolerisponderealoro,puòusarelasuachiaveprivatapercrittografarla(maCHIUNQUEconlasuachiavepubblicapotrebbedecrittografarla),ousarelapubblica,perdireMaria,perinviareunmessaggioaMaria.QuindisoloMarypotevadecifrarequelmessaggioconlasuachiaveprivata.

Riguardoanon-ripudio(ilmittentenonpuònegarechehannoinviatoilmessaggio)eintegritàdeidati(provacheilmessaggiononèstatomodificato),ilprocessofunzionacomequesto:

1)Marydesiderainviareunmessaggioe"firmarlo" provando che proviene da lei.

2) Mary inserisce il messaggio, (producendo il messaggio digest e lo crittografa con la sua chiave privata .

3) Mary può quindi inviare il messaggio, insieme al digest del messaggio crittografato come firma

Chiunque desideri verificare il messaggio, segue questo processo:

1) Prendi il messaggio e cancellalo usando lo stesso algoritmo usato da Mary per generare il digest del messaggio

2) Decifra il digest del messaggio fornito con il messaggio utilizzando la chiave pubblica di Mary

3) Confronta i due valori hash, se sono identici, allora sai che il messaggio era inalterato (verificando che sia integrity ,) e hai dimostrato che il messaggio proveniva anche da Mary ( non-ripudio , perché il digest del messaggio poteva essere decrittografato correttamente usando la chiave pubblica di Mary, il che significava che HAD era stato crittografato con Mary < em> private , e solo Mary dovrebbe avere quella chiave.

Per quanto riguarda il modo in cui l'algoritmo a chiave condivisa produce il segreto condiviso, guarderei Diffe-Hellman, link

    
risposta data 10.06.2016 - 17:18
fonte

Leggi altre domande sui tag