2012-02-16 106 views
-2

有人可以解釋這個算法是否安全?有攻擊打破那個?這個算法使用共同XOR加密,但有一些不同之處:這是XOR密碼術的安全嗎?

M(1)=鍵XOR消息(1​​)
M(2)= H(鍵)XOR消息(2)
M(3)= H (H(鍵))XOR消息(3)

注:

  1. M(i)的加密文本
  2. 消息(i)是消息,我們將以爲密它
  3. 密鑰和消息(ⅰ)具有相同的長度**
  4. 攻擊者只是具有密文,並且知道密鑰制定方案(繼續散列)和XOR加密
  5. 散列算法是SHA-512
+0

您也可以嘗試詢問http://security.stackexchange.com/ – Mchl 2012-02-16 22:36:40

+2

請不要在security.SE或crypto.SE上進行crosspost。我已將其標記爲遷移,但如果它被關閉,我不會感到驚訝。 – CodesInChaos 2012-02-16 22:41:36

+2

你爲什麼要發明自己的密碼?有很多現有的流密碼。沒有理由去創造你自己的壞人。 – CodesInChaos 2012-02-16 22:43:25

回答

2

學習的加密算法是非常有趣的。只要記住你在玩,不會產生任何嚴重的問題。只要你只保留加密的個人日記(或者甚至密碼),並保證數據安全,你可能會好起來的。這種通過默默無聞的方式被視爲安全。然而,我不會建議加密大量的數據,而這些數據是你需要保持私密或任何可用並且對外界感興趣的東西。


在這種情況下,如果你的消息是比密鑰大小和哈希塊尺寸短,關鍵是一次性使用的和隨機的,您是如何有效使用一次使用的墊所以一切都在膨脹。如果你的隨機數字密鑰的生成是完美的,你有一個牢不可破的加密機制。在將每個塊添加到消息中時,您正在使用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

3

如果攻擊者永遠都會知道一個明文密文對,他可以計算出相應的密鑰。從那以後,他可以計算以後的所有鍵。即它很容易受到已知的純文本攻擊。

需要注意的是,當我說攻擊者猜測的消息,我的意思並不是說他確信自己的猜測是正確的。他可能會做出幾萬億的猜測,如果其中一個是正確的,那麼你的整個計劃就會被打破。

當然,你不能永遠重複使用的關鍵。


一個更安全的(但慢一倍)的算法是:

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。

+0

我確信這個攻擊者不能得到明文,在這張紙條上,你的aidea是什麼? – oMiD 2012-02-16 22:42:08

+1

@oMiD所以你確定每一條消息都有很高的熵值?這不是我想要的賭注。特別是因爲沒有理由使用容易受到已知明文攻擊的方案。 – CodesInChaos 2012-02-16 22:44:47