• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
49
0
0

加載中.... (立即查看全文)

全文

(1)

中 華 大 學 碩 士 論 文

AES 密碼演算法在多核心處理器環境 之設計和實作

The design and implementation of AES cryptographic algorithm in multi-core system

系 所 別:資訊工程學系碩士班 學號姓名:M09702026 蔡定國 指導教授:吳林全 博 士

中 華 民 國 100 年 8 月

(2)

摘 要

近年來電腦處理器朝向多核心的趨勢發展,大大地提升了電腦的計算能力。而繁 瑣的加密過程往往需要更強力的電腦計算能力,來提高加解密的速度。因此,無論是 在硬體或軟體上已經陸續有不少針對加解密演算法執行效能提升的研究。

本論文中針對多核心處理器環境下設計和實作AES演算法,透過多執行緒的程式 設計方式,在執行上帄行處理加解密的區塊,提升AES加解密的效能。同時分析和比 較AES 128位元在ECB、CBC和CTR三種加密模式中,實際執行加密和解密不同檔案 大小的效能提升結果。

在我們實作四執行緒CTR模式中,加密與解密效能可提升3.86倍以上。在實際處 理速率上,加密與解密部分可達到每秒25.51Mb以上。除此之外,我們也在64位元作 業系統上實作AES程式版本,在四執行緒CTR模式中,加密與解密效能可提升3.85倍 以上。同樣地,在實際處理速率上,加密與解密部分可達到每秒25.56Mb以上。在我 們的實驗中,64位元版本相對於32位元版本的執行效率,還有些微的效能提升。

在本論文中發現使用多核心處理器環境的確可以有效提升執行加解密的效率,相 信能夠針對加密演算法帄行化運算模式的研究提供設計的參考基礎,以及未來對於雲 端運算所需要的高速加/解密能力上有一定的參考價值。

關鍵字:AES、密碼演算法、多核心系統、帄行處理

(3)

ABSTRACT

In recent years, computer processor have trend toward multi-core, and the computing ability are improved significantly. The complexity of encryption/decryption processes usually need powerful computing ability to speedup. As the result, there are more and more researches aim at the improvement of the performance for encryption and decryption algorithms both in the hardware and software.

In this paper, we aim at design and implement the AES algorithm in multi-core system. We can improve the performance of AES encryption/decryption by using multithread to achieve the parallel processing of encryption/decryption of the blocks.

Meanwhile we analyze and compare the encryption and decryption of AES 128bits between ECB, CBC and CTR, and we look through the result of executing the encryption and decryption between the different sizes of data.

The performance improvement of encryption/decryption processes is more than 3.86 times with four threads in CTR mode in our experiment. It can obtain the data rate of encryption/decryption processes more than 25.51Mb/s. In addition, we also run our AES codes on 64-bits Windows 7 operating system. We can improve the performance of encryption/decryption processes more than 3.85 times with four threads in CTR mode.

Moreover, the throughput of encryption/decryption processes can reach more than 25.56Mb/s. Thus, the performances on the 64-bits O.S. are better than 32-bits O.S. in our experiments.

We found that the performance of encryption/decryption can be improved effectively by using multi-core system. We think that our results can provide the design foundation for the operation mode of cryptographic algorithm. In particular, it may be the reference base for the cloud computing that requires high-speed encryption/decryption in the future.

Keywords: AES、cryptographic algorithm、multi-core system、parallel processing

(4)

誌 謝

尚未就讀研究所之前,對於資訊安全領域的專業知識接觸甚少,因此進入此研究 領域,要萬分感謝我的指導教授 吳林全 博士的耐心指導,由基礎慢慢引入,直到現 在比一般人了解此領域的專業知識,實為獲益良多。在研究方向的想法、討論、分析 等等,老師一直不吝給予建議以及指導,讓我可以更順遂的進行研究。論文撰寫期間,

老師更是不厭其煩的多次審閱內容,協助我修正內容,確認問題的原因,並且給我修 改的建議,使論文內容更加完整。在此深深感謝老師不遺餘力、耐心指導我完成此論 文。

我也感謝在研究所就學期間,不斷提供我課業上意見的蘇俊豪、戴瑞成學長,以 及與我互相幫助的吳嘉恩、邱煥訓同學,還有朱元佑、陳健儒、游翔晨等學弟,當然 也有受到其他實驗室同學的幫忙,讓我的研究所生活既充實又愉快,十分感謝大家。

最後要感謝的是辛苦養育我長大的母親 王麗雀 女士,一人含辛茹苦讓我專心在 研究學業上,也感謝我的妹妹 蔡旻珊,有他們在我的身後默默支持,真的由衷感謝 他們。

(5)

目 錄

摘 要 ... i

ABSTRACT ... ii

誌 謝 ... iii

目 錄 ... iv

表 目 錄 ... vi

圖 目 錄 ... vii

第一章 序論 ... 1

1.1 簡介 ... 1

1.2 研究動機 ... 1

1.3 研究方法 ... 2

1.4 論文架構概述 ... 2

第二章 研究背景 ... 4

2.1 區塊加密演算法 ... 4

2.2 DES 演算法 ... 4

2.3 AES 演算法 ... 6

2.4 本論文採用的區塊加密模式 ... 9

2.4.1 ECB 加密模式 ... 10

2.4.2 CBC 加密模式 ... 10

2.4.3 CTR 加密模式 ... 11

2.5 多核心處理器發展 ... 12

第三章 相關研究工作 ... 14

3.1 硬體相關研究 ... 14

3.2 軟體相關研究 ... 15

第四章 AES 之帄行化設計 ... 18

4.1 ECB、CTR 標準模式 ... 19

4.2 CBC 修改模式 ... 20

4.3 AES 演算法帄行化的實作 ... 21

(6)

第五章 實作結果 ... 22

5.1 32 位元環境執行結果 ... 22

5.1.1 ECB 標準模式執行結果 ... 22

5.1.2 CBC 修改模式執行結果 ... 24

5.1.3 CTR 標準模式執行結果 ... 25

5.2 64 位元環境執行結果 ... 28

5.2.1 ECB 標準模式執行結果 ... 29

5.2.2 CBC 修改模式執行結果 ... 30

5.2.3 CTR 標準模式執行結果 ... 31

5.3 32 位元與 64 位元環境執行結果比較 ... 35

結論 ... 38

參考文獻 ... 40

(7)

表 目 錄

表 2-1、AES 演算法不同金鑰長度的各種參數 ... 6

表 5-1、AES 128 位元 加密效能表(單位 Mb/s) ... 26

表 5-2、AES 128 位元 解密效能表(單位 Mb/s) ... 27

表 5-3、AES 128 位元 加密效能提升比較表 ... 27

表 5-4、AES 128 位元 解密效能提升比較表 ... 28

表 5-5、AES 128 位元 加密效能表(單位 Mb/s) ... 33

表 5-6、AES 128 位元 解密效能表(單位 Mb/s) ... 33

表 5-7、AES 128 位元 加密效能提升比較表 ... 34

表 5-8、AES 128 位元 解密效能提升比較表 ... 34

表 5-9、加密效能比較表(檔案大小為 80Mb) ... 35

表 5-10、解密效能比較表(檔案大小為 80Mb) ... 35

表 5-11、Windows 7 64 位元與 32 位元版本的加密效能比較表 ... 36

表 5-12、Windows 7 64 位元與 32 位元版本的解密效能比較表 ... 36

(8)

圖 目 錄

圖 2-1、DES 加密流程圖 ... 5

圖 2-2、位元組的取代 ... 7

圖 2-3、列的位移 ... 7

圖 2-4、行的混合 ... 8

圖 2-5、新增回合金鑰 ... 8

圖 2-6、AES 加密流程圖 ... 9

圖 2-7、ECB 加密模式流程圖 ... 10

