INTRODUZIONE A ECHO<br />Approfondimento di Crittografia I<br />Riccardo Ciovati e Annalisa Berti<br />
Overview<br />Una breve introduzione all’algoritmo<br />
Cos’è ECHO<br />ECHO è un algoritmo candidato per SHA3<br />Disegnato dal Cryptographic Research Group agli Orange Labs<br...
Il design di ECHO<br />Richieste del NIST:<br />Mantenimento delle proprietà di SHA2:<br />Dimensione dell’input (224,256,...
Il design di ECHO<br />La filosofia degli autori:<br />Semplicità: Un algoritmo semplice è anche facile da analizzare<br /...
Funzionamento<br />Come funziona ECHO<br />
Domain extention (1/2)<br />In base alla lunghezza desiderata dell’output vengono utilizzate due diverse funzioni di compr...
Domain extention (2/2)<br />
Macro fasi dell’hashing<br />Inizializzazione<br />Messagepadding<br />Compressione<br />Finalizzazione<br />
1)Inizializzazione<br />La fase di inizializzazione  consiste in:<br />Assegnare al contatore C il valore 0<br />Assegnare...
2)Messagepadding<br />Serve per ottenere un messaggio multiplo di Msize<br />Viene aggiunto un bit “1” a fine messaggio e ...
3)Compressione (1/2)<br />Il Messaggio + padding ottenuto viene suddiviso in t blocchi da MsizeconMsizeche vale:<br />1536...
3)Compressione (2/2)<br />Vengono eseguite le seguenti operazioni:<br />Mixing Chaining<br />8 round (10 se compress1024 )...
Mixing ChainingVariable<br />Viene creata una matrice di stato S di dimensione 4x4 nella quale viene disposta la chainingv...
BIG.SubWords(S,SALT,K)<br />Sia k un contatore interno che inizialmente è impostato al valore Ci. Siano k1 e k2 così defin...
BIG.ShiftRow(S)<br />Il funzionamento è analogo a quello di AES. In questa implementazione però lavora su word da 128bit e...
BIG.MixColumns(S)<br />Anche queste operazione è analoga a quella che troviamo nell’algoritmo AES e ovviamente è esteso po...
BIG.Final(S)<br />Si occupa alla fine degli otto round di aggiornare la chainingvariablein modo che possa diventare l’inpu...
4)Finalizzazione<br />Finiti i blocchi, l’output della funzione hash sono gli Hsizebit più significativi della chainingvar...
Riferimenti<br />Pagina ufficiale degli autori di ECHO<br />Nist sha3 specifications<br />
Upcoming SlideShare
Loading in …5
×

Approfondimento ECHO

299 views
229 views

Published on

