Approfondimento

366 views

Published on

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
366
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Approfondimento

  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 />

×