圖 2-8、CBC 加密模式流程圖 ... 11

圖 2-9、CTR 加密模式流程圖 ... 12

圖 3-1、AESTHETIC 多核心處理器架構圖 ... 15

圖 3-2、GPU 實作流程圖 ... 16

圖 4-1、基礎帄行化流程圖 ... 18

圖 4-2、雙執行緒版本下 ECB 標準模式 ... 19

圖 4-3、雙執行緒版本下 CTR 標準模式 ... 20

圖 4-4、雙執行緒版本下 CBC 修改模式 ... 20

圖 5-1、ECB 標準模式下加密執行結果 ... 23

圖 5-2、ECB 標準模式下解密執行結果 ... 23

圖 5-3、CBC 修改模式下加密執行結果 ... 24

圖 5-4、CBC 修改模式下解密執行結果 ... 25

圖 5-5、CTR 標準模式下加密執行結果 ... 25

圖 5-6、CTR 標準模式下解密執行結果 ... 26

圖 5-7、ECB 標準模式下加密執行結果 ... 29

圖 5-8、ECB 標準模式下解密執行結果 ... 30

圖 5-9、CBC 修改模式下加密執行結果 ... 30

圖 5-10、CBC 修改模式下解密執行結果 ... 31

圖 5-11、CTR 標準模式下加密執行結果 ... 32

圖 5-12、CTR 標準模式下解密執行結果 ... 32

(9)

第一章 序論

1.1 簡介

隨著資訊科技的進步和發展,有許多資訊可以在電腦上先行處理之後,並藉由網 路傳輸迅速完成資料交換以及互動,例如:電子商務、個人或企業往來的電子信件等,

而資料在網路上傳輸時,為避免大量和連續的資料拖慢網路的速度,會將資料切割成 許多不同的小型封包來傳送。然而當封包在網路上流動的時候,容易被有心人士攔截 下來。因此,網路大大的增加便利性,卻也存在著許多潛在的危機,如資料遭受竊取。

所以,要怎麼不讓有心人士竊取資料,已經成為刻不容緩的問題。尤其企業對資訊科 技不斷的投注,加上寬頻上網快速的普及和近年來雲端科技的發展,許多重要的資料 都放在資訊設備上,為了保護資料的安全性與隱密性,就必頇對於資料予以保密。為 因應資訊化社會所面臨的資料安全性的問題,我國政府已於立法院通過個人資料保護 法 [1],並經 總統頒佈實施。由此可知,未來個人資料的機密性將會相當重要,為 了確保資料的安全性,可以利用特定演算法將資料內容處理轉換,待資料送達目的地 後,再以反向的處理方式將資料還原。但是,對於相同大小的檔案而言,越複雜的加 密演算法需要更強大的計算能力,才能獲得較好的加/解密效率。

1.2 研究動機

目前主要的對稱式區塊加密法有資料加密標準(Data Encryption Standard;簡稱 DES) [2]、高階加密標準(Advanced Encryption Standard;簡稱AES) [3]等。在加密演 算法的強度上,則是依靠使用加密時金鑰的長度,而DES的金鑰長度只有56位元,AES 的金鑰長度則最少為128位元,所以,美國國家標準與技術研究院(National Institute of Standards and Technology;簡稱NIST)提議以AES取代DES。之後,在大部份的加密應 用中,有越來越多的應用程式開始使用AES代替 DES保護訊息安全,成為最流行的 對稱式區塊加密演算法。尤其是它提供了一個高度的可帄行性,藉由帄行化的設計,

能於多核心處理器的環境下,得到更好的加密執行效能。

最近幾年來,電腦多核心處理器的發展十分迅速,短時間內從一開始的雙核心快 速的進階到四核心甚至是六核心,在價格上只需要台幣1950元左右便可買到Intel

(10)

Pentium E5400雙核心處理器 [15],如果搭配上Intel超執行緒的技術,如:INTEL Core i7™-980X Extreme處理器 [16],除了原先具備的六核心外,更可以開啟額外的虛擬六 核心使其支援12個執行緒。

同時,由NVIDIA所研發和設計供行動通訊裝置使用的CPU – Tegra 2 [17],採用 雙核心ARM Cortex-A9 [18]處理器,為全球首款在行動裝置上的超級晶片。它提供了 更 高 效 率 的 運 算 能 力 , 對 於 一 般 的 應 用 以 及 網 頁 瀏 覽 的 反 應 更 為 快 速 , 如 : MOTOROLA ATRIX 4G雙核機 [21]。除了手機之外,更可應用於車用電子、帄板電 腦、電子閱讀器、多媒體播放器等,由此發展的腳步看來,從個人電腦以至於在行動 裝置上,多核心的發展技術以及多方面的應用已是未來的趨勢。

在伴隨著硬體價格的降低,個人電腦擁有雙核心以上處理器的情況已相當的普 遍,但是在硬體快速進步的同時,軟體設計部分卻仍未追上硬體的腳步,就算硬體上 處理器的核心再多,也需要軟體對於本身的架構經過適當的帄行化設計後,藉由軟體 與硬體的相互配合,在執行上才能發揮多核心帄行處理的最好效果。同樣地,在目前 的加/解密程式的設計與實作上仍維持傳統單核心的方式,反而浪費了多核心所擁有 的處理效能。因此,在本篇論文設計並且實作加/解密帄行化程式,期望能有效率地 讓多核心中央處理器以帄行化的方式執行。

1.3 研究方法

在本篇論文中,我們利用演算法個別區塊加密的方式,配合不同的加密模式設計 帄行化的程式,在相同的作業系統和同樣的硬體環境下,實作單執行緒、雙執行緒以 及四執行緒版本,並且以雙執行緒、四執行緒版本對單執行緒版本進行比較。而在實 驗結果部份會有執行結果的曲線圖。另外,對於近年來作業系統朝向64位元發展,我 們也編譯了64位元版本,同樣有雙執行緒和四執行緒版本對單執行緒版本的比較,以 及執行結果的曲線圖。

1.4 論文架構概述

我們會在第二章中簡單介紹區塊加密法背景、AES演算法的計算過程和一般區塊 加密模式的運作方式,第三章中介紹在軟體和硬體上對於AES帄行化實作的相關研

(11)

究,在第四章中,提出對於AES加密演算法以金鑰長度128位元在三種加密模式中帄 行化的實作方式,而第五章則是實際在Windos7(x86、x64)作業系統下,進行單執行 緒、雙執行緒及四執行緒的執行結果,並且整理出加解密的效率比較表,最後在第六 章為本論文的結論。

(12)

第二章 研究背景

為了確保資料的安全性,常需要使用到加密演算法為資料多加上一層的保護,避 免有心人士透過非法的管道得到資料後,可以輕易的了解資料內容。目前最常用的加 密方式可分為對稱式和非對稱式加密法。而本篇研究中所實作之加密演算法,則屬於 對稱式加密法中的區塊加密演算法。我們在此章節簡單介紹區塊加密演算法,以及 AES加密演算法 [3]的運作流程。

2.1 區塊加密演算法

依照加密時的明文大小,可以分為串流加密法以及區塊加密法:串流加密法是加 密資料串流中的一個位元或是位元組,區塊加密法則會將固定長度的明文視為一個區 塊,然後產生長度相同的密文區塊,而每個區塊大小通常為64或是128位元,如果再 運用上區塊加密模式,可以讓區塊加密的效果近似於串流加密的效果。過去已經有很 多區塊加密的相關分析,例如:電子商務上,由於區塊加密方式較串流加密不同的是 一次加密一個區塊,較不容易被分析出所使用的加解密金鑰。一般來說,應用的範圍 比串流加密更為廣泛,因此在網路、系統安全上,屬於對稱式加密部分的應用,大多 使用區塊加密的技術。

2.2 DES演算法

