3000字,看懂密碼學(xué)的底層原理(lǐ)
一、密碼學(xué)的定義
适用(yòng)對象:
經典密碼學(xué):軍事組織和政府。
現代密碼學(xué):everywhere。
《簡明牛津英語詞典》:編碼或破譯密碼的藝術。(不夠完善準确)
現在密碼學(xué):對保護數字信息、系統和分(fēn)布式計算免受敵方攻擊的數學(xué)技(jì )術的研究。
其演變過程可(kě)表示如下:
二、對稱加密簡述
在密碼學(xué)中(zhōng),我們将加密方案分(fēn)為(wèi)private-key (symmetric) encryption和public-key (asymmetric) encryption。
在private-key encryption中(zhōng),當通信雙方想要秘密通信的時候,提前交換一個key。其中(zhōng)一方可(kě)以使用(yòng)這個key來加密一條消息,或者叫明文(wén) (plaintext),然後發送給另一方。因此可(kě)以說,其中(zhōng)一方将一個密文(wén)ciphertext發送給了另一方。接收者使用(yòng)key解密這個密文(wén),得到了原始消息。這裏的key都是相同的,并且用(yòng)于明文(wén)和密文(wén)之間的轉換。這也是為(wèi)什麽人們将之稱為(wèi)symmetric encryption。然而asymmetric encryption與之相反,其加密和解密使用(yòng)的是不同的key。
三、加密語法
Gen:密鑰生成算法
Enc:加密算法
所有(yǒu)由Gen生成的密鑰k組成了一個密鑰空間,記為(wèi)K。由Dec生成的密文(wén)c 組成了一個明文(wén)空間,記為(wèi)C。
對稱加密流程:運行Gen來生成密鑰k,當一方想要發送明文(wén)消息m給另一方時,
然後在公(gōng)開信道中(zhōng)将密文(wén)c發送給對方。
計算m : = Deck(c)來得到原始消息。
“ := ”表示确定性等式,假設此處的Enc是确定性的,Enc是概率性的算法
四、Kerckhoffs原則
“加密方案沒有(yǒu)必要保密,它可(kě)以被敵人輕易獲得。”
理(lǐ)由:
2. 如果誠實方共享的秘密信息被洩漏,更換密鑰比更換加密方案容易得多(duō)。此外,生成一個新(xīn)的随機密鑰是相對簡單的,而設計一個新(xīn)的加密方案則是一個巨大的工(gōng)程。
3. 在廣泛部署加密方案之前,鼓勵公(gōng)衆對該方案進行審查以檢查可(kě)能(néng)存在的弱點,這是一個顯著的好處。進一步地,标準化加密方案可(kě)以确保不同用(yòng)戶之間的兼容性,公(gōng)衆将使用(yòng)經過公(gōng)開審查的強大的加密方案。這更加令人信服。
五、經典加密方案
以下介紹的加密方案均已被破解,是不安(ān)全的,但是其思想值得學(xué)習。
1. 凱撒加密(Caesar’s cipher)
凱撒加密是最古老的加密方案之一,它将字母表中(zhōng)的字母向右移動3個位置進行加密。即,a加密為(wèi)D,b加密為(wèi)E,以此類推。當移動到字母表的末尾時,回到字母表的開頭,循環移位。該方案沒有(yǒu)密鑰,且加密方法是固定的。因此任何人可(kě)以通過學(xué)習凱撒加密的加密方法來輕易的破解密文(wén)。其變體(tǐ)ROT-13依然被各種在線(xiàn)論壇使用(yòng)。我們可(kě)以從中(zhōng)發現,它們均沒有(yǒu)提供任何的密碼學(xué)安(ān)全性,它們僅僅是使得消息是令人難以理(lǐ)解的,除非消息的讀者有(yǒu)意識地決定解密它。
2. 移位加密
移位加密可(kě)以視為(wèi)凱撒加密的一種密鑰變體(tǐ)。在移位加密中(zhōng),密鑰k是一個介于0到25之間的數字,在凱撒加密中(zhōng),字母移動3個位置,而在移位加密中(zhōng),字母移動k個位置。其算法可(kě)概括如下:明文(wén)空間M由任意長(cháng)度的英文(wén)字母字符串組成,其中(zhōng)去掉了标點、空格和數字,并且大小(xiǎo)寫沒有(yǒu)區(qū)别。Gen輸出一個均勻一緻的密鑰k ∈ { 0 , . . . , 25 } ,算法Enc将一個密鑰k和一個明文(wén)作(zuò)為(wèi)輸入,然後将明文(wén)的每個字母向前移動k個位置,算法Dec将一個密鑰k和一個密文(wén)作(zuò)為(wèi)輸入,然後将将密文(wén)中(zhōng)的每個字母向後移k個位置。
在不知道密鑰k的情況下,破解密文(wén)也是相當容易的。因為(wèi)它隻有(yǒu)26個可(kě)能(néng)的密鑰,攻擊者隻需要用(yòng)這些可(kě)能(néng)的密鑰去解密密文(wén)即可(kě),故可(kě)得到26種可(kě)能(néng)的候選明文(wén),正确的明文(wén)就在這26種之中(zhōng)。此外,如果密文(wén)“足夠長(cháng)”,那麽正确的明文(wén)很(hěn)可(kě)能(néng)是列表中(zhōng)唯一“有(yǒu)意義”的候選明文(wén)。(這在大多(duō)數時候是正确的)
這種嘗試每一個可(kě)能(néng)的密鑰的攻擊被稱為(wèi)蠻力 (brute-force) 或窮舉 (exhausient-search) 攻擊。故如果加密方案要保證安(ān)全,就不能(néng)輕易受到這種攻擊,這個觀察被稱為(wèi)充分(fēn)密鑰空間原理(lǐ):任何安(ān)全的加密方案必須要有(yǒu)足夠大的密鑰空間來抵抗窮舉搜索攻擊。為(wèi)了防止這種攻擊,密鑰空間必須非常大,例如,至少280 ,在很(hěn)多(duō)情況下甚至更大。
充分(fēn)密鑰空間原理(lǐ)給加密方案的安(ān)全性提供了必要條件,但不是充分(fēn)條件。
3. 單字母替換加密
在“移位加密”中(zhōng),明文(wén)到密文(wén)的映射是一個由密鑰決定的固定的移位,而在單字母替換加密中(zhōng),允許映射是任意的,隻受一對一的約束。密鑰空間包含字母表的所有(yǒu)雙射或置換。如下圖:

