第二章 數位簽章、身份認證協定與互動式證明系統
第二節 各種攻擊
-由M. Lomas 等四人所提出的[7],這篇的做法是建立在公開金鑰架構上,
到了西元1992 年,S. Bellare 以及 M. Merritt 提出 EKE[1],EKE 是第一個 不需要在公開金鑰架構下的「以通行碼進行身份認證的金鑰交換協定」,
EKE 的觀念在於他將金鑰交換協定過程中的傳遞訊息利用通行碼進行對 稱式加密,而DH-EKE[1]與 EKE 不同之處在於 DH-EKE 用通行碼加密的 是Diffie-Hellman 金鑰交換過程中的傳遞訊息。
西元 1993 年提出 EKE 的兩人,S. Bellare 與 M. Merritt 再度提出 A-EKE[2],目的在於解決 EKE 與 DH-EKE 共同的問題,在 EKE 與 DH-EKE 中,在服務者端所存放的驗證資訊是通行碼,因此當服務者被惡意攻擊者 入侵,那麼攻擊者便輕易的得到通行碼,而 A-EKE 在服務者端存放的驗 證資料是非對稱的形式(Asymmetric Model),這樣的方式解決了之前的問 題。之後陸陸續續有許多的協定被提出,例如由EKE 衍生的 M-EKE[10]、
SPEKE[5]、建立在 RSA 假設上的 OKE[8]、解決服務者資訊洩漏的門檻式 身份認證協定 T-PAKE[12]、AMP[6]等。在這些協定中有些協定被破解 [3][11][16]有些則是仍然停留在安全性分析的階段,原因在於他們沒有一 個正規化的證明。然而在S. Lucks 所提出的 OKE 中有了一個證明的方向。
最早達到安全性證明要求的是O. Goldreich 與 Y. Lindell 提出的[14],
接下來的 SNAPI[9]、PAK、KOY[13]、FPAKE[15]也都證明了他們的協定 的安全性,而我們協定對於身份認證的證明模式則是利用PAK 中所提出的 方式。
第二節 各種攻擊
在網路這樣一個開放的環境中,認證身份雙方所傳遞的訊息都是公開 的,於是乎,惡意的攻擊者便可以利用這些公開的訊息來進行攻擊,因此
在我們設計協定時,必須要考慮到是否會遭受到這些攻擊方式的攻擊。所 以我們必須瞭解這些攻擊方式,以及為何這樣的攻擊方式可以成功攻擊協 定。
第一項 竊聽攻擊法
竊聽攻擊法顧名思義,就是利用在網路上傳遞的訊息是公開的,藉由 監聽網路的封包取得有用的資訊,我們以PAP 這個協定來做說明,竊聽攻 擊法如何取得有用的資訊,PAP 協定的運作方式如下:
由於在PAP 中,由於帳號與通行碼是直接在網路上傳送給服務者來驗 證,所以惡意的攻擊者只要監聽網路上傳遞的封包,就可以得到一組帳號 與相對應的通行碼,因此通行碼不能不經過任何處理就在網路上傳送。
PAP
Alice (IDBob, π) Bob(IDBob, π) (IDBob, π)
9
-第二項 重送攻擊法
重送攻擊法(Replay Attack)的攻擊方式,是利用監聽網路環境,紀錄 雙方溝通的訊息,之後偽裝客戶,重新傳遞這些記錄下來的訊息,以達到
確認(IDBob, π)=(IDBob, π)
Accept or Reject 等號是否成立
10
-偽裝合法客戶的目的,我們以前面的PAP來做說明。惡意的攻擊者只需要 監聽網路環境,並且記錄下Bob傳送給Alice的(IDBob, π)值,之後就可以 偽裝成Bob,將這組值重新傳送給Alice,如此一來就可以取得服務。
重送攻擊法之所以能夠成功的原因在於,客戶與服務者每次做身份認 證的時候,傳遞的訊息都相同,因此如果要避免重送攻擊法的攻擊,在協 定中每次認證傳遞的訊息必須不相同。
第三項 字典攻擊法
由於通行碼是方便人腦記憶的一小段特殊的文字,通常在八到十個位 元,相較於我們使用的安全金鑰是短很多的,因此惡意的攻擊者可以針對 這個特性,以這八到十個位元所有可能的通行碼進行窮舉(exhaustive search)的測試方式,來猜測出通行碼,將這些可能的通行碼經由協定運 作的計算方式,去比對運算後的值,藉此可以找出通行碼,而字典攻擊法 又可以分為以下兩種:
一、 即時字典攻擊法(On-line Dictionary attack):即時的字典攻擊法是 指攻擊者直接偽裝使用者的角色與另一個使用者執行協定,攻擊者 重複猜測使用者的通行碼,直到與另一個使用者執行協定的結果為 成功為止,那麼成功的偽裝合法使用者所使用的通行碼,就是正確 的通行碼。對於這樣的攻擊方式我們可以利用限制執行協定時錯誤 的次數來減低攻擊者猜出通行碼的可能性,我們以機率的角度來 看,假設攻擊者嘗試猜測通行碼的次數為 t,而通行碼的字典空間 為d,那麼攻擊者成功猜測到通行碼的機率就是 t/d,也就是說我們 只要將t 的值限制在一個很小的值,就可以讓攻擊者成功猜測到通 行碼的機率變的很低。
二、 離線字典攻擊法(Off-line Dictionary attack):離線的字典攻擊法是 指攻擊者觀察並且記錄之前身份認證過程中的訊息,並且窮舉所有 可能的通行碼進行計算並且與溝通的訊息比對,藉此猜測通行碼,
我們以CHAP(Challenge handshake authentication protocol)來做說 明,其運作方式如下圖所示:
11
-在CHAP這個協定中,每次Bob需要服務時,Alice都會給他一個挑戰值 C,之後Bob這個挑戰值C與通行碼當作雜湊函數h( )的輸入,最後將雜湊函 數的輸出與IDBob一同傳給Alice,讓Alice去比對他自己計算出的(IDBob|h(C,
π))與Bob傳送過來的(IDBob|h(C, π))是否相同。而離線的字典攻擊法如何攻擊
CHAP這個協定呢?首先,惡意的攻擊者會將Alice與Bob溝通的訊息記錄 起來,接著攻擊者猜測可能的通行碼π’,並且依照協定的方式,將挑戰值 C與通行碼π’作為雜湊函數h( )的輸入,然後與記錄下來的溝通訊息h(C, π) 比對,如果相等,表示攻擊者猜測到正確的通行碼,如果不等,則繼續猜 測下一個可能的通行碼。由以上的例子我們可以知道單純的將通行碼至入
CHAP
Alice ( IDBob, π) C Bob (IDBob, π)
(IDBob|h(C, π)) 確認下面等號是否成立
(IDBob|h(C, π))= (IDBob|h(C, π))
Accept or Reject h( ):hash function C:Challenge
雜湊函數作為保護是不夠的,我們需要設計更精密更複雜的方式來保護通 行碼的安全。
第四項 Denny-Sacco 攻擊法
我 們 將 會 利 用 一 個 可 以 抵 擋 字 典 攻 擊 法 的 通 行 碼 認 證 協 定 EKE
(Encrypted Key Exchange)來介紹 Denny-Sacco 攻擊法[19]的攻擊方式,
我們先來看EKE 的運作方式,如下圖所示:
12
-EKE 的認證過程步驟如下:
EKE
Alice (IDBob, π) Bob (IDBob, π, EB, DB) (IDBob|π(EB))
K:Session key EB:encryption key
DB:decryption key (π(EB(K)))
K(CB)
K(CA, CB)
K(CA)
CA, CB:Challenge
1. 首先Bob產生加密金鑰EB以及解密金鑰DB,並且利用通行碼π加密EB
之後,傳送(IDBob, π(EB))給Alice。
13
-2. Alice收到(IDBob, π(EB))後利用通行碼π解密π(EB)可以得到EB,接著 Alice產生一把交談金鑰K,並且利用π將EA加密過的K再加密一次,
之後將π(EB(K))傳送給Bob。
3. Bob先後利用π以及DB解密出交談金鑰K,接著隨機產生一個挑戰值 CB,並且將CB用K加密後,回傳給Alice。
4. Alice收到K(CB)後,利用K解密出CB,然後隨機產生一個挑戰值CA, 並且利用K將CA與CB加密傳給Bob。
5. Bob將K(CA, CB)解密得到CA與CB,接著比對這個CB與之前傳送給 Alice的挑戰值CB是否相等,如果相等,則用K將CA加密後回傳給Bob。
如果步驟1.到步驟 5.都能正確無誤的執行完畢,那麼 Alice 與 Bob 雙方便 能確認對方的身份,同時也產生了一把交談金鑰。
Denny-Sacco 攻擊法是假設攻擊者取得一把之前認證過程中所產生的交 談金鑰,攻擊者便可以利用這把交談金鑰設法找出通行碼。接下來我們假 設惡意的攻擊者已經記錄了在EKE 認證過程中所有的通訊內容,並且得到 了一把該認證內容產生的交談金鑰K,攻擊的方式如下:
1. 攻擊者猜測一個客戶的通行碼 π’。
2. 以π’將之前竊聽到的π(EB)進行解密的動作後可以得到EB’,也就是說 EB’=π’-1(π(EB))。
3. 利用EB’加密之前得到的交談金鑰K,得到EB’(K)。
4. 根據π’我們可以加密EB’(K)得到π’(EB’(K)),接著與之前的π(EB(K))做 比較,如果不相同則回到步驟 1.,如果相同則代表攻擊者猜測的π’
就是客戶的通行碼。
因為通行碼的長度通常很小,所以對於Denny-Sacco 攻擊法中的攻擊者 而言,重複地去猜測使用者的通行碼造成的影響並不大,這樣的攻擊方式 之所以會成功的原因在於,交談金鑰與認證過程中的通訊內容有著直接的
關係。
第五項 中間人攻擊法
中間人攻擊法(Man-in-the-middle attack)的攻擊方式是指攻擊者位在 客戶與服務者之間,並且同時扮演客戶與服務者的角色,也就是說,對客 戶而言,攻擊者扮演著服務者的角色,而對服務者來說,攻擊者扮演客戶 的角色,使得攻擊者與客戶擁有一把交談金鑰,而攻擊者與服務者則擁有 另外一把交談金鑰。我們以Diffie-Hellman 金鑰交換協定[20]為例子來做說 明,運作的方式如下:
14
-由上圖我們可以很清楚地知道,在執行Diffie-Hellman金鑰交換協定 時,Alice會從Zp-1中隨機選取一個x,接著計算出gx並且送給Bob,而Bob 也是隨機從Zp-1中選取y,計算出交談金鑰K=gxy mod p,之後將gy傳送給 Alice,而Alice也可以計算出交談金鑰K。而中間人攻擊法的攻擊方式我們 利用下圖來表示:
Diffie-Hellman Key Exchange
Alice Bob
gx
−1
∈R
Z
px y
∈RZ
p−1K=(gy)x mod p gy K=(gx)y mod p
=gxy mod p =gxy mod p
很明顯的,由上圖我們可以看出攻擊者在完成四個步驟的攻擊後攻擊 者會與Alice擁有一把交談金鑰KA=gxy’ mod p,也與Bob擁有一把交談金鑰
KB=gx’y mod p,如此一來攻擊者可以利用這兩把金鑰來解開Alice與Bob經過
加密的溝通訊息。中間人攻擊法關鍵在於在做金鑰交換的雙方,並沒有做 身份認證的動作。
Man-in-the-middle Attack
15
-第六項 小型子群限制
在一個公開金鑰系統(Public Key System)中會使用到許多的數值,而 這些數值的運算都是封閉(Close)在一個有限群(Finite Group)中,這樣 的有限群都會有一些基數(Order)較小的子群(Subgroup),而這些基數 較小的子群一樣具有封閉性(Closure),所以在子群內的元素互相做運算 後的值,仍然會是這個子群的元素,也就是說假設我們有一個質數p,而q 是p-1 的因數,那麼則會存在一個Zp*的子群稱之為Gq,在Gq中的成員互相 做運算後,仍然會落在Gq這個子群中。小型子群限制(Small subgroup confinement)就是利用這一點來攻擊公開金鑰系統。接下來我們以SPEKE
Alice Choose x KA=gxy’ mod p
Attacker
(1) gx (2) gx’ Bob
Choose x’ Choose y
KA=gxy’ mod p
(4) gy’ (3) gy
KB=gx’y mod p Choose y’
KB=gx’y mod p
來說明如何進行這樣的攻擊。
16
-攻擊者攻擊的方式是中間人攻擊法的一種變化,攻擊者位於Alice與 Bob之間,之後攔截Alice要傳送給Bob的πx mod p,並且修改為(πx)q mod p 傳送給Bob,接著同樣地將Bob要傳送給Alice的πy mod p修改為(πy)q mod p,
-攻擊者攻擊的方式是中間人攻擊法的一種變化,攻擊者位於Alice與 Bob之間,之後攔截Alice要傳送給Bob的πx mod p,並且修改為(πx)q mod p 傳送給Bob,接著同樣地將Bob要傳送給Alice的πy mod p修改為(πy)q mod p,