Quali sono le differenze tra MD5, SHA e RSA?

35

Gli strumenti MD5 emettono valori esadecimali. Allo stesso modo, SHA e RSA insieme producono un output esadecimale (o qualsiasi altro)?

Quali sono le differenze tra gli algoritmi MD5, SHA e RSA?

    
posta Kars 25.02.2011 - 15:46
fonte

2 risposte

54

Non è il tipo di output. L'esadecimale è proprio il modo in cui i dati sono formattati - poiché tutti lavorano su dati binari, l'esadecimale ha molto senso.

La parte importante è ciò che fanno e in che modo lo fanno:

  • MD5 e SHA sono funzioni hash (SHA è in realtà una famiglia di funzioni hash): prendono un pezzo di dati, lo compattano e creano un output adeguatamente unico che è molto difficile da emulare con un altro dato . Non crittografano nulla: non puoi prendere l'output MD5 o SHA e "non farlo" per tornare al punto di partenza. La differenza tra le due sta in quale algoritmo usano per creare l'hash. Si noti inoltre che MD5 è stato interrotto in quanto è stato scoperto un modo per generare facilmente collisioni e non dovrebbe essere più utilizzato né considerato attendibile.

  • RSA è un algoritmo di crittografia asimmetrico. Hai due chiavi (private e pubbliche) e puoi eseguire una funzione con una chiave (criptare o decodificare) e invertire con l'altra chiave. La chiave che utilizzi dipende dal fatto che tu stia tentando di eseguire una firma digitale o una crittografia.

risposta data 25.02.2011 - 16:13
fonte
30

MD5 è una funzione di hash crittografica . "SHA" è il nome di una famiglia di funzioni di hash; per prima cosa è stato definito un "SHA" di breve durata che è stato rinominato "SHA-0", quindi "SHA-1" (un best seller). Successivamente, sono stati aggiunti nuovi membri della famiglia, denominati collettivamente "SHA-2" e costituiti da SHA-224, SHA-256, SHA-384 e SHA-512. Recentemente, è stata progettata una nuova generazione SHA, denominata "SHA-3" ma anche "Keccak" (questa era una competizione aperta, Keccak era il nome in codice di uno dei candidati, che alla fine vinse).

Una funzione di hash crittografica è una funzione deterministica completamente definita che non utilizza alcuna chiave segreta. Prende come input un messaggio di lunghezza arbitraria (un flusso di bit, qualsiasi bit) e produce un output a dimensione fissa. Le dimensioni dell'output dipendono dalla funzione; è 128 bit per MD5, 160 bit per SHA-1, 256 bit per SHA-256 ... Ognuno può calcolare una data funzione hash su un dato input, e ottengono tutti gli stessi risultati. Le funzioni di hash vengono anche chiamate digest perché producono in qualche modo una sorta di "checksum" o "sommario" dell'input. Le robuste funzioni di hash devono essere tali che nessuno sappia come "invertirle" o persino trovare due input distinti che producono lo stesso output. Quest'ultimo è chiamato collisione ed è una necessità matematica che esistano collisioni (poiché la funzione può accettare molti più input distinti di quanto possa produrre output distinti), ma è necessario che non sia possibile trovare anche una collisione .

MD5 si è rivelato molto rotto per quanto riguarda le collisioni (possiamo produrre una collisione in pochi secondi di lavoro su un PC) e anche SHA-0 è rotto a tale riguardo; SHA-1 è un po 'instabile; il resto della famiglia SHA sembra essere robusto finora. Il modo in cui una funzione di hash raggiunge la resistenza di collisione è un po 'un miracolo poiché l'intera funzione è completamente nota, senza alcun valore segreto; semplicemente mescola i dati troppo per i migliori crittografi per svelare il processo.

RSA è costituito da due algoritmi: un crittografia asimmetrica e un firma digitale algoritmo . Sebbene entrambi gli algoritmi si basino sullo stesso tipo di matematica, sono piuttosto distinti (molte persone descrivono le firme come "crittografia con la chiave privata", che è un'analogia di difetto e nel migliore dei casi confusa, quindi non farlo). Entrambi gli algoritmi usano chiavi , cioè pezzi di dati che devono essere tenuti segreti. Succede che per le firme RSA, ciò che è firmato non è direttamente un dato messaggio (una sequenza di bit) ma un hash del messaggio: il messaggio viene prima elaborato con una funzione hash crittografica come SHA- 256 e viene quindi utilizzato il valore hash. Questo è fatto in questo modo perché la matematica di RSA può gestire solo valori di dimensioni moderate, alcune centinaia di bit al meglio. Le funzioni di hash crittografiche sono tali che firmare l'hash equivale a firmare i dati originali.

In questo modo, le funzioni hash RSA e crittografiche vengono spesso utilizzate insieme; ma non sono affatto la stessa cosa.

Esadecimale è un modo per rappresentare una sequenza di bit in una sequenza di caratteri : esadecimale utilizza cifre e lettere da "A" a "F"; ogni carattere codifica esattamente quattro bit ('0' codifica '0000', '7' codifica '0111', 'D' codifica '1101' ...). Qualsiasi sequenza di bit (e in particolare l'output di una funzione di hash) può essere convertita in esadecimale e viceversa. L'esadecimale è popolare perché gli occhi e il cervello umano sono bravi a leggere i caratteri e non a leggere i bit. Gli strumenti da riga di comando che computano le funzioni hash crittografiche sui file generano tradizionalmente caratteri esadecimali per tale motivo. Tuttavia, non esiste nulla che leghi intrinsecamente le funzioni hash con l'esadecimale: tutto ciò che si adatta in un modo o nell'altro in un computer è una sequenza di bit e quindi è suscettibile di essere esadecimale; e un output di funzione hash è solo una sequenza di bit, che può essere codificata in vari modi, essendo esadecimale solo il modo "tradizionale" (sebbene Anche Base64 si incontra spesso, specialmente quando si tratta di database).

    
risposta data 03.02.2013 - 16:55
fonte

Leggi altre domande sui tag