`

PKCS#11

阅读更多

原文 http://www.iteye.com/problems/6228

 

配置环境:JDK5.0,支持标准PKCS#11的设备(包括Smartcard,加密卡等等),支持PKCS#11的系统(WINDOWS/LINUX /UNIX等),以及设备供应商提供的标准PKCS#11接口。(注:PKCS#11接口只是一个动态库文件,其中封装了PKCS#11标准函数,在不同 的平台上其格式不同,例如在WINDOWS上其格式是*.DLL,在LINUX上其形式是*.so)

配置方法:

在JDK5.0环境中配置访问PKCS#11的方法非常简单:只用编辑一个*.CFG文件就可以了。因为JDK5.0中已经做好了对PKCS#11的桥接。具体方法是:

1、在*.CFG文件中编辑好相应的参数和对应的值。

2、在JAVA语言中用Provider p = new sun.security.pkcs11.SunPKCS11(*.cfg文件的绝对路径)

3、进行相应的操作,具体的操作会在我的下一片文章中介绍。

具体*.cfg的内容以及格式是:

1、name=value 其中name是指明后面的value是该PKCS#11的名称。

2、library=*.dll/*.so的绝对路径 library后面是指明标准PKSC#11接口的绝对地址

3、description=value是该PKCS#11的注释,可以通过前面的Provider p的getInfo方法得到其值

4、slotListIndex = value/slot = value 这个标示比较特殊,如果该PKCS#11的硬件提供商提供了多个可以支持该PKCS#11的设备,那么不同设备之间必须通过不同的slot来区分,那么, 在使用的时候必须明确的了解具体的硬件对应的slot的值,其中slotListIndex和slot中只用一个即可。如果在配置文件中不指明的话,那么 默认的是slot=0。这时如果提供商提供了多个硬件设备,则你的程序中智能调用slot=0的那个设备。所以建议在编辑该*.cfg时添加该参数。

5、其余的参数并不是很常用,欲详细了解可以访问http://java.sun.com/j2se/1.5.0/docs/guide/security/p11guide.html

解决方案:

跨平台时JAVA语言的一大特性,那么PKCS#11也应做到跨平台操作。当然,前提是该实现了PKCS#11接口的硬件可以跨平台(专有驱动或 者是无驱型)。但由于*.cfg中指定PKCS#11接口的地址是绝对地址,所以如果想要做到跨平台就要动态的产生cfg文件了。

具体的解决方案如下:

1、首先确认该硬件可以支持当前的系统。

2、确认已经安装了相应的驱动(无驱型设备的驱动是由系统提供的)

3、确认该硬件的slotListIndex或者slot值

4、使用System.getProperty(“java.home”);获得路径,做为存储*.CFG文件的目录。取名为cfgpath

5、用JFileChooser来选择PKCS#11文件,从而获得library的值,取名为LibPath

6、建立一个FileOutputStream来存储*.CFG文件,分别写入name的值,library的值(LibPath)description的值和slotListIndex的值。这样,就可以动态的创建cfg文件了。

7、然后 就可以用Provider p = new sun.security.pkcs11.SunPkcs11(cfgpath);来加载文件,从而达到通过PKCS11来访问硬件的目的。

分享到:
评论

相关推荐

    PKCS#11的部分使用例码

    PKCS#11应用编程接口的使用示例 PKCS#11是一个公共密钥加密标准,定义了cryptoki接口,提供了一个抽象层次来访问各种加密设备和加密算法。下面我们将从给定的文件中提取相关的知识点,详细解释PKCS#11的使用示例。 ...

    PKCS #11 v2.11: Cryptographic Token Interface Standard(包含C头文件)

    PKCS #11,全称为Public-Key Cryptography Standards #11,是由RSA安全公司发起的一套接口标准,用于实现加密令牌(如智能卡、硬件安全模块HSM等)与应用程序之间的交互。版本2.11是这个标准的一个更新,旨在提供...

    pkcs#11标准中文文档

    PKCS#11是RSA安全公司制定的一套标准,全称为Public Key Cryptography Standards #11,主要用于定义智能卡、硬件安全模块(HSM)和其他密码学设备与应用程序之间的接口。这个标准允许软件通过统一的API(应用程序...

    pkcs-11v2-20d3.rar_PKCS#1_PKCS#11 USBKey_RSA PKCS_pkcs_usbkey

    在密码系统中,PKCS#11是公钥加密标准(PKCS, Public-Key Cryptography Standards)中的一份子 ,由RSA实验室(RSA Laboratories)发布[1],它为加密令牌定义了一组平台无关的API ,如硬件安全模块和智能卡。...

    pkcs#11中文文档

    PKCS #11,全称为“Public Key Cryptography Standards #11”,是由RSA安全公司发起的一套标准,用于定义加密令牌(如智能卡、硬件安全模块HSM等)与应用程序之间的接口。这个标准允许应用程序利用这些物理设备进行...

    Header files for PKCS #11 v2.20

    PKCS #11是RSA安全公司定义的一套接口标准,全称为Public-Key Cryptography Standards (PKCS) #11,它提供了与硬件安全模块(HSMs)和智能卡等加密设备交互的统一接口。PKCS #11 v2.20是这个标准的一个版本,该版本...

    pkcs#11标准中英文档

    **PKCS#11标准详解** PKCS#11,全称为Public-Key Cryptography Standards #11,是由RSA安全公司发起的一套标准,用于定义密码学硬件设备(如智能卡、硬件安全模块HSM)与应用程序之间的接口。这个标准允许应用程序...

    PKCS#11 v2.2(DOC)

    ### PKCS#11 v2.2:Cryptoki标准详解 #### 一、引言 PKCS#11,也称为Cryptoki标准,是公钥密码学标准集的一部分,由RSA实验室开发并发布。PKCS#11为密码模块定义了一个程序设计接口(API),这个API被命名为Cryptoki...

    pkcs#11规范2-20版

    PKCS#11是公钥密码学标准(Public-Key Cryptography Standards)的一部分,编号为11,名为“Cryptographic Token Interface Standard”。PKCS#11标准定义了一套丰富的加密令牌接口,也被称为“Cryptoki”,主要用来...

    pkcs#11 标准中文文档

    PKCS #11 是一个开放的标准,全称为“Cryptographic Token Interface Standard”,它定义了软件和硬件加密令牌之间的接口。这个标准由RSA实验室提出,并在不断更新中,版本号为v2.11。PKCS #11 主要用于智能卡、硬件...

    PKCS #11 v2.11密码令牌接口标准(中英文)

    PKCS #11是其中之一,它定义了密码令牌接口标准,主要用于智能卡、硬件安全模块(HSMs)、USB密钥等硬件设备,提供了一个统一的编程接口,使得软件应用程序可以透明地使用这些物理安全设备进行加密、解密、签名和...

    PKCS.rar_PKCS1_PKCS#11_pkcs_pkcs#

    在你提供的文件中,我们重点关注两个PKCS标准:PKCS#1和PKCS#11。 **PKCS#1**,全称为RSA Laboratories' Public-Key Cryptography Standard Number 1,是定义RSA公钥加密算法的细节和实现方法的标准。它主要关注...

    pkcs#11测试源码

    PKCS#11是RSA安全公司制定的一套标准接口,全称为Public-Key Cryptography Standards #11,主要用于智能卡、硬件安全模块(HSM)和其他密码学设备与应用程序之间的交互。这个标准允许软件应用程序通过一组统一的API...

    用于 TPM2硬件的 PKCS#11 接口_C语言_代码_下载

    PKCS #11 是一种公钥加密标准,它定义了一种从令牌/设备(如硬件安全模块 (HSM)、智能卡等)访问加密服务的标准方法。在这个项目中,我们打算使用 TPM2 设备作为加密令牌。 入门: 建造- 如何建造 初始化- 如何配置...

    PKCS#11枚举对象小工具

    使用PKCS#11可是枚举出证书对象,数据对象等

    按PKCS#10数据格式封装PKCS#10数据

    PKCS#10是这一系列标准中的一个,全称为"Certification Request Syntax Standard",即证书请求语法标准。它定义了一种格式,用于创建和交换证书请求,通常是当用户或系统需要获取数字证书时使用。这个过程涉及到ASN....

    pkcs_11v2.11中文标准

    PKCS #11 是一个开放的标准,全称为“Public Key Cryptography Standards #11”,它定义了应用程序如何与硬件安全模块(HSMs)或智能卡等密码令牌进行交互的接口。这个标准允许软件利用这些物理设备提供的加密、签名...

    PKCS11密码令牌接口标准中文版.pdf

    1. 安全开发和USBKey开发:PKCS#11标准在安全开发领域中扮演着基础性的角色,特别是对于USBKey这类安全硬件的开发。USBKey是一种广泛使用的安全硬件,它提供一种方便的载体来存储用户的密钥,用于数字签名、身份验证...

    企业微信支付到个人银行卡(PKCS#1格式的公钥转为PKCS#8格式)

    本文将详细解析如何将PKCS#1格式的公钥转换为PKCS#8格式,以解决“公钥非法错误”的问题。 首先,理解公钥和私钥的概念至关重要。在公钥加密体系中,如RSA算法,每一对密钥由一个公钥和一个私钥组成。公钥用于加密...

    pkcs#11 接口说明文档

    PKCS#11,全称为Public-Key Cryptography Standards #11,是由RSA安全公司发起的一套标准接口,用于实现智能卡、硬件安全模块(HSM)等加密设备与应用程序之间的互操作性。这个标准定义了一个C语言的应用程序编程...

Global site tag (gtag.js) - Google Analytics