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