Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ic:labs:08 [2022/11/22 01:48]
razvan.smadu [Laboratorul 08 - MAC]
ic:labs:08 [2023/11/22 01:03] (current)
razvan.smadu [Exercițiul 1 - OpenSSL în linia de comanda (3p)]
Line 1: Line 1:
 ===== Laboratorul 08 - MAC  ===== ===== Laboratorul 08 - MAC  =====
  
-Prezentarea PowerPoint pentru acest laborator poate fi găsită [[https://​drive.google.com/​file/​d/​188HfjYdDqc97bPXiaF6tccVcU4pSy6-f/​view?​usp=sharing|aici]]. ​Puteți lucra acest laborator folosind ​și platforma Google Colab, accesând [[https://​colab.research.google.com/​drive/19L4IVkLwV-BQ8IP4PD1Brj801YlGeLMC?​usp=sharing|acest]] link.+Prezentarea PowerPoint pentru acest laborator poate fi găsită [[https://​drive.google.com/​file/​d/​188HfjYdDqc97bPXiaF6tccVcU4pSy6-f/​view?​usp=sharing|aici]]. 
 + 
 +==== Exercițiul 1 - OpenSSL în linia de comanda (3p) ==== 
 + 
 +OpenSSL este o suita de funcții criptografice,​ care oferă atât o facilitate de unelte în linie de comandă 
 +cât șo librărie folosită pentru aplicații (e.g. C/Python). Aici vom face câteva exerciții cu OpenSSL 
 +în linie de comandă ca să pridenți ceva experiență cu aceste funcții foarte populare ​și utile. 
 + 
 +Acum: ati primit niste fisiere top secret in arhiva {{:​ic:​labs:​top_secret.zip|top secret}}. 
 +Aceasta contine un fisier binar (data_enc_mac.bin) cu un mesaj criptat + un MAC, i.e. 
 + 
 +file = enc(ke,m) + mac-cbc(km,​m) 
 + 
 +Vreti sa aflati mesajul secret si sa verificati ca este corect (mac corect). 
 +Pentru asta va trebuie cheile de criptare (ke) si de MAC (km). 
 +Stim ca criptarea s-a facut cu aes-128-cbc cu iv=000.00 (16 octeti) iar mac-ul este CMAC cu AES-128-CBC. 
 + 
 +Din fericire mai avem in arhiva un fisier (tot binar, data_kek.bin.pass_hellokitty) care contine un master key (k0), dar care 
 +este criptat si el cu aes-128-cbc si pbkdf2, cu passphrase din numele fisierului.  
 + 
 +Mai stim ca putem folosi acest master key (k0) pentru a deriva cheile de criptare si MAC de mai sus (ke, km) 
 +prin aplicarea functiei SHA256, i.e. (ke, km) = SHA256(k0) 
 + 
 +Acum stim cam tot ce avem nevoie pentru a afla si a verifica mesajul secret. 
 +Care este acest mesaj? 
 + 
 +Vedeti [[https://​www.openssl.org/​docs/​man1.1.1/​man1/​enc.html|aici]] informatii ajutatoare pentru criptare si criptare cu pbkdf, [[https://​www.openssl.org/​docs/​man1.1.1/​man1/​openssl-dgst.html|aici]] informatii pentru SHA256 si 
 +[[https://​www.openssl.org/​docs/​man3.0/​man1/​openssl-mac.html|aici]] pentru MAC. 
 + 
 +  * Incepeti prin verificarea versiunii de OpenSSL (eu am folosit 3.0.2): 
 +<​code>​ 
 +    #openssl version 
 +</​code>​ 
 + 
 +  * Apoi decriptati fisierul binar kek cu passphrase-ul din numele fisierului pentru a obtine k0 (vedeti openssl enc ... -pbkdf2...). 
 +<​code>​ 
 +  #openssl enc -d -aes128 -pbkdf2 -in... 
 +</​code>​ 
 + 
 +  * Acum folositi SHA256 pentru a obtine (ke|km) = SHA256(k0). Vedeti openssl -dgst. Puteti face pipe ca sa trimiteti date de intrare catre SHA256 sau alte functii openssl, e.g.: 
 +<​code>​ 
 +   #echo -n $k0 | openssl dgst -sha256 
 +</​code>​ 
 +unde k0 contine cheia aflata la punctul precedent (hint: ar trebui sa fie gustoasa...). 
 + 
 + 
 +  * Cu ke (primii 16 octeti din rezultatul de mai sus) putem decripta mesajul (folositi -nopad, nu e nevoie de padding). Vedeti openssl enc -d .... Aici trebuie sa folositi primii N-16 octeti din fisier (ultimii 16 sunt MAC-ul). Puteti trunchia cu cat sau alta metoda la alegere, e.g.: 
 +<​code>​ 
 +   #cat data_enc_mac.bin | head -c80 
 +</​code>​ 
 + 
 +apoi folositi iarasi openssl enc -aes128 -d  -K... -iv... -nopad ​ (cu parametru in fisier sau cu pipe ca mai sus) 
 +ca sa decriptati mesajul. 
 + 
 +  * In sfarsit, puteti verifica ca mesajul primit este corect (desi ar trebui sa para un text inteligibil) prin aplicarea MAC-ului CMAC cu AES-128-CBC peste ultimii 16 octeti din fisierul binar data_enc_mac.bin. Vedeti functia 
 +<​code>​ 
 +  openssl mac -cipher AES-128-CBC -binary 
 +</​code>​ 
 +cu parametrul -macopt hexkey:... (aici km in hexa) 
 + 
 + 
 +==== Exercițiul 2+ ==== 
 + 
 +Pentru al doilea exercitiu puteti folosi ​platforma Google Colab, accesând [[https://​colab.research.google.com/​github/ACS-IC-labs/​IC-labs/​blob/​main/​labs/​lab08/​lab8.ipynb|acest]] link. 
 + 
 +<​hidden>​ 
  
 În acest laborator vom studia despre Message Authentication Codes (MAC). În acest laborator vom studia despre Message Authentication Codes (MAC).
Line 16: Line 82:
 Ați putea încerca să spargeți securitatea algoritmului MAC folosind 2 query-uri. Cu toate acestea, puteți găsi o metodă să atacați algoritmul folosind doar un query? Ați putea încerca să spargeți securitatea algoritmului MAC folosind 2 query-uri. Cu toate acestea, puteți găsi o metodă să atacați algoritmul folosind doar un query?
 </​note> ​ </​note> ​
 +</​hidden>​
  
 <​hidden>​==== Exercițiul 2 - Timing attack ==== <​hidden>​==== Exercițiul 2 - Timing attack ====
Line 208: Line 275:
 </​file>​ </​file>​
 </​hidden>​ </​hidden>​
 +<​hidden>​
  
  
Line 249: Line 317:
 </​note>​ </​note>​
  
 +</​hidden>​
 <​hidden>​ <​hidden>​
 <file python birthday.py>​ <file python birthday.py>​
ic/labs/08.1669074515.txt.gz · Last modified: 2022/11/22 01:48 by razvan.smadu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0