• No results found

AES - kryptering med cuda : Skillnader i beräkningshastighet mellan AES-krypteringsmetoderna ECB och CTR vid implementering med Cuda-ramverket.

N/A
N/A
Protected

Academic year: 2021

Share "AES - kryptering med cuda : Skillnader i beräkningshastighet mellan AES-krypteringsmetoderna ECB och CTR vid implementering med Cuda-ramverket."

Copied!
51
0
0

Loading.... (view fulltext now)

Full text

(1)

AES-kryptering med Cuda

HUVUDOMRÅDE: Datateknik

FÖRFATTARE: Viktor Henningsson & Pontus Vidén HANDLEDARE:Johannes Schmidt

JÖNKÖPING 2019 december

Skillnader i beräkningshastighet mellan

AES-krypteringsmetoderna ECB och CTR vid implementering

med Cuda-ramverket.

(2)

Postadress: Besöksadress: Telefon:

Detta examensarbete är utfört vid Tekniska Högskolan i Jönköping inom [se huvudområde på föregående sida]. Författarna svarar själva för framförda åsikter, slutsatser och resultat. Examinator: Anders Adlemo

Handledare: Johannes Schmidt Omfattning: 15 hp (grundnivå) Datum: 19-12-01

(3)

Abstract

Purpose – The purpose of this study is partly to illustrate how the AES encryption methods ECB and CTR affect the computational speed when using the GPGPU framework Cuda, but also to clarify the advantages and disadvantages between the different AES encryption modes.

Method – A preliminary study was conducted to obtain empirical data on the AES encryption modes ECB and CTR. Data from the study has been analyzed and

compared to determine the various aspects of the AES encryption modes and to create a basis for determining the advantages and disadvantages between them. The

preliminary study has been carried out systematically by finding scientific works by searching databases within the subject.

An experiment has been used as a method to be able to extract execution time data for the GPGPU framework Cuda when processing the AES encryption modes.

Experiment were chosen as a method to gain control over the variables included in the study and to see how these variables change when they are consciously influenced.

Findings – The findings of the preliminary study show that CTR is more secure than the ECB, but also considerably more complex, which can lead to integrity risks when implementation is done incorrectly. In the experiment, computational speeds are produced when the CPU memory sends to the GPU memory, the encryption on the GPU and how long it takes for the GPU memory to send to the CPU memory. This is done for both CTR and ECB in encryption and decryption. The result of the analysis shows that the ECB is faster than CTR in encryption and decryption. The calculation speed is higher with the ECB compared to the CTR.

Implications – The experiment shows that CTR is slower than the ECB. But the most amount of time spent in encryption for both modes are the transfers between the CPU memory and the GPU memory.

Limitations – The file sizes of the files tested only goes up to about 1 gigabyte which gave small computation times.

Keywords – GPGPU, CTR, ECB, Cuda, AES, parallelization, GPGPU framework, processors, AES encryption method, Amazon EC2 P3, AWS

(4)

Sammanfattning

Syfte – Syftet med denna studie är dels att belysa hur AES-krypteringsmetoderna

ECB och CTR påverkar beräkningshastigheten vid användandet av

GPGPU-ramverket Cuda, men också att klarlägga fördelar och nackdelar mellan de olika AES-krypteringsmetoderna.

Metod – En förundersökning har genomförts för att ta fram empiriska data kring

AES-krypteringsmetoderna ECB och CTR. Data från förundersökningen har analyserats och jämförts för att bestämma de olika aspekterna i

AES-krypteringsmetoderna och skapa en grund för att avgöra fördelar och nackdelar mellan dem. Förundersökningen har genomförts systematiskt genom att ta fram vetenskapliga verk med sökning i databaser inom ämnet.

Ett experiment har använts som metod för att kunna extrahera exekveringstidsdata för GPGPU-ramverket Cuda vid beräkning av AES-krypteringsmetoderna. Experiment valdes som metod för att få kontroll över de variabler som ingår i studien och för att kunna se hur dessa variabler förändras när de medvetet påverkas utifrån.

Resultat – Resultatet av förundersökningen visar att CTR är säkrare än ECB, men

också betydligt mer komplex, vilket kan leda till integritetsrisker vid fel typ av implementering. I experimentet framställs beräkningshastigheter när CPU-minnet skickar till minnet, krypteringen på GPU och hur lång tid det tar för GPU-minnet att skicka till CPU-GPU-minnet. Detta görs för både CTR och ECB vid kryptering och dekryptering. Resultatet visar att ECB är snabbare än CTR vid kryptering och dekryptering. Beräkningshastigheten är högre med ECB jämfört med CTR.

Implikationer – Från experimentet går det att se CTR är långsammare än ECB. Men

det som tar längst tid i vid krypteringen i för båda metoderna är överföringarna mellan CPU-minnet och GPU-minnet.

Begränsningar – Filstorleken på filerna som testats går bara upp till ca 1 gigabyte

vilket gav små beräkningstider.

Nyckelord – GPGPU, CTR, ECB, Cuda, AES, parallellisering, GPGPU-ramverk,

(5)

Innehållsförteckning

Abstract ... i

Sammanfattning ... ii

Innehållsförteckning ... iii

1

Introduktion ... 1

1.1 BAKGRUND ... 1 1.2 PROBLEMBESKRIVNING ... 1

1.3 SYFTE OCH FRÅGESTÄLLNINGAR ... 2

1.4 OMFÅNG OCH AVGRÄNSNINGAR ... 2

1.5 DISPOSITION ... 3

2

Metod och genomförande ... 4

2.1 KOPPLING MELLAN FRÅGESTÄLLNINGAR OCH METOD ... 4

2.2 ARBETSPROCESSEN ... 5

Modell för förundersökning ... 5

Val mellan att skriva egen kod eller att använda existerande kod ... 5

Validering av kod ... 6

Val av AWS instans ... 7

2.3 DESIGN ... 7 Experimentmiljö ... 7 Experimentdesign ... 7 2.4 DATAINSAMLING ... 9 2.5 DATAANALYS ... 9 2.6 TROVÄRDIGHET ... 10

3

Teknisk bakgrund ... 11

3.1 GPGPU ... 11 3.2 AMAZON EC2P3 ... 11 3.3 AES ... 12 KeyExpantion ... 13 AddRoundKey ... 13 SubBytes ... 13 ShiftRows ... 13 MixColumms ... 13 3.4 ECB ... 14

(6)

3.5 CTR ... 15 3.6 CBC ... 16 3.7 CFB ... 17 3.8 OFB ... 18

4

Empiri ... 20

4.1 DATA FRÅN EXPERIMENT ... 20 4.2 ECB ... 20 4.3 CTR ... 25

5

Analys ... 30

5.1 VILKA FÖR OCH NACKDELAR FINNS DET HOS DE OLIKA AES-KRYPTERINGSMETODERNA ECB OCH CTR VID PARALLELLISERING? ... 30

5.2 HUR SKILJER SIG BERÄKNINGSHASTIGHETEN MELLAN ECB OCH CTR VID TILLÄMPNING AV GPPGPU-RAMVERKET CUDA? ... 32

6

Diskussion och slutsatser ... 39

6.1 RESULTAT ... 39

Resultat för analysen av vilka för och nackdelar det finns hos AES-krypteringsmetoderna ECB och CTR vid parallellisering ... 39

Resultat för analysen av hur beräkningshastigheten skiljer sig mellan ECB och CTR vid tillämpning av GPGU-ramverket Cuda ... 39

6.2 IMPLIKATIONER ... 39

6.3 BEGRÄNSNINGAR ... 40

6.4 SLUTSATSER OCH REKOMMENDATIONER ... 40

6.5 VIDARE FORSKNING ... 41

Referenser ... 42

(7)

1

Introduktion

Detta kapitel beskriver i korttext motiveringen bakom studien samt studiens syfte och dess slutgiltiga mål.

1.1

Bakgrund

Användningen av flerkärniga CPU:s,Central Processing Unit blir allt vanligare i stationära datorer, mobila datorer och andra enheter då klockfrekvensen närmar sig den teoretiska gränsen. Detta för att storleken på transistorer närmare sig gränsen för hur små de kan tillverkas, då avståndet mellan grindar inte kan vara mindre än en silikon-dioxidmolekyl [1].

Därför blir nyttjandet av flerkärniga processorer och parallellisering av mjukvara vanligare för att använda system så effektivt som möjligt [2]. I moderna datorer blir GPU, Graphical Processing Unit allt mer avancerad vilket gör det möjligt att utnyttja dess processorkraft för att underlätta krävande beräkningar. Den moderna GPU-tekniken ger nya möjligheter vid beräkningar, vilket kan leda till att system och beräkningar blir effektivare [2]. Moderna grafikprocessorer kan köra tusentals trådar samtidigt, vilket gör att de lämpar sig bra för optimering genom parallellisering av mjukvara [3].

För att utnyttja grafikprocessorns parallelliseringsfunktionalitet används ramverk som kallas för GPGPU, General-purpose Computing on Graphics Processing Units (se sida 11) [3]. Ett av de ramverk som skapats är Cuda, Compute Unified Device

Architecture (se sida 11), som är en parallell datorplattform och

programmeringsmodell utvecklad av NVIDIA för allmän databehandling på grafiska processorenheter [3]. I GPU-accelererade applikationer körs den sekventiella delen av arbetsbelastningen på CPU som är optimerad för enkeltrådig prestanda, medan den beräkningstunga delen av applikationen förs på tusentals GPU-kärnor parallellt [3].

