CryptoAPI简介(一)

一、有关加密API的国际标准和规范

Ø Generic Security Services API (GSS-API) 

Ø Intel/OpenGroup CDSA

Ø RSA PKCS#11 Cryptographic Token Interface (Cryptoki) Standard

Ø RSA BSAFE API

Ø 微软CryptoAPI V2.0

其中,CDSA 、RSA PKCS#11和微软CryptoAPI在实际中应用得较多,也是PKI推荐使用的加密 API。

二、微软CryptoAPI

微软最先在1996关注密码系统问题,引入 CryptoAPI (1.0 and 2.0) 和CAPICOM

支持CryptoAPI的系统:

Windows 95OSR2, Windows 98/Me,Windows SP3, Windows 2000/XP

.NET框架中的安全:通过引入System.Security.Cryptography名字空间

Ø CryptoAPI:为应用程序开发者提供在Win32环境下使用加密、验证等安全服务时的标准加密接口。

Ø CryptoAPI1.0:包含对密码系统的支持,密钥交换、管理、Cryptographic Service Providers

Ø CryptoAPI2.0:添加了对证书管理的支持。

Ø Cryptographic Service Providers:系统结构的可插入构件,可以通过使用不同的CSP来扩展不同的安全功能。

三、CryptoAPI在系统中的地位

微软的CryptoAPI是Win32平台下为应用程序开发者提供的数据加密和安全的编码接口。CryptoAPI函数集包含了基本的ASN.1的编码、解码,散列,数据加密和解密,数字证书管理等重要的密码学应用功能。数据的加密、解密支持对称和非对称两类算法。CryptoAPI是所有微软的Win32的应用程序以及第三方厂商应有程序使用的数据加密接口,诸如Internet Explorer、OutLook、Adobe等应用都是基于CryptoAPI开发的。

在不安全的网络上进行安全的数据传输涉及三个方面的要求:信息隐藏,身份鉴别和完整性检验。CryptoAPI除了提供上述三个功能外还提供标准的ASN.1编码、解码,信息解密,数字证书和证书存储区的管理,证书信任列表、吊销列表和证书有效性检查等功能。

信息隐藏

信息隐藏的意义是保障信息内容只能被特定的人获取。信息隐藏通常是使用某种形式的密码学方式。数据加密算法能保障信息的安区隐藏和传输。数据加密算法是将明文数据经过一定的变换使其看上去是一组毫无意义的数据。在没有加密密钥的情况下,对于好的加密算法想从密文获取明文信息是不可能的。被加密的数据可以是任意的ASCII编码文本文件,数据库文件,和任意需要进行安全传输的数据。这里,“信息”是指任意的一段数据,“明文”是指任意一段没有被加密的数据,“密文”是指任意一段加密的数据。

被加密的数据可以在不安全的通道上进行传输而不伤害其安全性。之后,密文可以被还原成明文,如下图所示:

数据加密和解密的概念是:对数据加密的时候需要一个加密密钥,相当于门上的一把钥匙。解密的时候,需要使用一个解密密钥来解开数据。加密密钥、解密密钥可以相同也可以不相同。

加密密钥必须小心保存,给其它用户的时候也必须通过安全的通道传递。对解密密钥的访问权限必须小心控制,因为拥有解密密钥意味着可以解开所有相应加密密钥加密的信息。

身份鉴别

安全通讯的前提是通讯的双方知道对方的身份。身份鉴别的任务就是鉴别一个用户或者实体的真实身份。标识用户身份的文档通常被称为信任状或者凭证。

身份鉴别有时候也用来判定接受的数据就是被发送的数据。如果A向B发送了一段数据,B需要鉴别这段数据就是A发出去的,而不是其它冒充A发出去的。为了满足这类验证的需求,CryptoAPI提供数字签名和校验函数,用来对信息进行鉴别。

因为在计算机网网络上传输的数据与用户之间并没有物理连接,因此对数据进行鉴别的凭证也必须能够在网络上进行传输。这种凭证必须由受信任的凭证发行机构发行。

数字证书就是平常说的证书就是这种凭证,是计算机在网络上进行身份验证的有效凭证。

数字证书是由一个被称为证书机构的信任组织或实体颁发的凭证。它包含与证书对应的用户公钥以及其它一些记录证书主题和用户信息的数据。证书机构只有在验证了证书主题和证书对应的用户公钥的有效性之后才会签发证书。

证书申请者和证书机构之间交换签发证书信息可以使用物理介质,比如软盘,进行传输。通常,这种信息都是在计算机网络上进行完成的。证书机构使用被信任的服务程序处理用户的请求和证书的签发工作。

完整性检测

任何通过不安全介质传输的信息都可以被意外或蓄意的修改。在现实世界中,盖章、签名就是用来提供和证明信息完整性的工具。

信息的接收者不但需要确定信息是由谁发送的,还要确定自己收到的信息是发送者发送的信息,而没有任何的变化。要建立数据的完整性检测机制,不仅要发送信息本身,还要发送用来校验数据的信息,这一信息通常被称作哈希值。数据和验证信息都可以与数字签名一起发送来证明其完整性。


你可能感兴趣的:(加密解密,软件编程技术)