Modelarea Puterii Absorbite de Circuitele Digitale Integrate
Cuprins
TOC \o 2-3 \t "Capitol, 4,Heading, 5"
Introducere PAGEREF _Toc \h 7
Actualitatea și necesitatea temei PAGEREF _Toc1 \h 7
Problema propusă spre rezolvare PAGEREF _Toc2 \h 9
Obiectivele lucrării PAGEREF _Toc3 \h 9
Metodologia cercetărilor doctorale PAGEREF _Toc4 \h 10
Noutatea științifică a rezultatelor obținute PAGEREF _Toc5 \h 12
Direcții viitoare de cercetare PAGEREF _Toc6 \h 13
Structura lucrării PAGEREF _Toc7 \h 14
Tehnici de criptare și criptanaliză PAGEREF _Toc8 \h 16
Noțiuni introductive PAGEREF _Toc9 \h 16
Tehnici de criptare PAGEREF _Toc10 \h 17
Tehnici de criptanaliză PAGEREF _Toc11 \h 24
Criptanaliza realizată prin „forță brută” PAGEREF _Toc12 \h 24
Criptanaliza diferențială PAGEREF _Toc13 \h 25
Criptanaliza liniară PAGEREF _Toc14 \h 25
Criptanaliza algebrică PAGEREF _Toc15 \h 26
Atacuri de securitate executate asupra circuitelor digitale integrate PAGEREF _Toc16 \h 26
Analiza puterii consumate PAGEREF _Toc17 \h 28
Analiza simplă de putere PAGEREF _Toc18 \h 29
Analiza diferențială de putere PAGEREF _Toc19 \h 30
Metode de protecție împotriva atacurilor de securitate PAGEREF _Toc20 \h 32
Mascare PAGEREF _Toc21 \h 33
Nivelare PAGEREF _Toc22 \h 33
Concluzii PAGEREF _Toc23 \h 34
Modelarea analizei diferențiale de putere PAGEREF _Toc24 \h 35
Caracterizarea curbelor de consum PAGEREF _Toc25 \h 36
Efectul zgomotul electric PAGEREF _Toc26 \h 37
Efectul datelor procesate PAGEREF _Toc27 \h 38
Efectul operației executate PAGEREF _Toc28 \h 39
Exploatarea datelor conținute de curbele de consum PAGEREF _Toc29 \h 39
Premisele analizei diferențiale de putere PAGEREF _Toc30 \h 40
Atacuri de securitate bazat pe coeficienți de corelare PAGEREF _Toc31 \h 44
Particularități ale implementărilor hardware PAGEREF _Toc32 \h 44
Alternative de calculul pentru coeficientul de corelație PAGEREF _Toc33 \h 45
Diferența mediilor PAGEREF _Toc34 \h 46
Ponderea mediilor PAGEREF _Toc35 \h 46
Verificarea probabilității apariției maximului PAGEREF _Toc36 \h 46
Determinarea numărului necesar de măsurători a tiparului consumului de putere PAGEREF _Toc37 \h 47
Concluzii PAGEREF _Toc38 \h 48
Modelarea puterii absorbite de circuitele digitale integrate PAGEREF _Toc39 \h 49
Modele de putere PAGEREF _Toc40 \h 49
Procesor PAGEREF _Toc41 \h 50
Memorie PAGEREF _Toc42 \h 52
Modele de simulare a puterii PAGEREF _Toc43 \h 57
Nivelul circuitului analogic PAGEREF _Toc44 \h 57
Simularea la nivel logic PAGEREF _Toc45 \h 58
Concluzii PAGEREF _Toc46 \h 63
Măsurători experimentale PAGEREF _Toc47 \h 64
Consumul de putere în cazul circuitelor digitale CMOS PAGEREF _Toc48 \h 65
Puterea statică PAGEREF _Toc49 \h 67
Puterea dinamică PAGEREF _Toc50 \h 67
Hazarduri PAGEREF _Toc51 \h 71
Problematica măsurătorilor de curent PAGEREF _Toc52 \h 73
Clasificarea metodelor de măsurare PAGEREF _Toc53 \h 73
Metode specifice măsurării consumului curentului absorbit de circuitul analizat PAGEREF _Toc54 \h 75
Reducerea efectelor surselor de perturbații PAGEREF _Toc55 \h 76
Gruparea semnalelor după compatibilitate PAGEREF _Toc56 \h 77
Metode de masurare a curentului în vederea efectuarii ADP PAGEREF _Toc57 \h 78
Schema de măsurare cu „rezistor în alimentare” PAGEREF _Toc58 \h 79
Schema de măsurare cu „rezistor în masă” PAGEREF _Toc59 \h 81
Circuitul AES PAGEREF _Toc60 \h 81
Algoritmul AES PAGEREF _Toc61 \h 82
Circuitul AES neprotejat PAGEREF _Toc62 \h 86
Circuitul AES protejat PAGEREF _Toc63 \h 88
Standuri experimentale PAGEREF _Toc64 \h 93
Stand de măsurare PAGEREF _Toc65 \h 97
Stand „de simulare” PAGEREF _Toc66 \h 101
Concluzii PAGEREF _Toc67 \h 106
Procesarea curbelor de consum. Analiza diferențială de putere. PAGEREF _Toc68 \h 107
Execuția ADP PAGEREF _Toc69 \h 107
Power Analysis Toolkit PAGEREF _Toc70 \h 110
Rezultate PAGEREF _Toc71 \h 115
Concluzii PAGEREF _Toc72 \h 120
Concluzii finale PAGEREF _Toc73 \h 123
Concluzii PAGEREF _Toc74 \h 123
Contribuții personale PAGEREF _Toc75 \h 126
Diseminarea rezultatelor PAGEREF _Toc76 \h 127
Direcții viitoare de cercetare PAGEREF _Toc77 \h 128
Anexa 1. ADP PAGEREF _Toc78 \h 130
Anexa 2. AES PAGEREF _Toc79 \h 134
Anexa 3. Coduri sursă PAGEREF _Toc80 \h 142
Bibliografie PAGEREF _Toc81 \h 147
Anexa 1. ADP 135
Anexa 2. AEs 139
Anexa 3. Coduri sursă 147
Bibliografie 153
Listă de figuri 163
Listă de tabele 167
Listă de abrevieri 169
Curiculum vitae 175
Introducere
Actualitatea temei de cercetare
Problema propusă spre rezolvare
Obiectivele lucrării
Metodologia cercetărilor doctorale
Noutatea științifică a rezultatelor obținute
Direcții viitoare de cercetare
Structura lucrării
Actualitatea și necesitatea temei
Evoluția fulminantă a tehnologiei de fabricație a circuitelor digitale a permis dezvoltarea acestora astfel încât, în zilele noastre, ele înglobează funcționalitate suficient de puternică pentru a prelua și controla multe din aspectele de rutină ale vieții, în societatea modernă. Progresul tehnologic a adus cu sine multe schimbări precum eficientizarea proceselor tehnologice sau accesul rapid la informații, pentru a evidenția doar câteva. Astfel, circuitele digitale integrate au căpătat o arie de răspândire extrem de variată mergând de la sistemele de telecomunicații până la sisteme bancare. Spre deosebire de informația imprimată pe hârtie, informația în formă electronică poate fi potențial furată de la distanță, și este mult mai ușor să fie interceptată și modificată [39].
Oportunitățile create de dezvoltarea circuitelor digitale integrate au condus însă și la apariția unor noi provocări legate de securitatea datelor vehiculate în mediul digital. Furtul de informație digitală a devenit la fel de valoros ca și cel de bani care, la rândul sau, nu se mai rezumă doar la bancnote stocate într-un seif. Dacă la începutul erei digitale atacatorii puteau afecta doar un grup restrâns de oameni, astăzi lucrurile stau complet altfel, mărturie fiind recentele atacuri de securitate.
Mai mult, problema securității datelor este complicată și de recenta explozie a electronicii portabile care a permis înglobarea a tot mai multe informații cu caracter personal într-un circuit digital integrat, aceasta devenind un bun exploatabil de către atacatori. Un exemplu în acest sens îl reprezintă smart cardurile [16] [31] [43] [50] [51] [85] care sunt utilizate în aplicații bancare sau Pay-TV.
În acest context a apărut necesitatea naturală de a contracara aceste amenințări. Noua ramură a informaticii, numită securitate digitală, are ca scop protejarea sistemelor informatice și a datelor cu caracter secret de diversele atacuri de securitate.
Primele metode de protecție sunt bazate pe „perturbarea” (amestecare) controlată a datelor. Aceste metode s-au dovedit însă ineficiente [100], deoarece sistemele de calcul moderne pot identifica ușor modelele pe baza cărora funcționează metoda. Astfel, una dintre cele mai eficiente metode de protecție este utilizarea de algoritmi criptografici pentru a stoca și procesa, în mod sigur, datele cu caracter secret. Această metodă a devenit larg răspândită putând oferi un înalt grad de protecție. Din păcate însă, ea a mutat atacurile de securitate din zona de comunicație (interfețe cu exteriorul), în zona de procesare a datelor (modulele ce realizează procesarea, respectiv criptarea datelor).
Atacurile clasice, de tip invaziv, (atacuri ce presupuneau intervenția atacatorului direct în circuit, folosind echipamente extrem de scumpe și necesitând cunoștințe detaliate despre circuit) au fost înlocuite de atacuri indirecte, bazate pe legi fizice ce dovedesc legătura dintre datele procesate și o mărime fizică, ușor măsurabilă, proporțională cu acestea.
Această nouă clasă de atacuri de securitate, denumită atacuri de canal secundar, a căpătat în ultimii ani o importanță deosebită datorită ponderii mari în totalul atacurilor de securitate asupra circuitelor digitale. Aceste atacuri de securitate permit, printr-o metodă neinvazivă, extragerea de informații cu caracter secret. Din categoria metodelor de atac de canal secundar, una dintre cele mai răspândite metode de atac este analiza diferențială de putere care, pe baza consumului de energie electrică a circuitului analizat, poate determina datele procesate de acesta. Față de analiza simplă de putere, unde atacatorul trebuie să dețină informații detaliate despre sistemul atacat, analiza diferențială de putere permite identificarea datelor cu caracter secret fără necesitatea cunoașterii unor detalii despre implementarea atacată sau despre tehnologia utilizată. Utilizarea algoritmilor criptografici este în continuare necesară, dar nu mai este suficientă, extragerea datelor cu caracter secret devenind accesibila atacatorilor cu dotări medii, prin folosirea analizei diferențiale de putere.
Necesitatea și actualitatea temei sunt dovedite și de câștigarea unui proiect de cercetare, cu finanțate europeană, [106] care își propune dezvoltarea unei platforme hardware sigure, protejate print-o multitudine de metode de securizare (de exemplu criptografie, detecție de intruziune, sume de control pe instrucțiuni și mesaje de autentificare pentru periferice, etc.) împotriva atacurilor prezente și viitoare.
Problema propusă spre rezolvare
În acest context, trebuie schimbate principiile pe baza cărora se realizează proiectarea și verificarea funcțională a circuitelor digitale integrate. Trebuie ca securitatea digitală să fie considerată parte integrantă din circuit și nu “un modul adăugat” suplimentar, pentru a satisface o cerință. Lipsa unor standarde de securitate, dedicate circuitelor digitale integrate (sau electronicii în general), numărul tot mai mare de breșe de securitate descoperite și atacurile tot mai complexe stau la baza ultimelor cercetări în domeniu.
Lucrarea constă în efectuarea unui analize de securitate asupra unui circuit digital criptografic, realizat fizic [(implementat pe un circuit digital reprogramabil de tip FPGA) și simulat funcțional, la nivel logic și la nivel fizic (tehnologic; eng. “gate level simulation”)], dar și asupra unei implementări software [104] ale aceluiași algoritm criptografic.
Prezenta lucrare își propune analizarea posibilității de utilizare a unor modele simulabile a circuitelor digitale integrate, cu scopul identificării potențialelor breșe de securitate. Pentru îndeplinirea acestui deziderat, direcțiile de cercetare sunt:
studiul metodelor de filtrare a zgomotului electric cauzat de sursele de alimentare și alte module electronice din interiorul circuitului analizat;
analiza modelelor simulabile, cu scopul extragerii informațiilor necesare efectuării unei analize diferențiale de putere;
analiza experimentală a tehnicilor de execuție a unor atacuri de securitate de tip analiză diferențială de putere;
studiul comparativ al analizelor diferențiale de putere executate pe circuite digitale integrate, realizate fizic sau simulate funcțional sau la nivel de poartă logică (nivel fizic, tehnologic);
studiul diverselor ipoteze de atac, (de exemplu distanță sau ponderea Hamming).
În toate cazurile examinate, studiul a constat în:
determinarea punctelor vulnerabile ce pot fi exploatate în cadrul unui atac de securitate de tip analiză diferențială de putere;
determinarea parametrilor ce influențează calitatea, respectiv rezoluția unei analize diferențiale de putere;
validare experimentală a ipotezelor de atac alese.
Obiectivele lucrării
Prezenta teză are ca principal obiectiv dezvoltarea unei metode, teoretice și practice care să permită evaluarea nivelului de protecție împotriva unor atacuri de securitate de tip analiză diferențială de putere, încă din faza de proiectare a circuitelor digitale integrate, când costurile de reproiectare sunt minime. Avantajul constă în extinderea metodelor clasice de proiectare a circuitelor digitale integrate prin introducerea unui pas suplimentar bazat pe simularea funcțională a acestarea și verificarea funcțională a circuitelor digitale integrate. Trebuie ca securitatea digitală să fie considerată parte integrantă din circuit și nu “un modul adăugat” suplimentar, pentru a satisface o cerință. Lipsa unor standarde de securitate, dedicate circuitelor digitale integrate (sau electronicii în general), numărul tot mai mare de breșe de securitate descoperite și atacurile tot mai complexe stau la baza ultimelor cercetări în domeniu.
Lucrarea constă în efectuarea unui analize de securitate asupra unui circuit digital criptografic, realizat fizic [(implementat pe un circuit digital reprogramabil de tip FPGA) și simulat funcțional, la nivel logic și la nivel fizic (tehnologic; eng. “gate level simulation”)], dar și asupra unei implementări software [104] ale aceluiași algoritm criptografic.
Prezenta lucrare își propune analizarea posibilității de utilizare a unor modele simulabile a circuitelor digitale integrate, cu scopul identificării potențialelor breșe de securitate. Pentru îndeplinirea acestui deziderat, direcțiile de cercetare sunt:
studiul metodelor de filtrare a zgomotului electric cauzat de sursele de alimentare și alte module electronice din interiorul circuitului analizat;
analiza modelelor simulabile, cu scopul extragerii informațiilor necesare efectuării unei analize diferențiale de putere;
analiza experimentală a tehnicilor de execuție a unor atacuri de securitate de tip analiză diferențială de putere;
studiul comparativ al analizelor diferențiale de putere executate pe circuite digitale integrate, realizate fizic sau simulate funcțional sau la nivel de poartă logică (nivel fizic, tehnologic);
studiul diverselor ipoteze de atac, (de exemplu distanță sau ponderea Hamming).
În toate cazurile examinate, studiul a constat în:
determinarea punctelor vulnerabile ce pot fi exploatate în cadrul unui atac de securitate de tip analiză diferențială de putere;
determinarea parametrilor ce influențează calitatea, respectiv rezoluția unei analize diferențiale de putere;
validare experimentală a ipotezelor de atac alese.
Obiectivele lucrării
Prezenta teză are ca principal obiectiv dezvoltarea unei metode, teoretice și practice care să permită evaluarea nivelului de protecție împotriva unor atacuri de securitate de tip analiză diferențială de putere, încă din faza de proiectare a circuitelor digitale integrate, când costurile de reproiectare sunt minime. Avantajul constă în extinderea metodelor clasice de proiectare a circuitelor digitale integrate prin introducerea unui pas suplimentar bazat pe simularea funcțională a acestuia.
Astfel, inginerii proiectanți vor putea identifica devreme, în cadrul procesului de proiectare, eventualele breșe de securitate care ar putea fi exploatate de un atacator. Totodată vor putea fi explorate noi arhitecturi de securitate, fără a avea efecte negative asupra produsului final. Înțelegerea atacurilor și deci dezvoltarea tehnicilor de protecție vor deveni mai ușoare. Pentru a putea îndeplinii acest deziderat se propune utilizarea simulărilor funcționale pentru determinarea eventualelor breșe de securitate. Din această cauză este realizată analiza comparativă între atacurile realizate pe circuitul fizic și cele realizate asupra circuitului simulat.
Metodologia cercetărilor doctorale
Au fost evidențiați factorii ce influențează execuția unui atac de securitate de tip analiză diferențială de putere:
în cazul atacurilor executate asupra unor circuite realizate fizic:
zgomotul electric – cauzat de sursele de alimentare și de alte module ale circuitului analizat;
informația redundantă – prea multă informație (supraeșantionarea), introduce informație suplimentară, care însă doar îngreunează calculele, atacul necesitând semnificativ mai mult timp;
în cazul atacurilor executate asupra unor circuite simulate la nivel funcțional:
numărul de eșantioane achiziționate față de ceasul de sistem – un număr prea mic de eșantioane nu permite executarea cu succes a unor atacuri de tip analiză diferențială de putere;
numărul de semnale stocate în cadrul achiziției – stocarea unui număr prea mic de semnale poate omite tranzițiile cu importanță maximă pentru analiza diferențială de putere.
Analiza efectuată în cadrul lucrării a implicat determinarea metodei de conversie a datelor, ce rezultă în urma simulărilor funcționale ale unui circuit digital integrat, în curbe de consum, caracteristice circuitului analizat. Totodată, pentru a putea efectua atacurile de securitate asupra unor circuite fizice, a fost dezvoltată o metodologie de atac, ușor de aplicat, care permite achiziția rapidă, cu un număr minim de resurse, a caracteristicilor de consum ale circuitului analizat.
Analiza efectuată în cadrul lucrării s-a concentrat asupra atacurilor de securitate bazate pe simularea funcțională a circuitelor digitale integrate. Au fost totodată executate atacuri fizice cu scopul de a:
evalua capabilitatea de execuție a unor atacuri de securitate de tip analiză diferențială de putere;
compara rezultatele obținute în urma atacurilor realizate pe circuite fizice și pe circuite simulate.
Analiza a implicat determinarea metodei de conversie a datelor, ce rezultă în urma simulărilor funcționale ale unui circuit digital integrat, în curbe de consum, caracteristice circuitului analizat. Totodată, pentru a putea efectua atacurile de securitate pe circuite fizice, a fost dezvoltată o metodologie de atac, ușor de aplicat care permite achiziția rapidă, cu un număr minim de resurse, a caracteristicilor de consum ale circuitului analizat.
Analiza comparativă a rezultatelor obținute în urma atacurilor de securitate asupra unor circuite simulate la nivel funcțional, respectiv a celor efectuate asupra unui circuit implementat fizic, a presupus două etape:
Modelarea matematică a consumului unui circuit digital reprogramabil;
Modelarea matematica a unui atac de securitate de tip analiză diferențială de putere.
Validarea experimentală a caracteristicilor simulate, respectiv a atacurilor de securitate de tip analiză diferențială de putere, executate asupra circuitelor simulate la nivel funcțional, a fost efectuată în laboratoarele companiei Siemens SRL din Brașov, utilizând echipamentele specifice dezvoltării de circuite digitale integrate (simulator digital, programe de sinteză, etc.).
Achiziția experimentală a caracteristicilor de consum ale circuitului digital analizat a fost realizată tot cu ajutorul companiei Siemens SRL, din Brașov, utilizând un osciloscop digital de înaltă rezoluție. Măsurătorile au fost efectuate pe o placă de dezvoltare, echipată cu un circuit digital reprogramabil. Pentru efectuarea măsurătorilor ,au fost modificate (parțial înlocuite, respectiv filtrate) sursele de alimentare și au fost inserați rezistori de șunt în liniile de alimentare.
Validarea experimentală a fost realizată pentru o serie de implementări standard [93] a algoritmului criptografic AES (zece runde de calcul utilizând o cheie cu o lungime fixă de 128 biți și un bloc de date cu o lungime fixă de 128 biți), după cum urmează:
implementare software:
testată pe un microcontroler standard produs de compania Atmel (ATmega328);
implementare hardware:
testată pe un circuit digital reprogramabil de tip FPGA produs de compania Xilinx (Spartan 3E);
testată pe baza unor simulări funcționale realizate la nivel:
logic – caracteristica de consum ce rezultă reflectă doar tranzițiile logice ale circuitului analizat, fără a lua în calcul timpii de propagare prin porțile logice sau prin rutele circuitului;
fizic – simulare la nivel de poartă logică (“gate level simulation”); sunt luați în calcul toți parametrii care depind de tehnologia, în care este implementat circuitul analizat.
Pentru inginerii proiectanți este utilă cunoașterea, încă din faza de proiectare, când costurile de reproiectare sunt minime, a eventualelor vulnerabilități de securitate care ar permite unui atacator accesul la informații cu caracter secret. Pe parcursul activităților de cercetare descrise în această lucrare a fost dezvoltat un program software, în limbajul de programare Python (limbaj interpretat, portabil, ce permite execuția programelor pe orice sistem de operare), ce permite:
prelucrarea datelor ce rezultă din simularea funcțională a unor circuite digitale;
prelucrarea datelor ce rezultă din achiziția curbelor de consum ale unor circuite digitale integrate realizate fizic;
executarea unor atacuri de securitate de tip analiză diferențială de putere;
explorarea, rapidă și fără eforturi, a noi arhitecturi de securitate sau a unor noi metode de protecție.
Programul are o structură modulară ceea ce deschide calea unor dezvoltări ulterioare.
Lucrarea a fost realizată pe baza unui studiu bibliografic extins pe parcursul căruia au fost studiate teze de doctorat, articole științifice din literatura de specialitate și cărți tehnice care pot fi regăsite în bibliografia lucrării.
Noutatea științifică a rezultatelor obținute
Elementele de noutate pe care le introduce lucrarea în analiza efectuată sunt următoarele:
dezvoltarea unei tehnici ce permite executarea de atacuri de securitate de tip analiză diferențială de putere pe baza unor simulări funcționale;
efectuarea unui studiu comparativ între analiza diferențială de putere efectuată pe un circuit implementat fizic și unul simulat funcțional, la nivel logic și la nivel fizic;
dezvoltarea unui produs software de evaluare rapidă a nivelului de securitate a circuitelor digitale integrate bazat pe simulări funcționale ale acestora, pe baza rezultatelor obținute în urma aplicării tehnicii dezvoltate anterior și a verificărilor experimentale.
Studiile efectuate își propun determinarea:
metodelor tehnice de conversie a datelor rezultate din simularea funcțională la nivel logic și fizic a circuitelor digitale integrate;
metodelor tehnice optime pentru realizarea unor atacuri de tip analiză diferențială de putere;
modelelor de execuție ale atacurilor de securitate de tip analiză diferențială de putere;
tehnicilor eficiente (ușor de aplicat cu un efect maxim) de protecție împotriva respectivelor atacuri.
Rezultatele lucrării permit determinarea directă, în timpul procesului de proiectare, a eventualelor breșe de securitate. Prin evaluarea acestora pot fi determinate metode de protecție care la rândul lor pot fi evaluate din punct de vedere al complexității și securității. Totodată rezultatele lucrării permit explorarea unor noi metode tehnologice fără a fi necesară realizarea fizică a circuitului digital integrat.
Direcții viitoare de cercetare
Considerând cercetările întreprinse alături de rezultatele prezentate în cadrul acestei lucrări, direcțiile viitoare de cercetare pot fi:
extinderea numărului de ipoteze de calcul pe baza cărora programul (Power Analysis Toolkit) poate efectua analize diferențiale de putere asupra unor circuite digitale integrate, simulate dar și implementate fizic;
utilizarea modelelor simulabile, realizate prin modelarea la nivel de sistem (eng. „Electronic System Level Design”) a circuitelor digitale integrate, pentru a extrage informațiile necesare executării analizei diferențiale de putere. Această tehnică permite, folosind limbaje de nivel înalt (SystemC, C++, Matlab), modelarea funcțională a unui circuit digital integrat, fără a ține cont de detaliile de implementare (tehnologie, timp de execuție, respectiv simulare, etc.). Un astfel de model funcțional poartă numele de specificație executabilă și are ca scop explorarea de noi arhitecturi, respectiv metode de implementare eficiente ale circuitelor digitale integrate.
Structura lucrării
Teza de doctorat conține un număr de șapte capitole alături de un număr de secțiuni suplimentare: bibliografie, listă de notații, listă de abrevieri, listă de tabele, listă de figuri și trei anexe.
Capitolul întâi, intitulat Introducere prezintă motivația tezei alături de introducerea tematicii și de prezentarea obiectivelor urmărite. În cadrul acestui capitol sunt prezentate succint metodele și tehnicile abordate, alături de o prezentare, pe scurt, a rezultatelor obținute.
Capitolul al doilea, intitulat Tehnici de criptare și criptanaliză documentează stadiul actual în domeniul securității digitale, al analizei diferențiale de putere și al electronicii digitale utilizate în criptografie digitală. Este realizată o prezentare amplă a conceptelor aferente domeniului securității digitale avându-se în vedere actualitatea și aplicabilitatea acestuia. Capitolul conține o descriere a tehnicilor de criptanaliză alături de aspecte teoretice și practice aferente aplicării acesteia. Capitolul descrie totodată algoritmii cei mai utilizați în cadrul aplicațiilor criptografice și efectele criptanalizei, respectiv a analizei diferențiale de putere, asupra acestora.
Capitolul al treilea, intitulat Modelarea analizei diferențiale de putere descrie, pe larg, tehnica analizei diferențiale de putere. Acest capitol prezintă premisele necesare analizei diferențiale de putere alături de metodele uzuale de executare a unei astfel de analize. Este realizată o comparație a acestei metode cu alte metode de criptanaliză. Totodată sunt prezentați, pe baza unor exemple practice, factorii care influențează performanțele unei analize diferențiale de putere. În continuare, acest capitol tratează algoritmii de calcul pe baza cărora se procesează informațiile referitoare la analiza diferențială de putere. Validarea experimentală a metodelor descrise în acest capitol este prezentată în capitolele patru, cinci și șase, capitole ce prezintă implementarea practică a unui program ce execută atacuri de securitate de tip analiză diferențială de putere.
În capitolul patru, intitulat Modelarea puterii absorbite de circuitele digitale integrate, sunt prezentate tehnicile de modelare a puterii absorbite de circuitele digitale integrate, fie ele realizate fizic sau simulate. În cadrul acestei faze, accentul este pus pe realizarea unor modele ce permit evaluarea, încă din faza de proiectare, a consumului de energie electrică al circuitului analizat. Din acest motiv, sunt prezintate tehnicile de simulare a circuitelor integrate digitale, punând în evidență importanța acestora în cadrul procesului de concepție și proiectare. Sunt prezentate metodele de calcul a consumului prezumptiv al unui circuit integrat digital, pe baza tranzițiilor (stărilor) logice ale circuitului analizat, folosind simulări la nivel funcțional, dar și la nivel fizic.
Capitolul cinci, intitulat Măsurători experimentale prezintă pe larg metodele experimentale de execuție a unor atacuri de tip analiză diferențială de putere. Sunt prezentate premisele legate de instrumentația de laborator necesară, de tehnicile de filtrare a zgomotului electric și de pre-procesare a caracteristicilor de consum achiziționate. Sunt prezintate metode teoretice și practice de filtrare a zgomotului electric, cauzat de sursele de alimentare sau de alte module ale circuitului analizat. Sunt descrise metodele prin care pot fi determinate caracteristicile de consum atât ale unor circuite dedicate, cât și a unor circuite complexe în cadrul cărora modulul criptografic reprezintă doar un sub-modul.
Sunt prezentate standurile experimentale, cu ajutorul cărora au fost realizate măsurătorile experimentale, standul de măsură dar și standul „de simulare” cu ajutorul căruia au fost verificare circuitele criptografice, în faza de implementare și au fost generate curbele de consum pentru circuitele simulate.
Capitolul șase, intitulat Procesarea curbelor de consum. Analiza diferențială de putere prezintă execuția, cu ajutorul programului de analiză dezvoltat (Power Analysis Toolkit – PAT), a unor atacuri de securitate de tip analiză diferențială de putere. Sunt descrise metodele utilizate pentru validarea experimentală a programului dezvoltat alături de ipotezele de atac utilizate. Sunt analizate două implementări ale algoritmului criptografic AES, una software și una hardware. Implementarea hardware este supusă atât unor atacuri simulate (simulare la nivel logic, funcțional dar și simulare la nivel fizic, de poartă logică), cât și unor atacuri fizice (pe o placă de dezvoltare echipată cu un circuit digital reprogramabil).
În cadrul acestui capitol sunt descrise metodologia de atac și potențialele breșe de securitate utilizabile. Pe baza datelor obținute în urma atacului este analizată capacitatea de protecție a unor mecanisme de apărare împotriva atacurilor de tip analiză diferențială de putere.
Ultimul capitol, intitulat Concluzii finale, face o sinteză a lucrării și prezintă rezultatele obținute în faza de validare experimentală. De asemenea, se realizează o analiză a celor două metode expuse, fiind subliniate limitările analizei diferențiale de putere bazate pe simulări ale unui circuit criptografic digital, integrat. În final sunt prezentate posibile direcții de dezvoltare alături de potențiale îmbunătățiri, nu înainte însă de a evidenția contribuțiile personale.
Tehnici de criptare și criptanaliză
Noțiuni introductive
Tehnici de criptare
Tehnici de criptanaliză
Atacuri de securitate executate asupra circuitelor digitale integrate
Analiza puterii consumate
Metode de protecție împotriva atacurilor de securitate
Concluzii
Multă vreme singurele cerințe de proiectare au fost dictate de diverși parametri cum ar fi complexitatea sau performanța sistemelor înglobate. Arhitectura acestora era definită de nevoia naturală de a rezolva anumite probleme tehnice, complexe, luându-se în calcul fiabilitatea și ușurința în operare. Astfel, au apărut sisteme complexe de comandă și control, bazate pe circuite digitale integrate, ce automatizează diverse aspecte ale societății umane. Ca orice „nouă descoperire” nici aceasta nu a fost ocolită de probleme [24] [13]. Sistemele înglobate dezvoltate au reprezentat o nouă tentație care s-a cristalizat sub forma unor atacuri de securitate. Acestea au impus adoptarea unor noi soluții tehnice de protecție [94] a circuitelor digitale integrate și deci a sistemelor înglobate [20] [69].
Noțiuni introductive
Explozia recentă a sistemelor înglobate (eng. „embedded systems”), bazate pe circuite digitale integrate, a reprezentat un progres extraordinar pentru omenire. Din punct de vedere tehnologic progresul a însemnat pe lângă miniaturizarea componentelor de bază (tranzistori, rezistori și condensatori) și înglobarea unor funcții tot mai complexe alături de schimbarea mentalității inginerilor proiectanți. Sistemele înglobate au devenit complexe, distribuite și autonome [101] [71], executând astfel multe din acțiunile de rutină, odinioară efectuate de operatori umani.
Gradul înalt de complexitate a proceselor controlate, cerințele ridicate de fiabilitate alături de, în cele mai multe cazuri, utilizarea unei infrastructuri publice de comunicație au impus adoptarea unor soluții tehnice de securizare a sistemelor automate de control [60]. La începutul anilor `90 inginerii proiectanți au fost puși în fața unei noi provocări – telecomunicațiile. Această nouă era a dus însă cu sine noi provocări care s-au cristalizat sub numele de „securitate digitală”. Acest termen definește tot ceea ce înseamnă atacuri de securitate asupra unor sisteme digitale, dar și metodele de contraatac sau de protecție, respectiv detecție a acestora [75]. Primele atacuri notabile asupra unor sisteme digitale au avut loc tot în anii `90. Aceste incidente au îngrijorat atât autoritățile cât și inginerii proiectanți care lucrează în domeniu, motiv pentru care au fost luate măsuri drastice de protecție. Acestea au presupus în general securizarea liniilor de comunicație, utilizând metode criptografice. Pe baza unor implementări software sau hardware ale unor algoritmi criptografici, au fost dezvoltate sisteme digitale integrate sigure și fiabile, care permiteau schimbul de informații între unul sau mai mulți parteneri, utilizând o rețea publică de comunicație.
Această nouă abordare, a fost un real succes și a funcționat fără probleme până în anul 1999 când a fost prezentată o nouă formă de atacuri de securitate [36]. Acest nou atac nu mai avea ca țintă (directă) sistemele de comunicație, ci erau orientate spre sistemele de calcul în sine. Bazându-se pe o serie de legi fizice care descriu legătura dintre o mărime fizică, ușor măsurabilă și datele procesate de circuitul analizat, noua metodă ataca direct elementul de calcul și nu canalele de comunicație. Astfel, chiar dacă circuitul digital integrat era protejat în exterior, el rămânea totuși vulnerabil.
Tehnici de criptare
Sistemele moderne de securitate, utilizate în scopul securizării circuitelor digitale integrate, se bazează pe metode criptografice (vgr. „kryptós”, ascuns, și –„grafie”, scriere; scriere cu alfabet secret) [48]. Metodele criptografice moderne sunt în esență funcții matematice ce realizează o operație reversibilă asupra unor date de intrare (denumite „text în clar”), utilizând ca informație secretă o așa-numită cheie de criptare. Rezultatul operației matematice (denumită operație criptografică) poartă numele de cod.
Ca și piloni ai tehnicilor criptografice se consideră:
Confidențialitatea: Se asigură faptul că datele sunt disponibile numai destinatarilor. Aceasta se obține prin criptarea datelor înainte de transmitere astfel încât acestea nu pot fi citite în timpul transmiterii, chiar dacă pachetul de date este monitorizat sau interceptat de către un atacator. Doar partenerul care deține cheia corectă este capabil sa decripteze datele.
Integritatea: Datele sunt protejate de o modificare neautorizata în timpul transmiterii, astfel încât datele recepționate sunt exact identice cu cele transmise. Se utilizează funcții de hașurare (eng. „hash” [108]) sau semnături digitale realizate pe baza unei infrastructuri criptografice publice pentru „semnarea” pachetelor de date (a mesajelor).
Disponibilitatea: Oferă capacitatea unui sistem de a fi mereu pregătit pentru acțiunile utilizatorului. Aceasta primitivă este o combinație a conceptelor de securitate și siguranță care, combinate, permit timpi îndelungați de funcționare fără probleme.
Autentificarea: Verificarea originalității unui mesaj prin verificarea legitimității expeditorului de către destinatar.
Ne-repudierea: Verificarea ce asigură că expeditorul unui mesaj este unica persoană care l-ar fi putut trimite – expeditorul nu poate contesta că a transmis mesajul. Ne-repudierea este o proprietate a mesajelor care conțin semnături digitale, atunci când este folosită tehnologia cheilor publice.
Inițial, se considera că un algoritm criptografic este sigur doar dacă el este secret. Experiența însă a infirmat această supoziție astfel încât principiile enunțate de Auguste Kerckhoffs [32] au devenit regulile de bază ale criptografiei moderne. Cele mai importante dintre aceste reguli sunt:
Un sistem criptografic ar trebuie să fie imposibil de spart în practică, chiar dacă teoretic pot exista anumite limitări;
Algoritmul criptografic nu ar trebui să fie secret; avantajul unui algoritm public ar fi dat de faptul că numărul mare de oameni ce ar avea acces la el ar putea detecta eventualele breșe de securitate, care astfel ar putea fi soluționate din timp;
Cheia de criptare trebuie să fie singurul secret și ar trebui să poată fi schimbată ușor;
Sistemul criptografic trebuie să fie simplu și robust, astfel încât utilizatorii să îl poată utiliza fără eforturi mari.
Plecând de la aceste principii, au fost dezvoltate mai multe clase de algoritmi criptografici, dintre care cei simetrici și cei asimetrici au ieșit în evidență. Pentru a evidenția diferențele celor două clase de algoritmi, se vor considera următoarele personaje fictive, tipice literaturii de specialitate [110]:
Alice – partenerul criptografic numărul 1. Alice trimite și recepționează mesaje criptate de la Bob;
Bob – partenerul criptografic numărul 2. Bob recepționează și trimite (răspunde) mesaje criptografice;
Mallory – atacatorul. Mallory dorește să intercepteze comunicația între Alice și Bob.
În cazul criptografiei simetrice atât Alice cât și Bob utilizează aceiași cheie secretă (Figura 2.1). Astfel, atât Alice cât și Bob utilizează aceiași cheie pentru a cripta mesajul .Alice utilizează funcția de criptare în timp ce Bob utilizează funcția de decriptare .
Figura 2.1 Criptografie simetrică
Utilizând un canal sigur de comunicație, cei doi parteneri convin asupra unui secret comun care este reprezentat de cheia criptografică utilizată. Pentru a cripta un mesaj, Alice utilizează cheia împreună cu textul în clar pentru a obține o criptogramă. Aceasta este apoi transmisă printr-o metodă publică de comunicație (n.r. Internet) către Bob. Acesta utilizează din nou cheia pentru a decripta mesajul trimis de Alice. În cazul în care Mallory dorește interceptarea convorbirii celor doi, el va avea nevoie de cheia criptografică. Singurul punct vulnerabil de atac este mecanismul prin care cheia simetrică este convenită de cei doi parteneri. Dacă mecanismul de stabilire a cheii are o vulnerabilitate atunci Mallory poate intercepta cheia putând „asculta” convorbirea celor doi sau prelua identitatea unuia dintre cei doi parteneri.
Algoritmii simetrici de criptare pot fi împărțiți la rândul lor în algoritmi „pe blocuri” și algoritmi „pe fluxuri”. Algoritmii ce procesează datele „pe blocuri” sunt mai puternici, fiind însă dezavantajați de faptul că fiecare bloc de date trebuie să aibă totdeauna aceiași lungime, indiferent de cantitatea de date utile conținută de acesta. Algoritmii ce procesează datele sub formă de „fluxuri” sunt caracterizați de o viteză mai mare de procesare (procesează câte un caracter – octet – pe rând) fiind însă considerați inferiori celor „pe blocuri”. Din acest motiv acești algoritmi nu sunt utilizați atât de des în aplicații critice.
Din clasa algoritmilor simetrici de criptografie pot fi enumerați DES [97], RC2, RC5, RC6 [70], Blowfish și bine-cunoscutul AES [93].
Criptografia asimetrică se bazează pe o pereche de chei: una secretă, proprie fiecărui partener de comunicație și una publică, cunoscută tuturor partenerilor de comunicație. După cum se poate observa în Figura 2.2. doar operația de decriptare este executată într-un mediu securizat. Astfel, prin intermediul funcțiilor asimetrice și mesajul este criptat cu ajutorul cheii de criptare (cheia publică) și trimis destinatarului sub forma criptogramei . Destinatarul va utiliza cheia de decriptare (cheia privată) pentru a decripta mesajul.
Figura 2.2 Criptografie asimetrică
În cazul în care Alice dorește să îi trimită lui Bob un mesaj criptat, sunt executați următorii pași (Figura 2.3):
se descarcă, de la autoritatea de certificare, cheia publică a lui Bob;
se încarcă datele în clar alături de cheia publică a lui Bob în algoritmul criptografic;
rezultatul criptării (criptograma) este trimis lui Bob folosind orice metodă de comunicație, indiferent dacă este sigură sau nu.
Figura 2.3 Criptarea asimetrică a mesajelor
Pentru a decripta mesajul, Bob va utiliza cheia sa privată pe care o va încărca alături de criptogramă, în același algoritm criptografic utilizat de Alice.
Figura 2.4 Semnarea digitală a mesajelor
Datorită proprietăților criptografiei asimetrice, a fost dezvoltată o nouă operație criptografică și anume semnarea digitală a mesajelor (Figura 2.4). Această operație are ca scop validarea originalității unui mesaj, criptat sau nu, utilizând, din nou, perechea de chei private-publice a partenerilor de comunicație.
Pentru a semna un mesaj, Alice are nevoie doar de cheia ei privată pe care o încarcă alături de mesajul text, în clar, în algoritmul de criptare. Rezultatul operației criptografice este transmis lui Bob, care la rândul său utilizează cheia publică a lui Alice pentru a decripta mesajul. Dacă mesajul a fost modificat, de către un atacator sau de către o eroare a sistemului de comunicație, Bob nu va putea decripta corect mesajul, (semnătura nu se va potrivii) semnalând astfel o problemă de autenticitate.
Din nou, ca și în cazul criptării simetrice, Mallory va avea nevoie de cheia privată a unuia (sau a ambilor) parteneri de comunicație. În acest fel va putea decripta mesajele celor doi sau va putea fura identitatea unuia dintre parteneri.
Avantajele, respectiv dezavantajele celor două categorii de algoritmi sunt prezentate în Tabelul 2.1.
Tabelul 2.1 Comparație între criptarea simetrică și cea asimetrică
Datorită aspectelor prezentate în Tabelul 2.1, la ora actuală cei mai utilizați algoritmi criptografici sunt cei simetrici. Dintre aceștia algoritmul cu cea mai răspândită utilizare este Advanced Encryption Standard (AES) [93] sau Rijndael. Acest algoritm, disponibil ca implementare software sau hardware, are următoarele caracteristici:
bloc de date cu o lungime de 128 sau 192 biți;
cheie criptografică cu o lungime de 128 sau 192 biți;
10 sau 12 runde de calcul.
Pe parcursul acestei lucrări prin termenul de „AES” va fi referită o implementare conformă cu standardul [93], respectiv cu lungimea blocului de date și a cheii de 128 biți ce sunt procesate pe parcursul a 10 runde de calcul.
Tehnici de criptanaliză
Criptanaliza constă în studiul metodelor de „dezlegare” (vgr. „kryptós”, ascuns, și „analýein”, a dezlega) a secretelor conținute de criptograme, respectiv de algoritmii criptografici. În general, această practică este asociată cu spargerea unor algoritmi criptografici și furtul de informații cu caracter secret. În contextul dezvoltării unor sisteme digitale de protecție, termenul de criptanaliză se referă însă la tehnicile de determinare a breșelor de securitate care ar putea fi exploatate de atacatori.
Încă de la apariția primilor algoritmi criptografici, criptanaliza a prezentat o continuă provocare atât pentru atacatori cât și pentru dezvoltatori. În acest context, concomitent cu apariția algoritmilor criptografici au fost dezvoltate o serie de tehnici de criptanaliză, cele mai puternice (prin tehnici puternice de criptanaliză sunt referite, pe parcursul acestei lucrări, acele tehnici care permit extragerea rapidă, cu efort minim, a datelor cu caracter secret din algoritmii criptografici cu largă răspândire) dintre acestea fiind prezentate în cele ce urmează.
Criptanaliza realizată prin „forță brută”
Atacurile de tip „forță brută” (eng. „brute force”) sunt cele mai vechi și probabil cele mai comune atacuri de securitate, executate asupra algoritmilor criptografici. Denumite și atacuri automate, acestea se referă, în principiu, la încercarea de a „ghicii” informația secretă. Metoda presupune căutarea exhaustivă a cheii, fără a utiliza metode sau algoritmi ajutători, meniți a reduce numărul de încercări. Această metodă are avantajul de a fi extrem de simplă – tot ce este necesar este un program de calculator care „încearcă” pe rând fiecare valoare până o identifică pe cea corectă. Totodată această metodă are și un mare dezavantaj. Dacă pentru sisteme criptografice slabe sau pentru chei de criptare cu lungime mică această tehnică poate fi extrem de eficientă, în cazul unei chei cu o lungime suficient de mare numărul de încercări necesare este atât de mare încât executarea practică a unui astfel de atac devine imposibilă. Astfel, considerând algoritmul AES standard, cu o lungime a cheii de 128 biți sunt necesare încercări. Această metodă pleacă de la premisa că orice algoritm poate fi spart, indiferent de existența unei vulnerabilități de securitate.
În ultimii ani această metodă a cunoscut un nou avânt datorat evoluției tehnicii de calcul. Astfel în anul 1998, EFF DES Cracker [98] a reușit, cu succes, recuperarea cheii de criptare utilizând o serie de circuite digitale integrate fabricate special cu acest scop. O nouă „mașină de atac”, de această dată bazată pe circuite digitale reprogramabile (eng. „FPGA”) a reușit, cu succes, recuperarea cheii de criptare dintr-o implementare a algoritmului DES. Aceasta „mașină” poartă numele de COPACABANA [21] [96] și a fost dezvoltată în anul 2007 având ca baza de calcul 128 de circuite digitale reprogramabile de tip Xilinx Virtex-4.
Criptanaliza diferențială
Criptanaliza diferențială este o metodă veche, care prevede studierea modului în care diferențele dintre diversele texte în clar influențează diferențele dintre criptogramele rezultante. Metoda a fost descoperită inițial, în 1974, de către compania IBM, dar a fost ținută secretă deoarece prezenta un pericol real la adresa algoritmilor criptografici folosiți la acea vreme. La sfârșitul anilor ’80 însă, metoda a fost „redescoperită” [8] astfel încât a devenit rapid una dintre cele mai utilizate metode de criptanaliză. Criptanaliza diferențială utilizează texte în clar, care sunt separate între ele printr-o diferență constantă, definită de o funcție matematică. După criptarea acestor texte în clar, atacatorul calculează diferența dintre criptogramele obținute. Scopul acestei analize este descoperirea unor modele statistice de distribuție a celor două diferențe.
Acest tip de criptanaliză este eficientă împotriva algoritmilor criptografici mai vechi, dezvoltați înainte ca metoda criptanalizei diferențiale să fie făcută publică. Metoda însă nu este la îndemâna oricui, deoarece atacatorul trebuie să dețină un număr ridicat de perechi text în clar – criptogramă.
Criptanaliza liniară
Este cea mai răspândită metodă de atac asupra algoritmilor criptografici ce operează cu blocuri de date. Metodă apărută în anii ’90 [45] permite identificarea, pe baza unor perechi de texte în clar – criptograme, a cheii de criptare utilizate. Metoda criptanalizei liniare are două etape:
Construirea unui set de ecuații liniare ce descriu textul în clar, criptogramele și cheia de criptare utilizată;
Utilizarea ecuațiilor, împreună cu perechile cunoscute de texte în clar – criptograme, pentru a determina cheia de criptare utilizată.
Această metodă este simplă și permite extragerea cu succes a cheilor de criptare. Dezavantajul metodei constă în necesitatea de a avea un set cunoscut de perechi text în clar – criptograme. De cele mai multe ori această premisă nu este îndeplinită de atacatori, motiv pentru care metoda nu poate fi aplicată în practică. Totuși această tehnică este extrem de populară în determinarea gradului de securitate al noilor algoritmi criptografici.
Criptanaliza algebrică
Criptanaliza algebrică este o metodă matematică ce presupune rezolvarea unui set de ecuații pentru determinarea cheii de criptare. Metoda practică constă în exprimarea operațiilor matematice ale algoritmului criptografic sub forma unui set de ecuații. Datele cunoscute sunt apoi introduse în sistemul de ecuații creat. Apoi sistemul de ecuații este rezolvat relevând cheia de criptare. Atacatorul este liber să aleagă orice sistem algebric dorește, atâta timp cât setul de ecuații descrie corect funcționarea algoritmului criptografic. Din cauza numărului mare de ecuații și a neliniarități acestora, metoda criptanalizei algebrice nu este aplicabilă în practică. Totodată, pentru reducerea riscului ridicat de această metodă, criptologii au dezvoltat o serie de algoritmi criptografici puternic neliniari. O metodă comună de neliniarizare este utilizarea așa-numitelor S-BOX-uri [11] [12] [77], care prevăd substituirea neliniară a octeților de date utilizând tabele cu valori predefinite, din care sunt alese valorile de substituție pe baza unui algoritm de selecție.
Atacuri de securitate executate asupra circuitelor digitale integrate
Considerând tehnicile clasice de criptanaliză prezentate anterior, în ultimii ani au fost dezvoltate metode noi de atac asupra circuitelor criptografice accentul fiind pus pe circuitele digitale integrate. Plaja atacurilor însă este extrem de largă, variind de la atacuri simple și ieftine și mergând până la atacuri extrem de complexe ce implică timpi îndelungați de atac și un număr impresionant de resurse. Atacurile de securitate executate asupra circuitelor digitale integrate ce înglobează module criptografice pot fi clasificate în diverse moduri. Una dintre clasificări însă reflectă însăși metodologia de atac, după cum urmează:
Atacuri pasive: circuitul criptografic este operat conform specificațiilor constructive, astfel încât cheia secretă este obținută doar prin observarea proprietăților fizice ale circuitului (de exemplu timpul de execuție sau puterea electrică consumată) [42];
Atacuri active: circuitul criptografic este manipulat direct, prin intruziune fizică [29]. Sunt folosite una sau mai multe metode de intruziune (de exemplu manipularea intrărilor și a ieșirilor, a tensiunii de alimentare sau a mediului înconjurător circuitului) pentru a extrage informația secretă. De regulă, pentru a putea executa un atac de acest gen, este necesar un număr ridicat de resurse (de regulă un laborator de microelectronică dotat cu aparatură performată) și de circuite identice (șansa ca atacul să fie executat, cu succes, din prima încercare, este foarte mică).
Cea de-a doua clasificare [42] reflectă interfața exploatată pentru execuția atacului. Aceste interfețe, fie ele interne (de exemplu magistrale de date, puncte de depanare, etc.) sau externe, oferă un număr ridicat de puncte de atac. În acest context pot fi diferențiate următoarele tipuri de atac:
Atacuri neinvazive: nu presupun manipularea fizică a circuitelor digitale integrate, motiv pentru care nu pot fi detectate urme directe (fizice) ale atacului efectuat. Aceste atacuri de securitate nu presupun utilizarea de aparatură scumpă, motiv pentru care sunt un pericol practic pentru circuitele criptografice. Această clasă de atacuri, poartă numele de „atacuri de canal secundar” (eng., „side channel attacks”), deoarece exploatează o informație secundară care este direct proporțională cu informația de interes. Atacurile neinvazive au primit o atenție deosebită în ultimii ani datorită avantajelor pe care le oferă. Dintre aceste se pot distinge:
atacuri ce exploatează timpii de execuție [35] [18];
atacuri ce exploatează variațiile instantanee de consum ale circuitului analizat [36] [56];
atacuri ce exploatează erorile ce apar în cazul în care circuitul atacat este supus unor parametrii ce depașesc limitele specificate de producător [5];
atacuri ce exploatează radiația electromagnetică a circuitului [7] [19] [66] [67].
Altă ramură a atacurilor neinvazive este axată pe inducerea de erori în timpul funcționării circuitului fără însă a intervenii fizic. Erorile pot fi induse în acest caz, prin modificarea parametrilor funcționali ai circuitului, respectiv prin modificarea temperaturii ambientale sau prin inducerea de pulsuri de scurtă durată (parazite) pe liniile de alimentare sau ale semnalelor de ceas.
Atacuri semi-invazive: presupun înlăturarea carcasei circuitului digital integrat, oferind acces direct la pastila de siliciu [76]. Aceste atacuri presupun determinarea conținutului memoriilor, fără a utiliza însă metode directe de interacțiune cu siliciul (nu sunt utilizate vârfuri de test și nici alte metode de „citire” a magistralelor de date sau adrese). Scopul acestor atacuri este de a induce erori în locațiile de memorie atacate, utilizând radiație nucleară, câmpuri electromagnetice sau raze focalizate de lumină [80]. Echipamentul necesar unor atacuri semi-invazive nu este scump (comparativ cu cel necesar unor atacuri invazive). Totuși efortul necesar executării unor astfel de atacuri este mare în contextul unor circuite complexe (simpla identificare a zonelor de interes presupune o muncă minuțioasă alături de cunoștințe detaliate despre arhitectura circuitului atacat).
Atacuri invazive: sunt acele atacuri care presupun accesul fizic la toate componentele circuitului atacat. Atacurile invazive sunt considerate extrem de periculoase, deoarece nu există nici o limită în ceea ce privește posibilitățile pe care atacatorul le are la dispoziție. În cazul circuitelor digitale integrate, aceste atacuri presupun înlăturarea carcasei circuitului (prin eroziune chimică sau mecanică), atacatorul obținând astfel acces la pastila de siliciu. Cu ajutorul vârfurilor de test pot fi „citiți”, în timp real, regiștri sau magistralele de date ale sistemului. Astfel atacatorul nu trebuie decât să „asculte” traficul de date din interiorul circuitului pentru a identifica informațiile cu caracter secret. Totodată aceste atacuri pot fi și mai complicate, implicând manipularea informației din interiorul circuitului. Cu ajutorul unor raze direcționate de ioni sau a unor unde LASER puternice, un atacator poate forța comutarea logică a unui bit de date. Deși dificil de realizat, necesitând accesul la aparatură de laborator, s-a constatat un număr în creștere al acestor atacuri.
Datorită potențialului ridicat de extragere a informațiilor cu caracter secret, dar și datorită ușurinței în aplicare, tehnica analizei diferențiale de putere a primit o atenție sporită. Mărturie a acestui fapt este numărul ridicat de articole publicate în această direcție.
Analiza puterii consumate
Conceptul analizei de putere electrică consumată se bazează pe faptul că orice circuit electronic absoarbe energie electrică în timpul funcționării sale. În general, puterea absorbită este proporțională cu activitatea circuitului, acest fenomen fiind exploatat în cadrul atacurilor de securitate neinvazive. Tehnica analizei puterii consumate exploatează astfel legătura dintre consumul instantaneu de curent electric și datele procesate de un circuit. Această tehnică a apărut în anii ’90 [37] și a reprezentat o piatră de temelie a criptanalizei moderne.
Analiza puterii consumate este o tehnică simplă care prevede înregistrarea curbelor (sau caracteristicilor) de consum ale circuitului analizat, pe parcursul operației de interes. Aceste curbe au o formă distinctivă astfel încât atacatorul poate „determina” operația și datele care sunt executate de circuit, la un moment dat. În cazul circuitelor criptografice, fiecare algoritm are o formă tipică, permițând astfel identificarea metodei criptografice (Figura 2.5) doar pe baza analizei vizuale a curbelor de consum.
Figura 2.5 Curba de consum a unei operații de criptare utilizând algoritmul AES
Tehnica analizei de putere a cunoscut o evoluție rapidă în ultimii ani, astfel încât astăzi pot fi distinse două categorii: analiza simplă de putere (ASP – eng. „simple power analysis”, SPA) și analiza diferențială de putere (ADP – eng. „differential power analysis”, DPA).
Analiza simplă de putere
Analiza simplă de putere constă în analiza vizuală a variației curentului absorbit de circuitul analizat în timp ce execută operația criptografică de interes. Variațiile curentului absorbit indică astfel operația efectuată, la un moment dat de timp, de către circuit. Dacă înregistrarea curbelor a fost efectuată cu un osciloscop de înaltă, rezoluție pot fi distinse chiar și instrucțiunile individuale efectuate de un procesor de uz comun. Primii algoritmi criptografici atacați cu ajutorul acestei metode au fost DES și RSA. În cazul algoritmului DES, curba de consum relevă clar rundele de calcul. Mai mult, prin analiza atentă a acestora, pot fi observate detalii legate de implementarea algoritmului. În cazul algoritmului RSA, analiza simplă de putere evidențiază operațiile efectuate (multiplicare sau ridicare la pătrat), ducând din nou la identificarea informației vehiculate de circuitul analizat.
După cum se poate observa și în Figura 2.5, analiza simplă de putere evidențiază o serie de detalii legate de algoritmul criptografic, respectiv a implementării acestuia:
operația criptografică durează 283µs;
algoritmul executat are 10 runde de calcul: primele 9 runde sunt identice ca lungime, iar cea de-a 10-ea este mai scurtă;
prima parte a operației înregistrate are un consum relativ constant;
la sfârșitul operației este vizibilă o creștere rapidă a consumului pentru o scurtă perioadă de timp.
Luând în calcul observațiile de mai sus, alături de faptul că analiza a fost efectuată pe un microcontroler de uz comun (ATmega328, 16MHz), se poate concluziona faptul că algoritmul analizat este o implementare software a clasicului AES:
consumul inițial este dat de procesul de încărcare a datelor, respectiv de accesul la memoria de lucru;
cele 10 vârfuri de consum sunt tipice celor 10 runde de calcul ale algoritmului AES: primele 9 identice ca lungime iar cea de-a 10-ea mai scurtă deoarece operația MixColumns nu mai este executată [93];
algoritmul implementat utilizează o cheie de 128 biți alături de un bloc de date de dimensiune identică.
După cum se poate observa, analiza simplă de putere poate fi eficientă, însă rezultatele sale depind de experiența atacatorului. Fără a cunoaște în prealabil detalii legate de algoritmul utilizat sau de implementarea acestuia, este dificilă extragerea informațiilor utile din analiza vizuală a curbelor de consum. Totuși analiza simplă de putere are o mare utilitate practică ajutând la identificarea algoritmilor criptografici, respectiv a momentului de timp când sunt executate operațiile criptografice de interes.
Analiza diferențială de putere
Tehnica analizei diferențiale a puterii consumate sau pe scurt analiza diferențială de putere (ADP) este o tehnică de atac prezentată pentru prima oara în anul 1998 [37] [38]. Datorită avantajelor evidente oferite de aceasta, pe parcursul ultimilor ani [87] [91], atacurile de securitate executate asupra circuitelor digitale integrate au devenit sinonime cu termenul de analiză diferențială de putere [22] [23] [28] [30] [40] [41] [47] [49] [53] [54] [55] [57] [61] [62] [72] [73] [74] [78] [81] [83] [88] [90]. Din aceste motive prezenta lucrare tratează în detaliu tehnica analizei diferențiale de putere.
Ca și în cazul analizei simple de putere, analiza diferențială de putere [14] pleacă tot de la curbele de consum înregistrate în timp ce circuitul criptografic execută operația de interes. Spre deosebire de cazul precedent, analiza diferențială de putere are nevoie de un număr mai mare de curbe de consum, motiv pentru care analiza acestora se realizează prin metode statistice. Aceste atacuri de securitate utilizează tehnici de corecție a erorilor și de procesare a semnalelor (pentru filtrarea zgomotului) [6]. Analiza diferențială de putere este extrem de eficientă, atât în analizarea circuitelor digitale criptografice cât și în cea a circuitelor digitale integrate în general. Astfel, dacă curbele de consum au o rezoluție suficient de mare, analiza diferențială de putere poate evidenția instrucțiunile, respectiv profilul de consum al circuitului digital analizat [64] [2].
Figura 2.6 Caracteristica de consum pentru 3 cicluri ale ceasului de sistem
După cum se poate observa din Figura 2.6 fiecare tact al ceasului de sistem relevă un „vârf” de consum. Analiza diferențială de putere este posibilă tocmai datorită acestor „vârfuri” fiecare dintre ele corespunzând unei instrucțiuni executate de procesor; fiecare „vârf” fiind proporțional cu datele procesate de respectiva instrucțiune.
Pentru evidențiere se consideră d, cel mai semnificativ bit din primul octet al textului în clar (ce urmează a fi criptat). Se aleg, aleatoriu, 1000 de texte în clar care vor fi mai apoi criptate, utilizând o implementare standard a algoritmului AES. Pentru fiecare operație de criptare se va înregistra o curba de consum, pentru prima rundă de calcul. Statistic se poate considera că în 50% din cazuri d are valoarea „0” iar în 50% valoarea „1”. Pentru o evaluare simplă a efectului lui d asupra consumului, se calculează diferența dintre curbele medii de putere, pentru cazul d=0 și d=1. După cum se poate observa din Figura 2.7, în majoritatea timpului diferența celor două medii este apropiată de 0. Vârfurile vizibile în grafic reprezintă momentele de timp când bitul d este procesat – în acele momente consumul microcontrolerului depinde, direct (d este procesat direct) sau indirect (datele procesate depind de d), de d. [42]
Figura 2.7 Diferența curbelor medii de putere pentru d=1 și d=0
După cum se poate observa din Figura 2.8 există o diferență foarte mică între curba medie de putere pentru d=0 și cea pentru d=1. Această diferență indică dependența consumului de d, dependență vizibilă la nivel de ceas de sistem. Datorită acestor diferențe minuscule tehnica de analiză a puterii consumate este eficientă în determinarea datelor procesare de un circuit digital integrat.
Figura 2.8 Vedere detaliată asupra unei perioade de 3 ciclii de ceas
Metoda prezentată are însă un avantaj suplimentar – aceleași curbe de consum pot fi utilizate pentru determinarea tuturor biților din cheie. Acest avantaj conferă analizei diferențiale de putere o importanță deosebită deoarece printr-un set unic de curbe de consum pot fi determinați toți biții cuvântului secret.
Metode de protecție împotriva atacurilor de securitate
Pentru a evita, pe cât posibil, executarea cu succes a unor atacuri de securitate asupra unor circuite digitale criptografice se recomandă:
schimbarea cât mai des cu putință a cheilor criptografice;
utilizarea unor chei temporare [34] [99].
Aceste recomandări nu pot fi urmate în toate cazurile, motiv pentru care este necesară protejarea circuitelor digitale criptografice.
Pericolul reprezentat de analiza diferențială de putere a fost recunoscut repede de către inginerii proiectanți [17] [68]. Atacurile de securitate de tip analiză diferențială de putere funcționează deoarece un atacator poate identifica legătura dintre datele procesate (valorile intermediare ale algoritmilor criptografici în cazul de față) și consumul de energie electrică, instantaneu, măsurat. Astfel au fost dezvoltate o serie de metode de protecție [26] [46] [58] [59] [82] [86] [92] al căror scop este mascarea legăturii dintre consumul de energie electrică și datele procesate.
Din publicațiile de specialitate [10] pot fi identificate două categorii de metode de protecție.
Mascare
Această tehnică de protecție propune decuplarea consumului de datele procesate prin introducerea de date aleatoare în lanțul de procesare. Astfel, deși curentul absorbit de circuit este proporțional cu datele procesate, un potențial atac nu va putea identifica datele reale datorită mascării acestora cu date aleatoare. În practică, tehnica de mascare se reduce de cele mai multe ori la operația SAU-EXCLUSIV, deoarece este ușor de implementat și nu necesită un număr ridicat de resurse.
Această tehnică [3] nu prevede modificarea caracteristicii de consum a circuitului. Punctul slab al metodei sunt însăși datele aleatoare – dacă acestea sunt reutilizate pentru mai mult de o operație criptografică sau dacă sunt utilizate date pseudo-aleatoare atunci un atacator ar putea identifica datele reale. Totodată această metodă este „sensibilă”, necesitând o grija deosebită pe parcursul procesului de proiectare, respectiv dezvoltare (după cum va fi prezentat în capitolele ulterioare, implementarea incorectă sau doar parțială a acestei metode duce la executarea cu succes a unor atacuri de tip analiză diferențială de putere). Totodată trebuie notat faptul că tehnica mascării este eficientă doar împotriva atacurilor de tip analiză diferențială de putere. Analiza simplă de putere poate releva însă o serie de detalii, cum ar fi identificarea algoritmului criptografic sau a duratei de execuție a unei operații de criptare, respectiv decriptare.
Nivelare
„Nivelarea consumului” își propune decuplarea consumului măsurabil în exteriorul circuitului analizat de datele procesate. Această metodă nu numai ca este eficientă împotriva atacurilor de securitate de tip analiză diferențială de putere, dar previne și atacurile de tip analiză simplă de putere. Nivelarea consumului poate fi efectuată pe două cai:
alternarea aleatoare a operațiilor criptografice reale cu unele fictive, executate asupra unor seturi de date aleatoare, pe parcursul unui interval de timp dat;
modificarea caracteristicii de consum a circuitului analizat prin creșterea sau scăderea consumului cu scopul de a „ascunde” complet operațiile executate.
Prin nivelarea curentului absorbit de circuit, un potențial atacator nu va putea identifica algoritmul criptografic utilizat sau durata de execuție a acestuia. Totodată prin aplicarea tehnicii de analiză diferențială de putere, atacatorul nu va obține rezultate concludente. În practică însă, această metodă nu înlătura complet legătura dintre consumul măsurat și datele procesate, motiv pentru care această tehnică nu este infailibilă.
Concluzii
Circuitele digitale integrate, moderne, fac uz de funcții criptografice complexe pentru a asigura un nivel ridicat de securitate. Rapida evoluție a acestora a permis înglobarea unor funcții din ce în ce mai complexe, devenind astfel ținta atacatorilor. Aceștia, la rândul lor, au dezvoltat o serie de metode prin intermediul cărora pot extrage informații cu caracter secret din interiorul circuitelor digitale integrate.
Fie că sunt implementări software [84] sau hardware, algoritmii criptografici sunt funcții matematice complexe ce necesită un număr mare de resurse fizice. Algoritmii criptografici sunt de regulă publici, în timp ce cheile de criptare sunt „secretul” care asigură securitatea informațiilor criptate. Din acest motiv este de interes prevenirea unor atacuri de securitate ce pot releva cheile de criptare. Chiar dacă nivelul de securitate al algoritmilor în sine este ridicat, implementările fizice ale acestora permit extragerea informațiilor cu caracter secret. Una din metodele cele mai uzuale, de atac, este analiza diferențială de putere. Aceasta exploatează legătura dintre curentul absorbit de circuitul digital integrat ce execută funcția criptografică și datele procesate de acesta. Însă atacurile de securitate, de tip analiză diferențială de putere, pot fi prevenite prin aplicarea unor metode de protecție ce evită corelarea consumului măsurat de energie electrică cu datele procesate de circuitul digital integrat analizat.
Modelarea analizei diferențiale de putere
Caracterizarea curbelor de consum
Exploatarea datelor conținute de curbele de consum
Premisele analizei diferențiale de putere
Atacuri de securitate bazate pe coeficienți de corelare
Particularități ale implementărilor hardware
Alternative pentru calculul coeficientului de corelație
Determinarea numărului necesar de măsurători a tiparului consumului de putere
Concluzii
După cum a fost precizat, analiza diferențială de putere este o tehnică de criptanaliză ce permite extragerea de informații cu caracter secret din curbele de consum ale circuitelor digitale integrate ce implementează funcții criptografice. Tehnica analizei diferențiale de putere a apărut prima dată [42] acum aproximativ 15 ani. Pe parcursul ultimilor ani această tehnică a cunoscut un real avânt [15]. Dezvoltarea continuă a tehnicii de calcul a permis efectuarea unor analize complexe, utilizând aparate cu precizie tot mai ridicată, astfel încât aceasta a părăsit laboratoarele ajungând o armă utilizată de atacatori împotriva metodelor criptografice de securizare a circuitelor digitale integrate [44].
Scopul lucrării este dezvoltarea unei metode care să permită utilizarea simulărilor în efectuarea unei analize diferențiale de putere. Pentru aceasta însă sunt necesari o serie de pași premergători. În primul rând, pentru a putea evalua viabilitatea metodei (deci utilizarea simulărilor pentru determinarea breșelor de securitate) este nevoie de o referință. Obținerea referinței este realizată prin efectuarea unor atacuri de tip analiză diferențială de putere, asupra unor circuite fizice, ce implementează același modul criptografic care urmează să fie simulat. Astfel se obține un set de măsurători de referință (eng. „golden reference”) pe baza cărora se poate evalua, respectiv parametriza, tehnica analizei diferențiale de putere efectuată pe baza unor simulări funcționale ale unor circuite digitale integrate. În concluzie, sunt necesari următorii pași (tratați pe îndelete în acest capitol și în următoarele):
modelarea matematică a analizei diferențiale de putere;
caracterizarea curbelor de consum necesare pentru efectuarea unei analize diferențiale de putere;
analiza efectului zgomotului electric asupra curbelor de consum;
modelarea atacurilor pe baza unor circuite simulate;
realizarea unor măsurători experimentale, având la bază tehnicile descrise anterior (filtrarea zgomotului electric, utilizarea unor tehnici eficiente de măsurare, realizarea unei analize diferențiale de putere pe baza unor curbe de consum achiziționate optim).
Primul pas spre execuția unei analize diferențiale de putere constă în caracterizarea curbelor de consum.
Caracterizarea curbelor de consum
O curbă de consum este un vector de valori ale unei tensiuni electrice ce este direct proporțională cu activitatea circuitului digital integrat analizat. O astfel de curbă de consum caracterizează activitatea circuitului analizat pe o perioadă definită de timp. Fiecare punct al curbei de consum reprezintă puterea instantanee absorbită de circuitul digital integrat analizat, în acel moment. Astfel, fiecare punct de pe curbă reflectă suma diverselor puteri absorbite de circuit. Aceste puteri sunt:
puterea zgomotului electric – conduce la diferențe între puterile absorbite de circuitul analizat, chiar dacă datele procesate și operația executată sunt aceleași;
puterea curenților de scaperi – rezultat al tehnologiei de fabricație a circuitelor și este tratată pe larg în capitolul 5;
puterea operației executate – pentru un același circuit se pot constata consumuri tipice pentru fiecare operație în parte (de exemplu adunare, shiftare, înmulțire, etc.);
puterea datelor procesate – strict dependentă de datele procesate.
Astfel consumul instantaneu de putere al unui circuit digital integrat poate fi definit ca:
(3.1)
În contextul analizei diferențiale de putere, , nu prezintă interes, deoarece nu poate fi exploatat cu scopul identificării datelor cu caracter secret, procesate în momentul respectiv de timp de către circuitul analizat. Puterea datorată zgomotului, , nu poate fi nici ea exploatată pentru efectuarea unei analize diferențiale de putere, însă cu cât este mai ridicată, cu atât este mai dificil de executat atacul. Din acest motiv, capitolul 5 tratează pe larg subiectul filtrarea, prin intermediul căreia poate fi redus (dar nu complet). Singurele puncte exploatabile sunt și . Acestea depind direct de operațiile efectuate și de datele procesate, putând fi astfel exploatate pentru efectuarea unei analize diferențiale de putere.
Pentru a putea exploata informațiile conținute de curbele de consum, este necesară înțelegerea proprietăților pe care acestea le dețin. Astfel, pentru a evalua consumul instantaneu al unui circuit digital integrat, este necesară evaluarea doar a unui punct de pe curba de consum considerată. În acest fel poate fi caracterizat circuitul analizat din prisma operației efectuate și a datelor procesate.
După cum a fost specificat, caracterizează puterea datorată tehnologiei și nu prezintă interes pentru analiza diferențială de putere – din acest motiv nu este tratată pe parcursul acestui capitol.
Efectul zgomotul electric
Prima componentă a consumului este. Efectul vizibil dat de această componentă este apariția unui mic defazaj la curbele măsurate în timp ce circuitul digital execută aceeași operație, procesând aceleași date. Pentru a putea evalua această componentă a puterii absorbite de circuit, se consideră un stand de test echipat cu un microcontroler de uz comun.
Figura 3.1 Stand de testare echipat cu un microcontroler de uz comun
Standul de test (Figura 3.1) are parametrii:
tensiune de alimentare 5Vcc;
microcontroler: ATmega328;
frecvență de lucru: 16MHz;
interfață comunicație: RS232.
Figura 3.2 Două curbe de consum, aferente aceleiași operații, suprapuse
După cum se poate observa, în cazul în care microcontrolerul execută aceeași operație în mod repetat (mov R15 10) apare o diferență în curbele de consum achiziționate. Pentru evaluarea suplimentară a acestui efect, se realizează o histogramă pentru 1000 de curbe achiziționate. Astfel, se poate observa că punctele curbei de consum urmează o distribuție normală (gaussiană). Din această analiză, reiese și prima metodă practică, premergătoare unui atac de securitate de tip analiză diferențială de putere, și anume, caracterizarea circuitului atacat. Pentru a putea evalua puterea datorată zgomotului electric este necesară executarea unor măsurători practice care să permită determinarea valorii acesteia și a efectelor ce le are asupra analizei diferențiale de putere.
Efectul datelor procesate
Pentru a putea caracteriza efectul datelor asupra puterii consumate de circuitul analizat, , se consideră un set de date uniform distribuit (adică fiecare dată apare cu aceiași probabilitate la intrarea circuitului analizat). Circuitul este setat să execute din nou aceeași instrucțiune (mov R15 x), unde x ia valori de la 0 la 255 (R15 fiind un registru pe 8 biți poate primii valori de la 0 la 255). Din nou sunt înregistrate 1000 de curbe de consum rezultând un număr de 256000 curbe achiziționate. Dacă se construiește din nou histograma pentru punctele minim și maxim, se poate observa o distribuție mai largă a valorilor, fără a mai avea însă o distribuție normală. Mai mult, dacă se construiesc histogramele pentru fiecare valoare în parte (adică 256 de histograme utilizând câte 1000 de curbe), se poate observa faptul că pentru valori cu pondere Hamming identică distribuția este similară. Ținând cont că datele utilizate au o lățime de 8 biți, putem concluziona că există 8 posibile ponderi Hamming, fapt confirmat și de măsurătorile experimentale.
Efectul operației executate
Puterea dinamică absorbită la un moment dat de către circuitul analizat nu depinde doar de datele procesate ci și de operația executată. Această putere este dată de însăși structura internă a circuitului analizat (arhitectura procesorului) și poate fi analizată dacă sunt executate diferite operații asupra acelorași date. Sunt achiziționate din nou 1000 de curbe de consum pentru fiecare operație în parte. Prin calcul mediei curbelor de consum achiziționate este redus efectul zgomotului, astfel încât se poate determina distribuția valorilor obținute. Acestea pot fi aproximate după o distribuție normală.
Cele două componente de interes pentru execuția unei analize diferențiale de putere, și , sunt teoretic independente una de alta, însă se poate observa, din analiza unui număr mai mare de curbe de consum, că acest lucru nu este întotdeauna valabil. Mai mult, dacă se analizează, cu ajutorul standului 2, echipat cu un circuit digital reprogramabil (FPGA) implementarea algoritmului criptografic AES, se poate observa o puternică interdependență între și .
Exploatarea datelor conținute de curbele de consum
După cum a fost arătat, curbele de consum sunt formate dintr-o serie de puncte, fiecare punct descriind consumul instantaneu al circuitului analizat în respectivul moment de timp. și sunt componentele care reflectă în mod direct consumul circuitului datorat datelor procesate și operațiilor executate în vederea procesării respectivelor date. Pentru a putea evalua calitatea informației conținute de curbele de consum trebuie calculat nivelul de zgomot (eng. „signal to noise ratio”) care este conținut de fiecare punct de pe curba, în parte.
În general, pe un set dat de curbe de consum, un atacator poate executa unul sau mai multe tipuri de atac, fiecare plecând de la ipoteze diferite. Astfel, pentru fiecare atac în parte, datele conținute de punctele curbelor de consum sunt altele. Din acest motiv este aproape imposibil de definit o metodă universală de caracterizare a curbelor de consum astfel încât, pentru a determina calitatea informațiilor conținute de curbele de consum se definesc un set de metrici pentru fiecare scenariu de atac în parte. De acest set de metrici depinde informația ce se dorește a fi extrasă și informațiile pe care punctele de pe curbele de consum le pot releva în contextul dat.
Astfel, pentru a putea evalua „utilitatea” fiecărui punct de consum în parte este definită puterea utilă care depinde de și . În cazul unui circuit digital de uz comun (adică un circuit care conține un procesor logic), această putere este dependentă în mare măsură de date și mai puțin de operație. În cazul unui circuit, dedicat raportul celor două puteri este echilibrat, astfel încât depinde de ambele componente în egală măsură.
Din analiza efectuată se pot observa două trăsături specifice ale punctelor de pe curbele de consum:
zgomotul aferent fiecărui punct de pe curba de consum are o distribuție normală;
punctele de pe o aceiași curbă sunt corelate între ele (coeficientul de corelare are întotdeauna valoarea intre -1 și 1și măsoară relația liniară dintre cele două puncte de pe curbă).
În contextul celor definite anterior se poate trece la exploatarea datelor în vederea executării atacul de securitate de tip analiză diferențială de putere.
Premisele analizei diferențiale de putere
Pentru a putea executa un atac de securitate de tip analiză diferențială de putere sunt necesari următorii pași:
Selectarea unui rezultat intermediar al operației criptografice atacate.
Pe parcursul acestei faze sunt selectate rezultatele intermediare, ipotetice, ce rezultă în urma executării operației criptografice atacate. Astfel, pentru început se selectează operația (pentru algoritmul AES [93] operațiile posibile sunt: SubBytes, ShiftRows, MixColumns, AddRoundKey) ce urmează să fie „atacată”. Pentru determinarea valorilor intermediare se utilizează relația care reflectă legătura dintre datele d (cunoscute) și cheia k (necunoscută). În practică d este, fie textul în clar (cea mai uzuală abordare), fie criptograma ce rezultă în urma executării operației de criptare (operației atacate).
Achiziția curbelor de consum
Utilizând ca date de intrare, blocurile de date, , generate anterior, se înregistrează, cu ajutorul unui osciloscop digital (metoda de achiziție este descrisă pe larg în capitolele 5 și 6) curbele de consum aferente momentelor de timp în care circuitul aflat „sub atac” procesează datele. Astfel, pentru circuitul AES considerat, se înregistrează primele 3 runde de calcul. Vectorul datelor de intrare, d, poate fi definit ca:
, (3.2)
unde D este numărul de blocuri de date utilizat.
Pentru fiecare (bloc de date), este achiziționată o curbă de consum ce poate fi caracterizată prin relația:
, (3.3)
unde este curba achiziționată pentru blocul al datelor de intrare iar lungimea curbei achiziționate (numărul de puncte).
Se construiește astfel matricea curbelor de consum având dimensiunea :
, (3.4)
unde fiecare linie corespunde unei curbe de consum achiziționate pentru un bloc de date. Reiese astfel necesitatea alinierii datelor de intrare, astfel încât fiecare coloană a matricei corespunde aceleiași operații executate însă pentru alt set de date . Pentru a putea alinia datele de intrare sunt folosite diverse metode de sincronizare a procesului de achiziție, după cum este descris și în capitolul 5.
Specificarea valorilor ipotetice, intermediare
Pentru a putea efectua calculele, este necesară alegerea unor valori ipotetice ale cheii . Astfel, vectorul cheii ipotetice , poate fi descris ca:
. (3.5)
Acest vector de valori ipotetice poartă denumirea de „vector ipoteză al cheii”. Pe baza acestui vector se definește matricea , având dimensiunea , a valorilor ipotetice intermediare:
, (3.6)
unde coloana i corespunde valorilor ipotezei .
Scopul analizei diferențiale de putere este deci identificarea coloanei , din matricea , pentru care au fost procesate datele d de către circuitul real. Dacă este identificată coloana , automat este identificată cheia care a fost utilizată pentru procesarea datelor .
Calculul consumului ipotetic
Pentru a identifica coloana , din matricea , este necesară determinarea consumurilor ipotetice ale circuitului analizat, pentru datele și valorile ale cheii alese în ipoteza de atac. Astfel se definește matricea a consumurilor ipotetice. Aceasta este calculată pe baza ipotezelor bazate pe distanța și ponderea Hamming, ipoteze tratate pe larg în capitolul 4. Pentru a obține matricea , sunt calculate valorile ipotetice ale consumului circuitului analizat, pentru fiecare valoare a matricei , , rezultând astfel un consum .
, (3.7)
Rezoluția matricei depinde de ipotezele alese (ipoteze descrise în capitolul 4). Cu cât rezoluția este mai bună, cu atât este mai eficient atacul, respectiv corelarea se poate face mai ușor.
Evaluarea rezultatelor matricelor V și I
Pentru a putea determina cheia corectă trebuie „comparată” matricea cu . Pentru aceasta este calculat coeficientul de covarianță
, (3.8)
Obținându-se astfel matricea rezultatelor :
, (3.9)
Cheia corectă va duce la obținerea celui mai mare coeficient, identificându-se astfel ipoteza corectă, pentru care datele au putut fi corelate:
coloana reflectă momentul de timp în care a putut fi recuperată cheia (punctul de pe curba de consum care a reflectat datele procesate și deci cheia de criptare utilizată);
linia reflectă ipoteza pentru care s-a obținut cea mai mare valoare a coeficientului de corelație.
Pentru evidențiere, etapele necesare execuției unei analize diferențiale de putere sunt evidențiate în Figura 3.3.
Figura 3.3 Analiză diferențială de putere – execuție
Atacuri de securitate bazat pe coeficienți de corelare
Pentru a efectua o analiză diferențială de putere s-a făcut o estimare a relației liniare dintre coloanele matricei și coloanele matricei , estimare bazată pe coeficientul de corelație. Vârfurile ce au apărut în matricea coeficienților de corelație au dezvăluit apoi cheia utilizată de către dispozitivul atacat. S-a constatat o diferență semnificativă între maximele detectate (pentru calculul estimativ a fost folosită biblioteca [6]) pentru implementarea software (și deci rulată pe un microcontroler de uz comun) respectiv pentru implementarea hardware (circuit fizic ce rulează pe un circuit digital reprogramabil – FPGA).
În cele ce urmează vor fi introduse tehnici de estimare a coeficienților de corelație. Tehnicile de estimare a coeficienților de corelație sunt de o reală valoare atât pentru inginerii proiectanți cât și pentru atacatori. Pentru proiectanți este important să existe metode prin care să determine rezistența dispozitivelor criptografice digitale la atacuri de tip ADP în timp ce pentru atacatori este utilă pentru estimarea complexității circuitului atacat, dar și pentru înțelegerea structurii interne a acestora.
Corelația poate fi calculată pe baza și a raportului semnal-zgomot (eng. „signal to noise ratio”, SNR):
, (3.10)
SNR descrie capacitatea unui dispozitiv de a releva informații într-un scenariu de atac dat. SNR este independent de modelul de consum folosit de atacator. Felul în care această relevare este exploatată într-un anumit atac este descris de . Aceasta este corelația dintre valorile ipotetice ale consumului de energie utilizată de către atacator și consumul de energie, al dispozitivului, ce poate fi exploatată. Această corelație depinde în mod esențial, de cât de bine descrie modelul de consum al atacatorului, consumul de energie care este „cauzat” de procesarea datelor.
Pentru execuția atacurilor de securitate de tip analiză diferențială de putere pot fi utilizate mai multe modele de atac cum ar fi modelul distanței sau ponderii Hamming sau modelul „nivelului de bit”.
Particularități ale implementărilor hardware
Implementările algoritmilor de criptografie realizate în limbaje de descriere hardware măresc complexitatea atacului bazat pe analiza consumului de putere, din următoarele motive:
execuția în paralel a unor instrucțiuni aritmetice într-o perioadă a ceasului de sistem – toate aceste instrucțiuni trebuie luate în considerare pentru calculul valorii consumului de putere corespunzătoare perioadei de ceas în care sunt executate;
valorile capacităților de încărcare ce apar între firele de interconexiune sunt diferite între ele motiv pentru care fiecare interconexiune contribuie într-o pondere mai mică sau mai mare la consumul global îngreunând astfel execuția unui atac de tip analiză diferențială de putere.
În cazul algoritmului AES, operațiile AddRoundKey, SubBytes și MixColumns sunt executate în aceeași perioadă de ceas (acest tip de execuție este cea mai uzuală metodă de optimizare a algoritmului AES, regăsită în toate implementările disponibile comercial), rezultatul acestor operații fiind stocat într-un registru. Totodată, simultan este executată operația KeyExpansion care calculează cheia temporară pentru runda curentă, contribuind astfel la „mascarea” puterii consumate.
Puterea consumată de porțile logice ce îndeplinesc funcția logică a operației SubBytes este interdependentă de logica ce îndeplinește operația MixColumns, mai mult, puterea consumată în timpul execuției operației MixColumns este corelată cu puterea consumată de logica necesară stocării rezultatului în registru.
Considerând observațiile de mai sus, un calcul precis al coeficientului de corelație poate fi realizat doar de către proiectanții circuitului digital criptografic, ce au acces la fișierul de configurație al porților logice sau la detaliile de amplasare ale circuitului (eng. „layout”), fi și de către atacatorii care reușesc să înțeleagă cum este realizat circuitul atacat (structură, optimizările utilizate de proiectanți, etc.).
Coeficientul de corelație, ce apare în atacurile bazate pe analiza consumului de putere este o funcție de și SNR, acești termeni fiind însă dificil de aproximat pentru un atacator. Apare astfel necesitatea unor simplificări:
corelația dintre cheia presupusă șieste 1 ();
toate traseele de interconexiune ale circuitului digital au aceeași capacitate de încărcare
activitatea de schimbare a valorii logice (din 0 în 1 și din 1 în 0) a semnalelor este independentă și identic distribuită în circuitul digital.
Alternative de calculul pentru coeficientul de corelație
Determinarea relației dintre coloanele matricelor I și T se poate realiza prin mai multe metode, ce vor fi prezentate în continuare.
Diferența mediilor
Această metodă se bazează pe următoarea observație: atacatorul creează matricea binară I pornind de la ipoteza potrivit căreia valoarea consumului de putere pentru unele dintre valorile intermediare este diferită față de celelalte valori ale puterii consumate. Secvența binară de valori de 1 și 0 din fiecare coloană a matricei I este o funcție ce are ca variabilă de intrare blocul de date și cheia presupusă . Pentru a valida cheia presupusă , atacatorul poate împărți matricea T în două seturi de rânduri în funcție de indicele acestora, adică în funcție de vectorul . Se calculează mediile pentru cele două seturi și, iar dacă diferența dintre cele două valori este semnificativă, presupunerea făcută asupra este corectă. Formulele de calcul ale mediilor sunt următoarele:
, (3.11)
, (3.12)
, (3.13)
. (3.14)
Ponderea mediilor
Aceasta este o metodă îmbunătățită față de metoda anterioară, întrucât ia în considerare și dispersia dintre valorile mediilor. Diferența față de prima metodă constă în faptul că cele două medii sunt comparate în funcție de distanța probabilistică relativă și nu prin scăderea celor două valori.
Verificarea probabilității apariției maximului
Această metodă, propusă de Agrawal et. al [1] [89], presupune extinderea matricei I cu o coloană adițională, ce conține o secvență aleatoare de 0 și 1, numită ipoteza nulă. În pasul numărul 5 al algoritmului de atac, bazat pe analiza diferențială de putere, valorile presupuse ale cheii criptografice sunt comparate cu ipoteza nulă. Comparația se face utilizând ecuația:
. (3.15)
Determinarea numărului necesar de măsurători a tiparului consumului de putere
În cazul atacurilor de securitate de tip analiză diferențială de putere, una din problemele fundamentale este determinarea numărului optim de curbe de consum care sunt necesare pentru execuția atacului. Un număr insuficient de curbe poate determina eșecul ADP, așa cum un număr prea mare poate induce doar întârzieri datorate timpilor mari de calcul, informația adusă fiind însă redundantă.
Se poate deduce faptul că dacă în rândul ck al matricei R există un maxim al coeficientului de corelație, atunci a fost achiziționat un număr suficient de curbe de consum. Valorile coeficientului de corelație de pe rândul ck sunt calculate în baza valorilor ipotetice ale cheii, astfel încât o valoare ridicată a acestuia indică identificarea unei ipoteze corecte a cheii ipotetice. Totodată se poate presupune că numărul necesar de măsurători ale consumului de putere pentru identificarea unui maxim semnificativ pe rândul , de coeficientul .
O regulă de aproximare, utilizabilă în practică, cu ajutorul căreia poate fi determinat numărul necesar de măsurători pentru executarea un atac tip ADP, specifică faptul că numărul necesar de curbe de consum corespunde numărului de măsurători necesare pentru diferențierea cu o precizie de a coeficientului de corelație estimat , de coeficientul de corelație estimat cu . Astfel ecuația cu ajutorul căreia se poate determina numărul necesar de curbe de consum este:
. (3.16)
În practică, cele mai multe atacuri bazate pe analiza diferențială de putere conduc la un coeficient de corelație . În aceste cazuri se observă existența unei dependențe pătratice între numărul de măsurători necesare și coeficientul de corelație. [42]
Concluzii
Tehnica analizei diferențiale de putere prezentată pe parcursul acestui capitol, permite, prin utilizarea curbelor de consum alături de un set de ipoteze de atac, determinarea operațiilor și a datelor procesate de un circuit digital integrat. Dacă structura circuitului este cunoscută, respectiv dacă se cunoaște tipul circuitului (procesor de uz comun ce execută instrucțiuni sau circuit dedicat ce procesează în mod paralel), „munca” atacatorului este mult ușurată. Deoarece această tehnică permite detectarea informațiilor cu caracter secret procesate de circuitul digital analizat, aplicațiile criptografice, implementate, fie ca aplicații software ce rulează pe circuite de uz general, fie ca module pur hardware, respectiv digitale, sunt periclitate. Astfel este justificată din nou necesitatea protejării acestor circuite în fața atacurilor de securitate de tip analiză diferențială de putere.
Pentru a putea executa un astfel de atac sunt necesare nu numai cunoașterea unui set de date de intrare sau de ieșire, din circuitul atacat, dar și înregistrarea detaliată a curbelor de consum ce descriu puterea absorbită de circuit pe parcursul executării operațiilor de interes. Totodată stabilirea ipotezelor de calcul, bazate în general pe ponderea sau distanța Hamming sunt vitale în executarea cu succes a unui atac de securitate de tip analiză diferențială de putere.
Modelarea puterii absorbite de circuitele digitale integrate
Modele de putere
Modelare la nivel analogic
Modelare la nivel logic
Concluzii
După cum a fost arătat, puterea absorbită de un circuit digital integrat, poate fi considerată suma unor puteri ce depind de operația executată, de datele procesate, de zgomotul electric datorat comutației circuitelor în sine și de consumul static datorat curenților de scăpare. Pentru a putea caracteriza consumul circuitelor digitale este necesară analiza principalelor componente ce conduc la variația puterii absorbite de circuit. Aceste componente sunt chiar cele ce procesează informația de interes, astfel încât este necesară determinarea modului în care acestea absorb energia electrică [25] [52].
Totodată, pentru a putea efectua atacuri de securitate de tip analiză diferențială de putere, pe baza unor circuite simulate, este necesară determinarea tehnicilor de simulare existente alături de identificarea modului optim prin care datele ce rezultă în urma unor simulări pot fi utilizate drept „curbe de consum” în cadrul unei ADP.
Modele de putere
Pentru a executa o analiză diferențială de putere este necesar ca puterea absorbită de circuitul analizat să fie proporțională cu datele procesate de acesta și/sau cu operațiile executate. Un circuit digital integrat este de regulă format din mai multe module care formează un sistem ce permite executarea unor operațiuni complexe (de exemplu un microcontroler are un număr foarte ridicat de module [95]). Totuși doar unele din aceste module absorb energie electrică care este proporțională cu datele procesate. Mai mult, în cazul circuitelor de uz comun (microcontrolere dotate cu un procesor clasic), modulele care procesează informația digitală sunt procesorul și memoriile (procesorul procesează efectiv informația în timp ce memoriile sunt utilizate pentru stocarea acesteia).
Astfel, pe parcursul acestui sub-capitol vor fi analizate pe larg tiparele de consum ale memoriilor și ale procesoarelor. Nu vor fi analizate produse dedicate deoarece particularitățile acestora nu fac scopul acestei lucrări ci tiparele de consum pentru procesoare generice și memorii generice, tipare ce se păstrează indiferent de arhitectură, tehnologie sau complexitate.
Procesor
Majoritatea sistemelor și a echipamentelor electronice din prezent înglobează un procesor dedicat pe care rulează programe software sau rutine înglobate (eng. „firmware”). Astfel o mare parte din puterea consumată de aceste sisteme este datorată procesorului sau procesoarelor conținute de ele. Majoritatea uneltelor software pentru analiza de putere a circuitelor pot fi folosite cu succes pentru partea fizica a implementării, însă nu pot fi utilizate pentru a determina consumul de putere al unui program software. Consumul de putere al unei aplicații software poate fi estimat folosind informații despre consum specifice procesorului pe care rulează precum și date legate de programul care se executa (acestea pot fi exacte sau aproximate folosind metode statistice – de exemplu nu se poate ști cu exactitate de cate ori se executa o instrucțiune, sau dacă anumite instrucțiuni de salt vor fi executate sau nu).
Pentru a estima consumul de putere al unui procesor, trebuie avute în vedere sursele de consum ale acestuia precum și influenta diferitelor moduri de funcționare asupra caracteristicii de consum a acestuia.
Curentul de scurgere (eng. „leakage current”)
Curentul de scurgere este specific oricărui circuit (după cum va fi detaliat în capitolul 5), indiferent de tehnologia de fabricație a acestuia. În general producătorii încearcă să minimizeze acest curent, dar reducerea acestuia la 0 este practic imposibila. Curentul de scurgere nu este dependent de activitatea circuitului, de frecventa de lucru, ci doar de temperatura și tensiunea de alimentare a circuitului. Acesta mai poate depinde de modul de funcționare al procesorului, existând implementări în care, în anumite moduri de lucru (de ex. somn – eng. „sleep”), se oprește alimentarea anumitor module interne.
Perifericele active
Puterea consumată de perifericele active nu depinde în general de instrucțiunile care se execută (de exemplu un periferic de temporizare, oscilatoare. etc.). Aceste periferice, au contribuția cea mai mare în modurile destinate funcționarii cu putere redusa.
Modul decuplat (eng. „shutdown mode”)
În acest mod este întrerupă alimentarea cu energie procesorul având un consum practic nul. Revenirea în modul de funcționare activ are loc la aplicarea tensiunii de alimentare sau a semnalului de reset.
Modul așteptare (eng. „stanby / sleep mode”)
În acest mod de funcționare circuitul este menținut alimentat, însă toate majoritatea semnalelor de ceas sunt oprite. Acest fapt reduce tranzițiile multor porți logice, reducându-se astfel consumul (consumul principal este dat, în acest mod de funcționare, de curentul de scurgere și de perifericele ramase active).
Modul suspendat (eng. „halt mode”)
În acest mod de funcționare circuitul este menținut alimentat, însă toate semnalele de ceas sunt oprite – temporar, până la sosirea unei întreruperi.
Modul hibernare (eng. „hibernate mode”)
Acest mod este conceput pentru economisirea de energie atunci când se poate opri temporar activitatea procesorului. Astfel numai logica procesorului este ne-alimentata, rămânând alimentate memoriile de lucru (RAM). Conținutul memoriei ascunse (eng. „cache”) este salvat în memoria RAM înainte de intrarea în aceasta stare și „restaurat” la revenirea în starea activa.
Mod de funcționare activ (eng. „run mode”)
Acesta este modul uzual de funcționare al unui procesor. În acest mod, toate funcțiile, sub-modulele și perifericele sunt active. În acest mod de funcționare consumul de curent este maxim, caracteristica acestuia fiind dictată de tensiunea de alimentare, frecvența de lucru, activitatea perifericelor active, instrucțiunile executate și datele procesate.
Energia consumată pentru execuția programului poate fi considerată suma energiilor consumate de fiecare instrucțiune în parte:
,, (4.1)
unde:
– timpul de execuție al instrucțiunii;
– numărul de cicluri de ceas necesar execuției instrucțiunii;
– perioada semnalului de ceas.
Puterea totală consumată de fiecare instrucțiune care este executată în acest mod este suma puterilor dinamice, de scurtcircuit (tratate pe larg în capitolul 5) și de scurgere, descrise de relația:
, (4.2)
unde:
– curentul de scurtcircuit. Neglijabil pentru majoritatea celulelor logice din circuit (poate conta dacă exista tranzistori care comanda elemente de circuit care au capacitați electrice mari);
– factor de activitate specific fiecărei instrucțiuni;
– capacitatea totala (implicata la schimbarea stărilor logice);
– tensiunea de alimentare;
– frecventa de operare;
– curentul total de scurgere (poate deveni important odată cu creșterea temperaturii).
Acești parametrii nu sunt prezenți totdeauna în foaia de catalog a producătorilor, ceea ce face ca aceste calcule să fie relativ dificile. Acești parametrii pot fi obținuți direct, prin măsurători experimentale sau indirect, pe baza unor grafice sau a altor informații despre consumul de putere oferite de producător.
Consumul de energie pentru un scenariu dat este suma energiilor consumate de fiecare instrucțiune, fapt ilustrat grafic în Figura 4.1.
Figura 4.1 Consumurile de energie pentru diversele scenarii
Memorie
În dispozitivele mobile și calculatoare se folosesc pe scara largă memorii dinamice sincrone cu acces aleator (eng. „Synchronous Dynamic Random Access Memory”, SDRAM). Aceste memorii sunt organizate în bancuri, linii și coloane. Un banc de memorie conține elemente de memorie aranjate într-o structură matriceală și un tampon (eng. „buffer”) de linie care memorează conținutul liniei active. Memoria SDRAM are următoarele moduri de lucru:
Activ (eng. „active”): citire, scriere, selecția unui banc de memorie;
Așteptare (eng. „stand by”),
Putere minimă (eng. „power down”),
Reîmprospătare (eng. „refresh”),
Preîncărcare (eng. „precharge”).
Accesele de citirea sau scrierea din memorie se fac în salve (sau „serii de date”). Înainte de accesul propriu-zis se inițiază o comandă de activare urmată de comanda de scriere sau citire dorit. O memorie SDRAM are trei moduri de lucru: activ, așteptare și modul de putere minimă.
Modelul de putere al memoriilor SDRAM se bazează pe specificațiile de curent date de producători în foile de catalog. Chiar dacă valorile furnizate diferă de la producător la producător, iar modul de prezentare a datelor s-a schimbat de-a lungul timpului, conceptele pe care se bazează calculul puterii au rămas aceleași.
Valorile cele mai importante ale curenților de alimentare (IDD) sunt prezentate în Tabelul 4.1. Aceste valori pot fi regăsite în toate specificațiile, indiferent de producător, putând fi astfel considerate universale în ceea ce privește caracterizarea memoriilor SRAM.
Tabelul 4.1 Specificațiile de consum pentru SDRAM
Modelul de putere al memoriilor SDRAM
Puterea consumată de o memorie SDRAM se poate determina ca o combinație a puterii statice care apare în absența ceasului (CKE inactiv) și puterea dinamică care se compune la rândul ei din puterea de: activare, scriere-citire, reîmprospătare și puterea de intrare-ieșire la pinii interfeței.
Parametri uzuali folosiți de modelul de putere al memoriei SDRAM sunt:
IDDxreprezintă consumul de putere într-un regim de lucru precizat /conform tabelului anterior);
VDD este tensiunea de alimentare;
fin – frecvența de funcționare folosită;
pBNKPRE – procentul de timp în care toate bancurile sunt preîncărcate;
pCKLOPRE – procentul de timp în care CKE este inactiv (eng. „low”) în starea de preîncărcare;
pCKLOACT – procentul de timp în care CKE este inactiv în starea de activare;
nACT – numărul de cicluri de ceas între comenzile de activare;
tRC – timpul minim între comenzile de activare succesive din același banc;
fspec – frecvența de funcționare indicată în specificații;
nWR – numărul de cicluri de scriere succesive (mod de scriere în salve) cu memoria activată;
nRD – numărul de cicluri de citire succesive (citire în salve) cu memoria activată;
NDQDQS – numărul de pini DQ (pini de date) și DQS (pini de validare);
tRFC – timpul de reîmprospătare minim;
tREFI – timpul de reîmprospătare folosit.
Regimul de putere redusă (eng. „power-down”)
În această stare consumul memoriei este minim, IDD2P, atunci când toate bancurile de memorie sunt în regim de preîncărcare. Daca un banc este activat, atunci curentul consumat este IDD3P.
Sunt posibile două regimuri de putere redusă: putere redusă cu bancurile in regim de preîncărcare, P(PRE_PDN) pentru toate bancurile în stare de așteptare (inactive) și putere redusă cu bancurile activate, P(ACT_PDN), daca o linie este activă în unul dintre bancuri:
, (4.3)
. (4.4)
Puterea în regim de așteptare (eng. „standby”)
Dacă toate bancurile de memorie sunt în regim de preîncărcare și CKE este activ (în starea logică „1”) atunci memoria consumă puterea statică care poate fi în regim de preîncărcare, P(PRE_STBY), sau in regim de activare P (ACT_STBY):
, (4.5)
. (4.6)
Puterea în regim de activare (eng. „activate”)
Comanda de activare este utilizată pentru a deschide (sau activa) o linie dintr-un anumit banc pentru un acces ulterior. Aceasta linie rămâne activă (sau deschisă) pentru accese (de scriere sau citire) până la comanda de închidere a liniei respective (linia intră în regim de preîncărcare). Comanda de închidere a liniei trebuie folosită înainte de a putea deschide o altă linie din același banc de memorie. Comenzile de activare și de închidere conduc la o activitate semnificativă a memoriei SDRAM. Curentul cerut de activare se determină pe baza curentului IDD0 din foaia de catalog.
Pentru a calcula puterea consumată de activare, curentul IDD3N trebuie scăzut din IDD0. În plus, pentru a calcula puterea consumată pe durata unei perioade de activare (timpul între două comenzi de activare) se utilizează parametrul nACT care reprezintă numărul de cicluri de ceas dintre două comenzi succesive de activare.
. (4.7)
Puterea în regim de scriere sau citire (eng. „read / write”)
Comanda de scriere sau citire este utilizată pentru a iniția o succesiune de scrieri sau citiri în linia curentă (linia activată); puterile consumate respective se pot determina individual pentru ciclul de scriere sau de citire utilizând relațiile:
, (4.8)
. (4.9)
Puterea de intrare-ieșire
La o operație de citire, o energie suplimentară este consumată deoarece datele scrise trebuie să modifice starea pinilor de date. Curentul necesar pentru a modifica starea acestor pini depinde de schema de circuit de terminație folosit. Puterea statică disipată la un pin de date depinde de tensiunea de ieșire și curentul de ieșire:
. (4.10)
Această putere se multiplică cu numărul de pini și cu raportul dintre numărul ciclurilor de citire față de numărul total de cicluri:
. (4.11)
Puterea dinamică se calculează de obicei la nivelul controlerului de memorie și depinde de capacitatea văzută de ieșirea respectivă și de gradul de activitate (numărul de comutații estimat raportat la numărul de cicluri de ceas).
Puterea de reîmprospătare (eng. „refresh”)
Operația de reîmprospătare este necesară pentru a reține datele în memoria SDRAM prin reîncărcarea condensatoarelor din celulele de memorie. Operația de reîmprospătare poate fi executată atunci când toate bancurile de memorie sunt în stare de pre-activare (așteptare). În plus, puterea de reîmprospătare este ajustată în funcție de rata de reîmprospătare folosită:
. (4.12)
Ajustarea puterii cu tensiunea și frecvența
Toate calculele de putere prezentate până acum s-au făcut la tensiunea de alimentare maximă VDDmax. Adesea, in practică, sistemele folosesc o tensiune mai apropiată de valoarea nominală VDD ceea ce duce la modificarea valorilor calculate. Singura valoare care nu depinde direct de tensiunea de alimentare este puterea de intrare-ieșire. La circuitele digitale puterea depinde de pătratul tensiunii de alimentare, deoarece aproape întreaga putere este consumată capacitiv conform relației:
. (4.13)
C fiind capacitatea internă, V tensiunea de alimentare și f frecvența de lucru. Ca urmare, scalarea la o tensiune de alimentare diferită se face cu o relație pătratică:
. (4.14)
Puterea componentelor care depinde de frecvența de lucru (PRE_STBY, ACT_STBY, WR, RD) poate fi ajustată la frecvența de lucru pe baza unei relații liniare:
. (4.15)
Puterea totală consumată
Puterea totală consumată de o memorie SDRAM pentru o aplicație dată se calculează prin însumarea componentelor calculate anterior:
. (4.16)
Modele de simulare a puterii
În timpul procesului de implementare al unui circuit digital se fac mai multe simulări pentru estimarea puterii consumate de acesta și implicit a performanței acestuia.
Astfel de simulări sunt extrem de importante pentru a se determina dacă circuitul digital poate funcționa pe o perioadă îndelungată de timp și pentru asigurarea unei bune securizări în cazul circuitelor digitale criptografice. Există mai multe tipuri de simulări ale consumului de putere: nivelul circuitului analogic, nivelul de porți logice și nivelul comportamental.
În atacurile privind securitatea circuitelor digitale bazate pe consumul de putere este foarte importantă corelarea valorilor consumului de putere cu corelarea valorilor datelor procesate de circuit. Sunt tot simulări ale consumului de putere al circuitului digital, însă trebuie menționat că valorile absolute ale consumului de putere măsurat nu sunt relevante. Aceste simulări folosite de către atacatori sunt mult mai simple decât modelele descrise anterior deoarece aceștia au cunoștințe limitate în ceea ce privește arhitectura circuitului digital criptografic. În această secțiune se vor descrie două modele de simulare folosite în atacurile privind securitatea circuitelor integrate: modelul distanței și al ponderii Hamming (eng. “Hamming distance / weight”).
Nivelul circuitului analogic
Simularea analogică a consumului de putere al unui circuit integrat oferă rezultatele cu cea mai mare acuratețe în comparație cu celelalte metode. Acest tip de simulare se bazează pe un fișier (eng. „netlist”, listă de noduri) în care sunt listați toți tranzistorii și modul în care aceștia sunt interconectați pentru realizarea funcției logice a circuitului digital. Acest fișier conține în plus și parametrii care apar în timpul procesului de execuție fizică în siliciu a circuitului integrat, cum ar fi: capacități parazite care apar între firele de interconexiune sau capacități parazite nedorite care apar dorită imperfecțiunilor procesului de fabricație. Dimensiunea acestor capacități parazite depinde în mare măsură de tehnologia folosită , pentru realizarea fizică a circuitului integrat.
Numărul acestor capacități parazite este destul de mare în practică, fapt ce conduce la necesitatea unor simplificări în simulare, pentru a reduce gradul de complexitate al modelului de simulare pentru un circuit digital. Un exemplu de astfel de simplificare este modelarea tuturor capacităților parazite ale unei porți logice ca o singură capacitate de ieșire a porții, model cunoscut sub denumirea de modelul capacitaților echivalente (eng. „lumped model”). De altfel, tot acest model consideră că rezistențele traseelor de interconexiune au valori neglijabile în raport cu rezistența dintre sursă și drena tranzistorului MOS. Considerând aceste simplificări, simularea consumului de putere bazată pe acest model nu poate descrie cu exactitate consumul instantaneu de putere al circuitului digital. Bineînțeles cu cât valorile capacităților parazite sunt redate cât mai aproape de cazul practic, cu atât rezultatele simulării vor fi mai aproape de realitate.
Indiferent dacă fișierul cu configurația rețelei de tranzistori este supus sau nu unor simplificări, etapele de procesare în vederea simulării consumului de putere sunt aceleași. Pentru obținerea rezultatelor simulării, simulatorul pentru circuite analogice primește ca intrare fișierul cu configurația rețelei de tranzistori MOS și calculează valorile tensiunilor și ale curenților ce apar în circuitul digital pe baza unor ecuații diferențiale. Calculul computațional al acestor ecuații diferențiale necesită multe resurse, ceea ce îndeamnă ca acest tip de simulare să fie folosită doar pentru părțile critice ale circuitului digital și nu pentru întreg ansamblul.
Exemple de simulatoare analogice sunt: SPICE dezvoltat în cadrul Universității Berkely, California, Spectre dezvoltat de Cadence Design Systems, șiNanosim de la Synopsys. SPICE este cel mai utilizat simulator, de aceea acest tip de simulare analogică este denumită și simulare SPICE.
Simularea la nivel logic
Acest tip de simulare, la nivelul porților logice [33], necesită mai puține resurse computaționale (timp, memorie) în comparație cu simularea analogică. Fișierul utilizat în această simulare conține timpii specifici porților logice (timpi de propagare, stabilizare, menținere) și modul de interconectare al acestora, în vederea implementării funcției logice a circuitului digital. Opțional pot fi incluse informații despre timpul de propagare prin porți sau pe traseele de interconexiune, sau informații despre valorile timpilor de tranziție din 0 în 1 sau din 1 în 0 ale semnalelor circuitului. Procesul prin care sunt introduse valorile timpilor de propagare se numește adnotare inversa (eng. „back annotation”). Simularea realizată la nivelul porților logice are doi pași. În primul pas, sunt simulate tranzițiile semnalelor ce apar în circuitul digital. Rezultatul este un fișier în care este descris pentru fiecare celulă ce tranziții apar și la ce momente de timp. Precizia valorile din acest fișier depinde de valorile timpilor de propagare, cu cât aceștia se apropie mai mult de valorile reale, din practică, cu atât precizia este mai bună. Cel de-al doilea pas al simulării consumului de putere este realizarea unei mapări a tranzițiilor logice în curbe de putere pe baza valorilor obținute la pasul anterior. Pentru realizarea acestei mapări sunt necesare modele prin care valorile timpilor corespunzători tranzițiilor logice sunt corelate cu consumul de putere. Astfel de modele sunt incluse în bibliotecile de porți logice. Există și un model generic folosit pentru translatarea valorilor în consum de putere, numit modelul distanță Hamming. Acest model este mai puțin precis decât modelele oferite de bibliotecile cu celule standard.
Modelul bazat pe distanța Hamming
Acest model se bazează pe contorizarea tranzițiilor intre stările logice care apar în circuitul digital într-un anumit interval de timp. Rezultatul contorizării este folosit pentru descrierea consumului de putere din acel interval de timp. Împărțind întreaga simulare a circuitului digital în intervale de simulare mai mici, se poate genera o hartă de aproximare a consumului de putere, ce conține numărul de tranziții corespunzător fiecărui interval și nu valoarea puterii consumate în Watt.
În cazul acestui model se pleacă de la următoarele două premise: tranzițiile semnalului din 0 în 1 sau din 1 în 0 conduc la aceeași putere consumată; tranzițiile din 0 în 0 și din 1 în 1 conduc și ele la același consum de putere. În acest model se consideră ca fiecare poarta logică contribuie egal la consumul de putere și se ignoră complet consumul static de putere al porții logice.
Datorită acestui mod simplu de aproximare a consumului de putere, acest model este foarte des utilizat în practică.
Acest model a fost discutat anterior în contextul simulării consumului de putere al unui circuit digital. Așa cum a fost menționat, modelul folosește un fișier ce conține informații despre configurația porților logice ce alcătuiesc circuitul digital. Atacatorii nu au acces la astfel de fișiere pentru a realiza o simulare a consumului de putere, însă în practica aceștia dețin informații cheie referitoare la structura internă a circuitului digital și pentru unele părți ale circuitului integrat pot realiza o simulare a consumului de putere.
De exemplu, dacă circuitul asupra căruia se realizează un atac privind securitatea este un microprocesor, în acest caz atacatorul cunoaște părțile componente ale acestuia: setul de regiștrii de uz general, memoria, unitatea aritmetică și logică, magistrala de date, etc., iar aceste componente au proprietăți comune cunoscute publicului larg.
Acest model se folosește în general pentru calculul consumului de putere în cazul regiștrilor sau al magistralelor de date.
Despre magistrala de date se știe că este conectată la multiple componente și că este în general lungă, astfel capacitatea de încărcare a magistralei este mare și deci contribuie semnificativ la consumul total de putere. Se mai cunoaște de altfel că valoarea capacităților interconexiunilor individuale care alcătuiesc magistrala sunt identice. Având aceste observații se poate afirma că modelul de simulare bazat pe distanța Hamming este potrivit pentru calculul consumului de putere. Pentru implementarea unui atac privind securitatea, se pot atribui valorile datelor care traversează magistrala, unor valori ale consumului de putere. Puterea consumată de circuitul digital la schimbarea a două valori a datelor de pe magistrală șipoate fi aproximată cu distanța Hamming dintre valorile celor două date și.
Puterea consumată la utilizarea regiștrilor de uz general poate fi de asemenea, aproximată prin modelul de simulare bazat pe distanța Hamming. Regiștrii sunt activați de un semnal de ceas, așadar ei își schimbă valorile o singură dată într-o perioadă de ceas. Un atacator poate simula consumul de putere al unui registru calculând distanța Hamming a valorilor stocate în perioade consecutive ale semnalului de ceas.
Pentru a aplicat acest model de simulare al consumului de putere pentru magistralele de date sau pentru setul de regiștrii, atacatorul trebuie să dețină informații despre valorile datelor procesate.
Modelul ponderilor Hamming
Acest model este mai simplu decât modelul distanță Hamming și este folosit de către atacator în cazul în care acesta nu deține deloc informații despre structura internă a circuitului digital și nici informații despre valorile datelor ce utilizează anumite părți ale circuitului digital.
În acest model de atac privind securitatea se consideră că puterea consumată este proporțională cu numărul de biți de 1 din valoarea datei procesate(de ex: valoarea stocată în regiștrii sau transferată pe magistrală). Valorile datelor procesate înainte sau după această dată nu sunt cunoscute, ca în cazul modelului anterior. Așadar acest model nu este potrivit pentru circuitele digitale realizate în tehnologie CMOS, unde puterea consumată este corelată cu numărul de tranziții care apar în circuit și nu cu valorile de 0 sau 1 din datele procesate. Practica a demonstrat totuși, că ponderea Hamming a unei valori nu este complet decorelată cu puterea consumată în timpul procesării acestei valori. În continuare se va demonstra acest aspect, prin exemplificare unui caz concret. Se presupune apriori că datele procesate de circuitul digital care se dorește a fi atacat sunt: . În toate scenariile se consideră simularea puterii consumate de circuitul digital pentru procesarea datei fără a se cunoaște valorile datelor . Valoarea datei este utilizată în tranzițiile. În continuare tranziția de interes este , însă toate considerațiile făcute pentru această tranziție sunt valabile și pentru cea de-a doua tranziție.
Primul scenariu este cel în care biții valorii sunt egali șiconstanți. Un exemplu ar fi o magistrală pe n biți care procesează valoarea sau . În acest caz valoarea pentru consumul de putere, obținută în cazul modelului distanță Hamming este identică cu valoarea pentru consumul de putere, obținută în cazul modelului pondere Hamming și valoarea este proporțională cu .
Al doilea scenariu este cel în care biții valorii sunt constanți. În acest caz nu se mai pot face observații ca cele din scenariul anterior. Însă dacă se consideră un singur bit al tranziției, puterea consumată este proporțională(invers sau direct – depinde de valoarea bitului) cu valoarea bitului.
Pentru al treilea scenariu se consideră că biții valorii au o distributivitate uniformă și sunt independenți de biții valorii . În această situație valorile pentru consumul de putere obținute în urma simulării cu cele două metode nu sunt corelate cu valoarea datelor.
În practică există un număr mult mai mare de posibilități, însă atacatorii recurg la modelul de simulare bazat pe ponderi Hamming doar în cazul în care modelul de simulare distanța Hamming nu oferă rezultate satisfăcătoare.
Modelul comportamental al simulării consumului de putere
Modelul comportamental al simulării consumului de putere se bazează pe o descriere de nivel înalt a circuitului digital, este mai rapidă, însă rezultatele obținute sunt mai puțin precise decât în celelalte cazuri. O descriere de nivel înalt a circuitului conține componentele majore ale acestuia: microprocesoare, memorii, module hardware dedicate, etc. și modele al consumului de putere pentru aceste componente. Aceste modele pentru consumul de putere sunt utilizate pentru a translata activități ale componentelor, cum ar fi procesul de calcul computațional al datelor, execuția instrucțiunilor în valori reale ale puterii consumate.
Acest model de simulare al puterii consumate este în general utilizat atunci când se dorește calculul unei medii a puterii consumate de un circuit digital complex. În atacurile privind securitatea circuitelor digitale, astfel de modele sunt de interes, întrucât pot oferi informații despre dependența datelor sau despre operațiile aritmetice executate. Exemple de astfel de simulatoare sunt simulatoarele bazate pe setul de instrucțiuni al microprocesoarelor: SimplePower [27] și JouleTrack [79].
Simularea la nivel logic poate însă să devină extrem de complexă motiv pentru care au fost dezvoltate două metode de simulare. Prima, simularea la nivel logic, comportamental, este extrem de rapidă având însă o precizie redusă. Acest tip de simulare nu consideră timpii de propagare ai circuitului fizic folosindu-se doar de comportamentul logic al circuitului analizat. Astfel, toate tranzițiile sunt considerate a avea loc simultan cu tranziția semnalului de ceas al sistemului. Pentru a putea efectua acest tip de simulare sunt suficiente descrierile, la nivel înalt, ale diverselor module ce compun circuitul analizat. Totodată sunt necesare și o serie de descrieri minimale ale modelelor de putere pentru diversele componente ale circuitului (de exemplu procesorul sau memoriile). Acest tip de simulare permite maparea activității circuitului pe diversele componente ale sale. Astfel se obține o „hartă” a consumurilor, la nivel de modul, putându-se evidența zonele cu activitate maximă ce procesează mai multe date. Aceste simulări nu sunt folosite în modelarea directă a consumului de putere ci în evaluarea, respectiv în echilibrarea consumului la nivelul întregului circuit. Totodată cu ajutorul acestui tip de simulări pot fi determinate consumurile minime, medii și maxime.
Datorită legăturii directe între consumul modelat și instrucțiunile executate, simularea comportamentală la nivel logic are aplicabilitate practică în cadrul atacurilor de securitate de tip analiză diferențială de putere.
Cea de-a doua categorie de simulări se bazează pe proprietățile fizice ale circuitului. Această tehnică, denumită simulare logică la nivel fizic, extinde prima categorie adăugând informații despre timpii de propagare prin rutele și porțile fizice ale circuitului simulat. Aceasta metodă este lentă dar oferă o precizie ridicată.
Această metodă permite executarea unor atacuri de securitate de tip analiză diferențială de putere, direct pe baza simulărilor, ne fiind nevoie ca circuitul să fie realizat fizic.
Comparație
Simulările la nivel de tranzistori și cele la nivel de porți logice oferă informații despre consumul de putere al circuitelor digitale cu scop criptografic, suficiente pentru a face declarații cu privire la vulnerabilitățile acestora în fata atacurilor privind securitatea. Așadar, aceste modele sunt utilizate cu precădere și de către proiectanții de circuite digitale în timpul procesului de implementare.
În Tabelul 4.2 sunt sintetizate proprietățile cele mai importante ale celor două modele de simulare.
Tabelul 4.2 Diferențele între diversele metode de simulare
Concluzii
Tehnicile de modelare a puterii, prezentate pe parcursul acestui capitol, ajută la înțelegerea fenomenelor ce duc la absorbția de putere, fenomen ce este exploatat de atacurile de securitate de tip analiză diferențială de putere.
Pentru ca analiza diferențială de putere să poată fi efectuată cu succes, este necesar ca puterea măsurată în exterior să fie proporțională cu datele, respectiv cu operațiile executate de circuitul analizat (după cum a fost arătat și în capitolul 3). Totuși nu toate componentele din interiorul circuitului digital generează un consum de putere ce poate fi exploatat de un atac de securitate de tip ADP. Cele mai importante module identificate sunt, în cazul microcontrolerelor, procesorul și memoria. Astfel, aceste două componente au fost analizate, plecând de la principalele stări funcționale, specificate în foile de catalog aferente. Au fost tratate circuite generice, fără accente pe un produs anume – scopul fiind determinarea caracteristicilor comune ale acestor două componente ce se regăsesc în fiecare circuit digital integrat.
Totodată au fost prezentate metodele de simulare care permit determinarea matematică a consumului unui circuit digital, înainte ca acesta să fie fabricat fizic. Scopul simulărilor este determinarea eventualelor breșe de securitate, încă din faza de proiectare.
Măsurători experimentale
Consumul de putere în cazul circuitelor CMOS
Măsurători ale curentului absorbit de un circuit digital integrat
Problematica măsurătorilor de curent în vederea efectuării ADP
Standuri experimentale
Concluzii
Unul dintre principalele criteriile de performanță ale circuitelor digitale îl reprezintă consumul de putere. În ultimii ani acest criteriu a dobândit o importanță deosebită datorită:
dorinței de eficientizare a circuitelor electronice digitale, în contextul creșterii pieței aparatelor portabile;
dorinței de securizare a circuitelor digitale integrate, de uz comun sau dedicate, după cum a fost prezentat în capitolul al doilea.
Puterea consumată de circuitele electronice definește o serie de aspecte constructive ale sistemelor digitale, cum ar fi:
sistemele, pasive sau active, de răcire (circuitele moderne disipă pe o suprafață extrem de mică puteri mari, de până la 150W);
circuitele de alimentare ce trebuie să furnizeze energia electrică necesară menținând parametrii funcționali în gama de valori specificată de producător (de exemplu tensiune, curent sau zgomot);
construcția circuitului digital integrat, în sine, pentru a reduce pe de-o parte puterea consumată iar pe de alta de a împiedica execuția unor atacuri de securitate de tip analiză de putere.
Ultimul aspect prezentat, reprezintă subiectul central al acestei lucrări. Astfel, pentru putea proteja un circuit digital integrat, ce înglobează funcții criptografice, trebuie mai întâi determinați factorii care permit și influențează atacurile de securitate bazate pe analiza consumului de putere absorbită de circuit.
Pe parcursul acestui capitol va fi analizat tiparul de consum al circuitelor digitale integrate, utilizate în aplicații criptografice. Datorită largii răspândiri, accentul analizei va fi pus pe circuitele integrate de tip CMOS. Vor fi prezentate totodată metode practice de achiziție a curbelor de consum pe baza cărora pot fi executate atacuri de securitate de tip analiză de putere, cu scopul identificării eventualelor breșe de securitate.
Consumul de putere în cazul circuitelor digitale CMOS
Consumul total de putere al unui circuit digital integrat este dat de suma tuturor puterilor consumate de fiecare componentă a circuitului digital în parte. Deoarece circuitele digitale integrate sunt realizate prin utilizarea de porți logice, aceastea din urmă sunt considerate cea mai mică unitate logică, funcțională a unui astfel de circuit. Așadar, consumul total de putere al unui circuit depinde de dimensiunea acestuia, adică de:
numărul de porți logice ce compun circuitul;
interconexiunile dintre respectivele porți logice;
structura internă a unei porți logice.
Structura unui circuit digital integrat este rezultatul activităților de proiectare desfășurate pe parcursul mai multor etape:
etapa de proiectare a arhitecturii – pe baza cerințelor funcționale ale clienților este specificată arhitectura sistemului ce se dorește a fi implementat. Pentru a ușura procesul de luare a deciziilor în privința alegerii unei arhitecturi optime, sunt implementate modele matematice sau funcționale ale diverselor componente ale sistemului;
etapa de implementare – pe baza arhitecturii dezvoltate și a unor metodologii de proiectare, circuitul digital integrat este implementat, la nivel funcțional utilizând limbaje de nivel înalt (eng. „hardware description language”);
etapa „logică” – circuitul este sintetizat, la nivel logic. Este stabilită structura componentelor logice (porți logice, multiplexoare, demultiplexoare, memorii, rute între componente, etc.);
etapa „fizică” – circuitul este sintetizat la nivel fizic. Acest pas depinde de tehnologia în care se dorește implementarea circuitului (de exemplu: siliciu, 45nm).
Pentru utilizarea unui circuit digital implementat în tehnologia CMOS este necesară o singură sursă de alimentare (VDD) Fig. 3.1.
Figura 5.1 Alimentarea circuitelor CMOS
Porțile logice care intră în componența circuitului integrat, implementează funcționalitatea dorită de inginerii proiectanți. Semnalele de intrare, ce reflectă textul în clar, în cazul de față, sunt procesate de circuit în vederea obținerii semnalelor de ieșire, având loc astfel un consum de curent, generat de sursa de alimentare.
Pentru a putea definii puterea consumată de circuit, se consideră curentul instantaneu , absorbit de circuitul CMOS, la momentul de timp astfel încât puterea instantanee consumată este . Astfel, puterea medie consumată de circuitul integrat în perioada de timp , poate fi calculată:
(5.1)
Caracteristică tehnologiei CMOS este implementarea porților logice utilizând tranzistori MOS complementari. Pentru determinarea factorilor ce conduc la absorbția de curent electric se consideră cea mai simplă poartă logică implementată în tehnologia CMOS – inversorul. Analiza consumului de putere al porții de tip inversor, implementată în tehnologie CMOS, poate fi extrapolată și în cazul consumului de putere al altor porți CMOS mai complexe, întrucât și acestea sunt realizate prin conectarea,în configurații particulare,a unei rețele de tranzistori complementari. Inversorul este considerat cea mai simplă poartă logică deoarece este realizat din doar doi tranzistori complementari, notați cu P, respectiv N, în Figura 5.2.
Figura 5.2 Inversorul CMOS
Puterea consumată de poarta logică tip inversor poate fi împărțită în două componente:
puterea statică și
puterea dinamică consumată .
Puterea statică este disipată în situația în care circuitul inversor este într-o stare stabilă. Puterea dinamică este consumată în momentul comutării circuitului, adică când valoarea logică a unui semnal intern se modifică.
Puterea statică
Poarta logică implementată în tehnologie CMOS are o structură internă care nu permite ca rețelele de tranzistori și să fie în conducție în același moment de timp, chiar dacă semnalele de comandă au valoare constantă. Astfel, în cazul inversorului din Figura 5.2:
tranzistorul P este în conducție, iar tranzistorul N este blocat dacă intrarea de comandă a are valoarea constantă 0 și
tranzistorul Peste blocat iar tranzistorul N este deschis dacă intrarea a are valoarea constantă 1.
Se constată că în oricare dintre cele două stări, cel puțin unul dintre cei doi tranzistori este blocat. Curentul absorbit pe parcursul stărilor stabile este foarte mic având valori de ordinul [67]. Evoluția tehnologică care a dus la miniaturizarea tranzistoarelor folosite în fabricarea circuitelor digitale integrate a dus însă la creșterea acestui curent. Astfel, în cazul tehnologiilor moderne, unde lungimea canalului MOS este sub 100nm, poate fi constatată o creștere semnificativă a curentului . Puterea statică consumată poate fi calculată cu ajutorul ecuației (5.2).
(5.2)
Puterea statică consumată a circuitelor integrate, implementate în tehnologie CMOS, poate fi considerată practic nulă, valoarea acesteia fiind extrem de redusă, pentru tehnologiile mai vechi. În cazul tehnologiilor noi, puterea statică reprezintă însă o componentă semnificativă a consumului măsurat, motiv pentru care este luată în considerare în cadrul analizei de putere.
Puterea dinamică
Consumul dinamic de putere apare atunci când tranzistorii trec dintr-o stare în alta, respectiv când semnalele externe (vizibile în exterior) și interne porților logice își schimbă starea logică. În cele ce urmează, puterea consumată datorită tranzițiilor semnalelor interne este neglijată, deoarece puterea consumată, ca urmare a tranzițiilor semnalelor de ieșire are o valoare semnificativ mai mare. La un anumit moment de timp, un semnal de ieșire al unei porți logice CMOS poate efectua una dintre cele 4 tranziții din Tabelul 5.1. În primul și ultimul caz, poarta logică absoarbe doar putere statică, deoarece tranzistorii nu își schimbă starea. Dacă are loc o tranziție 0 1 sau 10, pe lângă puterea statică, poarta logică absoarbe și putere dinamică în timpul tranzițiilor logice. Valorile puterilor consumate ,,și depind puternic de structura internă a porții logice și de procesul tehnologic de implementare, dar în general, se poate considera că:
. (5.3)
În oricare din cele două situații, când în interiorul circuitului ce formează poarta logică, au loc tranziții, puterea consumată în regim dinamic este deci dependentă de date (de intrările porții logice).
Tabelul 5.1 Tranzițiile unui circuit CMOS și puterea consumată
Puterea dinamică consumată în cazul circuitelor implementate în tehnologie CMOS reprezintă cea mai mare parte din consumul total de putere. În regim dinamic, pe fiecare front de comutație crește consumul de putere, din două cauze:
apare necesitatea încărcării sau descărcării capacităților parazite de la ieșirea circuitului și eventual a capacității de sarcină;
pentru o foarte scurtă perioadă de timp ambele tranzistoare MOS complementare se află în regim de conducție.
Astfel, în cele ce urmează, va fi analizată în detaliu fiecare cauză ce duce la absorbția de curent electric, de către poarta logică.
Curentul de încărcare
În cazul tranzițiilor semnalului de ieșire, poarta logică implementată în tehnologie CMOS absoarbe un curent de la sursa de alimentare, necesar încărcării capacității de ieșire . Valoarea capacitățiieste formată din suma capacităților de la intrare a circuitelor comandate de semnalul de ieșire și din capacitatea traselor de interconexiune cu celelalte porți logice. Valoarea acestei capacități depinde de proprietățile fizice ale tehnologiei utilizate, de lungimea traselor de interconexiune cu celelalte porți logice, precum și de numărul de celule comandate. Valorile aproximative ale se găsesc în intervalul . În această lucrare se consideră o singură capacitate echivalentă care însumează toate capacitățile enumerate anterior.
Consumul mediu de putere al unei porți logice , datorat curentului de încărcare al capacității , poate fi calculată cu ajutorul ecuației:
, (5.4)
unde:
este puterea instantanee consumată la momentul de timp ;
este frecvența de comutație (a ceasului de sistem);
este factorul de activitate al celulei logice.
Factorul de activitate corespunde unei medii a numărului de tranziții ce apar la ieșirea porții logice. De exemplu, dacă ieșirea unei celule își schimbă valoarea din 0 în 1 la fiecare tact al ceasului de sistem, atunci factorul de activitate este egal cu 1.
Din ecuația (5.4) se poate observa că puterea consumată este proporțională cu pătratul valorii tensiunii de alimentare . Astfel, pentru o tehnologie dată, cea mai eficientă metodă de reducere a consumului de putere este micșorarea tensiunii de alimentare.
Curentul de scurt circuit
Cel de-al doilea motiv pentru care se constată o creștere a consumului dinamic de putere al unei porți logice implementate în tehnologie CMOS este apariția unui curent de scurt-circuit. Acest curent apare datorită faptului că pentru o foarte scurtă perioadă de timp ambele tranzistoare MOS complementare se află în regim de conducție. Acest lucru se întâmplă pentru tranzițiile semnalului de intrare din 0 în 1și din 1 în 0.
Consumul mediu de putere, al unei porți logice, datorat curentului de scurt-circuit într-o perioadă de timp T, poate fi calculat cu ajutorul ecuației:
, (5.5)
unde:
este putere instantanee, consumată la momentul de timp ,
este valoarea maximă a curentului de scurt circuit,
este perioada de timp în care ambele tranzistoare MOS sunt deschise.
Simularea consumului dinamic de putere
Pentru evidențierea consumului de putere cauzat de un circuit inversor implementat în tehnologie CMOS a fost realizată simularea acestuia (Figura 5.3), utilizând programul LTspice [105] produs de compania Linear Technology. Parametrii utilizați pentru simulare au fost [4]:
,
,
.
Pentru tranziția semnalelor de intrare, respectiv ieșire, ale unui inversor implementat în tehnologie CMOS se poate observa variația curentului (Figura 5.4 și Figura 5.5), absorbit de acesta. În Figura 5.5 maximul curentului absorbit este datorat curentului de scurt-circuit, deoarece în acest moment capacitatea se descarcă, deci nu absoarbe energie. Acest consum este caracteristic tranziției semnalului de ieșire, de la 1 la 0.În Figura 5.4 maximul curentului absorbit este caracteristic tranziției semnalului de ieșire de la 0 la 1. În acest caz curentul absorbit este mai mare deoarece capacitatea se încarcă, circuitul absorbind deci un curent mai mare.
Figura 5.3 Modelul unui inversor implementat în tehnologia CMOS (50µm)
Figura 5.4 Variația curentului când are loc o tranziție, a semnalului de ieșire, de la 0 la 1
Figura 5.5Variația curentului când are loc o tranziție, a semnalului de ieșire, de la 1 la 0
Hazarduri
Un circuit digital este realizat dintr-un număr ridicat de porți logice care sunt conectate între ele astfel încât semnalul de ieșire al unei porți logice reprezintă semnalul de intrare al altei porți logice. Se creează astfel un circuit combinațional pe mai multe nivele. O observație importantă în cazul acestor circuite logice combinaționale este faptul că semnalele nu ajung întotdeauna simultan la intrările unei porți logice. Acestă observație poate fi explicată prin două fenomene. Primul fenomen este cel de propagare a semnalelor prin porțile logice sau de la o poartă la alta. Din motive tehnologice nu există două porți identice motiv pentru care și timpii de propagare a semnalelor de intrare, spre ieșire, este diferit. Totodată traseele de interconexiune între porți sunt diferite între ele inducând noi întârzieri ale semnalelor. Cel de-al doilea motiv este dat de faptul că o poartă logică poate primii pe intrare semnale provenite de pe nivele logice diferite.
Timpii diferiți de sosire ai semnalelor la intrările unei porți logice conduc la apariția unor stări „temporare” ale semnalului de ieșire al porții. O astfel de stare temporară a semnalului de ieșire este denumit hazard logic combinațional [67]. În timpul apariției unui hazard logic combinațional, semnalul de ieșire al porții logice nu atinge nivelul de tensiune corespunzător valorii logice de 0 sau 1, ducând astfel la apariția unei valori temporare. Efectul este apariția unui puls de tensiune, pentru o perioadă scurtă de timp. Motivul generării acestui comportament este comutarea întârziată a unui semnal de intrare, datorită motivelor enumerate mai sus, în timpul tranziției semnalului de ieșire.
Numărul acestor hazarde logice crește proporțional cu numărul nivelelor logice (de porți logice) ale unui circuit combinațional. Acest pulsuri cu o durată scurtă de timp, care apar datorită hazardelor, se pot propaga până la ieșirea circuitului digital. În circuitele digitale complexe, implementate în tehnologie CMOS, aceste tranziții temporare devin un factor important în cazul consumului de putere. Apariția acestor pulsuri este dependentă de datele procesate de circuitul digital.
Pentru exemplificare se consideră un circuit combinațional simplu format dintr-o poartă logică NAND și un INVERSOR ca în Figura 5.6. Intrările circuitului sunt notate cu a și b, ieșirea inversorului este notată cu c, iar ieșirea circuitului este notată cu d. Funcționarea circuitului combinațional este descrisă în Tabelul 5.2.
Figura 5.6 Circuit combinațional realizat dintr-o poarta logică NAND și un inversor
Tabelul 5.2 Tabelul de adevăr al unui circuit format dintr-o poartă logica NAND și un inversor
Figura 5.7 Hazardul combinațional al unui circuit format dintr-o poartă logica NAND și un INVERSOR
Se consideră cazul în care cele două intrări ale circuitului a și b comută de la 0 la 1. Pentru simplificare , timpul de propagare pe firele de interconexiune se consideră nul, iar timpii de propagare prin poarta NAND și poarta inversor sunt și . După cum se poate observa pe formele de undă prezentate în Figura 5.7, pe ieșireaa circuitului digital apare un puls activ în 0. Din cauza timpului de propagare prin inversor , semnalul de ieșire din poarta NAND nu rămâne stabil în starea logică 1 apărând deci fenomenul de hazard combinațional. Durata de timp cât semnalul d este în starea logică 0 depinde deci de întârzierea cu care apare semnalul c la intrarea porții NAND.
Problematica măsurătorilor de curent
În acest capitol se prezintă diferite tehnici de măsurare a consumului circuitelor electronice. Măsurarea acestui consum este folosită pentru analiza diferențială de putere. De acuitatea acestei măsurări depinde succesul analizei diferențiale de putere folosite pentru măsurarea activității din interiorul circuitelor digitale și, indirect, expunerea unor informații secrete disponibile doar în interiorul circuitului în cauză.
Clasificarea metodelor de măsurare
Metodele de măsurare, în vederea realizării analizei diferențiale de putere, pot fi clasificate după multe criterii, după cum se poate observa în Tabelul 5.3.
Tabelul 5.3 Clasificarea metodelor de măsurare
Metode specifice măsurării consumului curentului absorbit de circuitul analizat
Măsurarea curentului absorbit are la bază tehnica gradării și presupune accesul la punctele de conexiune ale componentei măsurate și a componentelor din jurul acesteia. Scopul gradării este reducerea (teoretic anularea) scurgerilor de curent prin traseele circuitului de măsurat, conectate la punctul de măsură.
Gardarea se realizează în următoarele condiții:
se conectează temporar la masă (sau la terminalul de gardă – un punct de joasa impedanță cu tensiunea fixată) toate traseele de circuit din jurul componentei testate – dacă acest lucru este posibil funcțional și nu afectează acele părți din interiorul circuitului care sunt relevante pentru analiza diferențiala de putere;
se utilizează un amplificator operațional (AO) în circuitul de măsură – în special dacă impedanța instrumentului de achiziție nu este suficient de ridicata.
Măsurarea corectă a semnalelor electrice ale circuitului analizat (eng. “circuit under test”, CUT) este un element important în execuția corectă a unui atac de securitate de tip analiză diferențială de putere. În practică, aceste semnale sunt afectate de perturbații și interferențe. Sistemul de măsurare trebuie realizat astfel încât să elimine perturbațiile sau să le reducă până la o valoare care să nu influențeze acuratețea măsurătorilor. De asemenea, rezistențele serie pe circuitele de alimentare trebuie sa nu producă căderi de tensiune pe acestea care, în anumite situații (vârfuri de curent), să conducă la căderea tensiunilor de alimentare sub valorile minime admisibile ale circuitului asupra căruia se efectuează analiza diferențiala de putere. Cunoașterea surselor de perturbații și a modului de lucru a echipamentului de măsurare permite selectarea celei mai potrivite tehnici pentru o situație dată.
Reducerea efectelor surselor de perturbații
Identificarea surselor de perturbații este un prim pas spre îmbunătățirea calității măsurătorilor. Reducerea semnalelor parazite se realizează cel mai ușor acționând asupra sursei acestora. Acționând asupra semnalului perturbat, este mult mai dificilă îmbunătățirea raportului semnal-zgomot (eng. “signal to noise ratio”).
Zgomotul de la rețeaua de alimentare cu energie electrică (de curent alternativ) reprezintă interferența cu frecvența cea mai redusă. La frecvente mai ridicate apare zgomotul produs de calculatoare, aceasta incluzând și monitoarele video, rețele locale de comunicații, imprimantele și alte periferice. Acestea pot altera semnalul de măsurat, mai ales dacă sunt conectate la echipamentul de măsurare. Zgomotele cu frecvența cea mai ridicată provin de la telefoanele celulare și de la transmisiunile radio. Acestea pot genera interferențe apreciabile din cauza puterii relativ ridicate și sunt dificil de identificat, din cauza mobilității și a funcționării cu intermitență. Este posibil să se producă mixarea acestor semnale radio cu semnalele aplicate, respectiv „citite”din circuitului analizat și să apară unele semnale nedorite de joasă frecvență sau este posibilă redresarea acestor semnale și apariția astfel a unor tensiuni de decalaj de curent continuu. Aceste semnale nedorite pot afecta rezultatele măsurătorilor tranzitorii într-un mod dificil de identificat.
Protejarea sistemelor de măsurare față de sursele externe de interferență se face printr-o punere la masă corespunzătoare și prin ecranarea cablurilor de măsură și de alimentare.
O altă sursă de zgomote este chiar circuitul analizat. Sursele în comutație și circuitele digitale pot produce semnale care nu perturbă funcționarea circuitului, dar pot perturba funcționarea sistemului de măsură utilizat pentru analiza diferențiala de putere. Reducerea zgomotului în circuitul analizat sau în sistemul de măsură devine o decizie a cărei motivație este impactul zgomotului asupra preciziei măsurării.
Compensarea zgomotului de rețea
Principala metodă de compensare a zgomotului de la rețeaua de alimentare cu energie electrică în cazul sistemelor de măsură cu o rată de măsurare mică sau medie este fixarea timpului de integrare la convertoarele analog digitale (eng. “analog to digital convertor”, ADC) la un număr întreg de perioade ale frecvenței rețelei de alimentare. Aceasta îmbunătățește raportul semnal-zgomot cu mai mult de 40dB. Aparatele de măsură moderne, permit nu numai reglarea timpului de integrare la un număr întreg de perioade ale frecvenței de alimentare (50 sau 60 Hz), dar permit și ajustarea perioadei de integrare cu un pas foarte mic. Această metodă permite anularea semnalului de interferență pentru un domeniu foarte larg de frecvente, orice semnal a cărui perioadă este parte întreagă a timpului de integrare va fi filtrat astfel încât reglarea cu precizie a timpului de integrare permite anularea unei multitudini de semnale parazite. Aceasta metoda este aplicabilă în general pentru semnale statice sau de frecventa foarte mica.
Dacă se utilizează convertoare analog digitale rapide, se poate folosi tehnica medierii măsurătorilor pentru a aproxima cât mai bine măsurătoarea. Medierea este utilă și împotriva zgomotului aleatoriu. În cazul analizei diferențiale de putere se efectuează foarte multe măsurători succesive asupra circuitului analizat, iar pe parcursul procesării, se poate filtra efectul zgomotului (dacă este un zgomot repetitiv, iar amplitudinea acestuia nu influențează dramatic componentele consumului care conțin informația utilă pentru analiză). Trebuie remarcat faptul că această tehnică îmbunătățește rezoluția nu și precizia măsurătorii.
Compensarea deviației de curent continuu
Modificarea valorii de curent continuu a tensiunii poate să apară datorită tensiunii de contact care apare prin conectarea împreună a două metale diferite în conectoare, legături sau la vârfurile de probă. Această deviație poate să apară și prin efectul electrochimic datorat contaminării (chiar reduse) a contactelor. Deviațiile de curent continuu de valori mici se pot compensa foarte ușor, dacă echipamentul de măsură suportă compensarea de offset.
De exemplu măsurarea rezistoarelor cu astfel de echipamente se face prin măsurarea de două ori a tensiunii pe rezistorul respectiv, o dată cu sursa de curent constant conectată în circuit și a doua oară cu sursa deconectată. Se face diferența celor două tensiuni și apoi se calculează valoarea rezistenței. Procesul de măsură este rapid și este calibrat cu sursa de curent utilizată, fără a fi necesare alte calcule ulterioare.
Gruparea semnalelor după compatibilitate
Dacă sistemul de achiziție folosește multiplexarea analogică a semnalelor de măsurat, la stabilirea setului de semnale de măsură trebuie evitată conectarea semnalelor de amplitudine foarte diferită pe canale alăturate ale multiplexorului, deoarece se produce degradarea semnalului de valoare mică din cauza diafoniei între canalele alăturate. Astfel, semnalele de valori apropiate trebuie grupate împreună. În cazuri extreme anumite canale ale multiplexorului nu se folosesc pentru a obține o izolare mai bună a semnalelor, iar în alte situații, se va analiza posibilitatea punerii la masă a unor semnale ale multiplexorului, pentru a creste efectul de ecranare.
Din punct de vedere al secvenței în timp, trebuie evitată măsurarea unui semnal de amplitudine mică imediat după un semnal de amplitudine mare, în special în curent continuu. Echipamentul de măsură are la intrare o capacitate (compusă din capacitatea de intrare a instrumentului, a cablurilor de legătură și a cablajului imprimat) care trebuie descărcată la scăderea amplitudinii semnalului de măsurat. Uneori apare și fenomenul de absorbție dielectrică, din cauza căruia condensatorul se comportă ca o baterie. Caracteristica de descărcare a capacității este exponențială, iar descărcarea datorată absorbției este liniară. Deoarece și încărcarea se face tot după o lege liniară, semnalele de nivel mare nu trebuie conectate la intrări pentru un timp prea îndelungat. Pentru a elimina această problemă se vor măsura de două ori semnalele cu tensiune mai mică (considerând a doua măsurătoare) sau se va introduce în secvența de măsură un canal care este legat la masă.
Metode de masurare a curentului în vederea efectuarii ADP
Elementul central al analizei diferențiale de putere îl reprezintă consumul de curent electric al circuitului analizat. Consumul acestui circuit depinde de activitatea din interiorul acestuia (tranzițiile stărilor logice ale elementelor secvențiale și combinaționale). Aceste tranziții se reflecta în mici variații ale curentului absorbit de circuit. Astfel, măsurarea cu foarte mare precizie a variațiilor curentului absorbit, oferă informații valoroase despre procesarea datelor în interiorul circuitului analizat.
Pentru a avea o mare acuratețe a acestor măsurători este esențial ca:
rezoluția cu care se face achiziția să fie suficient de mare (pentru a „capta” variații cu durate egale cu durata unui ciclu de ceas, de exemplu);
variația curentului absorbit, produsă de alți factori decât tranzițiile logicii din interiorul circuitului analizat, (de exemplu zgomotul produs de sursele de alimentare) să fie reduse la minimul posibil.
Pentru îndeplinirea acestor condiții există mai multe topologii de scheme de măsurare și filtrare a zgomotului electric.
Pentru măsurarea curentului absorbit, se pot folosi două metode: măsurători directe și măsurători indirecte. Măsurătorile directe presupun plasarea unei spire în jurul conductorului parcurs de curentul care se dorește a fi monitorizat. Deși aceasta metoda este „ne-invaziva”, fiind aparent mai simplă, ea este folosită pentru curenți mari, de ordinul zecilor sau miilor de amperi. Aceasta metodă nu este potrivita pentru măsurarea de curenți foarte mici, absorbiți de circuite integrate digitale sau de sisteme înglobate. Măsurarea directă de curent presupune plasarea unui rezistor în serie cu alimentarea circuitului măsurat. Căderea de tensiune pe acest rezistor serie este direct proporționala cu curentul care îl parcurge.
Rezistorul, pentru măsurarea curentului absorbit, poate fi plasat în serie cu tensiunea sursei de alimentare („rezistor în alimentare”) sau în serie cu masa circuitului măsurat („rezistor în masa”). Fiecare din aceste metode are avantaje și dezavantaje.
Pentru succesul analizei diferențiale de putere, este important ca forma de unda a curentului absorbit să reflecte strict tranzițiile logice ale circuitului sau sub-circuitului care contribuie la procesarea datelor care interes.
Astfel, următoarele criterii trebuie îndeplinite:
circuitele analogice și circuitele digitale care nu sunt de interes trebuie alimentate separat (de exemplu din alte surse, sau înainte de rezistorul de șunt pe care se realizează achiziția de date);
modulele care nu procesează datele de interes trebuie invalidate, dacă este posibil;
sursele de alimentare trebuie filtrate și decuplate astfel încât riplul datorat tensiunilor de alimentare să fie neglijabil față de variația curentului absorbit datorată tranzițiilor logice;
filtrarea trebuie plasata astfel încât să nu „strice” forma de undă a curentului absorbit de circuit (în amonte de rezistorul serie folosit pentru măsurarea curentului).
În cele ce urmează sunt prezentate și analizate topologiile „cu rezistor în alimentare” și „cu rezistor în masa”.
Schema de măsurare cu „rezistor în alimentare”
Figura 5.8 Schema de măsurare cu „rezistorul în alimentare”
Figura 5.9 Schema de măsurare cu „rezistorul în alimentare” – schema de filtrare
Rezistorul de măsurare este plasat în serie cu alimentarea (Figura 5.8), spre circuitul de alimentare al circuitului monitorizat. Dacă se folosesc condensatori pentru filtrare, aceștia trebuie poziționați spre sursa de tensiune. Poziționarea condensatorilor de filtrare după rezistorul de măsurare, cât mai aproape de pinul de alimentare al circuitului analizat, ar îmbunătății filtrarea, însă ar altera forma de tensiune a curentului absorbit (ceea ce se achiziționează) (Figura 5.9), cu efecte negative asupra acuității măsurării.
Avantajele folosirii „rezistorului în alimentare” sunt:
sarcina este pusă direct la masă;
nu se creează o masă suplimentara; nu se creează bucle de curenți de masă;
punerea accidentală la masa a rezistorului de măsurare poate fi ușor detectată de sursa de alimentare.
Dezavantajele folosirii „rezistorului în alimentare” sunt:
sistemul de achiziție trebuie să fie flotant, niciunul din capetele rezistenței de măsurare nu este conectat la masă (de multe ori este necesar un număr dublu de canale de achiziție comparativ cu numărul semnalelor achiziționate);
necesită amplificatoare diferențiale pentru amplificarea căderii de tensiune de pe rezistorul de măsurare (sunt necesare scheme de amplificare mai complexe, iar în unele cazuri implementarea acestora nu este mereu posibilă);
necesită o alegere foarte atentă a rezistorului, în scopul obținerii unui raport de rejecție a modului comun (CMRR) acceptabil (o deviație de 0.01% a valorii rezistorului reduce CMRR la 86dB; o deviație de 1% reduce CMRR la 46dB);
Schema de măsurare cu „rezistor în masă”
Figura 5.10 Măsurarea cu rezistor „în masă”
Rezistorul de măsurare este plasat între pinul de masa al circuitului analizat și masa sursei de alimentare (Figura 5.10). În general, aceasta soluție este foarte simplă din punctul de vedere al efectuării măsurătorii, deoarece referința este chiar masa electrica a circuitului. Astfel, dacă se achiziționează mai mulți curenți, sunt necesare atâtea canale de măsurare câți curenți se doresc a fi achiziționați. Trebuie avută grijă ca rezistorul de măsurare să colecteze numai curentul dorit, conectarea mai multor circuite la același pin de masă va introduce erori în măsurare și va îngreuna astfel analiza diferențială de putere. De asemenea, trebuie ținut cont că punctul de masă nou creat nu are același potențial cu masa sursei de alimentare a restului circuitului, fiind necesare (uneori) adaptări ale tensiunilor semnalelor de ieșire ale circuitului în cauza.
Avantajele folosirii „rezistorului în masa” sunt:
nu sunt necesare modificări ale circuitelor de filtrare a tensiunilor de alimentare;
metoda este directă și nu necesita un amplificator diferențial, un simplu amplificator operațional fiind suficient în majoritatea aplicațiilor;
metoda este ieftina și precisa;
nu necesita în general creșterea tensiunii de alimentare.
Dezavantajele folosirii „rezistorului în masa” sunt:
creșterea tensiunii în punctul de masa al circuitului analizat față de masa restului circuitului (masa sursei de alimentare);
scurtcircuitul la masă al rezistorului de măsură nu are efecte negative pentru funcționarea circuitului, dar este greu de detectat.
Circuitul AES
Pentru a putea realiza obiectul lucrării au fost implementate patru versiuni ale algoritmului AES:
Implementări software – neprotejate;
– protejate;
Implementări hardware – neprotejate;
– protejate.
Atât implementările software cât și cele hardware utilizează aceiași structură bloc iar modul de procesare al datelor este similar din punct de vedere funcțional. Diferența majoră constă în faptul că implementarea software este executată asemenea unui program simplu de calculator, deci prin intermediul unor instrucțiuni de uz comun, executate într-o anumită secvență, în timp ce implementarea hardware face uz de resursele fizice din circuitul digital reprogramabil (porți logice, bistabile, memorii, etc.), având deci o structură dedicată.
Algoritmul AES
Atât implementarea software, cât și cea hardware au la baza o structură modulară similară care permite extinderea, respectiv adăugarea facilă de noi funcții sau metode de protecție. Circuitul AES implementat este conform cu standardul FIPS-197 [93], având lungimea blocului de date, respectiv cheia de 128biți. O operație standard de criptare are nevoie de 10 runde de calcul în timp ce o operație de decriptare are nevoie de 20 (10 pentru a calcula cheia de decriptare și încă 10 pentru a decripta efectiv blocul de date).
Astfel operația de criptare a algoritmului AES poate fi descrisă după cum este prezentat în algoritmul 5.1:
Algoritmul 5.1 Criptarea AES
AES_ENC (word in[16], word out[16], word S[4*(Nr+1)])
begin
byte state[4,4]
state = in
AddRoundKey(state, S[0, 3])
for round = 1 step 1 to Nr-1
SubBytes(state)
ShiftRows(state)
MixColumns(state)
AddRoundKey(state, w[4*round,4*(round+1)-1])
end for
SubBytes(state)
ShiftRows(state)
AddRoundKey(state, S[4*Nr,4*(Nr+1)-1])
out = state
end
Operația de decriptare, prezentată în algoritmul 5.2 are o structură similară, diferența constând în operațiile criptografice care sunt executate invers.
Algoritmul 5.2 Decriptarea AES
AES_DEC (word in[16], word out[16], word w[4*(Nr+1)])
begin
byte state[4,4]
state = in
AddRoundKey(state, S[4*Nr,4*(Nr+1)-1])
for round = Nr-1 step -1 to 1
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, S[4*round,4*(round+1)-1])
InvMixColumns(state)
end for
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, S[0,3])
out = state
end
Pentru fiecare rundă a algoritmului AES este necesară o cheie temporară, derivată din cheia de criptare, încărcată inițial. Această operație este cea mai complexă a algoritmului AES având 2 posibile direcții de execuție, în funcție de tipul operației criptografice (criptare sau decriptare). Pentru criptare, cheia este procesată în fiecare rundă, pentru a calcula așa-numita cheie „de rundă”, după cum este prezentat în algoritmul 5.3.
Algoritmul 5.3 Expansiunea cheii – calculul cheii „de rundă”
AES_KeyExpansion (word key[4*Nk], word S[4*(Nr+1)], Nk)
begin
word temp
i = 0
while (i<Nk)
S[i] = word(key[4*i], key[4*i+1],
key[4*i+2], key[4*i+3])
i = i+1
end while
i = Nk
while (i<4*(Nr+1))
temp = S[i-1]
if (i mod Nk = 0)
temp = (SubWord(RotWord(temp)) XOR Rcon[i/Nk])
else if (Nk>6 and i mod Nk = 4)
temp = SubWord(temp)
end if
S[i] = S[i-Nk] XOR temp
i = i+1
end while
end
În cazul decriptării pot exista două cazuri. Dacă ultima operație a fost o criptare atunci ultima cheie „de rundă” va fi folosită pentru a decripta datele. Practic decriptarea este inversul criptării, după cum se poate observa din algoritmul 5.4:
Algoritmul 5.4 Expansiunea inversă a cheii – calculul cheii „de rundă”
AES_InverseKeyExpansion (word S[4*(Nr+1)], Nk)
begin
word temp
i = 4*(Nr+1)-1
while (i>=Nk)
temp = S[i-1]
if (i mod Nk = 0)
temp = (SubWord(RotWord(temp)) XOR Rcon[i/Nk])
else if (Nk>6 and i mod Nk = 4)
temp = SubWord(temp)
end if
S[i-Nk] = S[i] XOR temp
i = i-1
end while
endend
În cazul în care ultima operație a fost o decriptare sau dacă circuitul AES a fost resetat atunci trebuie executată o operațiune de KeyExpansion pentru a obține ultima cheie de rundă, urmând, ca mai apoi, să fie executată operațiunea inversă (InverseKeyExpansion) pentru a decripta blocul de date încărcat.
Circuitul AES neprotejat
Pentru a putea efectua, respectiv descrie, atacurile de securitate efectuate, este necesară descrierea, pe scurt, a modulelor ce compun circuitul AES. Primul din aceste module este cel de date. Acesta este format din 4 regiștrii de shiftare care sunt folosiți pentru stocarea datelor „în clar”. Fiecare rundă de calcul modifică valoarea acestor regiștrii astfel încât la sfârșitul ultimei runde ei vor conține criptograma. Magistrala de date internă a circuitului AES este de 32biți motiv pentru care fiecare operație de calcul durează 4 ciclii de ceas (128biți/32 = 4 pași de calcul; fiecare pas de calcul durează 1 ciclu de ceas). Pentru a facilita extinderea circuitului AES, fiecare operație a fost implementată sub forma unui modul separat. Astfel, modulele ShiftBytes (care înglobează funcționalitatea operațiilor SubBytes și ShiftRows din standardul AES [93]), MixColumns și AddRoundKey execută operațiile aferente funcțiilor matematice omonime.
Circuitul AES dispune de două căi de procesare a datelor. Prima cale procesează textul „în clar” în timp ce cea de-a doua calculează cheia „de rundă”. Din motive de eficientizare, respectiv de securitate, operațiunea KeyExpansion, executată de modulul KeyScheduler, calculează cheia „de rundă” în timp ce sunt executate operațiile ShiftBytes și MixColumns. Astfel, operația AddRoundKey poate fi executată imediat după primele două, deoarece cheia necesară este deja calculată. În cazul implementărilor software, acest lucru nu este posibil, motiv pentru care cheia „de rundă” este calculată după executarea operațiilor mai sus amintite.
Figura 5.11 Schema bloc a modulului AES neprotejat
Pentru a putea fi rulat pe orice procesor de uz comun, respectiv pentru a putea fi sintetizat pe orice circuit digital reprogramabil, niciuna dintre implementări nu utilizează funcții dedicate ale unui anume producător (implementarea software utilizează limbajul standard C iar implementarea hardware utilizează limbajul Verilog, fără însă a instanția memorii sau alte module dedicate).
Figura 5.11 prezintă structura bloc a circuitului AES neprotejat. Acesta are nevoie de aproximativ 10 ciclii de ceas pentru a încărca datele (Figura 5.12), respectiv cheia de criptare și pentru a porni operația de criptare sau decriptare. Calea de date, în cazul implementării neprotejate, conține datele „în clar”, adică valorile reale ale semnalelor. Aceste module oferă o viteza medie spre mare de criptare și au avantajul de a ocupa un număr redus de resurse (5% în cazul circuitului digital reprogramabil si 35% în cazul microcontrolerului de uz comun).
Figura 5.12 Diagrama semnalelor pentru modulul AES neprotejat
Dezavantajul evident al acestor implementări este lipsa protecției împotriva atacurilor de securitate de tip analiză diferențială de putere, lucru ce va fi evidențiat în capitolul 6.
Circuitul AES protejat
Cea de-a doua implementare a circuitului AES utilizează tehnica mascării pentru a oferii protecție împotriva atacurilor de securitate de tip analiză diferențială de putere. Tehnica mascării, după cum relevă însăși denumirea, „ascunde” datele prin realizarea unei operații logice asupra acestora, utilizând numere aleatoare. Astfel, în cazul unui atac de securitate de tip analiză diferențială de putere, factorul de corelație va avea valori scăzute datorită faptului că datele procesate diferă de cele „în clar”, motiv pentru care și consumul de putere cauzat va fi diferit.
Pentru a implementa tehnica mascării [42] [65] au fost utilizați doi regiștrii de date suplimentari (simbolizați cu M și N în Figura 5.13). Aceștia stochează măștile M și N, ambele având dimensiunea de 128 biți.
Figura 5.13 Schema bloc a modulului AES protejat
Figura 5.14 Diagrama semnalelor modulului AES protejat
Tehnica de mascare implementată funcționează la nivel de rundă, după cum urmează. Prin semnalele load_i, maskm_load_i și maskn_load_i (Figura 5.14) sunt încărcate datele în circuit. Prima dată se încarcă masca M, iar apoi masca N. Prin asertarea semnalului load_i, datele „în clar” sunt încărcate în registrul de date S, în timp ce sunt mascate cu masca M:
. (5.6)
Prima operație a unei runde AES este ShiftBytes (SubBytes + ShiftRows). În cadrul acestei operații octeții de date sunt substituiți prin intermediul tabelului de valori predefinite S-Box, respectiv sunt rotiți în interiorul registrului de date. În cazul implementării protejate, atât datele cât și măștile M și N parcurg această operație:
, (5.7)
, (5.8)
. (5.9)
Următorul pas constă în execuția operației MixColumns. Pentru a prevenii anumite vulnerabilități ce pot să apară în acest punct, măștile sunt schimbate. Pentru aceasta atât date cât și masca N parcurg operația MixColumns:
, (5.10)
. (5.11)
Pentru a nu expune, în clar, datele în nici un moment de timp, remascarea se realizează după cum urmează:
. (5.12)
Ultima operație a unei runde AES este AddRoundKey:
. (5.13)
Astfel se realizează mascarea fiecărei runde în parte urmând ca, la sfârșitul celei de-a zecea runde, conținutul registrului de date să fie:
. (5.14)
Dacă se efectuează operația de citire (read_i este asertat) atunci datele sunt demascate:
. (5.15)
În acest fel datele sunt mascate pe toată perioada execuției operațiilor criptografice fiind obținute în clar doar la citire. Această tehnică, deși simplă, poate oferi un nivel ridicat de protecție (vezi capitolul 6).
Figura 5.15 Schema bloc a modulului AES cu interfață serială
Circuitul AES dispune de o interfață dedicată care permite încărcarea rapidă a datelor. Din motive practice însă, interfața serială (RS232) constituie o opțiune mult mai bună pentru a facilita interacțiunea cu standurile experimentale (ambele standuri dispun de un port serial dedicat). Din aceste motive, circuitul AES a fost extins cu o interfață serială standard. Pentru standul I, dotat cu un microcontroler de uz general, interfațarea cu portul serial a constat în dezvoltarea unui modul software (eng. „driver”) care să permită utilizarea portului serial ca metodă generică de intrare-ieșire (eng. „standard input-output”). În cazul implementării hardware a fost dezvoltată o interfață serială ce realizează adaptarea semnalelor circuitului AES la cele ale portului serial (Figura 5.15).
Figura 5.16 Schema logica a modulului AES serial
Modulul serial implementat conține o mașină de stări (Figura 5.16) care:
decodează comenzile primite prin intermediul interfeței seriale, de la calculator;
controlează modulul AES;
returnează în mod automat datele atunci când modulul AES le pune la dispoziție.
Modulul serial este activ doar pe perioada de timp cât recepționează o comandă și o decodifică. În acest fel, efectul sau asupra consumului de putere, pe perioada execuției operațiilor criptografice este minim.
Implementările descrise reprezintă nu doar un set de vectori de testare pentru aplicația de evaluare a nivelului de securitate, Power Analysis Toolkit. Optimizările realizate pentru aceste implementări alături de metoda de protecție implementată, sunt asemănătoare celor utilizate în produse ce pot fi găsite în mod curent pe piață. Din acest motiv evaluarea gradului de protecție al acestora devine obiectivă, putând fi trase concluzii practice cu privire la vulnerabilitățile de securitate descoperite.
Standuri experimentale
Pe baza informațiilor specificate în capitolele precedente, au fost dezvoltate două standuri de testare. Scopul acestora a fost achiziționarea curbelor de consum necesare executării analizei diferențiale de putere.
Primul pas în realizarea acestor standuri a constat în selectarea metodei de achiziție a datelor. Astfel, pentru achiziția curbelor de consum au fost dezvoltate două standuri de testare, primul echipat cu un microcontroler de uz comun, iar cel de-al doilea cu circuit digital reprogramabil (FPGA). Standul de măsurare a constat din (Figura 5.17):
calculator de uz comun – cu ajutorul aplicației Power Analysis Toolkit a fost controlat circuitul analizat (au fost controlate operațiile executate, respectiv încărcate și citite datele în clar, respectiv criptogramele);
circuit analizat – standul de testare care a permis înregistrarea curbelor de consum pe durata efectuării operațiilor de interes;
osciloscop digital – prin intermediul unui semnal de trigger au fost înregistrate curbele de consum – totdeauna de aceiași lungime, pornind din același punct (start_encryption();).
Figura 5.17 Stand teoretic de măsurare [107]
Pentru a putea măsura puterea absorbită de circuite au fost realizate măsurători asupra tensiunilor de alimentare. În cazul ambelor standuri, sursa de alimentare utilizată, din motive practice, a fost un port USB (5Vcc/500mA). Această soluție, deși simplă, s-a dovedit a pune o serie de probleme din cauza zgomotului ridicat (Figura 5.18). Acest zgomot (riplu), datorat în special surselor în comutație, are o componentă de frecvență ridicată astfel încât filtrarea a fost posibilă prin utilizarea unor filtre pasive L-C.
Figura 5.18 Zgomotul tensiunii de alimentare a portului USB
Pentru determinarea metodei optime de filtrare a fost realizată simularea [105] circuitului, respectiv a zgomotului datorat surselor în comutație (Figura 5.19). Astfel, au fost validate valorile calculate ale componentelor filtrelor pasive permițând realizarea schemei de alimentare. Pe baza acestora au fost utilizare filtre LC pentru eliminarea zgomotului datorat surselor de alimentare.
Figura 5.19 Simularea zgomotului, respectiv a filtrelor utilizate pentru filtrarea tensiunii portului USB
STAND I – Microcontroler
Considerând aspectele prezentate anterior, respectiv filtrarea sursei de alimentare, separarea căilor de curent, separarea modulelor de interes de celelalte module, prin utilizarea de căi separate de alimentare, și echiparea liniei de masă cu un rezistor de șunt care să permită măsurarea consumului de putere, a fost realizată schema din Figura 5.20.
Realizarea practică a schemei s-a materializat în circuitul de test prezentat în Figura 5.21. Parametrii tehnici ai standului de testare sunt:
Tensiune de alimentare: 5Vcc;
Microcontroler: ATmega328;
Frecvență de operare: 4/8/16MHz;
Interfață de control: RS232.
STAND II – Circuit digital reprogramabil (FPGA)
Cel de-al doilea stand (Figura 5.23) este bazat pe un circuit digital reprogramabil. Datorită numărului mare de pini și a complexității ce o implica realizarea completă a unui circuit cablat pentru un astfel de circuit, a fost selectată spre utilizare o placă de dezvoltare echipată cu un circuit digital reprogramabil. Deoarece scopul achiziției este determinarea consumului circuitului reprogramabil în sine, a fost aleasă cea mai simplă placă de dezvoltare existentă care să aibă un număr minim de componente adiacente, astfel încât influența acestora asupra consumului măsurat să fie minimă. Astfel a fost selectată placa de dezvoltare Nexys II produsă de compania Digilent. Această placă este echipată cu un circuit digital reprogramabil produs de compania Xilinx și nu necesită programe licențiate (a fost utilizat Xilinx ISE web pack). Caracteristicile tehnice ale standului sunt (Figura 5.22):
Xilinx Spartan-3E FPGA, 1200K porți logice;
Conectivitate USB 2.0 pentru programarea circuitului, transferuri rapide de date și alimentare cu energie electrică;
16MB Micron PSDRAM;
16MB Intel StrataFlash Flash R;
Xilinx Platform Flash ROM;
Frecvență PLL 50MHz;
75 de pini de uz general (GPIO) cu protecție împotriva descărcărilor electrostatice.
Figura 5.22 Diagramă bloc a standului II
Figura 5.23 Stand de testare echipat cu circuit digital reprogramabil
Dacă în cazul anterior schema de alimentare nu presupunea o atenție deosebită, în afară de filtrarea tensiunii de alimentare, în acest caz circuitul digital reprogramabil necesită o schemă complexă de alimentare. Analiza schemei plăcii de dezvoltare a relevat faptul că circuitul are un număr ridicat de puncte de alimentare. Deși pentru execuția analizei diferențiale de putere este necesară măsurarea doar a acelor puncte de alimentare care reflectă consumul de energie cauzat de modulele ce efectuează operația de interes, în cazul circuitelor digitale reprogramabile, acest lucru este imposibil. Aceasta clasă de circuite este în esență formată dintr-o matrice de porți logice care sunt interconectate printr-o serie de rute programabile. Plasarea circuitului dorit (programat în prealabil într-un limbaj de nivel înalt) este la directa influență a programului de sinteză. Astfel a fost aleasă o soluție de compromis ce a constat în inserarea unui rezistor de sunt în linia de alimentare a sursei care alimentează direct întregul circuit reprogramabil. Șuntul inserat permite măsurarea consumului de putere cauzat de circuitul digital reprogramabil în timp ce celelalte componente, alimentate din aceiași sursă, sunt alimentate în amonte de acesta.
Utilizând cele două standuri au fost realizate achizițiile de date necesare pentru efectuarea analizelor diferențiale de putere, cu scopul identificării eventualelor breșe de securitate.
Stand de măsurare
Pentru a putea achiziționa curbele de consum necesare executării atacurilor de securitate de tip analiză diferențială de putere, a fost utilizat un stand de măsurare (Figura 5.24) comun celor două standuri experimentale.
Din motive practice sursa de tensiune utilizată a constat dintr-un port USB 2.0, standard. Pentru eliminarea zgomotului electric au fost utilizate filtre pasive (conform celor prezentate anterior și în [105]). Totodată, pe linia de alimentare a sursei a fost inserat și senzorul de curent care constă într-un rezistor de valoare mică. Valoarea rezistorului a fost aleasă în așa fel, încât să nu aibă un efect negativ asupra tensiunii de alimentare a circuitelor analizate, însă să permite determinarea variațiilor de consum cauzate de procesarea datelor de interes.
Măsurătorile au fost realizate cu ajutorul unui osciloscop digital de mare precizie. Osciloscopul digital utilizat permite, pe lângă funcțiile clasice și procesarea, respectiv stocarea datelor, oferind combinația ideală între un osciloscop clasic și un calculator performant. Astfel nu au fost nevoie de programe externe de comandă sau control a osciloscopului, acesta putând lucra autonom. Conform teoremei lui Nyquist frecvența de eșantionare trebuie să fie de cel puțin două ori mai mare decât frecvența celui mai rapid semnal măsurat. Astfel, achiziția a fost făcută la o rezoluție de 1GS/s ceea ce a permis obținerea unor curbe de consum de mare rezoluție, menținând însă dimensiunea acestora la un nivel redus. Pentru declanșarea procesului de înregistrare a curbelor de consum a fost utilizat un trigger extern care a constat într-un pin de uz comun al standurilor de testare (pinul se menține în starea logică 1 pe parcursul execuției operației de criptare). Pentru eficientizare, au fost înregistrare doar primele trei runde de calcul, în contextul în care punctul de atac îl constituie prima rundă a algoritmului AES.
Figura 5.24 Stand de măsurare
Operația criptografică, executată de standurile experimentale, a fost controlată cu ajutorul unui calculator ce are următoarele specificații:
Procesor Intel Core2Duo E8400, 3GHz;
8GB memorie de lucru;
2TB spațiu de stocare;
Sistem de operare Linux (Ubuntu 12:04, 64bit).
Pentru realizarea funcției de control a fost utilizată interfața seriala standard (RS232). Parametrii porturilor seriale ale standurilor experimentale sunt:
Viteza de 19200 caractere pe secundă (eng. „baud rate”);
8 biți de date;
1 bit de stop;
Fără paritate;
Fără control al fluxului de date;
Comunicație simplă (fiecare partener „discută” pe rând cu fiecare partener; comunicațiile multidirecționale nu sunt suportate);
Fără detecție și corecție a erorilor de transmisie (din motive de consum de putere).
Funcțiile de control au fost executate cu ajutorul aplicației Power Analysis Toolkit, respectiv a modulului de control al acesteia. Pe fiecare stand de testare au fost verificate două implementări ale algoritmului AES: o versiune simplă, fără mecanisme de protecție și una cu mecanisme de protecție (versiunea protejată utilizează tehnica mascării [26] [46]). Tabelul 5.4 prezintă lista de comenzi disponibile, cu ajutorul cărora poate fi controlat circuitul logic ce implementează algoritmul AES.
Tabelul 5.4 Listă de comenzi
PAT are următoarea sintaxă:
syntaxa: python pat.py record_tracesy <COM port> <fisier chei> <numar chei> <fisier texte in clar> <numar texte in clar> <criptare sau decriptare>
unde câmpurile de control au semnificațiile prezentate în tabelul Tabelul 5.5.
Tabelul 5.5 Câmpuri de control
În urma fiecărei operații criptografice se obțin datele ce urmează a fi folosite pentru executarea atacului de securitate tip analiză diferențială de putere și anume:
Cheia de criptare utilizată;
Datele de intrare („în clar”);
Datele de ieșire („criptograma”);
Curba de consum sub forma unui fișier *.csv.
Pentru toate măsurătorile, fie ele experimentale sau simulări logice ale circuitului analizat, au fost utilizați următorii vectori de test prezentați în Tabelul 5.6.
Tabelul 5.6 Vectori de test
PAT nu dispune de o interfață grafică astfel încât toate comenzile sunt executate din linie de comandă. Totodată este de menționat faptul că toate comenzile au lungime identică, respectiv toate comenzile necesită trimiterea unui număr de 17octeți de date (1 octet comanda + 16 octeți datele utile). În cazul comenzilor de lungime mai scurtă (de exemplu comanda encrypt/decrypt cei 16octeți de date pot fi date aleatoare).
Stand „de simulare”
În proiectarea circuitelor integrate digitale, indiferent dacă este vorba de circuite specializate pe o aplicație dedicată (ASIC) sau circuite cu logică programabilă, metoda cea mai folosită constă în următoarele etape:
elaborarea specificațiilor;
modelarea comportamentală, la nivel de regiștrii (RTL) într-un limbaj de descriere hardware (HDL);
simularea modelului RTL în vederea validării acestuia;
sinteza codului RTL;
(opțional) verificarea rezultatului sintezei (tot HDL) în simulare și validarea acestuia;
plasarea și rutarea;
calculele statice de timp și validarea circuitului post-layout;
simularea circuitului post-layout cu informațiile de timp generate anterior și validarea acestuia;
tape-out-ul circuitului în cazul circuitelor dedicate, sau generarea fișierului de programare în cazul utilizării circuitelor digitale reprogramabile.
Elaborarea specificațiilor presupune descrierea comportamentului sistemului care se proiectează. Aceasta descriere se poate face în mai multe moduri. Cel mai adesea se face în mod textual, însă abordările moderne au adoptat descrieri în diferite limbaje de programare (C++, SystemC) sau combinații între descrieri textuale și descrieri în limbaje dedicate. Elaborarea specificațiilor este o etapă foarte importantă care asigura succesul proiectului. Specificațiile trebuie agreate de către proiectant și beneficiar, existând de obicei numeroase iterații până când acestea ating o formă stabilă, pe baza căreia inginerii proiectanți să poată începe dezvoltarea circuitului. Specificațiile cuprind de obicei atât lista de cerințe cât și arhitectura propusa pentru circuitul proiectat. Nivelul de detaliere al acestor specificații are un impact deosebit asupra timpului de realizare a modelului HDL, a mediului de verificare, a codului RTL precum și a numărului de iterații dintre echipa de proiectare și cea de verificare. În cazul prezentei teze de doctorat, a fost implementat un circuit de criptare AES, atât într-o varianta software pe microcontroler de uz comun, cât și ca circuit logic pe un circuit digital reprogramabil (FPGA). Capitolul actual prezintă metodologa de proiectare pentru implementarea pe dispozitive FPGA. Specificațiile acestui modul au fost descrise pe larg în capitolul 5.4.
Modelarea comportamentală presupune descrierea comportamentului într-un limbaj de descriere hardware. Cele mai utilizate limbaje de descriere hardware sunt VHDL și Verilog. În cazul de față limbajul utilizat pentru descrierea circuitului AES a fost Verilog. Descrierea de nivel înalt este una structurală în care se instanțiază toate modulele funcționale. Aceasta are avantajul unei clarități asupra implementării, a ușurinței de a efectua modificări dacă este cazul precum și facilitarea verificării și depanării modulului. Circuitul AES este, astfel, compus din module individuale, interconectate la nivel logic între ele. Fiecare modul (bloc) funcțional a fost la rândul lui descris comportamental.
Simularea comportamentală are ca scop validarea modelului descris anterior într-un limbaj de descriere hardware. Această etapa „consumă”, de foarte multe ori, cea mai mare parte din efortul necesar dezvoltării circuitului.
Etapa de simulare comportamentală presupune de fapt etapa de verificare a codului RTL dezvoltat anterior, cod care în cea mai mare parte este scris manual (pentru anumite module, cum ar fi blocuri de memorie, implementare de operații aritmetice, blocuri cu funcții specifice procesării de semnale digitale, blocuri de regiștrii de configurare, poate exista și cod generat automat de unelte software) și reprezintă “materia primă” pentru etapele următoare (care sunt executate de unelte software, proiectantul fiind implicat doar în realizarea de fișiere cu secvențe de comenzi sau în interacțiunea cu un mediu grafic, precum și descrierea fișierelor de constrângeri). Această etapă, denumită și verificare comportamentală, reprezintă pasul cel mai important în realizarea fizică a unui circuit digital integrat – fără această etapă, circuitul dezvoltat nu poate fi considerat funcțional.
Erorile de proiectare nedetectate în aceasta etapa, chiar dacă aparent sunt minore, de cele mai multe ori duce la nefuncționarea sistemului și generează costuri foarte mari pentru eliminarea acestora cu cât sunt detectate mai târziu (adică pe parcursul etapelor următoare). Din acest motiv se acordă o atenție deosebită verificării codului RTL (cod care descrie logica de transfer la nivel de regiștrii).
Obiectivul minimal al acestei etape constă în validarea funcționarii sistemului proiectat în situațiile în care se presupune că acesta va funcționa, specificate în faza inițială. Practica a dovedit ca doar simularea acestor situații este insuficiente, fiind necesara acoperirea următoarelor cazuri:
situațiile uzuale de funcționare;
cazul cel mai nefavorabil;
orice alte situații care chiar dacă nu pot fi intuite, pot fi simulate folosind stimuli aleatori.
Pentru circuitul criptografic implementat s-a realizat un mediu de verificare direcționat. Acesta citește stimuli din fișiere de stimuli, îi transmite modelului RTL, preia ieșirile din model și le compară în mod dinamic cu ieșirile așteptate pe care le citește din fișierul de rezultate de referință (eng. „golden reference”), generând în acest mod informații despre rezultatul testării (OK sau EROARE). Astfel, mediul de verificare este minimalist, responsabilitatea validării modelului fiind transferată către generarea stimulilor de testare. În cazul circuitului AES implementat, stimulii folosiți pentru testare trebuie sa asigure că au fost exersate cât mai multe combinații de chei și stimuli de intrare care sa realizeze o acoperire cât mai buna a valorilor logice a tuturor semnalelor din model.
Mediul de verificare a fost dezvoltat tot în limbajul Verilog. Conceptul care stă la baza mediului de verificare este prezentat în Figura 5.25.
Pentru simularea modelului și a mediului de verificare, s-a folosit ca simulator digital programul Modelsim produs de compania Mentor Graphics. Totodată același simulator a fost folosit și pentru generarea fișierelor *.vcd cu ajutorul cărora au fost create curbele de consum pentru circuitul AES simulat.
Figura 5.25 Mediul de testare și verificare
Pentru verificare, au fost folosite mai multe chei de criptare și texte „în clar”, după cum urmează:
în etapa de dezvoltare, respectiv depanare a circuitului AES, au fost folosite doua chei de criptare standard și vectori de test aferenți acestora, recomandați de standardul AES [93]. Prin utilizarea acestor vectori de test este garantat, conform NIST (National Institute of Standard and Technology), că modulul implementat este conform cu standardul, respectiv că va funcționa corect cu orice cheie și orice date de intrare.
verificare exhaustiva :
pentru o cheie din standard, s-au generat un milion de vectori de test aleatori (date de criptat). Rezultatele de referința au fost generate cu Crypto++ [109], o biblioteca software open source, certificată NIST.
pentru alte 9 chei s-au folosit 10000 de vectori de test, generați aleator, cu ajutorul modulului de numere aleatoare (urandom) din nucleul sistemelor de operare din familia Linux. Ca și în cazul anterior, rezultatele de referință au fost generate folosind biblioteca Crypto++. Atât cheile de criptare cât și blocurile de date au o lungime fixă de 128 biți.
Pentru fiecare set de chei și date (din cele descrise mai sus) s-au rulat următoarele scenarii :
criptare după reset;
decriptare după reset;
criptare după criptare;
criptare după decriptare;
decriptare după criptare;
decriptare după decriptare.
În urma simulărilor efectuate cu scenariile și datele de test descrise anterior, s-a validat funcționarea modulului de criptare AES și s-a concluzionat că acesta este conform standardului AES [93].
Sinteza codului RTL constă în transformarea codului scris în limbaje de descriere hardware (HDL) care conține descrierea comportamentală, de nivel înalt, a sistemului, într-un cod (tot HDL) ce descrie funcționarea circuitului la nivel de poarta logică, pe baza bibliotecilor de componente specifice tehnologiei în care se face implementarea fizică. Astfel, în urma sintezei rezultă fișiere netlist ce conțin implementarea circuitului descris anterior cu ajutorul componentelor din bibliotecile de componente precum și conexiunile dintre aceste componente. De asemenea, în etapa de sinteza au loc foarte multe optimizări, în scopul îndeplinirii constrângerilor de arie și timpi de propagare specificate sintetizatorului prin intermediul fișierelor de constrângeri (fișiere programate manual pe parcursul dezvoltării circuitului, în faza de proiectare). De asemenea, în urma sintezei se obțin informații referitoare la resursele utilizate (arie de siliciu, număr de porți logice, număr de bistabile, dimensiunea memoriilor RAM/ROM folosite etc.), precum și informații estimative ale timpilor de propagare și deci implicit a frecventei maxime a semnalului de ceas care se aplica la intrarea circuitului (aceste informații legate de timpii de propagare sunt doar estimate, timpii de propagare exacți pe rutele de interconectare vor fi cunoscuți numai în etapele următoare, de aceea, în această etapă constrângerile nu trebuie numai îndeplinite, ci trebuie sa aibă o marjă suficient de largă pentru a putea fi îndeplinite în următoarele etape).
Pentru implementarea fizică a circuitului criptografic AES, respectiv pentru sinteza, s-a folosit programul : “ISE Design Suite” oferit de compania XILINX.
Verificarea rezultatului sintezei este o etapa opțională, folosită în general, atunci când dimensiunea și complexitatea circuitului este foarte mare, sau dacă se folosesc construcții în limbajul de descriere unde exista suspiciuni că sintetizatorul le-ar putea “interpreta” într-un mod diferit decât a fost intenționat inițial. Această etapă, presupune rularea în simulare a codului obținut post-sinteza, folosind același mediu de verificare ca în etapa anterioară. În plus, trebuie compilate toate elementele din bibliotecile de sinteză, pentru a putea efectua această operație. Aceasta etapa este de cele mai multe ori costisitoare ca timp, iar când implementarea se face pe dispozitive FPGA, de foarte multe ori nu este necesara (costul unor erori detectate mai târziu nu este foarte mare circuitul FPGA putând fi reprogramat extrem de ușor).
Pentru implementarea circuitului AES, această etapă nu a fost necesara.
Plasarea și rutarea este o etapă realizată automat de instrumente software, în cazul de față, de utilitare din cadrul programului Xilinx ISE. Aceasta etapă are ca scop plasarea componentelor pe chip și realizarea conexiunilor dintre acestea. Ca elemente de intrare în această etapă, se folosesc fișierele netlist obținute după etapa de sinteză, fișierele de constrângeri obținute tot în urma etapei de sinteză (derivate din constrângerile inițiale) precum și bibliotecile de tehnologie (care conțin informații specifice tehnologiei circuitului care se proiectează).
Calculele de timp exacte se fac după etapa de plasare și rutare. În acest moment, pe baza „hărții” dispozitivului și a informațiilor exacte din bibliotecile de tehnologie, se realizează extragerea și calcularea timpilor de propagare între toate nodurile circuitului. Aceasta ia în considerare timpii de propagare pe rute și timpii specifici elementelor logice (stabilizare, menținere, propagare). Informațiile referitoare la acești timpi sunt transmiși în diferite moduri către proiectant: ca informație textuală, referitoare la cazurile cele mai nefavorabile, de exemplu, sau prin generarea de fișiere SDF [eng. „Standard Delay Format”] care conțin informații legate de timpi pentru fiecare componentă și rută în parte.
Simularea circuitului post-layout este o etapa necesară în special pentru implementările pe ASIC (circuite integrate specific unei aplicații). Această verificare ia în considerare modelul cel mai apropiat de implementarea fizica (cel obținut după plasare și rutare) ținând cont de toate constrângerile posibile (în cadrul acestui tip de simulare sunt utilizate și fișierele care conțin informațiile de timp generate în etapa anterioară). Pentru implementări pe circuite de tip FPGA, această etapa se realizează numai dacă este vorba de circuite foarte complexe, unde siguranța în funcționare a acestora este critica, sau în cazul în care apar erori care nu pot fi depanate altfel.
In cazul implementării modulului de criptare AES, aceasta etapa nu a fost necesara.
Tape-out (ASIC) sau generarea de fișier de programare (FPGA) este etapa în care se transfera informația descrierii fizice a proiectului către fabricant (ASIC) sau către circuitul de configurare al dispozitivului FPGA folosit.
Concluzii
Pe parcursul acestui capitol au fost prezentate aspectele care produc, din punct de vedere fizic, respectiv tehnologic, absorbția de putere în cazul circuitelor digitale integrate. Au fost definite principalele componente ale puterii absorbite, în cazul circuitelor fabricate în tehnologia CMOS, totodată au fost prezentate problemele ce apar la tranzițiile semnalelor dintr-o stare logică în alta, probleme care produc pe de-o parte o variație, măsurabilă, a puterii absorbite, dar conduc și la eventuale probleme funcționale.
Deoarece tehnica analizei diferențiale de putere presupune achiziția curbelor de consum, aferente operațiilor de interes, executate de circuitul analizat, pe parcursul acestui capitol au fost tratate și aspectele legate de tehnicile de măsurare. Pentru fiecare tehnică au fost prezentate avantajele și dezavantajele, împreună alături de o serie de recomandări practice unde ar putea fi utilizate aceste metode.
Totodată au fost prezentate modulele software și hardware implementate, standurile experimentale și de măsurare utilizate în paralel cu prezentarea standului „de simulare”, cu ajutorul căruia au fost generate curbele de consum utilizând circuitul AES simulat.
Procesarea curbelor de consum. Analiza diferențială de putere.
Execuția ADP
Power Analysis Toolkit
Rezultate
Concluzii
Având ca bază informațiile ce descriu caracteristica de consum a circuitelor digitale integrate CMOS, alături de metodologia de execuție a analizei diferențiale de putere, au fost executate o serie de atacuri de securitate cu scopul validării simulărilor funcționale, ca metodă de evaluare a gradului de securitate a unui circuit digital.
Astfel, pe parcursul acestui capitol vor fi descrise atacurile executate, programul software dezvoltat cu scopul de efectuare a atacului și rezultatele obținute.
Execuția ADP
Analiza diferențială de putere efectuată în acest context a presupus modificarea metodei de execuție (Figura 6.1), astfel încât să poată fi efectuate atacuri de securitate și asupra datelor simulate.
Figura 6.1 Analiză diferențială de putere – metodă de execuție modificată
Astfel, construcția matricei curbelor de consum C a fost efectuată utilizând date ce au rezultat în urma măsurătorilor realizate cu ajutorul standului II, echipat cu un circuit digital reprogramabil. Pentru aceasta a fost utilizat un simulator digital standard care permite interfațarea cu limbaje de scripting. Pentru simularea circuitului, au fost folosiți aceiași vectori de test ca și în cazul atacurilor reale asupra implementării software (stand I) și asupra circuitului implementat fizic (stand II). Pentru achiziția datelor a fost utilizat un osciloscop digital LeCroy Wavesurfer 434 care a permis nu numai înregistrarea, cu precizie, a curbelor de consum, dar a permis și rularea programului de analiză diferențială de putere (PAT).
Figura 6.2 Schema bloc a modulului AES
Pentru efectuarea analizei diferențiale de putere, a fost folosit un modul AES, implementat fie software fie hardware, utilizând structura prezentată în Figura 6.2. Astfel a fost asigurată similaritatea între toate implementările folosite. Totodată au fost folosiți aceiași vectori de test în toate cazurile, putându-se deci efectua o analiză comparativă corectă între rezultatele ADP asupra diverselor implementări.
Atacul de securitate, de tip analiză diferențială de putere, este executat pe:
Date rezultate în urma simulării, la nivel logic, a unui circuit (eng. „RTL simulation”);
Date rezultate în urma simulării, la nivel fizic, a unui circuit (eng. „gate level simulation”);
Date rezultate în urma achiziției experimentale a consumului unui circuit realizat fizic.
Pentru fiecare atac de securitate sunt necesare un număr ridicat de curbe de consum. În cazul măsurătorilor experimentale, aceste curbe sunt achiziționate direct. În cazul simulărilor, curbele de consum sunt derivate din așa-numitele fișiere *.vcd. Acestea conțin numărul de tranziții ale semnalelor interne circuitului simulat față de referința de timp. Pentru a deriva curbele de consum pornind de la această informație, se consideră ca o tranziție este egală cu o unitate de consum (adimensională – unitatea de măsură nu este relevantă în acest context ci doar diferența dintre minimul și maximul curbei de consum). Astfel, suma tranzițiilor tuturor semnalelor, la un moment de timp dat, reprezintă un punct de pe curba de consum. Această tehnică [42] deși foarte simplă, permite realizarea unor curbe de consum care reflectă activitatea din interiorul circuitului analizat. Există însă o serie de aspecte ce trebuie considerate în cazul unei astfel de conversii. În primul rând este importantă generarea fișierelor de tip *.vcd. Acestea trebuie să conțină activitatea întregului circuit, fără a omite semnalele „neimportante”. Fiecare semnal, chiar dacă are un număr redus de tranziții pe parcursul perioadei analizate, va contribui la consumul total al circuitului fizic. Astfel, omiterea unui semnal în cadrul simulărilor funcționale poate determina „eșecul” analizei diferențiale de putere și deci eventuala omitere a unei breșe de securitate. Totodată este importantă diferența dintre cele două tehnici de simulare: la nivel logic și la nivel fizic. Simularea la nivel logic nu consideră timpii de propagare prin porțile logice fizice (timpi ce depind, după cum a fost arătat, de tehnologie) astfel încât tranzițiile semnalelor au loc simultan cu tranziția frontului activ al ceasului de sistem. Simularea la nivel fizic consideră și aspectele tehnologice ale circuitului implementat. Această tehnică de simulare este similară precedentei, singura diferență fiind considerarea timpilor de propagare prin porțile logice fizice și a întârzierilor de propagare prin rutele de legătură dintre porți.
Pentru efectuarea analizei diferențiale de putere pot fi considerate două modalități de analiză. Prima metodă presupune sumarea tranzițiilor tuturor semnalelor la un moment de timp. Deoarece analiza diferențială de putere identifică momentul de timp la care datele procesate de circuit au putut fi „identificate”, nu se poate zice, în acest caz, cu exactitate care din semnalele interne ale circuitului a constituit veriga slabă. Astfel, în cazul sumării tranzițiilor, se poate determina acea stare a circuitului care să ducă la identificarea datelor procesate de acesta. Cea de-a doua metodă însă presupune efectuarea unei analize diferențiale de putere pe curba de consum a unui singur semnal. Astfel, pentru fiecare semnal din circuit se generează o curbă de consum. Relevarea corectă a datelor (în acest caz, fiind vorba de un singur semnal, „datele” sunt de fapt un singur bit de informație) permite astfel identificarea individuală a momentului de timp când un semnal intern al circuitului analizat permite efectuarea corectă a unei corelări.
Power Analysis Toolkit
Pe parcursul activităților de cercetare a fost dezvoltată o aplicație, ce poartă numele Power Analysis Toolkit (PAT) (v. anexa 1 și anexa 3) ce permite executarea automată a unor atacuri de securitate de tip analiză diferențială de putere. Aplicația a fost dezvoltată în limbajul de programare Python, din motive de portabilitate și ușurință de dezvoltare utilizând ca punct de plecare tehnicile prezentate în [42] [91].
Aplicația dezvoltată realizează analiza diferențială de putere a unui circuit digital integrat, utilizând ca date de intrare fișierele rezultate în urma unei simulării funcționale a circuitului sau în urma unei achiziții de date experimentale a consumului circuitului fizic. PAT are o structură modulară, după cum urmează:
modul de intrare – realizează conversia datelor în curbe de consum (în cazul fișierelor rezultate în urma simulărilor funcționale ale circuitului analizat); verifică alinierea datelor în vederea construirii matricei C;
modul de transfer – realizează împărțirea datelor pe blocuri pentru eficientizarea procesării acestora
modul de procesare – pe baza premiselor de atac (pondere Hamming ca metodă de evaluare și folosind una din premisele de atac descrise în capitolul 3), execută calculele aferente unei analize diferențiale de putere; rezultatul acestei analize este matricea R;
modul de ieșire – preia datele (matricea R) și le stochează alături de rapoartele de activitate (ce înregistrează valori intermediare de calcul pentru verificarea algoritmului și a timpilor de execuție); afișează rezultatele procesării, respectiv coeficienții de corelație.
Aplicația permite:
Pornirea unei simulări funcționale a unui circuit digital (utilizând un simulator digital standard – ModelSIM în acest caz) (v. anexa 2);
Pre- și postprocesarea datelor ce rezultă în urma simulării circuitului în cauză;
Estimarea consumului prezumptiv de putere pe baza datelor obținute din simulare (matricea I construită pe baza ipotezelor specificate în capitolul 3);
Pre- și postprocesarea fișierelor rezultate în achiziția puterii consumate de un circuit fizic (transpunerea fișierelor individuale rezultate în urma achiziției realizate cu ajutorul unui osciloscop digital și concatenarea lor într-un singur fișier – matricea C);
Realizarea unei analize diferențiale de putere;
Evaluarea și afișarea rezultatelor.
Programul PAT nu este dotat cu o interfață grafică, toate interacțiunea făcându-se prin intermediul unor fișiere de configurare sau a unor parametrii specificați în linie de comandă. Pentru reprezentarea grafică a datelor (rezultate intermediare sau finale) se utilizează formatul *.csv (eng. „comma separated values”) care permite utilizarea oricărui program de procesare tabelară sau matematică pentru afișarea și procesarea suplimentară a datelor.
Achiziția experimentală a caracteristicilor de consum ale circuitului digital analizat a fost realizată tot cu ajutorul companiei Siemens SRL, din Brașov, utilizând un osciloscop digital de înaltă rezoluție. Măsurătorile au fost efectuate pe o placă de dezvoltare, echipată cu un circuit digital reprogramabil. Pentru efectuarea măsurătorilor au fost modificate (parțial înlocuite, respectiv filtrate) sursele de alimentare și au fost inserate rezistori de șunt în liniile de alimentare.
Validarea experimentală a fost realizată pentru o serie de implementări standard a algoritmului criptografic AES (zece runde de calcul utilizând o cheie cu o lungime fixă de 128 biți și un bloc de date cu o lungime fixă de 128 biți), după cum urmează:
implementare software:
testată pe standul I;
implementare hardware:
testată pe standul II
testată pe baza unor simulări funcționale realizate la nivel:
logic – caracteristica de consum ce rezultă reflectă doar tranzițiile logice ale circuitului analizat, fără a lua în calcul timpii de propagare prin porțile logice sau prin rutele circuitului;
fizic – simulare la nivel de poartă logică (eng. „gate level simulation”); sunt luați în calcul toți parametrii care depind de tehnologia în care este implementat circuitul analizat.
Figura 6.3 Regiștrii de date ai circuitului AES
Pentru a putea efectua un atac de securitate de tip analiză diferențială de putere, se efectuează o analiză a circuitului implementat. Astfel după cum se poate observa în Figura 6.3, structura regiștrilor de date este circulară. Pe parcursul operațiilor ShiftBytes și ShiftRows, regiștrii de date sunt procesați octet cu octet menținându-se direcția de rotire-are. Datorită structurii regiștrilor de date (v. anexa 2), coloana inferioară (, , , ) este procesată. Aceasta înseamnă că datele , , și sunt cele ce intra în algoritmii de procesare, în timp ce datele , , și sunt cele care ies din algoritmii de procesare a datelor, respectiv sunt rezultatul rundelor de calcul ale circuitului AES. Dacă, de exemplu, ar fi fost aleasă o structură cu un registru de date cu o adâncime de 1 și lățime de 128biți, atunci modificările datelor stocate de acest registru ar fi coincis cu execuția unei runde de calcul a algoritmului AES. Astfel, indiferent de structura registrului de date, valorile conținute de acesta reflectă rezultatele intermediare și cele finale ale rundelor de calcul ale algoritmului AES.
Datorită acestui fapt reiese clar posibilitatea utilizării distanței Hamming pentru executarea unei analize diferențiale de putere:
, (6.1)
. (6.2)
Astfel, ipotezele de atac sunt:
, (6.3)
, (6.4)
, (6.5)
, (6.6)
, (6.7)
. (6.8)
Tabelul 6.1 Valoarea factorilor de corelare pentru cele două ipoteze alese
Diferența dintre cele două ipoteze este dată de structura regiștrilor de date. Astfel, totdeauna va fi shift-at peste (primul pas), urmând ca, de abia la ultimul pas, să fie shift-at peste . Totodată aceiași structură determină și ordinea de procesare a datelor. La fiecare shift-are, octetul este procesat de logica aferentă rundei de calcul a algoritmului AES. Astfel octeții sunt procesați după cum urmează: ,, și. Devine astfel evidentă veridicitatea ipotezei . Totodată devine evident și motivul pentru care a putut fi observată o slabă corelare pentru ipoteza , fapt ce se datorează legăturii dintre operația de shift-are și efectul acesteia asupra octetului de date . Operațiile SubBytes și ShiftRows sunt astfel cele care pot releva cel mai ușor datele de interes. Însă datorită faptului că operația ShiftRows nu afectează valoarea octetului (ShiftRows doar „rotește” rândurile, fără să afecteze coloanele) efectul acesteia este minim. Astfel se poate considera că ambele operații constituie un punct, la fel de bun, de atac.
Trebuie însă remarcat că momentul de atac este extrem de important. Astfel punctul de atac ales este prima rundă de calcul deoarece:
Fiecare octet ce rezultă în urma operației SubBytes depinde DOAR de un octet al cheii de criptare. Pentru rundele următoare acest lucru nu mai este valabil, astfel încât ipoteza va necesita un număr mai mare decât cele posibile valori ale cheii de criptare, în cazul primei runde de calcul.
Operația SubBytes este neliniară, astfel încât, pentru variația unui 1 bit la intrare exista probabilitatea de 0.5 ca bitul de ieșire să comute. Această proprietate este extrem de importantă, ajutând la determinarea ipotezelor greșite, acestea ducând la coeficienți mici de corelare.
În conformitate cu observațiile prezentate, pentru determinarea cheii de criptare în cadrul atacurilor de securitate de tip analiză diferențială de putere, sunt utilizate ipotezele:
, (6.9)
, (6.10)
, (6.11)
, (6.12)
, (6.13)
, (6.14)
, (6.15)
, (6.16)
, (6.17)
, (6.18)
, (6.19)
, (6.20)
, (6.21)
, (6.22)
, (6.23)
. (6.24)
Rezultate
Cu ajutorul PAT au fost executate atacuri de securitate de tip analiză diferențială de putere asupra curbelor de consum achiziționate experimental și calculate pe baza simulărilor funcționale ale circuitului analizat. Pentru analiză au fost folosite modelule distanței și a ponderii Hamming. Punctul de atac a fost primul octet al cheii de criptare, procesat pe parcursul primei runde de calcul.
Rezultatele scot în evidență faptul că simulările funcționale ale circuitelor digitale relevă la fel de multă informație precum curbele de consum achiziționate experimental. Astfel este dovedită posibilitatea utilizării simulărilor funcționale ale circuitelor digitale integrate cu scopul determinării nivelului de securitate oferit de acestea. Există însă o serie de diferențe între rezultate, diferențe ce vor fi prezentate în cele ce urmează.
După cum se poate observa din Figura 6.5, curba de consum generată în urma simulării la nivel logic a circuitului analizat reflectă clar modelul comportamental al algoritmului AES. Astfel, din figură pot fi evidențiate clar primele trei runde de calcul ale algoritmului. Curba de consum este generată prin însumarea tranzițiilor tuturor semnalelor din circuitul analizat. După cum se poate observa din Figura 6.4 și Figura 6.5 există însă o diferență semnificativă între cantitatea de informații conținută de curbele de consum achiziționate experimental și cele determinate pe baza simulărilor funcționale la nivel logic. Dacă curba de consum achiziționată experimental, reflectă toate componentele de putere, enunțate în capitolele 2 și 4, curba de consum obținută în urma simulărilor funcționale la nivel logic reflectă doar consumul (calculat) datorat operațiilor executate și informației prelucrate. Frecvența de eșantionare aleasă este de trei ori mai mare ca cea a ceasului de sistem.
După cum se poate observa din Figura 6.6, caracteristica curbei de consum pentru o anumită rundă de calcul se păstrează. Diferențele vizibile reflectă astfel datele procesate de circuit pe parcursul rundei analizate.
Figura 6.6 Patru curbe de consum, ale primei runde, ale circuitului AES simulat la nivel logic
Pentru executarea analizei diferențiale de putere au fost efectuate 1000 de operații de criptare. Din cele 1000 de fișiere *.vcd au fost generate curbele de consum utilizând o frecvență de eșantionare egală cu frecvența de ceas a circuitului analizat (50MHz).
Figura 6.7 Curba de consum ce reflectă o operație de criptare, realizată în urma simulării funcționale, la nivel logic, a 1000 de operații identice asupra aceluiași set de date
Pe baza acestor curbe de consum este executat atacul de securitate ce țintește octetul 0 al cheii de criptare, pornind de la ipoteza:
. (6.25)
Astfel analiza diferențială de putere relevă primul octet al cheii de criptare după procesarea a 500 de curbe de consum în cazul sumării tranzițiilor și după doar 100 de curbe de consum în cazul în care semnalele nu sunt sumate. Dacă se compară valoarea coeficientului de corelație pentru cele două cazuri, după procesarea a 200 de curbe de consum, se constată faptul că valoarea coeficientului pentru cazul în care tranzițiile semnalelor sunt sumate este semnificativ mai mica decât în cazul opus. Rezultatele acestei analize sunt prezentate în Figura 6.8 și Figura 6.9. Pot fi astfel observate două vârfuri, de valoare 1, (culoare roșie) care reprezintă coeficientul de corelare calculat pentru curbele de consum ale semnalelor individuale. Totodată, pentru cazul curbelor de consum realizate prin sumarea tuturor semnalelor, se observă lipsa unui coeficient crescut de corelare, evidențiind astfel slăbiciunea metodei.
Figura 6.8 Reprezentarea grafică a factorului de corelație – AES fără protecție. Simulare la nivel logic. []
Figura 6.8 relevă totodată momentele de timp la care a avut loc corelarea. Acestea sunt cele aferente execuției operațiilor SubBytes și ShiftRows (operațiuni executate în paralel), respectiv a procesării octeților 0 și 4 și a operației MixColumns.
Figura 6.9 Reprezentarea grafică a factorului de corelație – AES cu protecție. Simulare la nivel logic. []
Similar cazului anterior, pentru a testa capacitatea de protecție a tehnicii de mascare, au fost executate 1000 de operații criptografice în urma cărora au fost generate curbele de consum aferente. Astfel, folosind aceiași ipoteză ca și în cazul anterior, se poate observa în Figura 6.9 absența unui vârf de corelație. Pentru a verifica suplimentar metoda de protecție, au fost generate 10000 curbe de consum, din nou însă, fără a obține un rezultat pozitiv în urma atacului de securitate efectuat. Se poate trage astfel concluzia că metoda mascării datelor este eficientă, permițând protecția circuitelor criptografice cu un efort minim.
Figura 6.10 Reprezentarea grafică a factorului de corelație – AES cu protecție. Simulare la nivel fizic. []
Analiza diferențială executată asupra circuitelor simulate funcțional la nivel fizic (eng. „gate level simulation”) a fost realizată cu ajutorul Programului Xilinx ISE și a simulatorului digital Mentor Graphics ModelSIM. Circuitul AES este implementat pe un circuit digital reprogramabil de tip FPGA, produs de compania Xilinx (SPARTAN 3E). Circuitul a fost sintetizat să ruleze la o frecventă de 50MHz, iar perioada de eșantionare este de 100ps. Perioada de eșantionare a fost determinată experimental reprezentând un raport echilibrat între precizia obținută și numărul de resurse necesare pentru a efectua atacul de securitate.
Ca și în cazul anterior, pentru implementarea neprotejată a algoritmului AES, a fost identificat ușor primul octet al cheii de criptare, fiind necesar un număr minim de curbe de consum. În cazul implementării protejate însă a putut fi observat un vârf de corelație. Acest eveniment neașteptat a relevat o eroare de implementare a algoritmului AES. Astfel, valorile ridicate ale factorului de corelație, prezentate în Figura 6.10 au fost identificate ca provenind în urma execuției operației MixColumns. Semnalele ce ies din modulul MixColumns nu au fost constrânse astfel încât sitentizatorul a optimizat circuitul expunând, nemascate, respectivele semnale. Prin constrângerea acestor semnale și re-executarea atacului de securitate nu au mai fost constatate valori semnificative ale coeficientului de corelație.
Figura 6.11 Reprezentarea grafică a factorului de corelație – AES fără protecție, implementare fizică. []
Figura 6.12 Reprezentarea grafică a factorului de corelație – AES cu protecție, implementare fizică. []
În cazul analizei implementării fizice (Figura 6.11), ce rulează pe standul de testare II, poate fi observată o valoare ridicată a factorului de corelare. Analiza de securitate a fost efectuată pe un număr de 500 de curbe de consum evidențiind astfel, asemenea cazurilor precedente, vulnerabilitățile circuitului analizat. În cazul implementării protejate (Figura 6.12), analiza nu a putut releva nici un fel de vulnerabilitate, coeficientul de corelație având valori mici chiar și după procesarea a 100000 de curbe de consum.
Concluzii
În urma analizei diferențiale de putere executate, se constată faptul că este posibilă exploatarea informațiilor conținute de curbele de consum generate pe baza unor simulări funcționale la nivel logic (Figura 6.7). Analiza poate releva breșele de securitate, însă precizia este relativ redusă – detaliile specifice implementării, respectiv breșele datorate erorilor „de detaliu”, nu pot fi determinate. Astfel simulările funcționale la nivel logic pot fi utilizate doar pentru a releva erori de concept sau de proiectare, dar nu și erori detaliate sau legate de tehnologia utilizată. După cum se poate observa în Figura 6.8, PAT a relevat, cu succes, primul octet din cheia de criptare utilizată, evidențiind in acest fel punctele slabe ale circuitului analizat.
Simulările funcționale realizate la nivel fizic conțin semnificativ mai multă informație, în sensul în care aceste simulări reflectă și detaliile tehnologiei utilizate, respectiv timpii de propagare pe traseele de legătura sau prin porțile logice. Atacul executat, identic cu cel din cazul anterior, a relevat o serie de defecte suplimentare care nu au fost detectate pe parcursul primului atac ADP efectuat. Deși mai complexe de efectuat, datorită timpilor mai îndelungați de atac, respectiv datorită numărului mai mare de resurse fizice necesare, analizele diferențiale de putere relevă o serie de detalii constructive ale circuitului analizat, astfel încât inginerii proiectanți pot evalua, în detaliu, eventualele breșe de securitate. Pe baza simulărilor funcționale realizate la nivel fizic, de poartă logică, pot fi deci relevate erori de concept, dar și de proiectare sau de dezvoltare.
Se poate concluziona astfel că simulările funcționale la nivel logic pot fi utilizate pe parcursul procesului de proiectare dar numai în fazele incipiente, în timp ce simulările funcționale la nivel fizic pot fi utilizate până la finalul procesului de proiectare, chiar înainte ca circuitul digital să fie fabricat fizic.
Atacurile de securitate de tip analiză diferențială de putere, realizate pe baza curbelor de consum achiziționate experimental conțin informații despre absorbția de putere a circuitului analizat, în conformitate cu modelele prezentate în capitolele 3, 4 și 5. Astfel, numărul de curbe necesare este de aproximativ 4 ori mai mare ca în cazurile precedente, iar efortul de execuție al analizei diferențiale de putere este semnificativ mai ridicat (consumul de memorie de lucru – RAM este dublu – 7.6GB; iar durata de execuție este de 3 ori mai mare). Totuși ADP executată asupra unor curbe achiziționate experimental relevă o serie de slăbiciuni suplimentare ale circuitului analizat. Astfel pot fi detectate inclusiv erori de programare sau de constrângere a circuitelor analizate, alături de evidențierea unor detalii constructive (de exemplu timpii de execuție ai unei operații efectuate, respectiv instrucțiuni executate).
Totodată, pe parcursul analizei prezentate, au fost analizate și o serie de implementări software ale algoritmului AES. Pentru aceasta a fost utilizat standul I, echipat cu un microcontroler de uz comun. Microcontrolerul a fost parametrizat astfel încât doar procesorul și memoriile (de date și lucru) să fie active la momentul execuției atacului, respectiv al înregistrării curbelor de consum. Punctul de atac a fost ales în prima rundă de calcul, utilizând ipoteza distanței Hamming.
Prima implementare analizată a fost o implementare software, standard, neprotejată, a algoritmului AES. Durata atacului a fost de 5 ore și a necesitat un număr de 10000 curbe de consum. Atacul, executat cu ajutorul PAT, a relevat primul octet din cheia de criptare, dovedind astfel vulnerabilitatea (prezumată) a implementării. Totodată a fost relevat faptul ca o analiză diferențială de putere, executată asupra unei implementări software a unui algoritm criptografic, poate releva detalii despre construcția fizică a circuitului analizat. Un exemplu în acest sens ar fi modelul de absorbție a puterii circuitului analizat, față de semnalul de ceas al sistemului. Astfel, se pot observa două vârfuri de consum pe fiecare tact al ceasului de sistem. Din analiza specificației și a modului de funcționare al circuitului se poate deduce că primul vârf corespunde instrucțiunii fetch, iar cel de-al doilea procesării instrucțiunii curente. Pentru efectuarea analizei diferențiale de putere este deci importantă determinarea celui de-al doilea maxim care este direct proporțional cu datele procesate de circuit.
Analiza efectuată asupra celei de-a doua implementări, protejată prin mascare, nu a relevat nicio slăbiciune, utilizând același număr de curbe de consum.
Concluzii finale
Concluzii
Contribuții personale
Diseminarea rezultatelor
Direcții viitoare de cercetare
Concluzii
Teza de doctorat studiază tehnica analizei diferențiale de putere în contextul circuitelor digitale integrate. Analiza diferențială de putere este o tehnică ce permite extragerea de informații cu caracter secret din interiorul unui circuit digital integrat, folosind metode neinvazive. Deși cunoscută de aproximativ 15 ani, această tehnică nu a prezentat un pericol real până de curând. În prezent există un singur standard [102] care este adresat componentelor hardware – cu precădere celor utilizate în aplicații de securitate digitală sau criptografie. Acest standard nu tratează însă cazul atacurilor de securitate bazate pe tehnica analizei diferențiale de putere.
Datorită recentelor atacuri de securitate și a numărului tot mai mare de breșe de securitate descoperite, reiese necesitatea asigurării unui nivel de protecție cât mai ridicat.
Din acest motiv, în cadrul activităților de concept și proiectare a circuitelor digitale integrate care utilizează funcții criptografice, este necesară evaluarea nivelului de securitate înainte ca circuitul să fie fabricat. Datorită acestor factori, punctul central al lucrării a constat în dezvoltarea unei metode simple, aplicabile practic, de utilizare a unor modele simulabile a circuitelor digitale, pentru a efectua o analiză diferențială de putere. Scopul analizei este determinarea unor eventuale breșe de securitate, cauzate de erorile de concept, proiectare, execuție sau verificare, pe parcursul procesului de proiectare, permițând astfel remedierea acestora cu un efort minim.
În cadrul lucrării au fost analizate mai multe implementări software și hardware ale algoritmului criptografic AES. Principalele aspecte legate de metoda analizei diferențiale de putere care au fost tratate în cadrul tezei de doctorat, sunt:
influența zgomotului electric datorat surselor de alimentare;
simularea circuitelor digitale în contextul analizei diferențiale de putere;
achiziția datelor necesare unei analize diferențiale de putere;
pre- și post-procesarea datelor rezultate ale unei achiziții sau ale unei simulări;
viteza de execuție a unei analize diferențiale de putere;
validarea modelului simulat.
În cadrul cercetărilor doctorale s-a avut în vedere domeniul electronicii industriale, domeniu în care durata medie de viață a unui circuit digital integrat este de peste zece ani. În cadrul activităților de cercetare și în mod particular pentru validarea experimentală a soluției au fost folosite laboratoare și programe software puse la dispoziție de departamentul de electronică al companiei Siemens S.R.L, în colaborate catedra de Automatică a Universității Transilvania din Brașov.
În urma studiului efectuat în cadrul tezei de doctorat pot fi trase următoarele concluzii:
Implementarea tehnicii analizei diferențiale de putere este facilă atât din punct de vedere software cât și hardware (pe componente standard sau dedicate).
În urma unor simulări funcționale sau la nivel fizic se pot obține date suficiente pentru a putea executa o analiză diferențială de putere care să releve eventualele breșe de securitate.
Nu există diferențe semnificative între rezultatele unei analize diferențiale de putere executate pe un circuit simulat la nivel fizic și ale uneia executate pe un circuit real. Diferențele cele mai mari sunt vizibile în cazul unei analize diferențiale de putere executate asupra unui circuit simulat la nivel logic, respectiv funcțional.
Figura 7.1 Diagrama Y
Figura 7.2 Diagrama Y – introducerea ADP la nivelul RTL, logic și de circuit
Cu ajutorul aplicației Power Analysis Toolkit, modelul clasic al dezvoltării circuitelor digitale integrate (diagrama Y, Figura 7.1) a fost extinsă, prin introducerea unui pas suplimentar, analiza diferențială de putere (Figura 7.2). Fără a modifica procesul clasic al proiectării, pe baza datelor deja existente, ce rezultă în urma simulărilor funcționale ale circuitelor digitale integrate, ADP aduce un nou nivel de siguranță în cadrul procesului de proiectare și verificare. Dacă până în prezent nivelul de securitate al unui circuit digital integrat era evaluat fie la nivel teoretic, fie la nivel fizic, după ce acesta a fost turnat în siliciu, prin utilizarea PAT și deci a introducerii ADP în cadrul procesului de proiectare-verificare, nivelul de securitate al unui circuit digital integrat poate fi evaluat, din timp. Astfel, ultima „necunoscută” – nivelul de securitate al circuitului, este tratată similar verificării funcționale. Inginerii proiectanți pot astfel să evalueze și să certifice conceptele teoretice implementate hardware, înainte ca acestea să fie implementate fizic. Un astfel de model de proiectare conferă un înalt grad de siguranță, permițând explorarea unor noi tehnologii sau a unor noi concepte de securitate.
Contribuții personale
În acest subcapitol sunt evidențiate principalele contribuții pe care teza de doctorat le propune în domeniul ingineriei electrice, respectiv al proiectării de circuite digitale integrate, în contextul securității digitale.
Contribuțiile aduse se încadrează în ariile securității digitale, electronicii digitale și ale ingineriei software.
Contribuțiile principale aduse în cadrul tezei sunt rezumate după cum urmează:
Proiectarea și implementarea unei metode practice de filtrare a zgomotului electric datorat surselor de alimentare – fie ele liniare sau în comutație. Studiul a permis identificarea principalilor factori de zgomot și a dus la dezvoltarea unor metode teoretice, dar și practice, de filtrare a zgomotului electric datorat surselor de alimentare. Necesitatea acestui studiu a fost dată de faptul că analiza diferențială de putere este puternic influențată (negativ) de dimensiunea zgomotului electric.
Proiectarea și implementarea unui mecanism de conversie și validare a datelor, rezultate în urma unor simulări funcționale sau la nivel fizic, a circuitului digital integrat analizat. Acest mecanism permite conversia datelor ce rezultă în urma execuției simulărilor, respectiv o listă de semnale și tranzițiile acestora față de semnalul de ceas al sistemului, într-o caracteristică de consum a circuitului analizat care este echivalentă cu cea a circuitului, dacă acesta ar fi implementat fizic.
Dezvoltarea unei metode de pre-procesare a datelor pentru reducerea zgomotului electric conținut de măsurătorile experimentale realizate asupra circuitelor digitale integrate, reale. Această metodă permite diminuarea zgomotului electric datorat altor module hardware care coexistă cu circuitul criptografic de interes. Aplicând tehnici de procesare a semnalelor, zgomotele electrice sunt diminuate, crescând în acest fel rezoluția și deci accelerând analiza diferențială de putere.
Dezvoltarea unei aplicații software (Power Analysis Toolkit) ce permite execuția rapidă a unor analize diferențiale de putere. Aplicația a fost proiectată modular și este flexibilă, permițând utilizarea ca date de intrare caracteristicile de putere rezultate în urma unor simulări sau a unor achiziții experimentale, utilizând circuitul fizic. Aplicația este destinată inginerilor care dezvoltă sisteme digitale complexe care includ module criptografice.
Validarea experimentală a Power Analysis Toolkit și analiza comparativă a diverselor implementări și măsuri de protecție împotriva atacurilor de securitate de tip analiză diferențială de putere. Scopul este validarea conceptului efectuării analizei diferențiale de putere la nivelul simulării, fără a fi nevoie de existența unui prototip fizic.
Diseminarea rezultatelor
Cercetările desfășurate pe perioada studiilor doctorale au permis elaborarea și publicarea, în calitate de prim autor, a unui număr de trei articole științifice publicate în volumele unor conferințe științifice internaționale [63] [64] [65].
Totodată, derivat din cercetările desfășurate în această perioadă, au fost elaborate două cereri de finanțare pentru proiecte de cercetare. Cele două cereri sunt axate pe problematica securității sistemelor informatice digitale și au ca scop dezvoltarea, respectiv extinderea unor sisteme digitale de prevenție, detecție și protecție împotriva unei largi plaje de atacuri de securitate. Prima dintre cererile de finanțare depuse este cu finanțare națională având ca scop dezvoltarea unei platforme hardware securizate. Această cerere este în evaluare la momentul redactării prezentei teze, fiind confirmată trecerea, cu succes, de prima etapă de evaluare. Cea de-a doua cerere de finanțare este axată pe domeniul “Internet of Things” (IoT) și își propune, alături de ceilalți parteneri, dezvoltarea unei platforme ce permite achiziția, prelucrarea și stocarea unor vaste cantități de date, provenite de la senzori distribuiți pe o vastă suprafață geografică. Această cerere de finanțare a fost acceptată iar proiectul [106] a demarat în septembrie 2013, având o durată de 36 de luni. În cadrul acestui proiect, responsabilitatea și activitățile de cercetare s-au concretizat în gestionarea pachetului de lucru numărul trei axat pe securitate digitală în componente electronice (End-To-End Security And Privacy).
Direcții viitoare de cercetare
În acest moment, datorită creșterii complexității circuitelor digitale, s-a simțit nevoia unei evoluții a metodelor de proiectare. Astfel, metoda clasică de proiectare nu este potrivită pentru situația când, pe lângă dezvoltarea unui circuit sau sistem digital, se dezvoltă și un nou concept, dacă complexitatea sistemului este foarte mare. Dezvoltarea unui nou concept, necesită de fiecare dată, validarea acestuia. Implementarea conceptului, respectiv proiectarea unui circuit sau sistem digital, urmată de validarea acestuia prin simulare sau testarea prototipului nu este eficientă din punctul de vedere al costului, dacă sunt necesare multe iterații între definirea conceptului (schimbări arhitecturale) și etapele de implementare.
Metodologiile moderne au în vedere validarea timpurie a conceptelor, fără a mai fi necesar a se aștepta până circuitul proiectat este disponibil, sau proiectul să fie într-o fază în care să se poată simula cu exactitate comportamentul produsului dezvoltat.
O astfel de abordare o reprezintă modelarea la nivelul sistemelor electronice (eng.„Electronic System Level”, ESL). Acestea presupun utilizarea unor limbaje de nivel înalt (System , C++, Matlab etc.) și o modelare mai apropiată de aspectul funcțional, fără a ține cont de detaliile de implementare (care pot fi specifice unei anumite tehnologii). Această metodă de modelare permite numeroase niveluri de abstractizare și de modelare, rezultând un model funcțional care este o „specificație executabilă”, precum și un prototip virtual.
Figura 7.3 Diagrama Y – introducerea ADP și la nivelul algoritmic/de sistem
Totodată, modelarea ESL este foarte flexibilă, permițând introducerea în model a unor informații referitoare la consumul de putere, permițând astfel realizarea unui profil de putere al sistemului în funcție de scenariile de simulare.
O posibilă direcție de cercetare constă în implementarea unei metodologii care împreună cu dezvoltarea anumitor funcții și biblioteci să sprijine colectarea de informații referitoare la profilul puterii absorbite de dispozitiv, informații care pot fi folosite pentru o analiza diferențială de putere a modelului virtual. Astfel, încă din faza de concept și definire a arhitecturii sistemului se pot lua măsuri de securizare împotriva atacurilor de tip analiză diferențială de putere. Aceasta dezvoltare ar fi potrivită în special când sunt în discuție sisteme digitale foarte complexe sau noi arhitecturi respectiv concepte ce necesită a fi validate funcțional. Totodată introducerea ADP la nivelul de modelare a sistemului (Figura 7.3) nu introduce modificări semnificative ale procesului de proiectare, validare și verificare funcțională a circuitelor digitale integrate.
Anexa 1. ADP
A1.1 Procedură simplificată de calcul a unui atac de tip analiză diferențială de putere ce are ca țintă bitul 0 din octetul 0 al cheii de criptare
#!/usr/bin/env python
import numpy
# SBOX-ul utilizat pentru generarea ipotezelor
SBOX = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43,\ 254, 215, 171, 118,202, 130, 201, 125, 250, 89, 71, 240,\ 173, 212, 162, 175, 156, 164, 114, 192,183, 253, 147, 38,\ 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21,4,\ 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39,\ 178, 117,9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214,\ 179, 041, 227, 47, 132,83, 209, 0, 237, 32, 252, 177, 91,\ 106, 203, 190, 57, 74, 76, 88, 207,208, 239, 170, 251, 67,\ 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168,81, 163,\ 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255,\ 243, 210,205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126,\ 61, 100, 93, 25, 115,96, 129, 79, 220, 34, 42, 144, 136,\ 70, 238, 184, 20, 222, 94, 11, 219,224, 50, 58, 10, 73, 6,\ 36, 92, 194, 211, 172, 98, 145, 149, 228, 121,231, 200,\ 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122,\ 174, 8,186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116,\ 31, 75, 189, 139, 138,112, 62, 181, 102, 72, 3, 246, 14,\ 97, 53, 87, 185, 134, 193, 29, 158,225, 248, 152, 17, 105,\ 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223,140,\ 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84,\ 187, 22];
curbeconsum = numpy.loadtxt(curbe, ndmin=2)
texteinclar = numpy.loadtxt(text, dtype='|S2', ndmin=2)
cheiaoriginala = cheie
cheiacalculata = []
octettinta = 0
bittinta = 0
puntinceput = 0
puntsfarsit = 10000 # numar puncte pe fiecare curba de consum
numarcurbe = 100 # numarul curbelor de consum utilizate
# pentru toti cei 16 octeti ai cheii
for numaroctet in range(0, 16):
diffs = [0]*256
# pentru fiecare octet al cheii sunt posibile valori de la 0x00 la 0xFF
for key in range(0, 256):
# initializare array-uri si variabile cu 0
media1 = numpy.zeros(len(curbeconsum[0,puntinceput:puntsfarsit]))
media0 = numpy.zeros(len(curbeconsum[0,puntinceput:puntsfarsit]))
num1 = 0
num0 = 0
# pentru fiecare curba, executa…
for tnum in range(numarcurbe):
# calculeaza iesirea SBOC-ului
ipoteza = SBOX[int(texteinclar[tnum, numaroctet], 16) ^ key]
# bitul tinta este 1 sau 0?
if (ipoteza & (1 << bittinta)) != 0:
# daca este 1 adauga curba in media celor “de 1”
media1 = numpy.add(media1, curbeconsum[tnum,puntinceput:puntsfarsit])
num1 = num1 + 1
else:
# daca este 1 adauga curba in media celor “de 0”
media0 = numpy.add(media0, curbeconsum[tnum,puntinceput:puntsfarsit])
num0 = num0 + 1
# calculeaza media
log = open('log.txt', 'w')
log.write('media0: %s\r' % media0)
log.write('num0: %s\r' % num0)
log.write('media1: %s\r' % media1)
log.write('num1: %s\r' % num1)
media1 = media1 / num1
media0 = media0 / num0
log.write('media0_dupa: %s\r' % media0)
log.write('media1_dupa: %s\r' % media1)
log.close()
# calculeaza diferenta dintre cele 2 medii
diff = numpy.subtract(media1, media0)
# gaseste media cea mai mare pentru ipoteza curenta
diffs[key] = max(numpy.fabs(diff))
# selecteaza diferenta cea mai mare dintre toate ipotezele folosite
octetgasit = diffs.index(max(diffs))
cheiacalculata.append(octetgasit)
print “%2x “%octetgasit,
print ““
print cheiacalculata
print cheiaoriginala
Anexa 2. AES
A2.1 Registrul de date
module state_reg (
clk_i,
rstn_i,
load_i,
dat_i,
se_i,
state_reg_i,
state_reg_o
);
input clk_i;
input rstn_i;
input load_i;
input [31:0] dat_i;
input [3:0] se_i;
input [31:0] state_reg_i;
output [31:0] state_reg_o;
reg [7:0] state_reg0_0;
reg [7:0] state_reg0_1;
reg [7:0] state_reg0_2;
reg [7:0] state_reg0_3;
reg [7:0] state_reg1_0;
reg [7:0] state_reg1_1;
reg [7:0] state_reg1_2;
reg [7:0] state_reg1_3;
reg [7:0] state_reg2_0;
reg [7:0] state_reg2_1;
reg [7:0] state_reg2_2;
reg [7:0] state_reg2_3;
reg [7:0] state_reg3_0;
reg [7:0] state_reg3_1;
reg [7:0] state_reg3_2;
reg [7:0] state_reg3_3;
wire se0, se1, se2, se3;
wire [31:0] state_reg_o;
assign se0 = se_i[0];
assign se1 = se_i[1];
assign se2 = se_i[2];
assign se3 = se_i[3];
always @(posedge clk_i or negedge rstn_i) // byte 0
if (!rstn_i) begin /*change polarity reset*/
state_reg0_0 <= 8'b0;
state_reg0_1 <= 8'b0;
state_reg0_2 <= 8'b0;
state_reg0_3 <= 8'b0;
end
else begin
if (se0) begin
state_reg0_3 <= load_i ? dat_i[31:24] : state_reg_i[31:24];
state_reg0_2 <= state_reg0_3;
state_reg0_1 <= state_reg0_2;
state_reg0_0 <= state_reg0_1;
end
end
always @(posedge clk_i or negedge rstn_i) // byte 1
if (!rstn_i) begin
state_reg1_0 <= 8'b0;
state_reg1_1 <= 8'b0;
state_reg1_2 <= 8'b0;
state_reg1_3 <= 8'b0;
end
else begin
if (se1) begin
state_reg1_3 <= load_i ? dat_i[23:16] : state_reg_i[23:16];
state_reg1_2 <= state_reg1_3;
state_reg1_1 <= state_reg1_2;
state_reg1_0 <= state_reg1_1;
end
end
always @(posedge clk_i or negedge rstn_i) // byte 2
if (!rstn_i) begin
state_reg2_0 <= 8'b0;
state_reg2_1 <= 8'b0;
state_reg2_2 <= 8'b0;
state_reg2_3 <= 8'b0;
end
else begin
if (se2) begin
state_reg2_3 <= load_i ? dat_i[15:8] : state_reg_i[15:8];
state_reg2_2 <= state_reg2_3;
state_reg2_1 <= state_reg2_2;
state_reg2_0 <= state_reg2_1;
end
end
always @(posedge clk_i or negedge rstn_i) // byte 3
if (!rstn_i) begin
state_reg3_0 <= 8'b0;
state_reg3_1 <= 8'b0;
state_reg3_2 <= 8'b0;
state_reg3_3 <= 8'b0;
end
else begin
if (se3) begin
state_reg3_3 <= load_i ? dat_i[7:0] : state_reg_i[7:0];
state_reg3_2 <= state_reg3_3;
state_reg3_1 <= state_reg3_2;
state_reg3_0 <= state_reg3_1;
end
end
assign state_reg_o = {state_reg0_0, state_reg1_0, state_reg2_0, state_reg3_0};
endmodule
A2.2 Mediu de simulare
//////////////////////////////////////////////////////////////////
`timescale 1ns/1ns
module clk_gen(clk);
output clk;
parameter clk_per = 10;
parameter phase = 3;
reg clk;
initial begin
clk <= 0;
#(clk_per/2+phase);
forever #(clk_per/2) clk <= ~clk;
end
endmodule
//////////////////////////////////////////////////////////////////
`timescale 1ns/1ns
module aes_serial_tb ();
//–––- config ––––––––––––––
parameter no_iter = 9999;
parameter no_keys = 10; // 10 keys are used
//––––––––––––––––––––
wire clk;
wire start;
wire tx_o;
wire trigger_o;
wire [127:0] dat_in;
wire [127:0] key;
wire [127:0] expected_dat_o;
wire ready = aes_serial_tb.aes_uart.ready;
reg rst;
reg rx;
reg [7:0] dat_out_byte_reg;
reg [127:0] dat_out_reg;
reg dec;
reg [127:0] key_in, test_vector_in_reg, test_vector_out_reg;
// Declare memory array that is 1 million words of 128-bits each
reg [127:0] keys [0:9]; // encryption keys
reg [127:0] data_input [0:9999]; // generic input vectors
reg [127:0] data_output [0:9999];
// Fill the memory with values taken from a data file
initial $readmemh( “keys.txt”, keys);
initial $readmemh( “aes_dati_16B_10K.txt”, data_input);
//–––––Configure Testvectors––––––––//
assign key = key_in;
assign dat_in = dec ? test_vector_out_reg : test_vector_in_reg;
assign expected_dat_o = dec ? test_vector_in_reg : test_vector_out_reg;
//–––––––––––––––––––//
clk_gen #(20, 0) clk_gen(clk);
// UART AES instance
aes_uart_top aes_uart(
.clk_i ( clk ) ,
.rst_i ( rst ) ,
.rx_i ( rx ) ,
.tx_o ( tx_o ) ,
.trigger_o ( trigger_o )
) ;
task send_data;
input [7:0] data_to_rx;
begin
#0 rx <= 1'b0; // start bit
#52080 rx <= data_to_rx[0]; // bit 0
#52080 rx <= data_to_rx[1]; // bit 1
#52080 rx <= data_to_rx[2]; // bit 2
#52080 rx <= data_to_rx[3]; // bit 3
#52080 rx <= data_to_rx[4]; // bit 4
#52080 rx <= data_to_rx[5]; // bit 5
#52080 rx <= data_to_rx[6]; // bit 6
#52080 rx <= data_to_rx[7]; // bit 7
#52080 rx <= 1'b1; // stop bit
#52080;
end
endtask
task read_byte;
begin
@(negedge tx_o);
#26040;
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#26040;
end
endtask
task read_data;
begin
read_byte; dat_out_reg[127 : 120] <= dat_out_byte_reg;
read_byte; dat_out_reg[119 : 112] <= dat_out_byte_reg;
read_byte; dat_out_reg[111 : 104] <= dat_out_byte_reg;
read_byte; dat_out_reg[103 : 96 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[95 : 88 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[87 : 80 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[79 : 72 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[71 : 64 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[63 : 56 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[55 : 48 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[47 : 40 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[39 : 32 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[31 : 24 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[23 : 16 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[15 : 8 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[7 : 0 ] <= dat_out_byte_reg;
#1;
end
endtask
//task to compare output data with expected values
task check_output_task;
input [127:0] actual_data;
input [127:0] expected_data;
begin
if (expected_data == actual_data) begin
$display(“– Run successful! ––”);
end
else begin
$display(“– Run failed! –”);
$display(“Output Simulation: %h”, actual_data );
$display(“Output Expected : %h”, expected_data );
$display(“Used key : %h”, key );
$display(“Input data : %h”, dat_in );
$stop; // break the simulation if data is not matching!!!
end
$display(“––––––––––––––––-”);
$display(““);
$display(““);
end
endtask
integer iterations, enc_key;
integer j;
initial
begin
$display(“–––––– SIMULATION START –––––-”);
$display(““);
$display(““);
for(enc_key=0; enc_key<=no_keys; enc_key=enc_key+1) begin
$display(“–– KEY %d: –––––––-”, enc_key);
key_in <= keys[enc_key];
case(enc_key)
16'd0 : $readmemh( “aes_dato_16B_10K_key1.txt”, data_output);
16'd1 : $readmemh( “aes_dato_16B_10K_key2.txt”, data_output);
16'd2 : $readmemh( “aes_dato_16B_10K_key3.txt”, data_output);
16'd3 : $readmemh( “aes_dato_16B_10K_key4.txt”, data_output);
16'd4 : $readmemh( “aes_dato_16B_10K_key5.txt”, data_output);
16'd5 : $readmemh( “aes_dato_16B_10K_key6.txt”, data_output);
16'd6 : $readmemh( “aes_dato_16B_10K_key7.txt”, data_output);
16'd7 : $readmemh( “aes_dato_16B_10K_key8.txt”, data_output);
16'd8 : $readmemh( “aes_dato_16B_10K_key9.txt”, data_output);
16'd9 : $readmemh( “aes_dato_16B_10K_key10.txt”, data_output);
Default :$readmemh( “aes_dato_16B_10K_key1.txt”, data_output);
endcase
j = 0;
for (iterations=0; iterations<no_iter;iterations=iterations+1) begin
$display(“–– RUN %d: ENCRYPTION START –––-”, j);
test_vector_in_reg <= data_input[j];
test_vector_out_reg <= data_output[j];
j=j+1;
#0 rx <= 1'b1;
#0 rst <= 1'b0;
#100 rst <= 1'b1;
#100 rst <= 1'b0;
dec <= 1'b0; // encryption
@(posedge clk);
@(posedge clk);
send_data(“d”);
send_data(dat_in); // simplificare – operatia are loc pe octet, nu pe bloc de date
@(posedge clk);
send_data(“k”);
send_data(key); // simplificare – operatia are loc pe octet, nu pe bloc de date
@(posedge clk);
send_data(“E”);// simplificare – operatia are loc pe octet, nu pe bloc de date
send_data(128'h0);
@ (posedge ready);
read_data;
check_output_task(dat_out_reg, expected_dat_o);
end
end
$display(“––––– SIMULATION STOP ––––”);
$stop ;
end
endmodule
Anexa 3. Coduri sursă
A3.1 Procedură de control și verificare a datelor procesate de standurile de verificare
#!/usr/bin/env python
import serial
import sys
import time
import struct
from datetime import datetime
# ================================================================
#parametrii
if len(sys.argv) <= 2:
print ''
print (' syntaxa: python pat.py record_tracesy <COM port> <fisier chei> <numar chei> <fisier texte in clar> <numar texte in clar> <criptare sau decriptare>')
print ''
quit()
print ''
print (“ control pe portul %s” % str(sys.argv[1]))
print (“ utilizand fisierul de chei %s” % str(sys.argv[2]))
print (“ utilizand cheia(cheile) %s” % str(sys.argv[3]))
print (“ si fisierul de texte in clar %s” % str(sys.argv[4]))
print (“ utilizand %s texte in clar” % str(sys.argv[5]))
print (“ executand operatia de %s” % str(sys.argv[6]))
print ''
# caracter de comanda:
# cmd_send_key: “k” + 16 octeti date
# cmd_send_data: “d” + 16 octeti date
# cmd_decrypt: “D” + 16 octeti aleatori
# cmd_encrypt: “E” + 16 octeti aleatori
#
# setari port serial:
# 19200 baud
# 8 data bits
# no parity
# 1 stop bit
# no handshaking
_COM_PORT_ = “COM12” # com port
_COM_PORT_ = str(sys.argv[1]) # com port
_FISIER_CHEI_ = “keys.txt” # fisier text ce contine cheile
_FISIER_CHEI_ = str(sys.argv[2]) # fisier text ce contine cheile
_NR_CHEI_ = 1 # cate chei sa fie utilizate
_NR_CHEI_ = int(sys.argv[3]) # cate chei sa fie utilizate
_TEXTE_CLAR_ = “aes_dati_16B_1M.txt” # fisier text ce contine textele in clar
_TEXTE_CLAR_ = str(sys.argv[4]) # fisier text ce contine textele in clar
_NR_ITERATII_ = 100 # cate operatii criptografice sa fie executate pentru fiecare cheie
_NR_ITERATII_ = int(sys.argv[5]) # cate operatii criptografice sa fie executate pentru fiecare cheie
_OPERATIE_ = “encryption” # operatia de executat
_OPERATIE_ = str(sys.argv[6]) # operatia de executat
# ================================================================
# ================================================================
#variabile
cheie = 0
data_in = 0
data_out = 0
nr_chei = 0
nr_iteratii = 0
# ================================================================
# ================================================================
#comunicatie seriala cu standul experimental
aes = serial.Serial(_COM_PORT_, baudrate=19200, bytesize=8, parity='N', stopbits=1)
aes.isOpen();
# ================================================================
def packIntegerAsULong(value):
return struct.pack('L', value)
print '%s' % ('======== starting ========')
print ''
main_start = datetime.now()
if _NR_CHEI_ == 0:
_NR_CHEI_ = len(open(_FISIER_CHEI_).readlines())
if _NR_ITERATII_ == 0:
_NR_ITERATII_ = len(open(_TEXTE_CLAR_).readlines())
print “%d keys” % _NR_CHEI_
print “%d interations for each cheie” % _NR_ITERATII_
print “a total of %d operations will be performed” % (_NR_CHEI_ * _NR_ITERATII_)
print ''
# ================================================================
# get cheie from cheie file
fisier_chei = open(_FISIER_CHEI_, 'r')
for cheie in fisier_chei:
if DEBUG:
print cheie.rstrip('\n')
nr_chei = nr_chei + 1
print '%s %2d %s' % ('++++++++ cheie', nr_chei, '++++++++++')
# =============================================================
# get data from data file & log arduino response to file
data_input_file = open(_TEXTE_CLAR_, 'r')
status_log = open('uart_aes_dato_key' + str(nr_chei) + '.txt', 'w')
for data in data_input_file:
if DEBUG:
print data.rstrip('\n')
nr_iteratii = nr_iteratii + 1
n = 8
cheie_split = [cheie.rstrip('\n')[i:i+n] for i in range(0, len(cheie.rstrip('\n')), n)]
data_split = [data.rstrip('\n')[i:i+n] for i in range(0, len(data.rstrip('\n')), n)]
aes.write(“d” + packIntegerAsULong(int('0x' + data_split[0], 16)) + packIntegerAsULong(int('0x' + data_split[1], 16)) + packIntegerAsULong(int('0x' + data_split[2], 16)) + packIntegerAsULong(int('0x' + data_split[3], 16))) # date
aes.write(“k” + packIntegerAsULong(int('0x' + cheie_split[0], 16)) + packIntegerAsULong(int('0x' + cheie_split[1], 16)) + packIntegerAsULong(int('0x' + cheie_split[2], 16)) + packIntegerAsULong(int('0x' + cheie_split[3], 16))) # cheie
if _OPERATIE_ == 'encryption':
aes.write(“E” + packIntegerAsULong(0x00010203) +
packIntegerAsULong(0x04050607) +
packIntegerAsULong(0x08090001) +
packIntegerAsULong(0x02030405)) # criptare
if _OPERATIE_ == 'decryption':
aes.write(“D” + packIntegerAsULong(0x00010203) +
packIntegerAsULong(0x04050607) +
packIntegerAsULong(0x08090001) +
packIntegerAsULong(0x02030405)) # decriptare
start = datetime.now()
data_out = aes.read(16).encode('hex').upper()
end = datetime.now()
status_log.write(data_out + '\r')
if DEBUG:
print data_out
print “# %6d in: %s out: %s duration: %d[ms]” % (nr_iteratii, data.rstrip('\n'), data_out, (end-start).microseconds/1000)
if nr_iteratii == _NR_ITERATII_:
break
data_input_file.close()
status_log.close()
# ==============================================================
if nr_chei == _NR_CHEI_:
break
fisier_chei.close()
# ================================================================
main_end = datetime.now()
print ''
print ''
print “ total execution time was “ + str(main_end-main_start)
print ''
print ''
print '%s' % ('======== done ========')
print ''
A3.2 Procedură de pregătire a curbelor de consum în vederea executării ADP
#!/usr/bin/env python
from glob import iglob
import os
import sys
import time
if len(sys.argv) <= 2:
print ''
print (' syntax: python merge_traces.py <calea catre directorul ce contine curbele> <fisier iesire>')
print ''
quit()
print ''
print (“ concatenare din directorul: %s” % str(sys.argv[1]))
print (“ in fisierul: %s” % str(sys.argv[2]))
print ''
destination = open(str(sys.argv[2]), 'wb')
for filename in iglob(os.path.join(str(sys.argv[1]), '*.dat')):
start = time.clock()
for line in open(filename, 'r'):
destination.write(line.replace('\n', ' '))
destination.write('\n')
print ('duration %7.2f[ms] : filename %s') % ((time.clock()-start)*(10**3), filename)
destination.close()
print (' total duration %7.2f[ms]') % (time.clock()*(10**3))
Bibliografie
Agrawal, D., Rao, J. R., Rohatgi, P. “Multi-channel Attacks”, CHES 2003, 5th International Workshop, vol. 2779 of Lecture Notes in Computer Science, pp 2-16., September 2003.
Amiel, F., Feix B., Tunstall M., Whelan, C., Marnane, W. P. “Distinguishing Multiplications from Squaring Operations”, Selected Areas in Cryptography – SAC 2008, vol. 5394 of Lecture Notes in Computer Science, Springer-Verlag, 2009, pp.346–360.
Amir Moradi, A., Kirschbaum, M., Eisenbarth, T., Paar, C. “Masked Dual-Rail Precharge Logic Encounters State-of-the-Art Power Analysis Methods” – IEEE transactions on very large scale integration (VLSI) systems, Volume: 20, 2012.
Baker, R. J. “CMOS Circuit Design, Layout, and Simulation, Third Edition”, Wiley-IEEE Press, USA, 2010.
Barenghi, A., Bertoni, G., Breveglieri, L., Pellicioli, M., Pelosi, G. “Low Voltage Fault Attacks to AES”, HOST 2010, Proceedings of the 2010 IEEE International Symposium on Hardware-Oriented Security and Trust (HOST), 13-14 June 2010, pp.7-12.
Barenghi, A., Pelosi, G., Teglia, Y. “Improving First Order Differential Power Attacks Through Digital Signal Processing”, Proceedings of the 3rd International Conference on Security of Information and Networks, SIN 2010, Rostov-on-Don, Russian Federation, September 7-11, 2010, pp.124-133.
Barenghi, A., Pelosi, G., Teglia, Y. “Information Leakage Discovery Techniques to Enhance Secure Chip Design”, Information Security Theory and Practice. Security and Privacy of Mobile Devices in Wireless Communication – 5th IFIP WG 11.2 International Workshop, WISTP 2011, Greece, June 1-3, 2011, pp.128-143.
Biham, E., Shamir, A. “Differential Cryptanalysis of the Data Encryption Standard”, Springer Verlag,ISBN 0-387-97930-1, 1993.
Billauer, E. “Peak detection using matlab.”, September 2008, [Online]. Available: http://billauer.co.il/peakdet.html.
Bucci , M., Guglielmo, M., Luzzi , R., Trifiletti, A. “A Power Consumption Randomization Countermeasure for DPA-Resistant Cryptographic Processors”, PATMOS 2004, LNCS 3254, Springer-Verlag, 2004, pp.481-490.
Canright, D., Batina, L. “A Very Compact Perfectly Masked S-Box for AES (corrected)”, [Online]. Avaible: http://faculty.nps.edu/drcanrig/pub/acns2008corr.pdf
Canright, D., Batina, L. “A very compact perfectly masked” S-box for AES.”, Proceedings of 6th International Workshop on Applied Cryptography and Network Security (ACNS). Volume 5037 of Lecture Notes in Computer Science., Springer-Verlag, 2008, pp.446-459.
Coppersmith, D. “Small Solutions to Polynomial Equations, and Low Exponent RSA Vulnerabilities”, Journal of Cryptology, v.10, n.4, December 1997.
Di Natale, G., Flottes ,M.-L., Rouzeyre, B. “An Integrated Validation Environment for Differential Power Analysis”, IEEE International Symposium on Electronic Design, Test & Applications (DELTA 2008), Hong Kong, January 2008, pp.527-532.
Eisenbarth, T., Kasper, T., Moradi, A., Paar, C., Salmasizadeh, M., Shalmani, M. T. M. “On the Power of Power Analysis in the Real World: A Complete Break of the KeeLoqCode Hopping Scheme”, Advances in Cryptology – CRYPTO 2008, 28th Annual International Cryptology Conference, Santa Barbara, CA, USA, August 17-21, 2008, pp. 203-220.
Er-hong, L., Xian-wei, G. “Resistance DPA of RSA in Smartcard”, Fifth International Conference on Information Assurance and Security, August 2009, pp. 406-409.
Ferguson, N., Schneier, B., Kohno, T. “Cryptography Engineering – Design Principles and Practical Applications”, ISBN: 978-0-470-47424-2, Wiley, 2010.
Gandolfi-Villegas, K., HAmzi, N. “Dynamic Runtime Methods to Enhance Private Key Blinding”, IACR Cryptology ePrint Archive, pp. 447, 2013.
Gandolfi, K., Mourtel, C., Olivier, F. “Electromagnetic analysis: Concrete results.”, Cryptographic Hardware and Embedded Systems − CHES 2001, vol. 2162 of Lecture Notes in Computer Science, Springer-Verlag, 2001, pp. 251–261.
Gebotys, C.H. “Security in Embedded Devices (Embedded Systems)”, ISBN: 978-1441915290, Springer Science+Business Media, Edition 2010.
Guneysu, T., Kasper, T., Novotny, M.,Paar, C.,Rupp, A. “Cryptanalysis with COPACOBANA.”, IEEE Transactions on Computers, Volume 11, 2008, pp.1498-1513.
Hamilton, M. D., Tunstall, M., Popovici, E. M., Marnane, W. P. “Side Channel Analysis of an Automotive Microprocessor”, IET Irish Signals and System Conference – ISSC 2008, pp.4–9.
Han, Y., Zou, X.-C., Liu Z.-L., Chen, Y.-C. “The research of DPA attacks against AES implementations”, The Journal of China Universities of Posts and Telecommunications, volume 15, Issue 4, December 2008, pp.101–106.
Håstad, J. “On Using RSA with Low Exponent in a Public Key Network”, CRYPTO '85 Advances in Cryptology Proceedings, London 1986, pp. 403-408.
Hayashi, Y., Sugawara, T., Kayano, Y., Homma, N., Mizuki, T., Satoh, A., Aoki, T., Minegishi, S., Sone, H., Inoue, H. “An Analysis of Information Leakage from a Cryptographic Hardware via Common-Mode Current”, 2009 International Symposium on Electromagnetic Compatibility (EMC'09), July, 2009.
Herbst, C., Oswald, E., Mangard, S. “An AES smart card implementation resistant to power analysis attacks.”, In Applied Cryptography and Network Security, Second International Conference, ACNS 2006, volume 3989 of Lecture Notes in Computer Science, Springer, 2006, pp.239–252.
Irwin, M. J., Kandemir, M. T., Vijaykrishnan, N. “Simple-Power: A Cyc1e-Accurste Energy Simulator”, IEEE TCCA Newsletter, January 2001.
Jaffe, J. “A First-Order DPA Attack Against AES in Counter Mode with Unknown Initial Counter”, Cryptographic Hardware and Embedded Systems – CHES 2007, 9th International Workshop, Vienna, Austria, September 10-13, 2007, pp.1-13.
Joye, M., Tunstall, M. “Fault Attacks on Stream Ciphers”, ISBN: ISBN 978-3-642-29656-7, Springer, 2012.
Kasper, M., Kasper, T., Moradi, A., Paar, C. “Praktische Angriffe auf die Bitstromverschlsselung von Xilinx FPGAs”, Datenschutz und Datensicherheit – DuD, Volume 35, Issue 11,November 2011, pp.779-785.
Kemmerling, O., Kuhn, M. G. “Design Principles for Tamper-Resistant Smartcard Processors” – Smartcard '99, pp. 9-20, May 1999.
Kerckhoffs, A. “La cryptographie militaire” Journal des sciences militaires, vol. IX, pp. 5–38, January 1883, pp. 161–191, February 1883.
Kirschbaum, M., Popp, T. “Evaluation of Power Estimation Methods Based on Logic Simulations”, Proceedings of the 15th Austrian Workshop on Microelectronics, 2007, pp.45-51.
Kocher, P. C. “Design and Validation Strategies for Obtaining Assurance in Countermeasures to Power Analysis and Related Attacks.”, NIST Phyiscal Security Workshop, September 2005.
Kocher, P. C. “Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems”, 16th Annual International Cryptology Conference, Santa Barbara, California, USA, August 18-22, 1996, Proceedings, number 1109 in Lecture Notes in Computer Science, pp. 104-113, Springer, 1996.
Kocher, P. C., Jaffe, J., Jun, B. “Differential Power Analysis”, 19th Annual International Cryptology Conference, Santa Barbara, California, USA, August 15-19, 1999, Proceedings, vol. 1666 of Lecture Notes in Computer Science, pp. 388÷397, Springer, 1999.
Kocher, P. C., Jaffe, J., Jun, B. “Introduction to Differential Power Analysis and Related Attacks.”, Cryptographic Research, 1998.
Kocher, P. C., Jaffe, J., Jun, B., Rohatgi, P. “Introduction to differential power analysis”, 2011, pp.753-760.
Kocher, P.C., Schneier, B. "Insider risks in elections", Commun. ACM, 2004, pp.104..
Lesea, A. “IP Security in FPGAs”, White Paper WP 261. Technical report, XILINX, February 2007.
Lim, D., Lee, J. W., Gassend, B., Suh, G. E., Van Dijk, M., Devadas, S. “Extracting secret keys from integrated circuits.”, Very Large Scale Integration (VLSI) Systems, IEEE Transactions on, December, 2005, Volume 10, pp.1200–1205.
Mangard, S., Oswald, E., Popp T. „Power Analysis Attacks – Revealing the Secrets of Smart Cards”, Springer, 2007.
Markantonakis, K., Tunstall, M., Hancke, G., Askoxylakis, I., Mayes, K. “Smart Card Security – Theory and Practice”, Information Security Technical Report 14, Elsevier, 2009, pp.46–56.
Masoomi, M., Masoumi, M., Ahmadian, M. “A practical differential power analysis attack against an FPGA implementation of AES cryptosystem”, 2010 International Conference on Information Society, pp. 308 – 312, 2010.
Matsui, M. “Linear Cryptoanalysis Method for DES Cipher.”, EUROCRYPT, pp.386-397, 1993.
Mayhew, M., Muresan, R. “Low-power AES coprocessor in 0.18 µm CMOS technology for secure microsystems”, IEEE/CMC Microsystems and Nanoelectronics Research Conference, Ottawa, Canada, Oct. 2009.
McEvoy, P., Tunstall, M., Murphy, C. C., Marnane, W. P. “Differential Power Analysis of HMAC based on SHA-2 on an FPGA, and Countermeasures”, Workshop on Information Security Applications – WISA 2007, vol. 4867 of Lecture Notes in Computer Science, Springer-Verlag, 2007, pp.317–332.
Menezes, A., Van Oorschot, P. C., Vanstone, S. A. “Handbook of Applied Cryptography.”, CRC Press, 1996.
Meritt, K. “Differential Power Analysis attacks on AES”, Cryptography II , VCSG-706, May 18, 2012.
Messerges, T. S., Dabbish, E. A., Sloan, R. H. “Investigations of Power Analysis Attacks on Smartcards”, USENIX Workshop on Smartcard Technology Chicago, Illinois, USA, May 10–11, 1999.
Messerges, T.S., Dabbish, E.A., Sloan, R.H. “Examining smart-card security under the threat of power analysis attacks.”, IEEE Transactions on Computers, Volume 5, 2002, pp.541-552.
Monteiro, J., Devadas, S. “Techniques for Power Estimation and Optimization at the Logic Level: A Survey”, Journal of VLSI Signal Processing Systems 13,1996, pp.259-276.
Moradi, A. Barenghi, T. Kasper, C. Paar, “On the Vulnerability of FPGA Bitstream Encryption against Power Analysis Attacks”, ACM conference on Computer and communications security, pp. 111 – 124, ISBN: 978-1-4503-0948-6, 2011.
Moradi, A., Barenghi, A., Kasper, T., Paar, C. “On the vulnerability of FPGA bitstream encryption against power analysis attacks: extracting keys from xilinx Virtex-II FPGAs”, Proceedings of the 18th ACM Conference on Computer and Communications Security, CCS 2011, Chicago, Illinois, USA, October 17-21, 2011, pp. 111-124.
Moradi, A., Kasper, M., Paar, C. “Black-Box Side-Channel Attacks Highlight the Importance of Countermeasures – An Analysis of the Xilinx Virtex-4 and Virtex-5 Bitstream Encryption Mechanism”, Topics in Cryptology – CT-RSA 2012 – The Cryptographers' Track at the RSA Conference 2012, San Francisco, CA, USA, February 27 – March 2, 2012, pp.1-18.
Moradi, A., Mischke, O., Eisenbarth, T. “Correlation-enhanced power analysis collision attack.”, In Proceedings of the 12th international conference on Cryptographic hardware and embedded systems, CHES’10, Berlin, Heidelberg, Springer, 2010, pp.125–139.
Moradi, A., Oswald, D., Paar, C., Swierczynski, P. “Side-channel attacks on the bitstream encryption mechanism of Altera Stratix II: facilitating black-box analysis using software reverse-engineering”, The 2013 ACM/SIGDA International Symposium on Field Programmable Gate Arrays, FPGA '13, Monterey, CA, USA, February 11-13, 2013, pp. 91-100.
Moradi, A., Poschmann, A. “Lightweight Cryptography and DPA Countermeasures: A Survey”, Financial Cryptography and Data Security, FC 2010 Workshops, Tenerife, Canary Islands, Spain, January 25-28, 2010, Revised Selected Papers, pp.68-79.
Muresan, R. “Power analysis attacks and hardware level countermeasures for cryptographic devices”, Journal of Recent Patents on Electrical & Electronic Engineering, Bentham Science Publishers, vol. 5, no. 3, Dec. 2012.
Nekoogar, F. “Digital Cryptography: Rijndael Encryption and AES Applications”, EE Times, October 2001. [Online] Available: http://www.eetimes.com/document.asp?doc_id=1275908.
Note, J.-B., Rannaud, E. “From the bitstream to the netlist.”, 16th International Symposium on Field Programmable Gate Arrays, FPGA 2008. ACM, 2008.
Ors, S. B., Gurkaynak, F., Oswald, E., Preneel, B. “Power-Analysis Attack on an ASIC AES implementation”, Information Technology: Coding and Computing, volume 2, 2004, pp.546-552.
Pitu, C. L., Campeanu, R. “Differential Power Analysis: Simulated versus Experimental Attacks”, 19th SIITME, Romania, October 2013.
Pitu, C. L., Campeanu, R. “A Practical Approach to Power Trace Measurement for Differential Power Analysis based Attacks”, Bulletin of the Transilvania University of Brașov (BUT), 2013 Series I: Engineering Sciences, vol. 6 (55), no. 1, Brașov, România, 2013.
Pitu, C. L., Campeanu, R. “On Preventing Differential Power Analysis using Data Masking”, 19th SIITME, Romania, October 2013.
Quisquater, J. J., Samyde, D. “ElectroMagnetic Analysis (EMA): Measures and Counter-Measures for Smart Cards”, International Conference on Research in Smart Cards, E-smart 2001, Cannes, France, September 19-21, 2001, Proceedings, vol. 2140 of Lecture Notes in Computer Science, pp. 200-210. Springer, 2001.
Quisquater, J.-J., Samyde, D. “ElectroMagnetic Analysis (EMA): Measuresand couter-measures for smard cards. In Smart Card Programming and Security.”, (E-smart 2001), vol. 2140 of Lecture Notes in Computer Science, Springer-Verlag, 2001, pp. 200–210.
Rabaey, J. M., Chandrakasan, A., Nikolic, B., “Digital Integrated Circuits – A Design Perspective.”, Electronics and VLSI Series, Prentice Hall, 2nd edition, 2003.
Ravi, S., Kocher, P. C., Lee, R. B., McGraw, G., Raghunathan, A. “Security as a new dimension in embedded system design”, Proceedings of the 41th Design Automation Conference, DAC 2004, San Diego, CA, USA, June 7-11, 2004, pp.753-760.
Rivest, R.L., Robshaw, M.J.B., Sideney, R., Yin, Y.L. “The RC6 block cipher.”, RSA Laboratories, v1.1, August 20, 1998.
Rumsey, A. “IRSE Seminar On Communications Based Train Control.”, IRSE International Technical Committee. [Online] Available: http://www.irse.org/knowledge/publicdocuments/2009_10_01_IRSE_Seminar_on_Communications_Based_Train_Control.pdf.
S. B. Örs, E. Oswald, B. Preneel, “Power-Analysis Attacks on an FPGA – First Experimental Results”, Cryptographic Hardware and Embedded Systems – CHES, 2003.
S. B. Örs, F. Gürkaynak, E. Oswald, B. Preneel, “Power-Analysis Attack on an ASIC AES implementation”, Information Technology: Coding and Computing, vol. 2, pp. 546-552, ISBN 0-7695-2108-8, 2004.
S. Tillich, C. Herbst, “Attacking State-of-the-Art Software Countermeasures – A Case Study for AES”, Cryptographic Hardware and Embedded Systems – CHES, pp. 228-248, ISBN 978-3-540-85053-3, 2008.
Sadowsky, G., Dempsey, J. X., Greenberg, A., Mack, B. J., Schwartz, A. “Information Technology Security Handbook”, The World Bank, 2003.
Samyde, D., Skorobogatov, S. P., Anderson, R. J., Quisquater, J. J. “On a New Way to Read Data from Memory”, SISW'02, pp. 65-69., IEEE Computer Society, 2002.
Satoh, A., Morioka, S., Takano, K., Munetoh, S. “A compact Rijndael hardware architecture with s-box optimization.”, Springer-Verlag, 2001, pp.239–254.
Schneier, B. “Breaking the Xilinx Virtex-II FPGA Bitstream Encryption”, August 2011. [Online] Available: https://www.schneier.com/blog/archives/2011/08/breaking_the_xi.html.
Sinha, A., Chandrakasan, A. “JonleTrack – A Web Based Tool for Software Energy Profiling.”, In 38th Design Automation Conference, DAC 2001, USA, pp. 220-225, June 2001.
Skorobogatov, S. P., Anderson, R. J. “Optical Fault Induction Attacks”, Conf. – CHES 2002, 4th International Workshop, Redwood Shores, CA, USA, August 13-15, 2002, Revised Papers, vol. 2523 of Lecture Notes in Computer Science, pp. 2-12, Springer, 2003.
Standaert, F. X., Oldenzeel, L. Samyde, D., Quisquater, J. J. “Power Analysis of FPGAs: How Practical Is the Attack”, Lecture Notes in Computer Science Volume 2778, pp 701-710, 2003.
Standaert, F-X., Pereira, O., Yu, Y., Quisquater, J-J., Yung, M., Oswald, E. “Leakage Resilient Cryptography in Practice.”, Towards Hardware-Intrinsic Security, Springer, 2010, pp.105-139.
Sugawara, T., Homma, N., Aoki, T., Satoh, A. “Differential Power Analysis of AES ASIC Implementations with Various S-box Circuits”, European Conference on Circuit Theory and Design 2009 (ECCTD2009), August, 2009.
Tunstall, M. “Secure Cryptographic Algorithm Implementation on Embedded Platforms”, Teză de Doctorat, Royal Holloway, University of London, 2006.
Tunstall, M. “Smart Card Security”, capitol în “Smart Cards, Tokens, Security and Applications”, Mayes, K., Markantonakis, K., Springer-Verlag, 2008, pp.195–228.
Vahedi, H., Gregori, S., Muresan, R. “The effectiveness of a current flattening circuit as countermeasure against dpa attacks”, Microelectronics Journal, vol. 42, January, 2011, pp.180-187.
Van Woudenberg, J. G. J., Witteman, M. F., Bakker, B. “Improving Differential Power Analysis by Elastic Alignment”, The Cryptographers’ Track at the RSA Conference 2011, San Francisco, CA, USA, February 14-18, 2011. Proceedings, pp.104-119.
Velegalati, R., Panasayya S. V. V. K. Y “Differential Power Analysis Attack on FPGA Implementation of AES” 2008, [Online] Available: http://cryptography.gmu.edu/team/download.php?docid=2082.
Walter, D. C., Koc, C. K., Paar, C. “Cryptographic Hardware and Embedded Systems”, CHES 2003, 5th International Workshop, vol. 2779 of Lecture Notes in Computer Science, pp 2-16., September 2003.
Whelan, C., Scott, M. “Side Channel Analysis of Practical Pairing Implementations: Which Path is More Secure?”, International Conference on Cryptology, Vietcrypt '06, Hanoi, Vietnam, September 2006.
Whelan, C., Tunstall, M., Naccache, D. “Computational Improvements to Differential Side Channel Analysis”, NATO Security through Science Series D: Information and Communication Security, Volume 2, IOS Press, January, 2006, pp.26-35.
Yu, P. “Implementation of DPA-resistant circuit for FPGA”, Master’s Thesis, Virginia Polytechnic Institute and State University, Blacksburg, Virginia, 2007.
*** “Advanced Encryption Standard”, National Institute of Standard and Technologies, November 2001. [Online] Available: http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf.
*** “Applications of modern cryptography”, Surfnet, September 2010. [Online] Available: http://www.surfnet.nl/Documents/rapport_201009_SNcryptoWEB.pdf.
*** “ATmega328 Datasheet”, Atmel. [Online] Available: http://www.atmel.com/Images/doc8161.pdf.
*** “COPACABANA”, 2008. [Online] Available: http://www.copacobana.org.
*** “Data Encryption Standard”, National Institute of Standard and Technologies, October 1999. [Online] Available: http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf.
*** “DES Cracker”, July 1998. [Online] Available: http://w2.eff.org/Privacy/Crypto/Crypto_misc/DESCracker/HTML/19980716_eff_des_faq.html.
*** “EMV Integrated Circuit Card Specifications for Payment Systems” – Book 2: Security and Key Management, June 2004. [online] Available: http://www.emvco.com.
*** “Enigma Machine”, First modern cryptographic device, Wikipedia 2013. [Online] Available: http://en.wikipedia.org/wiki/Enigma_machine.
*** “SelTrac. Communications-Based Train Control”, Thales. [Online] Available: https://www.thalesgroup.com/sites/default/files/asset/document/SelTracBrochure_CBTCSolutions_eng.pdf.
*** “The Common Criteria” [Online] Available: http://www.commoncriteriaportal.org.
*** “X.509: Information Technology. Public Key Infrastructure.”. [Online] Available: http://www.itu.int/rec/T-REC-X.509/en.
*** „AES library”, 2010. [Online] Available: http://www.das-labor.org/wiki/AVR-Crypto-Lib.
*** „LTspice”, Design Simulation and Device Models, Linear Technology, 2013. [Online] Available at: http://www.linear.com/designtools/software.
***, „COSMOS – Cultivate resilient smart Objects for Sustainable city applicatiOnS”, RCN 110375, QVD 2013-09-23.
***, „Differential Power Analysis”, 2013. [Online] Available: http://en.wikipedia.org/wiki/Differential_power_analysis.
*** “SHA”, National Institute of Standard and Technologies, October 1999. [Online] Available: http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf.
*** ”Crypto++”, Biblioteca software de algoritmi criptografici. [Online] Available at: http://www.cryptopp.com.
***, „Bob and Alice”, 2013. [Online] Available: http://en.wikipedia.org/wiki/Alice_and_Bob.
Bibliografie
Agrawal, D., Rao, J. R., Rohatgi, P. “Multi-channel Attacks”, CHES 2003, 5th International Workshop, vol. 2779 of Lecture Notes in Computer Science, pp 2-16., September 2003.
Amiel, F., Feix B., Tunstall M., Whelan, C., Marnane, W. P. “Distinguishing Multiplications from Squaring Operations”, Selected Areas in Cryptography – SAC 2008, vol. 5394 of Lecture Notes in Computer Science, Springer-Verlag, 2009, pp.346–360.
Amir Moradi, A., Kirschbaum, M., Eisenbarth, T., Paar, C. “Masked Dual-Rail Precharge Logic Encounters State-of-the-Art Power Analysis Methods” – IEEE transactions on very large scale integration (VLSI) systems, Volume: 20, 2012.
Baker, R. J. “CMOS Circuit Design, Layout, and Simulation, Third Edition”, Wiley-IEEE Press, USA, 2010.
Barenghi, A., Bertoni, G., Breveglieri, L., Pellicioli, M., Pelosi, G. “Low Voltage Fault Attacks to AES”, HOST 2010, Proceedings of the 2010 IEEE International Symposium on Hardware-Oriented Security and Trust (HOST), 13-14 June 2010, pp.7-12.
Barenghi, A., Pelosi, G., Teglia, Y. “Improving First Order Differential Power Attacks Through Digital Signal Processing”, Proceedings of the 3rd International Conference on Security of Information and Networks, SIN 2010, Rostov-on-Don, Russian Federation, September 7-11, 2010, pp.124-133.
Barenghi, A., Pelosi, G., Teglia, Y. “Information Leakage Discovery Techniques to Enhance Secure Chip Design”, Information Security Theory and Practice. Security and Privacy of Mobile Devices in Wireless Communication – 5th IFIP WG 11.2 International Workshop, WISTP 2011, Greece, June 1-3, 2011, pp.128-143.
Biham, E., Shamir, A. “Differential Cryptanalysis of the Data Encryption Standard”, Springer Verlag,ISBN 0-387-97930-1, 1993.
Billauer, E. “Peak detection using matlab.”, September 2008, [Online]. Available: http://billauer.co.il/peakdet.html.
Bucci , M., Guglielmo, M., Luzzi , R., Trifiletti, A. “A Power Consumption Randomization Countermeasure for DPA-Resistant Cryptographic Processors”, PATMOS 2004, LNCS 3254, Springer-Verlag, 2004, pp.481-490.
Canright, D., Batina, L. “A Very Compact Perfectly Masked S-Box for AES (corrected)”, [Online]. Avaible: http://faculty.nps.edu/drcanrig/pub/acns2008corr.pdf
Canright, D., Batina, L. “A very compact perfectly masked” S-box for AES.”, Proceedings of 6th International Workshop on Applied Cryptography and Network Security (ACNS). Volume 5037 of Lecture Notes in Computer Science., Springer-Verlag, 2008, pp.446-459.
Coppersmith, D. “Small Solutions to Polynomial Equations, and Low Exponent RSA Vulnerabilities”, Journal of Cryptology, v.10, n.4, December 1997.
Di Natale, G., Flottes ,M.-L., Rouzeyre, B. “An Integrated Validation Environment for Differential Power Analysis”, IEEE International Symposium on Electronic Design, Test & Applications (DELTA 2008), Hong Kong, January 2008, pp.527-532.
Eisenbarth, T., Kasper, T., Moradi, A., Paar, C., Salmasizadeh, M., Shalmani, M. T. M. “On the Power of Power Analysis in the Real World: A Complete Break of the KeeLoqCode Hopping Scheme”, Advances in Cryptology – CRYPTO 2008, 28th Annual International Cryptology Conference, Santa Barbara, CA, USA, August 17-21, 2008, pp. 203-220.
Er-hong, L., Xian-wei, G. “Resistance DPA of RSA in Smartcard”, Fifth International Conference on Information Assurance and Security, August 2009, pp. 406-409.
Ferguson, N., Schneier, B., Kohno, T. “Cryptography Engineering – Design Principles and Practical Applications”, ISBN: 978-0-470-47424-2, Wiley, 2010.
Gandolfi-Villegas, K., HAmzi, N. “Dynamic Runtime Methods to Enhance Private Key Blinding”, IACR Cryptology ePrint Archive, pp. 447, 2013.
Gandolfi, K., Mourtel, C., Olivier, F. “Electromagnetic analysis: Concrete results.”, Cryptographic Hardware and Embedded Systems − CHES 2001, vol. 2162 of Lecture Notes in Computer Science, Springer-Verlag, 2001, pp. 251–261.
Gebotys, C.H. “Security in Embedded Devices (Embedded Systems)”, ISBN: 978-1441915290, Springer Science+Business Media, Edition 2010.
Guneysu, T., Kasper, T., Novotny, M.,Paar, C.,Rupp, A. “Cryptanalysis with COPACOBANA.”, IEEE Transactions on Computers, Volume 11, 2008, pp.1498-1513.
Hamilton, M. D., Tunstall, M., Popovici, E. M., Marnane, W. P. “Side Channel Analysis of an Automotive Microprocessor”, IET Irish Signals and System Conference – ISSC 2008, pp.4–9.
Han, Y., Zou, X.-C., Liu Z.-L., Chen, Y.-C. “The research of DPA attacks against AES implementations”, The Journal of China Universities of Posts and Telecommunications, volume 15, Issue 4, December 2008, pp.101–106.
Håstad, J. “On Using RSA with Low Exponent in a Public Key Network”, CRYPTO '85 Advances in Cryptology Proceedings, London 1986, pp. 403-408.
Hayashi, Y., Sugawara, T., Kayano, Y., Homma, N., Mizuki, T., Satoh, A., Aoki, T., Minegishi, S., Sone, H., Inoue, H. “An Analysis of Information Leakage from a Cryptographic Hardware via Common-Mode Current”, 2009 International Symposium on Electromagnetic Compatibility (EMC'09), July, 2009.
Herbst, C., Oswald, E., Mangard, S. “An AES smart card implementation resistant to power analysis attacks.”, In Applied Cryptography and Network Security, Second International Conference, ACNS 2006, volume 3989 of Lecture Notes in Computer Science, Springer, 2006, pp.239–252.
Irwin, M. J., Kandemir, M. T., Vijaykrishnan, N. “Simple-Power: A Cyc1e-Accurste Energy Simulator”, IEEE TCCA Newsletter, January 2001.
Jaffe, J. “A First-Order DPA Attack Against AES in Counter Mode with Unknown Initial Counter”, Cryptographic Hardware and Embedded Systems – CHES 2007, 9th International Workshop, Vienna, Austria, September 10-13, 2007, pp.1-13.
Joye, M., Tunstall, M. “Fault Attacks on Stream Ciphers”, ISBN: ISBN 978-3-642-29656-7, Springer, 2012.
Kasper, M., Kasper, T., Moradi, A., Paar, C. “Praktische Angriffe auf die Bitstromverschlsselung von Xilinx FPGAs”, Datenschutz und Datensicherheit – DuD, Volume 35, Issue 11,November 2011, pp.779-785.
Kemmerling, O., Kuhn, M. G. “Design Principles for Tamper-Resistant Smartcard Processors” – Smartcard '99, pp. 9-20, May 1999.
Kerckhoffs, A. “La cryptographie militaire” Journal des sciences militaires, vol. IX, pp. 5–38, January 1883, pp. 161–191, February 1883.
Kirschbaum, M., Popp, T. “Evaluation of Power Estimation Methods Based on Logic Simulations”, Proceedings of the 15th Austrian Workshop on Microelectronics, 2007, pp.45-51.
Kocher, P. C. “Design and Validation Strategies for Obtaining Assurance in Countermeasures to Power Analysis and Related Attacks.”, NIST Phyiscal Security Workshop, September 2005.
Kocher, P. C. “Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems”, 16th Annual International Cryptology Conference, Santa Barbara, California, USA, August 18-22, 1996, Proceedings, number 1109 in Lecture Notes in Computer Science, pp. 104-113, Springer, 1996.
Kocher, P. C., Jaffe, J., Jun, B. “Differential Power Analysis”, 19th Annual International Cryptology Conference, Santa Barbara, California, USA, August 15-19, 1999, Proceedings, vol. 1666 of Lecture Notes in Computer Science, pp. 388÷397, Springer, 1999.
Kocher, P. C., Jaffe, J., Jun, B. “Introduction to Differential Power Analysis and Related Attacks.”, Cryptographic Research, 1998.
Kocher, P. C., Jaffe, J., Jun, B., Rohatgi, P. “Introduction to differential power analysis”, 2011, pp.753-760.
Kocher, P.C., Schneier, B. "Insider risks in elections", Commun. ACM, 2004, pp.104..
Lesea, A. “IP Security in FPGAs”, White Paper WP 261. Technical report, XILINX, February 2007.
Lim, D., Lee, J. W., Gassend, B., Suh, G. E., Van Dijk, M., Devadas, S. “Extracting secret keys from integrated circuits.”, Very Large Scale Integration (VLSI) Systems, IEEE Transactions on, December, 2005, Volume 10, pp.1200–1205.
Mangard, S., Oswald, E., Popp T. „Power Analysis Attacks – Revealing the Secrets of Smart Cards”, Springer, 2007.
Markantonakis, K., Tunstall, M., Hancke, G., Askoxylakis, I., Mayes, K. “Smart Card Security – Theory and Practice”, Information Security Technical Report 14, Elsevier, 2009, pp.46–56.
Masoomi, M., Masoumi, M., Ahmadian, M. “A practical differential power analysis attack against an FPGA implementation of AES cryptosystem”, 2010 International Conference on Information Society, pp. 308 – 312, 2010.
Matsui, M. “Linear Cryptoanalysis Method for DES Cipher.”, EUROCRYPT, pp.386-397, 1993.
Mayhew, M., Muresan, R. “Low-power AES coprocessor in 0.18 µm CMOS technology for secure microsystems”, IEEE/CMC Microsystems and Nanoelectronics Research Conference, Ottawa, Canada, Oct. 2009.
McEvoy, P., Tunstall, M., Murphy, C. C., Marnane, W. P. “Differential Power Analysis of HMAC based on SHA-2 on an FPGA, and Countermeasures”, Workshop on Information Security Applications – WISA 2007, vol. 4867 of Lecture Notes in Computer Science, Springer-Verlag, 2007, pp.317–332.
Menezes, A., Van Oorschot, P. C., Vanstone, S. A. “Handbook of Applied Cryptography.”, CRC Press, 1996.
Meritt, K. “Differential Power Analysis attacks on AES”, Cryptography II , VCSG-706, May 18, 2012.
Messerges, T. S., Dabbish, E. A., Sloan, R. H. “Investigations of Power Analysis Attacks on Smartcards”, USENIX Workshop on Smartcard Technology Chicago, Illinois, USA, May 10–11, 1999.
Messerges, T.S., Dabbish, E.A., Sloan, R.H. “Examining smart-card security under the threat of power analysis attacks.”, IEEE Transactions on Computers, Volume 5, 2002, pp.541-552.
Monteiro, J., Devadas, S. “Techniques for Power Estimation and Optimization at the Logic Level: A Survey”, Journal of VLSI Signal Processing Systems 13,1996, pp.259-276.
Moradi, A. Barenghi, T. Kasper, C. Paar, “On the Vulnerability of FPGA Bitstream Encryption against Power Analysis Attacks”, ACM conference on Computer and communications security, pp. 111 – 124, ISBN: 978-1-4503-0948-6, 2011.
Moradi, A., Barenghi, A., Kasper, T., Paar, C. “On the vulnerability of FPGA bitstream encryption against power analysis attacks: extracting keys from xilinx Virtex-II FPGAs”, Proceedings of the 18th ACM Conference on Computer and Communications Security, CCS 2011, Chicago, Illinois, USA, October 17-21, 2011, pp. 111-124.
Moradi, A., Kasper, M., Paar, C. “Black-Box Side-Channel Attacks Highlight the Importance of Countermeasures – An Analysis of the Xilinx Virtex-4 and Virtex-5 Bitstream Encryption Mechanism”, Topics in Cryptology – CT-RSA 2012 – The Cryptographers' Track at the RSA Conference 2012, San Francisco, CA, USA, February 27 – March 2, 2012, pp.1-18.
Moradi, A., Mischke, O., Eisenbarth, T. “Correlation-enhanced power analysis collision attack.”, In Proceedings of the 12th international conference on Cryptographic hardware and embedded systems, CHES’10, Berlin, Heidelberg, Springer, 2010, pp.125–139.
Moradi, A., Oswald, D., Paar, C., Swierczynski, P. “Side-channel attacks on the bitstream encryption mechanism of Altera Stratix II: facilitating black-box analysis using software reverse-engineering”, The 2013 ACM/SIGDA International Symposium on Field Programmable Gate Arrays, FPGA '13, Monterey, CA, USA, February 11-13, 2013, pp. 91-100.
Moradi, A., Poschmann, A. “Lightweight Cryptography and DPA Countermeasures: A Survey”, Financial Cryptography and Data Security, FC 2010 Workshops, Tenerife, Canary Islands, Spain, January 25-28, 2010, Revised Selected Papers, pp.68-79.
Muresan, R. “Power analysis attacks and hardware level countermeasures for cryptographic devices”, Journal of Recent Patents on Electrical & Electronic Engineering, Bentham Science Publishers, vol. 5, no. 3, Dec. 2012.
Nekoogar, F. “Digital Cryptography: Rijndael Encryption and AES Applications”, EE Times, October 2001. [Online] Available: http://www.eetimes.com/document.asp?doc_id=1275908.
Note, J.-B., Rannaud, E. “From the bitstream to the netlist.”, 16th International Symposium on Field Programmable Gate Arrays, FPGA 2008. ACM, 2008.
Ors, S. B., Gurkaynak, F., Oswald, E., Preneel, B. “Power-Analysis Attack on an ASIC AES implementation”, Information Technology: Coding and Computing, volume 2, 2004, pp.546-552.
Pitu, C. L., Campeanu, R. “Differential Power Analysis: Simulated versus Experimental Attacks”, 19th SIITME, Romania, October 2013.
Pitu, C. L., Campeanu, R. “A Practical Approach to Power Trace Measurement for Differential Power Analysis based Attacks”, Bulletin of the Transilvania University of Brașov (BUT), 2013 Series I: Engineering Sciences, vol. 6 (55), no. 1, Brașov, România, 2013.
Pitu, C. L., Campeanu, R. “On Preventing Differential Power Analysis using Data Masking”, 19th SIITME, Romania, October 2013.
Quisquater, J. J., Samyde, D. “ElectroMagnetic Analysis (EMA): Measures and Counter-Measures for Smart Cards”, International Conference on Research in Smart Cards, E-smart 2001, Cannes, France, September 19-21, 2001, Proceedings, vol. 2140 of Lecture Notes in Computer Science, pp. 200-210. Springer, 2001.
Quisquater, J.-J., Samyde, D. “ElectroMagnetic Analysis (EMA): Measuresand couter-measures for smard cards. In Smart Card Programming and Security.”, (E-smart 2001), vol. 2140 of Lecture Notes in Computer Science, Springer-Verlag, 2001, pp. 200–210.
Rabaey, J. M., Chandrakasan, A., Nikolic, B., “Digital Integrated Circuits – A Design Perspective.”, Electronics and VLSI Series, Prentice Hall, 2nd edition, 2003.
Ravi, S., Kocher, P. C., Lee, R. B., McGraw, G., Raghunathan, A. “Security as a new dimension in embedded system design”, Proceedings of the 41th Design Automation Conference, DAC 2004, San Diego, CA, USA, June 7-11, 2004, pp.753-760.
Rivest, R.L., Robshaw, M.J.B., Sideney, R., Yin, Y.L. “The RC6 block cipher.”, RSA Laboratories, v1.1, August 20, 1998.
Rumsey, A. “IRSE Seminar On Communications Based Train Control.”, IRSE International Technical Committee. [Online] Available: http://www.irse.org/knowledge/publicdocuments/2009_10_01_IRSE_Seminar_on_Communications_Based_Train_Control.pdf.
S. B. Örs, E. Oswald, B. Preneel, “Power-Analysis Attacks on an FPGA – First Experimental Results”, Cryptographic Hardware and Embedded Systems – CHES, 2003.
S. B. Örs, F. Gürkaynak, E. Oswald, B. Preneel, “Power-Analysis Attack on an ASIC AES implementation”, Information Technology: Coding and Computing, vol. 2, pp. 546-552, ISBN 0-7695-2108-8, 2004.
S. Tillich, C. Herbst, “Attacking State-of-the-Art Software Countermeasures – A Case Study for AES”, Cryptographic Hardware and Embedded Systems – CHES, pp. 228-248, ISBN 978-3-540-85053-3, 2008.
Sadowsky, G., Dempsey, J. X., Greenberg, A., Mack, B. J., Schwartz, A. “Information Technology Security Handbook”, The World Bank, 2003.
Samyde, D., Skorobogatov, S. P., Anderson, R. J., Quisquater, J. J. “On a New Way to Read Data from Memory”, SISW'02, pp. 65-69., IEEE Computer Society, 2002.
Satoh, A., Morioka, S., Takano, K., Munetoh, S. “A compact Rijndael hardware architecture with s-box optimization.”, Springer-Verlag, 2001, pp.239–254.
Schneier, B. “Breaking the Xilinx Virtex-II FPGA Bitstream Encryption”, August 2011. [Online] Available: https://www.schneier.com/blog/archives/2011/08/breaking_the_xi.html.
Sinha, A., Chandrakasan, A. “JonleTrack – A Web Based Tool for Software Energy Profiling.”, In 38th Design Automation Conference, DAC 2001, USA, pp. 220-225, June 2001.
Skorobogatov, S. P., Anderson, R. J. “Optical Fault Induction Attacks”, Conf. – CHES 2002, 4th International Workshop, Redwood Shores, CA, USA, August 13-15, 2002, Revised Papers, vol. 2523 of Lecture Notes in Computer Science, pp. 2-12, Springer, 2003.
Standaert, F. X., Oldenzeel, L. Samyde, D., Quisquater, J. J. “Power Analysis of FPGAs: How Practical Is the Attack”, Lecture Notes in Computer Science Volume 2778, pp 701-710, 2003.
Standaert, F-X., Pereira, O., Yu, Y., Quisquater, J-J., Yung, M., Oswald, E. “Leakage Resilient Cryptography in Practice.”, Towards Hardware-Intrinsic Security, Springer, 2010, pp.105-139.
Sugawara, T., Homma, N., Aoki, T., Satoh, A. “Differential Power Analysis of AES ASIC Implementations with Various S-box Circuits”, European Conference on Circuit Theory and Design 2009 (ECCTD2009), August, 2009.
Tunstall, M. “Secure Cryptographic Algorithm Implementation on Embedded Platforms”, Teză de Doctorat, Royal Holloway, University of London, 2006.
Tunstall, M. “Smart Card Security”, capitol în “Smart Cards, Tokens, Security and Applications”, Mayes, K., Markantonakis, K., Springer-Verlag, 2008, pp.195–228.
Vahedi, H., Gregori, S., Muresan, R. “The effectiveness of a current flattening circuit as countermeasure against dpa attacks”, Microelectronics Journal, vol. 42, January, 2011, pp.180-187.
Van Woudenberg, J. G. J., Witteman, M. F., Bakker, B. “Improving Differential Power Analysis by Elastic Alignment”, The Cryptographers’ Track at the RSA Conference 2011, San Francisco, CA, USA, February 14-18, 2011. Proceedings, pp.104-119.
Velegalati, R., Panasayya S. V. V. K. Y “Differential Power Analysis Attack on FPGA Implementation of AES” 2008, [Online] Available: http://cryptography.gmu.edu/team/download.php?docid=2082.
Walter, D. C., Koc, C. K., Paar, C. “Cryptographic Hardware and Embedded Systems”, CHES 2003, 5th International Workshop, vol. 2779 of Lecture Notes in Computer Science, pp 2-16., September 2003.
Whelan, C., Scott, M. “Side Channel Analysis of Practical Pairing Implementations: Which Path is More Secure?”, International Conference on Cryptology, Vietcrypt '06, Hanoi, Vietnam, September 2006.
Whelan, C., Tunstall, M., Naccache, D. “Computational Improvements to Differential Side Channel Analysis”, NATO Security through Science Series D: Information and Communication Security, Volume 2, IOS Press, January, 2006, pp.26-35.
Yu, P. “Implementation of DPA-resistant circuit for FPGA”, Master’s Thesis, Virginia Polytechnic Institute and State University, Blacksburg, Virginia, 2007.
*** “Advanced Encryption Standard”, National Institute of Standard and Technologies, November 2001. [Online] Available: http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf.
*** “Applications of modern cryptography”, Surfnet, September 2010. [Online] Available: http://www.surfnet.nl/Documents/rapport_201009_SNcryptoWEB.pdf.
*** “ATmega328 Datasheet”, Atmel. [Online] Available: http://www.atmel.com/Images/doc8161.pdf.
*** “COPACABANA”, 2008. [Online] Available: http://www.copacobana.org.
*** “Data Encryption Standard”, National Institute of Standard and Technologies, October 1999. [Online] Available: http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf.
*** “DES Cracker”, July 1998. [Online] Available: http://w2.eff.org/Privacy/Crypto/Crypto_misc/DESCracker/HTML/19980716_eff_des_faq.html.
*** “EMV Integrated Circuit Card Specifications for Payment Systems” – Book 2: Security and Key Management, June 2004. [online] Available: http://www.emvco.com.
*** “Enigma Machine”, First modern cryptographic device, Wikipedia 2013. [Online] Available: http://en.wikipedia.org/wiki/Enigma_machine.
*** “SelTrac. Communications-Based Train Control”, Thales. [Online] Available: https://www.thalesgroup.com/sites/default/files/asset/document/SelTracBrochure_CBTCSolutions_eng.pdf.
*** “The Common Criteria” [Online] Available: http://www.commoncriteriaportal.org.
*** “X.509: Information Technology. Public Key Infrastructure.”. [Online] Available: http://www.itu.int/rec/T-REC-X.509/en.
*** „AES library”, 2010. [Online] Available: http://www.das-labor.org/wiki/AVR-Crypto-Lib.
*** „LTspice”, Design Simulation and Device Models, Linear Technology, 2013. [Online] Available at: http://www.linear.com/designtools/software.
***, „COSMOS – Cultivate resilient smart Objects for Sustainable city applicatiOnS”, RCN 110375, QVD 2013-09-23.
***, „Differential Power Analysis”, 2013. [Online] Available: http://en.wikipedia.org/wiki/Differential_power_analysis.
*** “SHA”, National Institute of Standard and Technologies, October 1999. [Online] Available: http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf.
*** ”Crypto++”, Biblioteca software de algoritmi criptografici. [Online] Available at: http://www.cryptopp.com.
***, „Bob and Alice”, 2013. [Online] Available: http://en.wikipedia.org/wiki/Alice_and_Bob.
Anexa 1. ADP
A1.1 Procedură simplificată de calcul a unui atac de tip analiză diferențială de putere ce are ca țintă bitul 0 din octetul 0 al cheii de criptare
#!/usr/bin/env python
import numpy
# SBOX-ul utilizat pentru generarea ipotezelor
SBOX = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43,\ 254, 215, 171, 118,202, 130, 201, 125, 250, 89, 71, 240,\ 173, 212, 162, 175, 156, 164, 114, 192,183, 253, 147, 38,\ 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21,4,\ 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39,\ 178, 117,9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214,\ 179, 041, 227, 47, 132,83, 209, 0, 237, 32, 252, 177, 91,\ 106, 203, 190, 57, 74, 76, 88, 207,208, 239, 170, 251, 67,\ 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168,81, 163,\ 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255,\ 243, 210,205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126,\ 61, 100, 93, 25, 115,96, 129, 79, 220, 34, 42, 144, 136,\ 70, 238, 184, 20, 222, 94, 11, 219,224, 50, 58, 10, 73, 6,\ 36, 92, 194, 211, 172, 98, 145, 149, 228, 121,231, 200,\ 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122,\ 174, 8,186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116,\ 31, 75, 189, 139, 138,112, 62, 181, 102, 72, 3, 246, 14,\ 97, 53, 87, 185, 134, 193, 29, 158,225, 248, 152, 17, 105,\ 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223,140,\ 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84,\ 187, 22];
curbeconsum = numpy.loadtxt(curbe, ndmin=2)
texteinclar = numpy.loadtxt(text, dtype='|S2', ndmin=2)
cheiaoriginala = cheie
cheiacalculata = []
octettinta = 0
bittinta = 0
puntinceput = 0
puntsfarsit = 10000 # numar puncte pe fiecare curba de consum
numarcurbe = 100 # numarul curbelor de consum utilizate
# pentru toti cei 16 octeti ai cheii
for numaroctet in range(0, 16):
diffs = [0]*256
# pentru fiecare octet al cheii sunt posibile valori de la 0x00 la 0xFF
for key in range(0, 256):
# initializare array-uri si variabile cu 0
media1 = numpy.zeros(len(curbeconsum[0,puntinceput:puntsfarsit]))
media0 = numpy.zeros(len(curbeconsum[0,puntinceput:puntsfarsit]))
num1 = 0
num0 = 0
# pentru fiecare curba, executa…
for tnum in range(numarcurbe):
# calculeaza iesirea SBOC-ului
ipoteza = SBOX[int(texteinclar[tnum, numaroctet], 16) ^ key]
# bitul tinta este 1 sau 0?
if (ipoteza & (1 << bittinta)) != 0:
# daca este 1 adauga curba in media celor “de 1”
media1 = numpy.add(media1, curbeconsum[tnum,puntinceput:puntsfarsit])
num1 = num1 + 1
else:
# daca este 1 adauga curba in media celor “de 0”
media0 = numpy.add(media0, curbeconsum[tnum,puntinceput:puntsfarsit])
num0 = num0 + 1
# calculeaza media
log = open('log.txt', 'w')
log.write('media0: %s\r' % media0)
log.write('num0: %s\r' % num0)
log.write('media1: %s\r' % media1)
log.write('num1: %s\r' % num1)
media1 = media1 / num1
media0 = media0 / num0
log.write('media0_dupa: %s\r' % media0)
log.write('media1_dupa: %s\r' % media1)
log.close()
# calculeaza diferenta dintre cele 2 medii
diff = numpy.subtract(media1, media0)
# gaseste media cea mai mare pentru ipoteza curenta
diffs[key] = max(numpy.fabs(diff))
# selecteaza diferenta cea mai mare dintre toate ipotezele folosite
octetgasit = diffs.index(max(diffs))
cheiacalculata.append(octetgasit)
print “%2x “%octetgasit,
print ““
print cheiacalculata
print cheiaoriginala
Anexa 2. AES
A2.1 Registrul de date
module state_reg (
clk_i,
rstn_i,
load_i,
dat_i,
se_i,
state_reg_i,
state_reg_o
);
input clk_i;
input rstn_i;
input load_i;
input [31:0] dat_i;
input [3:0] se_i;
input [31:0] state_reg_i;
output [31:0] state_reg_o;
reg [7:0] state_reg0_0;
reg [7:0] state_reg0_1;
reg [7:0] state_reg0_2;
reg [7:0] state_reg0_3;
reg [7:0] state_reg1_0;
reg [7:0] state_reg1_1;
reg [7:0] state_reg1_2;
reg [7:0] state_reg1_3;
reg [7:0] state_reg2_0;
reg [7:0] state_reg2_1;
reg [7:0] state_reg2_2;
reg [7:0] state_reg2_3;
reg [7:0] state_reg3_0;
reg [7:0] state_reg3_1;
reg [7:0] state_reg3_2;
reg [7:0] state_reg3_3;
wire se0, se1, se2, se3;
wire [31:0] state_reg_o;
assign se0 = se_i[0];
assign se1 = se_i[1];
assign se2 = se_i[2];
assign se3 = se_i[3];
always @(posedge clk_i or negedge rstn_i) // byte 0
if (!rstn_i) begin /*change polarity reset*/
state_reg0_0 <= 8'b0;
state_reg0_1 <= 8'b0;
state_reg0_2 <= 8'b0;
state_reg0_3 <= 8'b0;
end
else begin
if (se0) begin
state_reg0_3 <= load_i ? dat_i[31:24] : state_reg_i[31:24];
state_reg0_2 <= state_reg0_3;
state_reg0_1 <= state_reg0_2;
state_reg0_0 <= state_reg0_1;
end
end
always @(posedge clk_i or negedge rstn_i) // byte 1
if (!rstn_i) begin
state_reg1_0 <= 8'b0;
state_reg1_1 <= 8'b0;
state_reg1_2 <= 8'b0;
state_reg1_3 <= 8'b0;
end
else begin
if (se1) begin
state_reg1_3 <= load_i ? dat_i[23:16] : state_reg_i[23:16];
state_reg1_2 <= state_reg1_3;
state_reg1_1 <= state_reg1_2;
state_reg1_0 <= state_reg1_1;
end
end
always @(posedge clk_i or negedge rstn_i) // byte 2
if (!rstn_i) begin
state_reg2_0 <= 8'b0;
state_reg2_1 <= 8'b0;
state_reg2_2 <= 8'b0;
state_reg2_3 <= 8'b0;
end
else begin
if (se2) begin
state_reg2_3 <= load_i ? dat_i[15:8] : state_reg_i[15:8];
state_reg2_2 <= state_reg2_3;
state_reg2_1 <= state_reg2_2;
state_reg2_0 <= state_reg2_1;
end
end
always @(posedge clk_i or negedge rstn_i) // byte 3
if (!rstn_i) begin
state_reg3_0 <= 8'b0;
state_reg3_1 <= 8'b0;
state_reg3_2 <= 8'b0;
state_reg3_3 <= 8'b0;
end
else begin
if (se3) begin
state_reg3_3 <= load_i ? dat_i[7:0] : state_reg_i[7:0];
state_reg3_2 <= state_reg3_3;
state_reg3_1 <= state_reg3_2;
state_reg3_0 <= state_reg3_1;
end
end
assign state_reg_o = {state_reg0_0, state_reg1_0, state_reg2_0, state_reg3_0};
endmodule
A2.2 Mediu de simulare
//////////////////////////////////////////////////////////////////
`timescale 1ns/1ns
module clk_gen(clk);
output clk;
parameter clk_per = 10;
parameter phase = 3;
reg clk;
initial begin
clk <= 0;
#(clk_per/2+phase);
forever #(clk_per/2) clk <= ~clk;
end
endmodule
//////////////////////////////////////////////////////////////////
`timescale 1ns/1ns
module aes_serial_tb ();
//–––- config ––––––––––––––
parameter no_iter = 9999;
parameter no_keys = 10; // 10 keys are used
//––––––––––––––––––––
wire clk;
wire start;
wire tx_o;
wire trigger_o;
wire [127:0] dat_in;
wire [127:0] key;
wire [127:0] expected_dat_o;
wire ready = aes_serial_tb.aes_uart.ready;
reg rst;
reg rx;
reg [7:0] dat_out_byte_reg;
reg [127:0] dat_out_reg;
reg dec;
reg [127:0] key_in, test_vector_in_reg, test_vector_out_reg;
// Declare memory array that is 1 million words of 128-bits each
reg [127:0] keys [0:9]; // encryption keys
reg [127:0] data_input [0:9999]; // generic input vectors
reg [127:0] data_output [0:9999];
// Fill the memory with values taken from a data file
initial $readmemh( “keys.txt”, keys);
initial $readmemh( “aes_dati_16B_10K.txt”, data_input);
//–––––Configure Testvectors––––––––//
assign key = key_in;
assign dat_in = dec ? test_vector_out_reg : test_vector_in_reg;
assign expected_dat_o = dec ? test_vector_in_reg : test_vector_out_reg;
//–––––––––––––––––––//
clk_gen #(20, 0) clk_gen(clk);
// UART AES instance
aes_uart_top aes_uart(
.clk_i ( clk ) ,
.rst_i ( rst ) ,
.rx_i ( rx ) ,
.tx_o ( tx_o ) ,
.trigger_o ( trigger_o )
) ;
task send_data;
input [7:0] data_to_rx;
begin
#0 rx <= 1'b0; // start bit
#52080 rx <= data_to_rx[0]; // bit 0
#52080 rx <= data_to_rx[1]; // bit 1
#52080 rx <= data_to_rx[2]; // bit 2
#52080 rx <= data_to_rx[3]; // bit 3
#52080 rx <= data_to_rx[4]; // bit 4
#52080 rx <= data_to_rx[5]; // bit 5
#52080 rx <= data_to_rx[6]; // bit 6
#52080 rx <= data_to_rx[7]; // bit 7
#52080 rx <= 1'b1; // stop bit
#52080;
end
endtask
task read_byte;
begin
@(negedge tx_o);
#26040;
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#52080 dat_out_byte_reg <= {tx_o, dat_out_byte_reg[7:1]};
#26040;
end
endtask
task read_data;
begin
read_byte; dat_out_reg[127 : 120] <= dat_out_byte_reg;
read_byte; dat_out_reg[119 : 112] <= dat_out_byte_reg;
read_byte; dat_out_reg[111 : 104] <= dat_out_byte_reg;
read_byte; dat_out_reg[103 : 96 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[95 : 88 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[87 : 80 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[79 : 72 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[71 : 64 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[63 : 56 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[55 : 48 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[47 : 40 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[39 : 32 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[31 : 24 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[23 : 16 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[15 : 8 ] <= dat_out_byte_reg;
read_byte; dat_out_reg[7 : 0 ] <= dat_out_byte_reg;
#1;
end
endtask
//task to compare output data with expected values
task check_output_task;
input [127:0] actual_data;
input [127:0] expected_data;
begin
if (expected_data == actual_data) begin
$display(“– Run successful! ––”);
end
else begin
$display(“– Run failed! –”);
$display(“Output Simulation: %h”, actual_data );
$display(“Output Expected : %h”, expected_data );
$display(“Used key : %h”, key );
$display(“Input data : %h”, dat_in );
$stop; // break the simulation if data is not matching!!!
end
$display(“––––––––––––––––-”);
$display(““);
$display(““);
end
endtask
integer iterations, enc_key;
integer j;
initial
begin
$display(“–––––– SIMULATION START –––––-”);
$display(““);
$display(““);
for(enc_key=0; enc_key<=no_keys; enc_key=enc_key+1) begin
$display(“–– KEY %d: –––––––-”, enc_key);
key_in <= keys[enc_key];
case(enc_key)
16'd0 : $readmemh( “aes_dato_16B_10K_key1.txt”, data_output);
16'd1 : $readmemh( “aes_dato_16B_10K_key2.txt”, data_output);
16'd2 : $readmemh( “aes_dato_16B_10K_key3.txt”, data_output);
16'd3 : $readmemh( “aes_dato_16B_10K_key4.txt”, data_output);
16'd4 : $readmemh( “aes_dato_16B_10K_key5.txt”, data_output);
16'd5 : $readmemh( “aes_dato_16B_10K_key6.txt”, data_output);
16'd6 : $readmemh( “aes_dato_16B_10K_key7.txt”, data_output);
16'd7 : $readmemh( “aes_dato_16B_10K_key8.txt”, data_output);
16'd8 : $readmemh( “aes_dato_16B_10K_key9.txt”, data_output);
16'd9 : $readmemh( “aes_dato_16B_10K_key10.txt”, data_output);
Default :$readmemh( “aes_dato_16B_10K_key1.txt”, data_output);
endcase
j = 0;
for (iterations=0; iterations<no_iter;iterations=iterations+1) begin
$display(“–– RUN %d: ENCRYPTION START –––-”, j);
test_vector_in_reg <= data_input[j];
test_vector_out_reg <= data_output[j];
j=j+1;
#0 rx <= 1'b1;
#0 rst <= 1'b0;
#100 rst <= 1'b1;
#100 rst <= 1'b0;
dec <= 1'b0; // encryption
@(posedge clk);
@(posedge clk);
send_data(“d”);
send_data(dat_in); // simplificare – operatia are loc pe octet, nu pe bloc de date
@(posedge clk);
send_data(“k”);
send_data(key); // simplificare – operatia are loc pe octet, nu pe bloc de date
@(posedge clk);
send_data(“E”);// simplificare – operatia are loc pe octet, nu pe bloc de date
send_data(128'h0);
@ (posedge ready);
read_data;
check_output_task(dat_out_reg, expected_dat_o);
end
end
$display(“––––– SIMULATION STOP ––––”);
$stop ;
end
endmodule
Anexa 3. Coduri sursă
A3.1 Procedură de control și verificare a datelor procesate de standurile de verificare
#!/usr/bin/env python
import serial
import sys
import time
import struct
from datetime import datetime
# ================================================================
#parametrii
if len(sys.argv) <= 2:
print ''
print (' syntaxa: python pat.py record_tracesy <COM port> <fisier chei> <numar chei> <fisier texte in clar> <numar texte in clar> <criptare sau decriptare>')
print ''
quit()
print ''
print (“ control pe portul %s” % str(sys.argv[1]))
print (“ utilizand fisierul de chei %s” % str(sys.argv[2]))
print (“ utilizand cheia(cheile) %s” % str(sys.argv[3]))
print (“ si fisierul de texte in clar %s” % str(sys.argv[4]))
print (“ utilizand %s texte in clar” % str(sys.argv[5]))
print (“ executand operatia de %s” % str(sys.argv[6]))
print ''
# caracter de comanda:
# cmd_send_key: “k” + 16 octeti date
# cmd_send_data: “d” + 16 octeti date
# cmd_decrypt: “D” + 16 octeti aleatori
# cmd_encrypt: “E” + 16 octeti aleatori
#
# setari port serial:
# 19200 baud
# 8 data bits
# no parity
# 1 stop bit
# no handshaking
_COM_PORT_ = “COM12” # com port
_COM_PORT_ = str(sys.argv[1]) # com port
_FISIER_CHEI_ = “keys.txt” # fisier text ce contine cheile
_FISIER_CHEI_ = str(sys.argv[2]) # fisier text ce contine cheile
_NR_CHEI_ = 1 # cate chei sa fie utilizate
_NR_CHEI_ = int(sys.argv[3]) # cate chei sa fie utilizate
_TEXTE_CLAR_ = “aes_dati_16B_1M.txt” # fisier text ce contine textele in clar
_TEXTE_CLAR_ = str(sys.argv[4]) # fisier text ce contine textele in clar
_NR_ITERATII_ = 100 # cate operatii criptografice sa fie executate pentru fiecare cheie
_NR_ITERATII_ = int(sys.argv[5]) # cate operatii criptografice sa fie executate pentru fiecare cheie
_OPERATIE_ = “encryption” # operatia de executat
_OPERATIE_ = str(sys.argv[6]) # operatia de executat
# ================================================================
# ================================================================
#variabile
cheie = 0
data_in = 0
data_out = 0
nr_chei = 0
nr_iteratii = 0
# ================================================================
# ================================================================
#comunicatie seriala cu standul experimental
aes = serial.Serial(_COM_PORT_, baudrate=19200, bytesize=8, parity='N', stopbits=1)
aes.isOpen();
# ================================================================
def packIntegerAsULong(value):
return struct.pack('L', value)
print '%s' % ('======== starting ========')
print ''
main_start = datetime.now()
if _NR_CHEI_ == 0:
_NR_CHEI_ = len(open(_FISIER_CHEI_).readlines())
if _NR_ITERATII_ == 0:
_NR_ITERATII_ = len(open(_TEXTE_CLAR_).readlines())
print “%d keys” % _NR_CHEI_
print “%d interations for each cheie” % _NR_ITERATII_
print “a total of %d operations will be performed” % (_NR_CHEI_ * _NR_ITERATII_)
print ''
# ================================================================
# get cheie from cheie file
fisier_chei = open(_FISIER_CHEI_, 'r')
for cheie in fisier_chei:
if DEBUG:
print cheie.rstrip('\n')
nr_chei = nr_chei + 1
print '%s %2d %s' % ('++++++++ cheie', nr_chei, '++++++++++')
# =============================================================
# get data from data file & log arduino response to file
data_input_file = open(_TEXTE_CLAR_, 'r')
status_log = open('uart_aes_dato_key' + str(nr_chei) + '.txt', 'w')
for data in data_input_file:
if DEBUG:
print data.rstrip('\n')
nr_iteratii = nr_iteratii + 1
n = 8
cheie_split = [cheie.rstrip('\n')[i:i+n] for i in range(0, len(cheie.rstrip('\n')), n)]
data_split = [data.rstrip('\n')[i:i+n] for i in range(0, len(data.rstrip('\n')), n)]
aes.write(“d” + packIntegerAsULong(int('0x' + data_split[0], 16)) + packIntegerAsULong(int('0x' + data_split[1], 16)) + packIntegerAsULong(int('0x' + data_split[2], 16)) + packIntegerAsULong(int('0x' + data_split[3], 16))) # date
aes.write(“k” + packIntegerAsULong(int('0x' + cheie_split[0], 16)) + packIntegerAsULong(int('0x' + cheie_split[1], 16)) + packIntegerAsULong(int('0x' + cheie_split[2], 16)) + packIntegerAsULong(int('0x' + cheie_split[3], 16))) # cheie
if _OPERATIE_ == 'encryption':
aes.write(“E” + packIntegerAsULong(0x00010203) +
packIntegerAsULong(0x04050607) +
packIntegerAsULong(0x08090001) +
packIntegerAsULong(0x02030405)) # criptare
if _OPERATIE_ == 'decryption':
aes.write(“D” + packIntegerAsULong(0x00010203) +
packIntegerAsULong(0x04050607) +
packIntegerAsULong(0x08090001) +
packIntegerAsULong(0x02030405)) # decriptare
start = datetime.now()
data_out = aes.read(16).encode('hex').upper()
end = datetime.now()
status_log.write(data_out + '\r')
if DEBUG:
print data_out
print “# %6d in: %s out: %s duration: %d[ms]” % (nr_iteratii, data.rstrip('\n'), data_out, (end-start).microseconds/1000)
if nr_iteratii == _NR_ITERATII_:
break
data_input_file.close()
status_log.close()
# ==============================================================
if nr_chei == _NR_CHEI_:
break
fisier_chei.close()
# ================================================================
main_end = datetime.now()
print ''
print ''
print “ total execution time was “ + str(main_end-main_start)
print ''
print ''
print '%s' % ('======== done ========')
print ''
A3.2 Procedură de pregătire a curbelor de consum în vederea executării ADP
#!/usr/bin/env python
from glob import iglob
import os
import sys
import time
if len(sys.argv) <= 2:
print ''
print (' syntax: python merge_traces.py <calea catre directorul ce contine curbele> <fisier iesire>')
print ''
quit()
print ''
print (“ concatenare din directorul: %s” % str(sys.argv[1]))
print (“ in fisierul: %s” % str(sys.argv[2]))
print ''
destination = open(str(sys.argv[2]), 'wb')
for filename in iglob(os.path.join(str(sys.argv[1]), '*.dat')):
start = time.clock()
for line in open(filename, 'r'):
destination.write(line.replace('\n', ' '))
destination.write('\n')
print ('duration %7.2f[ms] : filename %s') % ((time.clock()-start)*(10**3), filename)
destination.close()
print (' total duration %7.2f[ms]') % (time.clock()*(10**3))
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Modelarea Puterii Absorbite de Circuitele Digitale Integrate (ID: 162835)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
