现在的位置: 首页 > 综合 > 正文

加密技术、密钥和证书

2017年11月25日 ⁄ 综合 ⁄ 共 3634字 ⁄ 字号 评论关闭
文章目录

http://www.microsoft.com/china/technet/security/guidance/secmod39.mspx

 

加密技术、密钥和证书

更新日期: 2004年04月20日
本页内容

目标 目标
适用范围 适用范围
如何使用本章内容 如何使用本章内容
密钥和证书 密钥和证书
X.509 数字证书 X.509 数字证书
证书存储 证书存储
加密技术 加密技术
技术选择 技术选择
.NET 中的加密技术 .NET 中的加密技术
总结 总结

目标

本章的目标是:

了解加密技术、密钥和证书

了解 System.Security.Cryptography 命名空间

适用范围

本章适用于以下产品和技术:

Windows 2000 Server 2000 SP3

Microsoft .NET Framework SP2

Microsoft SQL Server 2000 SP2

如何使用本章内容

本章是《构建安全的 ASP .NET 应用程序》指南的参考章节。它包含一些补充信息,可以帮助您进一步了解本指南其他章节中所述的解决方案,应在阅读时一并阅读。

密钥和证书

非对称加密使用公钥/私钥对。对于使用私钥加密的数据,只能使用相应的公钥进行解密,反之亦然。

顾名思义,公钥是指可以提供给很多人的密钥。相反,私钥是特定个人所独有的。向用户传送公钥使用的分发机制是证书。通常,证书颁发机构 (CA) 对证书进行签名,以便确认公钥来自声称发送公钥的主体。CA 是一个相互信任的实体。

数字认证的典型实现包含证书签名过程。图 1 中显示了此过程。

数字认证过程

图 1
数字认证过程

图 1 中显示了以下事件的顺序:

1.

王丽将一个签名的证书请求(包含她的名字、公钥、可能还有其他一些信息)发送到 CA。

2.

CA 使用王丽的请求创建一个消息。CA 使用其私钥对消息进行签名,以便创建一个单独的签名。CA 将消息和签名返回给王丽。消息和签名共同构成了王丽的证书。

3.

王丽将她的证书发送给李华,以便授权他访问她的公钥。

4.

李华使用 CA 的公钥对证书签名进行验证。如果证明签名是有效的,他就承认证书中的公钥是王丽的公钥。

与数字签名的情况一样,任何有权访问 CA 公钥的接收者都可以确定证书是否是由特定 CA 签名的。这个过程不要求访问任何机密信息。上面这个方案假定李华有权访问 CA 的公钥。如果李华拥有包含该公钥的 CA 证书的副本,则他有权访问该密钥。

X.509 数字证书

X.509 数字证书不仅包含用户名和公钥,而且还包含与用户有关的其他信息。这些证书并不仅仅是数字信任等级中的阶石。通过使用证书,CA 可以为证书接收者提供一种方法,使他们不仅信任证书主体的公钥,而且还信任有关证书主体的其他信息。其他信息可以包括电子邮件地址、授权对具有某种价值的文档进行签名、授权成为 CA 并为其他证书签名等等。

X.509 证书和许多其他证书都有有效期限。证书在期满后就会失效。CA 可以出于许多原因吊销证书。要吊销证书,CA 保存并分发一个吊销证书的列表,即证书吊销列表 (CRL)。网络用户访问 CRL 以确定证书的有效性。

证书存储

证书存储在称为“证书存储”的安全位置中。证书存储可以包含证书、CRL 和证书信任列表 (CTL)。每个用户都有存储其证书的个人存储(称为“我的存储”)。可以在许多位置中物理实现“我的存储”,其中包括注册表、本地或远程计算机、磁盘文件、数据库、目录服务、智能设备或其他位置。

虽然可以将任何证书存储在“我的存储”中,但应该将此存储专用于存储用户的个人证书,即用于签名和解密该特定用户消息的证书。

除了“我的存储”外,Windows 还维护以下证书存储:

CA 和根。此存储包含特定证书颁发机构(用户信任其向其他用户颁发证书)的证书。操作系统提供了一套受信任的 CA 证书,管理员还可以添加其他的证书。

其他。此存储包含用户与之交换签名消息的其他用户的证书。

CryptoAPI 提供管理证书的功能。只能通过非托管代码访问这些 API。另外,CAPICOM 是 CryptoAPI 基于 COM 的 API,可通过 COM Interop 对它进行访问。

更多信息

