什么是One Time Pad加密方式
密碼學(xué)中有一種加密方法叫做 One Time Pad ,翻譯過來叫做“一次性密碼本”。因為這種密碼最早就是真的寫在一個本子上傳遞的,所以有了這個名字。這是一種安全度最高的加密方法,需要通信雙方事先去溝通一個一次性的和被加密信息長度相等或者更長的秘鑰。
什么是 One TIme Pad
先來仔細看看什么是 One TIme Pad 。
使用凱撒密文進行加密的時候,我們把信息的每一個字母都按照字母表移動相同的位數(shù)。移位數(shù)量可以取1到26的任意一個數(shù)。比如,我們想加密的信息是 ALICE ,這樣其實總的密文的可能性也沒有多少種,所以可以很容易用暴力搜索的形式找到信息。
但是使用 One TIme Pad 的時候,每一個字母移動的位數(shù)是不同的,每一個字母的取值就有26種可能,這樣可能生成的密文種類就是26的五次方,有一千多萬種可能。這幾個移動的位數(shù)組成的字符串,就是本次加密的秘鑰,長度是跟密文一致的,或者說,它就是一個 One TIme Pad 。
可以看到 One Time Pad 是非常安全的。
處理二進制信息
但是在互聯(lián)網(wǎng)時代,人們看待信息不再是以字母為單位了,而是用0和1。下面看看如何用 One Time Pad 處理二進制形式的信息。
具體步驟是這樣的。有一個若干二進制位的信息,我們需要一個跟它長度一樣的秘鑰。加密的時候,我們會認為信息就是一連串的二進制數(shù),秘鑰也是。加密的結(jié)果--密文,也是一樣的,每一位都是對應(yīng)的信息位和對應(yīng)的秘鑰位進行異或運算得到的結(jié)果。
異或是一種常見的邏輯運算。
局限性
One Time Pad 雖然是最強的加密方法,但是也有自己的局限性。
使用 One Time Pad 有兩個最佳實踐。第一,一個 One Time Pad 只用一次。第二,每個 One Time Pad 中的數(shù)據(jù)要保證真正的隨機。
這意味著真正使用的時候,每次加密都需要重新生成并且再次發(fā)布給通信雙方?;ヂ?lián)網(wǎng)是一個不安全的環(huán)境,安全的發(fā)布 One Time Pad 其實是非常困難的,這就使得在很多的應(yīng)用情形下是不能使用 One Time Pad 的。
總結(jié)
最后總結(jié)一下,One Time Pad 是一種最強的加密方式。通信雙方需要事先共享一個一次性的,和信息長度相同或者更長的秘鑰。