1.2

Problembeskrivning

En av de vanligaste och säkraste krypteringsalgoritmerna är AES, Advanced

Encryption Standard [4] (se sida 12). AES-kryptering är en beräkningstung procedur vilket innebär att det krävs snabba processorer, alternativt flera processorer som körs parallellt med varandra för att det inte ska ta för lång tid att kryptera stora filer [4]. Genom att tillämpa grafikkortsprogrammering för att implementera AES-kryptering kan man avsevärt sänka krypteringstiderna på stora filer, i jämförelse med att använda sig av en vanlig CPU [5]. Intresset för att tillämpa GPGPU för att implementera tunga beräkningar har därför ökat de senaste åren [2]. Det finns flera GPGPU-ramverk och AES-krypteringsmetoder, denna studie skall belysa vilken av metoderna ECB, Electronic Code Block (se sida 4) och CTR, Counter (se sida 4) som är lämpligast att använda vid kryptering av filer vid ett visst storleksintervall då GPGPU-ramverket Cuda används.

AES-krypteringsmetoder är varianter av AES-krypteringsalgoritmen [6]. Dessa metoder är alla blockskiffer som delar upp oformaterade data i block och krypterar data med transformationsrundor. Arbetet i transformationsrundorna är det som skiljer

(8)

metoderna åt [7]. AES-krypteringsmetoderna ECB och CTR med fler tillhör de vanligaste metoderna som används idag, det är dock bara ECB och CTR som går att parallellisera då transformationsrundorna i metoderna inte bygger på föregående transformationsrunda [7].

1.3

Syfte och frågeställningar

GPGPU kan användas för att nyttja parallellisering för vissa processer. För att optimera beräkningshastigheten vid AES-kryptering kan GPGPU tillämpas. Med GPGPU går det att öka dataöverföringshastigheter och eventuellt öka hastigheten vid kryptering.

Uppgiften är att undersöka GPGPU ramverket Cuda när olika

AES-krypteringsmetoder tillämpas för att se eventuella skillnader i beräkningshastighet vid kryptering av filer med olika filstorlekar. Undersökningen ska också omfatta en jämförelse av fördelar och nackdelar mellan AES-krypteringsmetoderna ECB och CTR vid tillämpning av GPGPU-ramverket Cuda.

Syftet med denna studie är dels att belysa hur AES-krypteringsmetoderna ECB och CTR påverkar beräkningshastigheten vid användandet av GPGPU-ramverket Cuda, men också att klarlägga fördelar och nackdelar mellan de olika

AES-krypteringsmetoderna vid olika scenarion av krypteringsoptimering då grafikkortsprogrammering används.

För att undersöka skillnader mellan AES-krypteringsmetoderna ECB och CTR, som är de vanligaste metoder som går att parallellisera [7], har denna frågeställning tagits fram:

• Vilka för och nackdelar finns det för AES-krypteringsmetoderna ECB och CTR vid parallellisering?

En viktig faktor som valts att undersökas är beräkningshastigheten mellan de valda AES-metoderna för att se hur beräkningshastigheten påverkar den totala

effektiviteten. Följande fråga har tagits fram för att besvara hur de olika

AES-metoderna skiljer sig i hastighet när de används för att kryptera filer av olika storlekar i en parallelliserad miljö:

• Hur skiljer sig beräkningshastigheten mellan ECB och CTR vid tillämpning av GPGPU-ramverket Cuda?

1.4

Omfång och avgränsningar

Vi kommer endast att använda och jämföra AES-krypteringsmetoderna ECB och CTR på AWS, Amazon Web Services (se sida 11), EC2, Amazon Accelerated Computing Instances vilket är en online tjänst där det går att hyra in sig på ett grafikkort via Amazon Web Services.

Vi kommer även bara att utföra experimenten med en 128-bitars nyckel då det är den vanligaste nyckelstorleken [7].

(9)

1.5

Disposition

Metod och genomförande

I detta avsnitt beskrivs kopplingen mellan frågeställningar och metodval, hur arbetsprocessen sett ut samt designen av förundersökning och experiment.

Teknisk bakgrund

Här finns mer detaljerad information kring hur GPGPU-ramverket Cuda, Amazons EC2P3 instans samt AES-kryptering och dess olika krypteringsmetoder fungerar.

Empiri

Detta avsnitt innehåller en presentation av insamlade data från experimentet i diagram och tabeller.

Analys

Här analyseras data insamlad i förundersökning och experiment för att skapa en grund till att besvara frågeställningarna.

Diskussion och slutsatser

I detta avsnitt diskuteras resultatet av analysen och med hjälp av analyserade data dras slutsatser kring frågeställningarna.

Referenser

Här finns en referenslista på de referenser som används i studien.

Bilagor

Här hittas alla bilagor som tillhör studien. Bilagorna omfattar rådata och kod för algoritmer som används i experimentet.

(10)

2

Metod och genomförande

Kapitlet ger en översiktlig beskrivning av studiens arbetsprocess. Vidare beskrivs studiens ansats och design. Därtill beskrivs studiens datainsamling och dataanalys. Kapitlet avslutas med en diskussion kring studiens trovärdighet.

2.1

Koppling mellan frågeställningar och metod

En förundersökning ska genomföras för att ta fram empiriska data kring fördelar och nackdelar mellan AES-krypteringsmetoderna ECB och CTR. Data från

förundersökningen skall sedan analyseras och jämföras för att bestämma de olika aspekterna i ovannämnda AES-krypteringsmetoder och skapa en grund för att avgöra fördelar och nackdelar mellan dem. Förundersökningen skall genomföras systematiskt genom att ta fram vetenskapliga verk med sökning i databaser inom ämnet.

För att besvara hur beräkningshastigheten skiljer sig mellan

AES-krypteringsmetoderna ECB och CTR kommer ett experiment att användas som metod för att kunna extrahera exekveringstidsdata för GPGPU-ramverket Cuda vid

beräkning av AES-krypteringsmetoderna. Experiment har valts som metod för att få kontroll över de variabler som ingår i studien och för att kunna se hur dessa variabler förändras när de medvetet påverkas utifrån.

Vid utförandet av ett experiment kan påverkan på en beroende variabel vid

manipulation av en oberoende variabel studeras [8]. Detta innebär en stor fördel för denna studie, där påverkan på beräkningshastigheten för AES-krypteringsmetoderna ECB och CTR skall undersökas då filstorleken på den fil som skall krypteras

manipuleras. För att kunna generalisera resultaten i ett experiment måste det finnas en försäkring om att det inte finns speciella faktorer som kan påverka resultatet [8]. Detta skulle kunna vara till exempel att en av implementationerna är mindre optimerad än den andra eller att hårdvaran inte arbetar lika effektivt vid olika mätningar, till exempel vid temperaturförändringar. För att undvika att speciella faktorer påverkar resultatet ska alla mätningar utföras på samma uppsättning av hårdvara och

kodstruktur. Implementeringen av algoritmerna skall alltså allokera minne, iterera och mäta hastigheter på samma sätt. Det enda som skall skilja mellan algoritmernas implementering är skillnaden i algoritmen. Hårdvaran skall dessutom vara placerad i ett rum där temperaturen är konstant vid samtliga mätningar.

Den data som genereras av experimentet skall sedan utvärderas och presenteras som en jämförelse för att kunna se för och nackdelar, samt för att kunna se skillnader i beräkningshastighet mellan de två AES-krypteringsmetoderna.

De undersökningsvariabler som ingår i experimentet är exekveringstid, AES-krypteringsmetod och filstorlek där exekveringstiden är en beroende variabel och AES-krypteringsmetod samt filstorlek är oberoende variabler. Experimentet kommer att utföras på 2 experimentgrupper. Experimentgrupperna skall vara fördelade på följande sätt:

1. ECB som krypteringsmetod och filstorlek är oberoende variabler. Exekveringstiden är beroende variabel.

2. CTR som krypteringsmetod och filstorlek är oberoende variabler. Exekveringstiden är beroende variabel.

(11)

Experimentet ska generera kvantitativa data. Denna data skall vara exekveringstider i millisekunder, minnesallokeringstider mellan CPU och GPU i millisekunder samt datahastighet i Gb/s. Filstorlekarna skall mätas i Kb.

2.2

Arbetsprocessen

Modell för förundersökning

Valet av modell för förundersökningen togs fram genom boken Metodelvag og

metodebruk av Holme och Solvang [9] och beslutet blev att göra en kvalitativ

förundersökning eftersom det är viktigt att få en djupare förståelse om AES

krypteringsmetoderna ECB och CTR för att kunna jämföra karakteristiska skillnader mellan dem. En systematisk arbetsprocess togs fram för att samla information om de olika AES-krypteringsmetoderna och på så vis inte bara få in information om hur de fungerar parallellt, men också få in information om hur de fungerar generellt. Det systematiska arbetssättet användes också för att filtrera den insamlade informationen i ett senare skede av processen för att få fram den relevanta informationen som kan användas för att besvara de forskningsfrågor som studien vill besvara.

Val mellan att skriva egen kod eller att använda existerande kod För att göra valet mellan att skriva egen kod för AES-krypteringsmetoderna ECB och CTR på GPGPU-ramverket Cuda eller att använda sig av redan existerande kod för att kunna göra valda mätningar valdes tre olika kriterier:

