區塊鏈入門 | 一次性密碼本(One Time Pad )是什麼?
密碼學中有一種加密方法叫做 One Time Pad ,翻譯過來叫做“一次性密碼本”。因為這種密碼最早就是真的寫在一個本子上傳遞的,所以有了這個名字。這是一種安全度最高的加密方法,需要通訊雙方事先去溝通一個一次性的和被加密資訊長度相等或者更長的祕鑰。
什麼是 One Time Pad
先來仔細看看什麼是 One Time Pad 。
使用凱撒密文進行加密的時候,我們把資訊的每一個字母都按照字母表移動相同的位數。移位數量可以取1到26的任意一個數。比如,我們想加密的資訊是 ALICE ,這樣其實總的密文的可能性也沒有多少種,所以可以很容易用暴力搜尋的形式找到資訊。
但是使用 One Time Pad 的時候,每一個字母移動的位數是不同的,每一個字母的取值就有26種可能,這樣可能生成的密文種類就是26的五次方,有一千多萬種可能。這幾個移動的位陣列成的字串,就是本次加密的祕鑰,長度是跟密文一致的,或者說,它就是一個 One Time Pad 。
可以看到 One Time Pad 是非常安全的。
處理二進位制資訊
但是在網際網路時代,人們看待資訊不再是以字母為單位了,而是用0和1。下面看看如何用 One Time Pad 處理二進位制形式的資訊。
具體步驟是這樣的。有一個若干二進位制位的資訊,我們需要一個跟它長度一樣的祕鑰。加密的時候,我們會認為資訊就是一連串的二進位制數,祕鑰也是。加密的結果--密文,也是一樣的,每一位都是對應的資訊位和對應的祕鑰位進行異或運算得到的結果。
異或是一種常見的邏輯運算。
侷限性
One Time Pad 雖然是最強的加密方法,但是也有自己的侷限性。
使用 One Time Pad 有兩個最佳實踐。第一,一個 One Time Pad 只用一次。第二,每個 One Time Pad 中的資料要保證真正的隨機。
這意味著真正使用的時候,每次加密都需要重新生成並且再次釋出給通訊雙方。網際網路是一個不安全的環境,安全的釋出 One Time Pad 其實是非常困難的,這就使得在很多的應用情形下是不能使用 One Time Pad 的。
總結
最後總結一下,One Time Pad 是一種最強的加密方式。通訊雙方需要事先共享一個一次性的,和資訊長度相同或者更長的祕鑰。
Ref:
https://www.youtube.com/watch?v=vEbaF1jmbcM https://www.khanacademy.org/computing/computer-science/cryptography/crypt/v/one-time-pad https://www.youtube.com/watch?v=Un8_7eIJcfU