在現代,對稱式區塊加密法最廣為使用的加密方式是從DES開始發展,而DES是 在1997年由美國國家標準局(National Bureau of Standard;簡稱NBS)採用;NBS現已改 名 為 美 國 國 家 標 準 與 技 術 研 究 院 。 這 項 演 算 法 本 身 則 稱 為 資 料 加 密 標 準 (Data Encryption Standard;簡稱DES)。DES是使用56位元的金鑰加密64位元的資料區塊,

整體處理過程分三階段,如圖2-1,一開始會先進行初始重排(Initial Permutation;簡 稱IP)的動作。接著第二階段頇經過共16回合的加密動作,基本上與菲仕托(Feistel)加 密 [20]架構相同。而最後一回合的輸出,還需要將左右兩部分交換做為前期輸出。

最後一階段則為初始重排的逆運算(Inverse Initial Permutation;簡稱IP-1),最後產生64 位元的密文。DES雖然非常廣泛的使用,但是在安全性上一直為爭論不休的話題。儘

(13)

管如此,業界依然廣泛使用DES,尤其是金融方面的應用。然而DES的缺點在於軟體 實作的效能低落,由於當初DES是為了硬體實作而設計的,卻未能擁有高效率的軟體 程式碼。另外,DES使用的是64位元的區塊,對於效率以及安全性而言,應該要使用 更長的區塊。

圖2-1、DES加密流程圖

為了取代DES,NIST徵求新的進階加密標準,除了要求更高的安全強度,也需要

(14)

大幅加強效能,另外,也規定新的標準必頇是128位元區塊的對稱式區塊加密法,並 且支援128、192、256位元的三種金鑰長度。經過長時間的評選,NIST最終於2001年 選擇由比利時密碼破解專家:Dr. Joan Daemen和Dr. Vincent Rijmen共同提出的 Rijndael,作為下一代的密碼演算法AES,希望能成為未來二十年內各種安全應用的 公認密碼演算法標準。

2.3 AES演算法

AES的規格採用了三種的金鑰長度,但是加解密的區塊都限制為128位元,且AES 有一些與金鑰長度相關的參數,如表2-1:

表2-1、AES演算法不同金鑰長度的各種參數

金鑰長度 128位元 192位元 256位元

明文區塊大小 128位元 128位元 128位元

加解密回合數 10 12 14

加解密的輸入區塊被描繪成位元組的方形矩陣,此區塊會被複製到狀態矩陣,而且加 解密的每個步驟都會對此區塊作變動,最後一個步驟之後再將狀態矩陣複製到輸出矩 陣。在AES中有4種不同的演算法階段,分別為取代位元組、列的位移、行的混合、

新增回合金鑰。位元組的取代方式稱為SubBytes,這是一種簡單的查表法。AES定義 了16x16的位元組矩陣,稱為S-box,此矩陣包含了所有8位元的數值(256個)。狀態矩 陣中的每個位元組可以對映到新的位元組,作法是位元組最左邊的4個位元代表著 S-box的列編號,而最右邊的4個位元組則是代表著S-box的行編號。以此作為S-box的 索引,用來作為8位元置換的輸出值,而在解密的時候則是使用反向的S-box。如圖2-2:

(15)

圖2-2、位元組的取代

列的位移稱為ShiftRows,在這個步驟中,第一列不做任何移動,第二列的每個元素 向左循環位移1個位元組,第三列向左循環位移2個位元組,第四列則是向左循環位移 3個位元組,而列的反向位移則是讓做過位移的三個列往反方向作位移,如第二列向 右循環位移1個位元組,以此類推。如圖2-3:

圖2-3、列的位移

行的混合運算則稱為MixColumns,以每一行個別運作。每行內的每個位元組會對映

(16)

到新的數值,而此數值是行內所有4個位元組的函數經過矩陣乘法運算後的乘積總 和,解密的部份則是做反向矩陣乘法運算。如圖2-4:

圖2-4、行的混合

最後是新增回合金鑰稱為AddRoundKey,作法是狀態裡的128個位元在每個回合時,

和回合金鑰的128個位元作每一個位元的XOR運算,也就是說狀態矩陣內某一行的4 位元組,和回合金鑰內的一個字元組做運算,基本上在解密的時候,新增回合金鑰的 反向轉換跟加密的時候一樣,因為XOR本身就是反向運算。如圖2-5:

圖2-5、新增回合金鑰

(17)

而AES的整體架構其實相當簡單,以金鑰長度128位元為例,首先在初始回合先 做新增回合金鑰,接著9個回合做前述的四個步驟,依序為:取代位元組、列的位移、

行的混合、新增回合金鑰,而最後一個回合則只有行的混合不做,加解密的流程都是 一樣的,只是解密的部份是倒著回來。如圖2-6:

圖2-6、AES加密流程圖

2.4 本論文採用的區塊加密模式

區 塊 加 密 模 式 [8] 普 遍 所 知 的 至 少 有 5 種 以 上 , 如 電 子 密 碼 書 (Electronic Codebook;簡稱ECB)、密文區塊串接(Cipher Block Chaining;簡稱CBC)、密文反饋 (Cipher Feedback;簡稱CFB)、輸出反饋(Output Feedback;簡稱OFB)、計數器(Counter;

(18)

簡稱CTR)等,在本論文中實作的加密模式介紹如下:

2.4.1 ECB加密模式

一般AES演算法在ECB模式的作法為每一塊總共128位元的區塊,在這種模式下 一次處理一個明文或密文區塊,每一個區塊都是使用相同的金鑰,獨立進行加解密運 算,最後得到各區塊的加解密結果,如圖2-7。也就是說,當需要加解密的訊息超過 128位元,ECB的運作方式會將訊息分別切成128位元的單位區塊;而在最後如果有未 滿128位元的訊息情況下,會在最後的那一個區塊填滿足夠的位元去湊成128位元。

圖2-7、ECB加密模式流程圖

2.4.2 CBC加密模式

為了克服ECB模式在有相同的明文區塊重複出現下的安全缺失,希望能以特殊的 技巧去產生不同的密文區塊,而CBC就是一種簡單又可以滿足這種需求的方式。在 CBC模式中,每一個要加密的明文在輸入到加密演算法之前,都需要與前一回合輸出 的密文作XOR運算,然後每個區塊都一樣是使用相同的金鑰。實際上,依照明文區塊 的順序,將之前產生的區塊與目前的區塊進行XOR運算,這種方式稱為串鏈。因此,

在每塊明文做演算法運算之前,便已經不會跟原來的明文區塊有固定的關係,即使明

(19)

文中含有連續出現的相同區塊,也較不容易被發現。

而在產生第一個密文區塊,需要初始向量(Initialization vector,IV)與第一個明文 區塊作XOR運算。反過來在解密的時候,原本加密時的IV會與解密演算法的第一個 輸出做XOR,用來恢復第一個明文區塊。在此模式中,IV的大小是與加密文區塊大 小相同,如圖2-8。

圖2-8、CBC加密模式流程圖

2.4.3 CTR加密模式

在CTR模式中,計數器的大小相當於所使用的明文區塊大小。在SP800-38A [8]

唯一提及的要求,是每一個被加密明文區塊的計數器值不能相同。通常計數器一開始 會設成某個值,然後會為每個後續的區塊而增加1。對於加密來說,會先將計數器的 值加密,然後再與明文區塊進行XOR運算,以產生密文區塊;但是這種方式並不是串 鏈。反過來在解密中,同樣依照計數器值的相同順序,對每個加密的計數器與密文區 塊進行XOR運算,就會重新獲得相對應的明文區塊。而不同於ECB和CBC模式的地方 在於,CTR模式只需要實作加密演算法,而不需要再另外實作解密演算法,如圖2-9。

(20)

圖2-9、CTR加密模式流程圖

