|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2001
Città: Trento
Messaggi: 164
|
hash e firme digitali: mi spiegate una cosa grazie
Mi hanno appena affibbiato un progetto in cui devo calcolare l'hash-function di un frame (utilizzando SHA-256) e poi il message-digest ottenuto dovrebbe essere 'firmato' attraverso un algoritmo di crittografia asimmetrica (RSA).
Ora, in teoria, non dovrei inviare nulla di extra nel frame, o sbaglio?!?! Oppure devo inviare anche la chiave pubblica e il messaggio digest al destinario? Per semplicità, almeno in un primo step, avrei pensato di aver già la chiave pubblica in un file nel destinario (senza dover chiedere/inviare certificati o cose simili): cosi' almeno posso verificare che riesco a decriptare (utilizzando la mia chiave privata sul destinatario) il messaggio e ad 'un-hasharlo' per vedere se non è stato modificato e, se proviene dal giusto mittente. Grazie
__________________
Great Minds Think Alike |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9454
|
Non ho capito bene cosa tu voglia sapere di preciso.
Generalmente, cmq., cio' che si fa dovrebbe essere quello di calcolare il digest tramite una funzione hash calcolata sul messaggio da spedire e quindi cifrare messaggio e digest tramite la chiave privata. Il messaggio sara' quindi decifrato dal destinatario tramite la chiave pubblica. Calcolera' quindi anch'egli l'hash sul messaggio e confrontera' il digest ottenuto con quello inviatogli per poter cosi' sapere se il messaggio e' effettivamente integro.
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C. |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Oct 2001
Città: Trento
Messaggi: 164
|
Quindi se ho a disposizione sul destinatario la stessa funzione di hash e la chiave pubblica non serve che invii nient'altro oltre ai campi del mio frame, o sbaglio?
__________________
Great Minds Think Alike |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Dec 2007
Messaggi: 121
|
a dire il vero è la chiave privata che serve a decriptare il file, la chiave pubblica la usi tu per criptarlo.
il destinatario dovrà ricevere in qualche modo la chiave privata (esempio stupido: tramite dischetto) e poi il file che avrai criptato per mezzo della chiave pubblica e di quella privata. 2 chiavi in criptazione, 1 in decriptazione, per questo si chiama asimmetrica. |
![]() |
![]() |
![]() |
#5 | |
Member
Iscritto dal: Oct 2001
Città: Trento
Messaggi: 164
|
Quote:
Ho scoperto che devo inserire anche l'hash criptato nel frame che devo trasmettere, usando delle particolare estensioni. In questo modo, dopo averlo descriptato e dopo aver calcolato l'hash, il destinatario puo' verificare che il frame non sia 'corrotto' facendo semplicemente un confronto.
__________________
Great Minds Think Alike |
|
![]() |
![]() |
![]() |
#6 | |
Member
Iscritto dal: Jul 2008
Città: Nel mio studio
Messaggi: 168
|
Quote:
![]() Con un esempio ti sarà più chiaro perché si dice asimmetrica: tu sei l'utente A e vuoi inviare un messaggio a B in modo che solo lui possa leggerlo. L'utente A usa la chiave pubblica di B per criptare il messaggio e poi glielo spedisce. A questo punto l'utente B usa la sua chiave privata per decifrare il messaggio (la chiave privata deve rimanere tale, cioè non va data a nessuno, ne tanto meno spedita) Il sistema si dice asimmetrico perché le due chiavi benché diverse si complementano l'un l'altra, cioè una cosa criptata con una viene decifrata con l'altra e viceversa. inoltre visto che l'operazione è molto onerosa, di solito il messaggio vero e proprio è criptato utilizzando un algoritmo simmetrico, e la shared key viene inviata dal mittente al destinatario utilizzando il sistema asimmetrico. Se poi si vuole parlare di integrità, autenticità, segretezza per ognuna di queste proprietà si agisce con tecniche diverse.
__________________
Since Rocco Siffredi, the saying "pain in the ass" got a total new meaning |
|
![]() |
![]() |
![]() |
#7 | |
Member
Iscritto dal: Dec 2007
Messaggi: 121
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#8 | |
Member
Iscritto dal: Oct 2001
Città: Trento
Messaggi: 164
|
Quote:
Mi interessa verificare la sorgente del messaggio e analizzare le performance.
__________________
Great Minds Think Alike |
|
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Jul 2008
Città: Nel mio studio
Messaggi: 168
|
allora basta un digest criptato con la chiave privata del mittente, il destinatario per verificare l'integrità del messaggio e la sua autenticità eseguirà a sua volta il digest del messaggio. A questo punto lo confronterà con quello ricevuto dopo averlo decifrato con la chiave pubblica (certificata dall'authority di turno) del mittente.
__________________
Since Rocco Siffredi, the saying "pain in the ass" got a total new meaning |
![]() |
![]() |
![]() |
#10 | |
Member
Iscritto dal: Oct 2001
Città: Trento
Messaggi: 164
|
Quote:
![]() Il frame presenta un reserved tag in cui è possibile indicare in numero di ottetti presenti nell'area estensioni. Il formato delle estensioni è il seguente: Extension::={ [0] IMPLICIT SEQUENCE { [1] ... [2] ... [3] IMPLICIT DigestCifrato OPTIONAL ... } } codificate secondo una sintassi BER (basic encoding rules). Qualcuno sa come funziona la cosa a livello pratico? Nel senso di come effettivamente inserisco il digest cifrato nel frame? O puo' indicarmi una guida, un libro o un tutorial? Io sto programmando in VS C++. Grazie
__________________
Great Minds Think Alike |
|
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: Jul 2008
Città: Nel mio studio
Messaggi: 168
|
io mi sono fermato alla teoria
![]()
__________________
Since Rocco Siffredi, the saying "pain in the ass" got a total new meaning |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:04.