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

未完待续......

猜你喜欢

转载自blog.csdn.net/weixin_51174449/article/details/124384331