• Tid

• Dokumentation

• Hur välskriven koden är

Tid har valts att ha som kriterium då studien är tidsbegränsad och om för mycket tid skulle läggas på att skriva egen kod, är det väldigt stor sannolikhet att denna studie inte blir färdigställd inom den tiden som är utsatt. Det är då viktigt att den kod som används är väldokumenterad så att även personer som inte varit med i utvecklandet kan förstå vad det är t.ex. en funktion gör eller liknande. Detta leder även till tidsbesparing då genomgång av hela koden inte behövs för att förstå vad det är den gör eller ska göra. Koden ska även vara begriplig så att den blir lätt att förstå med hjälp av dokumentationen och att den går att använda och enkelt modifiera för att matcha studiens behov.

Tre olika projekt valdes och genom att undersöka projekten utefter de valda

kriterierna valdes ett av dessa projekt ut att användas i studien. De tre projekten som undersöktes var från Johannes Gilger & Paolo Margara [10] från 2012, Allen Lee [11] från 2016 och G.Chaw & B.Syrowik [12] från 2105.Valet blev att använda redan existerande kod då projektet av utvecklarna G.Chaw & B.Syrowik [12] från 2015 uppfyllde de kriterier som tagits fram. Projektet innehåller det valda GPGPU-ramverket Cuda och valdes för att:

(12)

• Tid: Koden är uppbyggd för Cuda med AES-krypteringsmetoden CTR. • Dokumentation: Projektet är väldokumenterat och innehåller en ”readme-fil”

där det står hur projektet används samt ger exempel på hur det används. Det är även många kommentarer i koden som gör det enklare att förstå vad koden gör, samt hur den fungerar.

• Hur välskriven koden är: Det finns välskrivna kommentarer till funktionerna som gör det enklare att förstå vad funktionerna är till för och vad dem ska göra. Detta gör det enklare att förstå koden.

Projekten från utvecklarna Johannes Gilger & Paolo Margara [10] bedömdes otillräcklig då det inte uppfyllde kriterierna för dokumentation, även projektet av utvecklaren Allen Lee [11] bedömdes otillräcklig då det inte uppfyllde kriteriet för hur välskriven koden är.

En egen kod för AES-krypteringsmetoden ECB kommer att tas fram genom att modifiera kod i projektet av utvecklarna G.Chaw & B.Syrowik [12] och använda några av de redan existerande funktioner som finns i projektet. Detta görs för att det tar för lång tid att skriva egen kod, men att använda redan existerande funktioner kommer att vara möjligt då det inte tar lika lång tid.

Validering av kod

För att kunna vara säkra på att den valda koden för GPGPU-ramverket Cuda är implementerad på ett korrekt sätt, testades varje enskild funktion och jämfördes med hur den borde vara implementerad. Jämförelserna görs genom att jämföra AES-krypteringsfunktionerna ShiftRows, MixColumms, SubBytes, AddRoundKey som finns under beskrivna i avsnittet teknisk bakgrund, där det står hur respektive funktion fungerar. För att kunna se om koden verkligen fungerar skapades en textfil som kopierades, då krypteringsmjukvaran gör om den ena textfilen när den krypterar och dekrypterar den, behövdes en kopia på originalet. Jämförelser gjordes då med Linux-kommandot ”cmp” som jämför två filer och gör en utskrift som förklarar om de är lika eller olika. Detta görs på båda AES-krypteringsmetoderna ECB och CTR (se figur 1 och 2).

(13)

Figur 2. En jämförelse mellan originalfilen och den dekrypterade filen

Val av AWS instans

I AWS, Amazon Web Services går det att välja en virtuell miljö som heter EC2 som tillhandahåller tjänst för virtuella maskiner med valda hårdvaruspecifikationer. Hårdvaran bestäms genom att välja instanstyp. Där kan man välja att lägga till något som heter P3, vilket är en variant av en EC2 instans där systemet är utformat för att kunna nyttja parallellisering. EC2 valdes för att kunna utföra testerna med så hög kvalitet på hårdvaran som möjligt.

På instansen körs operativsystemet Amazon Linux AMI då den dels ingår i Amazons gratis paket och dels för att den är anpassad för att köra med EC2 P3 konfigurationen.

2.3

Design

Experimentmiljö

Den virtuella miljö som valts att utföra experimentet i har följande specifikationer:

Processor Operativsystem Grafikkort RAM Mjukvara

Intel Xeon E5-2686 v4, 2,3 GHz Amazon Linux AMI NVIDIA Tesla V100 61 GiB Cuda

Tabell 1. Specifikationer för den virtuella miljön

Den virtuella maskinen körs som en AWS EC2 P3 instans. Experimentdesign

För att mäta krypteringshastighet och dekrypteringshastighet på de olika filstorlekarna har olika mätpunkter kodats in i krypteringsmjukvaran, dvs vid mätpunkten skickas en händelse (event) till Cudas API som mäter tiden mellan två punkter i exekveringen (se figur 3). Dessa mätpunkter har placerats vid dataöverföring från CPU-minnet till GPU-minnet, vid GPU-beräkning av krypteringsalgoritmen samt vid dataöverföring från GPU-minnet till CPU-minnet.

(14)

Figur 3. Händelse för mätning av exekveringstid

Mätningarna utfördes på olika filstorlekar genom att köra ett Bash-script (se bilaga 2). I Bash-scriptet skapas två textfiler med slumpmässig text och fördefinierad storlek, sedan körs både kryptering och dekryptering med ECB metoden på en av textfilerna och med CTR metoden på den andra textfilen. Resultatet av operationen, dvs

utskriften från krypteringsmjukvaran, skrivs till en textfil. Detta upprepas i 18 iterationer där storleken på de textfiler som skapas fördubblas. De storlekar på textfilerna som skapas av bash-scriptet går från 8 Kb till 1 048 576 Kb (ca 1,05 Gb). Detta script kördes tjugo gånger, vilket resulterade i tjugo olika resultatfiler.

För att sammanställa den data som extraherats från krypteringsmjukvaran, gjordes ett Python-script som tolkar resultatfilerna (se figur 4), sammanställer tiderna genom att beräkna ett medelvärde för varje filstorlek mellan de tjugo olika resultatfilerna och presenterar data i ett Excellark (se figur 5). Utifrån data i Excellarket kunde sedan diagram framställas.

Figur 4. Tolkning av resultat

(15)

2.4

Datainsamling

Data för förundersökningen som ska användas för att besvara frågeställningen ” Vilka för och nackdelar finns det mellan AES-krypteringsmetoderna ECB och CTR vid parallellisering?” samlades in med följande söktermer och verktyg:

Sökord: AES, EBC, CTR, AES+ECB, AES+CTR, CTR+PARALLEL, AES+MODE, AES+ECB+PARALLEL, ECB+ENCRYPTION, AES+IMPLEMENT*, AES+CUDA, ELECTRONIC CODE BLOCK, AES+COUNTER, ADNVACED ENCRYPTION STANDARD. Sökmotorer: Jönköping University bibliotek, PRIMO, Google Scholar

Databaser: IEEE Xplorer, SpringerLink, arXiv

Sökningarna som gjordes gav stora resultat inom ämnet. Strukturen för sökningarna var att börja med ett ord och därefter lägga till ett ord i taget för att fokusera

sökningen. Denna metod för datainsamling vid en förundersökning ska enligt

Forskningsmetodikens grunder av Patel och Davidsson [8]ge både generell och preciserande data och förutsättningar för att genomföra en stud1ie. Valet att inte använda många sökord i början gjordes för att ge en större överblick inom ämnet och inte bara för att få fram artiklar om hur AES-krypteringsmetoder fungerar i

parallelliseringsbar miljö.

Ett urval på 23 olika artiklar valdes först ut genom att läsa sammanfattningen i varje enskild artikel. Därefter gjordes ett nytt urval där 11 valdes efter att ha läst de 23 artiklar från det första urvalet. Dessa 11 artiklar [7]-[9]-[12-20] används för att göra förundersökningen. Dessa artiklar valdes för att de innehöll tidigare experiment där kryptering implementerats med GPGPU, ingående detaljer kring

krypteringsmetoderna som berör denna studie samt tekniska detaljer kring AES-kryptering och datahastighet.

2.5

Dataanalys

All data från experimentet sammanställdes i ett Excel dokument för att kunna skapa olika diagram av insamlade data. För att kunna tolka den obearbetade rådata som genererats av experimentet, då bestående av mätningar i millisekunder, exporterades all data till ett Excellark med hjälp av ett Python script. Mätningarna visar hur lång tid det tar att skicka från CPU-minnet till GPU-minnet, hur lång tid krypteringen tar på GPU och hur lång tid det tar att skicka från GPU-minnet till CPU-minnet för AES-krypteringsmetoderna ECB och CTR. Detta kommer presenteras för varje filstorlek som valts att utföra experimentet på. Alla mätningar görs tjugo gånger men det är bara medelvärdet av dem tjugo gångerna som presenteras i Excel dokumentet då

medelvärdet tas fram i Python scriptet innan den lägger in värdet i Excel dokumentet. När scriptet har kört klart och all data ligger i Excel dokumentet kommer den totala krypteringstiden och dekrypteringstiden som består av tiden från det att data börjas skicka från CPU tills att den kommit tillbaka till CPU från GPU för respektive AES-krypteringsmetod att tas fram. Därefter går det att ta fram krypteringshastigheten för respektive AES-krypteringsmetod.

