Differences

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

Link to this comparison view

ic:labs:07 [2021/01/25 11:11]
razvan.smadu
ic:labs:07 [2023/10/09 23:22] (current)
razvan.smadu
Line 1: Line 1:
 ===== Laboratorul 07 - Correlation Power Analysis ===== ===== Laboratorul 07 - Correlation Power Analysis =====
  
-The powerpoint presentation for this lab can be found [[https://​drive.google.com/​file/​d/​1GqRveIHLY6MxtXjedKS-X4m3RbXQypDD/​view?​usp=sharing|here]].+Prezentarea PowerPoint pentru acest laborator poate fi găsită ​[[https://​drive.google.com/​file/​d/​1GqRveIHLY6MxtXjedKS-X4m3RbXQypDD/​view?​usp=sharing|aici]]. Puteți lucra acest laborator folosind platforma Google Colab, accesând [[https://​colab.research.google.com/​github/​ACS-IC-labs/​IC-labs/​blob/​main/​labs/​lab07/​lab7.ipynb|acest]] link.
  
-In this lab we'll implement a side-channel ​attack known as **Correlation Power Analysis**.+<​hidden>​ 
 +În acest laborator vom implementa un atac de tip side-channel ​denumit ​**Correlation Power Analysis**.
  
-The principle is quite simple+Pașii pentru realizarea atacului sunt următorii
-  - Choose your target (generally the S-box output of some block cipher ​- in our case AES) +  - Se alege un target ​din algoritm pentru a fi atacat ​(în general output-ul unui S-box folosit de un block cipher ​– în cazul nostru fiind AES) 
-  - Obtain a large number (thousands) of leakage ​samples for that target, when processing different plaintexts +  - Se obține un număr mare de sample-uri de leakage ​de la target ​când acesta procesează diferite plaintext-uri 
-  - Choose a suitable ​leakage ​model (usually the hamming weight ​of the target ​value+  - Se alege un model de leakage ​potrivit ​(de obicei ​hamming weight ​pentru valoarea ​target)  
-  - For each possible key candidate ​(e.g. all values from to 255), compute ​[[http://​en.wikipedia.org/​wiki/​Pearson_product-moment_correlation_coefficient | Pearson'​s correlation coefficient]] ​between the leakage ​model estimate for that key candidate and the leakage ​traces. +  - Pentru fiecare cheie posibilă ​(extoate valorile de la la 255), se calculează ​[[http://​en.wikipedia.org/​wiki/​Pearson_product-moment_correlation_coefficient | Pearson'​s correlation coefficient]] ​dintre modelul estimat de leakage ​pentru cheia curentă și trace-urile de leakage 
-  - Decide for the key that gives maximum correlation+  - Se păstrează cheia pentru care se obține corelația maximă ​
  
 +Mai multe detalii vor fi prezentate la laborator.
  
-We'll discuss more in detail at the lab. 
  
-In this lab we shall use Matlab or Octave (MATLAB is preferred for speed reasons):+Vom folosi biblioteca [[https://​numpy.org/​doc/​stable/​|NumPy]] pentru realizarea de operații pe matrice în mod eficient și mult mai rapid decât cu funcțiile built-in din Python. Pentru realizarea graficelor, vom folosi [[https://​matplotlib.org/​stable/​index.html|matplotlib]] care are un API foarte asemanator cu cel din MATLAB/​Octave.  ​
  
-[[http://​www.gnu.org/​software/​octave/​ | Octave main page]] +Pentru acest laborator puteți folosi ca punct de pornire următorul schelet de cod
-[[http://​wiki.octave.org/​Octave_for_Windows ​Download link for Windows]]+{{:ic:​laboratoare:​lab7.zip|}}
  
 +==== Exercițiul 1 (2p) ====
  
-You might also need these additional packages:+Analizați fișierul lab7_cpa.py (sau lab7_cpa.ipynb) și plotați datele de leakage din fișierul simdata.npy,​ precum și corelația pentru prima cheie posibilă.
  
-[[http://​sourceforge.net/​projects/​octave/​files/​Octave%20Windows%20binaries/​ | Link for additional packages]]+==== Exercițiul 2 (4p) ====
  
-Use these files as starting point: +Calculați corelația pentru toate valorile posibile din cheie și plotați rezultatul corelației pentru fiecare cheie posibilă. 
-{{:​sasc:​laboratoare:lab6.zip|}}+Mai exact, folosiți comanda plt.plot(x, y) din Matplotlib, unde x este un vector ce reprezintă toate valorile posibile pentru cheie [0:255] și y este un vector ce conține corelația pentru fiecare cheie.
  
-==== Exercise 1 (2p====+<note tip> 
 +În NumPy, puteți inițializa un vector astfel: 
 +<code Python>​ 
 +np.zeros(N) ​ # vector with N elements, initializing the elements with 0 
 +np.empty(N # vector with N elements, without initializing the entries 
 +</​code>​ 
 +</​note>​
  
-Open the file lab6_cpa.m and plot the leakage ​data from simdata.mat and the correlation for the first key hypothesis.+<​note>​ 
 +Corelația poate fi obținută folosind [[https://​numpy.org/​doc/​stable/​reference/​generated/​numpy.corrcoef.html|np.corrcoef]],​ care va returna o matrice de dimensiune 2×2 pentru cazul nostru. În acest caz, poate fi selectat elementul de la indexul (0, 1) pentru restul calculelor. Valorile de la indexul (0, 0) și indexul (1, 1) reprezintă varianța pentru fiecare variabilă (hamming weight și datele de leakage)Puteți deduce cine este elementul de la indicele (1, 0). 
 +</​note>​
  
-==== Exercise 2 (4p) ====+==== Exercițiul 3 (4p) ====
  
-Compute the correlation for all the possible key values. Plot this correlation against all the possible key values. +Pentru evaluarea securității unui device împotriva atacurilor de tip side-channeluna dintre metodele cele mai folosite este success rate (SR), care măsoară cât de eficient este un atac. Pentru implementarea acestei metode folosiți următorii pași: 
-That isuse the plot(x, ycommandwhere x is a vector having values [0:255] (or [1:256]and y is a vector with the correlation values corresponding to each key value).+  - Rulați atacul pe diferite seturi de trace-uri ​(ex. R=50 de subseturi cu N trace-uri fiecareși pentru fiecare atac determinați dacă cheia corectă (Kconduce la cea mai mare corelație.  
 +  - Calculați success rate ca numărul de experimente în care cheia corectă conduce la corelație maxima împărțit la numărul total de experimente$$SR = \frac{\#​cheia\ corectă\ prima}{\#​experimente}$$
  
-<​note>​ +<​note ​tip
-The correlation is computed easily with corrcoef, but this returns a matrix of size 2x2 in our case. Select the element with index (1, 2) as the value we'll useThe values (1,1) and (2,2) are in fact the variance of each variable (Hamming weight and leakage data). We'll let you figure out who is the element (2,1).+Testați metoda de evaluare success rate folosind diferite valori pentru numărul de trace-uri din fiecare subset ​(ex$N \in \{102050, 100, 200, 5001000\}$și plotați SR în funcție de N.
 </​note>​ </​note>​
  
-==== Exercise 3 (4p) ==== 
  
-To evaluate the security of a device against these attacksevaluation labs typically compute a measure known as the success ratewhich measures how effective is side channel attackTo compute the success ratedo the following.+<​hidden>​ 
 +Pentru implementarea acestui laborator se va folosi Octave/​MATLAB (MATLAB este preferat din considerente de performanță):​ 
 + 
 +[[http://​www.gnu.org/​software/​octave/​ | Octave pagină principală]] 
 +[[http://​wiki.octave.org/​Octave_for_Windows | Download link pentru Windows]] 
 + 
 + 
 +Pe lângă resursele anterioaresunt necesare și următoarele pachete: 
 + 
 +[[http://​sourceforge.net/​projects/​octave/​files/​Octave%20Windows%20binaries/​ | Link pentru pachete adiționale]] 
 + 
 +Pentru acest laborator puteți folosi ca punct de pornire următorul schelet de cod: 
 +{{:​sasc:​laboratoare:​lab6.zip|}} 
 + 
 +==== Exercițiul 1 (2p) ==== 
 + 
 +Analizați fișierul lab6_cpa.m și plotați datele de leakage din fișierul simdata.mat,​ precum și corelația pentru prima cheie posibilă.  
 + 
 +==== Exercițiul 2 (4p) ==== 
 + 
 +Calculați corelația pentru toate valorile posibile din cheie și plotați rezultatul corelației pentru fiecare cheie posibilă. 
 +Mai exact, folosiți comanda plot(x, y) din Octave/​MATLAB,​ unde x este un vector ce reprezintă toate valorile posibile pentru cheie [0:255] și y este un vector ce conține corelația pentru fiecare cheie. 
 + 
 +<​note>​ 
 +Corelația poate fi obținută folosind corrcoef, care va returna o matrice de dimensiune 2x2 pentru cazul nostru. În acest caz, poate fi selectat elementul de la indexul (1, 2) pentru restul calculelor. Valorile de la indexul (1, 1) și indexul (22) reprezintă varianțpentru fiecare variabilă (hamming weight și datele de leakage)Puteți deduce cine este elementul de la indicele (21). 
 +</​note>​
  
-Run the attack on different sets of traces (e.g. R=50 subsets of N traces) and for each attack determine whether the correct key (Kleads to the highest correlation. Then compute the success rate as the number of times the correct key lead to the highest correlation divided by the total number of experiments:​ $SR={#correct key first}/​{#​experiments}$+==== Exercițiul 3 (4p) ====
  
-Compute the success rate (SR) for different amounts of leakage traces ​(e.g. $N \in \{10, 20, 50, 100, 200, 500, 1000\}$) and then plot the SR as a function of N.+Pentru evaluarea securității unui device împotriva atacurilor de tip side-channel,​ una dintre metodele cele mai folosite este success rate (SR), care măsoară cât de eficient este un atac. Pentru implementarea acestei metode folosiți următorii pași: 
 +  - Rulați atacul pe diferite seturi de trace-uri ​(exR=50 de subseturi cu N trace-uri fiecare) și pentru fiecare atac determinați dacă cheia corectă (K) conduce la cea mai mare corelație.  
 +  - Calculați success rate ca numărul de experimente în care cheia corectă conduce la corelație maxima împărțit la numărul total de experimente. $SR = {#cheia corectă prima / #​experimente}$
  
 +Testați metoda de evaluare success rate folosind diferite valori pentru numărul de trace-uri din fiecare subset (ex. $N \in \{10, 20, 50, 100, 200, 500, 1000\}$) și plotați SR în funcție de N.
 +</​hidden>​
  
ic/labs/07.1611565904.txt.gz · Last modified: 2021/01/25 11:11 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