最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

PKCS#11及CSP接口标准

来源:动视网 责编:小OO 时间:2025-09-27 00:09:06
文档

PKCS#11及CSP接口标准

PKCS#11及CSP接口标准RSA非对称密码算法的三个创始人的姓的第一个字母联合起来就是RSA了,他们三个创建的公司的名字也就叫做RSA。在RSA有一个著名的公钥算法的实验室,这个实验室颁发的一系列行业标准就称作为PKCS标准,其中PKCS#11(简称P11)就是针对密码设备的接口指令标准。目前最新的版本应该是2.3了。P11模型中重要的概念之一是slot,也称为槽。一个slot为一个密码设备对象。某个打开的slot会话称之为session。Session之间存在不同的验证权限。而同一个sl
推荐度:
导读PKCS#11及CSP接口标准RSA非对称密码算法的三个创始人的姓的第一个字母联合起来就是RSA了,他们三个创建的公司的名字也就叫做RSA。在RSA有一个著名的公钥算法的实验室,这个实验室颁发的一系列行业标准就称作为PKCS标准,其中PKCS#11(简称P11)就是针对密码设备的接口指令标准。目前最新的版本应该是2.3了。P11模型中重要的概念之一是slot,也称为槽。一个slot为一个密码设备对象。某个打开的slot会话称之为session。Session之间存在不同的验证权限。而同一个sl
PKCS#11及CSP接口标准

RSA非对称密码算法的三个创始人的姓的第一个字母联合起来就是RSA了,他们三个创建的公司的名字也就叫做RSA。在RSA有一个著名的公钥算法的实验室,这个实验室颁发的一系列行业标准就称作为PKCS标准,其中PKCS#11(简称P11)就是针对密码设备的接口指令标准。目前最新的版本应该是2.3了。

P11模型中重要的概念之一是slot,也称为槽。一个slot为一个密码设备对象。某个打开的slot会话称之为session。Session之间存在不同的验证权限。而同一个slot的不同的session之间存在操作的互相影响性,同时在某些状况下,权限会发生同步。另外一个重要的概念是对象。P11中支持几种重要的对象,如公钥、私钥、对称密钥,数据对象等。

PKCS#11创建和支持下列对象:

对象说明
CKO_DATA应用程序定义的对象。对象的数据结构可由应用程序任意定义,但是数据意义的解释由应用程序负责。
CKO_SECRET_KEY对称加密算法使用的密钥。
CKO_CERTIFICATEX.509
CKO_PUBLIC_KEYRSA
CKO_PRIVATE_KEYRSA
CKO_MECHANISM算法对象
 PKCS#11的对象可根据其生命期长短的不同分成两大类:一类是持久存储的类对象,这类对象被保存在USB Key的安全存储区域当中,直到应用程序主动删除这些对象;另一类是会话对象,这类对象只存在于运行时建立的特定会话(Session对象)当中,一旦会话结束,这类对象也跟着被删除。决定对象生命期的模板属性是CKA_TOKEN,这是个布尔值,所有的对象都有这一属性。当该值为TRUE时,该对象将被保存到Key内的存储空间,否则,该对象保存在会话空间中,当会话结束后,该对象即销毁。

PKCS#11的对象除了生命期长短有分别之外,在访问权限上也有。所有的对象都可根据访问权限的不同分成两大类:一类是公开对象,这类对象是任何用户都可以访问的;另一类是私有对象,这一类对象只有身份被验证的用户才有权访问。决定对象的访问类型的模板属性是CKA_PRIVATE。这是个布尔值,所有的对象都有这一属性。应用程序可根据需要决定对象应为私有对象还是公开对象。

P11标准颁发了70余条指令。其中部分指令简介如下表:

