一、密码引擎API的主要标准和规范包括:
1.微软的Crypto API
Web Crypto API 为脚本提供加密了一套关于密码(学)的接口,以便用于构建需要使用密码的系统。
2.PKCS#11
PKCS#11标准定义了与密码令牌(如硬件安全模块(HSM)和智能卡)的独立于平台的API,并将API本身命名为“Cryptoki”(来自“加密令牌接口”,发音为“crypto-key” - 但是“PKCS#11”通常用于指代API以及定义它的标准)。 API定义了最常用的加密对像类型(RSA密钥,X.509证书,DES / 三重DES密钥等)以及使用,创建/生成,修改和删除这些对象所需的所有功能。
3.GMT 0016-2012中国商用密码标准:GMT 0016-2012 智能密码钥匙密码应用接口规范,GMT 0018-2012密码设备应用接口规范等
GMT 0016-2012:本标准规定了基于 PKI密码体制的智能密码钥匙密码应用接口,描述了密码应用接口的函数、数据类型、参数的定义和设备的安全要求。
GMT 0018-2012:本标准规定了公钥密码基础设施应用技术体系下服务类密码设备的应用接口标准。
二、本标准适用于服务类密码设备的研制、使用,以及基于该类密码设备的应用开发,也可用干指导该类密码设备的检测。
研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客链接和代码链接。
内容:
0 查找各种标准的原始文档,研究学习(至少包含Crypto API,PKCS#11,GMT 0016-2012,GMT 0018-2012)(5分)
Crypto API学习链接:https://blog.csdn.net/jiftlixu/article/details/19835873
PKCS#11学习链接:https://www.jianshu.com/p/b5a80fe0e901
GMT 0016/0018-2012学习链接:https://max.book118.com/html/2018/0915/7164051200001146.shtm
1 总结这些API在编程中的使用方式(5分)
Crypto API函数
基本加密函数:
服务提供者函数:
密钥的产生和交换函数:
编码/解码函数:
数据加密/解密函数:
哈希和数字签名函数:
证书和证书库函数:
维护函数:
证书函数:
证书撤销列表函数:
证书信任列表函数:
扩展属性函数:
PKCS# 11
PKCS# 11标准定义了与密码令牌(如硬件安全模块(HSM)和智能卡)的独立于平台的API,API定义了最常用的加密对像类型(RSA密钥,X.509证书,DES / 三重DES密钥等)以及使用,创建/生成,修改和删除这些对象所需的所有功能。
PKCS# 11只提供了接口的定义, 不包括接口的实现,一般接口的实现是由设备提供商提供的。
PKCS#11函数类:
CKF_ENCRYPT:加密类
CKF_DECRYPT:解密类
CKF_DIGEST:摘要类
CKF_SIGN:签名类
CKF_SIGN_RECOVER:可恢复签名类
CKF_VERIFY:验证类
CKF_VERIFY_RECOVER:可恢复验证类
CKF_GENERATE:密钥产生
CKF_GENERATE_KEY_PAIR:密钥对产生
CKF_WRAP:密钥封装
CKF_UNWRAP:密钥解封
CKF_DERIVE:密钥派生
各类函数:
GM/T 0016-2012 智能密码钥匙密码应用接口规范
本标准规定了基于PKI密码体制的智能密码钥匙密码应用接口,描述了密码应用接口的函数数据类型、参数的定义和设备的安全要求。
本标准适用于智能密码钥匙产品的研制、使用和检测。
智能密码钥匙密码应用接口位于智能密码钥匙应用程序与设备之间,如下图所示。
设备管理系列函数:
应用管理系列函数:
容器管理系列函数:
密码服务系列函数:
GM/T 0018-2012密码设备应用接口规范
本标准规定了公钥密码基础设施应用技术体系下服务类密码设备的应用接口标准。
本标准适用于服务类密码设备的研制、使用,以及基于该类密码设备的应用开发,也可用于指导该类密码设备的检测。
设备管理类函数:
密钥管理类函数:
非对称算法运算类函数:
对称算法运算类函数:
杂凑运算类函数:
用户文件操作类函数:
2 列出这些API包含的函数,进行分类,并总结它们的异同(10分)
差异:Crypto API与PKCS#11
CryptoAPI是通过容器来组织密钥。一个容器可以存放两个RSA密钥对,一个用于签名验证,一个用于加解密。此外每个用户在加密对话其间还会随机产生许多会话密钥。
PKCS#11没有容器概念,它对密钥数据的保存和组织主要通过对象。p11定义了三种对象类型:数据对象,证书对象和密钥对象。
在CryptoAPI中的证书和证书库函数对应着PKCS#11中槽和令牌管理函数,其中CryptoAPI中多了证书库回调函数,可以进行返回操作。
相同的地方:
肯定要有最基本的加解密函数,以及签名和验证函数,以及证书的管理函数、密钥管理函数、信息处理函数。
3 以龙脉GM3000Key为例,写出调用不同接口的代码(Crypto API,PKCS#11,SKF接口),把运行截图加入博客,并提供代码链接(10分)
搞不出来