PKCS#11标准解读-概念和常用接口函数

PKCS#11标准解读之概念和常用接口函数

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、随机数生成


未完待续......


上海安当技术有限公司致力于开发身份认证、数据加密类产品,依托集中化、跨平台的密钥管理系统,专注于为金融、政府、企业等客户提供更加安全,便捷的身份认证管理和数据加密解决方案。公司主要产品及服务简称为4S:身份认证服务平台(Authentication Service Platform),密钥管理平台(Key Safe Platform),硬件加密机(Hardware Security Module),数据加密集成服务(Data Security Integration)。

推荐阅读更多精彩内容