黃瑞銘
中海油田服務股份有限公司 河北 065201
隨著中海油田服務股份有限公司國際業務的拓展,在現有條件下,積極推進企業現代物流體系建設,是提高中海油服后勤保障能力的一條有效途徑。建設配送物資跟蹤的核心運轉系統,對通用物資庫所有入庫和后期配送的物資實現信息跟蹤,能全程查詢到物資配送過程中所對應關鍵節點信息成為企業信息化建設的重要任務。
在系統實施過程中,如何確保所傳遞數據的真實性是系統重要安全問題之一。本系統嘗試采用RFID技術進行相關研究,讀寫器和標簽之間的認證是保證數據安全性最重要手段之一。該數據加密密鑰若在網絡中以明文的形式傳輸,很有可能被不法分子截取,進而獲取雙方傳輸的數據,或者偽裝成一方,與另一方通信。這將自然而然的涉及到密鑰存儲和管理的問題。基于上述問題,在查閱相關資料的基礎上,發現國內外學者在RFID身份認證的過程中都是使用簡單的 Hash單向函數來實現,本文將提出一種基于可信第三方—KDC(Key Dispatch Center密鑰分配中心)的認證方案,提出將Kerberos協議應用于RFID系統。將改進Kerberos協議,以實現讀寫器與標簽之間的雙向認證,進而保證數據的真實性。
盡管Kerberos身份認證協議有其巨大的應用優勢,但是要將它應用于配送物資跟蹤系統中,仍存在一些缺陷,不足之處主要體現在以下幾個方面:
(1)密鑰交換問題
由于Kerberos身份認證采用的是對稱加密機制,加密和解密使用的是相同的密鑰,使得雙方交換密鑰時的安全性難以保障。一旦攻擊者截獲密鑰,竊聽、篡改信息就變得易如反掌。因此,發送方如何安全、高效地將密鑰發送到接受方式Kerberos協議難以解決的問題。
(2)密鑰管理問題
隨著用戶數量的增加,使得密鑰管理更復雜。不同客戶端與服務器之間通信使用不同的密鑰,這致使服務器端存儲的密鑰數量非常多。這在密鑰管理和維護方面帶來很大的麻煩。
(3)共享客戶端口令的局限性
Kerberos服務器與客戶端共享的服務會話密鑰是客戶端的口令字,而服務器在響應時不需驗證客戶端的真實性,只是直接假設只有合法客戶端擁有了該口令字。如果攻擊者截獲該響應消息,就很容易形成密碼攻擊。
(4)數字簽名問題
Kerberos協議采用的對稱密碼體制中通信雙方擁有相同的密鑰,所以接受方可以偽造簽名,發送方也可以否認發送過某消息,即存在鑒別認證和不可否認性的困難。尤其在RFID系統中,存在大量的陌生標簽和讀寫器,讓這些互不認識的設備進行安全可信的信息傳遞是其急待解決的問題。
基于上述問題,本文提出的改進的Kerberos協議中,使用公鑰密碼體制去維護KDC與客戶端之間,客戶端與服務器之間傳輸數據的安全性。密鑰分發中心KDC分別用客戶端和服務器的公鑰去加密服務會話密鑰,由于加密后的服務會話密鑰只有用各自的私鑰才能解密,進一步增強了雙方通信的安全性。同時,公鑰密碼體制給密鑰的管理和維護方面帶來很大的方便。
用公鑰密碼的理念來改進Kerberos協議,就能有效克服上述4點缺陷,讓Kerberos協議更適合配送物資跟蹤系統這種及時性要求高、標簽的運算和存儲資源有限、安全性風險大的特殊環境。以下將詳細描述改進后的協議流程。
密鑰分配中心(KDC)為可信的第三方,假設讀寫器能與KDC通信,并能夠從KDC處獲取票證許可票證(TGT)和訪問某特定服務器的服務票證(ST)。同時,KDC的列表中存儲著所有讀寫器和標簽的公鑰信息,分別用 Rpubkey和Tpubkey表示。讀寫器的私鑰存于讀寫器的存儲器中,用Rprikey表示;而標簽的私鑰存于標簽的存儲器中,用Tprikey表示。讀寫器中存儲著KDC的公鑰,用Rpubkey表示,便于讀寫器對KDC發送的消息進行認證和識別。讀寫器的基本信息用Rinfo表示,用于后續認證。
(1)讀寫器向KDC請求票證許可票證TGT
讀寫器向密鑰分發中心(KDC)發送一個Kerberos身份認證服務請求,以期獲得票證許可票證TGT。該請求包含讀寫器名Readername、請求TGT所需的服務信息Rinfo以及使用讀寫器的公鑰加密的時間戳。
即Request1=Readername||Rinfo||ERpubkey(Timestamp)
改進Keberos協議的應用環境是在多標簽、多讀寫器環境中,目的在于防止非法讀寫器讀取到標簽的內容,在眾多的讀寫器中至少能保證一臺讀寫器是安全的,而標簽內存儲的不可能是貨物詳細的信息,需要跟后臺數據庫交互才能完成信息獲取,此處的密鑰分發中心(KDC)完全可以設置在部署數據庫的上位機上。
基于KDC分配密鑰的巨大優勢在于密鑰是實時分配,不同的時刻、不同的通信雙方之間使用的密鑰是不同的,完全有KDC決定,這極大保障了RFID系統的安全性,其次通信過程中的密鑰無需在初始化階段固定在標簽中,這就可以防止通過分析標簽結構來截獲密鑰,同時減少系統部署的負擔。
(2) KDC向讀寫器發送加密的TGT和登錄會話密鑰Lskey
KDC先用Rprikey解密 ERpubkey(Timestamp)得到Timestamp,判定該標簽是否有效,若有效,則該讀寫器是合法的。之后,利用該讀寫器的相關信息生成登錄會話密鑰 Lskey,再用讀寫器的公鑰將其加密得到 ERpubkey(Lskey),用KDC自己的私鑰加密TGT得到 EKprikey(TGT)。
最后,將Response1 = ERpubkey(Lskey)||EKpubkey(TGT(Rinfo))發送給讀寫器。
(3)讀寫器向KDC請求訪問特定標簽的服務票證ST
讀寫器用自己的私鑰解密 ERpubkey(Lskey),得到登錄會話密鑰Lskey,并用KDC的公鑰解密 EKpubkey(TGT(Rinfo)),得到TGT。之后,讀寫器向KDC發送訪問某特定標簽的請求。Request2=Readername ||ELskey(tag)||TGT||Tagid。其中,tag為認證符,用于后續的認證過程,Tagid為讀寫器想訪問標簽的ID。
嚴格來說,讀寫器與標簽的通信是廣播方式完成的,它會將請求發送給識別范圍內所有的標簽,正因如此,在開放信道內才有保證其數據安全的必要性。這中間又分兩個步驟,首先是獲取所有標簽的ID,讀寫器用輪詢的方式查看有無新標簽進入,在標簽進入讀寫器的識別范圍內,會響應讀寫器,并將ID返回給它(ID只是標簽的名字,不會包含隱私信息,同時也是做到點對點通信所必須的,而標簽的隱私數據如貨物價格、產地和EPC碼等,是通過AES加密后傳輸的),這一點類似計算機網絡里的 ARP,當一臺計算機加入到一個新的網絡之后會廣播其MAC地址,告訴所有主機它的訪問地址,這一步是公開的,但更深層次的數據獲取等操作是需要雙方認證的;其次是訪問某特定 ID的標簽,比如讀寫器要訪問001,就會廣播Read-001消息,眾多標簽在接受到這個消息后,會根據自身的ID是否是001,還有該讀寫器是否具有訪問權限來決定響應與否。
在安全行要求及其嚴格的情況下,標簽 ID也是不允許明文傳輸的,可以通過隨機Hash-Lock協議對ID進行加密:標簽在收到讀寫器的請求Query后,生成一個隨機數R,并計算其中,IDk為標簽ID標識,并將(R,數據對送至后臺數據庫。數據庫查詢滿足的記錄。若找到則將對應的IDj發往標簽,標簽比較與是否相同,最后確定是否認證通過,這種方式在獲得標簽 ID安全性的同時,自然會帶來計算復雜性,每訪問一個標簽都意味著讀寫器遍歷一次數據庫。
(4)KDC發送加密的服務會話密鑰Sskey和服務票證ST
KDC收到Request2后,先用Lskey解密ELskey(tag),得到認證符tag,并做初步判定,若合法,則繼續后續的驗證。從TGT中提取讀寫器的相關信息,并使用該信息創建訪問相應標簽的服務會話密鑰 Sskey。之后,KDC用 Lskey加密Sskey,得到
ELskey(Sskey);用相應標簽的公鑰加密服務票證ST,得到 ETpubkey(ST)。
響應消息Response2 =ELskey(Sskey)||ETpubkey(S T)
(5)讀寫器向特定標簽發送訪問請求
讀寫器接收Response2后,先用Lskey解密ELskey(Sskey),得到服務會話密鑰 Sskey,該密鑰用于后續讀寫器與標簽之間通信時加密數據。接著,讀寫器向標簽發送訪問請求Request,Request中包含用Sskey和ST加密的身份認證信息,以及從KDC處接收到的 ETpubkey(S T)。
即Request =EST(ESskey(Rinfo||Timestamp))||ETpubkey(S T)
(6)讀寫器與標簽進行相互認證
標簽先用自己的私鑰解密 ETpubkey(S T)(非對稱密碼體制中的私鑰解密的過程非常簡單,都是與、或、非、異或、移位之類,易于硬件實現,在查閱資料的過程中,已經有人將RSA、橢圓曲線等非對稱加密算法應用于RFID讀寫器標簽通信的過程中,因此私鑰解密應用于RFID系統身份認證這種操作頻度不高的行為上是可行的),得到ST;再從ST中分離出服務會話密鑰 Sskey,利用 ST和 Sskey解密EST(ESskey(Rinfo || Timestamp)),從而得到時間戳Timestamp。再將解密認證符得到的讀寫器信息Rinfo與ST中分離出的做比較,若相同,則該讀寫器就是合法的,認證通過。
接著,標簽利用 Sskey加密 Timestamp后得到ESskey(Timestamp),(此處的 TimeStamp是上一步中從讀寫器發來的信息中分離出來的,相當于隨機數的作用,加入時間因素后隨機性相應增強,安全性提高)并傳回給讀寫器。讀寫器使用Sskey解密后獲取時間戳。若此時間戳與其初始發送的相同,則該標簽正是讀寫器想訪問的,認證通過。
Kerberos認證協議的作用在于身份認證,如同登錄一些系統需要輸入用戶名密碼,在確認身份無誤之后,而身份認證過程操作頻度不大、實時性不強、但安全要求非常高,所以效率并非考慮的主要因素,Kerberos協議主要應用于計算機局域網組網時網內主機認證,抽象來看,應用環境類似RFID系統,改進之后的認證過程并沒有延續原始協議復雜的消息加密體制,而是常用公鑰加密、私鑰解密,附加簡單邏輯操作,適合RFID這種計算資源有限的環境,效率也是可以保證的。
通過以上的改進協議應用于配送物資跟蹤系統的測試環節中,取得了預計的效果。說明用公鑰密碼的理念來改進Kerberos協議,就能有效克服傳統的Kerberos協議的4點缺陷。具有一定的價值。
[1]林責彬,王永華,詹宜巨.一種基于隨機序列的RFID安全協議[J].計算機工程.2008.
[2]陳克力,郭春生.一種雙層/雙向認證的隨機Hash鎖RFID安全協議[J].電子技術應用.2008.
[3]李章林,盧桂章,辛運幃.重加密技術在RFID安全中的應用[J].計算機工程.2008.
[4]裴友林,楊善林.基于密鑰矩陣的RFID安全協議[J].計算機工程.2008.