(16)

En regressionsanalys gjordes för att hitta de bakomliggande faktorer som påverkar resultatet. De faktorer som analyserades är skillnaderna i krypteringsalgoritmen mellan ECB och CTR och de för och nackdelar mellan AES-krypteringsmetoderna som är en följd av dessa skillnader i algoritmen.

2.6

Trovärdighet

Intern mätning användes i experimentet för att öka trovärdigheten och för att verifiera resultaten. När kvantitativa mätningar görs ska enligtForskningsmetodikens grunder

av Patel och Davidsson [8], numeriska värden till mätningarna tilldelas på ett entydigt sätt för att minska osäkerheten vid insamlandet av data. Värden har därför samma enhet vid alla mätningar, och alla mätningar som jämförs med varandra tillhör samma skala. För att höja reliabiliteten kördes mätningarna tjugo gånger på respektive storlek för att få ut så konsistent data som möjligt. Att använda medelvärde väljs för att skillnaden på mätvärdena inte avviker mycket från varandra då enligt framtagen standardavvikelse för samtliga mätningar (se bilaga 2 och 3).

Patel och Davidsson [8] hävdar att det går att uppnå en högre validitet genom att säkerställa innehållsvaliditeten och den samtliga validiteten. I studien görs ett försök till att säkerställa innehållsvaliditeten genom att noggrant studera den bakomliggande teorin av GPGPU programmering, AES och dess krypteringsmetoder. För att

säkerställa den samtliga validiteten testades API anropen för mätpunkterna och jämfördes med dokumentationen för API anropen.

För att verifiera om dataöverföringshastigheterna är rimliga har Nvidia tagit fram exempelkod för Cuda. För att använda exempelkoden för Cuda måste CudaToolkit laddas ned, vilket går att göra från Nvidias hemsida. Med hjälp av exempelkoden kunde trovärdigheten på överföringshastigheten testas genom att i exempelkoden testa att föra över filer av olika storlekar. Dessa tester gav liknande resultat som i

(17)

3

Teknisk bakgrund

Kapitlet ger en teknisk grund och förklaringsansats till studien och det syfte och frågeställningar som formulerats.

3.1

GPGPU

GPGPU, General-purpose computing on graphics processing units är att grafikprocessorn som ska göra grafiska beräkningar istället nyttjas för att göra allmänna beräkningar som annars görs av CPU. Detta görs för att nyttja

grafikkortsprocessorns parallellberäkningsförmåga så att tunga beräkningar kan utföras snabbare.

Vanligtvis används en GPU vid grafisk bearbetning och har två huvudsakliga

kännetecken. Det ena kännetecknet är att den använder sig av hundratals enkla kärnor parallellt vid bearbetning vilket innebär avsevärd ökad prestanda, det andra är att den har ett brett minnesband vilket resulterar i hög dataöverföringskvalitet [5]. Konceptet GPGPU kom då prestandan i grafikprocessorer började utnyttjas vid andra områden än grafikprocesser [5]. Intresset av att utnyttja kraften i grafikprocessorer för att snabbt lösa krävande problem har fortsatt att ökat sedan Cuda släpptes av NVIDIA år 2006 fram till idag [2]-[21].

Cuda, Compute Unifield Device Architecture en arkitektur för parallellbearbetning av data i NVIDIA:s grafikprocessorer. Detta innebär att datorn kan använda GPU för att hjälpa CPU då det finns mer beräkningskapacitet i grafikkortsprocessorn. Cuda är designat för att fungera med programmeringsspråken C, C++ och Fortran. Cuda har tillägg till standard C, C++ och Fortran [22] för att möjliggöra heterogen

programmering och tillhandahåller API:s för hantering av enheter, minnen etcetera. Heterogeneous Computing sker mellan host (CPU och dess minne) och device (GPU och dess minne). Heterogeneous Computing innebär att mer än en typ av processor eller kärna används.

Processflödet vid tillämpning av Cuda börjar med att data kopieras från CPU-minnet till GPU-minnet, sedan laddas GPU-koden in och körs, med utnyttjandet av parallella trådar. GPU-cashminnet utnyttjas för att öka prestandan. Efter att beräkningar har utförts av GPU, kopieras resultatet från GPU-minnet till CPU-minnet.

3.2

Amazon EC2 P3

Amazon EC2, Amazon Accelerated Computing Instances är en tjänst hos Amazon Web Services som finns för att öka grafikprestandan och man kan själv välja hur mycket grafikkortsminne som man vill använda. Man får då betala en summa beroende på hur mycket data som används.

P3 instansen är en instans där NVIDIA Tesla v100 GPU kan nyttjas, som är designad för användandet av GPGPU-ramverken Cuda och OpenCL.

Detta kommer att användas för att kunna utföra experimentet på en kraftfull GPU och då se hur de olika beräkningstiderna skiljer sig.

(18)

3.3

AES

AES, Advanced Encryption Standard är en standardiserad krypteringsalgoritm som bygger på krypteringsalgoritmen Rijndael och som blev fastslagen av NIST den 26 november 2001.

Data som ska krypteras delas upp i 128 bitars binära eller hexadecimala block som kallas för ”plaintext”. Därefter krypteras varje block och kallas då för ”ciphertext”. Detta innebär att ”ciphertext 1” är det krypterade blocket av ”plaintext 1”.

AES är ett symmetriskt blockkrypto som använder sig av längderna 128, 192 och 256 bit i krypteringsnycklarna. Storleken på nyckeln avgör hur många cykler algoritmen kommer att köras, vilket är 10, 12 eller 14 cykler. En cykel består av de fyra stegen SubByte, ShiftRows, MixColumns och AddRoundKey [6]. I sista rundan görs inte MixColums och innan cyklarna börjar måste en Key Expantion göras, se [6, Fig 6]. En blockskiffer bearbetar oformaterad text av en fördefinierad längd, som kallas blockstorlek. Om längden på den oformaterade texten är större en blockstorleken, måste den delas ned till flera block. Vanligtvis måste texten för det sista blocket också förlängas eller sträckas ut för att matcha blockstorleken [6]. AES-krypteringsmetoder är olika beskrivningar på sätt som oformaterad text som har en större storlek än blockstorleken hanteras på. De ger också fördelar som hjälper till med äkthet, integritet och sekretess.

(19)

KeyExpantion

AES algoritmen tar en skiffernyckel och utför en schemalagd nyckelalgoritm för att generera nycklar för cyklarna.

Antalet cyklar som måste köras är relaterat till hur stor den expanderade nyckeln är. AddRoundKey

Addroundkey utförs vid varje transformationsrunda och innebär att de 16 bytes som finns i blocket går igenom en XOR-grind med den 16 bytes långa cykelnyckeln.

SubBytes

SubBytes är en transformationsrunda där de 16 bytes som finns i blocket blir utbytta enligt en tvådimensionell 15x15 stor tabell som kallas Substitution Box (S-box). Resultatet blir sedan en matris med fyra rader och fyra kolumner. De fyra första bits i den byte som skapas används som index för rader och de fyra sista bits används som index för kolumner.

ShiftRows

ShiftRows är en transformationsrunda där varje rad i den S-box som skapas genom SubBytes skiftar. Första randen skiftas inte, andra raden skiftas en byteposition till vänster, tredje raden skiftar två positioner till vänster och den fjärde raden skiftas tre positioner till vänster. Detta innebär att slutresultatet av ShiftRows-rundan innehåller samma 16 bytes fast skiftade.

MixColumms

I MixColumms operationen behandlas varje kolumn som ett fyra-termigt polynomtal där: C(X) = {03}X3 + {01}X2 + {01}X + {02}.

Kolumnerna multipliceras sedan med ett fast polynomtal. Detta gör att MixColumms-operationen är den primära diffusionsrundan och tar fyra bytes för en kolumn som input och fyra bytes som output, som ersätter original kolumnen. Resultatet blir en ny matris som består av 16 nya bytes.

(20)

3.4

ECB

ECB, Electronic Code Bock är en AES-krypteringsmetod som använder sig av symmetrisk blockskiffer i grundläggande form, där varje block krypteras var för sig, se [23, Fig 7] - [23, Fig 8]. Den största nackdelen med ECB är att identiska block kommer att krypteras till identiska skiffertextblock. Detta kan leda till att mönster i den data som krypteras kan leda till svagheter i kryptering. ECB är den enklaste metoden att implementera [7].

Eftersom varje block krypteras var för sig går det att utnyttja parallellisering. ECB krypterar enligt:

Figur 7. Visualisering av kryptering med ECB-metoden

Figur 8. Visualisering av dekryptering med ECB-metoden

I ECB-metoden krypteras varje block av oformaterad text separat och eftersom varje block behandlas av AES-krypteringsalgoritmen enskilt kan ECB-metoden utnyttjas i parallella strukturer, vilket gör att den kan användas för att kryptera och dekryptera väldigt snabbt [7]. Att varje enskilt block krypteras var för sig kan dock vara en nackdel då det går att byta ut ett uppfångat block mot något annat utan att bli

