Stream-Cipher
使用一個摘要 0-9 而不是 01-26 加密消息
如果我使用 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
如果攻擊者加密了整個句子,我懷疑只有一個看似合理的解密,並且通過拼湊每個單詞的可能解密很容易找到它,直到找到有意義的句子。如果攻擊者對整個文件進行了加密,我懷疑攻擊者很容易恢復大部分或全部文件。
簡而言之,該方案非常不安全。