One Time Pad (OTP) 如何完全安全?
One Time Pads (OTP)上的 Wikipedia 條目指出,如果正確使用此密碼;即,密鑰是真正隨機的,密鑰的每個部分都獨立於其他部分,它是不可破解的,並且產生了完美的保密性,即, $ H(M|C) = H(M) $ .
它給出了一個例子,說明對明文“ HELLO ”的密碼分析將產生所有明文,如“ HELLO ”、“ LATER ”,機率相等。
現在,考慮一些我知道是英文句子的 OTP 加密數據。憑藉無限的計算能力,我生成了所有明文。現在,因為句子的每個單詞都與附近的單詞相關,所以我至少可以縮小可能性列表(我不知道將英語句子塞進 M 字母的組合學),這不等於完全保密(熵 $ H(M) $ 好像減少了!)。
簡而言之,OTP 保證 $ H(M|C) = H(M) $ ,但我的問題是 $ H(M) $ 明文的知識會減少,那麼如何確保完全保密?
您實際上已經被 OTP 將隱藏有關底層明文的所有資訊的心態所困。
正如您所觀察到的,這不是真的。
Katz-Lindell 在《現代密碼學導論》中給出的完全保密的定義是這樣的:
定義 2.3一種加密方案 $ (\text{Gen, Enc, Dec}) $ 有消息空間 $ \mathcal M $ 如果對於每個機率分佈 $ \mathcal M $ , 每一條消息 $ m\in\mathcal M $ , 和每一個密文 $ c\in \mathcal C $ 為此 $ \Pr[C=c]>0 $ :
$$ \Pr[M=m\mid C=c]=\Pr[M=m] $$
換句話說,如果你手頭有密文,你就不會學到任何你不知道明文的新東西。
OTP 滿足了這一點(在“現代密碼學導論”中得到證明),因此作為一種加密方案是完全保密的。簡而言之,它首先表明 $ \Pr[C=c\mid M=m’]=2^{-l} $ ,然後用它來證明 $ \Pr[C=c]=2^{-l} $ 並通過 $ \Pr[M=m\mid C=c]=Pr[M=m] $ (使用貝氏定理)。