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, 信息安全, 加密中间件, 安全助手, 安全测试工具, 客户端加密, 嵌入式系统, 数字签名, 智能卡, 电子签名, 硬件安全模块, 请求拦截, 读卡器, 驱动库