Stream-Cipher

使用一個摘要 0-9 而不是 01-26 加密消息

  • February 20, 2017

如果我使用 0-9 中的一位而不是 1-26,一次性密碼的安全性會降低多少?

例如plaintext = "blue"key = "5 9 4 6"

b  l  u  e  -  plaintext
02 12 21 05  -  plaintext in numeric form
5  9  4  6  -  key
07 21 25 11  -  ciphertext in numeric form
g  u  y  k  -  ciphertext

所以blue + 5946 = guyk

這和我使用 1-26 的數字一樣安全嗎?

藍色 + 5946 會成為牢不可破的單本嗎?

這是非常不安全的。

例如,如果您guyk在密文中看到單詞,那麼對應的明文單詞會是什麼?

  • 使用您的方案(每個字母通過在 0..9 之間添加一個以 26 為模的數字來加密),只有 139 個英語單詞可以導致它。(這 139 種可能性是arse, blue, bore, both, burg, bush, busk, club, cord, clue, cope, cord, core, …, grue, gush, yore, york: 第一個字母在範圍內的所有單詞,x-z或者a-g第二個字母j-u在第三個字母在 中p-y,第四個字母在 中b-k。)
  • 如果您使用一次性密碼本(每個數字都通過在 1..26 之間加上一個以 26 為模的數字來加密),那麼所有四字母英文單詞都是可能的。特別是,對應的明文單詞有 13208 種可能性。

因此,您的方案洩漏的資訊大大縮小了單詞的數量,從 13208 種可能性減少到 139 種可能性。

另一個例子:unbreakable+ 59460927644 = zwfxejmhhpi。如果攻擊者看到密文zwfxejmhhpi,他就知道明文單詞必須具有這種形式q-z n-w w-f o-x v-e a-j d-m y-h y-h g-p z-i。只有四個英語單詞與該模式匹配:即unavailable、、、和。這為攻擊者提供了大量關於明文的資訊。攻擊者可能能夠根據上下文找出最有可能的單詞。或者,基於句子中其他可能單詞的其他候選者,攻擊者可能能夠辨識出哪個單詞是正確的。unbreakable``unbudgeable``uncoachable

如果攻擊者加密了整個句子,我懷疑只有一個看似合理的解密,並且通過拼湊每個單詞的可能解密很容易找到它,直到找到有意義的句子。如果攻擊者對整個文件進行了加密,我懷疑攻擊者很容易恢復大部分或全部文件。

簡而言之,該方案非常不安全。

引用自:https://crypto.stackexchange.com/questions/8215