实验一-密码引擎-3-加密API研究
任务详情
密码引擎API的主要标准和规范包括:
1 微软的Crypto API
2 RAS公司的PKCS#11标准
3 中国商用密码标准:GMT 0016-2012 智能密码钥匙密码应用接口规范,GMT 0018-2012密码设备应用接口规范等
研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客链接和代码链接。
内容:
0 查找各种标准的原始文档,研究学习(至少包含Crypto API,PKCS#11,GMT 0016-2012,GMT 0018-2012)(5分)
1 总结这些API在编程中的使用方式(5分)
2 列出这些API包含的函数,进行分类,并总结它们的异同(10分)
3 以龙脉GM3000Key为例,写出调用不同接口的代码(Crypto API,PKCS#11,SKF接口),把运行截图加入博客,并提供代码链接(10分)
微软的Crypto API学习情况
任务0:研究学习
CryptoAPI是应用程序编程接口,使应用程序开发人员能够将身份验证、编码和加密添加到基于Windows的应用程序。
CryptoAPI 系统体系结构由五个主要功能领域组成:基本加密函数、证书编码/解码函数、证书Microsoft Store函数、简化的消息函数、低级别消息函数。
(1)基本加密函数
-
用于连接到云解决方案提供商的上下文函数。 这些函数使应用程序能够按名称选择特定的云解决方案提供商,或选择可以提供所需功能类的特定云解决方案提供商。
用于生成和存储加密密钥的密钥生成函数。 完全支持更改 链接模式、 初始化向量和其他加密功能。 有关详细信息,请参阅密钥生成和Exchange函数。
用于交换或传输密钥的密钥交换函数。 有关详细信息,请参阅加密密钥存储和Exchange以及密钥生成和Exchange函数。
(2)证书编码/解码函数 -
用于加密或解密数据的函数。 还支持 哈希数据。有关详细信息,请参阅数据加密和解密函数和数据加密和解密。
(3)证书Microsoft Store函数
用于管理数字证书集合的函数。 有关详细信息,请参阅数字证书和证书Microsoft Store函数。
(4)简化的消息函数
- 用于加密和解密消息和数据的函数。
- 用于对消息和数据进行签名的函数。
- 用于验证已接收消息和相关数据的签名的真实性的函数。
- 有关详细信息,请参阅简化的消息和简化的消息函数。
(5)低级别消息函数
用于执行简化消息函数执行的所有任务的函数。 低级别消息函数比简化的消息函数更灵活,但需要更多的函数调用。 有关详细信息,请参阅低级别消息和低级别消息函数。
以下是功能区示意表:
功能区域 | 函数名 |
---|---|
基本加密函数 | Crypt |
编码/解码函数 | Crypt |
证书存储函数 | 存储 |
简化的消息函数 | 消息 |
低级别消息函数 | Msg |
- 应用程序在所有这些领域都使用函数。这些函数组合在一起,组成 CryptoAPI。 基本加密函数将 CSP 用于必要的加密算法以及加密密钥的生成和安全存储。
使用了两种不同类型的加密密钥:会话密钥(用于单个加密/解密)和公钥/私钥对,这些密钥在更永久的基础上使用。
任务1:使用方法
使用CryptoAPI编写一个文件保护程序,具有如下功能:
(1)给定明文文件,生成加密文件,同时产生文件的数字签名文件;
(2)给定密文文件,解密出明文文件,并验证签名的正确性。
在不安全的网络上进行安全的数据传输涉及三个方面的要求:信息隐藏,身份鉴别和完整性检验。CryptoAPI除了提供上述三个功能外还提供标准的ASN.1编码、解码,信息解密,数字证书和证书存储区的管理,证书信任列表、吊销列表和证书有效性检查等功能。
任务2:API函数
基本加密函数
- CSP是真正实行加密的独立模块,他既可以由软件实现也可以由硬件实现。但是他必须符合CryptoAPI接口的规范。
每个CSP都有一个名字和一个类型。每个CSP的名字是唯一的,这样便于CryptoAPI找到对应的CSP。目前已经有9种CSP类型,并且还在增长。下表列出出它们支持的密钥交换算法、签名算法、对称加密算法和Hash算法。
函数列表如下:
CSP类型 | 交换算法 | 签名算法 | 对称加密算法 | Hash算法 |
---|---|---|---|---|
PROV_RSA_FULL | RSA | RSA | RC2,RC4 | MD5,SHA |
PROV_RSA_SIG | none | RSA | none | MD5,SHA |
PROV_RSA_SCHANNEL | RSA | RSA | RC4,DES,Triple DES | MD5,SHA |
PROV_DSS | DSS | none | DSS | MD5,SHA |
PROV_DSS_DH | DH | DSS | CYLINK_MEK | MD5,SHA |
PROV_DH_SCHANNEL | DH | DSS | DES,Triple DES | |
PROV_FORTEZZA | KEA | DSS | Skipjack | SHA |
PROV_MS_EXCHANGE | RSA | RSA | CAST | |
PROV_SSL | RSA | RSA | Varies | Varies |