使用進位儲存加法器實現以四為基底RSA密碼系統之設計

61  13  Download (0)

全文

(1)國立高雄大學電機工程學系研究所 碩士論文. 使用進位儲存加法器實現 以四為基底 RSA 密碼系統之設計 The Design of Radix-4 RSA Cryptosystem with Carry-Save Adder. 研究生:陳彥嘉撰 指導教授:洪進華教授 中華民國 104 年 7 月.

(2) i.

(3) 使用進位儲存加法器實現 以四為基底 RSA 密碼系統之設計 指導教授:洪進華教授 國立高雄大學電機工程學系. 學生:陳彥嘉 國立高雄大學電機工程學系. 摘要. 模指數在 Rivest、Shamir 和 Adleman (RSA) 密碼系統中是經過重覆的運算模乘法 所得,為了加速加密及解密過程,模乘法採用蒙哥馬利 (Montgomery) 演算法,硬體架 構使用進位儲存加法器避免每次加法的進位傳遞時間,本篇論文提出一個以四為基底使 用進位儲存加法器的模乘法,以四為基底的模乘法比以二為基底的模乘法少了將近一半 的運算週期數,大大減少運算時間,增加資料運算速度,且在面積-時間複雜度的表現 也比參考文獻來的較好。搭配模指數完成 RSA 密碼系統,實驗數據顯示 TSMC 90nm 製程合成出的電路速度最快可達 455MHz,Gate count 為 76K。. 關鍵字:RSA 公開金鑰、Montgomery 蒙哥馬利演算法、進位儲存加法器、以四為基底. ii.

(4) The Design of Radix-4 RSA Cryptosystem with Carry-Save Adder Advisor:Dr. Jin-Hua Hong Institute of Electrical Engineering National University of Kaohsiung. Student:Yan-Jia Chen Institute of Electrical Engineering Nation University of Kaohsiung. Abstract The Modular exponentiation of Rivest, Shamir, and Adleman (RSA) cryptosystem is achieved by repetitive modular multiplications. In order to speed up the process of encryption and decryption, the modular multiplication is implemented with Montgomery algorithm and carry-save adder (CSA) to avoid the carry propagation at each addition operation. In this paper, we propose a radix-4 Montgomery modular multiplication with CSA to implement RSA cryptosystem. Radix-4 modular multiplication is faster than radix-2 Montgomery due to reducing a half operation cycles. Comparing with other works, the critical path delay, the data throughput and the area-timing complexity of our design are better than the existing works. Our RSA cryptosystem is synthesized with TSMC 90nm CMOS process. Experimental results show that our radix-4 RSA cryptosystem can achieve up to 455 MHz clock speed with about 76K gate count.. keyword:RSA public key, Montgomery algorithm, carry-save adder (CSA), Radix-4 iii.

(5) 致謝. 本篇論文可以完成,首先感謝我的指導教授洪進華老師的悉心教導。不僅指導我的 研究方向並給了我許多建議,當中包含研究方面還有做人處事上,讓我收穫良多受益匪 淺,使我得以一窺 IC 設計領域的深奧,因為老師的提點我也改正以前虛應故事的態度, 用更認真的態度去面對研究以及知識探討。感謝口試委員:呂學坤博士、謝韶徽博士、 張慶元博士、黃英哲博士,在百忙之中還抽空前來擔任口試委員,指導我的研究主題, 讓我的論文更加完整。 在研究所求學期間與實驗成員相處了非常多的時間,要感謝學長:佳男、明儒,同 學:昆志,學弟妹:煥鳴、安妮,還有其他實驗室的學長:夢謙、蘇柏,同學:鈞彥、 惟順、仁芳、翊成、旭廷,可以一起討論研究方向、生活娛樂和人生經歷,讓實驗室氣 氛和樂,使研究生活不會枯燥乏味。還有系辦助理:薏婷、佳恬、怡芬,幫忙處理實驗 室行政業務及提供幫助。 最後感謝我的家人,在我碩三最痛苦、最無助的時候,仍然給我支持與鼓勵,願意 當我的靠山讓我專心致力於研究。謹以此文獻給感謝的人,由衷的致上感激並誠心的祝 福,願大家未來事事順利。. 陳彥嘉 於國立高雄大學 電機工程學系研究所 July 2013. iv.

(6) 目錄 摘要............................................................................................................................................ii Abstract .................................................................................................................................... iii 致謝........................................................................................................................................... iv 目錄............................................................................................................................................ v 圖目錄......................................................................................................................................vii 表目錄....................................................................................................................................... ix 第一章、導論............................................................................................................................ 1 1.1 介紹與動機.................................................................................................................. 1 1.2 研究目的與成果.......................................................................................................... 2 1.3 論文組織...................................................................................................................... 2 第二章、密碼學介紹................................................................................................................ 3 2.1 密碼學-公開金鑰 ....................................................................................................... 4 2.1.1 RSA ................................................................................................................... 4 2.1.2 RSA 數位簽章 .................................................................................................. 7 第三章、Montgomery 演算法 .................................................................................................. 9 3.1 Walter 修改的 Montgomery 演算法 ......................................................................... 11 3.2 使用進位儲存加法器的 Montgomery 演算法 ........................................................ 12 3.2.1 使用 5-to-2 CSA 的 Montgomery 演算法 .................................................... 13 3.2.2 使用 4-to-2 CSA 的 Montgomery 演算法 .................................................... 14 3.3 模指數演算法........................................................................................................... 15 3.3.1 L 演算法 ......................................................................................................... 16 3.3.2 H 演算法 ......................................................................................................... 18 3.4 Barrel Register 全加器 .............................................................................................. 20 v.

(7) 第四章、以四為基底 Montgomery 演算法 ........................................................................... 21 4.1 Booth 演算法 ............................................................................................................. 23 4.2 使用進位儲存加法器的以四為基底 Montgomery 演算法 .................................... 25 4.2.1 以四為基底 Barrel register 全加器............................................................... 29 4.3 修改使用進位儲存加法器的以四為基底 Montgomery 演算法 ............................ 30 4.3.1 直接以 2 補數計算負值................................................................................ 31 4.3.2 利用四倍輸入化簡電路................................................................................ 31 4.4 實驗結果................................................................................................................... 35 4.5 模乘法的比較........................................................................................................... 40 第五章、結論與未來探討...................................................................................................... 48 Reference ................................................................................................................................. 49. vi.

(8) 圖目錄 圖 2-1 RSA 加解密運算 ........................................................................................................... 6 圖 2-2 RSA 數位簽章和驗證 ................................................................................................... 7 圖 3-1 乘法運算 ..................................................................................................................... 10 圖 3-2 漣波進位加法器 ......................................................................................................... 12 圖 3-3 進位儲存加法器 ......................................................................................................... 13 圖 3-4 5-to-2 CSA 架構圖 ....................................................................................................... 13 圖 3-5 使用 5-to-2 CSA 的 Montgomery 演算法 ................................................................. 14 圖 3-6 使用 4-to-2 CSA 的 Montgomery 演算法 ................................................................... 15 圖 3-7 L 演算法流程圖 ........................................................................................................... 17 圖 3-8 H 演算法流程圖 .......................................................................................................... 19 圖 3-9 Barrel register 全加器(BRFA) ..................................................................................... 20 圖 3-10 使用進位儲存加法器的 Montgomery 演算法架構 ................................................. 20 圖 4-1 以四為基底 Montgomery 演算法流程圖 .................................................................. 22 圖 4-2 Booth 乘法範例 ........................................................................................................... 24 圖 4-3 以四為基底 Montgomery 演算法範例 ...................................................................... 25 圖 4-4 使用進位儲存加法器的以四為基底 Montgomery 演算法流程圖 .......................... 28 圖 4-5 使用進位儲存加法器的以四為基底 Montgomery 演算法架構圖 .......................... 29 圖 4-6 修改 barrel register 全加器 ......................................................................................... 30 圖 4-7 使用進位儲存加法器的以四為基底 Montgomery 演算法架構圖 .......................... 30 圖 4-8 修改使用進位儲存加法器的以四為基底 Montgomery 演算法架構圖 .................. 33 圖 4-9 修改使用進位儲存加法器的以四為基底 Montgomery 演算法流程圖 .................. 34 圖 4-10 RSA 密碼系統架構圖 ............................................................................................... 35 圖 4-11 Cell based 設計流程................................................................................................... 36 vii.

(9) 圖 4-12 加密模擬結果(1)....................................................................................................... 37 圖 4-13 加密模擬結果(2)....................................................................................................... 37 圖 4-14 解密模擬結果(1)....................................................................................................... 37 圖 4-15 解密模擬結果(2)....................................................................................................... 37 圖 4-16 Formality 驗證 ........................................................................................................... 38 圖 4-17 16-bit RSA 密碼系統佈局圖 ..................................................................................... 39 圖 4-18 DRC 驗證 ................................................................................................................... 39 圖 4-19 LVS 驗證 .................................................................................................................... 40 圖 4-20 Post-layout 模擬結果 ................................................................................................. 40 圖 4-21 Tenca’s 架構 ............................................................................................................... 41 圖 4-22 M. R. Lee’s 架構 ........................................................................................................ 42 圖 4-23 M. R. Lee’s[9]模乘法架構 ......................................................................................... 42 圖 4-24 本論文的模乘法架構 ............................................................................................... 42 圖 4-25 2-bit 加法器 ................................................................................................................ 44 圖 4-26 修改 5-to-2 進位儲存加法器 ................................................................................... 44 圖 4-27 經過修改後之 Yao 的模乘法架構圖 ....................................................................... 44. viii.

(10) 表目錄 表 1-1 資訊安全 ....................................................................................................................... 1 表 2-1 密碼學演算法比較 ....................................................................................................... 3 表 3-1 Montgomery 演算法 ...................................................................................................... 9 表 3-2 Walter 修改的 Montgomery 演算法 ............................................................................ 11 表 3-3 使用 5-to-2 CSA 的 Montgomery 演算法 ................................................................. 14 表 3-4 使用 4-to-2 CSA 的 Montgomery 演算法 .................................................................. 15 表 3-5 模指數 L 演算法 ......................................................................................................... 16 表 3-6 模指數 H 演算法 ........................................................................................................ 18 表 4-1 以四為基底 Montgomery 演算法 .............................................................................. 21 表 4-2 Booth 演算法編碼 ....................................................................................................... 23 表 4-3 使用進位儲存加法器的以四為基底 Montgomery 演算法 ...................................... 26 表 4-4 修改用進位儲存加法器的以四為基底 Montgomery 演算法 .................................. 33 表 4-5 比較不同使用進位儲存加法器的 Montgomery 模乘法 .......................................... 45 表 4-6 標準元件標準化 ......................................................................................................... 46 表 4-7 分析面積及延遲 ......................................................................................................... 46 表 4-8 我的加 Yao 的模乘法演算法 ..................................................................................... 47 表 4-9 比較不同 RSA 實現結果 ........................................................................................... 47. ix.

