一次性密碼本
理论上具有完善保密性的密码
一次性密碼本(英語:one-time pad,縮寫為OTP)是古典密碼學中的一種加密演算法。是以隨機的金鑰(key)組成明文,且只使用一次。
安全性
在理論上,此種密碼具有完善保密性,是牢不可破的。它的安全性已由克勞德·艾爾伍德·香農所證明。
雖然它在理論上的安全性無庸置疑,但在實際操作上卻有着以下的問題:
- 用以加密的文字,也就是一次性密碼本,必須確實是隨機產生的。
- 它至少必須和被加密的檔案等長。
- 用以加密的文字只能用一次,且必須對非關係人小心保密,不再使用時,用以加密的文字應當要銷毀,以防重複使用。
加密方法
首先手上要有一本一次性密碼本用以加密檔案,接着將一次性密碼本裏的字母,與被加密檔案的字母給依序按某個事先約定的規定一一相混,其中一個相混的作法是將字母指定數字(如在英語中,將A至Z依序指定為0至25)然後將一次性密碼文字上的字母所代表的數字和被加密檔案上相對應的數字給相加,再除以該語言的字母數後取得其餘數,假設字母數是 n(如英語為26),若就此得出來的某個數字小於零,則將該小於零的數給加上n,如此便完成加密。
舉個例子,若要加密訊息「This is an example」,而用以加密的一次性密碼本如下所示:
MASKL NSFLD FKJPQ
則利用指定數字的方法,可分別將兩者給做以下的轉換:
- This is an example → 19 7 8 18 8 18 0 13 4 23 0 12 15 11 4
- MASKL NSFLD FKJPQ → 12 0 18 10 11 13 18 5 11 3 5 10 9 15 16
兩者依序相加後得到的訊息如下:
- 31 7 26 28 19 31 18 18 15 26 5 22 24 26 20
將以上得到的訊息模26(除以26後取餘數)可得:
- 5 7 0 2 19 5 18 18 15 0 5 22 24 0 20
它也就變成了
- FHACTFSSPAFWYAU
而若要解密以上訊息,反向操作即可。
參考文獻
- Erskine, Ralph, "Enigma's Security: What the Germans Really Knew", in "Action this Day", edited by Ralph Erskine and Michael Smith, pp 370–386, 2001.
外部連結
- Marcus Ranum's 一次性密碼本常見問題 (頁面存檔備份,存於互聯網檔案館)
- FreeS/WAN 一次性密碼本的弱點討論 (頁面存檔備份,存於互聯網檔案館)
- 可汗學院一次性密碼本 (頁面存檔備份,存於互聯網檔案館)