Newsgroup: it.comp.sicurezza.crittografia
Titolo: Funzioni HMAC

Volevo un chiarimento sulle funzioni HMAC: a quanto ho capito sfruttano un
hash crittografico (come MD5 o SHA-1) per calcolare un valore dipendente da
2 stringhe... insomma:
val = hmac(str1, str2)
Che vantaggio c'è (a livello di sicurezza o altro) ad usare questo sistema
al posto del più semplice:
val = hash(str1+str2)
(dove '+' indica la semplice concatenazione delle due stringhe) ? Anche
questo dovrebbe essere sicuro, no ?
Aspetto i vostri commenti... grazie in anticipo !!
-- 
LF

 Anche questo dovrebbe essere sicuro, no ?
Non proteggendo str2 con un hash (come invece avviene nell'HMAC), il tuo
schema è suscettibile quanto meno all'extension attack (ma forse anche ad
altri attacchi). In pratica è possibile contraffare l'HMAC per qualunque
messaggio che contiene str2.
Cristiano

 messaggio che contiene str2.
Uhm... in pratica mi dici che possedendo:
msg
HMAC(key, msg)
sono in grado di ottenere un:
HMAC(key, msg + "Non è vero niente !!")
valido ?
Comunque il mio caso è diverso: a me hanno consigliato di usare HMAC in uno
schema di autenticazione "challenge-response", vale a dire:
1) SERVER invia una stringa casuale (challenge).
2) CLIENT risponde con HMAC(challenge, chiave_segreta).
In questo caso volevo capire che pericoli e svantaggi ci sarebbero ad usare
al posto di HMAC:
SHA1(challenge + chiave_segreta)
Grazie !! :)
-- 
LF

 valido ?
No.
Ti dico che se possiedi
str2 e hash(str1 || str2)
dovresti essere in grado di ottenere
hash(str1 || str2 || "Capisci l'italiano?").
Cristiano

 hash(str1 || str2 || "Capisci l'italiano?").
Beh... e io che ho detto ? :)
Cosa mi dici del mio caso (autenticazione) ?
-- 
LF


[Proprio mentre mi stavo convincendo che eri un troll, m'è venuta in mente
la conversazione del mese scorso con te sulle curve ellittiche, in cui mi
eri sembrato serio; probabilmente abbiamo solo un problema di comprensione,
speriamo... :-) ]
Tu hai scritto che io avrei detto che possedendo
msg e HMAC(key, msg)
tu saresti stato in grado di ottenere
HMAC(key, msg || "Non è vero niente !!"), ma questo non è quello che ho
detto io; non noti la differenza tra "hash" (scritto da me) e "HMAC" scritto
da te?
Il tuo MAC può andar bene per molti scopi (non seri), ma io non lo userei
perché è soggetto all'extension attack, perché non è standard e perché non
vedo motivi per non usare l'HMAC (o le sue forme più evolute).
Può essere utile spiegare che l'extension attack applicabile al tuo schema:
hash(K || msg)
consente a chiunque di calcolare il MAC di un altro messaggio (contenente
'msg') senza conoscere la chiave K.
Questo è dovuto al fatto che l'hash viene calcolato a blocchi, per cui puoi
"imbrogliare" il tuo MAC con un messaggio che sembra msg più il padding che
l'hash aggiunge autonomamente per riempire il blocco prima di processarlo.
Cristiano

 'msg') senza conoscere la chiave K.
Quello che non ho capito è se questa vulnerabilità si riperquote sulla
sicurezza del sistema di autenticazione challenge-response... insomma se
inviare in chiaro:
HMAC(challenge,chiave)
è più sicuro che inviare:
SHA1(challenge+chiave)
Comunque se mi reputi un "troll" (non mi era mai capitato) e non vuoi
rispondermi fa pure.
-- 
LF

 SHA1(challenge+chiave)
Ah... Ma allora non sei un troll, è proprio che non capisci l'italiano!
Risposta per gli stranieri: yes.
Al posto di + dovresti scrivere || che si ottiene tenendo premuto il tasto
shift (o maiusc o quello con la freccetta in alto sopra a Ctrl) mentre premi
per due volte il tasto a sinistra del tasto 1 (in alto a sinistra nella
tastiera); la tua notazione con il + è fraintendibile (cioè ci si può
confondere).
Cristiano

 nella tastiera);
Davvero ? Ma allora sei proprio uno che se ne intende, un vero "acher"...
però scommetto che al corso di alfabetizzazione informatica non ti hanno
ancora insegnato come fare questo qui '¶' oppure quest'altro '¿'... vero ?
Sei patetico, *PASSO E CHIUDO*.
(Grazie naturalmente delle poche info che con calma sono riuscito a separare
dalle offese e spiritosaggini da asilo infantile).
-- 
LF

 linguaggi di programmazione.
Tipo il C, vero? LOL.
-- 
*    HappyCactus - Linux User #209744 - BOFH Certified Engineer    *
*                         
http://www.google.com
                    *
