2011-01-14 63 views
1

我讀有關加密我在想AES的這些屬性(我使用):提高密碼的屬性完整性檢查

  1. 相同的消息=相同的輸出中
  2. 沒有消息長度保密
  3. 可能不安全如果你知道這些消息(這是否真的適用於AES?)

我聽說AES是安全的,但是如果我想要改善這些屬性

我想我能做到這一點:

  1. 應用加密算法A
  2. XOR用隨機數據D(確保輸出看起來隨意在任何密碼的情況下)
  3. 生成隨機數據比原始消息長
  4. 使用散列函數F來分配隨機數據中的時隙(這擾亂了順序字節)

輸入:加密algorith A,數據進行XOR與D和散列函數F

我的問題是

  • 建議的解決方案theoreticaly我的擔憂幫助嗎?
  • 這種方法用在什麼地方?

可能的改進這種方法

我也可以說,通過散列函數選擇下一個位置將使用最後一個解碼字節的校驗和XOR步驟(這樣的消息有後改變從頭到尾解碼)

如果我要用它來與某人進行對話,與異或的數據可能是來自其他人的最後一條消息,但這可能是一個漏洞。

我期待着您的想法! (這只是理論上的,我不需要更安全的加密,只是試圖向你們學習。)

+0

將隨機數的隨機字節添加到您的原始郵件將修復所有三個點。只需存儲您在輸入中使用的字節數,並在解密後將其刪除。 – sisve 2011-01-14 07:43:46

回答

4

是的。

看。如果你想了解密碼學,我建議你閱讀Applied Cryptography。真的,就這樣做吧。你會得到一些很好的明確的知識,並理解什麼是合適的,什麼不是。它具體談到實施,這是你在做什麼。

一些經驗法則:

  • 不要讓你自己的方案。這幾乎是普遍真實的。可能有例外,但可以公平地說,如果你已經全面審查了所有現有的方案,並且具有特定的量化原因,那麼你應該只發明自己的方案。
  • 建模您的攻擊者。找出你打算保護的場景,並構建你的系統,以便它可以緩解潛在的攻擊。
  • 複雜性是你的敵人。不要讓你的系統更復雜,那麼它就需要。
  • 保持最新狀態。你可以找到幾個與密碼相關的mailing lists和(和hashing)加入它們。從那裏你將學習有趣的實現細節,並瞭解最新的攻擊。

至於具體解決你的問題,那很混亂。我不明白您的目標,也不瞭解步驟3和步驟4.您可能想快速查看here以瞭解您可以使用給定加密算法的不同方式。

希望這會有所幫助。

+0

謝謝,我正在閱讀一本關於密碼學的書,我可能會在閱讀AC時讀到它。 – hakunin 2011-01-14 07:52:27

+0

至於經驗法則 - 非常感謝他們!那就是我正在尋找的東西。 – hakunin 2011-01-14 07:55:03

+0

如果可以的話,我會給這兩個upvotes。 – 2011-01-17 02:01:20

0

隨機數據XOR有什麼意義?如果它真的是隨機的,你將如何解密它?如果您說隨機數據是密鑰的一部分,那麼您最好丟掉AES並只使用真正的隨機密鑰 - 只要它與數據長度相同(或長於),並且永遠不會多次使用加密。它被稱爲一次性填充,這是我所知道的唯一理論上不可破解的加密算法。

如果隨機位是僞隨機生成的,那麼您的努力不太可能產生額外的安全性。考慮有多少有才華的數學家參與了設計AES ...

編輯:我太強烈推薦應用密碼學,這是一個實際上是非常可讀性和趣味性的書,而不是乾的,因爲它聽起來可能。

2

你的假設是不正確的。

  1. 相同的消息!=相同的輸出
    的輸出不會,如果你加密兩次相同的消息是相同的。
    這是因爲你需要使用不同的IV。
  2. 通過嚮明文添加隨機數據可以隱藏消息長度。
  3. 攻擊已被證明對少量輪數的AES。全方位AES沒有以任何方式受到損害。

除此之外,我建議您按照Noon Silks的建議閱讀Applied Cryptography。