我感兴趣的是提供一个托管dll,用于提供经过身份验证的加密服务的.Net。DLL可用于WPF程序或ASP应用程序。我有几个问题与微软的密码和流模型有关。
认证加密模式(CCM、CWC、EAX、GCM等)通常会产生两种伪码--一种是密码文本,二种是身份验证标记。流加密相当容易,但也可能存在一些问题。例如,由于头的构建方式和经过身份验证的加密模式产生身份验证标记,CCM无法流。
解密更复杂,因为它不能被流。不能流解密,因为所有密码文本都必须可用,并且在解密之前必须使用身份验证标记验证该密码文本。
如何将经过身份验证的加密模式用于分组密码,以便可以在CryptoStream中使用?有可能吗?也许这就是微软不提供它的原因吧?
微软有推荐吗?例如,将一条大消息分解成更小的消息或单元(每个消息都有自己的标记)?还是MS建议在输入整个消息和标签之前进行缓冲?
微软建议把标签放在哪里?在溪流开始的时候?在小溪的尽头?
一些有用的参考资料:
发布于 2013-03-19 13:10:10
2010年,microsoft安全小组发布了一个对System.Security.Cryptography的扩展,其中包括经过身份验证的对称加密,特别是GCM。为什么从那以后他们什么都没做,我不知道。
但是,既然你的问题强调了“微软会做什么?”,这就是.他们就是这么做的。
发布于 2013-03-20 00:32:15
您使用的假设并不适用于流密码(如GCM)上的认证加密baard :在验证之前不能解密。例如,在应用填充预言时由MAC验证的CBC模式下的AES也是如此。例如,GCM模式不执行填充,因为底层流密码是CTR模式加密。这意味着填充不需要应用,因此填充预言不适用。
当然,在对已解密的数据进行身份验证之前对其执行任何业务逻辑都是非常不明智的。任何涉及未经验证的数据的代码都应该被认为是高风险的,应该对其进行静态分析和审计。如果您想要更早地执行任何业务逻辑,那么您确实应该确保在这样做之前对其进行身份验证。把它分成更小的部分肯定是有意义的。
显然,这些只是我的建议。微软的建议:如果他们无法找到使用谷歌或(上帝禁止)必应:问微软。这里没人能替他们说话。
https://stackoverflow.com/questions/15492460
复制相似问题