PKCS# 11和CSP概念技术对比
2012-07-19 17:38
190 查看
本文针对PKCS# 11和CSP进行学习,以及基于CSP的USBKey密码符合性检测平台的模块设计。
开发商按照标准开发 CSP,就可以把自己开发的软件或硬件密码模块无缝连接到 CryptoAPI 的体系中。
CSP:
CSP的开发目的在于开发符合CryptoSPI要求的接口函数,并且把硬件实现或者软件实现的密码运算功能按照CryptoAPI所能够识别和使用的方式进行封装。
对于CSP而言,应用程序与CSP的交互首先通过CryptoAPI函数接口进行接口调用,然后通过对CryptoSPI(Cryptographic System Programming Interface)将CryptoAPI接口进行的操作传递给CSP。CSP随后则可进行相关处理,完成应用程序所要求的密码操作。
CSP需要USB Key厂商提供CSP接口程序。
PKCS# 11:
PC/SC中的PKCS#11作为密码令牌接口开放标准,它为拥有密码信息(密钥或证书)和执行密码学函数的用户设备定义了一个应用程序接口,将设备的细节抽象化,并把密码设备的通用模型——密码令牌,简称令牌,提供给应用程序。
主要术语和概念:
(文字以及图片内容从《PKCS_11密码令牌接口标准技术综述》、《一种基于Cryptoki应用程序接口的安全应用方案》、《基于USBKEY的CSP与PKCS_11互通的实现方法》和《两种密码中间件模块PKCS_11与CSP的对比分析》等相关论文中选择性的整理而来,以便日后参考)
Cryptoki是一种应用程序与各种密码设备(基于智能卡、PCMCIA卡以及智能软盘)间的一种接口。该接口提供与设备细节无关的密码令牌给应用程序使用。
Cryptoki 采用槽、令牌、用户、会话、类、对象、机制、属性、模板、会话句柄、对象句柄、功能函数等概念来抽象对密码设备的操作过程。
一个令牌的Cryptoki的逻辑视图是一个能存储对象、执行密码功能的设备;会话抽象为应用到设备的连接;对象是属性的集合。
对象可根据生命周期分为:会话对象和令牌对象;属性描述了对象的特征;模板就是一个属性数组;应用打开一个会话时,Cryptoki以会话句柄方式标识会话,便于应用使用会话句柄访问会话,同时应用可通过调用Cryptoki接口创建或查询对象,而Cryptoki以对象句柄方式标识对象,便于会话通过对象句柄访问对象;
Cryptoki 定义了四类存储对象:数据对象、证书对象、密钥对象、密码算法域参数对象。
密钥可以是一个公钥或一个私钥或一个保密密钥或为一个OTP密钥。这几类密钥都有用在特别机制中的子类型。一个机制作为一个对象明确指定了一个密码处理是怎样被执行的。
Cryptoki中定义的机制被不同的密码操作支持。对于一个特定的令牌,一个特定的操作只支持Cryptoki中定义的机制集合的一个子集。
对象的类型主要有五种:数据、证书、公钥、私钥和秘密密钥。比如,CK_OBJE CT_CL ASS是标识Cryptoki识别的那些对象类别(或类型)的一个。
对象按访问方式分为Public对象和Private对象。对Public对象进行操作不需要登录到TOKE N ,而对Public对象的操作需要先用PIN 码登录到TOKE N 。管理员仅能对Public对象进行操作,而普通用户可对所有对象进行操作。
对象按使用期限和可见性可以分为TOKEN(令牌)对象和SESSION(会话)对象。TOKEN对象对所有的应用程序可见,并且一直保存在TOKEN中,即使在会话关闭或令牌从槽中拔出后。SESSION对象则是暂时的,当会话关闭时,该会话产生的所有会话对象就会自动被破坏,只有产生会话对象的应用程序能够查看它们。
Cryptoki对创建对象时那些属性必须指定那些可选都有明确的规定,并且明确了属性之间的一致性定义。在对象拷贝时,能否修改对象的属性依赖于确定对象的属性值,如一个保密密钥对象在使用C_CopyObject进行对象拷贝时其CKA_SENSITIVE 属性的值可以由 CK_FALSE 改变为 CK_TRUE,而不能由 CK_TRUE 改变到 CK_FALSE。
Cryptoki中的用户Cryptoki识别三种用户类型:安全官(Security Officer(SO))、正规用户(normal user(NU))、上下文特定用户(contextspecific user(CSU))。只有NU在通过认证之后才能准许访问令牌上的私有对象。可能有些令牌在执行任何密码操作之前还要求用户证实身份,而不管密码操作是否涉及私有对象。
SO 的角色是初始化一个令牌,并设置 NU 的 PIN(或者定义其他方式来对 NU 进行认证),或许还要操纵一些公用对象。NU 在 SO 没有为其设置
PIN 之前是不能登录令牌的。事实上SO 和 NU 可以是一个人,这可根据密码令牌的管理策略来确定。CSU 只有在重新认证密码操作时才会用到。
/**********
CSP和PKCS#11的兼容性
主要区别:
1、Cryptoki 使每个密码设备从逻辑上看与其它设备无异,因此应用不需要直接对设备驱动的接口,Cryptoki 把这些细节隐藏了。
2、PKCS#11 主要在 Unix、Linux 平台上,是一个开放的标准。CSP 主要用在 Windows 平台上和各种应用。
3、CSP需要USB Key厂商提供CSP接口程序。
CSP调用PKCS:
(1) 在 PKCS#11 的基础上再实现 CSP ,即 CSP 调用 P K C S # 1 1 。
(2) 做一个中间层,PKCS#11和 CSP 看到 Key 里面的东西是一样的。
(3) 在Key内约定同一个管理文件,共同维护该管理文件,但PKCS#11 需要维护额外的内容,而这部分内容对 CSP 是不透明的。
注:
本来是想考虑通过CSP调用PKCS#11的可操作性如何,不过似乎比较复杂而且多余,因此仅列在这里作为日后其他扩展开发的参考。
***********/
开发商按照标准开发 CSP,就可以把自己开发的软件或硬件密码模块无缝连接到 CryptoAPI 的体系中。
CSP:
CSP的开发目的在于开发符合CryptoSPI要求的接口函数,并且把硬件实现或者软件实现的密码运算功能按照CryptoAPI所能够识别和使用的方式进行封装。
对于CSP而言,应用程序与CSP的交互首先通过CryptoAPI函数接口进行接口调用,然后通过对CryptoSPI(Cryptographic System Programming Interface)将CryptoAPI接口进行的操作传递给CSP。CSP随后则可进行相关处理,完成应用程序所要求的密码操作。
CSP需要USB Key厂商提供CSP接口程序。
PKCS# 11:
PC/SC中的PKCS#11作为密码令牌接口开放标准,它为拥有密码信息(密钥或证书)和执行密码学函数的用户设备定义了一个应用程序接口,将设备的细节抽象化,并把密码设备的通用模型——密码令牌,简称令牌,提供给应用程序。
主要术语和概念:
(文字以及图片内容从《PKCS_11密码令牌接口标准技术综述》、《一种基于Cryptoki应用程序接口的安全应用方案》、《基于USBKEY的CSP与PKCS_11互通的实现方法》和《两种密码中间件模块PKCS_11与CSP的对比分析》等相关论文中选择性的整理而来,以便日后参考)
Cryptoki是一种应用程序与各种密码设备(基于智能卡、PCMCIA卡以及智能软盘)间的一种接口。该接口提供与设备细节无关的密码令牌给应用程序使用。
Cryptoki 采用槽、令牌、用户、会话、类、对象、机制、属性、模板、会话句柄、对象句柄、功能函数等概念来抽象对密码设备的操作过程。
一个令牌的Cryptoki的逻辑视图是一个能存储对象、执行密码功能的设备;会话抽象为应用到设备的连接;对象是属性的集合。
对象可根据生命周期分为:会话对象和令牌对象;属性描述了对象的特征;模板就是一个属性数组;应用打开一个会话时,Cryptoki以会话句柄方式标识会话,便于应用使用会话句柄访问会话,同时应用可通过调用Cryptoki接口创建或查询对象,而Cryptoki以对象句柄方式标识对象,便于会话通过对象句柄访问对象;
Cryptoki 定义了四类存储对象:数据对象、证书对象、密钥对象、密码算法域参数对象。
密钥可以是一个公钥或一个私钥或一个保密密钥或为一个OTP密钥。这几类密钥都有用在特别机制中的子类型。一个机制作为一个对象明确指定了一个密码处理是怎样被执行的。
Cryptoki中定义的机制被不同的密码操作支持。对于一个特定的令牌,一个特定的操作只支持Cryptoki中定义的机制集合的一个子集。
对象的类型主要有五种:数据、证书、公钥、私钥和秘密密钥。比如,CK_OBJE CT_CL ASS是标识Cryptoki识别的那些对象类别(或类型)的一个。
对象按访问方式分为Public对象和Private对象。对Public对象进行操作不需要登录到TOKE N ,而对Public对象的操作需要先用PIN 码登录到TOKE N 。管理员仅能对Public对象进行操作,而普通用户可对所有对象进行操作。
对象按使用期限和可见性可以分为TOKEN(令牌)对象和SESSION(会话)对象。TOKEN对象对所有的应用程序可见,并且一直保存在TOKEN中,即使在会话关闭或令牌从槽中拔出后。SESSION对象则是暂时的,当会话关闭时,该会话产生的所有会话对象就会自动被破坏,只有产生会话对象的应用程序能够查看它们。
Cryptoki对创建对象时那些属性必须指定那些可选都有明确的规定,并且明确了属性之间的一致性定义。在对象拷贝时,能否修改对象的属性依赖于确定对象的属性值,如一个保密密钥对象在使用C_CopyObject进行对象拷贝时其CKA_SENSITIVE 属性的值可以由 CK_FALSE 改变为 CK_TRUE,而不能由 CK_TRUE 改变到 CK_FALSE。
Cryptoki中的用户Cryptoki识别三种用户类型:安全官(Security Officer(SO))、正规用户(normal user(NU))、上下文特定用户(contextspecific user(CSU))。只有NU在通过认证之后才能准许访问令牌上的私有对象。可能有些令牌在执行任何密码操作之前还要求用户证实身份,而不管密码操作是否涉及私有对象。
SO 的角色是初始化一个令牌,并设置 NU 的 PIN(或者定义其他方式来对 NU 进行认证),或许还要操纵一些公用对象。NU 在 SO 没有为其设置
PIN 之前是不能登录令牌的。事实上SO 和 NU 可以是一个人,这可根据密码令牌的管理策略来确定。CSU 只有在重新认证密码操作时才会用到。
/**********
CSP和PKCS#11的兼容性
主要区别:
1、Cryptoki 使每个密码设备从逻辑上看与其它设备无异,因此应用不需要直接对设备驱动的接口,Cryptoki 把这些细节隐藏了。
2、PKCS#11 主要在 Unix、Linux 平台上,是一个开放的标准。CSP 主要用在 Windows 平台上和各种应用。
3、CSP需要USB Key厂商提供CSP接口程序。
CSP调用PKCS:
(1) 在 PKCS#11 的基础上再实现 CSP ,即 CSP 调用 P K C S # 1 1 。
(2) 做一个中间层,PKCS#11和 CSP 看到 Key 里面的东西是一样的。
(3) 在Key内约定同一个管理文件,共同维护该管理文件,但PKCS#11 需要维护额外的内容,而这部分内容对 CSP 是不透明的。
注:
本来是想考虑通过CSP调用PKCS#11的可操作性如何,不过似乎比较复杂而且多余,因此仅列在这里作为日后其他扩展开发的参考。
***********/
相关文章推荐
- 存储技术比对:SAN和NAS两种产品概念对比介绍
- 数据挖掘概念与技术11--数据仓库的实现
- 【技术】C#、C++、JAVA中虚函数和抽象函数的概念对比
- k8s 重要概念 - 每天5分钟玩转 Docker 容器技术(117)
- C#、C++、JAVA中虚函数和抽象函数的概念对比
- [转]MTD的概念、uClinux平台下的Flash存储技术
- 【收藏】本周ASP.NET英文技术文章推荐[11/26 - 12/02]
- 展望2008年后11大IT技术的发展方向
- 展望2008年后11大IT技术的发展方向
- SQL技术内幕-11 聚集索引和非聚集索引
- 紫外线消毒器应用UV灯管技术优缺点对比
- 5.数据挖掘概念笔记——数据立方体技术
- 关于大型网站技术演进的思考(十九)--网站静态化处理—web前端优化—上(11)
- 射频识别技术漫谈(11)——Mifare系列卡的共性
- CORBA技术系列二:CORBA基础概念-对象引用
- Android 4.0和WP7.5开发技术对比
- 技术文章 | 深度学习的这些坑你都遇到过吗?神经网络11大常见陷阱及应对方法
- NGUI插件技术(层的概念)
- Java技术_每天掌握一种设计模式(001)_设计模式概念及分类