密钥和证书

密钥和证书

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

顾名思义,公共密钥可广泛使用。相反,专用密钥为特定个人所有。将公共密钥传送至用户的分发机制称为证书。证书一般由证书颁发机构 (CA) 签名,以确认公共密钥来自于要求发送公共密钥的主体。CA 是相互信任的实体。

数字认证的典型实现包括证书签名过程。该过程如 1 中所示。

fa1sn01

1. 数字认证过程

1 所示的事件序列,如下:

1.

Alice 将一个签名的证书请求发送到 CA,该证书包含有她的姓名、公共密钥以及可能的附加信息。

2.

CA 根据 Alice 的请求创建一个消息。CA 使用自己的专用密钥对消息进行签名,以创建一个单独的签名。CA 将消息和签名返回给 Alice。Alice 的证书中包含了消息和签名。

3.

Alice 将她的证书发送给 Bob,让他有权访问她的公共密钥。

4.

Bob 使用 CA 的公共密钥验证证书的签名。如果证明签名有效,则他会接受证书中的公共密钥作为 Alice 的公共密钥。

如同使用任何数字签名一样,任意有权访问 CA 的公共密钥的接收者均可确定是否由特定的 CA 签署证书。这个过程不要求访问任何机密信息。在上述情况中,假设 Bob对 CA 的公共密钥具有访问权。如果 Bob 的CA 证书副本中包含公共密钥,则他就可以访问该密钥。

X.509 数字证书

X.509 数字证书不但包括用户名和公共密钥,而且还包括有关该用户的其他信息。这些证书不仅仅是数字信任结构层次中的跳板。它们使 CA 能够让证书的接收者不仅信任证书主体的公共密钥,而且信任有关证书主体的其他信息。这些证书中的其他信息可能包括电子邮件地址、授权对具有某种价值的文档进行签名,或者对成为一个 CA 并签署其他证书的授权。

X.509 证书和其他多数证书都具有有效期限。证书可以过期并且不再有效。CA 可以出于多种理由而撤消证书。要处理撤销,CA 会维护并分发撤销证书的列表,该列表称为证书取消列表 (CRL)。网络用户访问 CRL 以确定证书的有效性。

证书存储区

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

将任何证书存储在 MY store 中的同时,还应当为用户的个人证书(即用于签署和解密特定用户消息的证书)保留这个存储区。

除 MY store 之外,Windows 还具有以下证书存储区:

CA and ROOT。该存储区包含证书颁发机构的证书,它们是为用户所信任以向其他用户颁发的证书。操作系统提供了一套受信任的 CA 证书,管理员还可以添加其他的证书。

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

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

更多信息

有关更多信息,请参见 MSDN 网站上的“Cryptography, CryptoAPI, and 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。

fa1sn02

2. 对称加密类继承层次结构

不对称算法支持

.NET 通过抽象基类 (System.Security.Crytography.AsymmetricAlgorithm) 提供以下不对称(公共/专用密钥)加密算法:

DSACryptoServiceProvider

RSACryptoServiceProvider

这些算法用于数字签名和加密数据。 3 显示继承层次结构。

fa1sn03

3. 不对称加密类继承层次结构

哈希算法支持

.NET 提供以下哈希算法:

SHA1, SHA256, SHA384, SHA512 MD5

HMACSHA (Keyed Hashed algorithm)

MACTripleDES(加密的哈希算法)

4 显示哈希算法类的继承结构层次。

fa1sn04

4. 哈希加密类继承结构层次

 

小结

加密是一项构建 Web 应用程序的重要技术。本附录包括了一些证书和加密的基础知识,并简要介绍了一些由 System.Security.Cryptography 命名空间公开的类,使您能更方便地将加密安全解决方案整合到 .NET 应用程序之中。

有关 .NET 中密码技术的详细信息,请在 MSDN 中搜索标题为“.NET Framework Cryptography Model”的网页。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值