2.5 多核心處理器發展

以往單核心CPU雖然藉由不斷開發新一代製程技術,以及晶片的設計技巧來提升 運算頻率,但是伴隨而來是居高不下,處理器運算時的熱能。為了控制處理器的熱能 功率不要持續的攀升,又能適當的提升效能,目前業界逐漸走向不提升單核心效能,

改由增加多核心帄行處理的方式,以既有研發完成的處理器核心,朝向雙核心或是多 核心的方式增加。而多核心在效能的表現上,也遠比單核心的效能來的出色。

在1999年10月,IBM首度揭露了雙核心的研究計劃,更於2000年成功打造出雙核 心處理器樣本,頓時成為業界對多核心處理器發展的焦點。之後,惠普(HP)、昇陽(SUN) 也於2001、2003年陸續投入多核心處理器的發展行列。緊接著英特爾(Intel)以及超微 (AMD)也開始將處理器發展上的策略,轉向雙核心/多核心的方向。這幾年來,多核 心處理器製造技術進步的相當迅速,已由當初的雙核心數量進步到目前最新的六核 心。而繪圖卡業者方面,隨著圖形處理單元(Graphic Process Unit;簡稱GPU)發展不 斷的進步,在功能上已經不單單是只侷限於顯示,甚至可以處理CPU部分的工作,尤 其是可以有效的進行強大的帄行運算,希望藉此提高在整個電腦系統上的重要性。

另外,不僅僅是在伺服器、個人電腦上的發展,嵌入式系統領域方面,由NVIDIA

(21)

所研發和設計供行動通訊裝置使用的CPU – Tegra 2,從國外知名網站測試搭載 Tegra 2 的 Viewsonic G-Tablet 帄板電腦所得之測試數據 [19]如:執行常見的BenchmarkPi 效能測試項目上,超越搭載TI OMAP 3620處理器129.3%的優異成績穩居第一。可以 看出,搭載此款雙核心處理器所展現出來的效能可以說相當的耀眼。相信同樣於行動 裝置上,對資料傳輸前所需的加解密效能,也可以獲得相當的提升。

(22)

第三章 相關研究工作

在現今加密通訊和安全性上,AES扮演相當重要的角色,它是一個有效的資料加 密標準方法,應用的範圍可從個人到商業甚至政府部門等不同領域。該演算法是由 Joan Daemen及Vincent Rijmen二位密碼專家所提出取名為Rijndael,最後被美國國家 標準技術局遴選為AES演算法。雖然AES演算法安全度高,在加密大量資料時,仍需 要相當的計算處理能力,加快加解密的速度,尤其是在解密部分,更是比加密需要較 多時間。

因此一直以來都有研究試圖加快AES演算法在處理上的速度。隨著硬體技術不斷 的突破,處理器朝向多核心的發展,加上作業系統的支援以及程式語言上開始有配合 多核心處理器而推出可以快速開發帄行程式的函式套件;例如visual studio 2008提供 的openmp,而近代的程式語言也廣泛的支援多執行緒的設計,可以將一個程序分割 成多個獨立的部分,同時進行處理,如C++、C#和Java。對於AES的帄行化,分別有 對於設計硬體的AES加密處理器以及軟體上實作AES帄行化程式兩個研究方向。

3.1 硬體相關研究

在硬體實作方面,如 Cheng-Wen Wu [13]等學者在2005年提出了一個AESTHETIC (AES with Tsing Hua ExTended Implicit Configurability)加密處理器,此處理器時脈為 66MHZ,在使用128位元金鑰長度下加密,最大輸出可以達到每秒844.8Mb。接著於 2009年提出多核心的加密處理器架構 [7],實作的方式為三個相同的AESTHETIC加密 處理器組合為多核心加密處理器,藉由共享模組簡化了多核心架構的管理,每一個獨 立的加密數據區塊都是先進先出以確保高速的數據加密,如圖3-1,以這種方式達到 加密帄行化。在效率上,以同樣使用128位元金鑰長度去加密1500位元的數據為例,

最大的輸出可以達到每秒3.61Gb。

(23)

圖3-1、AESTHETIC多核心處理器架構圖

3.2 軟體相關研究

隨著多核心處理器的發展越趨成熟,開始有研究在多核心處理器環境的程式設計 上實作AES帄行化,如Intel公司的專家 Anoop Singh 和 Ankit Malani [4]利用Intel多 核多緒開發函式庫(Threading Building Blocks;簡稱TBB)對AES演算法作帄行,此函 式庫的優點在於只需要在想要帄行化的部分,放進相對應的帄行函式,程式便會自動 將那部分做帄行化。在環境為Intel Pentium D 3.40 GHz,記憶體為512MB RAM,檔案 大小為80Mb的情況下,帄行化之前,加密部分花費65秒,解密部分花費56秒,帄行 化之後,加密部分花費57秒,解密部分花費49秒。加密部分提升約14%的效能,解密 部分提升約13%。

另外,也有研究提出在測量系統上,如 Piotr Bilski 和 Wiesław Winiecki [9],為 了確保收集回來資訊的安全性,在測量端將訊息做加密,以及加快當大量的加密訊息 送回主機端時,需要快速的將資料解密,因此在測量端以及主機端均利用了AES帄行 化的處理,在實作上,設計了演算法本身以及加密模式的帄行化。

除了在多核心中央處理器上的實作之外,也有利用圖形處理單元(Graphic Process Unit;簡稱GPU)多串流處理的功能實作AES帄行化的方式,如 Deguang Le [10]等人 是在CUDA(Compute Unified Device Architecture) [12]帄台上實作,這是NVIDIA所開 發的帄行運算架構,能夠透過利用GPU大幅的加速消費者、專業人士、科學家與研究

(24)

者所執行的各種運算上極度複雜的工作。在作法上,CPU透過執行緒執行管理啟動區 塊管理,將明文分割為多個區塊,再將多個區塊分配到每一個執行緒做處理,最後資 料 再 送 回 CPU 合 併 成密 文 。 如 圖 3-2 , 而 實 際 使 用 的 顯 示 卡 為NVIDIA GeForce GTS250( 處 理 器 核 心 為 128 , 處 理 器 時 脈 1836 MHz , 標 準 記 憶 體 配 置 512MB or 1 GB DDR3),以此執行帄行過後的AES。在實作的CPU上,以Intel Core 2 Duo E8200(雙 核心處理器,時脈速度2.66GHZ,L2快取記憶體6MB),執行未帄行過的AES,對照 比較數據後,發現GPU執行的速度可以達到在CPU上執行的7倍。

圖3-2、GPU實作流程圖

另外,同樣是實作於CUDA帄台上,在 Andrea Di Biagio [5]等人研究中更對於加 密演算法本身和加密模式這兩種方向提出帄行化的方式,以求網路服務應用上,利用 強大的帄行能力做為CPU外的副處理器,減少CPU的負擔,也希望以此可以達到顯示 卡不單單是用於影像處理上,還可以用於一般用途上。

Osvaldo Gervasi [6]等學者的研究中則以OpenCL(Open Computing Language) [11]

這種新興的標準來設計AES帄行加解密程式。OpenCL是第一個開放對於跨帄台、個 人電腦上近代的處理器的帄行處理程式的設計以及伺服器和手持/嵌入式設備的免版

(25)

稅使用版權的標準。而OpenCL可以極高的提升速度且容易廣泛的應用在市場上,如 遊戲、娛樂、科學和醫療資訊上。此實作主要是強調在近代的處理器中,利用OpenCL 所編譯之帄行程式可跨帄台的特性,包括GPU和多核心CPU。在Intel Core 2 Duo E8500 上的CPU(雙核心處理器,時脈速度3.16GHZ,L2快取記憶體6MB),執行OpenCL帄行 過後的AES實作效能是未帄行化之前的4倍。而在顯示卡上,以ATI Firestream 9270(處 理器核心為800,GPU記憶體為2GB GDDR5 SDRAM,最高記憶體頻寛為108.8GB/s),

