Encryption 我们可以为AES使用特定的填充模式来检测错误吗?
这些天我一直在阅读和做AES的实验。例如,对于128位AES,在加密过程中,如果明文小于128位,则将向其添加所有0的填充。解密后,可以删除这些0 我正在考虑使用填充进行错误检测:如果纯文本总是16位,那么在解密后,文本的形式应该是(某些数据的16位+0的112位)。我们称这种形式为“法律明文”。总共可以有2^16个法律明文 如果攻击者不知道密钥和IV,则通过修改密码,解密的明文可以是任何形式。他/她有(2^16)/(2^128)=2^(-112)的概率使其成为法律明文,这是一个非常小的机会 这听起来合理吗 (当然,攻击者仍然可以通过修改第i个密码来进行位翻转,以获得第(i+1)个明文中想要的结果)Encryption 我们可以为AES使用特定的填充模式来检测错误吗?,encryption,cryptography,aes,error-correction,error-detection,Encryption,Cryptography,Aes,Error Correction,Error Detection,这些天我一直在阅读和做AES的实验。例如,对于128位AES,在加密过程中,如果明文小于128位,则将向其添加所有0的填充。解密后,可以删除这些0 我正在考虑使用填充进行错误检测:如果纯文本总是16位,那么在解密后,文本的形式应该是(某些数据的16位+0的112位)。我们称这种形式为“法律明文”。总共可以有2^16个法律明文 如果攻击者不知道密钥和IV,则通过修改密码,解密的明文可以是任何形式。他/她有(2^16)/(2^128)=2^(-112)的概率使其成为法律明文,这是一个非常小的机会 这
您没有在方案中明确说明模式,但听起来您是在建议CBC。如果是这样的话,它完全没有提供任何保护:攻击者可以翻转前16位密码文本中的任何一位,但仍然有一个有效的纯文本。我得到了1。三,。你能详细说明一下吗。?修改密码以使解密的明文合法地进行身份验证检查应该是非常困难的。(我知道它可以通过位翻转来处理下一个明文)这看起来像是键检查值(KCV)的变体。为什么这不值得努力。改为使用经过身份验证的加密。您的意思是通过翻转当前密码的前16位,我们将使下一块纯文本有效吗?从当前密码解密的纯文本应该仍然无效,对吗?@adieux-right,我明白你的意思。您将检测到当前块上的更改并停止。尽管如此,我还是不相信安全性,而且GCM的效率要高得多,所以是什么激发了这个计划?谢谢。我之所以提出这一点,是因为我们的频道非常慢,每3秒发送一条消息。所以我认为只要用这个简单的方法每次检查就足够了。你看到这里有什么潜在的问题吗?@adieux By slow channel,你是说你的传输速度很低吗?如果是这样的话,那么使用7/8的带宽似乎是浪费。但是如果你只是说你的流量很低,那当然没关系。剩下的主要问题是,作为一个非标准方案,我不会对其安全性感到非常有信心。第二个问题是您必须编写更多的自定义代码来支持该方案,而实现缺陷是发现漏洞的地方。实现标准模式(如GCM)的库将有更好的审查和维护。