楊曉峰 張穎 鄧智敏
摘 要:二維碼的廣泛應用對信息安全問題提出了嚴峻考驗,結合PKI技術,能夠為二維碼提供安全驗證。文章介紹了PKI的概念和功能以及公鑰密碼技術,闡述了基于PKI的可信二維碼方案,分析了使用RSA算法進行數字簽名和認證的過程,最后介紹了基于PKI的可信二維碼系統的組成模塊。
關鍵詞:二維碼;PKI技術;數字簽名;RSA算法
引言
隨著移動智能終端的普及,二維碼得到了廣泛的使用。掃描二維碼可以快速訪問網址,根據二維碼中的地址隨時下載文件,同時可以快速方便地獲取公共服務、查詢電子地圖、自動輸入短信、識別和存儲名片等。另外,通過二維碼還可以實現網上購物、網上付款。二維碼給大眾帶來了極大的便利,但其本身也存在很大的安全隱患,很多犯罪分子利用二維碼傳播木馬病毒和欺詐性網址鏈接,用戶掃描二維碼后,點擊訪問這些鏈接,很可能就會被竊取隱私和被惡意扣費,造成不必要的損失。騰訊移動安全實驗室對2015年上半年手機安全問題進行了調查和研究,發布的報告顯示,通過二維碼渠道傳播病毒的比例已經達到驚人的13%,這些問題給二維碼的安全性提出了嚴峻考驗。
1 二維碼的概述
根據圖形結構的區別,二維碼的碼制可分為兩種類型:行排式和矩陣式。PDF417是應用最廣泛的行排式二維碼,而矩陣式二維碼中常用的有:QR Code、Data Matrix等。相比一維條碼,二維碼的信息容量更大,可以存儲網址鏈接、文本數據和程序代碼等信息,而且具有較強的容錯能力,二維碼污損一定面積后依然可以正常識讀,最關鍵的是,二維碼可引入加密措施,這為防偽創造了條件。
2 PKI技術
2.1 PKI的概念與功能
PKI是一套信息安全管理平臺,用于為數據提供加密、認證等信息安全服務,它依托于公鑰密碼技術構建而成,運用一套嚴格的標準和高保密性的技術來儲存和管理公鑰密碼。在PKI體系中,認證機構CA是PKI的核心部分,主要負責為公鑰擁有者分發和管理數字證書,這就要求擔任CA的機構必須具有高度的公正性、權威性和可靠性。
2.2 公鑰密碼技術
公鑰密碼體制涉及到一對非對稱密鑰,即公鑰和私鑰,公鑰可以對外公開給任何人知道,在PKI體系中,公鑰由CA管理供所有個人和機構合法查詢,而私鑰則是由用戶自己保存,一般儲存在USB key等智能硬件中,只有用戶本人知道和使用。在數字簽名的過程中,使用私鑰進行加密簽名,使用公鑰進行解密。
2.3 公鑰管理策略
PKI體系中,采用數字證書管理公鑰,數字證書由CA管理和分發,主要內容包括用戶的公鑰和身份信息,為了確定數字證書的真實性,還需要加上CA的數字簽名。通過數字證書,確定了公鑰與其擁有者的身份之間的匹配關系,為數字簽名的認證提供的安全保證基礎。
3 基于PKI的可信二維碼
3.1 基于PKI的可信二維碼方案研究
二維碼的可信任驗證主要包括兩個要求:(1)確定來源的真實性;(2)確保信息的完整性。針對第一個要求,選擇數字簽名技術來實現,使用合適的數字簽名算法對信息生成簽名,將數字簽名附加在信息后,一起嵌入到二維碼中,二維碼識別終端識別出二維碼后,對數字簽名進行驗證,即可判斷來源是否真實。針對第二個要求,選擇Hash算法來實現,Hash算法也稱為散列算法,它的功能是把任意長的數據變換為固定長度的摘要,用這個固定長度的摘要就可以代表這組數據,如果這個數據發生改動,那么使用Hash算法來計算將產生不同的值,由此可以檢驗數據的完整性。選擇一個合適的Hash函數對明文信息生成Hash值,使用私鑰加密明文信息形成密文,將密文信息和明文Hash值嵌入到二維碼中,識別終端識別出二維碼后,對密文進行解密并計算它的Hash值,與原始Hash值進行對比,從而可以確定該二維碼儲存的信息是否被篡改過。
結合Hash算法和數字簽名技術,基于PKI的可信二維碼方案確定為:(1)簽名生成:二維碼發布者用Hash函數從信息文本中生成信息摘要,然后選擇合適的數字簽名算法,用自己的私鑰對這個信息摘要進行加密,這個加密后的摘要將作為信息的數字簽名,附加在信息內容中一起嵌入到二維碼中。(2)簽名驗證:使用二維碼識別終端掃描二維碼獲取信息和數字簽名,首先用與生成摘要一樣的HASH算法從信息中計算出信息摘要,接著再用二維碼發布者的公鑰來解密附加在信息上的數字簽名來得到一個摘要,對比這兩個摘要,如果相同,那么就可以確認該數字簽名的來源是真實的,信息內容也沒有被篡改,即該二維碼是可信的。該方案的流程圖如圖1所示。
3.2 基于PKI的可信二維碼相關算法研究
目前最常用的Hash算法主要是MD5和SHA-1,兩者進行比較,在生成摘要的過程中,SHA-1的數量級要大于MD5,所以在安全性上SHA-1要高于MD5,而在速度上MD5要快于SHA-1。考慮到計算機硬件的快速發展,計算能力越來越強,應更多地考慮安全性能。因此,選擇使用SHA-1算法來對信息生成摘要。
數字簽名算法一般采用非對稱加密算法來實現,其中應用最廣泛的是RSA算法,它的安全性是基于一個著名的數學難題,即對大素數進行因子分解的困難性,這個數學難題到目前為止仍然沒有有效的方法能夠破解。因此,RSA算法的安全性能夠得以保證。使用RSA算法生成公鑰和私鑰的過程是:(1)隨機選取兩個大素數p和q,計算兩者的乘積n=p?鄢q;(2)計算n的歐拉totient函數:?漬(n)=(p-1)?鄢(q-1),隨機選取一個整數e,使得gcd(?漬(n),e)=1,也就是?漬(n)和e互質;(3)計算d≡e-1mod(?漬(n)),這樣私鑰就是(d,n),公鑰就是(e,n)。為了保證足夠的保密性,使用RSA算法應選用足夠大的素數,以提高因子分解的難度,這也意味著密碼的破譯難度加大。
選定了SHA-1和RSA算法,也確定了私鑰和公鑰,就可以通過以下過程對信息m進行簽名和驗證:二維碼發布方使用SHA-1算法生成信息摘要h(m),先用私鑰(d,n)加密信息摘要:s=(h(m))dmod(n),得到簽名結果s,再將信息和簽名(m,s)嵌入到二維碼中,二維碼識別終端識別出(m,s)后,使用二維碼發布方的公鑰(e,n)解密簽名:h(m)=semod(n),再使用Hash算法SHA-1計算信息m的Hash值k(m),如果k(m)=h(m),則表示二維碼是可信的。
為了提高防范攻擊的能力,相關權威研究對使用RSA算法生成的密鑰長度提出了要求,必須在1024bits以上才能確保被加密的數據在中短期內不被破解,而這也意味著RSA算法存在速度緩慢的缺陷。
3.3 模塊分析
從軟硬件構成的角度分析,一個最簡單的基于PKI的可信二維碼系統,組成模塊上應包括認證機構CA、數字簽名生成和認證、二維碼生成和識讀、私鑰保存等幾個部分。
4 結束語
二維碼已經在大眾生活中得到了極其廣泛的應用,為人們帶來便捷的同時也帶來了嚴峻的信息安全問題,基于PKI的可信二維碼在技術上依賴于密鑰的安全管理和數字簽名技術,能夠為信息提供安全認證,幫助用戶辨別信息的真假,具有一定的推廣利用價值。
參考文獻
[1]賈超.數字簽名技術的研究及應用[D].河北工業大學,2006.
[2]庚桂平.二維條碼技術及主要標準介紹[J].航空標準化與質量,2008,4:43-48.
[3]http://scan.qq.com/security_lab/news_detail_321.html.
[4]吳晶晶.PKI關鍵理論與應用技術研究[D].中國科學技術大學,2008.
[5]曹建國,王丹,王威.基于RSA公鑰密碼安全性的研究[J].計算機技術與發展,2007,17(1):172-173.
[6]趙文清,王德文,宋雨.基于PKI的數字簽名和數字信封的實現[J].華北電力大學學報,2003(6):18-19.
[7]Revist R L, Shamir A, Adleman L. A method for obtaining digital signatures and public-key cryptosystems[J].Communications of the ACM,1978,21(2):120-126.
[8]DIFFIE W, HELLMAN M E. New directions in cryptography[J].IEEE Transacrions in Information Theory,1976,22(6):644-654.
*通訊作者:鄧智敏,華南理工大學自動化科學與工程學院。