執行過後效率更可以達到未帄行化前的11倍之多。

其中CPU與GPU差異在於,基於顯示卡本身設計就是多串流帄行處理,因此效能 上會較CPU好。但是,以目前普遍情況而言,CPU重要性仍大於GPU,如果要使用 GPU,等同勢必要額外加上一張顯示卡,並且是要有支援CUDA功能的,成本上又是 一筆開銷。而對於硬體上通常需要專門的電路來實作加密演算法;如FPGA,且軟體 實作上則依靠多執行緒程式技巧便可以實作在一般用途的處理器或是顯示卡上,較硬 體來的更便宜、更有彈性,因此本論文研究重點在於多核心CPU環境上。

(26)

第四章 AES之帄行化設計

在Intel公司的專家 Anoop Singh 和 Ankit Malani [4]的作法中,是在AES中金鑰 擴充的部分以及在於輸出需要轉16進位的部分,套入函式庫中的帄行函式,配合適當 的參數設定達到自動帄行化的效果。但是由於AES演算法運算較為繁瑣,即便是金鑰 擴充的部分,也會因為在不同的環境而需要不同的參數去做微調,才能達到最佳化的 效果。

因為AES是屬於區塊加密方法,基本上,可以藉由加密模式的應用提高整體加密 演算法的效果,或者讓演算法更適用於某些應用;例如將區塊加密應用在一連串的資 料區塊或者是資料串。我們採用的帄行化方式是在區塊加密上利用的區塊加密模式去 做帄行化,針對多核心處理器上所能同時處理的執行緒數量,對總明文區塊做適當的 切割,再將分割後的區塊進行加解密的處理,如圖4-1。

圖4-1、基礎帄行化流程圖

在本篇論文的研究中,我們實作了AES演算法之ECB、CBC和CTR三種區塊加密 模式,並利用多執行緒技術設計和實作AES加密程式,利用不同的執行緒在多核心處

(27)

理器環境下進行帄行化執行,分析和比較AES 128位元在不同加密模式中,執行加密 和解密運算能夠實際提升效率的結果。

4.1 ECB、CTR標準模式

ECB帄行化的作法是利用區塊加密的特性將所要加密的明文依照可執行的執行 緒數量直接先做切割,之後丟到個別的執行緒去做AES演算法的加密程序,如圖4-2:

圖4-2、雙執行緒版本下ECB標準模式

然而要帄行處理的主要問題在於,為了增加加密安全性,在其他模式下是環環相 扣的區塊處理方式。如果特定區塊在前一個區塊未完成之前無法處理,則多核心處理 方式將是無用的,因此需要修改基本的技巧。

至於CTR加密模式也是依照相同的方式帄行化,但由於加密的計數器部分是擁有 連續性的,不過連續的計數器使用並不像CBC模式需要等待前一回合串鍊的數據,因 此在程式一開始的時候,先將各執行緒需要使用的計數器先計算好,這樣可以讓已經 分配不同執行緒的明文,在加密時使用的計數器有連續性,如圖4-3:

(28)

圖4-3、雙執行緒版本下CTR標準模式

4.2 CBC修改模式

在原本傳統的CBC加密模式下,並無法真正達到帄行化的效果,因此我們將此加 密模式稍做修改,在分別的執行緒加密程序中,都依照傳統CBC加密模式的方式,直 接給予相同的亂數IV和各分割明文的第一個區塊做XOR,使其達到帄行化的效果,

如圖4-4:

圖4-4、雙執行緒版本下CBC修改模式

(29)

4.3 AES演算法帄行化的實作

在多核心的環境下,作業系統會依照程式內所產生的執行緒自動將這些執行緒分 配到各個核心中,我們便是利用此特點,達到AES演算法加/解密帄行化的效果。實 作程式部分,我們參考了Anoop Singh和Ankit Malani發布的程式(程式語言為C++),

而原程式為未帄行化ECB加密模式的單執行緒版本,我們另外再以此程式修改出CBC 以及CTR加密模式並且各有雙執行緒以及四執行緒的帄行化版本。

在實際撰寫程式的過程中,利用Win32 API的函式產生需要的執行緒,以符合我 們多執行緒來達到帄行化的需求。除了加密模組帄行化的部份外,為了提高整體執行 的速度,在檔案的輸入以及輸出的部份,我們原先考量的作法依照原先參考程式的方 式,一次讀取每16位元組的區塊便執行加解密的作法,對於我們需要帄行化的方式,

直接改由同時間分別將要帄行處理的每一16位元組的區塊讀取之後便執行加解密的 動作,而之後得到的結果也直接的寫入到輸出檔案中,但實際上得到的結果並不是很 好。

所以,我們改變前作法,先將明文直接依照所設計的執行緒數量分割大區塊,把 這些大區塊存放到記憶體中,再分別置入各個執行緒中,每條執行緒都有獨立的AES 加密程序,藉此同時處理分割的各明文區塊,同樣地,在演算法的輸出方面,比照輸 入的作法,將個別輸出先依序的存在記憶體之中合併,最後在一次寫入,產生出最後 的檔案。反之由密文解密回明文也是依照同樣的步驟做處理。除此之外,對於CBC 模式在一開始使用到的初始向量以及CTR模式用到起始計數器的數值,也會寫入到密 文檔案中,以便解密時使用。

(30)

第五章 實作結果

我們實作的電腦組態環境,CPU為Intel Core2 Quad CPU Q6600 2.40GHZ,L1資 料快取4x32Kbytes,L1指令快取4x32Kbytes,L2快取2x4096Kbytes,記憶體為2G,作 業系統為微軟32、64位元Windows 7。我們實作和實際測試的檔案分別有800Kb、8Mb 以及80Mb三種大小的文字檔案,藉此得到AES演算法在ECB、CBC以及CTR三種加 密模式下未帄行與帄行之後的數據(金鑰長度為128位元)。

5.1 32位元環境執行結果

所有的執行結果皆包含檔案的輸入以及輸出時間,其說明中效率提升的計算方式 為單執行緒結果先減去雙執行緒或四執行緒結果之後再除以單執行緒結果並且取到 小數第二位,最後再乘以一百取百分比。

5.1.1 ECB標準模式執行結果

圖5-1為ECB標準模式下在不同執行緒版本加密不同檔案大小明文的執行結果(縱 軸單位:秒)。以80Mb為例,單執行緒花費的執行效率約每秒6.61Mb,雙執行緒花費 的執行效率約每秒12.97Mb,較單執行緒提升1.96倍的效率。而四執行緒花費的執行 效率約每秒25.62Mb,較單執行緒提升3.88倍的效率。

(31)

圖5-1、ECB標準模式下加密執行結果

圖5-2為ECB標準模式下在不同執行緒版本解密不同檔案大小密文的執行結果(縱 軸單位:秒)。以80Mb為例,單執行緒花費的執行效率約每秒6.02Mb,雙執行緒花費 的執行效率約每秒11.85Mb,較單執行緒提升1.97倍的效率。而四執行緒花費的執行 效率約每秒23.33Mb,較單執行緒提升3.88倍的效率。

圖5-2、ECB標準模式下解密執行結果

(32)

5.1.2 CBC修改模式執行結果

圖5-3為CBC修改模式下在不同執行緒版本加密不同檔案大小的執行結果(縱軸 單位:秒)。以80Mb為例,單執行緒花費的執行效率約每秒6.6Mb,雙執行緒花費的 執行效率約每秒12.93Mb,較單執行緒提升1.96倍的效率。而四執行緒花費的執行效 率約每秒25.47Mb,較單執行緒提升3.86倍的效率。

