使.NET构架的加密算法满足你的要求

ZDNet软件频道 时间:2004-03-11 作者:Builder.com |  我要评论()
本文关键词:
假设高级别的安全问题相对容易解决,但是其所添加的密码将成为系统的负担。这就是为什么要选择“足够好”的安全措施是非常重要的,并且也比较难实现。
本文译自Builder.com,未经许可请勿转载

假设高级别的安全问题相对容易解决,但是其所添加的密码将成为系统的负担。这就是为什么要选择“足够好”的安全措施是非常重要的,并且也比较难实现。在开发平台上选择越多的密码(而不是求助于第三方的附加软件和资源),那么选择最好的解决方案也越简单。

在多年来处理那些只能少量支持加密的开发平台之后,现在,.NET的1.1构架提供了对于多类型类的支持,给开发者提供了一个更广的对于每一个应用程序的算法选择范围。

更重要的是,.NET构架的加密模型依赖于对象的继承关系,这就使得它更容易实现新的算法或者在当你需求改变的时候将这些算法结合起来。

选择一个加密方法

为了要选择一个加密方法,首先你就要查找合适的.NET构件算法。这些算法被划分成抽象哈希、均衡的和不均衡三种类型的算法,每个类型中都包含了多种特殊的算法。

当开发者选定了一个特定的算法类型的时候,它们的决定通常是基于它们至少需要多大程度的安全系数而做出来的。这可能是非常投机的;但是选择一种抽象类型的加密算法通常是非常容易的。

按照你的数据保护要求将数据分成下面的一类或几类,你就可以选择到适合你要求的抽象算法。加密的类型通常有:

  • 保证数据完整性 (例如,使得收到的数据和发送的时候的数据完全一致)。
  • 鉴别最初始的数据(例如,确认那些像是原始数据的数据确实来自发源地)。
  • 保证数据的保密性。这个方面的加密通常最为重要,因为,即使它获得了加密的方法,在加密的时候,加密程序就会对每一位非授权用户隐藏数据。加密方法可能还会验证初始数据的来源和数据完整性,而且,完整的加密编码同样也给数据增添了不少的加密数据,增加了数据的容量。
考虑数据的完整性

在许多商业情况下,交换的数据不需要保密,因此,就不需要加密算法。例如,对于出版价格表、联系信息、URL、或其它的公共信息就没有必要加密,但是对数据的精度却要求很高。

使用哈希算法

当你需要的只是保证收到的数据和发送的数据完全一致的时候,最好的选择就是使用哈希算法。这是最普通的保护方法,.NET构架为您提供了各种各样的哈希算法:

  • SHA1, SHA256, SHA384, 和SHA512
  • MD5
  • HMACSHA (键值哈希算法)
  • MACTripleDES (键值哈希算法)

在确定了选择哈希算法来保护数据完整性之后,接下来的就是要选择具体的哈希算法,例如键值哈希算法或是SHA1算法。

如果你选择的是键值哈希算法,那么,.NET构件就包括两个具体的实现算法: HMACSHA 和 MACTripleDES算法。但是,如果你既需要保证数据完整性和身份鉴别、加密功能的时候又该怎么办呢?

通用语言运行(CLR)使用了面向流水的哈希实现方法和均衡加密算法,特别的,CryptoStream类来自于Stream类

对于你有什么意义

由于所有的加密对象都使用通用的接口,算法就可以通过这些接口被串连在一起。例如,你可以对数据先做哈希再做加密,而不需要将做过哈希的数据保存下来。同样,你可以创建一个单独的,包括了很多算法的流水对象。这就使得开发者制定确切的保护方法变得非常容易了。

要确定需要有多大程度的保密措施并不是一件简单的事情,但是至少.NET构件可以将可用的保护措施与你的需求相匹配这个过程简单化。


作者:John McCormick,是一位安全顾问,是IT界的资深作家,发表过15,500篇文章。


责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134