upptäckt, vilket kan göra att det går att knäcka algoritmen utan nyckeln. Denna stora säkerhetsbrist kallas blocksjälvständighetsproblemet (block independency problem). Förutom detta problem finns problemet att identiskt oformaterad text blir krypterat till identiska skifferblock vilket innebär att data mönster som finns i bland annat bilder inte kan krypteras med säkerhet i ECB [13]. Problemen kan dock lösas utan att kompromissa med fördelarna i ECB. Detta genom att ge värdefunktioner till

(21)

bytepositionerna. Eftersom alla bytes har olika positioner kommer dessa värden vara olika, vilket tar bort problemet med identiska block. Ett annat sätt är att ändra små delar inuti blocken, då gör algoritmen resten av jobbet och blocken blir inte längre identiska [13].

I en annan artikel beskriver Huang et al. [14] två lösningar till

blocksjälvständighetsproblemet. I artikeln har dem kringgått detta genom att ändra dem färger som är likadana, eller ta bort dem. För att ta bort identiskt data används bildkomprimering innan kryptering. Genom att använda sig av bildkomprimering och bildkompression minskar man tiden det tar för processorn för att filen är mindre än tidigare.

För att ändra identiskt indata innan kryptering använde Huang et al. [14] tre nummersekvenser, som är ett sekvensnummer från en räknare, ett icke-sekventiellt nummer från ackumulatorn och dem slumpmässigt genererade siffrorna genererade från själva skiffer-funktionen. Dessa tre nummersekvenser adderas med bildens input data genom att använda sig av olika additionsmetoder, vilket resulterar i olika typer av operationer, där fyra är definierade i NIST-publikationer sen tidigare.

Dessa två metoder visar sig vara väldigt bra för att modifiera ECB-metoden [14].

3.5

CTR

CTR, Counter mode använder sig av en räknare som börjar med ett startvärde tillsammans med ett slumpmässigt tal istället för att använda ett skiftregister för att generera en nyckelström. Nyckelströmmen blir sedan jämförd tillsammans med texten i en XOR (Exklusiv disjunktion) för att generera en skiffertext [7] se [23, Fig 9] – [23, Fig 10]. Från ett säkerhetsperspektiv är CTR en av de säkraste metoderna för AES-kryptering [18]-[19], CTR ger dock inte någon integritetstjänst, vilket är en nackdel [7]. Eftersom CTR-metoden i likhet med ECB-metoden inte bygger krypteringen av block på föregående skifferblock, kan CTR-metoden med fördel användas i

parallelliserade miljöer [7]-[19]. CTR krypterar enligt:

(22)

Figur 10. Visualisering av dekryptering med CTR-metoden.

AES-krypteringsmetoden CTR, Counter Mode tar fram skiffertext genom en bitwise XOR mellan block av oformaterad text och en serie av kryptografiska utfyllningar av blocken. De kryptografiska utfyllningarna hämtas från användandet av en räknare som startas med ett pseudo-slumpmässigt framtaget värde som sekvensmässigt

inkrementeras för varje nytt block i krypteringsserien [18]. Räknare måste vare specifika för varje enskilt block, inte bara inom samma meddelande utan mellan olika meddelanden som är krypterade med samma nyckel [19]. AES-CTR behandlar den oformaterade texten genom att texten går igenom ett visst antal krypteringscykler där antalet cykler beror på blockstorleken. Inuti varje cykel bearbetas data i fyra olika steg, XOR, bytesubstitution, byteskifte och kolumn mix. Enligt en artikel av Tran et

al. [20] finns flera olika sätt att parallellisera CTR-metoden, varav ett är att

parallellisera de fyra ovannämnda stegen genom att dedicera trådar till var och en av dem.

Ett annat sätt att parallellisera AES-CTR är att parallellisera varje enskilt block, vilket kallas ”fine-grain” metoden. Problemet med denna metod är dock att den leder till synkroniseringsproblem och ”false-sharing” problem på grund av att åtkomster till samma cacheblock sker samtidigt [20].

Vidare föreslår Tran et al. [20] AES-CTR med ”coarse-grain” som ett tredje

tillvägagångsätt. Med coarse-grain-metoden parallelliseras AES-CTR algoritmen på blocknivå fast flera block per tråd. Denna metod kan vara fördelaktig när kryptering skall appliceras en nätverksbaserad applikation. En nätverksnod tar oftast emot flera block av data, och med coarse-grain-metoden kan kryptering ske på flera olika block med flera olika trådar. Till exempel om nätverksnoden tar emot N stycken block och fyra trådar används för kryptering, krypteras fyra block samtidigt och proceduren återupprepas då N/4 gånger. Denna metod ökar inte hastigheten för krypteringen för ett enskilt block utan snarare dividerar antalet block på ett givet antal trådar. Fördelen med denna metod är man undviker synkroniseringsproblemen som finns i fine-grain-metoden [20].

3.6

CBC

CBC, Cypher Block Chaining metoden löser de svagheter som hittas i till exempel ECB och reducerar sannolikheten för att det uppstår mönster i skiffertexten [7]. I CBC

(23)

metoden används XOR med föregående block innan krypteringen av ett block. Det första blocket blir XORad med en startvektor, se [23, Fig 11] – [23, Fig 12]. Detta innebär att om vanligt förekommande mönster i den oformaterade texten blir unika tack vare startvektorn. CBC kräver mer processortid än ECB på grund av dess kedjemekanism [7]. Till skillnad från ECB kan CBC inte nyttja parallellisering vid kryptering. Däremot kan CBC användas för dekryptering i en parallelliserad miljö [7].

Figur 11. Visualisering av kryptering med CBC-metoden

Figur 12. Visualisering av dekryptering med CBC-metoden

3.7

CFB

I CFB, Cipher Feedback metoden blir oformaterad text XORad med en del av den krypterade texten som blivit inmatad i ett skiftregister [7], se [23, Fig 13] – [23, Fig 14]. CFB metoden krypterar enligt följande:

(24)

Figur 13. Visualisering av kryptering med CFB-metoden

Figur 14. Visualisering av dekryptering med CFB-metoden

I formeln är 𝑀𝑠[𝐸𝑘(𝑅𝑖)] är den mest signifikanta biten av det krypterade värdet av 𝑅𝑖. Processen repeteras till skiffertexten är färdigställd. Eftersom den krypterade texten baseras på föregående skiffertextblock kan CFB inte användas i parallellisering [7].

3.8

OFB

OFB, Output Feedback metoden liknar CFB metoden men istället för att använda 𝐶𝑖 för att uppdatera skiftregistret användes den valda delen från föregående

krypteringsmodul för att mata registret [7]. Först används en slumpmässig vektor som blir uppdaterad genom att skifta 𝑀𝑠[𝐸𝑘(𝑅𝑖)] bitarna för varje block, se [23, Fig 15]. Detta innebär OFB krypterar enligt:

(25)

Figur 15. Visualisering av kryptering med OFB-metoden.

På grund av symmetrin i XOR operationerna sker kryptering och dekryptering med samma formel [7]. Till skillnad från CFB behöver inte OFB lägga till en förlängning i sista blocket. Kan inte parallelliseras [7].

(26)

4

Empiri

Kapitlet ger en översiktlig beskrivning av den empiriska domän som ligger till grund för denna studie. Vidare beskrivs empirin som samlats in för att ge svar på studiens frågeställningar.

4.1

Data från experiment

I detta kapitel kommer data från experimentet att presenteras för ECB och CTR. Den data som presenteras är medelvärden från tjugo olika mätningar per filstorlek och mätpunkt (se bilaga 1).

4.2

ECB

Här presenteras den data som genererats då AES-krypteringsmetoden ECB har använts i experimentet.

Tabell 2. Tidsresultat för ECB

Första kolumnen i Tabell 2 (Size) visar vilken filstorlek med slumpmässigt genererade data som mätningarna gjorts på. Filstorleken är uppmätt i enheten kilobyte och

resterande värden är uppmätta i enheten millisekunder. Den andra kolumnen (HtoD_e) visar mätvärden för hur lång tid det tar att skicka oformaterade data från CPU-minnet till GPU-minnet (Host to Device) vid kryptering. Den tredje kolumnen (Kernel_e) visar hur lång tid det tar för GPU att utföra själva krypteringen (Kernel time) på den valda filen. Fjärde kolumnen (DtoH_e) visar hur lång tid det tar att skicka krypterade data från GPU-minnet till CPU-minnet (Device to Host). Den femte kolumnen (HtoD_d) visar mätvärden för hur lång tid det tar att skicka krypterade data från CPU-minnet till GPU-minnet (Host to Device) vid dekryptering. Den sjätte kolumnen (Kernel_d) visar hur lång tid det tar för GPU att utföra själva dekrypteringen (Kernel time) på den valda filen. Sjunde kolumnen (DtoH_d) visar hur lång tid det tar att skicka den dekrypterade texten från GPU-minnet till CPU-minnet (Device to Host). Den åttonde kolumnen (Total_e) visar den totala krypteringstiden,

(27)

dvs hur lång tid det tar för CPU-minnet att skicka oformaterade data till GPU-minnet och få tillbaka den krypterad. Kolumn nio (Total_d) visar hur lång tid som uppmätts när CPU-minnet skickar krypterade data till GPU-minnet och får tillbaka den

dekrypterad.

Tabell 3. Visar hastigheten för kryptering och dekryptering med ECB

Första kolumnen i Tabell 3 (Size) visar vilken filstorlek med slumpmässigt genererade data som mätningarna gjorts på. Den andra kolumnen (Gb/s_e) visar

