• 沒有找到結果。

演算法概念

一開始我們先為一些名詞做定義,如此一來在之後提到我們的方法中看見這 些詞彙時,才能正確無誤的了解他們。這樣也提升了整個方法的嚴謹度,避免產 生誤解。

※參與者 (Participant)

參加一次網路安全協定溝通的所有端點,通常是一位參與者可想成是 就不能被視為一把Key。一般來說常見的atom有User Identity, Nonce, Timestamp, Key。

※攻擊者知識庫 (Intruder's Knowledge)

這是我們設計方法所設計出的獨特名詞,入侵者會將在網路協定中,

他會將所有看過的訊息記憶起來,我們稱他所有記錄的資訊集合為知識庫。

Ex: 當入侵者看到 A→B: Kab, A.

他便會把 Kab 和 A 加到他的 Knowledge 之中。

這裡需要注意的是,如果入侵者的 Knowledge 中擁有 Kab,和 A 代表著,他 Knowledge 也等於擁有擁有{A}Kab, {Kab}A, {Kab, A}Kab…等資訊。

※參與者知識庫 (Participant's knowledge)

和攻擊者的知識庫有點類似,每位參與者都會擁有屬於他自己的紀錄空 間,紀錄一開始他便知道的訊息,和在協定過程中他將產生的元素。不過和 攻擊者知識庫不同的是我們不讓參與者的知識庫進行成長,一直保持初始設 定。主要的功能是用來進行驗證他收到的訊息,有他產生或者認識的部份。

如果沒有額外假設,一開始裡面有的資訊包括: 和所有參與者共用的 Key, 所有參與者 ID,及自己的 Public & Private Key(如果是 public protocol 的話),還有協定過程中會用到的 Nonce 與 Timestamp。

※公開金鑰關聯性 (Public key relation)

指兩個數 X, Y 滿足 : 某數 A 用 X 加密,可以用 Y 解密為 A;用 Y 加密,

可以用 X 解密為 A,則稱 X, Y 有公開金鑰關聯性。

※一個有漏洞的安全協定 (A Flaw Security Protocol)

我們稱一個網路安全協定有漏洞,是當我們可以冒充進行溝通的某一 方,或者是網路安全協定中交換供之後溝通用的金鑰洩漏。

3.2 演算法基本原理與目標

由上面的定義可看出,如果一個網路安全協定有漏洞,那可能造成假冒成 功,或者是溝通的 Key 洩漏。因此我們的方法打算嘗試去攻擊接受我們方法檢驗 的網路安全協定,看是否會產生上面的缺點。

原始的想法很簡單,看以下的 Protocol,假設我們要攻擊 B,也即是我們要 成功冒充成 A 和 B 溝通。

圖 3.1 Neuman Stubblebine Protocol

那我們只要能產生出 Message1, Message4,那就會讓 B 相信我們是和他溝 通的人,這也是網安安全協定攻擊中所謂的: 冒充身分。但是除此之外我們還需 要考慮一個問題,有的網路安全協定有所謂交換之後要溝通使用的 Key,雖然我 們成功的冒充身分,但若是沒有取得 Key,那就像是介於兩個溝通者網路中間傳 送的一個端點而已,雖然冒充了身分,但是沒有 Key,收到了一堆密文也徒勞,

也無法於之後繼續和我們攻擊的目標進行溝通。

經由上面的分析歸納,我們定義出我們所設計的演算法,認定成功的攻擊,

我們可根據過去期刊中所提到的許多網路安全協定,要將之攻破是複雜的,

需要經過累積執行好幾次安全協定才能破解。這也相對增加了我們要設計出一個 自動驗證方法的難度,因此設計的方法要可以自動進行好幾次安全協定溝通嘗試 破解協定,有如人眼觀察法一樣。所以我們在推演法的過程中,當我們試圖製造 訊息,我們會嘗試用各種身分去嘗試進行許多回合的溝通,根據我們觀察整理設 計之後定出來的規則,這樣有助於能偵測出需要許多回合的溝通才會發生的漏 洞。

相關文件