如果我使用不同的加密方法,但在密文输出中没有提供我使用哪种方法的指示(例如,将未加密的标题附加到密文),这使得密文难以解密而不仅仅是隐含的困难,因为例如,键长?缺乏关于使用什么加密协议和参数的信息会增加难度,因为要求潜在的解密器尝试一些或所有各种加密方法和参数。
答案 0 :(得分:1)
通常,您不应该依赖算法/协议本身的信息。此类信息对于您使用的任何密钥都是通用的,因此您should consider it public knowledge。好的,这样就可以了。
现在说你使用16种方法而且你以某种方式创建了一个协议,保持使用的加密方法的机密性(让我们说加密一个半块充满随机和魔法的块,在接收器处解密块直到你找到正确的一个)。现在,如果您想要暴力使用密钥,则需要再尝试16次。换句话说,您只需将密钥长度增加到4位,即2 ^ 4 = 16
。所以说你会有AES-256等效密码。您现在将具有256 + 4 = 260
位的等效加密。这很难注册,特别是因为AES-256已被认为可以安全地抵御使用量子计算机的攻击。</ p>
现在这4位的价格非常高。使用多个密码的高度复杂的协议。这些密码中的每一个都有其缺点。他们中的任何一个都不会像AES一样受到严格的审查,如果一个打破你就会遇到麻烦(至少16个加密消息中有1个)。速度会有所不同,参数和块大小会有所不同,平台可能不会全部支持它们......
总而言之,如果您不愿意接受AES-128,请使用AES-256。如果必须,使用AES和SERPENT加密两次。在IV&amp;上添加身份验证标记然而,密文可能会带来更大的不同。 See this answer by Thomas over at the security site。
尝试GCM或EAX操作模式。更有用。