överföringshastigheten i gigabyte per sekund vid kryptering och är framtagen genom att dela filstorleken på den totala krypteringstiden. Tredje kolumnen (Gb/s_d) visar överföringshastigheten i gigabyte per sekund vid dekryptering och är framtagen genom att dela filstorleken på den totala dekrypteringstiden.

(28)

Figur 16. Tiden för kryptering med ECB

Figur 16 visar hur tiden stiger linjärt vid kryptering när storleken på filen fördubblas.

Figur 17. Tiden för dekryptering med ECB

Figur 17 visar hur tiden stiger linjärt vid dekryptering när storleken på filen fördubblas. 0 0,05 0,1 0,15 0,2 0,25 0,3 0,35 0,4 0,45 0 200000 400000 600000 800000 1000000 1200000 Tid (ms ) Storlek (kb)

ECB Kernel_e

0 0,05 0,1 0,15 0,2 0,25 0,3 0,35 0,4 0 200000 400000 600000 800000 1000000 1200000 Tid (ms ) Storlek (kb)

ECB Kernel_d

(29)

Figur 18. Hastigheten för kryptering med ECB

Figur 18 visar hur hastigheten ökar vid kryptering då filstorleken ökar.

Figur 19. Hastigheten för dekryptering med ECB

Figur 19 visar hur hastigheten ökar vid dekryptering då filstorleken ökar.

0 500 1000 1500 2000 2500 3000 0 200000 400000 600000 800000 1000000 1200000 H astighet (G b /s ) Storlek (Kb)

Kryptering ECB

0 500 1000 1500 2000 2500 3000 3500 0 200000 400000 600000 800000 1000000 1200000 H astighet (G b /s ) Storlek (Kb)

Dekryptering ECB

(30)

Figur 20. Hastigheten för kryptering och dekrypteringen med ECB.

I Figur 20 planas hastigheten ut när den når cirka 7Gb/s vid både kryptering (Gb/s_e) och dekryptering (Gb/s_d). Krypteringen är långsammare än dekrypteringen upp till utplaningen vid 7Gb/s. 0 1 2 3 4 5 6 7 H astighet (G b /s ) Storlek (kb)

ECB Gb/s

Gb/s_e Gb/s_d

(31)

4.3

CTR

Här presenteras den data som genererats då AES-krypteringsmetoden CTR har använts i experimentet.

Tabell 4. Tidsresultat för CTR

Första kolumnen i Tabell 4 (Size) visar vilken filstorlek med slumpmässigt genererade data som mätningarna gjorts på. Filstorleken är uppmätt i enheten kilobyte och

resterande värden är uppmätta i enheten millisekunder. Den andra kolumnen (HtoD_e) visar mätvärden för hur lång tid det tar att skicka oformaterade data från CPU-minnet till GPU-minnet (Host to Device) vid kryptering. Den tredje kolumnen (Kernel_e) visar hur lång tid det tar för GPU att utföra själva krypteringen (Kernel time) på den valda filen. Fjärde kolumnen (DtoH_e) visar hur lång tid det tar att skicka krypterade data från GPU-minnet till CPU-minnet (Device to Host). Den femte kolumnen (HtoD_d) visar mätvärden för hur lång tid det tar att skicka krypterade data från CPU-minnet till GPU-minnet (Host to Device) vid dekryptering. Den sjätte kolumnen (Kernel_d) visar hur lång tid det tar för GPU att utföra själva dekrypteringen (Kernel time) på den valda filen. Sjunde kolumnen (DtoH_d) visar hur lång tid det tar att skicka den dekrypterade texten från GPU-minnet till CPU-minnet (Device to Host). Den åttonde kolumnen (Total_e) visar den totala krypteringstiden, dvs hur lång tid det tar för CPU-minnet att skicka oformaterade data till GPU-minnet och få tillbaka den krypterad. Kolumn nio (Total_d) visar hur lång tid som uppmätts när CPU-minnet skickar krypterade data till GPU-minnet och får tillbaka den

(32)

Tabell 5. Visar hastigheten för kryptering och dekryptering med CTR

Första kolumnen i Tabell 5 (Size) visar vilken filstorlek med slumpmässigt genererade data som mätningarna gjorts på. Den andra kolumnen (Gb/s_e) visar

överföringshastigheten i gigabyte per sekund vid kryptering och är framtagen genom att dela filstorleken på den totala krypteringstiden. Tredje kolumnen (Gb/s_d) visar överföringshastigheten i gigabyte per sekund vid dekryptering och är framtagen genom att dela filstorleken på den totala dekrypteringstiden.

(33)

Figur 21. Tiden för kryptering med CTR

Figur 21 visar hur tiden stiger linjärt vid kryptering när storleken på filen fördubblas.

Figur 22. Tiden för dekryptering med CTR

Figur 22 visar hur tiden stiger linjärt vid dekryptering när storleken på filen fördubblas. 0 5 10 15 20 25 0 200000 400000 600000 800000 1000000 1200000 Tid (ms ) Storlek (kb)

CTR Kernel_e

0 5 10 15 20 25 0 200000 400000 600000 800000 1000000 1200000 Tid (ms ) Storlek (kb)

CTR Kernel_d

(34)

Figur 23. Hastigheten för kryptering med CTR

Figur 23 visar hur hastigheten för kryptering ökar då filstorleken ökar.

Figur 24. Hastigheten för dekryptering med CTR

Figur 24 visar hur hastigheten för dekryptering ökar då filstorleken ökar.

0 10 20 30 40 50 60 0 200000 400000 600000 800000 1000000 1200000 H astighet (G b /s ) Storlek (Kb)

Kryptering med CTR

0 10 20 30 40 50 60 0 200000 400000 600000 800000 1000000 1200000 H astighet (G b /s ) Storlek (Kb)

(35)

Figur 25. Hastigheten för kryptering och dekrypteringen med CTR

I Figur 25 planas hastigheten ut när den når cirka 7Gb/s vid både kryptering (Gb/s_e) och dekryptering (Gb/s_d). Krypteringen är långsammare än dekrypteringen upp till utplaningen vid 7Gb/s. 0 1 2 3 4 5 6 H astighet (G b /s ) Storlek (kb)

CTR Gb/s

Gb/s_e Gb/s_d

(36)

5

Analys

Kapitlet ger svar på studiens frågeställningar genom att behandla insamlad empiri och teoretiskt ramverk.

5.1

Vilka för och nackdelar finns det hos de olika

AES-krypteringsmetoderna ECB och CTR vid parallellisering?

Resultaten av förundersökningen, där de praktiska skillnaderna mellan ECB och CTR undersöktes, har analyserats genom att hitta fördelar och nackdelar för respektive AES-krypteringsmetod.

Följande fördelar har tagits fram från vetenskapliga verk som behandlar AES-krypteringsmetoden ECB:

• Behöver inte kryptera blocken i ordning, det går att kryptera 10 block i mitten först, sedan de sista blocken och till slut de första blocken. Detta är viktigt för att kunna kryptera filer som har en slumpmässig åtkomst, till exempel en databas. I en databas som krypteras med ECB går det att lägga till nytt, ta bort eller dekryptera vilket databasregister som helst [13].

• Går att kryptera i parallelliserad miljö. Flera olika processorer kan kryptera och dekryptera olika block, oberoende av varandra [7]-[13].

• Fel i kryptering av ett block påverkar inte resterande block [13].

De nackdelar som tagits fram under förundersökningen som behandlar AES-krypteringsmetoden ECB är:

• Identiska block blir krypterade till identiska skifferblock. Detta gör att ECB inte har mycket sekretess. Detta problem framstår mest i bildkryptering, om en bild har stora fält med samma färg till exempel [13]-[14].

• Att block krypteras var för sig ger möjligheter för hackers att byta ut

skifferblock utan att veta nyckeln. Om någon vet att block 8 alltid innehåller samma information till exempel, kan personen byta ut detta block med ett motsvarande block i ett tidigare uppfångat meddelande [13].

(37)

Följande fördelar för AES-krypteringsmetoden CTR har tagits fram från vetenskapliga verk:

• AES-CTR kan parallelliseras för att öka effektiviteten vid tidskrävande krypteringsutmaningar i både kryptering och dekryptering [18].

• CTR är en av de säkraste AES-krypteringsmetoderna och anses vara säkrare än ECB metoden [19].

• Fel i kryptering av ett block påverkar inte resterande block [20].

De nackdelar som tagits fram under förundersökningen är som behandlar CTR är: • Integritetsrisker kan förekomma om CTR inte blir rätt implementerad [18]. • CTR-metoden är mer komplicerad att parallellisera än till exempel ECB [20].

(38)

5.2

Hur skiljer sig beräkningshastigheten mellan ECB och CTR vid tillämpning av GPPGPU-ramverket Cuda?

För att hitta skillnader i beräkningshastighet mellan ECB och CTR när parallellisering utnyttjas har jämförelser i kryptering och dekrypteringstider, kryptering och

dekrypteringshastigheter samt överföringshastigheter mellan CPU-minnen och GPU-minnen tagits fram.

Figur 26. Överföringshastigheten vid kryptering från CPU-minne till GPU-minne för ECB och CTR.