(11) 第一章、導論 1.1 介紹與動機 在這資訊爆炸的時代,科技發展非常迅速,科技進步帶來的是生活上的便利, 網路漸漸成為人們生活的一部分。網路服務及資訊安全 (表 1-1) 開始受到質疑, 這使得密碼學的研究越來越受到重視。網路上資訊的流通,常常遭到有心人士的 攻擊,導致電腦或是手機資料遭竊取或是竄改、偽造,進一步造成我們的恐慌。 為了防止這種事情發生,在資料輸出前,傳送端及接收端可以選擇加解密演算法 進行加密的動作,同時也進行數位簽章的認證,保證傳輸兩端通信的安全性,由 此可見如何進行有效率的加密及解密運算以及選擇一個有相當安全強度的密碼系 統是非常重要的。. 表 1-1 資訊安全 資訊安全攻擊 資訊安全機制 資訊安全服務. 被動式攻擊:竊取 主動式攻擊:中斷、竄改、偽造 密碼學技術. 對稱金鑰演算法 非對稱金鑰演算法. 機密性、完整性、可用性、可靠性. 本篇論文選擇由 Rivest、Shamir 和 Adleman 所提出的非對稱金鑰演算法 RSA[2] 當作加解密的演算法,RSA 為目前最受歡迎的公開金鑰 (public key) 演算法。它 除了加解密的功能以外,還可以進行數位簽章的驗證,確認資料的完整性以及傳 送端的認證及不可否認性,所以本篇論文選擇使用此演算法做為改良的目標。. 1.

(12) 1.2 研究目的與成果 為了提升公開金鑰演算法 RSA 的效率,本論文針對 RSA 進行硬體化,硬體 在處理大量的資料的時候會比軟體來的有效率。此外為了提升 RSA 運算速度,本 論文提出使用進位儲存加法器 (carry-save adder) 搭配 Booth 演算法以及兩種電路 改善方式:一、直接在電路中計算 2 補數得到負值,使 2 補數可以在一個週期計 算求出,取代儲存負值的暫存器,可減少模乘法面積。二、化簡以四為基底模乘 法中的方程式,使模乘法電路有較短的關鍵路徑,實現模乘法修改以四為基底 Montgomery 演算法。以四為基底模乘法比二為基底少了將近一半的週期數,且電 路經過修改有較短的關鍵路徑及面積,可提升運算速度。最後搭配模指數演算法 (modular exponent algorithm) [7],完成 RSA 密碼系統。實驗數據顯示 TSMC 90nm 製程合成出的電路速度最快可達 455MHz,Gate count 為 76K,跟最近的文獻[9]比 起來速度改善 27.45%,面積改善 37.19%。電路實現結果在 CIC 的 EDA CLOUD 上做模擬驗證,以及最後的繞線佈局。. 1.3 論文組織 本論文共分為五個章節,第一章為導論,第二章簡單介紹密碼學及 RSA 公開 金鑰演算法,第三章說明使用進位儲存加法器實現以二為基底 Montgomery 演算法, 第四章為本論文的重點說明使用進位儲存加法器實現以四為基底 Montgomery 演 算法及本論文提出的修改以四為基底 Montgomery 演算法實現的結果,第五章為結 論與未來探討。. 2.

(13) 第二章、密碼學介紹 密碼學是研究如何隱密地傳遞資料的學門,古典密碼學最早是以代替 (Substitution) 法或是位移法 (Transposition) 為主。前者將明文的字母依照一定規 律的代碼替代,比較廣為人知的是凱薩密碼,凱薩密碼加密是將每個字母用其後 的第三個字母來替代。後者將明文的字母順序重新排列,如密碼棒。但是這些加 密方式容易被破解,之後的維吉尼亞及二戰時期的恩尼格碼密碼機等著名的加密 方式被發明出來增加破解的難度。 第二次世界大戰後,計算機的快速發展促成了更複雜的密碼產生,且計算機 可以用數學演算法來加密二進制的資料,此時所發展出的密碼學演算法稱為現代 密碼學。現代密碼學大致又分成對稱金鑰演算法與非對稱金鑰演算法 (如表 2-1), 其中非對稱金鑰演算法又稱公開金鑰演算法,以加密解密是否使用同一把金鑰作 為區分。. 表 2-1 密碼學演算法比較 對稱金鑰加密. 公開金鑰加密. 加密和解密金鑰. 相同. 不同. 加解密速度. 快. 慢. 金鑰保存. 金鑰需保密. 加密金鑰公開 解密金鑰保密. 金鑰可否公開. 不可公開. 公開鑰匙可以公開 私密鑰匙不可以公開. 金鑰保管問題. 與 N 個人交換訊息, 需保管 N 把加密鑰匙. 需保管自己的私密鑰匙. (1)對稱金鑰演算法:加密解密都使用同一把金鑰,稱為對稱金鑰 例如:DES、3DES、AES...等,常用於加密長度較長的資料,如 E-mail。 (2)非對稱金鑰演算法:加密解密使用兩把不同的鑰匙,加密鑰匙公開,解密鑰匙 3.

(14) 不公開,稱為非對稱金鑰又稱為公開金鑰 例如:RSA、ECC...等,常用於加密長度較短的資料,如數位簽章。. 2.1 密碼學-公開金鑰 在對稱金鑰演算法中,加密與解密使用相同的金鑰,每對通訊方都必須使用 異於他組的金鑰,當成員增加使用金鑰數量成二次方增加,金鑰的管理就成為問 題,更尷尬的問題是當安全通道不存在於雙方時,如何建立一個共用的金鑰?如 果有安全通道可以建立共用金鑰,何不使用安全通道傳送資料?這個「雞生蛋、 蛋生雞」的矛盾成為密碼學在真實世界應用的阻礙。1976 年,Whitfield Diffie 與 Martin Hellman 提出公開金鑰的概念:一對值不同但數學相關的金鑰,公開金鑰 (public key) 與私密金鑰 (private key) [1]。這個概念就是基於單向暗門函數 (trap door one way function) ,下面給了單向暗門函數的定義。非對稱金鑰演算法因為擁 有私鑰與公鑰的特性解決了對稱金鑰演算法中金鑰交換的問題,此外對稱金鑰演 算法中跟每個通訊方都需要一把唯一的金鑰,也是十分麻煩且不被希望的方式, 非對稱金鑰演算法不需要如此。每個人只要保留自己的私密金鑰,需要加密時再 去存放大家公開金鑰的地方,尋找對方的公開金鑰即可,少了保管金鑰的麻煩。. 單向暗門函數定義 若知道 k、X,容易得 Y 單向函數 若知道 Y 但不知道 k,X 是無法求得的 若知道 k、Y,容易得 X. 暗門函數. 2.1.1 RSA 1977 年美國麻省理工學院三位學者 R.L. Rivest、A. Shamir 和 L. Adleman 發明 4.

(15) 了一個使用指數運算式的公開金鑰加密演算法,並在 1978 年發表,以三位作者姓 名的第一個字命名為 RSA[2],為目前最廣泛也最被廣為接受的公開金鑰演算法。 RSA 為非對稱金鑰演算法,加密解密是利用兩把不同的金鑰,加密時是利用 公開金鑰,所有人都需要公布自己的公開金鑰。所有的公開金鑰都被儲存在一個 資料庫中,也就是大家都可以取得公開金鑰進行加密,但是只有對應的私密金鑰 才可以進行解密,取出明文,私密金鑰跟公開金鑰相反。私密金鑰只保留在接收 端的部分,所以保管金鑰的部分不像對稱金鑰需要保管加密及解密的同一把金鑰, 如此一來少了金鑰傳送的困難,也少了金鑰保管的問題,公開金鑰跟私密金鑰能 夠成立這都是歸功於單向暗門函數。 RSA 演算法的安全性是基於數學難題:找出兩個大質數相乘是簡單的,但是 要從他們的乘積進行因數分解是非常困難的 (當這個乘積達到幾百位數) 。用這難 解特性來達到資料安全防護的效果,演算法本身並不困難,真正的挑戰是選擇和 產生公開和私密金鑰。 RSA 運算為區塊加密,明文被切成多個區塊,依序加密,解密也是將密文切 成跟明文一樣的區塊,依序解密。以下是 RSA 金鑰產生的方式、加解密運算以及 區塊加密流程。. RSA 演算法 產生金鑰 (1) 選擇兩個大質數 P 和 Q,令 N = P×Q (2) 選擇公開金鑰 E,使它不是(N) = (P-1)×(Q-1)的因數,即 gcd(E, (N)) = 1 (3) 選擇私密金鑰 D,使恆等式成真:(E×D) ≡ 1(mod (N)) (模乘法反元素) (4) 加密金鑰 (E, N) 為公開金鑰 (Public) ,解密金鑰 (D, N) 為私密金鑰 (Private). 5.

(16) 加解密運算 M為明文、X 為密文 加密運算,明文計算密文:X ≡ ME mod N 解密運算,密文計算明文:M ≡ XD mod N. B. A M. E. D. X. (E, N). (D, N). A拿B的公開金 鑰加密成密文. B拿B保管的私密 金鑰解密成明文. 圖 2-1 RSA 加解密運算. RSA 區域加密流程 明文:M = {M1, M2, ...Mn}. 0 ≦ Mi < N. 加密: 密文:X = {X1, X2, ...Xn}. M. 0 ≦ Xi < N. 解密:. RSA 加解密範例 (1) P = 47、Q = 59 (2) N = P×Q = 2773,(N) = 46×58 = 2668 (3) 選擇公開金鑰 E = 17,使 gcd(17, 2668) = 1 (4) 選擇私密金鑰 D = 157,17×157 ≡ 1 mod 2668 (5) 明文 920,加密運算:948 ≡ 92017 mod 2773 (6) 密文 948,解密運算:920 ≡ 948157 mod 2773 6.

