2011-01-11 55 views
0

嗨全部 我必須使用C++中的Blowfish算法對我的數據進行加密......可以告訴我,如果另一端知道我使用的算法是否可以不提取密鑰並解密它?這種方法的數據安全性如何?河豚算法如何在C++中工作?

回答

4

你們可以告訴我,如果另一端知道我在用什麼算法,他們不能提取密鑰並解密它嗎?

號整點的標準加密算法(相對於那些依賴於默默無聞)是,儘管每個人都知道它的所有細節,一個無法解密它,除非一個人的關鍵。

這種方法是有效的,因爲破解加密的唯一方法是嘗試所有可能的密鑰,其中有太多密鑰。隨着計算能力的增加,以前的「安全」算法確實變得「不安全」。使用一些算法還可能存在允許發生其他形式的扣減的缺陷,這會顯着減少可能的密鑰空間並因此加速這些強力攻擊。但是(據我們所知)河豚在這裏很安全。

保持關鍵的祕密是必不可少的。如果您的程序還包含密鑰(而不是詢問用戶或某個設備,或者使用隨機會話密鑰本身使用公鑰密碼加密),那麼逆向工程師可能會找到它並破壞您的方案。

保持關鍵祕密的一個重要部分是保持「不可猜測」,並且不要將其用於不同的目的。隨機生成的密鑰是最好的。

此外,「另一端」是指攻擊者,對吧?通常,「另一端」是指Bob預期的接收者,並且他當然需要能夠解密該消息。

1

對Blowfish沒有已知的攻擊(截至2011年1月),所以您的數據與密鑰長度(在Blowfish中可以高達448位)一樣安全。

+0

謝謝slebetman .. – garima 2011-01-11 11:23:52

+0

有沒有已知的攻擊......,可能是因爲沒有人希望它知道。看看下面的內容,如果你還沒有看到這個:https://www.schneier.com/blowfish-bug.txt取自https://www.schneier.com/blowfish.html下的*「* *注意:** Blowfish的一些源代碼實現中存在一個錯誤。「* – 2014-08-17 14:17:01

+0

@ Fred-ii-對於BLOWFISH ALGORITHM中的一個錯誤沒有任何說明,將其與算法本身有問題的已知攻擊(例如DES)進行比較。 – slebetman 2014-08-17 14:32:15

1

根據我的理解,挑選特定加密和解密方法的一個要點是,通信流的兩端都知道數據使用哪種算法進行加密。

如果您「必須」使用Blowfish算法對您的數據進行加密,那麼僅需求就會告訴您收件人希望使用Blowfish方案加密郵件。

蒂洛說,「標準化加密算法整點...是,儘管每個人都知道它的所有細節,一個無法解密它,除非一個人的關鍵。」

防止中間人攻擊以及涉及惡意方攔截您的消息的其他攻擊的最佳方法是保證您的密鑰安全 - 不要將其硬編碼到任何程序中(甚至編譯的程序也可以進行分析),並通過確保他們的安全實踐將惡意代理人購買相關密鑰的機會降至最低,與您的收件人建立信任關係。或者,如果您的收件人支持它,您可以使用「一次性密碼」 - 用於加密數據的唯一密碼/密鑰。