圖5-3、CBC修改模式下加密執行結果

圖 5-4 為 CBC 修改模式下在不同執行緒版本解密不同檔案大小密文的執行結果 (縱軸單位:秒)。以 80Mb 為例,單執行緒花費的執行效率約每秒 6.01Mb,雙執行緒 花費的執行效率約每秒 11.84Mb,較單執行緒提升 1.97 倍的效率。而四執行緒花費 的執行效率約每秒 23.25Mb,較單執行緒提升 3.87 倍的效率。

(33)

圖5-4、CBC修改模式下解密執行結果

5.1.3 CTR標準模式執行結果

圖5-5為CTR標準模式下在不同執行緒版本加密不同檔案大小的執行結果(縱軸單 位:秒)。以80Mb為例,單執行緒花費的執行效率約每秒6.6Mb,雙執行緒花費的執 行效率約每秒12.93Mb,較單執行緒提升1.96倍的效率。而四執行緒花費的執行效率 約每秒25.57Mb,較單執行緒提升3.87倍的效率。

圖5-5、CTR標準模式下加密執行結果

(34)

圖5-6為CTR標準模式下在不同執行緒版本解密不同檔案大小密文的執行結果(縱 軸單位:秒)。以80Mb為例,單執行緒花費的執行效率約每秒6.61Mb,雙執行緒花費 的執行效率約每秒12.95Mb,較單執行緒提升1.96倍的效率。而四執行緒花費的執行 效率約每秒25.51Mb,較單執行緒提升3.86倍的效率。

圖5-6、CTR標準模式下解密執行結果

表5-1為在執行緒版本,以128位元金鑰長度,各別加密不同檔案大小的執行效能 表。此數據可以看到雙執行緒的執行效能結果將近單執行緒的2倍,而四執行緒的執 行效能結果也至少提升單執行緒3.56倍以上。如CTR模式下加密80Mb的檔案,對於單 執行緒的執行結果,雙執行緒的執行結果提升了1.96倍,而四執行緒的執行結果提升 了3.87倍。

表5-1、AES 128 位元 加密效能表(單位Mb/s) 800Kb 8Mb 80Mb

單執行緒

ECB 6.47 6.60 6.61 CBC 6.46 6.59 6.60 CTR 6.47 6.60 6.60 雙執行緒 ECB 12.35 12.71 12.97

CBC 12.19 12.37 12.93

(35)

CTR 12.24 12.64 12.93

四執行緒

ECB 23.37 24.06 25.62 CBC 23.27 23.45 25.47 CTR 23.27 23.94 25.57

表5-2為在執行緒版本,以128位元金鑰長度,各別解密不同檔案大小的執行效能 表。在解密的數據部份,由於帄行化的架構與加密相同,因此也同樣獲得近似加密的 提升效果。

表5-2、AES 128 位元 解密效能表(單位Mb/s) 800Kb 8Mb 80Mb

單執行緒

ECB 5.90 6.02 6.02 CBC 5.88 6.00 6.01 CTR 6.46 6.58 6.61

雙執行緒

ECB 11.24 11.26 11.85 CBC 11.19 11.21 11.84 CTR 12.25 12.36 12.95

四執行緒

ECB 21.42 22.19 23.33 CBC 21.29 22.01 23.25 CTR 22.98 23.73 25.51

表5-3為雙執行緒以及四執行緒版本以128位元金鑰長度,加密不同檔案大小的執 行時間,相對於單執行緒版本的效能提升比較表。在加密檔案的執行時間結果方面,

雙執行緒的執行效率最高提升了1.96倍效能,而在四執行緒的執行效率上,最高更可 提升3.88倍。

表5-3、AES 128 位元 加密效能提升比較表 800Kb 8Mb 80Mb

雙執行緒

ECB 1.91 1.93 1.96 CBC 1.89 1.88 1.96 CTR 1.89 1.92 1.96

(36)

四執行緒

ECB 3.61 3.77 3.88 CBC 3.6 3.56 3.87 CTR 3.61 3.63 3.88

表5-4為雙執行緒以及四執行緒版本以128位元金鑰長度,解密不同檔案大小的執 行時間,相對於單執行緒版本的效能提升比較表。在解密檔案的執行時間上,雙執行 緒的執行效率最高可提升1.97倍的效能,四執行緒的執行效率最高可提升3.88倍。

表5-4、AES 128 位元 解密效能提升比較表 800Kb 8Mb 80Mb

雙執行緒

ECB 1.9 1.87 1.97 CBC 1.9 1.87 1.97 CTR 1.89 1.88 1.96

四執行緒

ECB 3.63 3.69 3.88 CBC 3.62 3.67 3.87 CTR 3.56 3.61 3.86

以我們的帄行架構執行加密,在32位元環境下每秒能處理的資料量,雙執行緒下 最高可達到所預期將近兩倍的效能,而在四執行緒的結果中,雖然未達到四倍的效 能,但如CTR模式執行80Mb檔案的情況下,也可達到3.88倍的效能。另外執行加密效 率上,整體來看,雙執行緒的執行效率至少能提升1.88倍,而四執行緒的執行時間至 少提升3.56倍。

在軟體實作上,程式在一般系統中執行時,因為系統本身仍有一些必要的處理程 序,會對執行結果產生些許的干擾。不過本篇論文重點在於帄行化處理的效能提升,

對此並沒有很大的影響。

5.2 64位元環境執行結果

隨著x64處理器的發展,微軟也在2005年推出了支援x64架構的作業系統Windows XP 64bits [14],為的是針對廣泛用途的工作所設計的。而從32位元延伸到64位元,延

(37)

伸而來的不只是更大的記憶體存取能力和更快的執行速度,還能實現更多的應用。在 Windows 7下一樣也有x64的版本,所以在本篇論文也同樣的在此環境下,執行編譯為 x64版本的程式,得到效能增加的情況。

5.2.1 ECB標準模式執行結果

圖5-7為ECB標準模式下在不同執行緒版本加密不同檔案大小明文的執行結果(縱 軸單位:秒)。以80Mb為例,單執行緒花費的執行效率約每秒6.65Mb,雙執行緒花費 的執行效率約每秒13.08Mb,較單執行緒提升1.97倍的效率。而四執行緒花費的執行 效率約每秒25.78Mb,較單執行緒提升3.88倍的效率。

圖5-7、ECB標準模式下加密執行結果

圖5-8為ECB模式下在不同執行緒版本解密不同檔案大小密文的執行結果(縱軸單 位:秒)。以80Mb為例,單執行緒花費的執行效率約每秒6.13Mb,雙執行緒花費的執 行效率約每秒12.06Mb,較單執行緒提升1.97倍的效率。而四執行緒花費的執行效率 約每秒23.76Mb,較單執行緒提升3.88倍的效率。

(38)

圖5-8、ECB標準模式下解密執行結果

5.2.2 CBC修改模式執行結果

圖5-9為CBC修改模式下在不同執行緒版本加密不同檔案大小的執行結果(縱軸 單位:秒)。以80Mb為例,單執行緒花費的執行效率約每秒6.63Mb,雙執行緒花費的 執行效率約每秒13.01Mb,較單執行緒提升1.96倍的效率。而四執行緒花費的執行效 率約每秒25.69Mb,較單執行緒提升3.87倍的效率。

圖5-9、CBC修改模式下加密執行結果

(39)

圖5-10為CBC修改模式下在不同執行緒版本解密不同檔案大小密文的執行結果 (縱軸單位:秒)。以80Mb為例,單執行緒花費的執行效率約每秒6.12Mb,雙執行緒 花費的執行效率約每秒11.95Mb,較單執行緒提升1.95倍的效率。而四執行緒花費的 執行效率約每秒23.69Mb,較單執行緒提升3.87倍的效率。

圖5-10、CBC修改模式下解密執行結果

