郝永放+王彬+王飛+狄輝
摘 要:NFC近場通信技術(shù)日漸普及,為防止NFC標(biāo)簽與服務(wù)器通信過程受到攻擊導(dǎo)致信息泄露,提出采用基于橢圓曲線密鑰協(xié)商算法和AES對稱加密算法來實(shí)現(xiàn)NFC標(biāo)簽和服務(wù)器之間雙向認(rèn)證的方案。文中分析了當(dāng)前技術(shù),列出了算法選擇依據(jù),描述了認(rèn)證方案的具體實(shí)現(xiàn)流程。
關(guān)鍵詞:NFC標(biāo)簽;服務(wù)器;AES;橢圓曲線密鑰協(xié)商算法
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2018)02-00-03
0 引 言
NFC近場通信技術(shù)自2002年被提出以來發(fā)展迅速,并廣泛應(yīng)用于生活中的各個(gè)領(lǐng)域,如防偽、巡檢、移動(dòng)支付、門禁等方面。這些應(yīng)用大都離不開NFC標(biāo)簽與服務(wù)器之間的數(shù)據(jù)傳輸(此處的服務(wù)器是讀卡器和后臺處理程序的統(tǒng)稱)。以NFC標(biāo)簽在防偽系統(tǒng)中的應(yīng)用為例,防偽系統(tǒng)的主要目的是驗(yàn)證標(biāo)簽綁定商品的真?zhèn)?,NFC標(biāo)簽和服務(wù)器都有可能成為攻擊者攻擊或仿造的對象,因此系統(tǒng)面臨的第一個(gè)問題是NFC標(biāo)簽和服務(wù)器的身份認(rèn)證。本文針對該問題提出了解決方案,描述了認(rèn)證流程。該方案主要包括NFC標(biāo)簽和服務(wù)器的密鑰協(xié)商,數(shù)據(jù)加密傳輸和解密驗(yàn)證三部分。
1 相關(guān)知識介紹
1.1 NFC技術(shù)介紹
近場通信技術(shù)(Near Filed Communction,NFC)的工作頻率為13.56 MHz,是Philips公司和SONY公司于2002年聯(lián)合開發(fā)的新一代無線通信技術(shù),也是非接觸式射頻識別技術(shù)(RFID)的一種擴(kuò)展[1]。NFC技術(shù)與RFID技術(shù)的不同之處在于NFC技術(shù)在單一芯片上結(jié)合了感應(yīng)式讀卡器,感應(yīng)式卡片具有雙向連接和識別的特點(diǎn),擁有點(diǎn)對點(diǎn)功能,允許在多個(gè)設(shè)備間實(shí)現(xiàn)安全的雙向交互。
同時(shí)NFC技術(shù)還定義了主動(dòng)工作模式和被動(dòng)工作模式,其主要區(qū)別在于設(shè)備之間通信的射頻場是否由本設(shè)備發(fā)出。在主動(dòng)工作模式下,NFC設(shè)備自身產(chǎn)生射頻場,當(dāng)一臺NFC設(shè)備向另一臺NFC設(shè)備發(fā)送數(shù)據(jù)時(shí),通信雙方都需要發(fā)出RF射頻場,并通過該射頻場通信。在被動(dòng)模式下,射頻場由其他設(shè)備發(fā)出,工作在該模式下的目標(biāo)設(shè)備利用感應(yīng)的電動(dòng)勢提供自身工作所需的電源,并利用負(fù)載調(diào)制技術(shù)進(jìn)行數(shù)據(jù)收發(fā)。
主動(dòng)模式的設(shè)備通常具有自己的供電單元,如NFC讀卡器和具有NFC功能模塊的手機(jī)等。而被動(dòng)模式無需供電單元,如NFC卡片和標(biāo)簽等[2]。
1.2 NFC標(biāo)簽介紹
NFC標(biāo)簽主要由NFC芯片、線圈組成,經(jīng)過封裝和加工后形成標(biāo)簽。目前NFC標(biāo)簽基本種類有4種,各有不同的格式和容量[3]。
(1)第一類標(biāo)簽基于ISO14443A協(xié)議,標(biāo)簽內(nèi)存最小為96 B,通信速率為106 kb/s,可存儲少量數(shù)據(jù)。
(2)第二類標(biāo)簽同樣基于ISO14443A 協(xié)議,其內(nèi)存大小為48 B,可擴(kuò)充到2 kB,通信速率為106 kb/s。
(3)第三類標(biāo)簽內(nèi)存為2 kB,通信速率為212 kb/s。此類標(biāo)簽適合較為復(fù)雜的應(yīng)用場景,但成本較高。
(4)第四類標(biāo)簽同時(shí)兼容ISO14443A和ISO14443B兩種協(xié)議,相較于其他三種標(biāo)簽類型,擁有更大的存儲空間并集成了安全加密認(rèn)證模塊,能完成更為復(fù)雜的操作。
在不同領(lǐng)域的應(yīng)用中,應(yīng)根據(jù)具體情況來選擇最適合的標(biāo)簽。以NFC標(biāo)簽在防偽領(lǐng)域的應(yīng)用為例,此時(shí)標(biāo)簽不僅需要存儲與企業(yè)和產(chǎn)品相關(guān)的信息,還要進(jìn)行加密和解密計(jì)算,因此選擇第四類標(biāo)簽更為合適。
2 雙向認(rèn)證方案的分析與設(shè)計(jì)
2.1 雙向認(rèn)證方案分析
在認(rèn)證過程中雙方需要加密傳輸需相互認(rèn)證的信息,因此雙方應(yīng)事先約定加密算法和協(xié)商密鑰。
加密算法主要包括對稱加密算法和非對稱加密算法,常見的對稱加密算法有DES,3DES和AES,非對稱算法有RSA,其中DES算法隨著計(jì)算機(jī)計(jì)算能力的提升已經(jīng)能夠被輕易破解。3DES算法是DES算法的變形,相對來說更為安全,它以DES為基本模塊,通過組合分組方法設(shè)計(jì)出加密算法[4]。相比較DES和3DES算法,AES算法屬于下一代加密算法,具有速度更快、安全級別更高等優(yōu)點(diǎn),其主要目的是取代3DES算法。RSA算法屬于非對稱加密算法,但加解密速度緩慢,只適合解密數(shù)據(jù)量較小的數(shù)據(jù),通常還需要配合其他加密速度較快的算法一起使用[5]。
密鑰協(xié)商方式眾多,比如事先讓雙方保存相同的密鑰,但在這種情況下,密鑰是靜態(tài)的,無法抵抗攻擊者的重放攻擊。本設(shè)計(jì)采用ECDH密鑰協(xié)商算法來約定認(rèn)證雙方的密鑰,其安全性建立在橢圓曲線的離線對數(shù)問題上,每次通信都根據(jù)雙方產(chǎn)生的隨機(jī)數(shù)來生成動(dòng)態(tài)密鑰,安全性較高,能有效防止攻擊者的重放式攻擊。
結(jié)合以上分析,采用EDCH算法進(jìn)行密鑰協(xié)商,并通過AES對稱加密算法進(jìn)行加密傳輸和解密驗(yàn)證。
2.2 關(guān)鍵模塊設(shè)計(jì)
2.2.1 密鑰協(xié)商設(shè)計(jì)
密鑰協(xié)商的目的在于在不共享任何秘密的情況下協(xié)商出密鑰,本設(shè)計(jì)采用基于橢圓曲線密碼體制(Elliptic Curve Cryptosystems,ECC)的Diffie-Hellman密鑰交換算法EDCH進(jìn)行計(jì)算[6]。ECC是建立在基于橢圓曲線離散對數(shù)問題上的密碼體制,對橢圓曲線離散對數(shù)問題可以作以下描述:
給定橢圓曲線上一個(gè)點(diǎn)P,一個(gè)整數(shù)k,求解Q=k×p很容易;給定點(diǎn)P,Q,已知Q=k×P,求整數(shù)k是一個(gè)難題[7]。ECDH算法的安全性便建立在此數(shù)學(xué)難題之上。密鑰協(xié)商過程如圖1所示。
假如標(biāo)簽Tag和服務(wù)器Server共享一條橢圓曲線E,且基點(diǎn)為G,那么存在以下狀況:
(1)標(biāo)簽Tag產(chǎn)生隨機(jī)數(shù)t,計(jì)算會(huì)話密鑰T=t×G;
(2)Server產(chǎn)生隨機(jī)數(shù)s,計(jì)算會(huì)話密鑰S=s×G;endprint
(3)Tag將T傳給Server,同時(shí)Server將S傳給Tag;
(4)Tag收到Server傳遞的S,計(jì)算出協(xié)商密鑰P=t×S;
(5)Server收到Tag傳遞的T,計(jì)算出協(xié)商密鑰P1=s×T。
P=t×(s×G) (1)
P1=s×(t×G) (2)
由交換律和結(jié)合律可知:P=P1。
此時(shí)標(biāo)簽Tag與客戶端Server完成了密鑰協(xié)商,且協(xié)商過程中有可能公開的參數(shù)包括基點(diǎn)G、傳遞的會(huì)話密鑰T和S。由于橢圓曲線離線對數(shù)問題難度較大,至今仍沒有有效的解決方法[8],攻擊者若想通過G,T,S三個(gè)參數(shù)計(jì)算出t和s非常困難,同時(shí)根據(jù)動(dòng)態(tài)隨機(jī)數(shù)生成密鑰可有效防止重放攻擊,使R和R1的安全性得到有力保障。
2.2.2 信息加密設(shè)計(jì)
當(dāng)密鑰協(xié)商完成后會(huì)涉及數(shù)據(jù)的加密傳輸,本設(shè)計(jì)采用AES對稱加密算法來進(jìn)行數(shù)據(jù)傳輸。AES 算法又稱Rijndael加密法,是美國國家標(biāo)準(zhǔn)與技術(shù)研究所用于加密電子數(shù)據(jù)的規(guī)范,代替了原先的DES算法。與DES不同的是,AES使用的是代換-置換網(wǎng)絡(luò),而非Feistel架構(gòu),在軟件和硬件上都能快速加解密,只需很少的存儲器就可實(shí)現(xiàn),相對來說更適用于實(shí)際情況[9]。
AES在一個(gè)4×4的字節(jié)矩陣上進(jìn)行加密,該矩陣又稱為state,其初始值是一個(gè)明文數(shù)據(jù)塊(即需要加密的數(shù)據(jù)),該數(shù)據(jù)塊長度規(guī)定為128 B,密鑰長度可設(shè)置為128 B,192 B,256 B(如果數(shù)據(jù)塊及密鑰長度不足時(shí),會(huì)補(bǔ)齊)[10]。
加密過程大致分為密鑰擴(kuò)展、初始輪、重復(fù)輪、最終輪4個(gè)步驟,其中第三步重復(fù)輪中具體重復(fù)的次數(shù)與密鑰長度有關(guān)。當(dāng)密鑰長度為128 B時(shí),N為10,進(jìn)行10輪重復(fù)計(jì)算;當(dāng)密鑰長度為192 B時(shí),N為12;當(dāng)密鑰長度為256 B時(shí),N為14。本次方案設(shè)計(jì)采用長為128 B的密鑰進(jìn)行加密和解密計(jì)算。
2.2.3 解密驗(yàn)證設(shè)計(jì)
解密過程與加密過程類似,是加密過程的逆過程,即輸入128 B密文后,經(jīng)運(yùn)算可得到128 B明文。
2.3 認(rèn)證方案具體流程
該方案主要包括密鑰協(xié)商、信息加密、解密驗(yàn)證三部分。認(rèn)證流程如圖2所示。
式(3)代表以P為密鑰對明文S進(jìn)行AES加密計(jì)算,得到密文R。
R=E(P,S) (3)
式(4)代表以P為密鑰對密文S進(jìn)行AES解密計(jì)算,得到明文R。
R=D(P,S) (4)
雙向認(rèn)證過程如下:
(1) 當(dāng)讀卡設(shè)備靠近標(biāo)簽時(shí),發(fā)送認(rèn)證請求。
(2) NFC標(biāo)簽收到認(rèn)證請求后,進(jìn)行密鑰協(xié)商。
(3) 雙方完成密鑰協(xié)商后,標(biāo)簽得到密鑰P1,服務(wù)器端得到密鑰P2(服務(wù)器包括讀卡器和后臺處理程序),P1與P2的值相等。
(4) 服務(wù)器端讀取標(biāo)簽生成的隨機(jī)數(shù)Rt1,使用密鑰P對Rt1進(jìn)行加密得到Rt′。
(5) 服務(wù)器生成隨機(jī)數(shù)Rs1,通過讀卡器將Rt′和Rs1寫入標(biāo)簽。
(6) 標(biāo)簽收到Rt′,使用P進(jìn)行解密得到Rt2,判斷Rt1和Rt2的值,若相等則通過對服務(wù)器的驗(yàn)證,否則驗(yàn)證不予通過。
(7) 若服務(wù)器通過驗(yàn)證,標(biāo)簽使用P1對Rs1加密得到Rs′,服務(wù)器端讀取到Rs′后,通過P2解密得到Rs2,判斷Rs1和Rs2的值是否相等,相等則通過對標(biāo)簽的驗(yàn)證,否則,驗(yàn)證失敗。
3 結(jié) 語
基于NFC技術(shù)的通信系統(tǒng)在實(shí)際應(yīng)用中,首要工作是認(rèn)證NFC標(biāo)簽和服務(wù)器的合法性,本文針對該問題以ECDH密鑰協(xié)商算法和AES對稱加密算法為基礎(chǔ),設(shè)計(jì)出了NFC標(biāo)簽和服務(wù)器之間進(jìn)行雙向認(rèn)證的方案,羅列了密鑰協(xié)商、加密傳輸以及解密驗(yàn)證的具體實(shí)現(xiàn)流程。
參考文獻(xiàn)
[1]焦建軍.基于NFC技術(shù)下的近場通信WiFi傳輸連接方案[J].電子技術(shù)與軟件工程, 2017(18):39.
[2]蘇婕,王忠.基于NFC技術(shù)的巡更巡檢管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì), 2015(4):1068-1072.
[3]陳志鵬,王彬.基于NFC技術(shù)的智能巡檢系統(tǒng)設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù), 2017,7(2):24-26.
[4]隋濤.DES與AES數(shù)據(jù)加密算法探討[J].湖北第二師范學(xué)院學(xué)報(bào), 2013,30(8):66-68.
[5]肖振久,胡馳,姜正濤,等.AES與RSA算法優(yōu)化及其混合加密體制[J].計(jì)算機(jī)應(yīng)用研究, 2014,31(4):1189-1194.
[6]李冠朋,田振川,朱貴良.基于ECDH與Rijndael的數(shù)據(jù)庫加密系統(tǒng)[J].計(jì)算機(jī)工程, 2013,39(4):173-176.
[7]吳學(xué)慧,牛志華,王潮.基于橢圓曲線密碼的RFID安全協(xié)議[J].計(jì)算機(jī)工程與設(shè)計(jì), 2010,31(24):5165-5167.
[8]陳義濤.基于橢圓曲線的認(rèn)證密鑰協(xié)商協(xié)議的研究及應(yīng)用[D].武漢:武漢大學(xué), 2014.
[9]程桂花,羅永龍,齊學(xué)梅,等.AES算法中基于流水線的可逆S盒設(shè)計(jì)與實(shí)現(xiàn)[J].小型微型計(jì)算機(jī)系統(tǒng), 2012,33(3):576-581.
[10]王小偉. AES加密算法的研究與IP核設(shè)計(jì)實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2013.endprint