3.1 密碼學基本概念
信息加密(information encryption)作為保障消息安全傳遞的一種方式,其歷史相當久遠,可能要追溯到公元前2000年。雖然那個時代的技術與當代不可同日而語,但已具備加密的概念和雛形。例如在暢銷書《失落的密符》中有這樣一系列的情節:追尋寶藏的教授偶然得到一串字母“YUOEMSTDIINHREKY”,但不知何意,束手無策中被線索指引到一幅壁畫前,在不起眼的角落發現了畫中的一個幻方(magic square),于是豁然開朗。
幻方是一種n×n的格子,稱為n階幻方,要求將數字1~n2不重復、不遺漏地填入各個格子,使得每行、每列、每條對角線的數字之和(稱為幻和)都相等。優秀的幻方還能做到四個象限的數字之和也相等,如圖3.1(a)和(b)所示分別為兩名大數學家親自設計的幻方:4階丟勒幻方(Durer's magic square)和8階富蘭克林幻方(Franklin's magic square)。n階幻方的幻和可以計算為)。

圖3.1 幻方示例
于是執著尋寶的教授將16個密文字母按順序填到丟勒幻方中,再對照幻方中對應的數字,按從小到大的次序寫下字母,一句話就出現了:“YOUR MIND IS THE KEY”(你的思想是關鍵),其中KEY(也有鑰匙之意)與Bob的話一樣也是個雙關語。
早期的加密方法只用于字母等文字信息,以手工處理為主,一般采用“置換法”,例如以一定規律打亂字母次序、將字母替換為另一個字母、用數字來表示字母等,這類方法被稱為古典加密法。受限于較弱的密碼分析能力,這些技術在當時還是具有較強的先進性和安全性的。
然而,隨著數據統計能力的提高,各種置換法共同存在的大漏洞逐漸顯示出來,就是無論怎么改頭換面,文章中各字母出現的頻率(即字頻)并沒有改變。因此,破譯者并不需要費勁猜測加密手段,也不需要拼命嘗試,只要有足夠長的密文,就可以根據密文字母的字頻對照圖3.2的數據,推測出各個字母的原形。例如,字母e在英文單詞中很常用,字頻最高;字母t位居次席,且作為首字母的概率遙遙領先,無疑是隨處可見的定冠詞“the”在起作用。雖然恩尼格密碼機將古典加密法推向極致,通過快、中、慢三個轉輪實現字母映射關系為每字母一變,復雜性大增,難以簡單通過字頻來分析,但本質上仍然屬于替換法范疇,很難抵抗窮舉排序等暴力攻擊。

圖3.2 英文字母字頻柱狀圖和首字母字頻折線圖
1946年2月14日,隨著世界上第一臺計算機艾尼阿克(ENIAC)的誕生,密碼分析技術跨入了新階段,曾經威名遠播的Greece、Caesar、Playfair、Vigenere、Vernam、Hill等古典加密法永遠退出了歷史舞臺。同時伴隨著高等數學研究不斷取得新成果,信息加密領域開啟了“數學+電腦”的現代加密法時代,加密技術也升級成為密碼科學。
現代密碼技術幾乎都是針對二進制數據,不論數據是文本、圖片、音頻、視頻還是程序。如圖3.3所示,信息加密的基本原理是:把明文(plaintext)用加密(encryption)方法結合密鑰(key)生成保密的密文(cryptograph或ciphertext),只有使用正確的解密(decryption)方法結合解密密鑰才能成功還原出明文。換句話說,如果運用的解密方法不符,特別是解密密鑰不正確,即使采用高性能計算機,破譯的難度依然極大。
信息加密“五要素”模型是原則性的框架,可以依不同技術而有所變化,例如,加密和解密密鑰可以是不同數值,可以不使用密鑰,也可以不支持解密。需要注意的是,所謂明文并非是“可讀”的代名詞,而只是一次加密過程的輸入或一次解密過程的輸出,已經加密的密文也可以成為另一次加密的“明文”,即加密可以無限迭代、層層嵌套。多次加密的過程是一種棧式運算,后進行的加密應該先作解密。

圖3.3 加密和解密原理圖
現代加密法有三大類技術,如圖3.4所示,包括:對稱密鑰加密、非對稱密鑰加密、單向函數加密。加密技術的合理運用可以產生三方面的作用。
? 保密性:通過改變原始信息的數據構成,使得信息即使遭竊取、截獲、泄露,也難以獲取原始信息,達到保護信息內容安全的目的。
? 完整性:敏銳發現信息內容發生的任何變化,如信息被篡改(或傳輸過程發生誤碼)、偽造,從而保障原始信息的“原封不動”。
? 確權性:鑒別并確定信息的歸屬方,一方面可以用來證明信息的真正擁有者(所有權),另一方面也可用以判定信息來源,防止抵賴。

圖3.4 現代加密法分類
信息加密技術是一把“雙刃劍”,既有防范自己的信息受到侵害的作用,又有投入成本上升、系統復雜性增大、信息傳遞延遲等副作用。同時,加密和破解永遠是“矛尖還是盾固”的關系,一個在明處,一個在暗處,即便采用最先進的信息加密技術,也達不到絕對的安全,安全始終具有相對性。
(1)計算相對性——普通電腦難以破譯的密碼,高性能電腦或許就能輕松攻破,因為難度實際上取決于計算能力;還有可能研究出一種數學方法,可以極大地降低計算工作量。
(2)時間相對性——目前很安全的密碼,隨著時間的推移,安全性會衰減,因為在攻擊者持續不斷地嘗試下,被攻破的概率將逐步上升。
(3)價值相對性——信息的價值越高,受到攻擊的可能性就越大;反之,假如破解成本遠高于信息的價值,那么信息基本就是“高枕無憂”的。
正因為如此,應避免過度運用加密技術,而是應該根據信息對象屬性、應用場景等各種因素來設計合理的保密方案。