• 沒有找到結果。

32位元小面積之嵌入式AES的FPGA設計與影像應用

N/A
N/A
Protected

Academic year: 2021

Share "32位元小面積之嵌入式AES的FPGA設計與影像應用"

Copied!
76
0
0

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

全文

(1)國立臺灣師範大學應用電子科技學系 碩士論文 指導教授:黃奇武 副教授 張吉正 教授 32 位元小面積之 嵌入式 AES 的 FPGA 設計與影像應用 A 32-bit Low Area Embedded AES FPGA Design for Image Application. 研究生:張國煌. 撰. 中 華 民 國 98 年 6 月.

(2) 國立臺灣師範大學應用電子科技學系 碩士論文 指導教授:黃奇武 副教授 張吉正 教授 32 位元小面積之 嵌入式 AES 的 FPGA 設計與影像應用 A 32-bit Low Area Embedded AES FPGA Design for Image Application. 研究生:張國煌. 撰. 中 華 民 國 98 年 6 月.

(3) 32 位元小面積之嵌入式 AES 的 FPGA 設計與影像應用 學生:張國煌. 指導教授:黃奇武 副教授 張吉正 教授. 國立臺灣師範大學應用電子科技學系碩士班. 摘. 要. 高等加密標準(Advanced Encryption Standard, AES)硬體實現在現場可程式化 閘陣列(FPGA)與特殊用途積體電路(ASIC)已經被很廣泛的討論,尤其是如何達到 數十億產率的議題;然而在嵌入式硬體的應用上,低產率與小面積的設計在近幾 年也開始被研究。 本研究提出一個小面積的硬體電路,採用32位元的架構來實現AES-128的規 格,其中包含2組移位暫存器(Shift Register)來完成移列轉換(ShiftRow)的動作;並 利用晶片內建的Block RAM來放置整合資料,完成位元組替換(SubByte)與混行運 算(MixColumn)的動作;而以軟體來取代硬體的金鑰擴展(KeyExpansion),來節省 電路面積。透過上述所提出的方式在FPGA上所完成的實驗數據,其資源消耗為 110個Slice、速度可達到75Mhz(每秒可處理29張640×480大小的彩色影像),是在 目前文獻中面積最小的設計。 為實現影像加解密的應用,本研究分別使用兩種方式來與上述32位元AES核 心電路整合,其一為結合嵌入式系統與IP core的架構,屬於軟體與硬體的搭配; 另一為只用硬體描述語言(HDL)來實現,較偏向硬體電路來控制。. 關鍵字:高等加密標準、現場可程式化閘陣列、影像處理. -i-.

(4) A 32-bit Low Area Embedded AES FPGA Design for Image Application ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––. Student:Kuo-Huang Chang. Advisors: Dr. Chi-Wu Huang Dr. Chi-Jeng Chang. Institute of Applied Electronics Technology National Taiwan Noraml University. ABSTRACT. Advance Encryption Standard (AES) hardware implementation in FPGA and ASIC have been intensely discussed, especially in high-throughput of Giga bit per second (Gbps). However, lower throughput and area designs have also been investigated in the recent years for embedded hardware applications. This paper presents a 32-bit AES implementation with a speed of 75MHz (29 640x480 frames per second) and low area of 110 slices, which is the smallest design among literature reports. There are two Shift-Registers for ShiftRow; a built-in Block RAM for SubByte and MixColumn; KeyExpansion utilizing software instead of hardware. In order to realize image encryption/decryption, we combine the 32-bit AES with two types of implements. First, the Embedded System with a MicroBlaze core which uses software and hardware codesign. Second, using HDL hardware description language, which is mainly a hardware implementation.. Keywords: AES, FPGA, Embedded System, MicroBlaze. -ii-.

(5) 誌. 謝. 求學生涯,即將要暫時劃下一道休止符,開啟一段嶄新的人生,心中一直充 滿了感激,特別感謝黃奇武教授和張吉正教授兩位恩師,從大學至研究所,無論 在生活上或學業上,都給予我相當大的照顧和幫忙,有他們多方面的協助和教 誨,讓我得以順利完成學業。此外,我還要感謝雲林科大蘇慶龍教授、楊博惠教 授以及本校高文忠教授撥冗擔任口試委員,並提供寶貴的意見使得此論文得以更 加完整。. 其次,感謝所上提供舒適的研究環境與良好的設備,讓我在研究的進度上得 以事半功倍;而不定時的舉辦活動,讓我能藉此來鍛鍊體魄並使心情能夠感覺輕 鬆,休息再出發。尤其感謝所上的承辦人員瓊姿媽媽、士恆學長與琇文正妹,對 於相關的法規與畢業等事務的申辦,皆給予極大的協助。實驗室的建成、正誼、 炘彥、登貴、文治、宏運、茂元學長,以及瑛萍、凱婷學姐,辛苦的傳承其研究 成果,使我的學習能夠完整且有效率;另外在研究上,時常遭受不順利的打擊, 好在有奕丞、冠毅與建宏三位同儕,哲豪、健倫、登耀、宏璟、述立、明洲、后 鍾學弟,以及紫涵、玉瑤學妹,共同營造實驗室的氣氛,除了分享彼此的喜悅之 外,也互相加油打氣,讓我充滿再次挑戰的動力。. 最後,感謝賜予我生命並且養育我、栽培我的父母親張明陣與顏秀鳳、還有 我的家人們,永遠在背後默默的支持與不斷的包容、關心,有你們所做的一切, 才能造就今天的我,除了由衷的再感激之外,也將此份榮耀獻給你們。. 張國煌 2009.6.30 NTNUAET LAB514. -iii-.

(6) 目. 錄. 要 ......................................................................................................................... i. 摘. ABSTRACT ................................................................................................................... ii 誌. 謝 ....................................................................................................................... iii. 目. 錄 ....................................................................................................................... iv. 表 目 錄 ....................................................................................................................... vi 圖 目 錄 ...................................................................................................................... vii 第一章. 緒論 .............................................................................................................1. 1.1. 研究背景.....................................................................................................1. 1.2. 研究動機.....................................................................................................4. 1.3. 研究目的.....................................................................................................5. 1.4. 研究步驟.....................................................................................................6. 第二章. 演算法及文獻探討 .....................................................................................7. 2.1. 高等加密標準演算法介紹.........................................................................7 2.1.1 演算法流程 ..........................................................................................7 2.1.2 位元組替換與反位元組替換 ..............................................................8 2.1.3 移列轉換與反移列轉換 ....................................................................10 2.1.4 混行運算與反混行運算 ....................................................................10 2.1.5 回合金鑰加法運算 ............................................................................11. 2.2. 文獻探討...................................................................................................13 2.2.1 Pawel Chodowiec 架構 ......................................................................13 2.2.2 Gael Rouvroy 架構.............................................................................15. 第三章. 硬體架構與單元設計 ...............................................................................17. 3.1. 小面積 32 位元 AES 電路架構 ...............................................................17. -iv-.

(7) 3.2. 嵌入式系統架構.......................................................................................20 3.2.1 32 位元 AES IP 元件之建立 .............................................................21 3.2.2 系統組織規劃 ....................................................................................22 3.2.3 軟體介面與流程規劃 ........................................................................23. 3.3. 硬體控制式架構.......................................................................................30 3.3.1 Parallel Port 控制器設計 ...................................................................30 3.3.2 SRAM 控制器設計 ............................................................................34 3.3.3 VGA 控制器設計...............................................................................40 3.3.4 FIFO 控制器設計...............................................................................43 3.3.5 AES 控制器設計................................................................................47 3.3.6 電腦端收發與操作介面規劃 ............................................................49. 第四章. 實驗成果分析 ...........................................................................................52 4.1 驗證平台規劃 .......................................................................................52 4.2 32 位元 AES 電路效能比較.................................................................54 4.3 嵌入式系統實驗成果 ...........................................................................56 4.4 硬體控制式實驗成果 ...........................................................................58. 第五章. 結論與未來展望 .......................................................................................60. 參考文獻 .......................................................................................................................61 自. 傳 .......................................................................................................................63. 學術成就 .......................................................................................................................65. -v-.

(8) 表 目 錄. 表 1-1. 暴力破解法所需花費的平均時間...............................................................2. 表 2-1. S-box 替換表 ................................................................................................9. 表 2-2. InvS-box 替換表...........................................................................................9. 表 3-1. 命令與功能對照表.....................................................................................25. 表 4-1. 32 位元 AES 硬體實現資源比較表 ..........................................................54. -vi-.

(9) 圖 目 錄. 圖 1-1. 研究步驟流程圖...........................................................................................6. 圖 2-1. AES 加解密流程圖 ......................................................................................7. 圖 2-2. 狀態陣列與範例表示圖...............................................................................8. 圖 2-3. 位元組替換/反位元組替換示意圖..............................................................8. 圖 2-4. 移列轉換/反移列轉換示意圖....................................................................10. 圖 2-5. 混行運算/反混行運算示意圖....................................................................11. 圖 2-6. 回合金鑰加法運算示意圖.........................................................................12. 圖 2-7. Block RAM based implementation of SubBytes and InvSubBytes............14. 圖 2-8. Implementation of MixColumns and InvMixColumns...............................14. 圖 2-9. Data arrangement in the folded architecture. ..............................................15. 圖 3-1. 32 位元 AES 實現方塊圖 ..........................................................................17. 圖 3-2. 32 位元 AES 實際電路圖 ..........................................................................18. 圖 3-3. XORs 與 Self_XORs 實際電路圖 .............................................................19. 圖 3-4. 嵌入式系統基本方塊圖.............................................................................20. 圖 3-5. 嵌入式 32 位元 AES IP 電路圖.................................................................21. 圖 3-6. RControl 控制示意圖 .....................................................................................22. 圖 3-7. 嵌入式影像加解密系統方塊圖.................................................................22. 圖 3-8. 電腦端資料傳送資料示意圖.....................................................................24. 圖 3-9. 電腦端資料接收資料示意圖.....................................................................24. 圖 3-10. 執行 Store_Image 命令的封包示意圖 ....................................................25. 圖 3-11. 執行 Display_Image 命令的封包示意圖 ................................................25. 圖 3-12. 執行 Encrypt_Image 命令的封包示意圖 ................................................26. 圖 3-13. 執行 Display_Image 命令的封包示意圖 ................................................26. -vii-.

