首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Linux 上的 PKCS #11 openCryptoki API -入门

Linux 上的 PKCS #11 openCryptoki API -入门

openCryptoki 入门本节描述了 openCryptoki 的系统需求。它还说明了您可以到哪儿获取 openCryptoki 以及如何编译和安装它。
系统需求运行 openCryptoki 的系统必须至少支持一种 openCryptoki 所提供的令牌(4758 Cryptographic Coprocessor、ICA 2058 型和 System/390 Linux Cryptographic 硬件支持)。
以下列表显示了运行 openCryptoki 的系统需求。
硬件需求:
  • x86 PCI 总线系统,或
  • 具有 Linux 密码硬件支持的 System/390
软件需求:
  • 至少运行 2.2.16 内核的 Linux 操作系统
  • 安装令牌的设备驱动程序以及相关的支持库(还可能需要来自那些“分发版(distribution)”的一些头文件)
获取 openCryptokiopenCryptoki 项目位于 ,在这里可以得到源代码。从这个网站还可以得到提供错误修正和功能增强的更新。            
编译与安装 openCryptoki假设系统硬件符合所需设备的设备支持(以及头文件),您可以通过在顶层目录运行                 make 来构建 openCryptoki。使用 build 目标仅允许代码编译。install 目标试图在当前系统安装函数。设置                 INSROOT 环境变量将允许您安装到不同位置。clean 目标清除目标文件以及来自源树的其它构建输出。            
如果您只为一个特定设备构建 openCryptoki,那么源树的顶级 Makefile 应该被修改。每个组件有它自己的 Makefile,并且顶级 Makefile 遍历它所有的子目录构建它所找到的所有 Makefile。要构建特定组件,不必使用顶级 Makefile。在任意给定的子目录运行                 make -f 命令就构建特定组件。用                 make -f ../Makefile.linux 命令从那个目录构建具有 Linux 目录的组件。            
配置 openCryptoki本节说明了与配置 openCryptoki 有关的各种组件和过程。
配置实用程序一共有三个配置实用程序,它们是 openCryptoki 工具箱的一个部分。它们是:
/usr/lib/pkcs11/methods/pkcs11_startup
这个实用程序是一个可执行的 shell 脚本,用来构建配置信息(                 /etc/pkcs11/pkcs11_config_data )。               
/usr/lib/pkcs11/methods/4758_status 这个实用程序是一个二进制可执行文件,用来查询 4758 Coprocessor 以确定卡上是 shallow 还是 deep 固件装入。                        
/usr/lib/pkcs11/methods/pkcs_slot
这个实用程序是一个 shell 脚本,用来将配置文件写到磁盘的                 /etc/pkcs11/config_data 。            
要简化启动,建议您创建一个称之为                 /etc/rc.pkcs11 的 shell 脚本。这个脚本的示例在 章节中。            
配置文件与数据存储一些 STDLL 需要本地磁盘空间来存储持久数据,譬如令牌信息、个人识别号码(PIN)以及令牌对象。对于 shallow 4758 令牌,这个信息存储在                 /etc/pkcs11/4758shallow ,对于 ICA 设备它存储在                 /etc/pkcs11/lite 。每个目录中有一个子目录                 TOK_OBJ ,它包含令牌对象。每个 STDLL 被限制到 2048 个公用的和 2048 个私有的令牌对象或者分配给                 /etc 的磁盘空间。配置脚本自动创建所需目录并且分配所需权限。            
注:FindObject 函数的性能与系统中存在的对象的数量直接相关。应该实现应用程序,以使它们不做这么多不必要的搜索。            
/etc/pkcs11/pk_config_data 文件存储了系统中当前令牌的所有配置信息。当运行时,子系统的共享内存包含了实际有用的配置信息。            
为配置准备系统为了确保对 openCryptoki 令牌的正确访问,只有 root 用户和是“pkcs11”组成员的用户被允许访问子系统。要正确配置系统,完成下列步骤:
  • 运行                    
    groupadd pkcs11命令来创建“pkcs11”组。                    
    注: Red Hat Linux 系统支持该命令。参考您的 Linux 分发版文档以查找在您的实现不包含                     groupadd 命令时如何添加组。
  • 通过将用户标识加到                    
    /etc/group 文件或者通过使用分发版的管理 GUI,把要使用子系统的任何用户标识添加到 pkcs11 组。或者,组所拥有的并且设置组标识符为 pkcs11 的应用程序也将能运行。配置检测脚本将创建数据存储位置并分配正确的所有权。
  • 创建一个 shell 脚本以在系统引导时启动子系统。
  • 将下列脚本添加到本地系统启动脚本。例如,在一个运行 Red Hat Linux 的系统上,把它添加为                    
    /etc/rc.pkcs11 并在                     /etc/rc.local 上添加一个对它的调用。
