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

本文介绍了非对称加密中的密钥和证书概念,解释了证书如何帮助验证公钥的所有者身份,以及数字签名的过程。此外,还概述了.NET Framework中提供的加密服务和技术。

密钥和证书

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

顾名思义,公钥是指可以提供给很多人的密钥。相反,私钥是特定个人所独有的。向用户传送公钥使用的分发机制是证书。通常,证书颁发机构 (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 加密技术模型)的页面。

 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值