*                                                                  *
*                           ET IN ARCADIA EGO                      *

 Tipo il C, vero? LOL.
Hai poco da LOLLARTI.
Il C prevede una gestione manuale della memoria, e non ha nessun *operatore*
per concatenare le stringhe, ovviamente.
I primi due linguaggi che mi vengono a mente che usano il '+' sono C++ e
Java. Due linguaggi minoritari, di nicchia insomma, vero ? Poi c'è anche
Javascript, C#...
Ritenta, sarai più fortunato (magari in un altro thread però, questo qui non
ha più senso).
-- 
LF

 I primi due linguaggi che mi vengono a mente che usano il '+' sono C++
In C++ come in C non esiste il tipo di oggetto predefinito "stringa".
Nulla vieta di usare un qualunque altro operatore per
identificare la concatenazione, basta sovrapporlo. Vabbe', ma stiamo
divagando.
Tornando al thread, Cristiano lo stava usando in un contesto che esula
dai tuoi "linguaggi". Quindi il tuo discorso non ha senso.
HappyCactus LOL again


 HappyCactus LOL again
Mi fa piacere. Io rimango un altro po' qui a divertirmi, spero in una tua
pronta risposta... poi tra un'oretta devo andare, sorry.
-- 
LF

 separare dalle offese e spiritosaggini da asilo infantile).
Ma non mi sembra di averti offeso; come potevo sapere che eri straniero!
Leggendo: "Non proteggendo str2 con un hash (come invece avviene nell'HMAC),
il tuo schema č suscettibile quanto meno all'extension attack (ma forse
anche ad altri attacchi)." un italiano capisce subito che l'HMAC č meglio.
Cristiano

 Standard C++ Library ?
Quale parte della parola "library" non ti e' chiara?


 Ma non mi sembra di averti offeso; come potevo sapere che eri straniero!
Rinnovo i miei complimenti per la tua vena umoristica, ma mi dipiace
deluderti, non me ne prendo a male di queste battutine a sfondo razzista,
anche perchè sono toscano e conosco bene la lingua introdotta in Italia dai
miei antenati.
-- 
LF

 Quale parte della parola "library" non ti e' chiara?
ROTFL... rispondi con gli specchietti ? Puoi fare di meglio !! Ormai sul
versante C++ ti sei irrimediabilmente coperto di... ehm, "fango"... sono
sicuro che se ci pensi un po' hai altri argomenti...
[ALT: prima di premere quel bottone e fare un'ennesima figura di "fango", ti
ricordo che la "Standard C++ Library" *fa parte* del linguaggio C++ così
come descritto nei documenti dell'ISO, come la printf() fa parte del C...
poi non dire che non sono gentile !!]
-- 
LF

 introdotta in Italia dai miei antenati.
Non lo metto in dubbio, ma forse non conosci quella che si parla oggi.
E darmi del razzista ti rende un vero coglione.
Addio
Cristiano

 E darmi del razzista ti rende un vero coglione.
E poi vorresti insegnare l'italiano agli altri !? Sono le tue "battutine"
che sono a *sfondo* razzista, non ho parlato di te, oh uomo tardo e
cocciuto.
Sei veramente un idiota (senza offesa).
-- 
LF

  [X.509 available]  ,''`.
Linux Reg. User #263663/NEW Machine: #216144 (Debian Sarge/SID) : :' :
On the Web: 
http://www.quagliata.eu.org
 - My GPG Key:0x5539D8E4 `. `'
On ICQ: 48618109 - On Jabber: 
qu...@jabber.org/@jabber.linux.it
   `-
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
iD8DBQFAm9RRZXjZQFU52OQRAqhEAKC0g7Dprs8Vq6NgDZv4DpPhFVYsTQCggNgo
mRm4OsUJgsxgd9qVTvXZMRI=
=EpkV
-----END PGP SIGNATURE-----

 [...], ti chiedo di lasciar perdere quest'inutile discussione [...]
Me lo chiedi con un bel ritardo! :-)
L'ho già lasciata perdere quando ho scritto "Addio" nel mio altro messaggio.
Cristiano

  [X.509 available]  ,''`.
Linux Reg. User #263663/NEW Machine: #216144 (Debian Sarge/SID) : :' :
On the Web: 
http://www.quagliata.eu.org
 - My GPG Key:0x5539D8E4 `. `'
On ICQ: 48618109 - On Jabber: 
qu...@jabber.org/@jabber.linux.it
   `-
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
iD8DBQFAnAVSZXjZQFU52OQRAkEzAKCHbCvgkRZLYeWhh5DNPIRxKNRoPACcCeVj
28yj1e6hGdbe8Cd/xlmlvwg=
=oArt
-----END PGP SIGNATURE-----

 comunque ti ringrazio !! :)
Dai che passa tutto. :)
Saluti,
Federico
