• 沒有找到結果。

不可捏造的加密系統

第四章 一個基於儲存限制的加密系統

第二節 不可捏造的加密系統

接下來我們考慮訊息驗證的系統,並將其概念應用到演算法一,達到一個不 可捏造的加密系統。在一些公開金鑰的系統中可以利用數位簽章的方式,很容易 的達到訊息驗證的效果。而在對稱式金鑰的系統(symmetric-key system)中也可以 利用 MAC 的技術來達到。我們利用訊息驗證的技術對密文做驗證,使得在傳遞 的過程中不會被第三者修改。

第一項 基於金鑰式赫序函數的訊息驗證

金鑰式赫序函數(keyed hash function),其主要目地就是要用來產生訊息驗證 碼(message authentication code)。與一般的赫序函數的不同,主要在於它會牽涉到 一把私密的金鑰,因此只有擁有金鑰的使用者能夠產生相同的輸出。這樣的特性 剛好很適合用在訊息驗證上面。我們在此介紹一種用赫序函數來產生 MAC 的演 算法,”HMAC”(Keyed-Hash Message Authentication Code)。這個方法可以利用私 密金鑰來計算出訊息驗證碼,並且擁有一些特性:

„ 可以利用一些常見的赫序函數來製造,且已有一些赫序函數在軟體上有 不錯的效能,而且也有一些免費的開放原始碼(Open Source)

„ 利用既有的赫序函數來製造,其效能並不會有太大的影響,仍然有跟使

用的赫序函數差不多的效能。

„ 這樣的製作過程所產生的訊息驗證,其安全性分析是基於所使用的赫序 函數,而且如果有更安全的赫序函數被發展出來,也能夠很輕易的替換 使用,達到更好安全程度的訊息驗證。

HMAC其演算法中ipad=(0x36)64與opad=(0x5C)64為兩個 64 位元組的定值,H為任 何的赫序函數(如SHA-1,MD5),對於HMAC而言可以將H視為一個黑盒子(black box),直接像是呼叫子函式一樣的呼叫使用H,定義其函數如下:HMAC(Message, Key)=H Key(( ⊕opad) ||H Key(( ⊕ipad) ||Message)),詳細過程如圖表 6。

Key

ipad=(0x36)64

圖表 6 HMAC

密碼學上的赫序函數都是將一個任意長的輸入字串,對應到一個較短的且固 定長度的輸出字串上。而一般的建構方式如SHA-1,MD5 等函數其設計都是要滿 足抗碰撞的性質(collision-resistance)。此外,密碼學上的赫序函數通常都會有雜 亂的性質(randomness)。如果一個赫序函數是”random”的,那其定義域的值就會

訊息(Message)

H(任一赫序函數)

opad=(0x5C)64

||

||

H(任一赫序函數)

Output

平均的對應到值域上。假設輸出的長度為|T|的話,那麼兩個隨機的輸入對應到相 同的輸出的機率會是 2-|T|。我們在下面對抗碰撞赫序函數做一個詳細的定義。

定義六: 抗碰撞赫序函數(collision-resistance hash function):對於一個函數集合

{

hn: 0,1

{ }

* {0,1}n

}

論,我們將會在下一小節中討論。

第二項 擁有不可捏造的加密系統

演算法 二:Non-malleable encryption

Initial:A public random bits R is composed by m blocks.

( (1),..., ( )), | ( ) | 1, ( 1) R= R R m R i = + −l n R =m l+ −n . Alice and Bob haveinitial key Kenc and Kauth.

Alice and Bob listen while R is being broadcast.

5. Alice and Bob store , ,

equal compute M C X else

防止密文傳遞的過程被第三者修改,我們利用Xauth並利用HMAC函數來製作驗證

,傳送(C,r)的組合給Bob,他必須先檢查r的正確性來判斷

密文在傳遞時是否有被修改過,然後再用X ( , auth)

r=HMAC C X

enc來做解密的步驟,詳細的演算法如 上所示。

„ 安全性討論

這樣的系統安全性如何,我們考慮在第二章所定義的不可捏造的定義,如果 攻擊者無法在沒有初始金鑰的情況下產生出一組有效的(密文-驗證碼)組合的 話,那我們的系統就有不可捏造的特性。但在此我們考慮更弱的假設,如果攻擊 者也能夠得到初始金鑰的狀況下系列仍是安全的。攻擊者在得到(C,r)後就不能再 存取隨機字串了;直覺的想法,因為r=HMAC(C,Xauth),所以在定義四的描述下,

即使Kauth在之後被洩露了,Xauth仍然是與平均分佈是統計上鄰近的。因此在Kauth露的情況下無法從(C,r)偽造出另一組有效的( , )C r

攻擊者的攻擊策略,假設R1,R2…是個別被利用在密文(C1,r1),(C2,r2)…與明文 M1,M2,…之間的隨機字串,我們將(Ci,ri)視為密文。攻擊者AD可以存取隨機字串 R1,R2,…並且觀察密文與明文((C1,r1),M1),((C2,r2),M2),…。針對每一組的密文與明 文可以根據選擇性密文攻擊與選擇性明文攻擊所提供的解密/加密資料庫來獲得 ((Ci,ri),Mi)且ri =HMAC C ext R K( i, ( ,i auth))=HMAC C X( i, auth i,)。

依照之前所定義的攻擊者模型做一些修改,給予攻擊者每回合用來加密及訊 息驗證的 one-time pad,攻擊者AD的攻擊可分為兩個步驟:

步驟一: AD可以做l次的查詢動作。對於第i回合AD可以存取該回合所使用

的隨機字串Ri。給予AD隨機字串Ri、上一次所儲存的資訊Vi-1及之前用來加 密 及 訊 息 驗 證 的 one-time pad Xenc,[i-1]=(Xenc,1,…,Xenc,i-1) 與

Xauth,[i-1]=(Xauth,1,…,Xauth,i-1),AD可以利用一個儲存函數hi來儲存s位元的資

訊 。 則 在 第 i 個 回 合 , 攻 擊 者 可 以 得 到 新 的 儲 存 資 訊 為

用”reduction”的方式來證明攻擊者也可以在演算法一中得到M相關的資訊。

接下我們可以利用這樣的F來製造一分辨器D分辨Xauth與平均分佈,如下所

相關文件