2011-01-11 58 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方案加密邮件。

蒂洛说,“标准化加密算法整点...是,尽管每个人都知道它的所有细节,一个无法解密它,除非一个人的关键。”

防止中间人攻击以及涉及恶意方拦截您的消息的其他攻击的最佳方法是保证您的密钥安全 - 不要将其硬编码到任何程序中(甚至编译的程序也可以进行分析),并通过确保他们的安全实践将恶意代理人购买相关密钥的机会降至最低,与您的收件人建立信任关系。或者,如果您的收件人支持它,您可以使用“一次性密码” - 用于加密数据的唯一密码/密钥。