對於互聯網上的所有敏感活動而言,都必須運用密碼學。服務器通信必須像數據存儲一樣安全。

密碼學(一種機密通信科學)可以解決此難題。“密碼學”一詞的語源來自希臘語中的“crypto”,它表示“隱藏”或“機密”,而“Graphy”表示繪製、編寫或描述的方法或形式。

隨着網上投注和互聯網安全需求的增加,密碼學已變成一項多方面的學科。使用加密法作爲對內容進行加密的方法或算法只是密碼學的一項功能。除此之外,加密法必須能夠抵禦竊聽者、所選純文本攻擊和所選密文攻擊並確保以下任意項:

機密性:定義爲保持機密的意向。

完整性:一種確認無數據損壞的方法。

身份驗證:一種證明您與之通信的設備所聲稱的內容屬實且不是第三方攻擊程序的方法。

授權:對執行操作所需的權限的適當分配。

現代密碼學在第二次世界大戰後發展起來。1949 年,Claude Shannon 對理論安全背後的信息進行了概念化。他的基本理念是:密文應不揭露任何有關純文本的信息。在數學中,通過此方式編寫密文:

Shannon 實施的完全保密

∀ 消息 m0 和 m1 ϵ M (所有消息的空白),例如 length(m0) = length(m1) 和 ∀ c ϵ C (所有密文的空白)

Pr[E(k, m0) = c] = Pr[E(k,m1) = c]

其中,k 在 K (所有密鑰的空間)中是一致的

換句話說,在提供密文的情況下,攻擊者無法告知加密的消息是針對所有可能的 m0 和 m1 消息的 m0 或 m1,因此,甚至最強有力的對手也無法從密文中獲得任何有關純文本的信息,從而無法發起密文攻擊。

在我們的數字世界裏,密碼技術是通過計算機實施的。XOR 邏輯函數是加密算法的基本構建塊,這是因爲它具有一個由以下定理表示的重要性質:

如果 Y 是 {0,1}n 上的隨機變量,而 X 是 {0,1}n 上的獨立一致變量,則 Z = Y XOR X 爲 {0,1}n 上的一致變量

這將阻止頻率分析(它是 20 世紀中期之前所使用的方法的缺點)。

一次性密鑰算法

一次性密鑰 (OTP) 是一種算法,它採用消息 m 和密鑰 k (m 和 k 的長度相同)以及 XOR m 和 k。由於 k 是一致變量,因此 Z 也是一致變量,並且竊聽者無法執行任何密文攻擊。遺憾的是,要實施完全保密,密鑰必須長於消息 (|K| > |M|),這在實踐中幾乎是不可能的。的確,如果我們獲得兩條具有相同密鑰 k 的加密消息,則對這兩條密文進行 XOR 處理將生成 m1 XOR m2,,並且對此結果進行簡單統計分析可發現大量有關純文本的信息。

要使 OTP 切實可行,可將隨機密鑰替換爲“僞隨機”密鑰,並理解:即便獲知所有之前生成的密鑰,發現新密鑰的可能性也微乎其微 (≤1/280)。 此外,不討論用於描述 Shannon 的完全保密的完全均等,假定我們在 2 個密文具有不能區分的分佈的情況下擁有語義安全性,我們將再次談論概率。密鑰生成是實現良好安全性的基礎。WEP 協議表明,密鑰中的錯誤選擇會降低安全性。

WEP 是不安全的,因爲 IV (初始化向量)的長度爲 24 位,這意味着約每 1600 萬幀使用一次相同的密鑰。此外,密鑰也是相關的;幀 1 的密鑰爲 1||k,幀 #2 的密鑰爲 2||k。此外,IV 會在重啓後重置爲 0,使得攻擊者能夠在僅 40,000 個幀後恢復密鑰,這在如今的環境中是絕對不安全的。要彌補這個缺陷,在網絡流量中,必須爲每個會話商定一個新的密鑰。在現代流密碼中,種子 + 隨機數(給定密鑰的非重複值)用於生成密鑰,並且絕不會使用對(種子,隨機數)一次以上。這些流密碼中最有名的是 RC4、Salsa 或 Sosemanuk。

