CardContact/sc-hsm-embedded
GitHub: CardContact/sc-hsm-embedded
为 SmartCard-HSM 和 STARCOS 签名卡提供跨平台的 PKCS#11 及 Windows CSP-Minidriver 加密中间件支持。
Stars: 112 | Forks: 32
# sc-hsm-embedded PKCS#11 和 CSP-Minidriver 模块
轻量级 PKCS#11 库,用于在 Windows、Linux、MacOSX 和嵌入式系统中使用 SmartCard-HSM。
该模块还支持德国常用的各种基于 STARCOS 的签名卡。
## 目的
该模块最初是为了支持将 SmartCard-HSM 集成到占用空间小的嵌入式系统中而开发的。与其使用 PC/SC 守护进程来管理连接的读卡器和令牌,不如使用更小的 Card Terminal API (CT-API)。
随着时间的推移,该项目已发展成为一个功能齐全的 PKCS#11 和 Microsoft CSP-Minidriver 加密中间件。
## 支持的硬件
该模块可以为 Linux、Windows 和 MacOSX 编译。它支持 SmartCard-HSM USB 闪存盘以及插入符合 CCID 标准的读卡器中的 SmartCard-HSM 卡。使用 PC/SC 接口时,可以使用任何符合标准的读卡器。
ctccid 模块使用 CCID 规范中的标准功能,因此该驱动程序也可能与其他符合 CCID 标准的读卡器一起工作。但是,测试期间使用的唯一读卡器是 SCR 3310 和 USB 闪存盘。
更多文档请访问
https://github.com/CardContact/sc-hsm-embedded/wiki
## 安装
下载源代码并运行
* autoreconf -fi
* configure
* make
* make install
必需的软件包
* libpcsclite1 - 用于令牌的 PC/SC 访问
* libusb-1.0-0-dev - 用于令牌的 CT-API 访问 (--enable-ctapi)
* libssl-dev - 用于公钥加密支持(来自 OpenSSL)
* libcurl4-openssl-dev - 用于 RAMOverHTTP 支持 (--enable-ram)
## 安装
根据您的 Windows 版本选择 32 位或 64 位版本。
安装提供的 .msi 文件会将 sc-hsm-pkcs11.dll 和 sc-hsm-minidriver.dll 部署到 windows/system32。测试工具安装在 %PROGRAMFILES%/CardContact/SmartCard-HSM 中。
64 位版本会同时安装 32 位和 64 位版本的 DLL 和测试程序。
## 使用 Docker 构建
包含的 Dockerfile 创建了构建环境
要为容器挂载读卡器,请在您的 docker run 命令中使用
```
--mount type=bind,source=/var/run/pcscd,target=/var/run/pcscd
```
## Firefox
打开 Firefox 和 首选项/隐私与安全,向下滚动并按“安全设备”
在设备管理器中按 加载 并输入“SmartCard-HSM”作为模块名称
选择“sc-hsm-pkcs.dll”、“/usr/local/lib/sc-hsm-pkcs11.so” 或
/Library/sc-hsm-pkcs11/lib/sc-hsm-pkcs11.dylib” 作为模块文件名。
## Thunderbird
打开 Thunderbird 和安全设备管理器
选择 加载 并输入“SmartCard-HSM”作为模块名称
选择“sc-hsm-pkcs.dll”、“/usr/local/lib/sc-hsm-pkcs11.so” 或
/Library/sc-hsm-pkcs11/lib/sc-hsm-pkcs11.dylib” 作为模块文件名。
## 卸载
打开“安全设备管理器”
卸载“SmartCard-HSM”下的条目
## 运行测试程序
打开控制台并进入 sc-hsm-pkcs11 目录。
插入 SmartCard-HSM 并输入
sc-hsm-pkcs11-test --module lib\sc-hsm-pkcs11.dll
对于 STARCOS 卡,您需要定义用于测试的令牌:
sc-hsm-pkcs11-test --module lib\sc-hsm-pkcs11.dll --token STARCOS.eUserPKI
如果未使用 --pin 参数提供 PIN,则仅执行不需要 PIN 的测试。
## 调试
提供了 PKCS#11 模块的调试版本,以帮助调试卡和读卡器问题。
请安装调试版本,并在 Linux/MacOSX 的 %HOME%/tmp 下和 Windows 的 %HOMEDIR%/appdata/LocalLow 下创建一个 sc-hsm-embedded 目录。
在 root 下运行的系统应用程序会将日志文件写入 /var/tmp/sc-hsm-embedded。
在 Linux 上,您需要使用带 --enable-debug 选项的 configure。
## 版本 2.11
增加对 SmartCard-HSM (V3.x) 4K 版本的支持
增加对 AES 的支持
增加对 TLS1.3 的支持
## 版本 2.10
增加对 SmartCard-HSM 的写入支持
增加用于 Windows 应用程序的 CSP-Minidriver
增加 C_WaitForSlotEvent
增加使用 C_Verify*()、C_Encrypt*() 和 C_Digest*() 函数的公钥操作
移除对已过时 Signtrust Cards 的支持。
## 版本 2.9
增加 BNotK 卡的 ATR
## 版本 2.8
增加 DGN 卡上 ECC 密钥的支持
增加静态槽 ID 的支持
修复因缓冲区未清除导致 PIN 值泄露的问题
增加 ECC 的多线程测试
## 版本 2.7
增加对 Starcos 3.5 上 DGN HBA 的支持
## 版本 2.6
在 Firefox 下运行时禁用 QES 令牌。
## 版本 2.5
增加非接触式 SmartCard-HSM 的 ATR。
## 版本 2.4
移除对未识别卡上应用程序的探测。
## 版本 2.3
在 Signtrust 3.2 卡上禁用 QES2,因为它从未被使用。
增加环境变量 PKCS11_PREALLOCATE_VIRTUAL_SLOTS=,以便在首次分配主槽时创建 个虚拟槽。如果没有该标志,则当检测到具有多个 PIN 的令牌时,会动态创建虚拟槽。在这种情况下,PKCS#11 模块会为每个额外的 PIN(通常是 QES PIN)创建一个额外的虚拟槽。但是,这种动态行为与 Firefox 处理 Friendly 标志的方式相冲突,该标志仅为模块加载时存在的槽设置。
## 版本 2.2
增加对 Signtrust Starcos 3.2 卡的支持
## 版本 2.1
增加对 D-Trust Starcos 3.4 卡的支持
增加对 Signtrust Starcos 3.5 卡的支持
## 版本 2.0
增加对 Bundesnotarkammer Starcos 3.5 卡的支持
增加对 PC/SC 读卡器的支持
标签:CCID, CSP-Minidriver, CT-API, CVE, MacOSX, meg, OpenSSL, PC/SC, PKCS#11, SmartCard-HSM, STARCOS, USB Key, 信息安全, 加密中间件, 安全助手, 安全测试工具, 客户端加密, 嵌入式系统, 数字签名, 智能卡, 电子签名, 硬件安全模块, 请求拦截, 读卡器, 驱动库