RFID雙向認證加密方案

針對射頻識別(RFJD)系統(tǒng)自身在認證和通信過程中存在的安全隱患問題,提出了一種低成本、高效、安全的RFID節(jié)點間身份認證與數(shù)據(jù)加密方案。該方案采用改進的橢圓曲線Diffie-Hellman( ECDH)算法與高級加密標準(AES)相結合的方式實現(xiàn)密鑰分發(fā)、身份認證、通信加密功能,同時采用動態(tài)密鑰算法增強了通信過程中的安全性。此外,該方案在不破壞安全強度的情況下縮減了運算規(guī)模,減少了系統(tǒng)資源開銷。

一、加密算法介紹

1、橢圓曲線密碼體制

橢圓曲線密碼體制是一種近幾年來逐步得到廣泛應用的一種公鑰密碼體制,它基于1987年Koblitz構造的橢圓曲線上的離散對數(shù)問題(Elliptic Curves and Discrete LogarithmProblem,ECDLP),即:給定素數(shù)p和橢圓曲線E,對Q;kP,在已知P、Q的情況下求出小于p的正整數(shù)k??梢宰C明由k和p計算Q比較容易,而由Q和p計算后則比較困難。ECC密碼體制可以提供最高比特強度,是一種高效可靠的密碼體制。

2、高級數(shù)據(jù)加密標準

高級加密標準(Advanced Enclyption Staiidard,AES)是毒種固定128位區(qū)塊長度的Rijndael加密算法,它是一種對稱密鑰分組迭代加密算法,其分組長度為128位,密鑰長度可選為128位、192位、256位,對應算法轉(zhuǎn)換輪數(shù)Nr分別為10輪、12輪、14輪。

AES的數(shù)據(jù)加密方式是通過將明文映射在一個4x4的字節(jié)矩陣上,再通過輪函數(shù)將明文矩陣與密鑰經(jīng)Nr+l輪迭代來實現(xiàn)加密。整個AES加密過程由4個過程組成:回合密鑰加法變換、S盒變換、行移位變換、列混淆變換。重復執(zhí)行以上4個步驟Nr輪,在最后一輪中,使用一個新的回合密鑰加法變換替代列混淆變換,最終得到加密密文。而解密操作則基于加密運算的反向,該操作對收到的密文進行分組,并進行Nr輪的回合密鑰加法變換、反列混淆變換、反行移位變換、反S盒變換,最后進行一輪回合密鑰加法變換、反行移位變換、反S盒變換,得到明文數(shù)據(jù)。

二、方案設計

本方案使用橢圓曲線Difrie-Hellman( Elliptic Curve Diffie-HellInan,ECDH)算法進行密鑰交換,并使用橢圓曲線數(shù)字簽名算法(F,lliptic Curve Digital Signature Algorithm.ECDSA)對通信雙方身份進行雙向認證,最終通過AES算法使用交換后生成的密鑰SK對發(fā)送的數(shù)據(jù)進行加密,其整個過程由五個階段構成,即:起始階段、密鑰分發(fā)階段、身份認證階段、密鑰交換階段、消息加密及恢復階段。

1、起始狀態(tài)

該階段目的是產(chǎn)生ECDSA和ECDI-I算法所使用的ECC域參數(shù)D:

1

其中:E為以素數(shù)為模的整數(shù)域GF(p)上的曲線(考慮到GF(p)在通用處理器上比二進制域CF( 2P)更為有效,故在本方案中采用整數(shù)域(p),p為一個定長的大素數(shù))。根據(jù)美國國家標準與技術局所設定的最小密鑰長度要求,p值長度應不小于160位。GX,GY為曲線E上基點G的X,y坐標。

1

ECC域參數(shù)D由控制臺(控制臺為單個會話區(qū)域的控制者)生成。對于每一個會話區(qū)域(該組包含若干閱讀設備R。每個閱讀設備下轄包含若干個標簽設備的標簽群G,并按照使用需求所歸并)A,有使用同一組參數(shù)D,并根據(jù)A所屬的閱讀設備和標簽設備各自的標識符在密鑰服務器進行注冊,硬件系統(tǒng)構成如圖1所示。

1

2、密鑰分發(fā)階段