清单 1
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
# Sample /etc/rc.pkcs11
# script for starting pkcs#11 at system IPL.
# This should be added to the end of the rc.local script, or
# whatever local startup script for your distribution applies
# Generate the configuration information
/usr/lib/pkcs11/methods/pkcs11_startup
# start the subsystem
/usr/sbin/pkcsslotd
#end of startup script




子系统配置脚本询问系统,确定提供哪些设备并将它们自动放置到槽配置。假设设备依照其特定指令设置,子系统将反映在系统引导时检测到的配置。如果在                 pkcs11_startup 脚本找不到设备,它们将不显示。通常设备不会被找到,因为在                 /etc/rc.pkcs11 脚本被调用之前设备模块还没有装入。            
PKCS #11 配置管理工具openCryptoki 提供一个命令行程序(                 /usr/lib/pkcs11/methods/pkcsconf )来配置和管理系统内部支持的令牌。这个程序提供与运行                 pkcsconf -? 命令相同的功能。这个功能包括令牌初始化、安全性主管 PIN 初始化和更改以及用户 PIN 初始化和更改。需要特定令牌的操作必须具有由                 -c 标志指定的槽。可以通过指定不带特定槽号的                 -s 选项查看系统内部提供的令牌列表。例如,  显示了                 pkcsconf 命令的选项并显示了令牌初始化前的系统槽信息:            
清单 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[root@draeger /root]# /usr/lib/pkcs11/methods/pkcsconf -?
          /usr/lib/pkcs11/methods/pkcsconf: invalid option -- ?
          usage:  /usr/lib/pkcs11/methods/pkcsconf [-itsmMIupP]
         [-c slotnumber -U userPIN -S SOPin -n newpin]
                  -i display PKCS11 info
                  -t display token info
                  -s display slot info
                  -m display mechanism list
                  -M display shared memory
                  -I initialize token
                  -u initialize user PIN
                  -p set the user PIN
                  -P set the SO PIN
          Output of the GetSlotInfo call
          [root@draeger /root]# /usr/lib/pkcs11/methods/pkcsconf -s
          Slot #0 Info
                  Description: Linux 2.4.2 Linux (ICA)
                  Manufacturer: Linux 2.4.2
                  Flags: 0x1
                  Hardware Version: 0.0
                  Firmware Version: 1.1
          An un-initialized ICA token, the information is obtained via the
        C_GetTokenInfo call
          [root@draeger /root]# /usr/lib/pkcs11/methods/pkcsconf -i
          PKCS#11 Info
                  Version 2.1
                  Manufacuter: IBM AIX Software PKCS11         
                  Flags: 0x0  
                  Library Description: Meta PKCS11 LIBRARY              
                  Library VersionToken #0 Info:
                  Label: IBM ICA  PKCS #11               
                  Manufacturer: IBM Corp.                  
                  Model: IBM ICA         
                  Serial Number: 123            
                  Flags: 0x45
                  Sessions: -1/-1
                  R/W Sessions: -1/-1
                  PIN Length: 4-8
                  Public Memory: 0xFFFFFFFF/0xFFFFFFFF
                  Private Memory: 0xFFFFFFFF/0xFFFFFFFF
                  Hardware Version: 1.0
                  Firmware Version: 1.0
                  Time: 11:11:17 AM




这个程序还允许您为调试目的显示子系统共享内存段。另外,这个程序提供了对令牌的一些简单查询功能,譬如令牌信息和机制列表。
在应用程序使用 openCryptoki 子系统之前,必须执行下列初始化步骤(每个步骤都有示例代码):
1.初始化令牌:令牌在使用之前必须被初始化。这个过程的关键部分是指定一个唯一的标号。安全性主管 PIN 是必需的(所有 IBM               
提供的令牌的缺省值是 87654321)。            
注:当输入时,所有 PIN 在屏幕上都以星号显示。            










返回列表