我有兴趣提供一个在 .Net 中使用的托管 dll,它提供经过身份验证的加密服务。 DLL 可以在 WPF 程序或 ASP 应用程序中使用。我有几个与 Microsoft 的加密和流模型相关的问题。
经过身份验证的加密模式(CCM、CWC、EAX、GCM 等)通常会产生两个工件 - 第一个是密文,第二个是身份验证标签。流式加密相当容易,但可能存在一些问题。例如,由于标头的构建方式和经过身份验证的加密模式会产生身份验证标签,CCM 无法进行流式传输。
解密比较棘手,因为它无法流式传输。解密无法进行流式传输,因为所有密文必须可用,并且密文在解密之前必须使用身份验证标签进行验证。
如何为分组密码采用经过身份验证的加密模式,以便它可以在CryptoStream
?有可能吗?也许这就是微软不提供它的原因?
微软有推荐吗?例如,将大消息分解为较小的消息或单元(每个消息或单元都有自己的标签)?或者 MS 是否建议缓冲直到输入整个消息和标签?
Microsoft 建议将标签“放置”在哪里?在流的开头?在流的末尾?
一些有用的参考:
- 对称算法类 http://msdn.microsoft.com/en-us/library/system.security.cryptography.symmetricalgorithm.aspx
- 密码模式枚举 http://msdn.microsoft.com/en-us/library/system.security.cryptography.ciphermode.aspx
- 加密流类 http://msdn.microsoft.com/en-us/library/system.security.cryptography.cryptostream.aspx
2010年微软CLR安全团队发布了System.Security.Cryptography 的扩展 http://clrsecurity.codeplex.com/wikipage?title=Security.Cryptography.dll其中特别包括经过身份验证的对称加密GCM http://clrsecurity.codeplex.com/wikipage?title=Security.Cryptography.AuthenticatedAesCng。我不知道为什么从那以后他们就没有用它做任何事情。
但是,由于您的问题强调“微软会做什么?”,所以……他们就是这样做的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)