接口类型函数名称描述
通用接口函数C_Initialize初始化 Cryptoki
C_Finalize整理各种适合 Cryptoki的资源
C_GetInfo获得关于Cryptoki的通用信息
C_GetFunctionList获得Cryptoki 库函数的进入点
槽和令牌管理函数C_GetSlotList获得系统中槽的名单
C_GetSlotInfo获得关于特殊槽的信息
C_GetTokenInfo获得关于特殊令牌的信息
C_WaitForSlotEvent等待槽事件(令牌插入,转移等) 的发生
C_GetMechanismList获得由令牌支持的机制的名单
C_GetMechanismInfo获得关于特殊机制的信息
C_InitToken初始化一个令牌
C_InitPIN初始化普通用户的 PIN
C_SetPIN改变现在用户的PIN
会话管理函数C_OpenSession打开一个应用程序和特殊令牌之间的连接或安装一个应用程序呼叫返回令牌插入
C_CloseSession关闭一个会话
C_CloseAllSessions用令牌关闭所有的会话
C_GetSessionInfo获得关于会话的信息
C_GetOperationState获得会话的加密操作状态
C_SetOperationState设置会话的加密操作状态
C_Login注册一个令牌
C_Logout从一个令牌注销
对象管理函数C_CreateObject建立一个对象
C_CopyObject建立一个对象的拷贝
C_DestroyObject销毁一个对象
C_GetObjectSize获取字节中一个对象的大小
C_GetAttributeValue获取一个对象的属性值
C_SetAttributeValue改变一个对象的属性值
C_FindObjectsInit初始化一个对象的搜索操作
C_FindObjects继续一个对象搜索操作
C_FindObjectsFinal完成一个对象搜索操作
加密函数C_EncryptInit初始化一个加密操作
C_Encrypt加密单部分数据
C_EncryptUpdate继续一个多部分加密操作
C_EncryptFinal完成一个多部分加密操作
解密函数C_DecryptInit初始化一个解密操作
C_Decrypt解密单部分加密数据
C_DecryptUpdate继续一个多部分解密操作
C_DecryptFinal完成一个多部分解密操作
消息解密函数C_DigestInit初始化一个消息摘要操作
C_Digest摘要单部分数据
C_DigestUpdate继续一个多部分摘要操作
C_DigestKey摘要一个密钥
C_DigestFinal完成一个多部分摘要操作
签名和消息鉴别函数C_SignInit初始化一个签名操作
C_Sign签名单部分数据
C_SignUpdate继续一个多部分签名操作
C_SignFinal完成一个多部分签名操作
C_SignRecoverInit初始化一个签名操作,在操作中数据能从签名中恢复
C_SignRecover签名单部分数据,在操作中数据能从签名中恢复
签名鉴定消息鉴别函数C_VerifyInit初始化一个鉴定操作
C_Verify在单部分数据上鉴定一个签名
C_VerifyUpdate继续一个多部分鉴定操作
C_VerifyFinal完成一个多部分鉴定操作
C_VerifyRecoverInit初始化一个鉴定操作,在操作中数据能从签名中恢复
C_VerifyRecover在单部分数据上鉴定一个签名,在操作中数据能从签名中恢复
双效加密函数C_DigestEncryptUpdate继续类似的多部分摘要和加密操作
C_DecryptDigestUpdate继续类似的多部分解密和摘要操作
C_SignEncryptUpdate继续类似的多部分签名和加密操作
C_DecryptVerifyUpdate继续类似的多部分解密和鉴定操作
密钥管理函数C_GenerateKey产生一个保密密钥
C_GenerateKeyPair产生一个公共/私钥对
C_WrapKey加密一个密钥
C_UnwrapKey解密一个密钥
C_DeriveKey从基础密钥派生一个密钥
随机数生成函数C_SeedRandom把一个附加种子材料加入随机数字生成器
C_GenerateRandom生成随机数
并行功能管理函数C_GetFunctionStatus已废弃函数,返回CKR_FUNCTION_NOT_PARALLEL
C_CancelFunction已废弃函数,返回CKR_FUNCTION_NOT_PARALLEL
 3、CSP接口标准

CSP接口标准为微软所颁发,在windows操作系统上通行。CSP中重要的概念是容器(container)。一个容器中具有一对公私钥。而证书却是这一对密钥的附加属性了。

CSP总共有23个函数接口。简介如下:

接口类型函数名称描述
CSP连接函数CPAcquireContext为应用程序创建一个上下文
CPGetProvParam返回CSP相关的信息
CPReleaseContext释放CPAcquireContext创建的上下文
CPSetProvParam设置CSP的参数操作
CSP密钥生成和交换函数CPDeriveKey从一个数据散列中生成一个会话密钥,它保证生成的密钥互不相同
CPDestroyKey释放一个密钥句柄,释放后,句柄将无效,密钥将无法再被访问
CPExportKey从CSP容器中导出密钥
CPGenKey用来生成密钥或密钥对
CPGenRandom使用随机数填充一个缓冲
CPGetKeyParam用来得到加密操作密钥的属性
CPGetUserKey用来获取CSP容器中的持久密钥对
CPImportKey从一个blob中导入密钥到CSP容器中
CPSetKeyParam设置密钥的属性
CSP加解密函数CPDecrypt用来解密先前被加密的数据
CPEncrypt用来加密明文
CSP散列和数字签名函数CPCreateHash初始化并散列输入数据
CPDestroyHash删除一个散列对象句柄
CPDuplicateHash创建一个散列对象的拷贝
CPGetHashParam获取散列对象的计算结果
CPHashData散列输入的数据
CPSetHashParam定制一个散列对象的属性
CPSignHash签名一个散列对象
CPVerifySignature校验一个数字签名
 4、国密接口标准

国家密码管理局在2011年也制定了相关的接口标准,其标准在上层方面借鉴或参考了CSP接口,存在容器的概念,在底层操作上借鉴或参考了P11接口,有对象的标准,同时支持获取相关属性。具体国密局接口标准及其修订情况,请参考国家密码管理局网站

文档

PKCS#11及CSP接口标准

PKCS#11及CSP接口标准RSA非对称密码算法的三个创始人的姓的第一个字母联合起来就是RSA了,他们三个创建的公司的名字也就叫做RSA。在RSA有一个著名的公钥算法的实验室,这个实验室颁发的一系列行业标准就称作为PKCS标准,其中PKCS#11(简称P11)就是针对密码设备的接口指令标准。目前最新的版本应该是2.3了。P11模型中重要的概念之一是slot,也称为槽。一个slot为一个密码设备对象。某个打开的slot会话称之为session。Session之间存在不同的验证权限。而同一个sl
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top