(10) 圖 3-14. 執行 Read_Time 命令的封包示意圖 ......................................................26. 圖 3-15. 使用者操作介面規劃圖...........................................................................27. 圖 3-16. 嵌入式系統程式流程圖...........................................................................29. 圖 3-17. 狀態機硬體控制系統方塊圖...................................................................30. 圖 3-18. EPP 模式之傳輸協定波形.......................................................................31. 圖 3-19. EPP 模式之硬體電路設計流程...............................................................32. 圖 3-20. Strobe 訊號偵測電路 ...............................................................................33. 圖 3-21. Parallel Port 控制狀態機..........................................................................34. 圖 3-22. Parallel Port 控制器硬體電路圖..............................................................34. 圖 3-23. 記憶體空間規劃示意圖...........................................................................36. 圖 3-24. 記憶體硬體電路設計流程.......................................................................37. 圖 3-25. 記憶體硬體電路設計流程(續) ................................................................38. 圖 3-26. 記憶體控制狀態機...................................................................................38. 圖 3-27. 記憶體控制器位置線硬體電路圖...........................................................39. 圖 3-28. 記憶體控制器資料線與控制線硬體電路圖...........................................40. 圖 3-29. 同步訊號示意圖.......................................................................................41. 圖 3-30. 同步訊號設計流程...................................................................................42. 圖 3-31. 同步訊號產生硬體電路圖.......................................................................42. 圖 3-32. 水平同步訊號內 t1 與 t2 佔用示意圖.......................................................44. 圖 3-33. 讀取影像資料至緩衝區流程...................................................................45. 圖 3-34. 緩衝區控制狀態機...................................................................................45. 圖 3-35. 緩衝區控制器硬體電路圖.......................................................................46. 圖 3-36. 硬體控制式 32 位元 AES IP 電路圖.......................................................47. 圖 3-37. 執行回合數與資料存取示意圖...............................................................48. 圖 3-38. AES IP 與控制狀態機圖..........................................................................48. 圖 3-39. AES 控制器硬體電路圖 ..........................................................................49. -viii-.

(11) 圖 3-40. 資料區與位置區規劃圖...........................................................................50. 圖 3-41. 使用者操作介面規劃圖...........................................................................51. 圖 4-1. Xilinx Spartan-3E 1600E 實驗板 ...............................................................52. 圖 4-2. Altera DE2 實驗板 .....................................................................................53. 圖 4-3. 嵌入式系統實驗結果效能圖.....................................................................56. 圖 4-4. 硬體控制式影像實驗結果圖(使用者操作介面) ......................................58. 圖 4-5. 硬體控制式影像實驗結果圖(外接螢幕) ..................................................59. -ix-.

(12) 第一章. 1.1. 緒論. 研究背景 隨著資訊科技的進步,現在的消費性電子產品的功能愈來愈多,也做的愈來. 愈精巧,提供更為人性化的服務,如具有照相功能的手機、個人數位助理(Personal Digital Assistant, PDA)…等,這類影像擷取裝置之電子產品要拍下重要資料是輕 而易舉的,而且所有的資料都被資訊化、數位化,並儲存於記憶卡內。. 也拜半導體技術的快速發展之賜,消費性電子售價逐步降低,數位相機、照 相手機已經成為現代人不可或缺的電子產品之一,並替使用者記錄下生活圖像及 私人資訊,但若該裝置不慎遺失或遭有心人士竊取時,數位相機、照相手機記憶 卡內儲存之資料將透過網際網路被惡意散播與外流,如先前知名藝人手機送修 時,遭受手機行員工竊取私人隱私之照片;英國也有一名女性相機遺失,則自拍 照片遭人上傳於交友網站,此類案件層出不窮。數位時代中資訊的價值愈來愈 高,相對的,機密資料外洩後所需承擔的代價也是不可承受的高,也衍生出資料 保密與隱私權等之議題。. 綜合上述,數位相機、照相手機除了具有基本影像擷取之功能外,也應具有 資料妥善保護之措施,若要完完全全的達到資料保護,選用具有公信力而且難以 被破解的加密演算法必定會達到不錯的效果。. 所謂加密就是利用某種方式將資訊打散,避免無權檢視資訊內容的人看到資 訊的內容,而且允許真正獲得授權的人,才能看到資訊的內容,現今許多著名的 加密法都是區段加密法(Block Cipher),以下列出三種較著名的加密法來分析其優. -1-.

(13) 缺點並採用其一作為本文重點研究:. 1. 資料加密標準(Data Encryption Standard, DES) 是由 IBM 在 1970 年代初期發展出來的演算法,其使用很廣泛,特別在 商業領域,經過審核、修正及認可後,於 1977 年正式由美國國家標準與技術 協會(NIST)採用。其使用的金鑰長度為 56 位元、一次可以處理 64 位元的明 文(Plaintext),每次需經過 16 次循環後才輸出密文(Ciphertext)。 2. Triple DES(TDES) 為 DES 的延伸,可以使用 3 把或 2 把不同的金鑰,其明文與金鑰長度皆 與 DES 相同。其加密過程總共經過 3 次的 DES 運算,依序是:加密、解密 與加密;解密次數也是 3 次,過程依序是:解密、加密與解密。 3. 高等加密標準(Advanced Encryption Standard, AES) NIST 在 1997 年公布 AES 徵選活動,經過無數的篩選,最後選用 Rijndael 演算法作為新一代的加密標準,在目前公佈的文件中,已公佈 AES 演算法可 使用 128 位元、192 位元或 256 位元長度的金鑰,對 128 位元的區段進行加 密,進行 10~14 次循環才輸出密文。. 表 1-1. 暴力破解法所需花費的平均時間. (資料來源:William Stallings [16]). 就被破解的可能性來分析,DES 遭暴力攻擊法(Brute-Force Attack)破解的程 度非常之高,從表 1-1 可以見到,具有 56 位元長度的金鑰,相當於 256=7.2×1016. -2-.

(14) 種可能的值,以現在電腦運算的能力是很容易能破解,但是前提是需要能夠辨識 明文資料;而 TDES 使用 3 把不同的金鑰與 3 次 DES 的運算,似乎是建立了更 牢靠的加密法則,即至目前也尚未見到可行的破解方式;至於 AES 擁有三種不 同長度之金鑰,故沒有暴力破解金鑰長度的計算方法,也是更難以被破解;就處 理速度來時間分析,TDES 處理時間約略是 DES 的三倍,AES 必定會較 TDES 來 之快速。比較結果明顯可見,牢靠度與運算速度都勝過其他兩者的 AES 演算法, 成為本文用來保護影像資料的加密法。. -3-.

(15) 1.2. 研究動機 市面上數位相機及照相手機廠商,都注重於影像擷取的品質、裝置的重量、. 電源消耗及處理速度方面;另外像是場景、人臉的自動辨識,以及防手震等附加 功能,用以提升消費者購買意願。但是都未建立影像加密技術,保護資料的安全。. 而 AES 是目前公認最安全的加密演算法,選擇其作為加密法來保護是最好 不過,但是由於影像的資料量相當龐大,因此產生不少的計算量,若以軟體來實 現的話,必定會造成處理器的負擔,並且耗費相當長的處理時間;而有鑑於晶片 設計技術快速成長,許多學者便想到使用硬體來實現 AES 演算法,進行多樣的 討論與研究,除了能夠對於上述處理速度的問題有所解決,另外對於不同的應 用,能從中挑選適用的架構的,亦有助於縮短產品的開發時程與降低成本。. 因此本研究欲發展小面積的 32 位元 AES 硬體電路,除了低成本考量之外, 並能適用於像是龐大資料量的影像加密與解密,達到資料保護。. -4-.

(16) 1.3. 研究目的. 綜合上節所談,本研究目的扼要列出三點:. 1.. 以 AES-128 的規格,發展小面積的 32 位元 AES 電路,以達到低成本的目的 並減少佔用其他系統資源。. 2.. 將數位影像進行加密,達到保護資料之目的,以減少遭他人或有心人士惡意 傳播出去。. 3.. 因前人的研究多針對單方面的加解密處理硬體,進行設計或改善,對於如何 將其整合及應用至系統卻不多,故提出實際的資料保護技術整合方式,並規 劃 AES 硬體整合之平台,以讓後續研究者能有所參考。. -5-.

(17) 1.4. 研究步驟. 本研究的步驟可以分為前期研究、中期研究與後期研究,如圖 1-1 所示。. 1. 前期研究主要工作為擬定研究方針與文獻搜尋探討。 2. 中期研究為硬體功能與單元設計,需經過電腦模擬的驗證與實驗平台的驗證, 如有任何驗證沒有通過,則必須針對發生的問題進行探討,並重新回到電路設 計的步驟。 3. 後期研究以紀錄實驗的數據,並成論文撰寫為主。. 開始. 電路設計. 實驗數據記錄 yes. 研究方向決定. 模擬驗證. yes. no. 相關文獻探討. 平台驗證 no. 完成. 問題探討. 圖 1-1. 論文撰寫. 研究步驟流程圖. -6-.

(18) 第二章. 2.1. 演算法及文獻探討. 高等加密標準演算法介紹 高等加密標準(Advanced Encryption Standard, AES)演算法[1],由美國國家標. 準和技術研究院(National Institute of Standard and Technology, NIST)於西元 1997 年公開徵求的選拔中,經過逐步篩選直至西元 2001 年脫穎而出,成為下一代加 密演算法的標準。. 2.1.1 演算法流程. 圖 2-1. AES 加解密流程圖. 圖 2-1 為 AES 加解密流程,(a)為加密流程、(b)與(c)為解密流程,輸入的明 文(Text)與輸出的密文(Cipher)皆為 128 位元(Bit),於流程中可發現加密時其主要 運算為移列運算(ShiftRow)、位元組替換(SubByte)與混行運算(MixColumn);反之. -7-.

