• 沒有找到結果。

二元樹金鑰交換協定

第四章 子計畫三:定位系統之射頻技術

4.2 射頻辨識系統之安全性研究

4.2.2 二元樹金鑰交換協定

首先先介紹 BKAP 所使用的簡單觀念。Reader 與 tag 的 memory 都分成 許多小區塊,並且每個區塊都存有一個密袐的資料,如圖4-2所示。

在section 1存A,section 2存C,section 3 存D,section 4 存B。

在key exchange時,Tag 可以傳送 memory 讀取的順序給 reader,reader 將 memory讀取出來的值當成本次的 session key。例如 tag 傳送 3421 的順序給 reader,reader 就可以知道此次使用的 session key 是 DBCA

這架構的好處在於敵人無法從 tag 傳送給 reader 的 memory 讀取順序得 知他們所交換的 session key,攻擊者必需做 physical attack來獲得 memory的 content 才有辦法得知 Reader 與 tag 交換的金鑰而破解這個架構。而進行 physical attack 的門檻是非常高的,需要有高技術與與精密的儀器才有辦法探測 memory 的內容。而這樣的技術可能只有國家或是大規模公司的實驗室才擁有。

但是這樣的架構有個大問題,也就是 reader 與 tag 並不需要確認對方是合法的 就可交換 session key。

另外,還需要 database 來確認 tag 傳送過來的資訊是否是合法的。例如 reader 將 tag 傳 送 過 來 的 密 文 解 密 後 得 到 tag 的 EPC , 而 reader 需 要 到 database 查詢這個 EPC 是不是正確的。

因此我們使用 binary tree 將這二點缺點改進, 使 reader 與 tag 需要是合 法的才可以做 key exchange 的動作

4.2.2.2 BKAP 的建立

圖4-1 安全性研究課題流程圖

在講 BKAP 之前,我們需要先了解 binary tree 的一些觀念。這是一個4個node 的 binary tree。假如我們讓4個 node 的 binary tree 的 preorder sequence 固定為 1234,4個 node 的 binary tree 可以有14種不同形狀的樹如圖4-3、圖4-4。在這 樣的前提下,我們可以發現會有4種不同的 postorder sequence。而在每一個 preorder sequence 與 postorder sequence 的組合下,又會有不同的 inorder sequence。因此可以發現不同的 inorder sequence 與 preorder sequence 建立的 binary tree 可以擁有相同的 postorder sequence。

圖4-3 14種Binary Tree範例(1)

圖4-2 Binary Tree based Key Agreement Protocol(BKAP)

4.2.2.3 BKAP 的架構

現在我們正式介紹 BKAP這個演算法。我們以4個 node 的 binary tree為例 子來解說,首先 Reader 先儲存了一組 preorder sequence,並且也儲存每個 node 相對應的密袐資料如圖4-5。而 Tag 儲存一個 binary tree,並且也儲存每個 node 相對應的密袐資料如圖4-6。在這個例子 tag 儲存了第2排第3行的樹。

我們使用 Psuedo random number generator來產生session key是因為

EPCglobal C1G2 standard有支援 Psuedo random number generator。這樣 tag 可以 不需 implement 額外的 function,稱之為 Enhanced BKAP (EBKAP)。在這個 BKAP 的 example 裡我們可以發現 tag 每次在與 tag 交換 session key 的過程 中,Tag 都會產生相同的 master key (Kmi),因此我們改變了tag儲存資料的結構 來減少 tag 的 computing resource,我們把 Kmi 獨立的另外儲存在單一個欄位 如圖4-7,這樣 tag 在產生 session key 時,他只需將事先儲存的 Kmi 讀取出來 即可。因此 tag implement EBKAP 所需的硬體資源大多花費在產生 RISt 的硬 體,運作流程如圖4-8。

圖4-5 Reader 記憶體的架構

圖4-6 Tag 記憶體的架構

4.2.2.4 BKAP 的分析

在產生RISt之後,我們用language C來撰寫摸擬,共分成二個部份,第一部 份如這個圖的,它需要一個for 迴圈,而這個迴圈執行了n次,N是指binary tree 的node數目。因此這個程式的time complexity只需O(n),而第二部份是對binary tree 做inorder traversal的function。在reference [36]有分析 inorder traversal的 function也是只需要O(n)。我們使用verilog HDL語言也就是Xilinx ISE 9.1i來估測 implement EBKAP所需的gates。而tag被assigned一個32個node的binary tree。而為 了無法讓敵人以RISt追踪tag的行為,在BKAP的範例我們舉例了RISt可以有八種 的變化。而這些變化是依據binary tree有幾個單連結node來決定。以這個binary tree 來說明,它的node 123都是單連結點,因此他有8個inorder sequence的變化 因此我們定義了一個樹總共有NNs個單連結點,因此inorder sequence的變化總共 有2NNs這麼多個。敵人可以在EBKAP protocol中竊聽RNr ,RISt和密文。並且可 以利用RNr 和密文來暴力式的search EPC,這樣的暴力式attack 是需要

O(2k+EPCl)。

圖4-7 Tag 記憶體的架構

圖4-8 EBKAP 流程圖

4.2.3 防碰撞兼具認證功能的通訊協定