在密鑰分發(fā)階段,對于每—對在同一會話區(qū)域內(nèi)的閱讀設備冠。和其下屬的標簽群e。中的每一個標簽設備,控制臺需要生成用于ECDH交換的正整數(shù)P和用于標簽和閱讀器之間雙向EC DSA身份認證的公、私鑰。其中閱讀設備和標簽設備各自的認證私鑰d,y為各自私有,閱讀設備的公鑰K為該閱讀設備所下轄的標簽群中所有標簽設備所共有。標簽設備的公鑰K根據(jù)標簽設備的標識符TID存于密鑰服務器。一個閱讀設備p及其下屬標簽群q。的密鑰具體生成分發(fā)步驟如下:

1)控制臺選擇一個足夠長度的隨機數(shù)或,同時從密鑰服務器中取出目標閱讀設備R。所屬的會話區(qū)域A的ECC域參數(shù)D,在D所描述的曲線En上計算:

1

2)控制臺選擇一個正整數(shù)P。作為目標標簽設備0用于ECDH交換的ECDH參數(shù),并選擇一個足夠長度的隨機數(shù),同時從密鑰服務器中取出目標標簽設備已所屬的會話區(qū)域A的ECC域參數(shù)D,在D所描述的曲線ED上計算:

1

3)控制臺將第1)一2)步生成的K、P。通過可靠信道分發(fā)給目標標簽設備已,并將第1)~2)步生成的K、P。以目標標簽設備的標識符TID。為查詢鍵值存于密鑰服務器。

重復步驟2到3,分別選擇p。下屬的標簽群G中不同的目標標簽設備已進行密鑰分發(fā),直到標簽群Gf。中所有標簽設備均已處理完畢,再將d,作為閱讀設備認證私鑰通過可靠信道分發(fā)給目標閱讀設備R,密鑰分發(fā)過程結束。密鑰分發(fā)過程示意圖如圖2。

1

3、身份認證與密鑰交換階段

此階段完成單對閱讀設備與標簽設備間相互的身份認證工作,并生成該對閱讀設備與標簽設備在當次會話中的通信密鑰。

密鑰交換過程中,使用了改進的ECDH密鑰交換協(xié)議,在ECDH交換密鑰生成式(5)中:

1

不使用基點G作為公開初始密鑰,而使用各標簽設備的ECDH參數(shù)p來代替作為公開初始密鑰,并分別被存儲于標簽設備和密鑰服務器中。對于每一個標簽設備Z,都有一個特定的只作為其公開初始密鑰。而機密密鑰則由標簽設備和閱讀設備各自臨時生成的在ECC域參數(shù)D所描述的ECC曲線En上的隨機點墨,置來代替。這樣在不可靠線路上只有臨時密鑰TK進行交換,并且也減小了密鑰服務器查詢時間和存儲規(guī)模。

該階段具體認證、交換步驟如下:

1)閱讀設備向密鑰數(shù)據(jù)庫獲取該會話區(qū)域的域參數(shù)D。

2)閱讀設備尺。對目標標簽設備L發(fā)起認證請求,將自身RID發(fā)送給t。

3)已生成當次會話標簽設備標識隨機數(shù)RNt和標簽設備的ECDH初始交換密鑰Xt,計算:

1

得到Tn的臨時密鑰,使用ECDSA簽密算法通過自身私鑰和域參數(shù)D描述的ECC曲線En計算:

1

得到簽名S(r,j),其中TID表示標簽設備標識符咒將Sige(r,s)和RN,、TKr發(fā)送給P。

4)R收到傳來的Sig和R、jfK,使用q的TID向密鑰服務器查詢咒的ECDI-I參數(shù)P,認證公鑰墨,使用K驗證簽名Sig(r,s)。如果驗證失敗,則拒絕對0的響應;如果驗證成功,則R完成對L的身份驗證oR。生成當次會話閱讀設備標識隨機數(shù)RNr和閱讀設備的ECDH初始交換密鑰,計算:

1

得到P臨時密鑰,并使用ECDSA簽密算法通過自身私鑰匆和域參數(shù)D描述的ECC曲線ED計算:

1

得到簽名Si9r(r,s),將Sig,(r,s)、RNr發(fā)送給T。

