本文首發(fā)于 2017-10-30 13:23 原地址:http://www.blockchainbrother.com/article/81
此次和大家談一談密碼分析提揍。區(qū)塊鏈技術(shù)當(dāng)中一個(gè)很重要的組成部分就是密碼學(xué)代乃,作為從事區(qū)塊鏈研究的工程技術(shù)人員,應(yīng)該對(duì)密碼學(xué)有一定的了解。現(xiàn)我想分享一些密碼學(xué)的基本概念以供交流學(xué)習(xí),大家共同學(xué)習(xí),更加充實(shí)對(duì)區(qū)塊鏈技術(shù)的理解
密碼分析
密碼編碼學(xué)的主要目的是保持明文(或者是密鑰)的秘密并防止竊聽者(也可以叫對(duì)手赛惩、攻擊者、截取者趁餐、入侵者喷兼、敵人等)知曉。這里假設(shè)竊聽者完全能夠截獲發(fā)送者和接收者之間的通信后雷。
密碼分析學(xué)是在不知道密鑰的情況下季惯,恢復(fù)明文的科學(xué)。成功的密碼分析可以恢復(fù)消息的明文或者密鑰臀突。與此同時(shí)勉抓,密碼分析也可以驗(yàn)證出密碼體制的弱點(diǎn),并最終恢復(fù)明文或者密鑰候学。
注:密鑰通過(guò)非密碼分析方式的丟失叫做泄露(compromise)藕筋。
對(duì)密碼進(jìn)行分析的嘗試稱為攻擊(attack)。A.Kerckhoffs 早在19世紀(jì)就闡明了密碼分析的一個(gè)基本假設(shè)梳码,此假設(shè)就是秘密必須全寓于密鑰中隐圾。Kerckhoffs假設(shè)密碼分析者已知密碼算法以及其實(shí)現(xiàn)的全部資料。雖然在實(shí)際的密碼分析中并不總是擁有如此詳細(xì)的信息掰茶,但理應(yīng)如此假設(shè)暇藏。這樣如果不能破譯算法,那么即便了解算法是如何工作的也是徒然符匾。當(dāng)然叨咖,如果連算法的知識(shí)和相關(guān)資料都沒(méi)有,那就肯定無(wú)法破譯啊胶。
現(xiàn)我列出常用的四類密碼分析攻擊甸各,在此假設(shè)每一類密碼分析者都知道所用的加密算法的全部知識(shí)。
1)唯密文攻擊(ciphertext-only attack)焰坪。密碼分析者有一些消息的密文趣倾,這些消息都用相同的加密算法進(jìn)行加密。密碼分析者的任務(wù)就是恢復(fù)盡可能多的明文某饰,或者最好能推算出加密消息的密鑰儒恋,以便可采用相同的密鑰破解其他被加密的消息。
已知:
...
推導(dǎo)出:或者找出一個(gè)算法從
推導(dǎo)出
2)已知明文攻擊(known-plaintext attack)黔漂。密碼分析者不僅可得到一些消息的密文诫尽,而且也知道這些消息的明文。分析者的任務(wù)就是用加密信息推出用來(lái)加密的密鑰或?qū)С鲆粋€(gè)算法炬守,此算法可以對(duì)用相同密鑰加密的任何新消息進(jìn)行解密牧嫉。
已知:推導(dǎo)出,密鑰K,或者從推導(dǎo)出的算法酣藻。
3)選擇明文攻擊(chosen-plaintext attack)曹洽。分析者不僅可以得到一些消息的密文和相同的明文,而且還可以選擇被加密的明文辽剧。這比已知明文攻擊更加有效送淆,因?yàn)槊艽a分析者能選擇特定的明文塊進(jìn)行加密,那些塊可能產(chǎn)生更多關(guān)于密鑰的信息怕轿。分析者的任務(wù)就是推導(dǎo)出用來(lái)加密消息的密鑰或?qū)С鲆粋€(gè)算法偷崩,此算法可以對(duì)用相同密鑰加密的任何新消息進(jìn)行解密。
已知:其中可以由密碼分析者選擇撤卢。
推導(dǎo)出:密鑰K环凿,或者從推導(dǎo)出的算法梧兼。
4)自適應(yīng)選擇明文攻擊(adaptive-chosen-plaintext attack)放吩。這是選擇明文攻擊的特殊情況。密碼分析者不僅能夠選擇被加密的明文羽杰,還可以基于以前加密的結(jié)果修正這個(gè)選擇渡紫。在選擇明文攻擊中,密碼分析者還可以選擇一大塊被加密的明文考赛。而在自適應(yīng)選擇明文攻擊中惕澎,可以選擇較小的明文塊,然后再基于第一塊的結(jié)果選擇另一個(gè)明文塊颜骤,以此類推唧喉。
除了以上介紹的4類密碼分析攻擊,還有至少三類其它的密碼分析攻擊忍抽。接上文排序如下:
5)選擇密文攻擊(chosen-ciphertext attack)八孝。密碼分析者能選擇不同的被加密的密文,并可得到對(duì)應(yīng)的解密的明文鸠项。例如干跛,密碼分析者訪問(wèn)一個(gè)防篡改的自動(dòng)解密盒,密碼分析者的任務(wù)就是推導(dǎo)出密鑰祟绊。
已知:推導(dǎo)出:K楼入。
這種攻擊主要用于公開密鑰算法。選擇密文攻擊有時(shí)也可以有效的用于對(duì)稱算法牧抽。
注:有時(shí)選擇明文攻擊和選擇密文攻擊一起稱為選擇文本攻擊(chosen-text attack)嘉熊。
6)選擇密鑰攻擊(chosen-key attack)。這種攻擊并不表示密碼分析者能夠選擇密鑰扬舒,其只是表示密碼分析者具有不同密鑰之間關(guān)系的有關(guān)知識(shí)阐肤。
此種方法比較晦澀和奇特,并不是很實(shí)際呼巴。
7)軟磨硬泡攻擊(rubber-hose cryptanalysis)泽腮。密碼分析者威脅御蒲、勒索,或者通過(guò)折磨某人诊赊,直到其給出密鑰為止厚满。
通過(guò)行賄獲取密鑰的方法,有時(shí)稱為購(gòu)買密鑰攻擊(purchase-key attack)碧磅。這些是非常有效的攻擊碘箍,并經(jīng)常是破譯算法的最便捷途徑。
于中陽(yáng) Mercina-zy