Figur 26 visar en jämförelse av överföringshastigheten mellan ECB och CTR då oformaterade data skickas från CPU-minnet till GPU-minnet. Skillnaden mellan ECB och CTR är mycket liten vid överföring av data från CPU-minnet till GPU-minnet, därför kan ingen analytisk slutsats om skillnader dras. Hastigheten ökar då filstorleken ökar. Hastighetsökningen planar ut vid då filstorleken blir större än ungefär 32 Mb och hastigheten håller då stadigt vid ungefär 14 Gb/s.

0 2 4 6 8 10 12 14 H astighet (G b /s ) Storlek (kb)

HtoD_e

ECB CTR

(39)

Figur 27. Överföringshastigheten vid dekryptering från CPU-minne till GPU-minne för ECB och CTR.

Figur 27 visar en jämförelse av överföringshastigheten mellan ECB och CTR då krypterade data skickas från CPU-minnet till GPU-minnet. Skillnaderna är större vid dekryptering än vid kryptering innan det planar ut då filstorleken blir större än ungefär 32 Mb. För mindre filer än 32 Mb är ECB snabbare vid överföring för dekryptering än vid överföring för kryptering men CTR behåller samma överföringshastighet vid både kryptering och dekryptering. Detta beror på att algoritmerna för kryptering och

dekryptering då CTR-metoden används är exakt samma algoritm men för ECB är algoritmen för kryptering och dekryptering olika [7]-[19].

0 2 4 6 8 10 12 14 H astighet (G b /s ) Storlek (kb)

HtoD_d

ECB CTR

(40)

Figur 28. Hastighet för kryptering med ECB och CTR.

Figur 28 visar en jämförelse av ECB och CTR för hastigheten vid kryptering. Då CTR-metoden används planas krypteringshastigheten ut då filstorleken blir större än ungefär 700 Kb medan hastigheten för kryptering med ECB visar ett tydligt linjärt samband mellan hastighet och filstorlek. Hastigheten planar ut vid mycket större filstorlekar för ECB (se figur 18). Dessa skillnader beror på komplexitetskillnaderna mellan algoritmerna. Enligt Tran et.al [20] är CTR mycket mer komplex än ECB och detta gör att CTR har större behov av trådar än ECB och fyller därför maximala trådantalet på GPU snabbare än ECB. Med ECB-metoden kan därför parallella trådar läggas till vid behov för mycket större filstorlekar än CTR-metoden.

Figur 29. Hastighet för dekryptering med ECB och CTR.

0 20 40 60 80 100 120 0 500 1000 1500 2000 2500 H astighet(G b /s ) Filstorlek (Kb)

Krypteringshastighet

ECB CTR 0 50 100 150 200 250 0 500 1000 1500 2000 2500 H astighet (G b /s ) Filstorlek (Kb)

Dekryptering

ECB CTR

(41)

Figur 29 visar en jämförelse av ECB och CTR för hastigheten vid kryptering. CTR krypterar och dekrypterar med samma algoritm, därför blir skillnaderna mellan kryptering och dekryptering obefintliga. Däremot är ECB snabbare vid dekryptering jämfört med kryptering, vilket också stämmer vid överföringshastigheten från CPU-minnet till GPU-CPU-minnet (se figur 27). Komplexitetskillnaderna mellan algoritmerna gör att ECB är betydligt snabbare även vid dekryptering.

Figur 30. Överföringshastigheten vid kryptering från GPU-minne till CPU-minne för ECB och CTR.

Figur 30 visar en jämförelse av överföringshastigheten mellan ECB och CTR då krypterade data skickas från GPU-minnet till CPU-minnet. Resultatet av mätningarna visar en liknande trend som vid överföring från CPU-minnet till GPU-minnet (se figur 26). Den största skillnaden är att alla hastighetsmätningar ligger ungefär 2 Gb/s snabbare än vid överföring från CPU-minnet till GPU-minnet.

0 2 4 6 8 10 12 14 H astighet (G b /s ) Storlek (kb)

DtoH_e

ECB CTR

(42)

Figur 31. Överföringshastigheten vid dekryptering från GPU-minne till CPU-minne för ECB och CTR.

Figur 31 visar en jämförelse av överföringshastigheten mellan ECB och CTR då dekrypterade data skickas från GPU-minnet till CPU-minnet. Precis som vid kryptering har resultatet av mätningarna en liknande trend som vid överföring från CPU-minnet till GPU-minnet (se figur 27). Även här ligger hastighetsmätningarna ungefär 2 Gb/s snabbare än vid överföring från CPU-minnet till GPU-minnet.

0 2 4 6 8 10 12 14 H astighet (G b /s ) Storlek (kb)

DtoH_d

ECB CTR

(43)

Figur 32. Totala krypteringshastigheten för ECB och CTR

Figur 32 visar en jämförelse av totala krypteringshastigheten mellan ECB och CTR. Den totala krypteringshastigheten är beräknad genom att addera tiderna för kopiering av data från CPU-minnet till GPU-minnet, algoritmens exekvering på GPU samt kopiering av data från GPU-minnet till CPU-minnet och sedan göra en omvandling från tid till hastighet genom att dela filstorlekarna med respektive uppmätt tid. Hastigheten för både ECB och CTR planas ut då filstorleken är större 32 Mb. ECB uppnår ungefär 1 Gb/s snabbare total krypteringshastighet än CTR.

0 1 2 3 4 5 6 7 H astighet (G b /s ) Storlek (kb)

ECB och CTR (Kryptering)

(44)

Figur 33. Totala dekrypteringshastigheten för ECB och CTR

Figur 33 visar en jämförelse av totala dekrypteringshastigheten mellan ECB och CTR. Den totala dekrypteringshastigheten är beräknad på samma sätt som vid kryptering. Även vid dekryptering är ECB ungefär 1 Gb/s snabbare än CTR efter utplaningen. ECB är dock snabbare vid dekryptering jämfört med kryptering innan utplaningen. Detta kan bero på skillnaderna i algoritmerna för kryptering och dekryptering för ECB. CTR håller samma hastigheter som vid dekryptering som vid kryptering, eftersom CTR använder samma algoritm för kryptering och dekryptering.

0 1 2 3 4 5 6 7 H astighet (G b /s ) Storlek (kb)

ECB och CTR (Dekryptering)

(45)

6

Diskussion och slutsatser

Kapitlet ger en sammanfattande beskrivning av studiens resultat. Vidare beskrivs studiens implikationer och begränsningar. Dessutom beskrivs studiens slutsatser och rekommendationer. Kapitlet avslutas med förslag på vidare forskning.

6.1

Resultat

Resultat för analysen av vilka för och nackdelar det finns hos AES-krypteringsmetoderna ECB och CTR vid parallellisering

Analysen gjordes på material som framtagits i förundersökningen. De faktorer som analyserades är skillnaderna i krypteringsalgoritmen mellan ECB och CTR och de för och nackdelar mellan AES-krypteringsmetoderna som är en följd av dessa skillnader i algoritmen.

Sammanfattningsvis visar analysen att CTR är betydligt säkrare än ECB men också mer komplicerad att implementera, vilket kan leda till integritetsrisker vid felaktiga implementationer. ECB går att använda vid slumpmässig åtkomst av data i till exempel en databas, vilket inte är möjligt med CTR.

Resultat för analysen av hur beräkningshastigheten skiljer sig mellan ECB och CTR vid tillämpning av GPGU-ramverket Cuda

Analysen för experimentet gjordes på jämförelser av data framtaget genom mätningar i experimentet.

I analysen gjordes jämförelser av överföringshastigheter från CPU-minnet till GPU-minnet, krypteringshastighet, dekrypteringshastighet och överförhastigheter från GPU-minnet till CPU-minnet mellan ECB och CTR. Resultatet av analysen visar att beräkningshastigheten vid kryptering och dekryptering är betydligt högre med ECB-metoden jämfört med CTR-ECB-metoden. Vidare visar analysen att skillnader i

överföringshastigheter mellan minnen för ECB och CTR inte är stora och att

dataöverföring mellan minnen har stor betydelse vid jämförelser av totala kryptering och dekrypteringshastigheter. Analysen visar också att den totala kryptering och dekrypteringshastigheten för ECB är snabbare än CTR.

6.2

Implikationer

Resultatet visar att skillnaderna mellan ECB och CTR har stor påverkan på både säkerheten och hastigheten av krypteringen. Vidare visare studien att

överföringshastigheten mellan minnen begränsar den totala kryptering och dekrypteringshastigheten avsevärt där CTR begränsas mer än ECB vid mindre filstorlekar.

Beräkningshastigheten på GPU för CTR är långsammare än för ECB, vilket sammanfattningsvis leder till att totala kryptering och dekrypteringshastigheten för ECB är snabbare än för CTR.

(46)

6.3

Begränsningar

En begränsning i studien är att vi inte skrivit all kod för algoritmerna själva, på grund av bristande tid och kunskap om AES-algoritmen, vilket gör att algoritmoptimering är svårt att verifiera.

En annan begränsning i studien är att grafikkortet som använts är så effektiv vid beräkningen att även filstorlekar upp mot 1 Gb ger mycket små beräkningstider. Detta är en begränsning då experimentmiljön inte gav möjlighet att testa

AES-krypteringsmetoderna på större filer, vilket skulle kunna ge tydligare resultat än de som tagits fram i studien.

6.4

Slutsatser och rekommendationer

Utifrån det analyserade materialet i förundersökningen dras slutsatsen att ECB är fördelaktigt vid kryptering av slumpmässig åtkomst av data som vid till exempel databaser då blocken inte behöver krypteras i ordning, däremot bör ECB undvikas om data som skall krypteras innehåller tydliga mönster. I övrigt är det tydligt att ECB inte heller bör användas vid kryptering av annan data med tydliga mönster som i till