使用T發(fā)來的臨時密鑰T和墨,通過Hash函數(shù)(一般使用MD5或SHAI算法,在有更高安全需求的情況下可以使用SHA-256等具有更高安全強度的Hash算法)計算基礎密鑰BK:

1

5)TN收到RN發(fā)來的Sig(r,s)、RNr、TKr。首先使用RN的公鑰墨對簽名Sig,(r,s)進行驗證。如果驗證失敗,則拒絕對響應;如果驗證成功,則,通過約定的Hash函數(shù)計算基礎密鑰BKL。

1

根據(jù)交換律可知,在同一條ECC曲線En上,有:

 

1

故有:

1

因而TN持有與RN相同的基礎密鑰BK,密鑰交換完成,密鑰交換示意圖如圖3。

1

4、消息加密及恢復階段

該階段對單對閱讀設備與標簽沒備間的通信數(shù)據(jù)使用AES算法進行加密,AFJS加密算法有電子密碼本(lectronicCode Book,. ECB)、密碼塊鏈接(Cryptogram Block Connect,CBC)弋輸出反饋(Output Feed Back,OFB)、密文反饋(Ciphertext Feed Back,CFB)、計數(shù)器(Counter,CTR)五種加密模式,其中電子密碼本(ECB)和密碼分組(CBC)模式為最常用的兩種AES加密模式一ECB模式由于其工作原理,導致其會將同樣的明文塊加密成同樣的密文塊,因此容易受到重放攻擊的影響。而CBC模式每一個明文塊均先與前一個密文塊進行異或操作后再進行加密,因此每個密文塊都依賴于之前所有明文塊,從而具有較ECB模式更高的安全性。因此,本方案選用CBC模式對通信數(shù)據(jù)進行加解密操作,其具體步驟如下:

1)密鑰交換完成的一對閱讀設備冗小已在首次加密通信開始前先各自初始化一個計數(shù)器C(閱讀設備計數(shù)器為Cr,標簽設備計數(shù)器為Ct),并分別從各自的BK中相同偏移位置處取出定長(根據(jù)具體加密設置可選128位、192位、256位)的會話初始密鑰SKo。

2)發(fā)送方將待發(fā)送的消息m添加到當次會話設備標識隨機數(shù)RN;(若發(fā)送方為閱讀設備,則為RNr,若發(fā)送方為標簽設備,則為月M,該值在密鑰交換過程中生成并相互交換)后,將生成的數(shù)據(jù)串M按AES塊長度(128位:)分塊,不滿128位長度的塊使用0填充。將得到的所有塊按CBC模式使用約定的初始向量和會話密鑰SK(首次加密通信時,SK。即為會話初始密鑰sKa)進行加密,并將長度信息和密文發(fā)送至接收方,同時將自身計數(shù)器執(zhí)行自增操作,自增步長為約定值M。

3)接收方收到密文,使用約定的初始向量和甄對密文進行解密,并根據(jù)長度提取出消息J和當次會話設備標識隨機數(shù)RNi。比對RNr和在身份驗證階段交換而來的當次會話設備標識隨機數(shù)RNr,如果匹配,則自身計數(shù)器執(zhí)行自增操作,自增步長為約定值,單次加密通信回合完成;如果不匹配,則拒絕接收消息r,并根據(jù)安全要求選擇合適的處理方式。

4)在單次加密通信回合完成后,通信雙方各自使用約定的密碼變換算法K,計算:

1

得到新的會話密鑰skn。并重復步驟2)到步驟4),直到當次會話結束。

由密鑰交換階段產(chǎn)生的初始密鑰SKo僅作為本次會話的會話初始密鑰用于首次通信。在首次通信過程結束后,閱讀設備和標簽設備將使用約定的密碼變換算法K對各自計數(shù)器值q和前次會話密鑰SKrL-I進行計算,得到新會話密鑰,使得當次會話每一個通信回合使用的會話密鑰SKn都不相同,從而提高了通信安全性,其加密和變換過程如圖4。

1

小知識之密鑰交換

密鑰交換,是一種用以獲得認證密鑰的協(xié)議。由internet工程任務組負責制定,RFC2409號文檔給出了其具體規(guī)范。