目錄

前言

我們在密碼學中最關注的目標是保護明文在網路上傳輸時,即使所有密文資訊都被攻擊者竊聽走,他們也解不開來,以及無法從獲得的資訊找出跟明文之間的關聯,那麼,我們假設的這個敵人到底會嘗試做什麼呢?他們肯定會嘗試變更密文的內容

而使用密碼學技術其中一個理由就是為了確保資料的完整性,通常我們會預設敵人擁有存取整條通訊網路的權限,而他們擁有的技巧就叫做密碼分析 (Cryptanalysis),這是一門專門為了攻擊密碼機制而誕生的研究領域,舉例來說,攻擊者可以嘗試從密文復原成明文(全部或部分)、替換原本一部分的訊息、偽造數位簽章、從資訊中找出明文的線索、從一組隨機的字串中區分出何為密文的區塊,甚至,找出加密用的那把私鑰

通常我喜歡將密碼學(Cryptography)跟密碼分析(Cryptanalysis)總結歸納成一個更廣泛的領域:密碼理論(Cryptology)

密碼分析的基本概念差不多在十九世紀時由 A. Kerkhoff 所提出,我們更常聽到是所謂的 Kerkhoff’s Principle,這項原則表示我們的攻擊者知道所有關於密碼系統的細節,包括全部的加/解密演算法,甚至連造 key 的方法都清楚,根據這項原則,我們可以想像的是,整套密碼系統的安全性就只源自於 secret keys 的強度了

而當我們想要探討在加密系統上嘗試從密文找回原先的明文時就是在攻擊它的隱私性,我們先從靜態的手法開始,這個攻擊者通常我們在密碼理論研究裡稱它為 Eve (靈感源自 Evil 或者 Eavesdropper?),一開始它不會嘗試變更傳輸的資訊,而是先從監控傳輸端與接收端,以及中間通訊的通道開始

所以 Eve 不只單純攔截到密文而已,而是知道每一次訊息加密跟解密的前後狀態,但它不知道用來做加/解密的這把 key 長怎樣,舉例來說,如果 Eve 是銀行系統的設計人員,它可以看到所有進來的加密資訊,也許還知道相對應的明文,或者觀察到送出的明文以及加密過的密文,更甚者可以根據自己的想法來選擇要加密哪個明文或解密哪個密文

這套想法我們可以轉換成目前在密碼分析攻擊上可能的手法,根據攻擊者擁有多少資源而定,例如攻擊者有多少計算資源?他們可以計算無限的時間嗎?或者說有限的步驟裡就得解出來,不然 key 按照時序都已經換成新的一組了,我們在電腦科學裡的有限常常指的是多項式時間裡

而通常我們會將攻擊者的能力分類成下列的想法中

唯密文攻擊 (Ciphertext-Only Attack, COA)

Eve 有能力取得任意的密文內容,該攻擊手法適用於任何的加密系統情形,雖說是最初階的攻擊手法,但如果一個加密方法沒辦法抵抗這種攻擊,則這個密碼系統是完全不安全的,根本不需要考慮繼續採用

已知明文攻擊 (Known-Plaintext Attack, KPA)

Eve 有能力取得任意的明文密文對,根據這些明文密文對的分析或觀察,它可以拿一組沒見過的密文來嘗試解密成明文看看,也許讀者覺得要取得大量的配對理論上行不通對吧?但這還是有可能發生的,只要攻擊者監聽得夠久並且有經驗的話,有辦法從看到的密文中辨認出訊息的格式,接著回推明文應該要是什麼樣子

選定明文攻擊 (Chosen-Plaintext Attack, CPA)

Eve 有辦法指定明文內容讓加密系統回傳密文,接著它嘗試解密一組它未曾指定過明文的密文,這聽起來也挺玄的對吧?

但如果 Eve 有辦法將一些它感興趣的資訊寄送給某個預期的受害者,並且有把握覺得該受害者會將其加密並且回傳回來,也許是靠一些網路釣魚的方法來達成,但不管如何,Eve 都必須先將任意的明文密文對都看過一次,接下來的操作就不需要再次跟這個受害者進行互動了,只靠自己分析找出新的密文對應回去的明文

要注意的是,在這個攻擊中 Eve 只能請求一次加密裝置,意思是必須把所有想計算的明文都先準備好,然後一併送給密碼系統做加密,這種條件下要讓明文的表現盡可能廣泛,這是為了讓我們在安全性分析時可以評估攻擊者的資源與計算能力,只有一次的機會也代表著上一次跟下一次的加密請求之間毫無關聯,以限制攻擊者每次分析結果都是獨立的,將線索斬斷

自適應選定明文攻擊 (Adaptively-Chosen-Plaintext Attack, ACPA)

該攻擊與上面的選定明文攻擊很類似,差別只在於這個條件下可以讓 Eve 無限次去計算新的明文密文對,這次不再限制只能存取一次,而是想到哪一組配對就送出請求一次,明文密文對之間的線索不會斷開,而且可以只針對幾個 bit 做變更再送出加密一次

能夠長時間的使用加密設備以及不斷地用類似的明文做分析,如果攻擊者擁有這樣的計算資源,代表對於我們設計密碼系統時的壓力會很大

選定 (Chosen-)、自適應選定 (Adaptively-Chosen-) – 密文攻擊(Ciphertext Attack)(CCA1, CCA2)

這兩個密文攻擊都跟明文攻擊很類似,差別只有這個條件主要讓 Eve 挑選密文傳送給解密設備做還原,得到相對應的密文明文對

不知道讀者能不能意會,這數種分類中,從上至下其實是由最弱到最強的條件,越上面代表給攻擊者的能力越少,越下面則是越多,尤其以選定密文這個能力來看,由於我們最終的假設是不讓攻擊者從監聽封包裡雜亂的密文復原成明文,或者說不讓攻擊者可以找出加密的那把私鑰

所以我們盡可能地用數學難題作為加/解密演算法的根基設計,而現今主流的難題能滿足抵抗至少 CCA1 等級的系統,才能聲稱該密碼系統足夠安全,要滿足 CCA2 必須考量硬體計算上耗費的資源跟速度,這在設計密碼系統時常常是 trade-off 的點

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *