创建人:五台 最近更改时间:2021-12-07 17:00:00
247
PKCS#11是使用非常普遍的密码设备接口,在实际应用中,国密的密码设备应用接口规范GMT0018与之作用相同,在技术体系架构中处于类似的位置。
在密码产品的开发中,按照PKCS#11或者GMT0018接口规范提供相应的接口封装,应用程序无需改动或者微小改动就可以更换底层密码设备。
PKCS#11的标准内容比较多,v2-20版本有400页,相应的,PKCS#11的标准解读,将按照概念及常用接口、角色、会话、对象、机制分别进行,最后介绍应用的调用流程,串起各个概念和接口。
此为开篇,简介一下概念及常用接口函数。
一、PKCS#11概述
PKCS#11是公钥加密标准Public-Key Cryptography Standards中的一份子,由RSA实验室发布。
PKCS#11标准定义了与密码令牌的独立于平台的API,API本身命名为Cryptoki,这个API已经发展成为一个通用的加密令牌的抽象层。
PKCS#11主要是应用于智能卡和HSM。
PKCS#11为使用加密Token的应用程序提供统一的编程接口,独立于设备,屏蔽加密设备的复杂性,应用程序可以方便地更换设备。
二、Cryptoki模型
Cryptoki:Cryptographic Token Interface Standard 密码令牌接口标准,应用程序与各种各样便携式密码设备间的一种接口。
设备的种类和所支持的能力的种类取决于专用的Cryptoki库。该标准只定义库的接口,不定义库的实现,接口实现由设备商提供。
Cryptoki主要目标是一个低级程序接口,将设备的细节抽象化,并把密码设备的通用模型-密码令牌提供给应用程序。第二目标是资源共享,单个设备能为一个以上的应用程序共享。
Cryptoki为一个或多个密码设备提供一个接口,这些设备通过大量的槽在系统中运行,密码设备可以按照某一命令集执行某些密码操作,这些命令通常通过标准的设备驱动程序来实现,Cryptoki的作用就是屏蔽这些硬件的差异。
三、令牌逻辑视图
Cryptoki的令牌逻辑试图是一个能存储对象和执行密码函数的设备。
Cryptoki定义数据、证书、密钥三个对象。数据对象由应用程序定义。一个证书对象存储一个证书。一个密钥对象存储一个密码密钥。
密钥可以使公共密钥、私钥、保密密钥,每种密钥用于特定的机制时都有其子类型。
令牌能建立、破坏、操作和搜寻对象,也可以对对象执行加密功能。
需要注意区分令牌的逻辑视图和实际实现,因为并非所有的密码设备都有“对象”的概念或执行每种密码函数。许多设备只能执行有限的算法并使用固定的存储位置来存储密钥。并非所有的Cryptoki库和领啊皮需要支持每种对象类型。
四、主要的接口函数
1、通用接口
2、槽和令牌管理
3、会话管理
4、对象管理
5、加密函数
6、解密函数
7、消息摘要
8、签名和MAC
9、验证签名和MAC
10、密钥管理
11、随机数生成
未完待续......