5.2.3 CTR標準模式執行結果

圖5-11為CTR標準模式下在不同執行緒版本加密不同檔案大小的執行結果(縱軸 單位:秒)。以80Mb為例,單執行緒花費的執行效率約每秒6.64Mb,雙執行緒花費的 執行效率約每秒13.07Mb,較單執行緒提升1.97倍的效率。而四執行緒花費的執行效 率約每秒25.72Mb,較單執行緒提升3.88倍的效率。

(40)

圖5-11、CTR標準模式下加密執行結果

圖5-12為CTR標準模式下在不同執行緒版本解密不同檔案大小密文的執行結果 (縱軸單位:秒)。以80Mb為例,單執行緒花費的執行效率約每秒6.64Mb,雙執行緒 花費的執行效率約每秒13.05Mb,較單執行緒提升1.97倍的效率。而四執行緒花費的 執行效率約每秒25.56Mb,較單執行緒提升3.85倍的效率。

圖5-12、CTR標準模式下解密執行結果

表5-5為在執行緒版本,以128位元金鑰長度,各別加密不同檔案大小的執行效能

(41)

表。從CTR模式執行80Mb檔案來看,雙執行緒每秒處理的資料量為單執行緒的1.97 倍,四執行緒每秒處理的資料量更可達到3.88倍。

表5-5、AES 128 位元 加密效能表(單位Mb/s)

800Kb 8Mb 80Mb

單執行緒

ECB 6.48 6.61 6.65

CBC 6.47 6.60 6.63

CTR 6.47 6.60 6.64

雙執行緒

ECB 12.65 12.78 13.08 CBC 12.28 12.39 13.01 CTR 12.43 12.68 13.07

四執行緒

ECB 23.35 24.94 25.78 CBC 23.31 23.51 25.69 CTR 23.33 23.99 25.72

表5-6為在執行緒版本,以128位元金鑰長度,各別解密不同檔案大小的執行效能 表。此解密的數據上,同樣以CTR執行80Mb為例,雙執行緒每秒處理的資料量為單 執行緒的1.97倍,四執行緒每秒處理的資料量達到3.85倍。

表5-6、AES 128 位元 解密效能表(單位Mb/s)

800Kb 8Mb 80Mb

單執行緒

ECB 5.99 6.12 6.13

CBC 5.98 6.11 6.12

CTR 6.47 6.60 6.64

雙執行緒

ECB 11.69 11.76 12.06 CBC 11.38 11.47 11.95 CTR 12.31 12.43 13.05

四執行緒

ECB 21.83 23.00 23.76 CBC 21.69 22.34 23.69 CTR 23.35 24.07 25.56

(42)

表5-7為雙執行緒以及四執行緒版本以128位元金鑰長度,加密不同檔案大小的執 行效率,相對於單執行緒版本的效能提升比較表。執行效率上,雙執行緒最高可以提 升對於單執行緒1.97倍的處理效能,而四執行緒最高可以提升對於單執行緒3.88倍的 處理效率。

表5-7、AES 128 位元 加密效能提升比較表

800Kb 8Mb 80Mb

雙執行緒

ECB 1.95 1.93 1.96 CBC 1.90 1.88 1.96 CTR 1.92 1.92 1.97

四執行緒

ECB 3.61 3.77 3.88 CBC 3.60 3.56 3.87 CTR 3.61 3.63 3.88

表5-8為雙執行緒以及四執行緒版本以128位元金鑰長度,加密不同檔案大小的執 行效率,相對於單執行緒版本的效能提升比較表。執行解密的處理時間在雙執行緒以 及四執行緒上,提升的處理效率也與加密部分差不多。雙執行緒部分最高提升1.97 倍,四執行緒部分最高提升3.88倍。

表5-8、AES 128 位元 解密效能提升比較表

800Kb 8Mb 80Mb

雙執行緒

ECB 1.95 1.92 1.97

CBC 1.90 1.88 1.95

CTR 1.90 1.88 1.97

四執行緒

ECB 3.64 3.76 3.88

CBC 3.63 3.65 3.87

CTR 3.61 3.65 3.85

在64位元環境中,執行我們64位元版本的加解密程式,同樣雙執行緒的整體處加 密理效能依然可以達到我們期望中接近單執行緒的2倍提升。而四執行緒的部分,每

(43)

秒加密處理的資料量,以CTR模式為例,在處理80Mb檔案時,為單執行緒處理效能 的3.88倍。

5.3 32位元與64位元環境執行結果比較

此章節我們再將32位元以及64位元環境上的執行結果進行整理比較,藉以了解兩 種環境上的執行效率是否有所差異。

表5-9為Windows 7 32位元以及64位元在各執行緒版本中,加密效率上的比較 表。以四執行緒每秒處理的資料量為例,64位元對32位元執行結果有些微的提升,但 不明顯。

表5-9、加密效能比較表(檔案大小為80Mb) 32bit(Mb/s) 64bit(Mb/s)

單執行緒

ECB 6.61 6.65 CBC 6.60 6.63 CTR 6.60 6.64

雙執行緒

ECB 12.97 13.08 CBC 12.93 13.01 CTR 12.93 13.07

四執行緒

ECB 25.62 25.78 CBC 25.47 25.69 CTR 25.57 25.72

表5-10為Windows 7 32位元以及64位元在各執行緒版本中,解密效率上的比較 表。以四執行緒每秒處理的資料量為例,情況與加密部份相同。

表5-10、解密效能比較表(檔案大小為80Mb) 32bit(Mb/s) 64bit(Mb/s)

單執行緒

ECB 6.02 6.13 CBC 6.01 6.12 CTR 6.61 6.64

(44)

雙執行緒

ECB 11.85 12.06 CBC 11.84 11.95 CTR 12.95 13.05

四執行緒

ECB 23.33 23.76 CBC 23.25 23.69 CTR 25.51 25.56

表5-11為Windows 7 64位元版本在各執行緒版本中,在加密不同檔案大小的時間 上,對於32位元版本所提升效能的比較表。雖然提升效果不明顯,但由實際數據可以 看出,64位元對於32位元版本仍有些微的提升。

表5-11、Windows 7 64位元與32位元版本的加密效能比較表 800Kb 8Mb 80Mb

單執行緒

ECB 1.00 1.00 1.01 CBC 1.00 1.00 1.00 CTR 1.00 1.00 1.01

雙執行緒

ECB 1.02 1.01 1.01 CBC 1.01 1.00 1.01 CTR 1.02 1.00 1.01

四執行緒

ECB 1.00 1.04 1.01 CBC 1.00 1.00 1.01 CTR 1.00 1.00 1.01

表5-12為Windows 7 64位元版本在各執行緒版本中,在解密不同檔案大小的效率 上,對於32位元版本所提升效能的比較表。同樣地,此結果與加密部分相似,與32 位元版本僅有些微的提升。

表5-12、Windows 7 64位元與32位元版本的解密效能比較表 800Kb 8Mb 80Mb

單執行緒 ECB 1.01 1.02 1.02

(45)

CBC 1.02 1.02 1.02 CTR 1.00 1.00 1.00

雙執行緒

ECB 1.04 1.04 1.02 CBC 1.02 1.02 1.01 CTR 1.01 1.01 1.01

四執行緒

ECB 1.02 1.04 1.02 CBC 1.02 1.01 1.02 CTR 1.02 1.01 1.00

在64位元下執行我們64位元版本的加解密程式,雖然沒有明顯的效率提升,但是 由數據可以看到,我們帄行化架構無論在32位元或是64位元環境中,都可以獲得穩定 的效能提升。

(46)

結論

