有人可以解釋這個算法是否安全?有攻擊打破那個?這個算法使用共同XOR加密,但有一些不同之處:這是XOR密碼術的安全嗎?
M(1)=鍵XOR消息(1)
M(2)= H(鍵)XOR消息(2)
M(3)= H (H(鍵))XOR消息(3)
等
注:
- M(i)的加密文本
- 消息(i)是消息,我們將以爲密它
- 密鑰和消息(ⅰ)具有相同的長度**
- 攻擊者只是具有密文,並且知道密鑰制定方案(繼續散列)和XOR加密
- 散列算法是SHA-512
有人可以解釋這個算法是否安全?有攻擊打破那個?這個算法使用共同XOR加密,但有一些不同之處:這是XOR密碼術的安全嗎?
M(1)=鍵XOR消息(1)
M(2)= H(鍵)XOR消息(2)
M(3)= H (H(鍵))XOR消息(3)
等
注:
學習的加密算法是非常有趣的。只要記住你在玩,不會產生任何嚴重的問題。只要你只保留加密的個人日記(或者甚至密碼),並保證數據安全,你可能會好起來的。這種通過默默無聞的方式被視爲安全。然而,我不會建議加密大量的數據,而這些數據是你需要保持私密或任何可用並且對外界感興趣的東西。
在這種情況下,如果你的消息是比密鑰大小和哈希塊尺寸短,關鍵是一次性使用的和隨機的,您是如何有效使用一次使用的墊所以一切都在膨脹。如果你的隨機數字密鑰的生成是完美的,你有一個牢不可破的加密機制。在將每個塊添加到消息中時,您正在使用SHA-512有效計算新密鑰,而不是添加任何特定值。如果攻擊者可以假設消息由可打印文本組成,並且消息的長度很長或者密鑰被重複使用,那麼找到原始密鑰應該不會太困難。
這將是更有效的計算:
M(1)=h(N + key) XOR Message(1)
M(2)=h(M(1)) XOR Message(2)
M(3)=h(M(2)) XOR Message(3)
(其中N是時代的密鑰已經被使用,其以明文形式傳遞的數字)壞人
這樣,才能提前計算您的密鑰序列並在可以之前解密您的消息。同樣,通過使用密鑰的哈希散列,攻擊者將無法預測下一次將使用的密鑰序列。
我讀的地方:
在計算機科學和數學等領域,人們獲得博士學位是有原因的。有很多東西要學習和發現。像這樣的東西看起來不錯,但毫無疑問,它有一個攻擊者可以駕駛卡車穿過的大洞。
玩得開心,不要讓像我這樣的脾氣暴躁的人讓你失望。 /Bob Bryan
如果攻擊者永遠都會知道一個明文密文對,他可以計算出相應的密鑰。從那以後,他可以計算以後的所有鍵。即它很容易受到已知的純文本攻擊。
需要注意的是,當我說攻擊者猜測的消息,我的意思並不是說他確信自己的猜測是正確的。他可能會做出幾萬億的猜測,如果其中一個是正確的,那麼你的整個計劃就會被打破。
當然,你不能永遠重複使用的關鍵。
一個更安全的(但慢一倍)的算法是:
Key(i+1) = h("A"+key)
M(i) = h("B"+key) XOR Message(i)
或類似的CTR模式建設:
M(i) = h(i+key) XOR Message(i)
但我仍然不會使用任何。
但是沒有理由使用這樣的自制算法。有很多現有的算法運行良好。例如,如果您喜歡流密碼設計,則可以在CTR模式下使用AES。
我確信這個攻擊者不能得到明文,在這張紙條上,你的aidea是什麼? – oMiD 2012-02-16 22:42:08
@oMiD所以你確定每一條消息都有很高的熵值?這不是我想要的賭注。特別是因爲沒有理由使用容易受到已知明文攻擊的方案。 – CodesInChaos 2012-02-16 22:44:47
您也可以嘗試詢問http://security.stackexchange.com/ – Mchl 2012-02-16 22:36:40
請不要在security.SE或crypto.SE上進行crosspost。我已將其標記爲遷移,但如果它被關閉,我不會感到驚訝。 – CodesInChaos 2012-02-16 22:41:36
你爲什麼要發明自己的密碼?有很多現有的流密碼。沒有理由去創造你自己的壞人。 – CodesInChaos 2012-02-16 22:43:25