數(shù)據(jù)安全大講堂 證密碼持久到100年堅不可摧
以下的文章主要向大家描述的是數(shù)據(jù)安全之保證密碼持久到100年堅不可摧的秘訣,即使你的密碼從為被破解過,在沒有密鑰的情況下,我們將永遠需要相同的CPU平均時鐘周期數(shù)來解密某一指定密碼加密的東西;
任何密碼無論它在鼎盛時期多么強大,最終都會成為脆弱的密碼,這似乎是不言而喻的。當(dāng)人們使用目前相當(dāng)強大的密碼時,他們擔(dān)心最終也會有人能夠?qū)⑺平?mdash;—在不知道密鑰的情況下,通過找到一條捷徑大大減小暴力破解所需要的時間。
即使密碼從沒被破解過,在沒有密鑰的情況下,我們將永遠需要相同的CPU平均時鐘周期數(shù)來解密某一指定密碼加密的東西;與幾個月前相比,幾個月后要想破解同樣的東西需要時間會少一些。這是因為計算機至始至終都在變得更快,這允許我們把相同數(shù)目的時鐘周期壓縮在更短的時間內(nèi)。
更加復(fù)雜和巧妙的加密算法設(shè)計,使得暴力破解的方法越來越困難,并且將取代已經(jīng)被破解了的、或者說即將過時的老舊算法。這就像是一場持久的軍備競賽——保護隱私與企圖滲透隱私行為之間的對抗。
雖然幾乎所有被破解或者過時的密碼都被歷史所淘汰,但有一種密碼卻經(jīng)受住了93年的時間,這就是一次性密碼。1917年,Gilbert Vernam發(fā)明了維爾南(Vernam)密碼,該密碼使用了紙帶作為密鑰的電傳(teletype)技術(shù)來加密和解密數(shù)據(jù),隨之誕生了一種在當(dāng)時相當(dāng)強大的對稱密碼。
美國陸軍上尉Joseph Mauborgne意識到,使用真正隨機的密鑰,即密鑰沒有一部分是重復(fù)的(除了有時隨機出現(xiàn)相同的情況),維爾南密碼能夠變得更加強大。受紙帶密鑰的啟發(fā),一種每頁紙上的一列隨機字母或數(shù)據(jù)作為記錄密鑰的便箋(pad of paper)被發(fā)展起來。
兩份相同的便箋分發(fā)給兩個人,每頁紙上的每個字符只使用一次(當(dāng)***一個字符被用來加密或解密信息后,該頁紙就被毀掉),他們傳遞信息時不用擔(dān)心被截獲后的信息在沒有密鑰的情況下被破解。因為這項在便箋紙上分發(fā)密鑰流數(shù)據(jù)的技術(shù),人們又這種密碼稱為一次性便箋加密。
信息理論之父Claude Shannon從數(shù)學(xué)上證明了一次性加密算法在正確使用時是不可破解的——正確的使用包括毀掉含有已用密鑰數(shù)據(jù)的頁面,以便它不再被利用,這樣即使有人獲得了便箋中已用的頁面,也不能解密任何未授權(quán)的信息拷貝。密鑰管理可以使用相同的數(shù)字化概念,但附加條件是人們使用時必須非常小心,以避免計算機固有的弱點給一次性密鑰系統(tǒng)帶來缺陷。例如,代價高昂的數(shù)據(jù)恢復(fù)也許能夠重建已經(jīng)刪除的數(shù)據(jù),包括一次性密鑰數(shù)據(jù)。 當(dāng)簡單的刪除仍不夠可靠時,盡管有辦法可以用來對這些數(shù)據(jù)進行模糊化處理,但也一定要謹慎。
一次性加密算法有時會非常麻煩,這是它為什么沒有被廣泛使用的原因。由于這種不便性,我們實際需要的是在理論上稍弱一些的密碼,也可以說它是一種更聰明的密碼,比如AES/Rijndael和Twofish加密算法。
由于一次性密碼是對稱密碼,雙方必須使用完全相同的密鑰數(shù)據(jù)來加密通信。對于某些加密用例,使用一次性加密完全沒有意義,因為如果雙方要能夠數(shù)據(jù)安全的交換密鑰以擁有它,他們必然有共享數(shù)據(jù)的安全方法,這種方法也可以用來共享最終的信息本身。
只有在你不知道將會發(fā)送什么信息的情況下,或者當(dāng)你們在將來的某個時候不能找到任何安全的方法來交換密鑰數(shù)據(jù)時,一次性加密才會派上用場。
一次性加密密鑰必須同它所加密或解密的信息一樣長。因此,當(dāng)你想要加密或者解密一個3 G字節(jié)的文件時,你還需要一個大小為3G字節(jié)的一次性加密密鑰。
同樣的一次性加密數(shù)據(jù)不能在多于兩人時被安全共享。比如,不同的信息將要在擁有同一密鑰的某些接收者之間發(fā)送時,有些數(shù)據(jù)對于其它接收者是不可讀的,在它們之間使用相同的一次性加密會破壞密碼的安全性。
相比之下,你可以使用非對稱密碼為多個人提供一個相同的公鑰,他們將能夠使用相同的公鑰來給你的信息加密,而不用擔(dān)心其它擁有公鑰的人能讀到它——只要該加密算法不被破解,并且計算機技術(shù)目前的發(fā)展水平還沒有先進到可以合理的暴力破解信息。這是因為對于公鑰加密的數(shù)據(jù),只有對應(yīng)的私鑰才能解開。
重復(fù)使用密鑰潛在的破壞了一次性密碼的數(shù)據(jù)安全性,因為它面臨著一個已知明文的漏洞。Kerckhoff準則說到,當(dāng)密鑰仍然保密時,一個密碼體系就是安全的,但是如果同時知道某個指定信息的加密和未加密版本,一次性密碼的密鑰就能夠被破解。
如果一串密鑰數(shù)據(jù)只被使用一次,這也不是什么問題,因為如果連明文被破解者獲取,加密強度再大也是徒勞的。如果一個密鑰被重復(fù)使用,一段信息的明文就能夠作為獲得密鑰的工具,而該密鑰可以用來解密其它信息。我們可以從中獲得的教訓(xùn)是:不要重復(fù)使用一次性密碼。這也正是它被稱之為“一次性”密碼的原因。
當(dāng)一次性密鑰用盡以后,你不能再安全的重復(fù)發(fā)送信息——使用相同的密碼加密——除非你能夠數(shù)據(jù)安全的交換新的隨機密鑰數(shù)據(jù)。當(dāng)你試圖與世界另一頭的某個人通信時,這種情況將會讓你的處境顯得很窘迫。
如果在某些情況下使用一次性加密不太現(xiàn)實,你可以使用其它的加密方法,而你也應(yīng)該意識到其它在理論上加密強度稍弱的密碼仍然有它的用武之地。
一次性加密的工作原理看起來很簡單。它只涉及到兩個基準值(datum)的比較,比如兩個字母或者數(shù)字,然后通過比較產(chǎn)生新的基準值。你對加密的信息中每個基準值都要這么做。實現(xiàn)比較的過程既簡單又容易,一次產(chǎn)生一個基準值,而且計算的成本相對較低。一個簡單的XOR(異或)操作符就能夠用來實現(xiàn)這種比較。在它最簡單的形式下,XOR操作符可以像這樣應(yīng)用到二進制數(shù)字的操作中:
首先,你需要一段信息。讓我們使用單詞”short”來作為我們的信息。它確實也很短。接下來,你將該信息翻譯成二進制形式。用ASCII編碼來翻譯”short”,你最終會得到如下的0、1字符串:
0111001101101000011011110111001001110100
你還需要一個與信息等長的密鑰。這里,我們將這個0和1組成的字符串作為我們的密鑰:
0110010101101010001110010010011101100100
***,因為你使用的是XOR操作符,基本上你只需要做簡單的減法。兩個字符串的***個字符都為0, 可以看到0-0=0. 類似的, 兩個字符串的第二個字符都為1,得1-1=0。當(dāng)一個字符為1, 一個為0時,可以得到一個1或者-1。如果對結(jié)果取絕對值,這意味著兩個都得到結(jié)果1。因此,減法運算和取絕對值提供了如下結(jié)果:
0111001101101000011011110111001001110100
0110010101101010001110010010011101100100
0001011000000010010101100101010100010000
首先,你需要一段信息。讓我們使用單詞”short”來作為我們的信息。它確實也很短。接下來,你將該信息翻譯成二進制形式。用ASCII編碼來翻譯”short”,你最終會得到如下的0、1字符串:
0111001101101000011011110111001001110100
你還需要一個與信息等長的密鑰。這里,我們將這個0和1組成的字符串作為我們的密鑰:
0110010101101010001110010010011101100100
***,因為你使用的是XOR操作符,基本上你只需要做簡單的減法。兩個字符串的***個字符都為0, 可以看到0-0=0. 類似的, 兩個字符串的第二個字符都為1,得1-1=0。當(dāng)一個字符為1, 一個為0時,可以得到一個1或者-1。如果對結(jié)果取絕對值,這意味著兩個都得到結(jié)果1。因此,減法運算和取絕對值提供了如下結(jié)果:
0111001101101000011011110111001001110100
0110010101101010001110010010011101100100
0001011000000010010101100101010100010000
當(dāng)然,在結(jié)果中以0和1 表示的字符串,某些8位二進制組并不存在所對應(yīng)ASCII表示, 因此很難用簡明的方式來表示數(shù)據(jù)。ASCII編碼非常適合電腦使用,但傳統(tǒng)的字母數(shù)字方法實現(xiàn)的一次性加密通過手譯(hand translation)后更適合于模擬信號。
很明顯,一次性加密的核心算法異常簡單。只有在設(shè)計軟件中圍繞該算法的余下部分,以及尋找該密碼的正確用例時,開發(fā)安全可靠的加密軟件才會出現(xiàn)真正的問題。另外,如果要實現(xiàn)加密絕對的數(shù)據(jù)安全,在當(dāng)前我們對數(shù)學(xué)的理解范圍內(nèi),只有一次性加密才能做到這一點,并且只有在正確使用時才無法被破解。
【編輯推薦】
- 信息化時代 數(shù)據(jù)安全七種秘密武器
- 如何保障公共云計算彼端的數(shù)據(jù)安全
- 多省市展開教育信息化進程 數(shù)據(jù)安全成關(guān)注焦點
- 傳統(tǒng)數(shù)據(jù)安全與云安全
- 對無線網(wǎng)絡(luò)數(shù)據(jù)安全的思考