隨著網路傳輸速度不斷進步,加上電腦處理資訊的便利性,許多個人以及企業的 資料都轉由電腦和網路進行處理,因此為了避免有心人士的竊取,資料的安全性變得 相對重要。同時,政府也於近年通過個人資料保護相關法案,更是證明對於資料的保 護是刻不容緩的事。但是,為了提高資料的安全性所進行的加解密動作,會因為加密 演算法的難度,而使處理資料時間加長。目前在電腦處理器上,對於多核心處理器的 進展相當的迅速,從原先的一開始的雙核心進步到六核心處理器,甚至可以開啟額外 的虛擬核心達到支援12個執行緒的處理。不僅如此,除了個人電腦外,手機行動裝置、

嵌入式系統以及車載裝置也都開始走向多核心處理的發展。所以我們以多核心處理器 的電腦環境,藉由加密架構帄行化的方式,提升加解密的效能。

本論文中我們針對Intel公司的專家 Anoop Singh 和 Ankit Malani [4]所提出的 AES帄行化方法進行改善,他們的方法是利用Intel TBB函式庫對AES加解密運算進行 帄行化的實作,於檔案輸入輸出以及金鑰擴充的部份進行帄行處理。加密處理效能較 帄行化之前提升約14%,而解密處理效能則提升約13%。我們則是針對加解密模式進 行帄行化設計,從實際執行的結果發現,在Windows 7 32-bit系統中,雙執行緒的版 本在CTR模式加密和解密最高可提升1.96倍的效率。在實際處理速率上,加密部分最 高可達到每秒12.93Mb,解密部分最高可達到每秒12.95Mb。另外,在四執行緒的版 本中,執行效率更提升高達加密3.87倍和解密3.86倍。在實際處理速率上,加密部分 最高可達到每秒25.57Mb,解密部分最高可達到每秒25.51Mb。在Windows 7 64-bit系 統中,雙執行緒的版本在CTR模式加密和解密最高可提升1.97倍的效率。在實際處理 速率上,加密部分最高可達到每秒13.07Mb,解密部分最高可達到每秒13.05Mb。另 外,在四執行緒的版本中,執行效率更提升高達加密3.88倍和解密3.85倍。在實際處 理速率上,加密部分最高可達到每秒25.72Mb,解密部分最高可達到每秒25.56Mb。

而64位元環境相對於32位元環境的執行效能比較結果,在效率上有些微的效能提升。

同時,我們提出的CBC修改模式在雙執行緒和四執行緒下,與ECB標準模式的執 行速度相當近似。而從數據上來看,我們提出的架構,在雙執行緒下,可獲得最高1.97 倍的效能提升,而在四執行緒的執行效能上,最高能提升3.88倍的效能。

現階段的程式對於不同核心數量實作個別的版本,未來可朝向自動判斷處理器核

(47)

心數量編寫程式,便可以因應多核心快速的發展,得到更彈性的應用,直接在不同核 心的處理器上執行。除了本篇論文實作的AES演算法外,也可本帄行化研究應用於其 他演算法(如雜湊、串流演算法)。在實際應用面上,由於我們提供快速的加解密效果,

可適用於目前需要大量加解密資料的雲端應用。

(48)

參考文獻

[1] 中華民國立法院,「個人資料保護法」,民國 99 年 05 月 26 日。

可存取自:http://law.moj.gov.tw/LawClass/LawAll.aspx?PCode=I0050021

[2] National Institute of Standards and Technology (NIST), “FIPS-46-3: Data Encryption Standard (DES),” May 1999.

Available on http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf.

[3] National Institute of Standards and Technology (NIST), “FIPS-197: Advanced Encryption Standard,” Nov. 2001.

Available on http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf.

[4] A. Singh and A. Malani, “Rewriting Algorithms to help Parallel Programming.”

Available on http://software.intel.com/en-us/articles/Parallel_Prog/.

[5] A. D. Biagio, A. Barenghi, G. Agosta and G. Pelosi, “Design of a Parallel AES for Graphics Hardware using the CUDA framework,” IEEE International Symposium on Parallel & Distributed Processing, pp. 1-8, May 2009.

[6] O. Gervasi, D. Russo and F. Vella, “The AES implantation based on OpenCL for multi/many core architecture,” IEEE International Conference on Computational Science and Its Applications, pp. 129-134, March 2010.

[7] M. Y. Wang, C. P. Su, C. L. Horng, C. W. Wu, and C. T. Huang, “Single- and Multi-core Configurable AES Architectures for Flexible Security,” IEEE Transactions on Very Large Scale Integration (VLSI) Systems, Vol. 18, No. 4, pp. 541-552, April 2010.

[8] M. Dworkin, “Recommendation for Block Cipher Modes of Operation: Methods and Techniques,” National Institute of Standards and Technology, Tech. Rep. NIST Special Publication 800-38a, 2001.

Available on http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf.

[9] P. Bilski and W. Winiecki, “Multi-core implementation of the symmetric cryptography algorithms in the measurement system,” Measurement, Volume 43, Issue 8, October 2010, pp. 1049-1060.

[10] D. Le, J. Chang, X. Gou, A. Zhang and C. Lu, “Parallel AES Algorithm for Fast Data Encryption on GPU,” IEEE 2nd International Conference on Computer Engineering and Technology (ICCET), pp. 16-18, April 2010.

[11]Khronos Group, OpenCL 1.0 Specification, http://www.khronos.org/opencl

(49)

[12] NVIDIA Corporation, “CUDA Technology,” http://www.nvidia.com/CUDA, Sep.

2008.

[13] C. P. Su, C. L. Horng, C. T. Huang and C. W. Wu, “A Configurable AES Processor for Enhanced Security,” IEEE Asia and South Pacific Design Automation Conference 2005, pp. 18-21 Jan. 2005.

[14] Microsoft Windows XP,

http://www.microsoft.com/taiwan/windowsxp/default.mspx.

[15] Intel® Pentium® Processor E5400, http://ark.intel.com/Product.aspx?id=40478 [16] Intel® Core™ i7-980X Processor Extreme Edition,

http://ark.intel.com/Product.aspx?id=47932&processor=i7-980X&spec-codes=SLBUZ.

[17] NVIDIATegra™ 2, http://www.nvidia.com.tw/object/tegra-2-tw.html.

[18] ARM Cortex™-A9 processor,

http://www.arm.com/products/processors/cortex-a/cortex-a9.php.

[19]First Look: Viewsonic G Tablet and Tegra 2 Performance Preview,

http://www.anandtech.com/show/4054/first-look-viewsonic-gtablet-and-tegra-2-performan ce-preview/2.

[20] Feistel Cipher, Wikipedia, http://en.wikipedia.org/wiki/Feistel_cipher.

[21] MOTOROLA ATRIX 4G,

http://www.att.com/shop/wireless/devices/motorola-atrix.jsp.

參考文獻

相關文件

Reading Task 6: Genre Structure and Language Features. • Now let’s look at how language features (e.g. sentence patterns) are connected to the structure

好了既然 Z[x] 中的 ideal 不一定是 principle ideal 那麼我們就不能學 Proposition 7.2.11 的方法得到 Z[x] 中的 irreducible element 就是 prime element 了..

volume suppressed mass: (TeV) 2 /M P ∼ 10 −4 eV → mm range can be experimentally tested for any number of extra dimensions - Light U(1) gauge bosons: no derivative couplings. =>

For pedagogical purposes, let us start consideration from a simple one-dimensional (1D) system, where electrons are confined to a chain parallel to the x axis. As it is well known

The observed small neutrino masses strongly suggest the presence of super heavy Majorana neutrinos N. Out-of-thermal equilibrium processes may be easily realized around the

incapable to extract any quantities from QCD, nor to tackle the most interesting physics, namely, the spontaneously chiral symmetry breaking and the color confinement.. 

(1) Determine a hypersurface on which matching condition is given.. (2) Determine a

• Formation of massive primordial stars as origin of objects in the early universe. • Supernova explosions might be visible to the most