有关详细信息,请参见 MSDN 上的“Cryptography, CryptoAPI, and CAPICOM”(加密技术、CryptoAPI 和 CAPICOM)(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/Security/cryptography_cryptoapi_and_capicom.asp)。

加密技术

加密技术用于提供以下功能:

机密性。确保数据的保密性。机密性通常是使用加密实现的。可以使用加密算法(使用加密密钥)将明文转换为密文,并使用相应的解密算法将密文转换回明文。对称加密算法使用相同的密钥进行加密和解密,而非对称算法则使用公钥/私钥对。

数据完整性。确保数据免受意外或者故意(恶意)的修改。完整性通常是由消息身份验证代码或哈希值提供的。哈希值是从数据序列导出的固定长度的数值。哈希值用于验证通过非安全通道传送的数据的完整性。可以将收到的数据的哈希值与传送时数据的哈希值进行比较,以确定数据是否被篡改。

身份验证。保证数据来自某一方。数字证书用于提供身份验证。数字签名通常应用于哈希值,因为这些值比它们所代表的源数据小得多。

技术选择

如果需要使用一种方法来验证数据在传输过程中没有被篡改,请使用哈希值。

如果要证明实体知道机密但不来回发送机密,或者想使用简单的哈希值以防止在传输过程中被截获,请使用加密的哈希值。

如果要隐藏通过不安全的媒介发送的数据或者要永久性保留数据,请使用加密。

如果要验证声称是公钥所有者的人员的身份,请使用证书。

如果双方事先共享密钥,请使用对称加密以提高速度。

如果想通过不安全的媒介安全地交换数据,请使用非对称加密。

如果要进行身份验证和实现不可否认性,请使用数字签名。

使用 Salt 值(使用加密技术生成的随机数)以防范字典攻击。

.NET 中的加密技术

System.Security.Cryptography 命名空间提供加密服务,其中包括数据的安全编码和解码、哈希、随机数生成和消息身份验证。

.NET Framework 提供了许多标准加密算法的实现;由于明确定义了包含定义基本算法类型(对称、非对称和哈希算法)的抽象类以及算法类的继承等级,因此可以方便地对这些实现进行扩展。

表 1:显示 .NET Framework 为其提供现成实现类的算法。

对称算法 非对称算法 哈希算法

DES(数据加密标准)

DSA(数字签名算法)

HMAC SHA1(使用 SHA1 哈希算法且基于哈希的消息身份验证代码)

TripleDES(三重数据加密标准)

RSA

MAC Triple DES(使用 Triple DES 的消息身份验证代码)

Rijndael

 

MD5

RC2

 

SHA1、SHA256、SHA384、SHA512(使用各种哈希大小的安全哈希算法)

对称算法支持

.NET 提供以下实现类以提供对称的密钥加密算法:

DESCryptoServiceProvider

RC2CryptoServiceProvider

RijndaelManaged

TripleDESCryptoServiceProvider

注意:以“CryptoServiceProvider”结尾的类是使用加密服务提供程序 (CSP) 基础服务的包装类;而以“Managed”结尾的类则是在托管代码中实现的。

图 2 显示了 .NET Framework 采用的继承等级。算法类型基类(例如,SymmetricAlgorithm)是抽象类。可以从抽象类型基类派生一组抽象算法类。算法实现类提供所选算法的具体实现;例如,DES、Triple-DES、Rijndael 和 RC2。

对称加密类继承等级

图 2
对称加密类继承等级

非对称算法支持

.NET 通过抽象基类 (System.Security.Crytography.AsymmetricAlgorithm) 提供下列非对称(公钥/私钥)加密算法:

DSACryptoServiceProvider

RSACryptoServiceProvider

这些算法用于对数据进行数字签名和加密。图 3 显示了继承等级。

非对称加密类继承等级

图 3
非对称加密类继承等级

哈希算法支持

.NET 提供了下列哈希算法:

SHA1、SHA256、SHA384、SHA512

MD5

HMACSHA(加密的哈希算法)

MACTripleDES(加密的哈希算法)

图 4 显示了哈希算法类的继承等级。

哈希加密类继承等级

图 4
哈希加密类继承等级

总结

加密技术是用于构建安全 Web 应用程序的重要技术。本附录介绍了证书和加密技术的一些基础知识,并介绍了一些由 System.Security.Cryptography 命名空间公开的类,使您可以更轻松地将加密技术安全解决方案应用于 .NET 应用程序。

有关 .NET 中的加密技术的详细信息,请搜索 MSDN 中题为“.NET Framework Cryptography Model”(.NET Framework 加密技术模型)的页面。

抱歉!评论已关闭.