1、表一相同安全性時,RSA與ECC金鑰長度比較(NIST, 2003)安全性演算法2802112212821922256RSA金鑰長度(bits)102420483072768015360ECC金鑰長度(bits)160224256384512金鑰長度比6:19:12:20:30:本研究目的在於發展一個結合智慧卡的ECDSA數位簽章軟體,我們使用Java Card作為ECC金鑰存取媒介,並透過軟體產生ECDSA數位簽章,其中產生與檢驗簽章過程會用到的雜湊函數演算法,則採用SHA-2演算法。使用者可以將持有的Java Card視為鑰匙環,其中除存放本身的公開金鑰與秘密金鑰外,還可存放通訊對方的公開
2、金鑰,藉此與他人進行安全通訊時,用以確認其身份及所傳送訊息的完整性。貳、文獻探討一、橢圓曲線密碼學(Elliptic Curve Cryptography)(一)、橢圓曲線密碼學原理簡介橢圓曲線的密碼學技術不僅可以用於數位簽章、金鑰交換及加解密,還可應用在大數分解(Factorization)與質數判斷(Primality testing)。橢圓曲線的通用方程式如下:y2 + a1xy + a3y = x3 + a2x2 + a4x + a6(1)密碼學的橢圓曲線是由滿足該方程式的所有點(x, y)及一個無限遠點(Point at infinity)O所形成的集合,座標x與y屬於某個有限體(f
3、inite field)。目前軟硬體具體實現的有限體為質數體(Prime field,GF(p)、二元體(Binary field,GF(2n )、最佳擴展體(Optimal extension field,GF (pn )等三種(Bailey and Paar, 2001)。橢圓曲線上的點可進行兩點間之加法(Menezes, 1993; Silverman and Tate, 1992)。幾何上,如果要計算相異兩點P與Q的和,則先找出通過這兩點的直線,然後找出這條直線與橢圓曲線相交的第三點(-R),再將此點對x軸做鏡射得到和(R),如圖一所示。如果橢圓曲線上的某兩點共線的話,兩點相加之和就是
4、O。 圖一橢圓曲線幾何圖表示兩點加法若P = (x1, y1)與Q = (x2, y2)為橢圓曲線上的任意兩點,而POQ,且選取質數體,此時橢圓曲線方程式為:y2 = x3 + ax + b(2)兩點加法的運算規則如下所示:(3)如果選擇二元體,則橢圓曲線方程式為:y2 + xy = x3 + ax2 + b(4)而上述公式(3)的加法規則3必須改為:(5) 公式(3)與(5)的計算(加法、減法、乘法、除法/反元素)必須在相關的有限體進行,若選取質數體時僅需進行模算術(Modular arithmetic),若選取二元體則需進行多項式算術(Polynomial arithmetic)。點乘法計
5、算kP為橢圓曲線密碼系統的基礎,其中k為正整數,而P為橢圓曲線上的一個點:(6)如果nP= O 則n為點P的級數(order)。在合適的橢圓曲線上,可以找到個級數n2160的基點(Base point) G,而此橢圓曲線系統參數基點G可公開;另隨機選取小於n的正整數d當作私密金鑰,計算Q = dG為對應的公開金鑰。點乘法的計算如果直接做k個點相加,則需要執行k-1次加法運算,效率不佳,目前已有許多可以加速點乘法計算的演算法。本研究所開發的橢圓曲線密碼模組則是採用NAF(Non-Adjacent Form)演算法。橢圓曲線密碼系統的實現必須考慮下列因素:1. 有限體的選擇2. 橢圓曲線的挑選3.
6、 有限體元素的運算(加法、減法、乘法、除法/反元素)4. 橢圓曲線點的運算(加法、減法、乘法) 美國ANSI X9.62(ANSI, 1998)與FIPS 186-2(NIST, 2001)標準中針對質數體與二元體建議不同長度的橢圓曲線與合適的基點,所以有關橢圓曲線的參數挑選可參考該標準。網際網路上,有許多關於橢圓曲線運算的開放原始碼軟體,如:LiDIA、PARI-GP、OpenSSL或Crypto+等,可作為橢圓曲線密碼系統開發的參考。 (二)、橢圓曲線數位簽章演算法(ECDSA)在ECDSA相關標準ANSI X9.62(ANSI, 1998)與FIPS 186-2(NIST, 2001)中
7、提及對於訊息m的數位簽章(r, s)產生步驟如下:1. 2. ,則回到步驟13. 4. 如果s = 0,則回到步驟1而檢驗ECDSA簽章是否正確的步驟如下:4. 若且唯若v = r,則簽章正確ECDSA簽章產生時至少須進行一次點乘法以及一些模算術,簽章檢驗時則進行兩次點乘法以及一些模算術。表二為 RSA與ECDSA用於數位簽章的比較,從表二可見相同安全性時,兩種演算法所產生出來的簽章長度差異甚大,這將影響簽章傳遞的時間與儲存的空間。表二數位簽章演算法RSA與ECDSA的比較RSAECDSA簽章長度 安全性2128:384位元組 安全性2192:960位元組 安全性2256:1920位元組64位
8、元組(質數體)96位元組(質數體)132位元組(質數體)安全基礎大數分解橢圓曲線離線對數優點歷史悠久,容易說明,亦可同時用以加解密。速度快,簽章長度小。缺點速度慢,簽章長度較大。理論不易理解,實現技術較複雜。二、SHA-2雜湊函數演算法數位簽章演算法的一般做法,會對欲傳輸的訊息以雜湊函數計算出一組訊息摘要,再以秘密金鑰將其加密後產生數位簽章,並一併與原始訊息傳送給對方。接收方會將數位簽章以傳送方的公開金鑰解開取出訊息摘要,再將接收到的訊息以同樣的雜湊函數演算法計算出另一組訊息摘要,以進行比對,相同則表示資料未被竄改,如此則可驗證資料的完整性。因此雜湊函數演算法對於數位簽章本身的安全性至為重要。
9、SHA(Secure Hash Algorithm)演算法是由美國國家標準技術研究院(NIST)所發展的,並且在1993年成為第180項聯邦處理標準(FIPS PUB 180)。目前最新的修訂版是FIPS PUB 180-2,其中新增包含SHA-256、SHA-384及SHA-512等三種雜湊演算法,統稱為SHA-2演算法(NIST, 2002)。目前ECDSA實作較常用的是SHA-1演算法,然而NIST已宣佈將於2010年後不再支持處理流程類似於MD5且有安全疑慮的SHA-1(NIST, 2005)。因此我們選擇較新的SHA-2作為產生ECDSA數位簽章時使用的雜湊函數演算法。三、Java
10、CardJava Card是一種標準的智慧卡,智慧卡在當今網路安全應用最重要的三個特點為:確認性、保密性及便利性。其內部有源於Java技術的Java Card虛擬機器(Java Card Virtual Machine,JCVM)及Java Card執行環境(Java Card Runtime Environment,JCRE)。此外,Java Card尚提供一套具有物件導向程式設計特色的API (Ortiz, 2003)。本研究所開發的軟體中用以存取公開金鑰及秘密金鑰的Java Card是IBM JCOP20卡,它完全符合Visa OpenPlatform Card架構及Java Card
11、API 2.1.1版的規範。參、軟體實作一、ECDSA程式模組我們使用自行開發的ECDSA數位簽章的簽章產生與檢驗程式模組,設計軟體的核心功能。圖二及圖三分別是橢圓曲線參數為質數體的數位簽章產生模組及檢驗模組。此外還有設計橢圓曲線參數為二元體的數位簽章相關模組,這些模組均已經使用ANSI X9.62(ECDSA)標準文件中所提供的測試樣本檢驗無誤(楊中皇,2005)。圖二ECDSA數位簽章產生模組(部分)圖三ECDSA數位簽章檢驗模組(部分)二、應用流程設計使用者必須先持有內建ECC金鑰存取程式的Java Card,才能使用這套軟體。第一次使用的時候必須先建立自己的ECC金鑰對,爾後可以匯出自
12、己的及匯入他人的公開金鑰,以便與他人進行通訊時使用。在執行任何有關數位簽章的動作之前,軟體本身就會檢查是否已經從卡片讀取到金鑰,金鑰是不允許使用者手動輸入的,如果沒有金鑰,軟體將不會執行數位簽章的產生與檢驗等相關功能。應用本軟體的流程如圖四:圖四ECDSA數位簽章軟體的應用流程圖操作的步驟說明如表三:表三ECDSA數位簽章軟體的應用流程說明步驟說明將內建有ECC金鑰存取程式的Java Card置入讀卡機。2讀取卡片之後,會要求使用者輸入PIN碼驗證,驗證成功後,才可繼續使用,驗證錯誤達三次即鎖卡。第一次使用應建立自己的ECC金鑰對,這個部分還提供匯出入公開金鑰的功能。本身的ECC金鑰亦可以更新
13、置換,他人的公開金鑰則可更新或刪除,但置換金鑰會影響無法檢驗已建立的數位簽章。3以ECC秘密金鑰對檔案產生數位簽章。可以同時對多個檔案進行批次產生簽章。4以自己或他人的ECC公開金鑰對數位簽章進行檢驗。可以同時對多個檔案進行批次檢驗簽章。5退出Java Card,結束所有作業,並清除軟體執行時暫存金鑰內容的變數值。三、軟體使用簡介(一)、操作介面說明我們使用Borland C+ Builder 6開發,它不僅能快速建立視窗介面,且能整合C/C+原始碼。軟體主畫面如圖五所示:圖五軟體主畫面主畫面大致劃分以下三個主要功能區塊說明:(1) 主選單及使用者名稱:主選單有卡片功能、簽章功能等兩個子選單,
14、以及設定與說明功能。所有的功能亦可直接從畫面上的圖示按鈕點選執行,使用者名稱的欄位只有在卡片已連線並經驗證後,才會顯示。(2) 數位簽章功能區塊:有三個分頁功能,分別是數位簽章的產生、檢驗以及記錄相關處理過程的日誌訊息。(3) 卡片及設定工具鈕:與卡片存取有關的功能可以直接從這裡去點選執行,另外還有選項設定的功能,可以修改一些常用選項。此區塊最上面的卡片狀態圖如果顯示彩色表示卡片目前連線使用中,若是黑白圖片則表示尚未置入卡片。 (二)、金鑰存取金鑰的存取畫面(如圖六),主要有以下功能,使用前必須先勾選相關的使用者名稱:(1) 讀取:讀出金鑰的內容,並儲存到軟體中的變數,以供後續使用。(2) 新
15、增:新增ECC金鑰對。必須輸入使用者名稱及E-Mail,另外還需選擇金鑰長度,我們參考NIST的FIPS 186-2標準,共提供五種質數體(P-XXX)及十種二元體(B-XXX、K-XXX)的金鑰參數,如圖七所示。(3) 匯出:匯出自己的公開金鑰。(4) 匯入:匯入他人的公開金鑰。(5) 移除:移除勾選的使用者之金鑰。圖六ECC金鑰存取圖七新增ECC金鑰對(三)、ECDSA簽章的產生與檢驗無論是產生或檢驗數位簽章,都可以選取多個檔案執行,準備要用以產生數位簽章的檔案,或是要檢驗的數位簽章檔,均會列表供使用者瀏覽,如果某個檔案不欲執行相關動作,只要勾選取消即可,橢圓曲線數位簽章的副檔名我們使用預
16、設為.ecsig,以便與坊間其他軟體所慣用的數位簽章檔名.sig作區別。相關的範例畫面如圖八與圖九。產生與檢驗簽章的處理過程會顯示在主畫面第三個分頁日誌訊息欄內,會記錄處理的日期時間與結果,如圖十所示。圖八選取欲產生數位簽章的檔案圖九選取欲檢驗的數位簽章檔圖十檢視處理過程的訊息四、結論雖然橢圓曲線密碼學早在1985年就有學者提出,然而迄今實務應用仍不普遍。本研究以Java Card為例,並使用自行設計的橢圓曲線密碼模組開發一個結合智慧卡且具有友善視窗使用介面的ECDSA數位簽章軟體,這不僅應證ECC的實務應用,同時還提供我們研究的思維與創新的契機。根據對ECC相關文獻的探討,可知在相同的安全性
17、之下,ECC所需的金鑰長度遠比RSA金鑰來得小,不僅如此,ECC還有更好的執行效率,故在可預見的未來,ECC的技術勢必將逐漸成為公開金鑰密碼系統的主流,同時亦將為電子商務交易提供品質更好、效率更佳的安全保障。伍、參考文獻ANSI X9.62, Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm(ECDSA) , 1998.A. Menezes, Elliptic Curve Public Key Cryptosystems, Klu
18、wer, 1993.C.E. Ortiz, An Introduction to Java Card Technology, http:/ 2003.D.V. Bailey and C. Paar, Efficient arithmetic in finite field extensions with applications in elliptic curve cryptograph, J. Cryptology, 2001,Vol. 14, No. 3, pp. 153-176.IBM, JCOP20 Technical Brief, JCOP20Brief.pdf.J. H. Silv
19、erman and J. Tate, Rational Points on Elliptic Curves, 1992, Undergraduate Texts in Mathematics, Springer-Verlag.LiDIA, http:/www.informatik.tu-darmstadt.de/TI/LiDIA/.N. Koblitz, Elliptic Curve Cryptosystems, Mathematics of Computation, 1987,Vol. 48, No. 177, pp. 203-209.NIST, DRAFT Special Publicat
20、ion 800-57, Recommendation on Key Management, http:/csrc.nist.gov/CryptoToolkit/kms/guideline-1-Jan03.pdf, 2003.NIST, FIPS 186-2, Digital Signature Standard (DSS), http:/csrc.nist.gov/publications/fips/fips186-2/fips186-2-change1.pdf, 2001.NIST, FIPS PUB 180-2, Secure Hash Standard, http:/csrc.nist.
21、gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf, 2002.NIST, NIST Brief Comments on Recent Cryptanalytic Attacks on SHA-1, http:/csrc.nist.gov/hash_standards_comments.pdf, 2005.PARI/GP, http:/pari.math.u-bordeaux.fr/.The OpenSSL Project, http:/www.openssl.org/.V. Miller, Use of Elliptic Curves in Cryptography, In Advances in Cryptology: Proceedings of Crypto 85, 1986, volume 218 of Lecture Notes in Computer Science, pp. 417-426, Berlin, Springer-Verlag.Wei Dai, Crypto+ library, 楊中皇,橢圓曲線密碼系統軟體實現技術之探討,資訊安全通訊,2005年1月,第11卷,第2期,頁15-25。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1