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