(17) RSA 的安全性 有幾種方法可以針對 RSA 進行攻擊,當中有暴力法、數學攻擊法,計時攻擊 法等等...,RSA 對抗暴力法的防禦方式就是使用很大的金鑰,因此 D 的位元數越 大就越不容易被破解。數學攻擊法為大部分破解 RSA 的討論焦點,破解 RSA 的關 鍵在於將 N 做質因數分解,就可以找到相對應的私密金鑰,但就目前為止還沒有 人找到一個有效率的時間多項式演算法或是速度夠快的電腦可以在短時間分解一 個大的整數的因數,因此一般認為只要 N 足夠大,RSA 是無法被破解的。只是根 據摩爾定律和未來的量子電腦,RSA 的安全性備受挑戰。目前 RSA 的使用者應使 用 1024-bit 以上,才足以確保資料的安全性。. 2.1.2 RSA 數位簽章 公開金鑰演算法,因為有公開金鑰跟私密金鑰及下列特性:完整性、認證、 不可否認性。除了資料加密以外,還有數位簽章的功能,RSA 進行數位簽章[3]的 步驟跟加密正好相反,簽章是使用私密金鑰加密成密文,拿到密文的人再拿公開 金鑰解密回來,就可以確認是誰傳送密文。下列是數位簽章運算的流程。 簽章運算 S:簽章、M:明文 簽章運算:S ≡ MD mod N 驗證簽章運算:M ≡ SE mod N. A M. B D. S. (d, N). E (e, N). 圖 2-2 RSA 數位簽章和驗證 7. M.

(18) 根據圖 2-2, A 用 A 的私密金鑰將明文加密成簽章,當 B 收到密文的時候用 A 的公開金鑰解密簽章。圖中的 D 跟 E 並沒有畫錯,D 表示使用私密金鑰做加密, E 表示使用公開金鑰做解密。簽章的步驟可以確認三件事: 1.完整性:這個密文在傳送過程中沒有丟失,沒有竄改 2.認證:確認這是 A 發送的 3.不可否認性:確認 A 確實發布過 以上的三件事是建立在 A 的私密金鑰保存良好,沒有被他人得知的情況下, 再確認過確實是 A 的簽章後,就可以用 B 的私密金鑰將密文解碼成明文,完成整 個訊息的傳遞。. 8.