exempel bilder eftersom likadana färger får samma krypterade text.

Vidare kan det konstateras att CTR är fördelaktigt vid övriga säkerhetskänsliga data då det anses som mycket säkrare än ECB. Den enda nackdelen är att CTR är mer avancerad och därför mycket mer komplicerad att implementera. Denna nackdel kan medföra oanade säkerhetsrisker, om algoritmen inte blir rätt implementerad. Utifrån analysen av experimentet drar vi slutsatsen att med ECB uppnås snabbare kryptering och dekrypteringshastigheter jämfört med CTR. Den totala kryptering och dekrypteringshastigheten är ungefär 1 Gb/s snabbare för ECB jämfört med CTR efter utplaningen (se figur 32 och 33).

Vid överföring av data är ECB snabbare vid dekryptering för både överföring av data från CPU-minnet till GPU-minnet och tvärt om, jämfört med överföring av data vid kryptering. CTR behåller däremot samma överföringshastigheter vid både kryptering och dekryptering. Detta beror på att algoritmerna för kryptering och dekryptering då CTR-metoden används är exakt samma algoritm men för ECB är algoritmen för kryptering och dekryptering olika [7]-[19].

Hastigheten planar ut vid mycket större filstorlekar för ECB jämfört med CTR (se figur 32 och 33). Dessa skillnader beror troligtvis på komplexitetskillnaderna mellan algoritmerna. Eftersom CTR är mycket mer komplex än ECB [20], vilket gör att CTR har större behov av trådar än ECB, fyller därför CTR maximala trådantalet på GPU snabbare än ECB. Detta leder till att parallella trådar kan läggas till vid behov för mycket större filstorlekar än med CTR-metoden.

(47)

6.5

Vidare forskning

En undersökning på hur hårdvaran påverkar överföringshastigheten mellan CPU-minnen och GPU-CPU-minnen skulle behövas, för att se hur mycket hårdvaran påverkar överföringshastigheten, då det är den som tar mest tid och inte själva krypteringen eller dekrypteringen.

En studie för att se hur relationen mellan CPU och GPU påverkar

krypteringshastigheterna genom att testa olika konfigurationer av hårdvara kan vara nödvändig. Detta skulle kunna ge en inblick i hur mycket CPU påverkar den total krypteringshastigheten för AES-kryptering.

För att se om det finns en gräns då GPGPU-implementering blir mer effektiv än CPU-implementering av AES-kryptering, skulle ytterligare forskning behövas. En hypotes vi har är att CPU-implementering är mer effektivt vid små filstorlekar, då

dataöverföring mellan CPU-minnet till GPU-minnet är det som tar längst tid vid kryptering med GPGPU-optimering.

(48)

Referenser

[1] Jonathan Kang, “Why haven’t CPU clock speeds increased in the last 5 years”, Quora, September 8 2015. Tillgänglig:

https://www.quora.com/Why-havent-CPU-clockspeeds-increased-in-the-last-5-years. [Hämtad: 9 december, 2019]

[2] M. Garland, S. Le Grand, J. Nickolls, J. Anderson, J. Hardwick, S. Morton, E. Phillips, Y. Zhang, V. Volkov, "Parallel Computing Experiences with CUDA", IEEE Micro, vol. 28, pp. 13-27, Juli 2008. [3] NVIDIA, “Cuda-zone”. Tillgänglig:

https://developer.nvidia.com/cuda-zone [Hämtad: 10 december, 2019]

[4] M. Rouse, “Advanced Encryption Standard (AES)”, November 2014. Tillgänglig: http://searchsecurity.techtarget.com/definition/Advanced-Encryption-Standard. [Hämtad: 30 augusti 2019]

[5] M. Dimitrov, M. Mantor, and H. Zhou, "Understanding Software Approaches for GPGPU Reliability," The 2nd workshop on General-Purpose Computation on Graphics Processing Units (GPGPU-2), 2009. [6] Wikipedia, ”Advanced Encryption Standard” Tillgänglig:

https://en.wikipedia.org/wiki/Advanced_Encryption_Standard. [Hämtad 18 oktober 2019]

[7] S. Almuhammadi, I. Al-Hejri, “A comparative analysis of AES common modes of operation”, IEEE 30th Canadian Conference on Electrical and

Computer Engineering (CCECE), 2017.

[8] R. Patel, B. Davidsson, ”Forskningsmetodikens grunder”, Studentlitteratur, Upplaga 4:8, 2011.

[9] I. M. Holme och B. K. Solvang, Metodelvag og metodebruk, TANO A.S. Oslo, vol. 3, 1986 (Transl.: in B. Nilsson, Ed., Studentlitteratur, 1997).

[10] Johannes Gilger & Paolo Margara, “engine-cuda”, github, 4 december 2012. Tillgänglig: https://github.com/heipei/engine-cuda. [Hämtad: 15 november 2019]

[11] Allen Lee, “Parallel AES algorithm using Cuda”, github, 30 oktober 2016. Tillgänglig: https://github.com/allenlee820202/Parallel-AES-Algorithm-using-CUDA. [Hämtad: 15 november 2019]

[12] Gary Chaw & Bain Syrowik, “GPU-accelerated AES encryption project”, github, 13 februari 2015. Tillgänglig:

(49)

[13] I. F. Elashry, O. S. F. Allah, A. M. Abbas, S. El-Rabaie, "A new diffusion mechanism for data encryption in the ECB mode",

International Conference on Computer Engineering & Systems, 2009.

[14] C. Huang, Y. Tu, H. Yeh, S. Liu, C. Chang, “Imagae Obervation on the Modified ECB Operations in Advanced Encryption Standard”,

International Conference on Information Society (i-Society 2011), 2011

[15] Q. Li, C. Zhong, K. Zhao, X. Mei, X. Chu, "Implementation and Analysis of AES Encryption on GPU", IEEE 14th International

Conference on High Performance Computing and Communication & 2012 IEEE 9th International Conference on Embedded Software and Systems, 2012.

[16] H. Lee, K. Lee, Y. Shin, “Implementation and performance analysis of AES-128 CBC algorithm in WSNs”, The 12th International Conference

on Advanced Communication Technology (ICACT), 2010

[17] J. Ma, X. Chen, R. Xu, J. Shi,"Implementation and Evaluation of Different Parallel Designs of AES Using CUDA", IEEE Second

International Conference on Data Science in Cyberspace (DSC), 2017.

[18] A. D. Biagio, A. Barenghi, G. Agosta, G. Pelosi, "Design of a parallel AES for graphics hardware using the CUDA framework", IEEE

International Symposium on Parallel & Distributed Processing, 2009.

[19] R. Ketata, L.Kriaa, L. A. Saidance, G. Chalhoub, “Detailed analysis of the AES CTR mode parallel execution using OpenMP”, International

Conference on Performance Evaluation and Modeling in Wired and Wireless Networks (PEMWN), 2016

[20] N. Tran, M. Lee, D. H. Choi, “Heterogeneous parallel computing for data encryption application”, 6th International Conference on Computer Sciences and Convergence Information Technology (ICCIT), 2011

[21] “CUDA Toolkit 3.2”, NVIDIA Inc., Februari 2011.

[22] E. Berggren, T. Gustafson, ”Jämförelse av GPGPU-ramverk och AES-metoder”, Högskolan i Jönköping, Tekniska Högskolan, JTH,

Datateknik och informatik, 2017.

[23] Wikipedia, ”Block cipher mode of operation” Tillgänglig:

https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation

[Hämtad 16 november 2019]

(50)

Bilagor

Bilaga 1 Excel dokument med tabeller och diagram från experimentet

https://drive.google.com/file/d/13T-fxtyHRuCYPSVzZGcLBfVRdrkobm7N/view?usp=sharing

(51)

References

Related documents

enkätfrågor, därefter skickades 382 enkäter ut (Bell,2000 s.112). Enkätsvaren skulle skickas till oss inom två veckor. Den relativt korta tid, som respondenterna hade till

Begränsningen i deras metod ligger, enligt Gluckman, däri att "för att förstå vad rätt var, är och blir, måste man förstå vad rätt gjorde och gör och för att förstå

Majgull Axelsson har i intervjuer vid tiden för utgivningen av Slumpvandring fått frågor om sitt förhållande till Ivar Lo-Johanssons Geniet, eftersom Geniet finns med så påtagligt i

Även fast det går att urskilja datorer med olika hårdvaror visar diagrammen i Figur 14 till Figur 19, tabellerna i Tabell 12 till Tabell 17 och resultatet

Det första man skall göra är att skapa en nyckel och att skapa en nyckel för AES betyder att det behövs bara en nyckel eftersom den tillhör den symmetriska krypteringen som

4.1 Research Technique Byreddy Sreenibha Reddy 4.2 Evaluation Technique Byreddy Sreenibha Reddy 4.3 Experimental Testbed Byreddy Sreenibha Reddy 4.3.1 Testbed Design

Framtidsgrupperna syftar till att skapa mervärde för barnens livskvalitet genom att skapa en mötesplats för barnen på idrottsplatsen och i barngrupperna som ger möjligheter till

The standard static textbook analysis of congestion charges implies that drivers as a group will be worse off with congestion charges if they are not compensated