Home / Indice sezione
 www.icosaedro.it 

 Crittografia - Algoritmi digest

Ultimo aggiornamento: 2008-01-15

Indice

Algoritmi che generano digest
MD5 (Message Digest - 5)
SHA-1 (Secure Hash Algorithm-1)
RIPEMD-160 (RIPE Message Digest - 160 b)
Bibliografia
Argomenti correlati

Algoritmi che generano digest

Prima di affrontare gli algoritmi di crittazione a chiavi asimmetriche, descriviamo una categoria di algoritmi nota come algoritmi di digest. Il digest (o impronta) di un messaggio M è un numero D(M) calcolato a partire da questo messaggio e che ha le seguenti proprietà:

In parole semplici, l'algoritmo digest rimescola i bit del messaggio e poi ne ritorna un certo numero definito. Ad esempio, un algoritmo potrebbe essere semplicemente quello di invertire i bit del messaggio e prenderne i primi 128. E' chiaro però che questo algoritmo non soddisferebbe i requisiti 2 e 3 dei punti precedenti: tutti i messaggi che iniziano con lo stesso preambolo produrrebbero lo stesso digest e sarebbe davvero facile produrre un messaggio con un digest prederminato. I veri algoritmi digest sono perciò ben più complessi e vengono attentamente progettati dagli esperti crittografi.

I digest sono utili in diverse applicazioni, vediamone rapidamente alcune giusto per farcene un'idea. Penso anche che ragionare su questi semplici schemi crittografici sia un importante allenamento ai prossimi articoli, un po' più impegnativi dal punto di vista formale.

Tra gli algoritmi digest più noti ci sono: MD5, SHA-1, RIPE-MD. Nella bibliografia dedicata agli algoritmi ho messo i riferimenti alla documentazione relativa.

MD5 (Message Digest - 5)

Da uno degli autori di RSA (Rivest, lo vedremo nella prossima sezione dedicata agli algoritmi di crittazione a chiavi pubbliche) uno dei più noti algoritmi digest. L'MD5 genera digest a 128 b, ed è documentato nell'RFC 1321: insieme alla descrizione dell'algoritmo, viene fornito anche il sorgente in linguaggio C che lo implementa.

Il programma PGP (di cui parleremo nella sezione delle implementazioni) usava questo algoritmo digest. Poi alcune critiche a questo algoritmo hanno fatto nascere dubbi sulla sua reale robustezza. A dimostrazione di questo fatto Hans Dobbertin [DOBBERTIN96-1] [DOBBERTIN96-2] mostra due versioni dello stesso messaggio che differiscono per un solo carattere (un prezzo che cambia da $176,495 a $276,495) ma che producono lo stesso digest MD5. Di per sè questo risultato non dimostra che sia facile invertire l'MD5, e lo stesso autore rassicura su questo fatto. Tuttavia ciò suggerisce come sia prudente, per il futuro, utilizzare altri algoritmi digest. Ecco l'articolo postato sul newsgroup sci.crypt dallo stesso Dobbertin (per favorire la leggibilità mi sono permesso di riformattare i paragrafi in modo da ridurre le linee più lunghe a una lunghezza accettabile per la visualizzazione e la stampa):

    From: <dobbertin@skom.rhein.de>
    Newsgroups: sci.crypt
    Subject: MD5 discussion
    Date: 11 Jun 1996 14:22:03 GMT
    Organization: CompuServe Incorporated
    Lines: 38
    Message-ID: <4pjvec$1c6@dub-news-svc-4.compuserve.com>
    NNTP-Posting-Host: hd43-009.compuserve.com
    Content-Type: text/plain
    Keywords: MD5
    Content-length: 2222
    X-Newsreader: AIR Mosaic (16-bit) version 3.10.08.25


    In view of the continuing discussion about MD5, I want to make a few
    comments, which hopefully can help to avoid some misunderstandings
    and misinterpretations:

    1. In February 1996 my paper "Cryptanalysis of MD4" appeared (Fast
    Software Encryption, Cambridge Proceedings, Lecture Notes in Computer
    Sciences, vol. 1039, Springer-Verlag, 1996, pp. 71-82). In this paper,
    as an example two versions of a contract are given with the same MD4
    hash value. Alf sells his house to Ann, in the first version the
    price is $176,495 and in the second it is $276,495. The contracts
    have been prepared by Alf. Now if Ann signs the first version with
    $176,495 then Alf can altered to price to $276.495 ...  In principle
    this risk occurs, if you use a hash function for which (senseful)
    collisions can be found,  whenever you allow another person to have
    influence on the contents of a document you are signing. Certainly
    this does not happen very often in practical applications. But
    sometimes you *must* have an agreement about a text (contract) which
    is then signed by two or more parties. And these are often just the
    most important applications!

    2. I suspect that the recent attack on MD5 compress can be refined
    and extended such that it might lead to MD5 collisions (matching the
    right IV) and perhaps then even to similar results as already obtained
    for MD4. Certainly this requires a lot of hard additional work.

    3. If you write a message for your own (nobody else has influence
    on it) and sign it using MD5 (and a strong public key algorithm,
    of course) then there is no danger that it can be altered (at least
    according to our knowledge today)! Thus it is true that I guess almost
    all of you will have no risk using MD5, for instance in PGP.  However,
    if you accept 2., then in some cases there could be problems ...

    4. After all I have reservations against keeping MD5 as a (de facto)
    standard, because 2. might indicate that there is a serious security
    problem with MD5.

    5. My conclusions are: no reason for panic, but in future
    implementations better move away from MD5.

    6. Presently a paper discussion the status of MD5 in detail is
    in preparation.

      -   Hans Dobbertin

L'MD5 nella pratica. A corredo del sistema operativo GNU/Linux è disponibile il comando md5sum che calcola il digest MD5 di un file:

    $ md5sum dati
    d78b4ef9a20ca1a3d1e14cbd344788bc  dati

Il digest è espresso con 32 cifre nella base esadecimale, per un totale di 128 b, come ci dovevamo aspettare.

SHA-1 (Secure Hash Algorithm-1)

Questo algoritmo digest è raccomandato come standard dal NIST (National Institute of Standard and Technology), l'uffico federale statunitense che emana le normative tecniche in uso nella pubblica amministrazione di quel paese. L'algoritmo assomiglia all'MD5, ma genera 160 b e viene considerato più robusto. Nota: SHA-1 è stato parzialmente progettato da NSA, cosa non proprio del tutto rassicurante.

L'SHA-1 nella pratica. A corredo del sistema operativo GNU/Linux è disponibile il comando sha1sum che calcola il digest SHA-1 di un file:

    $ sha1sum dati
    45db713c2b5929d31fab17c169331c3bc482a3b9  dati

Il digest è espresso con 40 cifre esadecimali, per un totale di 160 b, come ci dovevamo aspettare.

RIPEMD-160 (RIPE Message Digest - 160 b)

Nato dal progetto europeo RACE Integrity Primitive Evaluation (RIPE), nella versione originale generava digest a 128, poi elevati a 160 nella versione rinforzata. Tra gli autori c'è anche lo stesso Hans Dobbertin, uno dei principali critici dell'MD5 (v. il paragrafo precedente sull'MD5).

Bibliografia

I documenti RFC, che costituiscono la documentazione ufficiale di Internet, sono reperibili in www.rfc-editor.org.

Argomenti correlati


Umberto Salsi
Commenti
Contatto
Mappa
Home / Indice sezione
Still no comments to this page. Use the Comments link above to add your contribute.