(19) 第三章、Montgomery 演算法 RSA 的運算核心為模指數,而模指數是重複運算模乘法所計算求出。為了資 料的安全性,模乘法的運算位元動輒 1024-bit 以上,位元數相當龐大,如果依照一 般模乘法算法先相乘再取餘數,從電路的角度來看乘法及除法非常消耗時間跟面 積,無法有效率的實現模乘法。 1985 年 P.L. Montgomery[4]提出一個演算法只需要簡單的加法、減法和位移即 可完成模乘法的運算,取代原本模乘法所需的乘法及除法。節省了許多暫存器及 邏輯閘的數目,大幅提升整數模乘法的運算速度和硬體成本,此演算法為 Montgomery 演算法,或稱為 Montgomery 模乘法,簡稱 MM。演算法如表 3-1。. 表 3-1 Montgomery 演算法 Input:A, B, N(n-bit) Output:S = A×B×R-1mod N, R = 2nmod N 1. S = 0 2. for i = 0 to n-1 { 3. q = (s0 + ai×b0) mod 2 4. S = (S + ai×B + q×N) / 2 5. { 6. If (S≧N) S = S-N 7.. Return S. 令 N 為奇數,定義 R 為 2nmod N,演算法中的整數 A、B < N,且 A、B 取 N 餘數相對於 R 定義為 A×R mod N、B×R mod N。Montgomery 演算法計算模乘法的 做法是一邊做加法一邊做位移,演算法中 ai×B 的意思是乘數 A 的一個位元與被乘 數 B 做 AND 也就是部分乘積的結果如圖 3-1 所示,S 加完 ai×B 後判斷 S 的 LSB 為 1 或為 0,是 1 的話就加 N 讓 SLSB = 0 再向右位移 1-bit,如果是 0 就直接向右 位移 1-bit,完成一個迴圈的計算,直至乘數 A 的每個位元都做完。加 N 的原因主 9.

(20) 要是為了讓 SLSB 為 0,如此一來向右位移時 S 才不會出現問題。加 N 的動作得以 成立主要是因為下列兩個特性:. a3b3. B. b3. b2. b1. b0. A. a3. a2. a1. a0. a0b3. a0b2. a0b1. a 0 b0. a1b3. a 1 b2. a1b1. a1b0. a2b3. a2b2. a2b1. a 2 b0. a3b2. a3b1. a3b0. 圖 3-1 乘法運算. (1) 餘數定理(被除數加除數 N 不影響餘數):. (2) RSA 模數 N 為奇數(NLSB = 1): ∵N = P×Q (P、Q 為大質數) ∴NLSB = 1 Montgomery 演算法計算模乘法的動作實際上是一步步的壓縮 S 的大小,收斂 S 的範圍 0 ≦ S < 2N/2 + 2N/4 + … + 2N/2k-1 < 2N 使 S 落在[0, 2N),最後判斷如果 S>N,則 S-N 為結果;如果 S<N,則 S 為結果。 在 Montgomery 模乘法運算過程中,每做完一次加 N 或加 0 的動作,就會向 右位移 1-bit,A 有 n-bit 總共要向右位移 n 次,計算出的模乘法結果應該為方程式 (3-1)。但我們所要求的模乘法結果應該為方程式(3-2),為了求得我們所求,我們 必須在一開始就將 A 或 B 左移 n 次回來,就是乘上修正項 R = 2n 的意思,只要 A 10.

(21) 的位元數固定,修正項 R 就會固定。之所以不在最後 S 才乘上修正項 R 是因為 Montgomery 演算法是將 S 不斷的收斂,使 S 範圍落在[0, 2N),如果我們將結果 S 直接乘上修正項再取餘數可能會造成 S 範圍超過導致產生的結果錯誤。 Montgomery 演算法主要的運算是加法,電路的關鍵路徑 (critical path) 為方程 式 3-3。 S = MM(A, B, N) = A×B×R-1mod N. (3-1). S = A×B mod N = A×(B×Rmod N) mod N. (3-2). S = (S + ai×B + q×N). (3-3). 3.1 Walter 修改的 Montgomery 演算法 Montgomery 演算法中最後還需要判斷結果是否大於 N,大於 N 需要做減法運 算,減法運算需要額外的硬體成本,為了解決演算法最後減法的運算,C.D. Walter[5] 根據 Montgomery 演算法做修正,讓最後的輸出落在[0, N),不需要最後的減法運 算,讓演算法更容易實現在硬體上。改良的方法就是將 A 和 B 的位元數都擴充兩 個位元,演算法的其他地方都不要變動,在硬體的表現就是多做兩個迴圈的意思, 但是需要注意的是因為多做兩個迴圈,所以修正項也要變成 R = 2k+2,演算法如下 表 3-2。. 表 3-2 Walter 修改的 Montgomery 演算法 Input:A, B(n+2-bit), N(n-bit) Output:S = A×B×R-1mod N, R = 2n+2 1. S = 0 2. for i = 0 to n+1 { 3. q = (s0 + ai×b0) mod 2 4. S = (S + ai×B + q×N) / 2 5. { 6. Return S 11.

(22) 3.2 使用進位儲存加法器的 Montgomery 演算法 在 Montgomery 演算法中關鍵路徑最長的部分在加法上,所以用哪種加法器 去做模乘法大位元的加法就成了重要的問題。如果使用一般常見的漣波進位加法 器 (ripple-carry adder) 做為加法器(如圖 3-2),會有非常長的進位延遲時間,即使 是沒有進位延遲的進位前看加法器 (carry-lookahead adder),在動輒 1024-bit 的加 法中,還是需要耗費相當多的面積及運算時間,無法快速的完成 Montgomery 演算 法。. an-1 bn-1. cout. FA. sn-1. ‧‧‧‧‧‧. a2 b2. a1 b 1. a0 b0. FA. FA. FA. s2. s1. s0. c0. 圖 3-2 漣波進位加法器. C. Mclvor, M. McLoone, and J.V. McCanny[6]提出以進位儲存加法器實現 Montgomery algorithm 中的加法運算,進位儲存加法器(如圖 3-3)不像漣波進位加法 器需要等上一級的進位就可以直接求出結果,進位儲存加法器沒有進位延遲,面 積卻跟漣波進位加法器一樣,使用進位儲存加法器所完成的模乘法關鍵路徑方程 式(3-3)所需的時間比漣波進位加法器還要短,但是進位儲存加法器輸出有兩個分 別為 sum 及 carry,需將 sum 和 carry 相加才是最後的結果。 文中依照進位儲存加法器的輸入數目分成 5-to-2 CSA 和 4-to-2 CSA 兩種架構, 在章節 3.2.1 及章節 3.2.2 會介紹這兩種架構的差異,這兩種進位儲存加法器架構 都被設計成可以符合 Montgomery 演算法,可將每次進位儲存加法器運算出的結果 sum 及 carry 再拉回電路中繼續下一次運算,直至模乘法運算結束,模乘法及模指 12.

(23) 數運算期間不用將輸出 sum 及 carry 相加,等運算完模指數後再將結果 sum 及 carry 相加,即為所得。 an-1 bn-1 cn-1. a2 b 2 c 2. a1 b1 c1. FA. FA. FA. FA. c3 s2. c2 s1. c1 s0. ‧‧‧‧‧‧. cn sn-1. a0 b0 c0 0. c0. 圖 3-3 進位儲存加法器. s12 s22 b12 s11 s21 b11 s10 s20 b10. CSA1. FA. FA b22. CSA2. ● ● ● ● ● ●. CSA3. FA. FA n2. FA c3. s2 c2. FA. FA b21. n1. s1 c1. b20. FA FA. n0. s0. 圖 3-4 5-to-2 CSA 架構圖. 3.2.1 使用 5-to-2 CSA 的 Montgomery 演算法 5-to-2 CSA 為三層進位儲存加法器所組成,每一層的進位儲存加法器就如同圖 3-3 有三個輸入兩個輸出,每一層的輸出都要加到下一層的輸入,因為權重問題 carry 比 sum 高一個權重,所以 carry 都要往前接到下一層的下一個全加器,如圖 3-4 所示。 使用 5-to-2 CSA 完成模乘法的演算法如表 3-3,因為使用進位儲存加法器作為 加法器的關係,輸出會有兩個,為了使演算法搭配進位儲存加法器的兩個輸出, Montgomery 演算法中的 S 要拆成 S1 + S2,B 要拆成 B1 + B2,最長的關鍵路徑就 13.

(24) 要改寫成方程式(3-4),這樣就可以完成使用 5-to-2 CSA 的 Montgomery 演算法的 架構,如圖 3-5。 (S1, S2) = [S1+S2+ai×(B1 + B2)+q×N]. (3-4). 表 3-3 使用 5-to-2 CSA 的 Montgomery 演算法 Input:A, B = B1+B2(n+2-bit), N(n-bit) Output:(S1, S2) = A×B×R-1mod N, R = 2n+2 1. 2. 3. 4. 5. 6.. S1 = 0, S2 = 0 for i = 0 to n+1 { q = [s10+s20+ai×(b10 + b20)] mod 2 (S1, S2) = [S1+S2+ai×(B1 + B2)+q×N] / 2 { Return S1, S2. ai. B1 S1. S2 B2 N CSA. q. CSA CSA S1reg. S2reg. 圖 3-5 使用 5-to-2 CSA 的 Montgomery 演算法. 3.2.2 使用 4-to-2 CSA 的 Montgomery 演算法 4-to-2 CSA 是由 5-to-2 CSA 修改而成,需要兩層進位儲存加法器和一個 4-to-1 多工器,多工器使用來判斷 ai 及 q 的值,使原本 ai×(B1+B2)+q×N 變成+0+0、+N+0、 +B1+B2、+D1+D2 (+B1+B2+N),關鍵路徑從方程式(3-4)變成方程式(3-5),從三層 進位儲存加法器降到兩層,演算法部分沒有改變,但是多了一個 4-to-1 的多工器。 14.

(25) 底下是 4-to-2 CSA 的演算法(表 3-4)及架構(圖 3-6)。. (S1, S2) = [S1+S2+X+Y]. (3-5). 表 3-4 使用 4-to-2 CSA 的 Montgomery 演算法 Input:A, B = B1+B2(n+2-bit), N(n-bit) Output:(S1, S2) = A×B×R-1mod N, R = 2n+2 1. (D1, D2) = B1+B2+N+0 2. S1 = 0, S2 = 0 3. for i = 0 to n+1 { 4. q = [s10+s20+ai×(b10 + b20)] mod 2 5. if(ai = 0 and q = 0) (S1, S2) = (S1+S2+0+0) / 2 6. else if(ai = 0 and q = 1) (S1, S2) = (S1+S2+N+0) / 2 7. else if(ai = 1 and q = 0) (S1, S2) = (S1+S2+B1+B2) / 2 8. else (S1, S2) = (S1+S2+D1+D2) / 2 9. { 10. Return S1, S2. q S1 S2. B1 D1 N 0. ai. logic B2 D2 0 0. CSA CSA S1reg S2reg. 圖 3-6 使用 4-to-2 CSA 的 Montgomery 演算法. 3.3 模指數演算法 RSA 的核心為模指數演算法 (modular exponent algorithm) [7],而前面章節所 15.

(26) 提到的模乘法就是用來實現模指數運算,根據掃描方向,從指數的 MSB 往 LSB 掃描的稱為 H 演算法,反之從指數的 LSB 掃描至 MSB 的稱為 L 演算法。. 3.3.1 L 演算法 L 演算法是從指數的 LSB 掃描到 MSB,推導的過程如下,從推導的結果可以 看出,模指數是不斷計算模乘法所得的結果,演算法如表 3-5,流程圖如圖 3-7。 令 E = {en-1,…e1,e0} = 2n-1en-1+…+21e1+20e0 n 1. ME  M2. en 1 21 e1 20 e0. 0. n 1.  M2 e0  M2 e1   M2 1. M E  (((Me0 )M 2e1 )M 4e2 )M 2. n 1. en 1. e n 1. 表 3-5 模指數 L 演算法 Input:M, E, N(n-bit), C = R2mod N Output:MEmod N 1. M = MM(M, C, N), P = 1 2. for i = 0 to n-1 { 3. if (e[i] = 1) P = MM(M, P, N) 4. else P=P 5. M = MM(M, M, N) 6. { 7. if(P < 0) P=P+N 8. Return P. 從 L 演算法的演算法及流程圖可得知,P = M × P 和 M = M × M 都是拿上一個 迴圈所得的結果去計算,故沒有資料相依的特性,可以執行平行運算,電路速度 較快但是面積會是 H 演算法的兩倍。. 16.

(27) Start i = 0、P = 1 M=MRmod N 1. ELSB = 1 ?. P=PM. 0. M=MM i=i+1 E = E >> 1 1. i<n? 0. End 圖 3-7 L 演算法流程圖. L 演算法例子 輸入:M, E = (0111)2, N, C = R2mod N 輸出:MEmod N M = MM(M, C, N) = MRmod N、P = 1 i = 0 e[0] = 1 M = MM(M, M, N) = M2Rmod N P = MM(M, P, N) = Mmod N i = 1 e[1] = 1 M = MM(M, M, N) = M4Rmod N P = MM(M, P, N) = M3mod i = 2 e[2] = 1 M = MM(M, M, N) = M8Rmod N P = MM(M, P, N) = M7mod i = 3 e[3] = 0 M = MM(M, M, N) = M16Rmod N P = P = M7mod N Return P = M7mod N 17.

(28) 3.3.2 H 演算法 H 演算法剛好跟 L 演算法相反從指數的 MSB 掃描到 LSB,推導的過程如下, 演算法如表 3-6,流程圖如圖 3-8。 令 E = {en-1,…e1,e0} = 2n-1en-1+…+21e1+20e0 n 1. ME  M2. en 1 21 e1 20 e0. 0. n 1.  M2 e0  M2 e1  M2 1. en 1. ME  (((Me n1 )2 Me n2 )2 Me n3 )2 Me 0. 表 3-6 模指數 H 演算法 Input:M, E, N(n-bit), C = R2mod N Output:MEmod N 1. P = MM(M, C, N), Q = MM(1, C, N) 2. for i = n-1 to 0{ 3.. Q = MM(Q, Q, N). 3. if (e[i] = 1) Q = MM(P, Q, N) 4. else Q=Q 6. { 7. Return MM(Q, 1, N) 從 H 演算法的演算法及流程圖可得知,Q = Q×Q 和 Q = P×Q 是當下迴圈的結 果去計算的,故有資料相依的特性,不可以執行平行運算,速度較慢但是面積會 是 L 演算法的一半 。本論文使用 H 演算法做為模指數演算法,搭配修改的模乘法 完成 RSA 密碼系統,選擇 H 演算法的原因是因為積體電路都重視面積且我們的模 乘法經過改良速度更快,所以選擇面積較小的 H 演算法。. 18.

(29) Start i = k1、Q = 1 P=MRmod N Q=QQ. EMSB = 1 ?. 1. Q=QP. 0. i=i1 E = E << 1 1. i >= 0 ? 0. End 圖 3-8 H 演算法流程圖. H 演算法例子 輸入:M, E = (0111)2, N, C = R2mod N 輸出:MEmod N P = MM(M, C, N) = MRmod N、Q = MM(1, C, N) = Rmod N i = 3 e[0] = 0 Q = MM(Q, Q, N) = Rmod N i = 2 e[1] = 1 Q = MM(Q, Q, N) = Rmod N Q = MM(P, Q, N) = MRmod N i = 1 e[2] = 1 Q = MM(Q, Q, N) = M2Rmod N Q = MM(P, Q, N) = M3Rmod N i = 0 e[3] = 1 Q = MM(Q, Q, N) = M6Rmod N Q = MM(P, Q, N) = M7Rmod N Return MM(Q, 1, N) = M7mod N. 19.

(30) 3.4 Barrel Register 全加器 在使用進位儲存加法器的 Montgomery 演算法中,我們選擇實現面積較小的 H 演算法當作模指數演算法,實現 RSA 密碼系統。在 H 演算法中,每一次模乘法的 輸出都需要再拉回下一次的模乘法繼續運算,又因為使用進位儲存加法器的 Montgomery 演算法中的加法是使用進位儲存加法器輸出為(S1, S2),所以在模指數 中輸入 A 及輸入 B 需要拆成 A1+A2 及 B1+B2。但是在使用進位儲存加法器的 Montgomery 演算法 (表 3-3、表 3-4)我們又需要 Ai 的值,這時候我們使用 Barrel Register 全加器(BRFA) [6](如圖 3-9)將 A1 及 A2 做一個位元的加法,sum 的值輸入 到模乘法中運算,carry 的值就存進暫存器中,等待下一個週期的加法帶入運算, 確保 A 的值沒有遺漏,完成後的模乘法電路如圖 3-10。使用進位儲存加法器的 Montgomery 演算法需加上 BRFA 架構才能搭配模指數演算法進行 RSA 的運算。. a1n-1 a1n-2 …… a12. a11 FA. a2n-1 a2n-2 …… a22. a21. carryreg ai. 圖 3-9 Barrel register 全加器(BRFA). A1 A2. B1. BRFA. B2. N. Montgomery 1. S1reg S2reg. 圖 3-10 使用進位儲存加法器的 Montgomery 演算法架構. 20.

(31) 第四章、以四為基底 Montgomery 演算法 本論文第三章主要是說明以二為基底 Montgomery 演算法,一次針對一個位元 去做運算、判斷及修正,電路需要運算位元數的次數。本章節要說明並實現以四 為基底 Montgomery 演算法[8],以四為基底是一次針對兩個位元去做運算、判斷及 修正,所以運算的次數會是以二為基底的一半,所需的運算週期數較短,但是因 為一次判斷兩個位元的關係,關鍵路徑較長電路週期較長。演算法如表 4-1,流程 圖如圖 4-1。. 表 4-1 以四為基底 Montgomery 演算法 Input:A (Booth encoded)(k-bit), B, N(n-bit). Output:S = A×B×R-1mod N, R = 2k 1. S = 0 2. for i = 0 to k-1 { 3. (t0, t1) = (S+PPi) mod 4 4. if(t1 = 0 and t0 = 0) S = (S+PPi+0) / 4 5. if(t1 = 1 and t0 = 0) S = (S+PPi+2N) / 4 6. if(t1 = n1 and t0 = 1) S = (S+PPi-N) / 4 7. if(t1 != n1 and t0 = 1) S = (S+PPi+2N) / 4 8. { 9. Return S. Montgomery 演算法在執行 A×B 前,為了能一次針對兩個位元去做運算,會先 將 A 使用 Booth 演算法進行編碼,讓 A 的位元數降低,再跟 B 做相乘,判斷相乘 的結果 S 最右邊的兩個位元(t1, t0)需要做怎樣的修正,才會使右邊的兩個位元(t1, t0) 為 0,修正的方法有+0、+N、+2N、-N 四種,修正後使結果為 0,向右移兩個位 元才不會有錯誤產生,接著繼續下一迴圈的運算,直至被乘數 A 每個位元做完。 21.

(32) 以四為基底模乘法的觀念和以二為基底的一樣都是將最右邊一個或是兩個位元修 正為 0 接著向右位移將 0 位移掉縮小範圍,以二為基底將範圍縮小到[0, 2N),而以 四為基底將範圍縮小到(-N, N)。 以四為基底 Montgomery 演算法的關鍵路徑除了方程式(4-2)外,還有(t1, t0)的 判斷(如方程式(4-1))。 (t1, t0) = (S+PPi) mod 4 S = S + PPi + X. (4-2). Start i=0 S=0 S = S + PPi (t1, t0) = S mod 4 1. (t1, t0) = (0,0)?. S=S/4. 0 1. (t1, t0) = (1,0)?. S = (S + 2N) / 4. 0 1. t1 = n1?. S = (S - N) / 4. 0. S = (S + N) / 4. 1. i = . n  3 2 . i=i+1. ?. 0. End. 圖 4-1 以四為基底 Montgomery 演算法流程圖. 22. (4-1).

(33) 4.1 Booth 演算法 為了讓 Montgomery 演算法能一次判斷兩個位元,必須利用 Booth 演算法編碼 (表 4-2)讓 A 的位元數從 n-bit 減少到. -bit,再根據 A 編碼後的值決定 B 的動作,. 如此一來就可以減少模乘法的運算週期數和總運算時間,此時模乘法輸出範圍落 在(-N, N),不需最後減法運算,再加上 Booth 演算法可以處理有號數,所以在模 指數的運算中不需要修正就可以直接將輸出放到下一次運算的輸入中。下面是 Booth 演算法的操作範例。. Booth 演算法 (1)令 A = (0111)2 (2)在 A 的 MSB 加入三位的保護位元及一位的有號位元(sign bit)使其成為有號 數,接著再 LSB 加入參考位元。 A' = (000001110)2 (3)根據 Booth 演算法編碼(如表 4-2),A'' = (0 0 2 -1)4. 表 4-2 Booth 演算法編碼 a2i+1. a2i. a2i-1. Booth code. action. 0. 0. 0. 0. +0. 0. 0. 1. 1. +B. 0. 1. 0. 1. +B. 0. 1. 1. 2. +2B. 1. 0. 0. -2. -2B. 1. 0. 1. -1. -B. 1. 1. 0. -1. -B. 1. 1. 1. 0. 0. 23.

(34) Booth 乘法 (1)計算 B×A (2)將 A 經由 Booth 演算法編碼(如表 4-2) A = (an-1...a2, a1, a0)2 = (ak-1...a2, a1, a0)4, k = (3)根據表 4-2 的 action 欄位,選擇 B 的動作,完成 Booth 乘法 Booth 乘法計算範例 A = (0111)2、B = (0101)2,計算 B×A A 和 B 皆在 MSB 加入三個保護位元一個有號位元 A 使用 Booth 演算法編碼 B = (00000101)2、A = (0 0 2 -1)4. 1 0 0 0 0. 1 0 0 0 0. 1 0 0 0 0. 1 0 0 0 0. × 1 1 0 0 0 0 0 0 0 0. 0 0 0 1 1 0 0 0 0 0 0 0 0. 0 0 0 1 0 1 B 0 2 -1 A 1 1 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1. 圖 4-2 Booth 乘法範例. 以四為基底 Montgomery 演算法計算範例 A = (0111)2、B = (0101)2、N = (0011)2 計算 B×A mod N ≡ (0101)2 × (0111)2 mod(0011)2 = (0010)2 PS.因為每次以四為基底 Montgomery 演算法做完一次運算需要向右位移兩個位元, 所以一開始就要針對 B 做左移,好讓計算出的結果能落在(-N, N),如果選擇在完 成後再左移,結果可能無法順利落在(-N, N)。 B = (5)10×44 mod 3 = 2 24.

(35) ×. 0 0 0 0 0. 0 0 0 0 0. 0 0 0 0 0 0 0 0 0. 0 0 0 0 0 0 0 0 0. 0 0 0 0 0 0 0 0 0 0 0 0 1. 0 0 0 0 0 0 0 0 0 0 0 1 0. 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0. 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0. 0 0 2 1 1 0 1 0 1 0 0 0 1 1 1 0 0. 1 0 B -1 A 1 0 -B 1 0 +2N 0 0 +2B +N +0B +2N +0B +2N. 圖 4-3 以四為基底 Montgomery 演算法範例. 4.2 使用進位儲存加法器的以四為基底 Montgomery 演 算法 為了追求電路的速度,將以四為基底 Montgomery 演算法和 McIvor 提出的進 位儲存加法器架構做結合,利用進位儲存加法器不需進位延遲與以四為基底比以 二為基底少了一半的週期的優點,實現使用進位儲存加法器的以四為基底 Montgomery 演算法[9]的硬體架構,使電路能更快的完成模乘法的運算。演算法內 容如表 4-3。 使 用 進 位 儲 存 加 法 器 的 以 四 為 基 底 Montgomery 演 算 法 跟 以 四 為 基 底 Montgomery 演算法是精神是相同的,都是一次處理兩個位元將 LSB 兩個位元修正 為 0,再向右位移兩個位元,完成一次運算,直至 Booth 編碼 A 的位元數做完,完 成整個模乘法,但在電路的實作上有幾個需要注意的地方分別是 Booth 乘法、以 四為基底 Montgomery 演算法和位移修正項,以下會詳細說明。 25.

(36) 表 4-3 使用進位儲存加法器的以四為基底 Montgomery 演算法 Input:A (Booth encoded)(k-bit), B1, B2, N(n-bit). Output:(S1, S2) = A×B×R-1mod N, R = 2k 1. S1 = 0, S2 = 0, cb = 0 2. for i = 0 to k-1 { 3. (t0, t1) = (S1+S2+ai×(B1+B2)+cb) mod 4 4.. (C, S) = S1+S2+ai×(B1+B2)+cb. 5. 6. 7.. if(t1 = 0 and t0 = 0) if(t1 = 1 and t0 = 0) if(t1 = n1 and t0 = 1). (C, S) = CSA(C+S+0) (C, S) = CSA(C+S+2N) (C, S) = CSA(C+S-N). 8. if(t1 != n1 and t0 = 1) (C, S) = CSA(C+S+N) 9. cb = C[1] 10. S1 = C >> 2, S2 = S >> 2 11. { 12. Return S1, S2. 使用進位儲存加法器的以四為基底 Montgomery 演算法實現模指數 H 演算法 也像使用進位儲存加法器的以二為基底 Montgomery 演算法一樣需要將輸入 A 拆 成 A1+A2,B 拆成 B1+B2,再修改 McIvor 的 BRFA (4.2.1 有詳細的介紹),使 Booth 演算法(表 4-2)編碼的五個動作+0、+B、+2B、-2B、-B 用兩層 CSA 及多工器拆 成+0+0、+B1+B2、+2×B1+2×B2、-2×B1-2×B2、-B1-B2,其中+2×B1+2×B2 可以用位移得到,-2×B1-2×B2、-B1-B2 因為是有號數運算的關係,必須先 算出 B1+B2 的 2 的補數 D1+D2,算補數的電路又不能利用額外的硬體架構。一開 始在 5-to-2 CSA 的加法中放入如方程式(4-3)的輸入,就可以算出-B1-B2,接著 將值存到暫存器 D1、D2,而-2×B1-2×B2 就將 D1、D2 進行位移即可,這樣就 可以完成 Booth 乘法的動作。. (D1, D2) = (-B1-B2) = CSA(~B1 + ~B2 + 1 + 1 + 0) 26. (4-3).

(37) 使用進位儲存加法器的以四為基底 Montgomery 演算法要使用三層的進位儲 存加法器實現(圖 3-5)共有五個輸入兩個輸出,因為模乘法要不斷的重覆運算,所 以輸出要拉回輸入去做運算,輸入實際上只剩下三個,兩個為上一段 Booth 乘法 的兩個輸出。最後一個就是 Montgomery 演算法的修正項 N,根據以四為基底 Montgomery 演算法(表 4-1)有四種修正方式+0、+2N、-N、+N,其中的 2N 可以 用位移產生,在 RSA 金鑰產生的方法中,N 為兩個大質數的乘積,所以 N 一定是 奇數,N 的 2 的補數可以不需另外計算,只需要做些修正如方程式(4-4),如此一 來四種修正方式就可以得到了。. N = {Nk-l, ..., N1 , N0} (4-4) N 的 2 的補數 = {~{Nk-1, ..., N1}, N0}. 位移修正項[10]的問題起因於進位儲存加法器所產生的兩個輸出,在一次位移 兩個位元的時候可能會發生進位問題,位移修正項就是為了解決這個進位問題, 在以二為基底模乘法的進位儲存加法器架構因為一次只判斷一個位元,加上 carry 第 0 個位元一定是 0,所以 sum 和 carry 分別都向右位移一個位元不會發生問題。 但是以四為基底一次判斷兩個位元,要把 sum 及 carry 相加後滿足四的倍數才可以 向右位移兩個位元,如果直接把 sum 及 carry 向右位移兩個位元,此時會有進位的 問題的產生,以下的狀況相加後滿足四的倍數,但是直接位移會發生進位錯誤, 分別是 01+11 = 100、11+01 = 100、10+10 = 100,雖然這些狀況會發生進位的錯誤, 可是 01+11 和 11+01 這兩種狀態不可能發生,因為 caary 第 0 個位元一定是 0,所 以只剩下 10+10 這種狀況需要額外修正。根據觀察只要 carry 或 sum 第一個位元為 1,上述的狀況就會發生,所以就可以把 carry 第一個位元當作位移進位修正位元, 稱它為 cb,直接加在位移後的結果如方程式(4-5),完成修正。. 27.

(38) cb = carry[1] sum = sum >> 2. (4-5). carry = (carry >> 2) + cb 在電路實現方面,為了不要有額外的計算延遲,我們將運算結束後的 cb 存進 暫存器中,在下一個迴圈運算時,加入進位儲存加法器中 carry 的第 0 個位元繼續 運算,這樣就不會有額外的延遲。使用進位儲存加法器的以四為基底 Montgomery 演算法流程圖如圖 4-4,架構圖如圖 4-5。. Start i=0 cb = 0 (S1, S2) = 0 (C, S) = S1 + S2 + ai(B1 + B2) + cb (t1, t0) = (S1 + S2 + ai(B1 + B2) + cb) mod 4. 1. (t1, t0) = (0,0)?. (C, S) = CSA(C + S + 0). 0 1. (t1, t0) = (1,0)?. (C, S) = CSA(C + S + 2N). 0 1. t1 = n1?. (C, S) = CSA(C + S - N). 0. (C, S) = CSA(C + S + N). 1. i = . n  3 2 . ?. cb = C[1] S1 = C >> 2 S2 = S >> 2 i=i+1. 0. End. 圖 4-4 使用進位儲存加法器的以四為基底 Montgomery 演算法流程圖. 28.

(39) A 0 B1 2B1 2D1 D1 S1. S2. Booth algorithm 0 B2 2B2 2D2 D2. CSA CSA. 0 2N -N N (t1, t0). CSA shift. shift. S1reg. S2reg. cbreg D1reg. D2reg. 圖 4-5 使用進位儲存加法器的以四為基底 Montgomery 演算法架構圖. 4.2.1 以四為基底 Barrel register 全加器 為了將使用進位儲存加法器的以四為基底 Montgomery 演算法實現在 RSA 模 指數運算上,需要把每次模乘法的輸出 carry 跟 sum 放回輸入繼續運算,所以把輸 入 A 拆成 A1+A2、輸入 B 拆成 B1+B2,好讓模乘法的結果不用經過相加直接放回 輸入繼續運算,可以節省每次模乘法結果 carry 及 sum 加起來的時間。 為了滿足以四為基底一次處理兩個位元和 Booth 演算法編碼一次處理三個位 元的問題,改良 McIvor 所提出的 barrel register 全加器 (BRFA) 架構,重新設計一 個 BRFA 一 次 可 以 處 理 兩 個 位 元 適 合 使 用 進 位 儲 存 加 法 器 的 以 四 為 基 底 Montgomery 演算法。 電路如圖 4-6 所示,在架構中使用兩個全加器將輸入 A1[1:0]跟 A2[1:0]做相加, 輸出 A2i+1、A2i 和 carry,每一次的 carry 會存起來等到下次的運算迴圈中繼續運算, A2i-1 為配合 Booth 編碼一次處理三個位元的設計,把 A2i+1 的值存起來當作下一個 迴圈的 A2i-1,這樣的電路動作為 Booth 編碼所需的,完全適用於使用進位儲存加 29.

(40) 法器的以四為基底 Montgomery 演算法,我們稱為修改 barrel register 全加器 (MBRFA),整體的使用進位儲存加法器的以四為基底 Montgomery 演算法架構如圖 4-7 所示。. A2k-1 ‧‧‧ A23. A22. A21. A20. A1k-1 ‧‧‧ A13. A12. A11. A10. FA. FA. A2i+1(reg). A2i(reg). A2i+1. A2i. carryreg. A2i-1(reg). A2i-1. 圖 4-6 修改 barrel register 全加器. A1. A2. B1. B2. N. R4BRFA 3. Booth encode. R4 Montgomery 3. S1reg. S2reg. 圖 4-7 使用進位儲存加法器的以四為基底 Montgomery 演算法架構圖. 4.3 修改使用進位儲存加法器的以四為基底 Montgomery 演算法 本論文提出一個修改使用進位儲存加法器的以四為基底 Montgomery 演算法, 跟使用進位儲存加法器的以四為基底 Montgomery 演算法比起來,保留了以四為基 底模乘法的優點:MBRFA、拆開輸入配合模指數運算將結果用 carry-save 表示、 加法使用進位儲存加法器...等等,修改後的電路跟原先的電路比較起來有較短的關 鍵路徑、較小的面積,付出的代價卻是幾乎可以忽略的。修改的步驟大致分成兩 30.

(41) 個部分,分別是使用直接以 2 補數計算負值 (章節 4.3.1)、四倍輸入概念進行電路 的化簡 (章節 4.3.2),得以實現快速的模乘法運算,而且所提出模乘法演算法也可 以搭配模指數運算完成整個 RSA 密碼系統。. 4.3.1 直接以 2 補數計算負值 在使用進位儲存加法器的以四為基底 Montgomery 演算法中為了計算 Booth 編 碼的負值部分 (-B、-2B),需要在電路開始運算之前,就先利用一個週期將- B1、-B2 計算出來儲存在暫存器 D1 及 D2 中,如此一來會消耗兩排 512 甚至是 1024-bit 的暫存器儲存負值。為了解決這個問題讓電路可以在同一個週期就將負值 產生出來,我們利用進位儲存加法器中 carry 的第 0 個位元一定是 0 的概念[11], 電路開始運算以後,當 Booth 編碼編到-B、-2B 時,此時多工器分配的-B、- 2B 為 B、2B 取 1 補數,而進位儲存加法器中 carry 的第 0 個位元將 0 改成 1,看 成是加一的動作,整個運算合起來就是取 2 補數,就是二進位計算負值的動作, 加一的動作可由多工器去控制進位儲存加法器中 carry 的第 0 個位元為 1 或是為 0, 且因為是與進位儲存加法器平行擺放,所以 Booth 編碼的結果會直接控制多工器 給值,不會增加額外的運算時間,電路架構如圖 4-8 所示。. 4.3.2 利用四倍輸入化簡電路 上一章是介紹如何減少電路的面積,接下來是降低電路運算複雜度的方法, 使電路達到加速的效果,我們從使用進位儲存加法器的以四為基底 Montgomery 演 算法(表 4-3)中的方程式(4-6)開始下手,我們想要讓方程式的運算條件減少,使其 達到降低關鍵路徑的效果。利用四倍 B1、四倍 B2 的概念使方程式(4-6)變成方程 式(4-7),將 B1 及 B2 抽離計算(t1,t0)的過程,這樣做的好處是原本 5-to-2 CSA 的 第一層是加 B1 第二層是加 B2,所以要等到第二層運算結束才可以去計算(t1,t0)的 31.

(42) 運算,判斷如何修正使 S1 及 S2 右邊兩個位元為 0,但是我們使用四倍 B1、四倍 B2[14]將式子改寫成變成方程式(4-7)就可以跟進位儲存加法器平行運算,不用等第 二層進位儲存加法器運算結束才去判斷(t1,t0),如此一來便可減少電路的關鍵路徑, 可使電路的速度更加快速,但是運算元增加導致運算的次數增加一次。. (t1, t0) = [(S1 + S2 + ai×(B1 + B2) + cb]mod 4. (4-6). B1 → 4B1 B2 → 4B2 (t1, t0) = [S1 + S2 + cb]mod 4. (4-7). 如果將直接在電路中計算 2 補數得到負值的概念放在使用進位儲存加法器的 以四為基底 Montgomery 演算法的電路中,會使原本(t1,t0)判斷式變得更加複雜, 使電路的關鍵路徑更長,節省了面積但是會花費更多的時間運算(章節 4.5 會詳細 介紹)。所以要搭配四倍 B1、四倍 B2 化簡電路的概念簡化(t1,t0)的運算,達到省面 積的效果,又不會增加關鍵路徑。表 4-4 是修改使用進位儲存加法器的以四為基底 Montgomery 演算法,圖 4-8、圖 4-9 為其電路架構及流程圖。 在修改使用進位儲存加法器的以四為基底 Montgomery 演算法跟使用進位儲 存加法器的以四為基底 Montgomery 演算法一樣都是使用三層進位儲存加法器,第 一層為 B1 的輸入,第二層為 B2 的輸入,第三層為 N 的輸入,B1 及 B2 的輸入在 章節 4.3.1 中有講解了,最後的 N 跟使用進位儲存加法器的以四為基底 Montgomery 演算法的一樣,都是利用 N 一定為奇數,N 的 2 補數可以不用另外計算,方法如 方程式(4-4)所示。. 32.

(43) 表 4-4 修改用進位儲存加法器的以四為基底 Montgomery 演算法 Input:A (Booth encoded)(k-bit), B1, B2, N(n-bit). Output:(S1, S2) = A×4B×R-1mod N, R = 4k 1. S1 = 0, S2 = 0, cb = 0 2. B1 = 4B1, B2 = 4B2 3. for i = 0 to k-1 { 4. 5.. (t1, t0) = (S1 + S2 + cb)mod 4 (S1, S2) = S1+S2+ai×(B1+B2)+cb. 6. 7. 8.. if(t1 = 0 and t0 = 0) if(t1 = 1 and t0 = 0) if(t1 = n1 and t0 = 1). (C, S) = CSA(S1+S2+0) (C, S) = CSA(S1+S2+2N) (C, S) = CSA(S1+S2-N). 9. if(t1 != n1 and t0 = 1) (C, S) = CSA(S1+S2+N) 10. cb = S[1] | C[1] 11. S2 = S >> 2, S1 = C >> 2 12. { 13. Return S1, S2. A1 A2 Booth algorithm. >> 2 >> 2 0 B1 2B1 2B1 B1 S1 S2 512. CSA1. 0 B2 2B2 2B2 B2 3. 512. 512. MBRFA. cb. 512. 00 0 1 1. CSA2. 0 2N -N N {t1, t0}. 512. CSA3 S1reg. 00 0 1 1. S2reg. 圖 4-8 修改使用進位儲存加法器的以四為基底 Montgomery 演算法架構圖. 33.

(44) Start i=0 cb = 0 (S1, S2) = 0 (S1, S2) = CSA(S1 + S2 + ai(B1+B2)) (t1, t0) = (S1 + S2 + cb) mod 4. (t1, t0) = (0,0)?. 1. carry10 = cb carry20 = 1 or 0. (C, S) = CSA(S1 + S2 + 0) carry30 = 1 or 0. 0. (t1, t0) = (1,0)?. 1. (C, S) = CSA(S1 + S2 + N) carry30 = 1 or 0. 0 1. t1 = n1?. (C, S) = CSA(S1 + S2 -N ) carry30 = 1 or 0. 0. (C, S) = CSA(S1 + S2 + 2N) carry30 = 1 or 0 1.  n  5   2 . i=. ?. cb = C[1] || S[1] S1 = C >> 2 S2 = S >> 2 i=i+1. 0. End. 圖 4-9 修改使用進位儲存加法器的以四為基底 Montgomery 演算法流程圖. 位移修正項的部分,在使用進位儲存加法器的以四為基底 Montgomery 演算法 中的位移修正項是取輸出 carry 的第一個位元判斷是否有進位,而在修改使用進位 儲存加法器的以四為基底 Montgomery 演算法中也會有位移修正項的問題產生。原 本電路中只會有 10+10 的情況發生,但是因為直接在電路中計算 2 補數得到負值 的計算方式,導致位移修正多了兩種可能,變成 10+10、11+01 及 01+11 共三種需 要修正的情況,cb 的判斷就會變成 carry 的第一個位元與 sum 的第一個位元做 or 運算,如此一來關鍵路徑會多一個 or 閘,但是如果將向右位移兩個位元的動作移 到跟五對一多工器一起做,此時判斷 cb 就不會列入關鍵路徑中,關鍵路徑長度一 樣又可以減少兩排 512-bit 的暫存器。 34.

(45) 我們使用模指數 H 演算法實現 RSA 密碼系統,RSA 密碼系統電路架構如下圖 4-10 所示。當 rst 歸 0 時電路開始運作,C 會放入 A1 中使電路有初值,電路開始 做 preprocess1 的動作,preprocess1 運算完將結果存至 P1、P2 暫存器中等之後電路 運作至 ei = 1 時可以利用,preprocess2 開始運算時也保持 A1 為 C,多工器選擇 0 輸入帶 M 求出的結果就可以開始模指數的運算,模指數的運算依照 H 演算法(表 3-6)先平方,接著判斷 ei 是否等於 1,等於 1 的話需要再做相乘的動作,如果等於 0 則直接跳過,電路運算完次方次後,需要再做一次 postprocess 將 RmodN 從式子 中拿掉,完成的結果即為所求。. 1. 0. 0. ●. ●. ●. ●. ●. ●. ●. ●. ●. ●. ●. ●. P1 S1 1 M. 1 1 0 0. P2 S2 0 0. 0. ctrl. 0. postprocess ei = 1 iteration preprocess2 preprocess1 1. B1. A1. A2 MM. S1. 1. N. B2. N. S2. P1 1. P2 0. ei. 0. 1. 圖 4-10 RSA 密碼系統架構圖. 4.4 實驗結果 本論文提出一個模乘法的架構,搭配模指數 H 演算法,完成 RSA 密碼系統, 我們的 RSA 設計為 512-bit,且依照 IC 設計的 Cell Based 流程(如圖 4-11)完成整個 電路設計及驗證。. 35.

(46) Idea Design. RTL. Synthesis Gate-Level Pre-layout Simulation Post-layout Simulation. APR. 圖 4-11 Cell based 設計流程. Cell Based 設計流程如下,起先我們需要設計我們的電路,確認電路架構後使 用硬體描述語言 Verilog 實現 RTL(Register-Transfer Level)模擬,NCVerilog 編譯我 的程式語言,波形軟體 Verdi 觀察我的電路模擬結果是否符合假設,RTL 模擬驗證 後,驗證 Gate-Level 模擬,使用合成軟體 Design Compiler 及 TSMC 90nm 製程進 行 Synthesis 將電路轉成邏輯閘的形式再使用 Verdi 觀察波形結果是否符合 RTL 模 擬,我們也利用等效檢查器 Formality 確認 RTL 與 Gate-Level 結果是否有 match, 最後 APR(Auto Place & Route)部份我們使用 IC Compiler 完成一個小位元 RSA 密碼 系統進行繞線佈局,及驗證 CHIP 的 DRC、LVS 及 Function 結果正確。Synthesis 及 RTL 的部份我們使用[2]中的範例進行模擬。 e = 17, d = 157, N = 2773,明文:0920 1900 0112 1200 0718 0505 1100 2015 0013 0500,密文:0948 2342 1084 1444 2663 2390 0778 0774 0219 1655,圖 4-12 為整段 明文資料進行區塊加密的模擬,圖 4-13 為 0920 明文加密的模擬,圖 4-14 為整段 密文資料進行區塊解密的模擬,圖 4-15 為 0948 密文解密的模擬。以上的模擬都是 Gate-Level 的模擬驗證,在進行合成的時候,合成軟體會重新命名程式語言的節點 名稱,所以僅列出最上層電路的模擬結果,無法詳列中間節點。. 36.

(47) 圖 4-12 加密模擬結果(1). 圖 4-13 加密模擬結果(2). 圖 4-14 解密模擬結果(1). 圖 4-15 解密模擬結果(2). 圖 4-16 為等效檢查器 Formality 驗證結果圖,Formality 這套軟體可以檢查 RTL-to-RTL、RTL-to-Gates 及 Gates-to-Gates 的功能有沒有改變,這邊我們利用 Formality 確認我們的 RTL 程式碼與 Gate-Level 的功能是相同的,多一次的驗證多 37.

(48) 一次的保障。. 圖 4-16 Formality 驗證. 圖 4-17 為我們利用 APR 軟體 IC Compiler 所完成的佈局圖,本論文電路設計 為修改模乘法的架構,完成 512-bit 的 RSA 密碼系統。所以我們完成的佈局圖為 16-bit 的 RSA 密碼系統,這邊使用小位元的原因是因為輸入的腳位如果像電路設 計那樣 512-bit 需要太多腳位,所以這邊就以小位元來確認 Cell Based 流程的正確 性,本論文的設計應用還是以網路上的資訊加密解密為主。 圖 4-18 為 IC Compiler 所完成佈局圖的 DRC 驗證,DRC 為驗證佈局圖有沒 有違反 design rule,圖中那些錯誤依照 CIC 網站上所給的資料,那些錯誤為 CIC 下線可允許之假錯,所以佈局圖的 DRC 驗證是正確的。 圖 4-19 為佈局圖的 LVS 驗證,LVS 為驗證佈局與程式是否符合,笑臉為正確 的意思,表示 LVS 與佈局圖是完全符合的意思。. 38.

(49) 圖 4-17 16-bit RSA 密碼系統佈局圖. 圖 4-18 DRC 驗證 39.

(50) 圖 4-19 LVS 驗證. 圖 4-20 Post-layout 模擬結果. 圖 4-20 為 post-layout 模擬的結果,是將佈局圖轉成 Verilog 硬體描述語言,接 著使用 NCVerilog 編譯轉出來的程式語言,最後使用波形軟體 Verdi 驗證結果是正 確的,確認整個流程沒有問題。. 4.5 模乘法的比較 比 較近年使用進位儲存加法器 實現以四為基底 Montgomery 演 算法 , F. Tenca[10]的架構如圖 4-21 所示,架構的輸入 A、B 各只有一個,如果要應用在 RSA 模指數演算法中,必須把每次運算的結果 sum 和 carry 相加,相加的結果才可以當 作模指數演算法的輸入,在進行加解密運算都是大位元運算,大位元相加的動作 非常浪費時間,且相加完下一個迴圈經過進位儲存加法器運算加法使的結果又拆 40.

(51) 成了兩個,又要再相加一次,無法有效率的應用在 RSA 模指數演算法中。. A. B. N. Tenca’s S1. S2. 圖 4-21 Tenca’s 架構. S. S. Ghoreishi[11]使用 Roorda 演算法,不需要增加有號數,即可做有號數運 算,但是在演算法中計算太多判斷式:(ti1, ti0)及 Cin,導致電路關鍵路徑太長,且 最後必須多兩層進位儲存加法器才可以求出結果,該電路的結果也像 F. Tenca 的架 構一樣,需要做最後的加法,才能進行模指數的運算,也是無法有效率的應用在 RSA 模指數演算法中。 M. R. Lee[9]使用進位儲存加法器的以四為基底 Montgomery 演算法為本篇重 要的參考文獻,文中提及模乘法的架構及輸出使用 carry-save 的表示式直接輸出結 果,輸入拆成 A1+A2 及 B1+B2(如圖 4-22 所示)來配合模指數的運算,將輸出的 sum 及 carry 拉回輸入依照演算法所需的位置擺放,即可不需最後的加法也能進行模指 數的運算,搭配文中所提及的 MBRFA,可以有效率的應用在模指數演算法中實現 RSA 密碼系統。根據我們的觀察此電路架構可以繼續做最佳化,讓它的面積更小 且速度更快,下圖 4-23、4-24 是改進的過程,圖 4-23 為 M. R. Lee 模乘法電路架 構中計算(t1, t0)的算式,從圖 4-24 的電路中可以看到我們將圖 4-23 的 cb 上移到 CSA1 的 carry0 就可以使我們計算(t1,t0)的關鍵路徑由兩個互斥或閘跟一個 and 變成 一個 and,如此一來就可以使電路的關鍵路徑減短,但是關鍵路徑中還是有一個 4-1 多工器及一個 and 的存在。為了解決這個問題,我們利用四倍 B1、四倍 B2 化 簡電路的概念使(t1,t0)與 5-to-2 CSA 平行運算,再搭配直接在電路中計算 2 補數得 到負值的方法,完成修改使用進位儲存加法器的以四為基底 Montgomery 演算法, 41.

(52) A1. A2. B1 B2. N. Lee’s S1. S2. 圖 4-22 M. R. Lee’s 架構. A Booth algorithm. 0 B1 2B1 2D1 D1 S1. S2. 0 B2 2B2 2D2 D2 CSA1 CSA2. 0 2N -N N (t1, t0). CSA3 shift. shift. S1reg. S2reg. t0 = sum[0] ⊕ cb t1 = (sum[0]*cb) ⊕ carry[0] ⊕ sum[1]. cbreg D1reg. D2reg. 圖 4-23 M. R. Lee’s[9]模乘法架構. A 0 B1 2B1 2D1 D1 S1. S2. Booth algorithm 0 B2 2B2 2D2 D2. CSA1 CSA2. 0 2N. -N N. (t1, t0). CSA3 shift. shift. S1reg. S2reg. t0 = sum[0] t1 = carry[0] * sum[1]. cbreg D1reg. D2reg. 圖 4-24 本論文的模乘法架構 42.

(53) 雖然完成的模乘法多做一次運算,但是少了 D1 及 D2 兩個至少 512-bit 的暫存器, 整體電路的關鍵路徑也比 M. R. Lee[9]來的短,面積來的小。 我們提出的架構修改了使用進位儲存加法器的以四為基底 Montgomery 演算 法,可以搭配模指數 H 演算法完成 RSA 密碼系統,模指數合成結果為 455MHz 合 成面積為 76K gate count。下表 4-5 我們將各個參考文獻模乘法面積、關鍵路徑、 週期數都列成表出來做比較,面積的部分我們省去小電路的面積,列出進位儲存 加法器主體及所需的元件,關鍵路徑為電路運算的最長路徑。 從表 4-5 這樣的比較表格並沒有辦法很直觀看出面積以及關鍵路徑的好壞,為 了進行公平的比較,我們在下面提供表 4-6 來做為一個參考的依據,裡面是 TSMC 90nm 標準元件的標準化面積及延遲,我們是將 FA 的面積以及延遲當做 1 來跟其 他的元件做比較,合成的環境及規範都是相同的,元件是使用 TSMC 90nm 裡現有 的元件,並沒有另外去做最佳化,完成後將表格的數據帶入各個參考文獻中去計 算各個參考文獻中模乘法所需的面積以及延遲,將面積以及延遲時間量化好做比 較,最後將兩者相乘計算 AT 進行比較,完成的結果如表 4-7。 在文獻[14]中提到一個修改 5-to-2 進位儲存加法器的架構,因為他是將兩個 1-bit 全加器合併在一起,合併後的 2-bit 加法器有較短的關鍵路徑(如圖 4-25),將 修改 5-to-2 進位儲存加法器(如圖 4-26)跟我電路修改的兩個方法合併在一起:1.利 用四倍輸入化簡電路 2.直接以 2 補數計算負值,完成速度更快且面積不變得模乘 法電路,電路如圖 4-27 演算法如表 4-8,表 4-8 跟我所提出之電路差異在於加法的 部分使用修改 5-to-2 進位儲存加法器,我們將這個電路也放進表 4-5 及表 4-7 進行 比較,從量化的結果來看該電路整合三種方法,在 AT 的表現上最好。. 43.

(54) S1 S. S2 qN. AiB1 S. AiB2 Cout. Cout. 圖 4-25 2-bit 加法器. 0. 0. S1n+1. S2n+1 q[i]Nn+1. AiB12 AiB22 S1[i]1 S2[i]1 q[i]N1. AiB11 AiB21 S1[i]0 S2[i]0 q[i]N0 AiB10 AiB20. FA. ‧‧‧‧‧‧. FA. FA. FA. FA. FA HA. S3'[i]n-1 S3'[i]n S2'[i]n+1. HA. S2[i+1]n+2 S1[i+1]n+2. S2'[i]n. S1'[i]n+1. S3'[i]1. FA. S2[i+1]n+1. S3'[i]0. c0. S2'[i]1. S2'[i]0. S1'[i]1. s0. FA. ‧‧‧‧‧‧ S1[i+1]n+1. S2[i+1]1. FA. S1[i+1]1. S2[i+1]0. 圖 4-26 修改 5-to-2 進位儲存加法器. MBRFA. Booth algorithm. 3. 0 S2. B2 B2 2B2 2B2. 3 0. B1 B1 2B1 2B1. S1 MUX5-1. MUX5-1. 512. 512. CSA with 2-bit Adder 512. 512. cb. 00 0 1 1. 512. 512. CSA. 00 0 1 1. 512. S2reg. S1reg. 圖 4-27 經過修改後之 Yao 的模乘法架構圖. 44. S1'[i]0. S1[i+1]0.

(55) 表 4-5 比較不同使用進位儲存加法器的 Montgomery 模乘法 面積. 關鍵路徑. 週期數. McIvor 5-to-2[6]. 3n×AFA+7n×AREG+ 3n×AAND. 3×TFA+2×TXOR+TAND. n+1. McIvor 4-to-2[6]. 2n×AFA+9n×AREG+ 2n×AMUX4. 2×TFA+2×TXOR+TAND+ TMUX4. n+2. Shieh[13]. 2n×AFA+9n×AREG 1n×AMUX3+1n×AMUX2+. 2×TFA+TMUX2+TAND. n+4. 3n×AAND Kuang[12]. 2n×AFA+9n×AREG+ 2n×AMUX4+2n×AMUX2. 2×TFA+TMUX4. (n+5)×0.81. Lee[9]. 3n×AFA+9n×AREG+ 2n×AMUX5+1n×AMUX4. 3×TFA+TMUX5+ TMUX4+2×TXOR+TAND.  n  3  2   . Yao[14]. 3n×AFA+9n×AREG+ 2n×AMUX5+1n×AMUX4. 2×TFA+TMUX5 +TOR+TAND. n  5  2 . Ours. 3n×AFA+7n×AREG+ 2n×AMUX5+1n×AMUX4. 3×TFA+TMUX5+TOR. n  5  2 . Ours+Yao. 3n×AFA+7n×AREG+ 2n×AMUX5+1n×AMUX4. 2×TFA+TMUX5 +TOR+TAND. n  5  2 . RSA 的運算核心是模乘法,從比較模乘法的結果可以看到我的加上姚的 AT 是文獻中最好的,但是 RSA 密碼系統除了考慮到 AT 之外,最重要的是比較資料 處理能力也就是所謂的 Throughput,處理能力越高表示電路處理資料的效果越好, 下表 4-9 我們列出幾個效果比較好的模乘法所實現的 RSA 來進行處理能力 (Throughput) 的比較,因為參考文獻並不是都是使用 TSMC 90nm 去實現的,所以 我們把各個參考文獻的關鍵路徑都用表 4-6 將其標準化,推測那些電路在 TSMC 90nm 下所能達到的速度,再利用求出的值去計算我們的處理能力,我們處理能力 的計算方式為位元數除以 RSA 的全部運算時間,將標準化後的結果寫成表 4-9。. 45.

(56) 表 4-6 標準元件標準化 REG. FA. OR. AND. MUX2 MUX3 MUX4. Delay. -. 1. 0.26. 0.23. 0.24. 0.36. area. 0.92. 1. 0.21. 0.21. 0.38. 0.75. XOR. MUX5. 0.37. 0.26. 0.69. 1.04. 0.33. 1.42. 表 4-7 分析面積及延遲 面積. 關鍵路徑. ATP (n×AFA×TFA×週期數). McIvor 5-to-2[6]. 10.07n×AFA. 3.75×TFA. 37.76. McIvor 4-to-2[6]. 12.36n×AFA. 3.12×TFA. 38.56. Shieh[13]. 12.04n×AFA. 2.47×TFA. 29.74. Kuang[12]. 13.12n×AFA. 2.37×TFA. 25.19. Lee[9]. 15.16n×AFA. 4.81×TFA. 36.46. Yao[14]. 15.16n×AFA. 3.18×TFA. 24.10. ours. 13.32n×AFA. 3.69×TFA. 24.58. ours+Yao. 13.32n×AFA. 3.18×TFA. 21.18. 表 4-9 列了一個以四為基底及兩個以二為基底的模乘法所完成的模指數來做 比較,文獻中四個電路都是使用模指數 H 演算法完成 RSA,面積方面 Shieh[13] 及 Kuang[12]為 TSMC 13um 實現的結果,頻率方面有使用標準化的方法去計算估 計 Shieh[13]及 Kuang[12]在 TSMC 90nm 合成出來的速度,比較值得注意的是週期 數的部分,在這邊模指數週期數都是用最差的案例去計算,從表 3-6 模指數 H 演 算法中可以得知最差的案例就是假設 E 皆為 1,就是模乘法次數乘二乘上指數次方 次,Kuang[12]在週期數的部分使用省略的技巧(bypass),使模乘法週期數減少 0.19%, 但就結果來看本論文所提出的修改使用進位儲存加法器的以四為基底 Montgomery 演算法所完成的 RSA 密碼系統架構 Throughput 是最好的。 46.

(57) 表 4-8 我的加 Yao 的模乘法演算法 Input:A (Booth encoded)(k-bit), B1, B2, N(n-bit). Output:(S1, S2) = A×4B×R-1mod N, R = 4k 1. S1 = 0, S2 = 0, cb = 0 2. B1 = 4B1, B2 = 4B2 3. for i = 0 to k-1 { 4. 5.. (t1, t0) = (S1 + S2 + cb)mod 4 (S1, S2) = S1+S2+ai×(B1+B2)+cb. 6. 7. 8.. if(t1 = 0 and t0 = 0) if(t1 = 1 and t0 = 0) if(t1 = n1 and t0 = 1). (C, S) = CSA(S1+S2+0) (C, S) = CSA(S1+S2+2N) (C, S) = CSA(S1+S2-N). 9. if(t1 != n1 and t0 = 1) (C, S) = CSA(S1+S2+N) 10. cb = S[1] | C[1] 11. S2 = S >> 2, S1 = C >> 2 12. { 13. Return S1, S2. 表 4-9 比較不同 RSA 實現結果 Gate Count Clock(Hz) # of clock. 製程. 處理能力. Radix. 70K(13um). 680M. 528384. 90nm. 659.2K bps. 2. Kuang[12] 69K(13um). 709M. 428820. 90um. 846.8K bps. 2. Shieh[13]. Lee[9]. 121K. 357M. 263680. 90nm. 693.5K bps. 4. ours. 76K. 455M. 264704. 90nm. 879.2K bps. 4. 47.

(58) 第五章、結論與未來探討 本論文以 M. R. Lee[9]的架構為基礎,結合 Ghoreishi[11]直接在電路中以 2 補 數計算負值方法及四倍輸入化簡電路的概念,實現修改使用進位儲存加法器的以 四為基底 Montgomery 演算法,其中以四為基底比以二為基底少了一半的運算週期 數,減少 RSA 運算的時間,使用在電路中以 2 補數計算負值方法利用進位儲存加 法器 carry 為 0 的特性來擺放取 2 補數所加的 1 及進位修正項的 1 達到減少面積的 效果,可以節省兩排 512-bit 的暫存器,再搭配四倍輸入簡化電路的方法降低電路 的複雜度,使計算(t1, t0)的電路不在關鍵路徑裡,可以跟進位儲存加法器平行運算, 降低電路的關鍵路徑,修改使用進位儲存加法器的以四為基底 Montgomery 演算法 也跟 Lee 的架構一樣拆開輸入使 A 變成 A1+A2、B 變成 B1+B2 ,如此一來可以 有效率的執行模指數運算,最後我們使用改良的模乘法及模指數 H 演算法完成整 個 RSA 密碼系統的設計。 本論文實驗數據顯示 TSMC 90nm 製程合成出的電路速度最快可達 455MHz, Gate Count 為 76K,Throughput 為 879.2K bps,與最近的文獻[9]比較起來速度改善 了 27.45%,面積改善了 37.19%,Throughput 改善了 26.78%。與其他模乘法較出 色 的 兩 篇文獻 Kuang[12] 及 Shieh[13] 在 Throughput 方面分別改善了 3.9%及 33.37%。 本論文使用三層的進位儲存加法器的架構實現 RSA 密碼系統,在相關文獻[14] 中有一個改良的 5-to-2 加法器,因為該電路是將兩個 FA 接在一起,變成一個兩位 元的加法器,有較短的關鍵路徑,如果將這樣的加法器放進我的修改使用進位儲 存加法器的以四為基底 Montgomery 演算法中,且將本論文提出的兩種改善方式應 用其中,就能夠使電路的關鍵路徑更短,且因為是將兩個 FA 由直的變成橫的,在 面積方面幾乎沒有改變,卻能達到降低關鍵路徑的效果。. 48.

數據

Updating...

參考文獻

Updating...