(19) 解 密 為 反 移 列 運 算 (InvShiftRow) 、 反 位 元 組 替 換 (InvSubByte) 與 反 混 行 運 算 (InvMixColumn)。. 我們將輸入的明文、每回合運算的結果與輸出的密文,表示為狀態陣列(State Array),由 16 個位元組(Byte)資料組合而成,如圖 2-2 所示,以方便下面各節之 動作說明。. 資料 = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c S0,0 S0,1 S0,2 S0,3. 2b. 28. ab. 09. S1,0 S1,1 S1,2 S1,3. 7e. ae. f7. cf. S2,0 S2,1 S2,2 S2,3. 15. d2. 15. 4f. S3,0 S3,1 S3,2 S3,3. 16. a6. 88. 3c. (a) 狀態陣列. 圖 2-2. (b) 範例. 狀態陣列與範例表示圖. 2.1.2 位元組替換與反位元組替換. S0,0 S0,1 S0,2 S0,3 S1,0. S1,1. S1,1-1 + Affine. S1,2 S1,3. S2,0 S2,1 S2,2 S2,3 S3,0 S3,1 S3,2 S3,3 (a) Original State. 圖 2-3. S'0,0 S'0,1 S'0,2 S'0,3 S'1,0. S-box or InvS-box. S'1,1. S'1,2 S'1,3. S'2,0 S'2,1 S'2,2 S'2,3 S'3,0 S'3,1 S'3,2 S'3,3 (b) After Operation. 位元組替換/反位元組替換示意圖. -8-.

(20) 位元組轉換(SubBytes)是一個以位元組為單位的非線性替換運算,計算過程 是先求得位元組的乘法反元素(Multiplicative Inverse)再與仿射(Affine)矩陣做運 算,即可求得轉換數值,示意如圖 2-3 所示,若將數值 00H~FFH 帶入轉換,即可 求出表 2-1 與表 2-2 的替換表。. 表 2-1. S-box 替換表. 表 2-2. InvS-box 替換表. -9-.

(21) 2.1.3 移列轉換與反移列轉換 S0,0 S0,1 S0,2 S0,3 S1,1 S1,2 S1,3 S1,0 S2,2 S2,3 S2,0 S2,1 S0,0 S0,1 S0,2 S0,3. S3,3 S3,0 S3,1 S3,2. S1,0 S1,1 S1,2 S1,3. (b) After ShiftRow. S2,0 S2,1 S2,2 S2,3 S3,0 S3,1 S3,2 S3,3. S0,0 S0,1 S0,2 S0,3. (a) Original State. S1,3 S1,0 S1,1 S1,2 S2,2 S2,3 S2,0 S2,1 S3,1 S3,2 S3,3 S3,0 (c) After InvShiftRow. 圖 2-4. 移列轉換/反移列轉換示意圖. 將狀態列以 0~3 之位移量做資料旋轉,以移列轉換為例,第 1 列保持不動、 第 2 列向左旋轉 1 次、第 3 列向左旋轉 2 次與第 4 列向左旋轉 3 次;反之,反移 列轉換則是將狀態列向右旋轉,其旋轉示意如圖 2-4 所示。. 2.1.4 混行運算與反混行運算 將狀態行內資料與固定係數相乘求得,其示意如圖 2-5 所示,混行運算計算 如(2-1)式與(2-2)式、反混行運算計算如(2-3)式與(2-4)式。. -10-.

(22) 圖 2-5. 混行運算/反混行運算示意圖. Mix( x) = {03}x 3 + {01}x 2 + {01}x + {02} .................................................................... (2-1) ⎡ S '0,c ⎤ ⎡02 ⎢S' ⎥ ⎢ ⎢ 1,c ⎥ = ⎢ 01 ⎢ S '2,c ⎥ ⎢ 01 ⎢ ⎥ ⎢ ⎣ S '3,c ⎦ ⎣03. 03 01 01⎤ ⎡ S 0,c ⎤ ⎢ ⎥ 02 03 01⎥⎥ ⎢ S1,c ⎥ 01 02 03⎥ ⎢ S 2,c ⎥ ⎥⎢ ⎥ 01 01 02⎦ ⎣ S3,c ⎦. for. 0 ≤ c ≤ 3 .................................................... (2-2). Mix −1 ( x) = {0b}x 3 + {0d }x 2 + {09}x + {0e} .................................................................. (2-3) ⎡ S '0,c ⎤ ⎡ 0e 0b 0d 09 ⎤ ⎡ S 0,c ⎤ ⎢S' ⎥ ⎢ ⎥⎢ ⎥ ⎢ 1,c ⎥ = ⎢ 09 0e 0b 0d ⎥ ⎢ S1,c ⎥ ⎢ S '2,c ⎥ ⎢0d 09 0e 0b ⎥ ⎢ S 2,c ⎥ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎣ S '3,c ⎦ ⎣ 0b 0d 09 0e ⎦ ⎣ S3,c ⎦. for. 0 ≤ c ≤ 3 .................................................. (2-4). 2.1.5 回合金鑰加法運算 即是狀態與金鑰擴展後的各個回合金鑰做有限場之加法運算,如圖 2-6 所示。. -11-.

(23) S0,0 S0,1 S0,2 S0,3. K0,0 K0,1 K0,2 K0,3. S'0,0 S'0,1 S'0,2 S'0,3. S1,0 S1,1 S1,2 S1,3. K1,0 K1,1 K1,2 K1,3. S'1,0 S'1,1 S'1,2 S'1,3. S2,0 S2,1 S2,2 S2,3. K2,0 K2,1 K2,2 K2,3. S'2,0 S'2,1 S'2,2 S'2,3. S3,0 S3,1 S3,2 S3,3. K3,0 K3,1 K3,2 K3,3. S'3,0 S'3,1 S'3,2 S'3,3. (a) Original State. Round Key. (b) After Operation. 圖 2-6. 回合金鑰加法運算示意圖. -12-.