圖中(zhōng)的a映射到X,等等。
從該加密方案的名(míng)稱上能(néng)夠了解到這樣一個事實:密鑰定義了明文(wén)中(zhōng)單個字符的(固定)替換。假設使用(yòng)的是26英文(wén)字母表,那麽,密鑰空間的大小(xiǎo)可(kě)計算為(wèi):26! = 26·25·24···2·1,大約為(wèi)288 ,蠻力攻擊是不可(kě)行的。
單字母替代加密可(kě)以利用(yòng)英語語言的統計特性進行攻擊。由于每一個字母的映射都是固定的,所以,如果得知e映射為(wèi)D,那麽,其餘的e都映射為(wèi)D。英文(wén)字母的概率分(fēn)布如下圖所示:
4. 維吉尼亞加密
可(kě)以使用(yòng)統計攻擊來破解“單字母替代加密”,因為(wèi)它的密鑰定義了一個固定的映射,該映射逐字應用(yòng)于明文(wén)。在“多(duō)字母替代加密”中(zhōng),該攻擊無效,它的密鑰定義了應用(yòng)于明文(wén)字符塊的映射。多(duō)字母替代加密“平滑”了密文(wén)中(zhōng)字符的頻率分(fēn)布,使其更難進行統計分(fēn)析。維吉尼亞加密就是多(duō)字母替代加密的一種,可(kě)以看作(zuò)是将移位密碼的不同實例應用(yòng)于明文(wén)的不同部分(fēn)。如下圖所示,它的密鑰是一個字符串。加密是通過按密鑰的下一個字符表示的數量移動每個明文(wén)字符來完成的,必要時在密鑰中(zhōng)環繞。
六、現代密碼學(xué)的原則
· 原則二:精(jīng)确的假設:事實證明,大多(duō)數密碼證明依賴于關于某些數學(xué)問題的算法難度的目前未被證明的假設
· 原則三:安(ān)全性證明:任何這樣的假設都必須明确并精(jīng)确地陳述。
安(ān)全的加密方案應該保證:不管攻擊者已經擁有(yǒu)什麽信息,密文(wén)都不應該洩露關于底層明文(wén)的額外信息。
威脅模型(按強度增加的順序):
1. 唯密文(wén)攻擊(Ciphertext-only attack):敵手隻觀察一個密文(wén)(或多(duō)個密文(wén)),并試圖确定關于底層明文(wén)(或多(duō)個明文(wén))的信息。
2. 已知明文(wén)攻擊(Known-plaintext attack):在這裏,對手能(néng)夠學(xué)習使用(yòng)某個密鑰生成的一個或多(duō)個明文(wén)/密文(wén)對。然後,對手的目标是推斷使用(yòng)相同密鑰産(chǎn)生的其他(tā)密文(wén)的基礎明文(wén)的信息。
3. 選擇明文(wén)攻擊(Chosen-plaintext attack):在這種攻擊中(zhōng),對手可(kě)以獲得如上所述的明文(wén)/密文(wén)對,用(yòng)于其選擇的明文(wén)。
4. 選擇密文(wén)攻擊(Chosen-ciphertext attack):攻擊者能(néng)夠額外獲得其選擇的密文(wén)的解密(一些信息),例如,解密攻擊者選擇的一些密文(wén)是否會産(chǎn)生有(yǒu)效的消息。同樣,對手的目标是了解使用(yòng)相同密鑰生成的其他(tā)密文(wén)(對手無法直接獲得其解密)的底層明文(wén)信息。
(來源:賽迪密碼信息安(ān)全)