請記住,OTP 非常適用於網絡中的通信,但不是很適合數據存儲。的確,OTP 不具有完整性,因爲它是可變的 – 這意味着,對密文的修改是檢測不到的並會對純文本產生可預測的影響。

塊密碼

塊密碼是另一種加密方法。雖然塊密碼實施起來比流密碼更復雜且更慢,但它更可靠並且能夠解決流密碼遺留的難題。與流密碼不同,塊密碼是一個包含 n 位的固定塊,經過打亂重組後創建 n 位的密文。如果消息少於 n 位,則需要填補消息以達到 n 位。AES 和 RSA 是最常見的塊密碼加密。

對於塊密碼,提供以下 2 種操作模式:CBC (密碼塊鏈接)模式和 CTR (計數器)模式。每種模式均需要一個 IV (初始向量)才能開始加密,但隨後的實現會有差異。與採用並行實現的 CTR 模式不同,CBC 模式採用串行實現。

此處採用 CBC 模式進行加密:選擇一個隨機 IV,然後每個塊的輸出將用於加密下一個塊。

此處採用 CTR 模式進行加密:F 爲僞隨機函數,IV 對於每條消息都是隨機的,而對於每個塊是遞增的。F 可並行應用於每個塊。

所有這些方法都能有效防止竊聽者並確保機密性,但任何方法都不能確保完整性、身份驗證和抵禦主動攻擊。

消息認證碼

消息完整性基於 MAC (消息認證碼)。標記基於消息 m 和密鑰 k 而生成。接收方在收到消息後可執行驗證標記,其中輸出爲“是”或“否”。MAC 計算使用 PRF (僞隨機函數),因此攻擊者無法爲新消息生成有效的標記。完整性需要密鑰,但不要與 CRC (循環冗餘碼)混淆,後者旨在檢測隨機的、非惡意錯誤。

流密碼和塊密碼可構建機密性(換言之,它們可有效防止竊取,但無法有效防止主動攻擊),而 MAC 可確保完整性而非機密性。但如果對密文執行 MAC,則將以認證加密結束。攻擊者無法創建已正確解密的新密文。隨後可執行完整性、身份驗證和授權。

所有這些方法對發送方和接收方使用相同的密鑰,並且被稱爲“對稱加密”。我們假定在通信開始前已交換密鑰,但在當今靠互聯網連通的世界裏,許多人必須在互不相識的情況下交換數據,因而無法先交換密鑰。非對稱加密是解決此問題的方法。Diffie-Hellman 協議可幫助解釋:

如果 p 是一個較大的質數,g 是一個整數 {1,…,p} and x is chosen randomly in {1,…, p-1},並且已知道結果,但沒有計算 x 的已知有效算法。然後,使用 x 和 y 這兩個數字,可很輕鬆地執行指數運算來以一個密鑰結束,但很難進行逆運算以發現密鑰。

g^(x^y ) (mod p)=g^(y^x ) (mod p)= g^xy (mod p) = 用於加密的密鑰

如果 Alice 和 Bob 需要共享該密鑰,並且他們之間存在一個竊聽者,則可執行以下步驟來共享該密鑰。

還有多個 Diffie-Hellman 變量,例如橢圓曲線的分解式,形式爲:y² = x³ + ax + b。

最後,儘管做出了所有這些努力,仍無法確保安全通信。Shannon 定理從學理的角度論證了完全安全,但實際上來說,旁路攻擊是非常強大的。舉例來說,2013 年發生了一次絕佳的旁路攻擊,那時,研究人員通過在解密 4096 位 RSA 算法的同時偵聽計算機 CPU 發出的尖音(10 至 150 kHz)來破解了世界上最難的加密。Daniel Genlin、Adi Shamir 和 Eran Tromer 那時已能夠使用這種未知的類型製作解密密鑰,這是完全無法預想到的。