(24) 文獻探討. 2.2. 在本章中,將探討幾位學者之研究成果,並介紹其特色,文獻[2]與[3]採用管 線式(Pipeline)的安排來達到 30Gbps 以上的高產率,為達到此目標,亦使用了相 當多的電路面積;文獻[4]以 LEON 處理器來結合一個 AES 的加速器,此加速器 透過兩個不同的介面:Memory-Mapped 與 CPI,來對記憶體以及 LEON 處理器內 部的單元做快速的資料存取,亦可以達到 20Mbps 的產率;文獻[5]全部使用 BRAM 來完成 AES 所包含的動作,其數量高達 11 個之多,在 FPGA 內能夠節省較多的 資源使用。. 文獻[6]將一些複雜計算,預先產生,然後儲存於 BRAM 內,用以減少運算 量,並提及另一種與文獻[9]不同整合方法與排列方式,對於本研究有莫大的影 響;文獻[7]提出面積非常小的 8 位元 AES 硬體架構設計,並且與 PicoBlaze 處理 器結合,但是 需要耗費高達 3000 個時脈才能完成 128 位元的資料處理。. 文獻[8]與文獻[9]主要是本篇論文比較的對象,將獨立出來在後面章節做更詳 細的說明;文獻[10]以 32 位元的架構實現 AES 演算法,使用 BRAM 來完成移列 轉換的過程,並也達到不錯的效果;文獻[12][13][14][15]主要是針對關於位元組 替換(SubByte)的處理,提出求得乘法反元素之硬體電路設計,不同於查表法的設 計,屬於即時運算的方式,對於小面積實做上亦有所貢獻。. 2.2.1. Pawel Chodowiec 架構. Pawel Chodowiec 之架構[8]是使用 FPGA 之雙埠((Dual-Port)BRAM,如圖 2-7 所示,將資料同放入一個雙埠 BRAM 中,位置 000H~0FFH 區放置位元組替換(S-box) 資料;位置 100H~1FFH 區放置反位元組替換(InvS-box)資料,如此便可以利用位 置線的最高的位元來控制選擇加密的操作或是解密的操作,以達到在 FPGA 內節. -13-.

(25) 省面積之目的。. 圖 2-7. Block RAM based implementation of SubBytes and InvSubBytes. 而 在 進 行 混 行 運 算 (MixColumn) 時 乘 以 多 項 式 c(x) , 進 行 反 混 行 運 算 (InvMixColumn)則要選擇 c(x).d2(x)代替原本之多項式 d(x),如圖 2-8 所示,與 其他學者作法較不相同,但是消耗的硬體資源相當接近。. 圖 2-8. Implementation of MixColumns and InvMixColumns. 輸入(Input)以及輸出(Output)兩個部份之暫存器以記憶體(雙埠 BRAM)取 代,如圖 2-9 所示,用以減少硬體資源之使用,但是需要額外控制記憶體資料的 存放位置,增加控制複雜度。. -14-.

(26) 圖 2-9. 2.2.2. Data arrangement in the folded architecture.. Gael Rouvroy 架構. Gael Rouvroy[9]提出之架構,將 AES 演算法,實現在 Xilinx Spartan-3 系列與 Virtex- Ⅱ 系 列 晶 片 上 , 主 要 貢 獻 , 提 出 將 位 元 組 替 換 (SubByte)/ 混 行 運 算 (MixColumn)與反位元組替換(InvSubByte)/反混行運算(InvMixColumn)的整合方 案,先將位元組替換數值與相乘係數寫成式(2-5~2-8),之後再將 T0~T3 結果相加, 整理成式(2-9),便是整合後的結果;同理,反位元組替換與反混行運算亦可如此 整合。但是後來因考慮到加密或解密最後一回合不經過混行運算或反混行運算的 問題,故將整合的資料改變為式(2-10),但是需由另外的電路來選擇,並增加繞 線複雜度。. ⎡02 • SB(a)⎤ ⎢ SB(a) ⎥ ⎥ T0 (a) = ⎢ ⎢ SB(a) ⎥ ⎢ ⎥ ⎣03 • SB(a)⎦. ⎡03 • SB(a)⎤ ⎢02 • SB(a)⎥ ⎥ .............................................. (2-5)(2-6) T1 (a) = ⎢ ⎢ SB(a) ⎥ ⎢ ⎥ ⎣ SB(a) ⎦. -15-.

(27) ⎡ SB(a) ⎤ ⎢03 • SB(a)⎥ ⎥ T2 (a) = ⎢ ⎢02 • SB(a)⎥ ⎢ ⎥ ⎣ SB(a) ⎦. ⎡ SB(a) ⎤ ⎢ SB(a) ⎥ ⎥ .............................................. (2-7)(2-8) T3 (a) = ⎢ ⎢03 • SB(a)⎥ ⎢ ⎥ ⎣02 • SB(a)⎦. ⎡ Mix 0 ⎤ ⎢ Mix ⎥ 1⎥ ⎢ = T0 (S 0 ) ⊕ T1 (S1 ) ⊕ T2 (S 2 ) ⊕ T3 (S3 ) ..................................................... (2-9) ⎢Mix 2 ⎥ ⎢ ⎥ ⎣ Mix3⎦. ⎡02 • SB(a) ⎢ SB(a) CT0 = ⎢ ⎢ SB' (a) ⎢ ⎣03 • SB(a). 0e • SB' (a) ⎤ 09 • SB' (a)⎥⎥ ........................................................................ (2-10) 0d • SB' (a)⎥ ⎥ 0b • SB' (a)⎦. 整合後的資料 16-Kbit,也使用雙埠 BRAM 來存放,恰好未超過此系列 BRAM 的規格 18-Kbit,總共用使用了 2 個記憶體達成,而相較於 Spartan-Ⅱ系列 BRAM 的規格只有 4-Kbit,故此整合方案總共需要使用至 16 個才能達成。. 在 FPGA 的晶片上,除了有可以完成邏輯運算與暫存功能的可編程邏輯區域 (Configurable Logic Blocks, CLBs)資源,亦包含內建可使用的記憶體資源,稱為 Block RAM,依晶片型號其數量亦有多寡。使用此記憶體擁有許多的優點,如: 不會額外造成 CLBs 資源的消耗、存取速度比外部記憶體快等。於是便有許多設 計,是利用到此資源,來減少其他資源的消耗;而共用電路也是能減少面積的方 式之一,如何設計將某些特定電路做有效的共用方式,且不會造成太多的變動, 也是下個章節要說明的部分。. -16-.

(28) 第三章. 硬體架構與單元設計. 本章將說明各硬體電路的實現方法,首先在 3.1 節提出了小面積 32 位元 AES 電路架構,而電路實際完成後,本身並不足以能夠獨自應用,還需要與控制單元 結合來處理資料的流向。因此,本研究也實驗了兩種不同的控制方式,來完成影 像加解與解密之實用,將於 3.2 節與 3.3 節中詳細說明。. 3.1. 小面積 32 位元 AES 電路架構 參閱圖 2-1 的(a)與(c),可發現其加密與解密的流程具有很高的相似性,此指. 可以採用相同的架構來完成加密與解密,但需要在回合金鑰上做些許改變,圖 3-1 為 32 位元 AES 實現方塊圖。. 加密. 解密. 32. 32. ShiftRow. InvShiftRow. SubByte/MixColumn. InvSubByte/InvMixColumn. rk(i). 圖 3-1. rk(i). 32 位元 AES 實現方塊圖. 加密時,明文資料經由 ShiftRow、SubByte/MixColumn 與 AddRoundKey(Rk) 執 行 數 個 回 合 將 資 料 加 密 ; 解 密 時 , 密 文 資 料 經 由 InvShiftRow 、 InvSubByte/InvMixColumn 與 AddRoundKey(rk),執行數個回合將資料還原。關於. -17-.

(29) 各方塊內的電路與細節的部分,將以圖 3-2 來呈現。. 1. 0. …. 圖 3-2. 32 位元 AES 實際電路圖. 圖 3-2 為移列轉換(ShiftRow)、混行運算(MixColumn)及位元組替換(SubByte) 之電路細節:. 1.. ShiftRow/InvShiftRow 使用 96 位元的移位暫存器(a0, a1, a2)和 128 位元的旋轉 暫存器(b0, b1, b2, b3)來達成,當 e=0 時,128 位元的資料從 a0, a1, a2, ak 平 行載入至 b0, b1, b2, b3;經過了 3 個連續的週期(e=1, 2, 3)產生移列轉換. -18-.

(30) (ShiftRow)的結果或反移列轉換(InvShiftRow)的結果,並透過 enc 控制腳來做 選擇。 SubByte & MixColumn 使 用 512×32 的 記 憶 體 查 表 (Sbox/Mult) 與 XORs/Self_XORs 電路來達成,詳細內容如圖 3-3 所示。Sbox 與 MixColumn 係數(2, 3, 1, 1)相乘後的結果儲存於前面 256 個位置、後面 256 個位置儲存 InvSbox 與 InvMixColumn 係數(e, b, d, 9)相乘後的結果;從第 0 回合至第 Nr-1 回合,查表結果經過 XORs 電路產生 32 位元 MixColumn/InvMixColumn 的結 果(MX/MX’)、而當最後第 Nr 回合時,查表結果經過 Self_XORs 電路產生 32 位元 SubByte/InvSubByte 的結果(SB/SB’),因為 2♁3♁1♁1=1、e♁b♁d♁. …. 9=1。. …. 2.. 圖 3-3. XORs 與 Self_XORs 實際電路圖. -19-.

(31) 嵌入式系統架構. 3.2. Xilinx 公司的嵌入式系統開發軟體(Xilinx Platform Studio, XPS),能很方便且 快速讓使用者建立嵌入式系統的環境,並且提供些許開放的智慧財產(Intellectual Property, IP)元件給予套用,如非同步式串列介面(Universal Asynchronous Receiver Transmitter, UART)、通用輸入/輸出(General Purpose Input/Output, GPIO)與串列週 邊介面(Serial Peripheral Interface, SPI)等 IP 元件。. 除了開發軟體所提供的 IP 元件之外,也能允許使用者建立自訂規格的 IP 元 件,而任何電路只要能夠變成 IP 元件的形式,便可以隨時的增減至系統內部使 用。. bram GPIO PortA. PLB BUS. MicroBlaze (softcore) PortB. User IP. INS CTRL. DATA CTRL UART. 圖 3-4. SPI. 嵌入式系統基本方塊圖. 如圖 3-4 所示的嵌入式系統環境,是由記憶體(Block RAM, BRAM)、 MicroBlaze 中央處理器(CPU)與數量不等的 IP 元件所構成。軟體程式與資料經過 編譯(Compiler)後存入記憶體內並透過控制器提供給處理器使用,再透過處理器 內部匯流排(Processor Local Bus, PLB)達成處理器與各個 IP 元件之間的連接與溝 通。. -20-.

(32) 3.2.1. 32 位元 AES IP 元件之建立. 為了將本研究設計的 32 位元 AES 電路與系統連接並使用,首要步驟,必須 將其改變成 IP 元件。故可以透過開發軟體產生屬於其 IP 元件的介面(IP InterFace, IPIF)與 IP 的連線(IP InterConnect, IPIC),以上兩者便是扮演處理器和 IP 元件之間 的溝通橋樑。. PLB BUS. 圖 3-5. 嵌入式 32 位元 AES IP 電路圖. 本研究所設計的 32 位元 AES IP 元件如圖 3-5 所示,T0~T3 為設定明文區、 C0~C3 為設定密文區、RControl 為控制區,皆由 32 位元暫存器所構成。明文設定區 資料備妥後,由 32 位元 AES 電路讀入處理,經過數回合後輸出至設定密文區。. 控制區之資料意義如圖 3-6 所示,寫入部分,總共使用 8 位元,包含致能位 元(AES_ENABLE,1 位元;1 表示開始、0 表示停止)、加解密位元(AES_ENC, 1 位元;1 表示加密、0 表示解密)與金鑰記憶體位置線(KEYRAM_ADDR,6 位元);讀出部分,總共使用 1 位元,包含資料有效位元(AES_VALID,1 位元; 1 表示有效、0 表示無效)。. -21-.

(33) 圖 3-6. RControl 控制示意圖. 3.2.2 系統組織規劃 嵌入式影像加解密系統,包含軟體與硬體的整合,圖 3-7 為本研究所規劃的 系統組織圖,實現於 Spartan 3E 1600E 的實驗板上。. ... ... .... 圖 3-7. 嵌入式影像加解密系統方塊圖. 硬體部分,FPGA 元件內部所使用的資源分別是 MicroBlaze、BRAM、UART IP、SPI IP 與 32 位元 AES IP;外部元件則是快閃記憶體(Flash Memory),其扮演 功用描述如下: z. MicroBlaze:為一個 32 位元的軟式中央處理器,採用精簡指令集(Reduced Instruction Set Computer, RISC)的方式實現,在本系統中使用它來存取記憶體 並執行指令,以控制各個 IP 元件的動作。. z. BRAM:經過編譯後的軟體程式存放於此,並提供中央處理器存取資料。. z. UART IP:非同步式串列介面(UART),從以前發展至今,已有多年歷史,在. -22-.

(34) 常用的桌上型電腦主機可看見,如:序列埠(COM Port)。而在本處是指符合 此介面標準的硬體電路控制器,利用此 IP 元件,讓電腦端與實驗板能夠相互 傳輸命令與資料。 z. SPI IP:串列週邊介面(SPI),特色是使用較少的接腳數量(6 或 8)就能完成資 料的傳輸,因此可減少電路板空間、耗能及成本,若在裝置上有擁此種介面, 則存取資料時需符合其傳輸協定。由於在外部的快閃記憶體採用此種介面, 故需利用此 IP 元件來控制存取。. z. Flash Memory:是一種記憶晶片,特性是可用電子信號抹除晶片中的資料或 做修改的動作,在斷電之後,仍可保存資料,有存取次數的限制。此顆記憶 體的容量大小為 16Mbit,可以表示成 32 個區塊(Sector)、1 個區塊有 256 頁 (Page)、1 頁有 256 個位元組(Byte)。在這裡使用 3 個空間(Original、Encrypted 與 Decrypted)來存放影像資料,每一個空間各佔用 1 個區塊。. 放 置 於 BRAM 的 軟 體 程 式 , 主 要 有 4 種 程 式 的 流 程 處 理 , 分 別 是 Store_Image、Display_Image、Encrypt_Image 與 Decrypt_Image,而其餘部分為包 含於流程內的副程式,如:金鑰擴展的相關程式、快閃記憶體的存取控制程式與 電腦端傳送接收處理程式等,針對這些幾種程式,於下章節有詳細的說明。. 3.2.3 軟體介面與流程規劃 硬體電路裝置,若能搭配具有彈性優勢的軟體程式,必能提升其執行的效 率,電腦端使用者操作介面與嵌入式系統內部軟體程式的規劃,將於此一節做說 明:. 1. 資料傳輸規劃 電腦端與實驗板之間採用半雙工(Half-Duplex)的工作模式,透過 RS-232 進行. -23-.

(35) 資料傳輸,所謂半雙工,即是一次僅能有一方傳輸資料,另一方須等到對方傳送 完後才能傳送。因此我們先定義出之間的通訊格式,如圖 3-8 與圖 3-9 所示,電 腦端發出命令(CMMAND)與 FLASH 區塊(SECTOR)代號後,進入等待狀態,待 實驗板收到命令並準備妥當後,產生回應(RESPONSE)訊號,開始進行資料區 (DATA BLOCK)的傳送或接收;資料區的緩衝區(BUFFER)大小為 256 個位元組。. DATA BLOCK. 電腦端. COMMAND. SECTOR. BUFFERN. RESPONSE. 實驗板. 圖 3-8. RESPONSEN. 電腦端資料傳送資料示意圖. DATA BLOCK. 電腦端. COMMAND. SECTOR. RESPONSEN. RESPONSE. 實驗板. 圖 3-9. BUFFERN. 電腦端資料接收資料示意圖. 所有的命令皆從電腦端所發出,其功能對照如表 3-1 所示;而為了讓命令與 封包的關係能更加明確,採用封包的第一個英文字母來表示,將各命令執行時的 示意圖依序畫出,如圖 3-10、圖 3-11、圖 3-12、圖 3-13 與圖 3-14 所示。. 舉例來說,若要執行 Stroe_Image 命令,則由電腦端先發出 C=01 與 S(Ori) 的位置,等到取得實驗板回應後,再將影像資料分為 225 次(160×120×3÷256)依序 的傳送出去,如圖 3-10 所示;Display_Image 命令類似於 Store_Image 命令,純粹 是傳送端與接收端的不同,如圖 3-11 所示;Encrypt_Image 命令也與 Decrypt_Image. -24-.

(36) 命令執行流程很相似,但執行的內容不同,如圖 3-12 與圖 3-13 所示。若要加密 影像,首先從電腦端發出 C=03 與 S(Ori)的位置,等到取得實驗板回應後,再將 原始金鑰資料(16 Byte)傳送出去,待實驗板軟體金鑰擴展後,啟動 AES IP 執行影 像加密,並回傳加密金鑰(11×16 Byte),Decrypt_Image 命令可以依此類推。. 表 3-1. 命令與功能對照表. COMMAND. BUFFER. 功能描述. Store_Image(01). IMAGE DATA. 接收電腦影像資料(B1~B225)並存入記憶體. Display_Image(02). IMAGE DATA. 讀取記憶體影像資料(B1~B225)並回傳電腦. Encrypt_Image(03). KEY DATA. Decrypt_Image(04). KEY DATA. Read_Time(05). TIME DATA. 圖 3-10. 圖 3-11. 接收電腦原始金鑰(B1)後, 產生加密金鑰(B2)並回傳、執行影像加密 接收電腦原始金鑰(B1)後, 產生解密金鑰(B2)並回傳、執行影像解密 回傳執行時間(B1). 執行 Store_Image 命令的封包示意圖. 執行 Display_Image 命令的封包示意圖. -25-.

(37) 圖 3-12. 執行 Encrypt_Image 命令的封包示意圖. 圖 3-13. 執行 Display_Image 命令的封包示意圖. 圖 3-14. 執行 Read_Time 命令的封包示意圖. 2. 使用者操作介面 如圖 3-15 之規劃,實際畫面可與圖 4-3 實驗結果對照,分為 A~D 四種區域: z. A 區為金鑰區:在 A-1 區供使用者輸入金鑰,最大輸入字元數量為 16 個 字元;A-2 區為 11 組金鑰擴展後的結果,顯示格式以 16 進制表示法。. z. B 區為影像區:影像大小皆為 160×120 彩色圖片,在 B-1 區供使用者挑 選欲處理之圖片;B-2 區為影像加密後的顯示區;B-3 區為影像解密後的 顯示區。. z. C 區為按鈕區:依據先前規劃之封包格式,讓使用者選擇所要發送的命 令至嵌入式平台上。. z. D 區為流程與執行時間顯示區:顯示目前嵌入式平台正在執行何種命令. -26-.

(38) 與其耗費之時間。. 圖 3-15. 使用者操作介面規劃圖. 3. 嵌入式系統程式流程 在嵌入式系統上建立的軟體程式流程如圖 3-16 所示,程式會先進行 UART 初始化設定,設定項目與數值如下: z. 傳送鮑率(Baud):115,200 bps(bit per second)。. z. 資料位元:8 位元。. z. 同位檢查:沒有同位檢查。. z. 停止位元:1 位元。. 接著便是針對命令的判斷與執行其副程式: z. CMD 值為 01:如圖 3-7 的 Store_Image,首先抹除所規劃的 Original 空 間等待寫入,接著接收電腦端傳輸的影像資料並寫入 Original 空間。. -27-.

(39) z. CMD 值為 02:如圖 3-7 的 Display_Image,選擇 Encrypted_Image 或 Decrypted_Image 空間的影像資料,並讀出傳回至電腦端顯示。. z. CMD 值為 03:如圖 3-7 的 Encrypt_Image,首先接收電腦端傳輸的原始 金鑰並將其經過軟體擴展(KeyExpansion),而後控制 AES IP 將擴展後之 金鑰存入內部的 Key RAM,接著抹除所規劃的 Encrypted_Image 空間等 待寫入。上述步驟完成後,即可將影像資料從 Original 空間讀出經由 AES IP 進行加密處理後寫入 Encrypted_Image 空間。. z. CMD 值為 04:如圖 3-7 的 Decrypt_Image,首先接收電腦端傳輸的原始 金鑰並將其經過軟體擴展(InvKeyExpansion),而後控制 AES IP 將擴展後 之金鑰存入內部的 Key RAM,接著抹除所規劃的 Decrypted_Image 空間 等待寫入。上述步驟完成後,即可將影像資料從 Encrypted_Image 空間讀 出經由 AES IP 進行解密處理後寫入 Decrypted_Image 空間。. z. CMD 值為 05:Read_Time,讀取前次所下命令的流程執行時間。. -28-.

(40) START. UART INIT. CMD = ?. 01 Erase Flash. Read PC image via RS232. 02 Read_Encrypted or Read_Decrypted Send to PC for Display. Write_Original. 圖 3-16. 03. 04. Read key via RS232. Read key via RS232. KeyExpansion and store. InvKeyExpansion and store. Erase Flash. Erase Flash. Read_Original. Read_Encrypted. Do_ Encryption. Do_Decryption. Write_Encryption. Write_Decryption. 05 Send time to RS232. 嵌入式系統程式流程圖. 由於採用 RS-232 與 SPI 介面的記憶體,所以本系統耗費最多時間的地方, 分別是電腦端與實驗板系統之間的資料傳輸與存取快閃記憶體的資料,若要減少 時間的耗費,讓整體的執行速度能有提升,改選用其他傳輸介面與記憶體是個直 接的方法,亦是本研究所提出的第二種架構,將在第 3.3 節詳細說明。. -29-.

(41) 硬體控制式架構. 3.3. 本節將詳細說明第二種的設計方式,採用 HDL 硬體描述語言來達成實用, 如圖 3-17 所示,電腦端利用並列埠(Parallel Port)的資料與位置讀寫區,一方面存 取靜態記憶體(Static RAM)與金鑰記憶體(Key RAM)的資料;另一方面從使用者操 作介面控制整體電路的動作,如:影像加密與解密、控制螢幕開啟或關閉等。而 外接液晶顯示器(Liquid Crystal Display, LCD)所需的控制信號由 VGA 時序(VGA Timing)方塊產生、資料則由 SRAM 取得並存入先進先出(First In First Out, FIFO) 緩衝區後供給。整體電路完成後實現於 Altera 公司出產的 DE2 實驗板上,關於細 節部分將在後續說明。. 圖 3-17. 3.3.1. 狀態機硬體控制系統方塊圖. Parallel Port 控制器設計. 並列埠有許多種的工作模式,如 SPP(Standard Parallel Port)、EPP(Enhanced Parallel Port)與 ECP(Extended Capabilities Port)三種標準,各種標準分別有不同的 傳輸協定。EPP 模式較 SPP 模式多出額外兩組控制的暫存器,且較 ECP 模式更 單純且容易實現,故本研究採用 EPP 標準來設計其電路控制器。. -30-.

(42) EPP 標準由三大廠商 Intel、Xircom 與 Zenith 訂定與開發,於 1994 年新增為 IEEE 1284 的標準,在正常的傳輸下,其速率可以達到 500KB/S(Kilo Byte Per Second)至 2MB/S 不等,所需的傳輸接腳分別是 Wirte(1 位元;1 表示讀取操作、 0 表示寫入操作)、AddrStrobe(1 位元;1 表示未動作、0 表示位置傳輸)、DataStrobe(1 位元;1 表示未動作、0 表示資料傳輸)、Wait(1 位元;1 表示傳輸完成、0 表示能 允許傳輸)與 Data_Bus(8 位元;雙向),而其傳輸協定可分為四種組合:. Write. Write. AddrStrobe. DataStrobe. Wait. Wait. Data_Bus. Data_Bus. (a) 位置寫入. (b) 資料寫入. Write. Write. AddrStrobe. DataStrobe. Wait. Wait. Data_Bus. Data_Bus. (c) 位置讀取 圖 3-18. (d) 資料讀取 EPP 模式之傳輸協定波形. 圖 3-18(a)與(b)分別為寫入波形:首先偵測裝置是否為允許傳輸的狀態,若是 在允許的狀態之下,Write 將會改變為低準位、寫入資料也會放置在 Data_Bus 上, AddrStrobe 或 DataStrobe 的準位也會改變。此時在一定的時間(10μs)範圍內偵測 Wait 訊號是否為高準位,若是為高準位狀態,表示裝置已從 Data_Bus 上接收完. -31-.

(43) 資料,則將各個訊號恢復為初始狀態,完成一個 EPP 的寫入週期。. 圖 3-18(c)與(d)分別為讀取協定:首先偵測裝置是否為允許傳輸的狀態,若是 在允許的狀態之下,AddrStrobe 或 DataStrobe 會改變為低準位狀態。此時在一定 的時間(10μs)範圍內偵測 Wait 訊號是否為高準位,若是為高準位狀態,表示裝置 已將有效資料放置於 Data_Bus 上,則將各個訊號恢復為初始狀態,並同時在 AddrStrobe 或 DataStrobe 上升邊緣(Rising Edge)時刻讀回 Data_Bus 上的資料,完 成一個 EPP 的讀取週期。. 根據上述 EPP 模式的傳輸協定波形與動作說明,即可提出實現為硬體電路的 流程,如圖 3-19 所示,以 Strobe 訊號將流程分為兩部分,再依據 Write 訊號來執 行對應的資料轉移,最後在回覆 Wait 訊號,完成 EPP 的週期。. 圖 3-19. EPP 模式之硬體電路設計流程. -32-.

(44) EPP_ST EPP_END. Strobe. 1-bit Reg1. 1-bit Reg2. 1-bit Reg3. Sys_clk. 圖 3-20. Strobe 訊號偵測電路. 傳輸的動作,依據需求會不定時的發生,要正確判別是否有傳輸的發生,可 以用固定的時間將訊號線進行取樣,若取樣的數值有變動,亦即代表有傳輸的發 生。因此,本研究使用 3 個移位暫存器來處理,如圖 3-20 所示,當 Reg3~1 分別為 100 時,表示訊號為下降邊緣(Falling Edge),有傳輸的開始(EPP_ST);當 Reg3~1 分別為 111 時,表示回應的 Wait 訊號已被偵測到,為傳輸的結束(EPP_END)。. 圖 3-21 是控制狀態機,當系統重置時,進入 S0 狀態,當偵測到傳輸開始信 號後,造成狀態機的改變,若是寫入操作(Write = 0),則狀態改變為 S1 狀態;若 為讀取操作(Write = 1),則狀態改變為 S2 狀態。進入 S1 狀態與 S2 狀態時,皆會 發 送 請 求 (Request) 訊 號 給 SRAM 控 制 器 , 直 至 SRAM 控 制 器 回 覆 認 可 (Acknowledge)訊號,狀態才改變為 S3 狀態,進入 S3 狀態時設定 Wait 訊號為 1, 直到偵測傳輸結束信號後,狀態才改變為 S0 並設定 Wait 訊號為 0,結束一筆資 料的傳輸。. -33-.

(45) 圖 3-21. Parallel Port 控制狀態機. 完整電路如圖 3-22 所示,一部份由上述的 Strobe 訊號偵測模組與狀態機電 路來構成;另一部份,為配合並列埠雙向的資料傳輸,使用三態閘(Tri-State Buffer) 去控制輸出的狀態,只有當讀取操作時,資料才允許送至輸出端,其餘時刻輸出 端皆呈現高阻抗的輸入狀態。. EPP_DB PC. Z. EPP_WAIT EPP_WR EPP_AS EPP_DS. Data_Bus. en. State Machine. Strobe Detect. 圖 3-22. 3.3.2. 8-bit Register. WR_Req RD_Req SRAM_Ack CTRL_Bus. SRAM Controller. Parallel Port 控制器硬體電路圖. SRAM 控制器設計. 將記憶體利用多時分工的方式規劃成多個埠的架構,好處是有更多的裝置能. -34-.

(46) 夠來存取記憶體,但是會造成記憶體頻寬的分享。考慮在頻寬不是非常充裕的狀 態下,且為了讓單一裝置能夠獲得最大的頻寬,故本研究在記憶體控制上,採用 單一埠的架構。. 如圖 3-17 所示,有 PC、FIFO 與 AES IP 三種裝置需要存取 SRAM 的資料, 單一埠的架構下,只允許其中一種裝置使用記憶體,故需要分配存取的順序。本 研究存取的順序是由電腦端來控管,若當前有任何一者想要使用記憶體,需先將 此裝置排入順序中,等待取得使用權後,才得以使用。. 實驗板上的記憶體容量大小為 256K×16,包含 18 條位置線、16 條資料線, 使用時必須符合其讀寫的時序,並搭配所需的位置線。由於影像原始資料(Raw Data)是以位元組為單位,有很多種存入記憶體的方式,在此為了將位置線的控制 單 純 化 , 故 將 記 憶 體 資 料 線 分 為 高 位 元 組 (Upper-Byte, UB) 與 低 位 元 組 (Lower-Byte, LB),與影像原始資料採用相同的單位。如此設計,在存取時只要遞 增位置線,並選擇上半或下半的資料線,便可以取得不同的影像原始資料。. 圖 3-23 為記憶體空間規劃圖,實驗的影像大小為 320×240,故記憶體還有些 許空間保留未使用,高位元組存放加密後(Encrypted)的影像、低位元組存放原始 (Original)影像或解密後(Decrypted)的影像。. -35-.

(47) Addr0 Addr1. 圖 3-23. Enc_R0 Enc_G0 Enc_B0 Enc_R1. Ori_R0/Dec_R0 Ori_G0/Dec_G0 Ori_B0/Dec_B0 Ori_R1/Dec_R1. ……. Addr17. Data7~Data0 (Lower-Byte). ……. ……… Addr16. Data15~Data8 (Upper-Byte). Enc_B318 Enc_R319 Enc_G319 Enc_B319. Ori_B318/Dec_B318 Ori_R319/Dec_G319 Ori_G319/Dec_G319 Ori_B319/Dec_B319. Reserve. Reserve. 記憶體空間規劃示意圖. 以上述的規劃方式,提出實現為硬體電路的流程,如圖 3-24 與圖 3-25 流程 所示,各個流程之中雖有不同的存取數量,但大部分的動作是類似的,以硬體的 角度來思考,便可以將某些方塊合併,共用一個硬體電路,下面以 ID 來做說明:. z. ID 為 PC:電腦端能寫入與讀取 SRAM 的資料,透過一個 EPP 週期只能操作 1 位元組的資料量。. z. ID 為 FIFO:FIFO 緩衝區一次存取 960 位元組的資料量,也就是在螢幕上 1 列 320 個像素點,N = 960。. z. ID 為 AES:AES 控制器能寫入與讀取 SRAM 的資料,一次操作 16 位元組的 資料量,因為 AES 電路一次只能處理 16 位元組的資料量,N = 16。. -36-.

(48) SRAM R/W. PC. ID = ?. AES. FIFO 0. Write = ?. 1. N = 960. Addr_Bus = AddrRD RegD = Data_Bus. Addr_Bus = AddrWR Data_Bus = RegPC. Addr_Bus = AddrRD RegD = Data_Bus. AddrRD = AddrRD +1. AddrWR = AddrWR +1. AddrRD = AddrRD +1. AddrRD = ?. AddrWR = ?. AddrRD = ?. AddrMax AddrRD = 0. AddrMax. AddrRDT+N AddrRDT = AddrRDT + N. AddrWR = 0. END. 圖 3-24. 記憶體硬體電路設計流程. -37-. AddrMax AddrRD = 0 AddrRDT = 0.

(49) N = 16. 0. AddrMax AddrRD = 0 AddrRDT = 0. Write = ?. 1. Addr_Bus = AddrRD RegD = Data_Bus. Addr_Bus = AddrWR Data_Bus = RegAES. AddrRD = AddrRD +1. AddrWR = AddrWR +1. AddrRD = ?. AddrWR = ?. AddrRDT+N. AddrWRT+N. AddrRDT = AddrRDT + N. 圖 3-25. AddrWRT = AddrWRT + N. AddrMax AddrWR = 0 AddrWRT = 0. 記憶體硬體電路設計流程(續). 圖 3-26. 記憶體控制狀態機. 寫入、讀取與閒置不外乎是記憶體常見的幾個動作,然而不管是寫入或讀 取,都可能會有連續存取數量的考慮,故本研究的記憶體控制狀態機以三個狀態 來完成,如圖 3-26 所示,S0 為閒置狀態,接收三個裝置的請求訊號並判斷,如果 是寫入請求,則進入 S1 狀態,為寫入 N 筆資料,達到裝置的存取數量之後返回. -38-.

(50) S0 狀態;如果是讀取請求,則進入 S2 狀態,為讀取 N 筆資料,達到裝置的存取 數量之後返回 S0 狀態。. N. AddrMax 18-bit Comparator. PC_Req FIFO_Req. 18-bit Comparator. 0. 18-bit en Counter. 1. en rst. AES_Req. Data_Bus. 18-bit Adder. 18-bit Counter. rst. State Machine. 18-bit Register. Addr_Bus. SRAM. Write 18-bit Comparator. 18-bit Comparator. 18-bit Register. AddrMax. 圖 3-27. Ctrl_Bus. 18-bit Adder N. 記憶體控制器位置線硬體電路圖. 由流程圖與控制狀態機,便可以設計出實際的硬體電路,圖 3-27 為記憶體位 置線的電路、圖 3-28 為記憶體資料線與控制線電路,流程圖內位置遞增的部分 (AddrRD+1、AddrWR+1),使用上數計數器實現、比較位置的部分(AddrRDT+N、 AddrWRT+N),使用暫存器與加法器實現、兩個位置比較的部分,由比較器實現, 將計數器輸出端連接至比較器輸入端而與兩位置相比;記憶體寫入的來源有電腦 端與 AES,透過多工器做選擇、讀取的資料先存入暫存器後,再由多工器做選擇, 而此處的記憶體資料線也為雙向,故需要搭配三態閘,平時皆輸出端皆為高阻抗 狀態,只有當寫入時,輸出端狀態才等於輸入端。. -39-.

(51) RegPC RegAES. 0 1. SRAM_DataLB SRAM_DataUB. 0 1. Z. 16-bit Register. Addr_Bus. Data_Bus SRAM. en. PC_Ctrl State Machine. FIFO_Ctrl. Ctrl_Bus. AES_Ctrl. 圖 3-28. 3.3.3. 記憶體控制器資料線與控制線硬體電路圖. VGA 控制器設計. 影像的資料量相當龐大,若是隨時想要查看記憶體的內容,以本研究所提出 的第一個方式,勢必要將影像從記憶體讀出再透過傳輸介面回傳至電腦端顯示, 若記憶體存取速度或傳輸速度相當緩慢,則等待時間將會非常的冗長。. 有鑑於此,為避免影像資料在電腦端與實驗板之間的來回,故還參照顯示器 的工業規格,設計一個符合標準的控制器,產生所需的控制波形,來驅動外接的 顯示器,讓記憶體內的影像能直接的在螢幕上觀看。. 畫面是由連續的垂直同步訊號(Vertical Synchronization, VSYNC)來構成,而 垂直同步訊號內包含數個水平同步訊號(Horizontal Synchronization, HSYNC),水 平同步訊號又以像素頻率(Pixel Clock, PCLK)將資料顯示更新,換句話說,VSYNC 表示前一張畫面的結束,下一張畫面的開始;HSYNC 表示前一列的結束,下一 列的開始,更多的細節如下說明:. 一個同步訊號是由 Sync Pulse、Back Porch、Active Video 與 Front Porch 四個. -40-.

(52) 區域所組成,如圖 3-29 所示,以規格 640×480@60Hz 為例,640×480 表示 Active Video 區域的數量,但同步訊號的全部數量還需加上另外三個區域,故總共是 800×525 的數量,即是指每秒會出現有 60 個 VSYNC、每 1 個 VSYNC 有 525 個 HSYNC、每 1 個 HSYNC 有 800 個點(Dot);(a)數量單位為 PCLK、(b)數量單位 為 HSYNC。. (a) 水平同步訊號. (b) 垂直同步訊號 圖 3-29. 同步訊號示意圖. 瞭解上述的同步訊號動作情形與代表意義後,要產生同步訊號便非難事,首 先規劃出設計的流程圖,如圖 3-30 所示,由兩個變數 HCOUNT 與 VCOUNT 來計數並 比較內容數值(HT 與 VT 表同步訊號的總數量、HL 與 VL 表 Sync Pulse 的數量、VB 表 Back Porch 的數量),來產生基本的 HSYNC 與 VSYNC 訊號,而 VSYNC_ACT 是表示 一張畫面是否開始有效,連接至 FIFO 控制器使用。. -41-.

(53) SYNC Signal VT. VCOUNT=0; VSYNC=0 VSYNC_ACT=0. HCOUNT=0; HSYNC=0. HT. HCOUNT = ? HL HSYNC = 1. HCOUNT = HCOUNT +1. VCOUNT = ? VL+B. VL VSYNC = 1. VCOUNT = VCOUNT +1. 圖 3-30. VSYNC_ACT = 1. 同步訊號設計流程. HSYNC HT rst en. 10-bit Counter. 27Mhz. HL. 10-bit 10-bit Comparator Comparator. ALT_PLL. Vga_clk (25.2Mhz). rst en. 10-bit Counter. 10-bit 10-bit 10-bit Comparator Comparator Comparator VT. VL. VL+B VSYNC. 圖 3-31. VSYNC_ACT. 同步訊號產生硬體電路圖. -42-.

(54) 依據流程圖,完成以 640×480@60Hz 規格的硬體控制電路,如圖 3-31 所示, 由兩個計數器來取代 HCOUNT 與 VCOUNT 的計數功能,計數數值再透過兩個比較器, 完成計數器的清除與計數的控制,其餘三個比較器用來產生 HSYNC 、VSYNC 與 VSYNC_ACT 訊號;此電路所處的工作頻率,是從 Altera 公司的模組(ALT_PLL),配 合實際情況來設定相關的輸入頻率與乘除係數,調整所需要的輸出頻率。. 3.3.4. FIFO 控制器設計. 上一節提出的 VGA 控制器,雖然可以產生螢幕所需的同步訊號,但未能保 存所需要的顯示資料,對此一點,提出另外一個 FIFO 控制電路,來解決這個問 題,對於此電路的設計,如下所述:. SRAM 控制器與 VGA 控制器各處於不同的頻率,一方是資料供給端,另一 方是資料需求端,若要連結這兩種控制電路,達成資料之間的傳遞,最便捷的方 式是使用雙頻率(Dual Clock)架構的 FIFO,解決了頻率不同與暫存空間的問題之 後,還需要注意資料頻寬分配的情形。. SRAM 控制器一次只能從記憶體讀取或寫入 1 個位元組的資料;而 VGA 控 制器顯示一個像素點需要 RGB 共 3 個位元組的資料,換句話說,供給端的讀取 速度勢必要比需求端顯示速度快至 3 倍以上。但若無法提高供給端的提取速度且 又要維持需求端的顯示速度,則剩下可以考慮的是,先花費固定的時間來增加供 給端庫存區的資料,而在這固定的時間點內,需求端暫時不顯示任何資料,待庫 存區資料充足時才開始顯示。. 承如上所述,以供給端資料量必須要大於或至少等於需求端資料量的原則,. -43-.

(55) 便可以列出(3-1)與(3-2)式,Q(t)表示資料量的情況,從水平同步信號 Active Video 區域算起,經過 t(t1+t2)個週期,如圖 3-32 所示,t1 表示不顯示的週期(完全只有 讀取資料)、t2 表示顯示的週期(同時讀取資料與顯示資料),將各個條件帶入後, 如(3-3)式,可求得在正常的情況下(t1=0),t2 約只有 281 個顯示的週期,距離實驗 的影像寬度(320)還差 39 個週期,表示剩餘 39 個像素點將沒有可以顯示的資料。. 若要符合影像寬度(t2=320),則 t1 至少需要有 20 個不顯示的週期,如(3-4)式 所示,經過 20 個週期的等待後,螢幕上才開始顯示資料。而本研究最後設定 t1 數值為 320,佔 HSYNC 訊號內 Active Video 區域一半的數量,此舉會造成影像只 能顯示在螢幕右半部位的情況,但不會影響整體的運作情形。. Q(t)=(供給端資料數量-需求端資料數量)≧0 .................................................. (3-1) Q(t1,t2)=[. (96 + 48) × TVGA (t 1 + t 2 ) × TVGA + ]- (t 2 × 3) ............................................ (3-2) TSRAM TSRAM. Q(0,t2)=[. (96 + 48) × 50MHz (0 + t 2 ) × 50MHz + ]- (t 2 × 3) ;t2≒281.2 .................. (3-3) 25.2MHz 25.2MHz. Q(t1,320)=[. (96 + 48) × 50MHz (t 1 + 320) × 50MHz + ]- (320 × 3) ;t1≒19.87......... (3-4) 25.2MHz 25.2MHz. 96. 48. Sync Pluse. Back Porch. 圖 3-32. t1. t2. Active Video. Front Porch. 水平同步訊號內 t1 與 t2 佔用示意圖. -44-.

(56) One Frame. 0. VSYNC_ACT = ?. FIFO = SRAM_Data. 1 1. 0. HSYNC = ?. SRAM_ACK = ?. 1. 0 Row = ?. Row = Row +1. RowMax Row = 0. END. 圖 3-33. 讀取影像資料至緩衝區流程. 緩衝區的流程設計,如圖 3-33 所示,當 VSYNC_ACT 為高準位時,表示新的有 效圖像開始傳送,並且當每一個 HSYNC 為低準位時,開始從 SRAM 取得資料再寫 入 FIFO;同一時刻經過 NOFFSET 點數後,由 VGA 從 FIFO 提出資料,如此反覆執 行,直到螢幕的最後一列(Row),完成一張圖像的顯示。. Sys_rst. (New_Frame). SRAM_ACK and Row = RowMax. SRAM_ACK. VSYNC_ACT and HSYNC. S0. S1 (Frame_Valid). SRAM_ACK and Row ≠ RowMax. S3. SRAM_ACK. (Read_N). 圖 3-34. S2 (Row_Valid). 緩衝區控制狀態機. -45-. VSYNC_ACT and HSYNC. SRAM_ACK.

(57) 將流程圖實現為控制狀態機,如圖 3-34 所示,S0 為等待新圖像開始顯示的狀 態,若 VSYNC_ACT 與 HSYNC 皆為低準位,表示新的圖像即將有效,即進入 S1 有效 的新圖像狀態;在此狀態等待 VSYNC_ACT 為高準位、HSYNC 為低準位,表示新的一 行開始有效,並發送請求訊號至 SRAM,等待 SRAM 認可後,即進入 S3 狀態, 開始讀取 N 筆的 SRAM 的資料,並將讀取的資料一一寫入至 FIFO 內;重複 S1 至 S3 的步驟直至所有的列都已讀取過,才跳回 S0 狀態,等待另一張圖像的開始 顯示。. 將實際電路實現後,如圖 3-35 所示,由計數器來產生列的數值,並輸入至比 較器比較,再回傳至控制狀態機做狀態的改變;資料暫存的部分,使用三個 DC-FIFO 儲存 RGB 三個顏色,並透過一個 3-bit 移位暫存器依序產生寫入致能的 訊號(100, 010, 001, 100, …);Vga_Req 經過 NOFFSET 的數量後,改變為高準位狀態, 來控制讀取致能的訊號線,從 DC-FIFO 讀取三個顏色的數值。. VSYNC_ACT HSYNC. RowMax. State Machine. rst en. 9-bit Counter. 9-bit Comparator. wen. ren. R_FIFO (512x8) 0. 3-bit 1 ShiftReg en. SRAM_Ack Sys_Clk SRAM_Data. din. dout. wen. Vga_Req Vga_Clk R_Color. ren. G_FIFO (512x8). 2 din. dout. wen. ren. G_Color. B_FIFO (512x8) din. 圖 3-35. dout. 緩衝區控制器硬體電路圖. -46-. B_Color.

(58) 3.3.5. AES 控制器設計. 與嵌入式系統雷同,需將 32 位元的 AES 電路完成為 AES IP,如圖 3-36 所 示,RD_IO 區塊由 16 個 8 位元的移位暫存器與 32 位元的多工器所組成,暫存著 從 SRAM 讀取的 16 位元組的資料,組合成 32 位元資料線後,供給 AES 電路所 需要的輸入資料;而 WR_IO 區塊由 4 個 32 位元的移位暫存器與 8 位元的多工器 所組成,存放 AES 電路處理過後的資料,拆解成 8 位元資料線後,再寫回 SRAM 內。. 在啟動 AES 之前(rst = 1),需先透過 KEYBUS 線路將軟體擴展後之金鑰寫入 至內部金鑰記憶體,接著啟動 AES(rst = 0)時,req 訊號會維持 4 個週期,並控制 2-bit 計數器將 RD_IO 區塊的資料讀入,而後經過 44 個週期的處理時間,valid. …. …. 訊號會為高準位,並將處理後的資料寫入 WR_IO 區塊。. 圖 3-36. 硬體控制式 32 位元 AES IP 電路圖. 整個加密或解密的過程為:取得資料(RN)、處理資料(AESN)與寫回資料(WN) 三種動作,總時間為 T(76)=TR(16)+TAES(44)+TW(16),若是有 N 筆資料需要經過 電路處理,則處理時間 TP=T×N。但是可以發現,在 AES IP 進行處理的時候,此 時記憶體處於閒置狀態,故可以安排存取記憶體資料的動作,規劃如圖 3-37 所. -47-.

(59) 示,首先花費 TR 時間取得資料後,讓 AES 進行資料處理,同時檢查有沒有寫回 的資料,若無則花費 TR 時間取得下筆資料;若有,則先花費 TW 時間寫回資料後, 再花費 TR 時間取得下筆資料,如此反覆,直到 N 筆資料皆完成。規劃安排後, 則處理時間改變為 TP=TR+TAES×N+TW,較未規劃時減少(TR+TW)×(N-1)個週期。. 圖 3-37. 執行回合數與資料存取示意圖. 為達成上面所述,狀態機控制亦是不可缺的,如圖 3-38 所示,W_flag 寫入 要求旗號(高準位表示有需求、低準位表示無需求)、R_flag 讀取要求旗號(高準位 表示有需求、低準位表示無需求)、I 表示完成的回合數。當系統重置時,進入 S0 閒置狀態,等待接收到電腦端的信號後,即進入 S1 加解密的狀態,此狀態會依據 W_flag 與 R_flag 及 I 訊號,來做狀態的改變,如前所述。S2 表示從記憶體讀取 16 個位元組資料的狀態;S3 表示寫入 16 個位元組資料至記憶體狀態,分別耗費 16 個時脈(Clock)週期時間。. 圖 3-38. AES IP 與控制狀態機圖. -48-.

(60) PC_RUN. 1-bit Reg 1-bit Reg. rst. rst. State Machine. set rst set. en. 14-bit Counter. 14-bit Comparator Kaddr. SRAM_Data PC_Data PC_We. 32-bit AES IP. 圖 3-39. N. 8-bit Comparator 8-bit Counter. rst en. AES 控制器硬體電路圖. 完整的硬體電路如圖 3-39 所示,兩個 1 位元的暫存器儲存 W_flag 和 R_flag 的狀態、一個 14 位元的計數器,紀錄 I 的數量,並與回合數 N 輸入至比較器相 比產生比較訊號,這些訊號皆會與 AES IP 的 req 與 valid 訊號輸入至上述的狀態 機來做狀態轉換;而金鑰記憶體的位置控制部分,由 8 位元的計數器與比較器組 合而成,當計數值達到最大數量 Kaddr(11×16)時,計數器即清除歸零。. 3.3.6 電腦端收發與操作介面規劃 電腦端的 Parallel Port 在 EPP 協定下,有資料與位置的操作,先前已說明於 3.3.1 節,在此規劃資料操作(DataStrobe)用來傳輸影像資料與金鑰資料;位置操 作(AddrStrobe)用來控制電路動作與讀取電路狀態,整體規劃如圖 3-40 所示。. -49-.

(61) IMAGE/KEY. W. E P P. DataS. 7. 0. 7. 0. IMAGE/KEY. R. AES_EN AES_ENC. AddrS. ID_SET SRAM_UB SRAM_LB. ID_SET. ID_GET. 00. PC. 0001. PC. 01. VGA. 0010. VGA. 10. AES. 0100. AES. 11. KRAM. 1000. KRAM. 圖 3-40. W R ID_GET AES_BUSY. 資料區與位置區規劃圖. 位置操作區之分配: z. 位置寫入部分,總共使用 6 位元,包含 AES 致能位元(AES_EN,1 位元; 1 表示啟動、0 表示停止)、AES 加解密位元(AES_ENC,1 位元;1 表示 加密、0 表示解密)、何種裝置能使用記憶體(ID_SET,2 位元;總共四種 不一樣的裝置)與電腦端存取記憶體的上半部分(SRAM_UB,1 位元;1 表示選擇、0 表示不選擇)或下半部分(SRAM_LB,1 位元;1 表示選擇、 0 表示不選擇)。. z. 位置讀取部分,總共使用 5 位元,包含 AES 忙碌位元(AES_BUSY,1 位 元;1 表示忙碌、0 表示空閒)與何種裝置正在操作記憶體(ID_GET4 位元; 總共四種不一樣的裝置)。. 使用者操作介面如圖 3-41 之規劃,實際畫面可與圖 4-4 實驗結果對照,分為 A~C 三種區域: z. A 區為金鑰區:在 A-1 區供使用者輸入金鑰,最大輸入字元數量為 16 個 字元;A-2 區為 11 組金鑰擴展後的結果,顯示格式以 16 進制表示法。. z. B 區為影像區:影像大小皆為 320×240 彩色圖片,在 B-1 區供使用者挑. -50-.

(62) 選欲處理之圖片;B-2 區為影像加密後的顯示區;B-3 區為影像解密後的 顯示區。 z. C 區為按鈕區:供使用者選擇要進行影像加密或影像解密的命令。. 圖 3-41. 使用者操作介面規劃圖. -51-.

(63) 第四章. 4.1. 實驗成果分析. 驗證平台規劃 圖 4-1 與圖 4-2 為本研究所使用的實驗板,相關的使用元件分別標示於圖片. 上面;不同的晶片與平台,需要搭配特定的開發環境,在圖 4-1 實驗板,採用 Xilinx 公司的 ISE 9.2i SP4 與 EDK 9.2i SP2 軟體來開發;而圖 4-2 實驗板,採用 Altera 公司的 Quartus II 7.1 Build 156 Web Edition 軟體來開發。. RS-232. Flash Memory. 圖 4-1. Xilinx Spartan-3E 1600E 實驗板. -52-.

(64) VGA Port. Parallel Port. SRAM. 圖 4-2. Altera DE2 實驗板. -53-.

(65) 32 位元 AES 電路效能比較. 4.2. 將 3.1 節所提出之電路以 VHDL 語言具體化後,其數據比較如表 4-1 所示。. 表 4-1. 32 位元 AES 硬體實現資源比較表. 由表 4-1 中可發現此電路實現後耗費了 110 個硬體資源(Slice),少於其他學 者所使用的數量,而此設計能夠達到小面積的原因,主要有三個不同點:. 1.. ShiftRow 方面 前人皆採用兩記憶體方式實現,使用記憶體不外乎是要去控制存取的位置,. 故會使用到額外的硬體資源,例如:計數器;而我們則採用 2 個移位暫存器做資 料的旋轉並搭配多工器做 ShiftRow 或 InvShiftRow 的選擇,省下複雜的位置控制。. 2.. MixColumn 方面 文獻[8]採用乘法電路與加法電路的運算方式直接實現,將全部的運算過程完. 全使用硬體資源來實現;文獻[9]採用查表法(Look-up Table),省去乘法電路的硬 體資源,但在輸出部分還需要加法電路;我們的方式與文獻[9]相同,但位於表內. -54-.

(66) 的資料放置格式不同,且增加 Self_XORs 電路讓最後 1 回合的資料能夠方便輸出 使用。. 3.. KeyExpansion 方面 金鑰擴展的部分,是屬於 AES 運算的前處理,並不會影響到 AES 電路實際. 動作之後的速度。常見的作法是將原始金鑰經過擴展之後,儲存於記憶體(BRAM) 之中,後續在加密或解密時便可依序讀出,較容易配合至加密或解密的回合。. 我們與前人皆是採用存放於記憶體(BRAM)的方式,唯一的不同點是金鑰擴 展方式,前人採用硬體電路來實現,如此一來便會增加相當多的硬體資源;我們 採用軟體來實現擴展過程,藉由嵌入式系統或電腦端的軟體資源來實現,雖然軟 體擴展的速度較硬體慢,但好處是能省去硬體金鑰擴展的電路面積。. -55-.

(67) 4.3. 嵌入式系統實驗成果 實驗結果顯示於圖 4-3,加密影像(Do_Encryption)與解密影像(Do_Decryption). 採用相同的硬體架構,所以耗費相同的執行時間 6.1 毫秒(ms);在軟體金鑰擴展 部分,加密金鑰擴展時間為 0.2 毫秒、解密金鑰擴展時間為 2.9 毫秒。. 圖 4-3. 嵌入式系統實驗結果效能圖. 由實驗結果得到金鑰資料(9×16 位元組)經過軟體的反混行運算過程需耗費 2.7(2.9-0.2) 毫 秒 , 可 以 推 得 16 位 元 組 資 料 經 過 軟 體 10 回 合 的 執 行 時 間 TInvMixColumn≒(2.7×10)÷9=3ms;所以假設有 N 位元組的資料,其執行時間可寫成 (4-1)式:. -56-.

(68) N byte InvMixColumn Time = TInvMixColumn×(N÷16).............................. (4-1). 若進一步以影像資料(160×120×3 位元組)來分析,帶入(4-1)式,可求得 10.8 秒(s)的執行時間,但完整的解密時間還包含 TInvShiftRow、TInvSubByte 與 TAddRoundKey, 姑且不計這些時間而與硬體解密所耗費的時間相比較,明顯多出了好幾倍。故在 大量與重複的運算下,若能改由特殊的硬體電路來完成,必定會減輕軟體方面的 負擔,並增加整體的執行效率,為此目的,也是本文研究的原因之一。. -57-.

(69) 4.4. 硬體控制式實驗成果 實驗結果顯示於圖 4-4 與圖 4-5,與上述嵌入式系統較不同的地方,如:加. 密結果與解密結果直接顯示在外接的螢幕上,不需要將結果再讀回電腦,省去傳 輸時間;金鑰擴展改使用電腦端軟體進行擴展,因為此架構全部都是以硬體電路 來設計完成。. 圖 4-4. 硬體控制式影像實驗結果圖(使用者操作介面). -58-.

參考文獻

相關文件

Lu, Linear-time compression of bounded-genus graphs into information-theoretically optimal number of bits, in Proceedings of the Thirteenth Annual ACM-SIAM Symposium on

Chi-Tsang’s abundant interpretation writings involved with most of the important sutras at that time, implying that behind the writings Chi-Tsang possessed his

• measuring 1st qubit gives 2 possible results. – 0 with the probability 1/2, and the post-measurement

The Prajñāpāramitā-hṛdaya-sūtra (般若波羅蜜多心經) is not one of the Vijñānavāda's texts, but Kuei-chi (窺基) in his PPHV (般若波羅蜜多心經 幽賛) explains its

Jiayi Zhou, Kun-Ming Yu, Chun Yuan Lin, Kuei-Chung Shih1 and Chuan Yi Tang, “Balanced Multi-process Parallel Algorithm for Chemical Compound Inference with Given Path Frequencies,”

Che Way Chang a* , Chen Hua Lin a , Hung Sheng Lien a , “Measurement Radius of Reinforcing Steel Bar in Concrete Using Digital Image GPR”, Construction and

Menz-Ru Huang, Ruey-Gwo Chung, Tung-Shou Chen, Hsuan-Yi Cheng, Yung-Ching Lin (2007), “An Analysis of Government Subsidies Enterprise Training Based On CDC Algorithm,”

FPGA(Field Programmable Gate Array)為「場式可程式閘陣列」的簡稱,是一 個可供使用者程式化編輯邏輯閘元件的半導體晶片