簡(jiǎn)述一次性密碼本

如果要說(shuō)古典密碼中,哪個(gè)最安全,那么一次性密碼本一定會(huì)有一席之地。從理論層面上來(lái)說(shuō),它是牢不可破的(無(wú)法暴力破解),但在實(shí)際操作中卻存在一些問(wèn)題。今天我們就一起來(lái)了解這個(gè)“絕對(duì)安全的密碼”——一次性密碼本。

一次性密碼本簡(jiǎn)介

一次性密碼本英文名為One-time Pad或者OTP,是在1882年被弗蘭克·米勒(Frank Miller)發(fā)現(xiàn)并沿用至今,它是以隨機(jī)的密鑰(key)組成明文,且只使用一次,需要通信雙方事先去溝通一個(gè)一次性的,與被加密信息長(zhǎng)度相等或者更長(zhǎng)的密鑰。

一次性密碼本

一次性密碼本的加密方法

一次性密碼本的加密方式非常簡(jiǎn)單,就是將明文(待傳信息的編碼)和一串隨機(jī)生成的二進(jìn)制碼進(jìn)行XOR(異或)運(yùn)算。

  1. 將明文編碼,即轉(zhuǎn)換為二進(jìn)制。
  2. 隨機(jī)生成和明文二進(jìn)制位數(shù)相同的密鑰。
  3. 將明文和密鑰的二進(jìn)制進(jìn)行XOR操作,生成密文。

一次性密碼本

一次性密碼本的解密方法

解密過(guò)程依靠的是XOR操作的自反性,先簡(jiǎn)單介紹一下異或操作,如果異或的兩個(gè)bit相同結(jié)果為0,異或的兩個(gè)bit不同結(jié)果為1。例如:

0 XOR 0 = 0

0 XOR 1 = 1

1 XOR 0 = 1

1 XOR 1 = 0

異或還有一個(gè)非常重要的性質(zhì):自反性,a XOR b = c,c XOR b = a即對(duì)同一數(shù)進(jìn)行兩次異或結(jié)果將回到最初的狀態(tài)。

由此,通過(guò)明文和密鑰異或得到的密文,再通過(guò)將密文和密鑰再次異或操作得到明文。

一次性密碼本

一次性密碼本的優(yōu)點(diǎn)

雖然一次性密碼本非常簡(jiǎn)單,但是一次性密碼本是絕對(duì)無(wú)法破解的,這個(gè)破解并不是指現(xiàn)有的計(jì)算能力不夠,而是指即使擁有無(wú)窮大的計(jì)算能力也無(wú)法破解。

假設(shè)我們拿到了密文并進(jìn)行暴力破解,也就是將所有順序的密鑰嘗試一遍,假設(shè)密文長(zhǎng)度是32bit,那么我們將得到232數(shù)量的明文。顯然我們無(wú)法判斷哪一個(gè)是正確的明文,因?yàn)樵谒械慕M合排列中可能生成多個(gè)有意義的文字。所以這種解密是無(wú)意義的,就像是我知道了原文的長(zhǎng)度,然后自己構(gòu)造這個(gè)長(zhǎng)度的原文。因此一次性密碼本是無(wú)法破譯的。

一次性密碼本的缺點(diǎn)

  • 密鑰太長(zhǎng)

一次性密碼本是用與原文等長(zhǎng)的密鑰做異或得到的,如果原文很大,那么相應(yīng)的密鑰也就非常大。

  • 無(wú)法重用密鑰

這即是一次性密碼本的缺點(diǎn)也是優(yōu)點(diǎn),意味著使用時(shí)每次都要不停的更換密鑰,增加了復(fù)雜性,但也保障了安全性。

一次性密碼本

  • 密鑰的配送

因?yàn)槊荑€和原文以及密文都是等長(zhǎng)的,目標(biāo)端如果想解密就必須拿到密鑰,如果能夠機(jī)密的傳輸密鑰給目標(biāo)端,那為什么不直接將原文機(jī)密的傳送給目標(biāo)端呢?

  • 密鑰的保存

每次加密都需要換一個(gè)密鑰,這意味著每一個(gè)明文都需要保存一個(gè)同樣長(zhǎng)度的密鑰,如果明文已經(jīng)可以很好的保存了,那何必多做一步加密呢?


雖然一次性密碼本非常安全,但在現(xiàn)在中卻很難使用,但是它卻為很多其他的加密算法提供了靈感,由此也產(chǎn)生了多個(gè)變種。