第四章 我們提出的認證協定
4.3 改良我們的認證協定
36
資料庫(Database) 讀取器(Reader) 標籤(Tag)
V=Hleft(RID⊕NR)
產生 NT
M1=PRNG(EPCs⊕NR)⊕Ki
D=NT⊕Ki
E=NT⊕PRNG(NT⊕Ci⊕Ki)
M2⊕Pi=?PRNG(EPCs⊕NT) Ki+1=PRNG(Ki)
Pi+1=PRNG(Pi) Ci+1=PRNG(NT⊕NR) Hleft(RID⊕NR)=?V
若 Ci=0 {
對資料庫所有(EPCs, Kold, Knew) 做比對
Iold=M1⊕Kold, Inew=M1⊕Knew
Iold or Inew=?PRNG(EPCs⊕NR) x=old or new
} 否則 {
Cold or Cnew=?Ci
x=old or new
M1=?PRNG(EPCs⊕NR)⊕Kx }
NT=D⊕Kx
NT⊕PRNG(NT⊕Cx⊕Kx)=?E M2=PRNG(EPCs⊕NT)⊕Px
Info=Hright(RID⊕NR)⊕DATA
若 x=new {
Kold←Knew←PRNG(Knew) Pold←Pnew←PRNG(Pnew) Cold←Cnew←PRNG(NT⊕NR) }
否則 { Cold←Cx
Cnew←PRNG(NT⊕NR) }
Kold、Pold、Cold、Knew、Pnew、
Cnew、RID、EPCs、DATA RID Ki、Pi、Ci、EPCs
1. NR
2. M1, D, Ci, E 3. M1, D, Ci, E, NR, V
4. M2, Info 5. M2
圖 4-1、我們提出的認證協定流程圖
37
樣的問題。為了使我們所提出的認證協定更加的安全,我們將針對 Lee 等學者提出的 攻擊手法,進一步的改良認證協定。在這個章節中,將會說明 Lee 等學者的攻擊手法,
以及改良我們所提出的認證協定。
4.3.1 Lee等學者的攻擊手法
Lee 等學者在 2011 年提出了一個攻擊手法去攻擊 Yeh 等學者提出之認證協定,
而攻擊的手法主要分為三個階段,以下說明其攻擊手法。
階段 1:
第一步:攻擊者傳送一個隨機亂數 NA1至標籤。
第二步:標籤收到 NA1之後,將會計算 M11=PRNG(EPCs⊕NA1)⊕Ki、D=NT
⊕Ki、E=NT⊕PRNG(Ci⊕Ki),並傳送訊息(M11、D、 Ci和 E)給攻擊者。
階段 2:
攻擊者重複階段 1 的動作,傳送隨機亂數 NA2至標籤,並且取得標籤傳送之 訊息(M12、D、 Ci和 E)。同時攻擊者準備了一個集合 H={H0, H1, H2, … …, H216} 來 偽 造 所 有 可 能 性 的 EPCS’ 。 接 著 攻 擊 者 計 算 M11⊕ M12 取 得 PRNG(EPCs⨁NA1)⨁PRNG(EPCs⨁NA2)⨁Ki⨁K,而認證金鑰 Ki i經由 Exculsive OR 運算過後將消除,最後攻擊者取得了 PRNG(EPCs⨁NA1)⨁PRNG(EPCs⨁
NA2)算式以及(H、NA1 、NA1、M11 和 M12),而攻擊者使用字典攻擊法來進 行運算。
for ( i = 0 ; i < 216 ; i++ ) {
EPCS’ = Hi;
if (M11⊕M12 == PRNG(EPCs⨁NA1)⨁PRNG(EPCs⨁NA2) ) return EPCS’;
else
continue;
}
38
經過以上的程式運算過後,攻擊者就能夠輕易的在 216個元素的集合中 找出正確的 EPCS’同時也相當於取得了正確的 EPCS。
階段 3:
當攻擊者取得了正確的 EPCS後就能夠運算出 Ki =PRNG(EPCs⊕NA1)⊕
M11,而當攻擊者取得了正確的 EPCS和 Ki之後,就能夠冒充成一個合法的 標籤來進行認證。
攻擊者藉由互斥或運算的特性,成功的將認證金鑰 Ki消除,以及只要 使用 216個元素的集合就能夠輕易的取得認證協定中的重要資訊。攻擊者之 所以能夠成功攻擊的原因,是因為 Yeh 等學者將原本 96-bits EPC 改成 16-bits 的 EPCS,使得長度大幅的縮減,因而造成了安全性的漏洞。
4.3.2 改良我們提出之認證協定
由於 Lee 等學者的攻擊手法成功的攻擊了 Yeh 等學者提出之認證協定,因而在此 我們將更進一步的改良我們的認證協定,以抵擋 Lee 等學者的攻擊手法。
首先針對互斥或運算的特性,我們將改進認證協定中訊息的運算方式,改良的目 的為,盡可能不讓重要的資訊直接使用互斥或,使攻擊者無法使用互斥或運算將認證 金要消除。修改運算的訊息分別為 M1、E、M2 以及 C 更新運算,修改後的運算如下:
M1=PRNG(EPCs⊕NR⊕Ki) E= PRNG(NT⊕Ci⊕Ki) M2=PRNG(EPCs⊕NT⊕Px) Ci+1=PRNG(NT⊕NR⊕Pi)
接著我們將 Yeh 等學者修改的 16-bits 的 EPCS,改進成原始 96-bits 的 EPC。同
39
時我們也進行了一項測詴,我們使用了桌上型電腦(環境為 Windows 7 32 位元、2G 記 憶體、Intel Core 2 Quad CPU Q6600 2.4GHz)進行了 16-bits 和 96-bits 的運算實驗。由 於 16-bits 只有 65536 種可能性,在我們的測詴環境中僅僅只需少許的時間就能夠運 算完成,而 96-bits 大約有 7.92281625 × 1028種可能性,在我們現有的測詴環境中無 法運算完成。兩者相比較,很明顯的 16-bits 的安全性遠比 96-bits 來的低。因此我們 將原本沿用 Yeh 等學者的設定,改進成 96-bits 的 EPC,加以保障我們所提出的認證 協定。改良後的認證協定流程圖如圖 4-2。
資料庫(Database) 讀取器(Reader) 標籤(Tag)
V=Hleft(RID⊕NR)
產生 NT
M1=PRNG(EPC⊕NR⊕Ki) D=NT⊕Ki
E=PRNG(NT⊕Ci⊕Ki)
M2=?PRNG(EPC⊕NT⊕Pi) Ki+1=PRNG(Ki)
Pi+1=PRNG(Pi)
Ci+1=PRNG(NT⊕NR⊕Pi) Hleft(RID⊕NR)=?V
若 Ci=0 {
對資料庫所有(EPC, Kold, Knew) 做比對
M1=?PRNG(EPC⊕NR⊕Kold or new) x=old or new
} 否則 {
Cold or Cnew=?Ci
x=old or new
M1=?PRNG(EPC⊕NR⊕Kx) }
NT=D⊕Kx
PRNG(NT⊕Cx⊕Kx)=?E M2=PRNG(EPC⊕NT⊕Px) Info=Hright(RID⊕NR)⊕DATA
若 x=new {
Kold←Knew←PRNG(Knew) Pold←Pnew←PRNG(Pnew) Cold←Cnew←PRNG(NT⊕NR) }
否則 { Cold←Cx
Cnew←PRNG(NT⊕NR⊕Px) }
Kold、Pold、Cold、Knew、Pnew、
Cnew、RID、EPC、DATA RID Ki、Pi、Ci、EPC
1. NR
2. M1, D, Ci, E 3. M1, D, Ci, E, NR, V
4. M2, Info 5. M2
圖 4-2、改良後的認證協定流程圖
40