In queste slide presentiamo ECHO, un algormitmo proposto per Sha3. Questa trattazione non vuole essere assolutamente completa ed esaustiva, ma sono una piccola introduzione.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
299
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Approfondimento ECHO

  1. 1. INTRODUZIONE A ECHO<br />Approfondimento di Crittografia I<br />Riccardo Ciovati e Annalisa Berti<br />
  2. 2. Overview<br />Una breve introduzione all’algoritmo<br />
  3. 3. Cos’è ECHO<br />ECHO è un algoritmo candidato per SHA3<br />Disegnato dal Cryptographic Research Group agli Orange Labs<br />Ispirato ad AES<br />Attualmente accettato per il round 2 della competizione<br />
  4. 4. Il design di ECHO<br />Richieste del NIST:<br />Mantenimento delle proprietà di SHA2:<br />Dimensione dell’input (224,256,384,512bits)<br />Preimageand second-preimageresistence<br />Messagedigest di 224,256,384 e 512 bits<br />Lunghezza massima del messaggio di almeno 2^64bits<br />Implementabile ed efficiente sia hardware che in software<br />
  5. 5. Il design di ECHO<br />La filosofia degli autori:<br />Semplicità: Un algoritmo semplice è anche facile da analizzare<br />Riutilizzo di AES: Usa AES nella versione a 128bit. Questo permetterà di sfruttare future implementazioni di tale algoritmo oppure di trarre beneficio dal supporto offerto dai micriprocessori<br />
  6. 6. Funzionamento<br />Come funziona ECHO<br />
  7. 7. Domain extention (1/2)<br />In base alla lunghezza desiderata dell’output vengono utilizzate due diverse funzioni di compressione:<br />Compress512 per hash di lunghezza di 224bit o 256bit<br />Compress1024 per hash di lunghezza di 384bit o 512bit<br />A ogni iterazione la funziona di compressione prendere in input i seguenti valori:<br />Il valore corrente della chainingvariable , Vi-1 ,di lunghezza Csize<br />Il blocco del messaggio da processare, che ha lunghezza Msize = 2048 – Csize<br />Il numero totale di unpaddedmessagebits alla fine di questa iterazione, Ci<br />Il Salt<br />
  8. 8. Domain extention (2/2)<br />
  9. 9. Macro fasi dell’hashing<br />Inizializzazione<br />Messagepadding<br />Compressione<br />Finalizzazione<br />
  10. 10. 1)Inizializzazione<br />La fase di inizializzazione consiste in:<br />Assegnare al contatore C il valore 0<br />Assegnare alla chainingvariable un valore costante in base alla dimensione dell’hash che si vuole ottenere<br />
  11. 11. 2)Messagepadding<br />Serve per ottenere un messaggio multiplo di Msize<br />Viene aggiunto un bit “1” a fine messaggio e X bit “0” con X = Msize – ((Hashlength + 144) modMsize) - 1<br />
  12. 12. 3)Compressione (1/2)<br />Il Messaggio + padding ottenuto viene suddiviso in t blocchi da MsizeconMsizeche vale:<br />1536 bit se 224≤Hsize ≤256<br />1024 bit altrimenti<br />Viene settata la compressionfunction da utilizzare<br />Comincia iterazione su ogni blocco:<br />Input: Vi = compressfunction(Vi-1, Mi,Ci,SALT)<br />1. Suddivido il blocco Mi in blocchi da 128 bit.<br />2. Vi-1 suddiviso in n stringhe da 128 bit, con n che vale: <br />224≤Hsize ≤256: 4 stringhe (Vi=512)<br />384≤Hsize ≤512: 8 stringhe (Vi=1024)<br />
  13. 13. 3)Compressione (2/2)<br />Vengono eseguite le seguenti operazioni:<br />Mixing Chaining<br />8 round (10 se compress1024 ) da 3 passi ciascuno:<br />BIG.SubWords<br />BIG.ShiftRow<br />BIG.MixColumns<br />BIG.Final<br />
  14. 14. Mixing ChainingVariable<br />Viene creata una matrice di stato S di dimensione 4x4 nella quale viene disposta la chainingvariable e il messaggio.<br />Nel caso 224≤Hsize ≤256: la prima colonna di chainingvariable e le restante di messaggio.<br />Nel caso 384≤Hsize ≤512: nelle prime due colonne la chainingvariablee nelle due restanti il messaggio.<br />La struttura su cui si basa e il funzionamento ha delle analogie con AES.<br />
  15. 15. BIG.SubWords(S,SALT,K)<br />Sia k un contatore interno che inizialmente è impostato al valore Ci. Siano k1 e k2 così definiti:<br />k1 = k||64 bit a 0<br />k2 = SALT<br />Per ogni word da 128 bit di S viene eseguita la seguente operazione:<br />wi’ = AES(AES(wi,k1),k2)<br />k viene incrementato <br />
  16. 16. BIG.ShiftRow(S)<br />Il funzionamento è analogo a quello di AES. In questa implementazione però lavora su word da 128bit e non su byte.<br />
  17. 17. BIG.MixColumns(S)<br />Anche queste operazione è analoga a quella che troviamo nell’algoritmo AES e ovviamente è esteso poiché lavora su una matrice più ampia. Le 4 colonne di word da 128bit vengono viste come 64 colonne da un byte ciascuna. A ciascuna di queste colonne viene applicato la trasformazione MixColumns presente in AES.<br />
  18. 18. BIG.Final(S)<br />Si occupa alla fine degli otto round di aggiornare la chainingvariablein modo che possa diventare l’input della successiva iterazione. In figura esempio di BIG.Final nella funzione compress512:<br />w0 ,w1 ,…w15 : Matrice contenente gli output delle iterazioni precedenti<br />m0 ,m1 ,…m12: Blocco del messaggio considerato.<br /> vi-1: chainingvariable presa in ingresso da questa iterazione<br />
  19. 19. 4)Finalizzazione<br />Finiti i blocchi, l’output della funzione hash sono gli Hsizebit più significativi della chainingvariable.<br />Esempio con compress512: La chainingvariableha dimensione 512bit. Se si vuole ottenere un output di 224bit, è sufficiente prendere i 224 più significativi. Nel caso compress1024 la dimensione della chainingvariableè doppia ma il funzionamento è analogo.<br />Si deduce che sono supportati anche dimensione di hash intermedi rispetto a quelli richiesti dal NIST.<br />
  20. 20. Riferimenti<br />Pagina ufficiale degli autori di ECHO<br />Nist sha3 specifications<br />

×