#pkcs #pkcs11 #openpgp #context #devices #11

openpgp-pkcs11-sequoia

在OpenPGP环境中使用PKCS #11设备的库

4个版本 (2个重大更新)

0.2.0 2023年6月22日
0.1.0 2023年6月19日
0.0.2 2023年6月18日
0.0.1 2023年6月15日

#2355 in 密码学

每月30次下载
用于 openpgp-pkcs11-tools

LGPL-2.0-or-later

46KB
771

openpgp-pkcs11-sequoia

一个库,用于在OpenPGP环境中使用PKCS #11设备。

PKCS #11 是一个用于创建和操作加密令牌的编程接口。

(请参阅基于此库的命令行工具 openpgp-pkcs11-tools)

PKCS #11规范

PKCS #11密码令牌接口基本规范版本2.40,OASIS标准,2015年4月14日

PKCS #11 v2.20:密码令牌接口标准,RSA实验室,2004年6月28日

PKCS #11访问库

访问PKCS #11设备需要一个(通常是供应商特定的)PKCS #11动态库实现(“模块”)。例如,要访问Yubikey 5上的Yubikey PIV应用,可以使用 /usr/lib64/libykcs11.so

此存储库中的代码使用 cryptoki,一个“高级、Rust风格包装器crate”作为这些模块的包装器

graph TD
A[openpgp-pkcs11-sequoia] --> B(cryptoki Rust crate)
B -->|uses| C[vendor-specific PKCS#11 library]

click B "https://crates.io/crates/cryptoki"

设备和软件实现

YubiKey 4/5 (ykcs11)

密钥上传限制

YubiKey PKCS #11驱动程序 (ykcs11) 似乎没有实现所需的功能来上传密钥材料(不支持上传 CKO_PUBLIC_KEY 对象,但这是必需的)。

因此,密钥目前只能通过PIV接口上传到这些卡。

Nitrokey HSM 2 / SmartCard-HSM-4K

https://www.smartcard-hsm.com/opensource.html

"SmartCard-HSM被OpenSC支持,这是一个适用于各种操作系统的PKCS#11和CSP Minidriver中间件。"

(https://support.nitrokey.com/t/differences-between-nitrokey-hsm2-smartcard-hsm-4k-usb-token/1985)

YubiHSM 2

https://developers.yubico.com/YubiHSM2/Usage_Guides/YubiHSM_quick_start_tutorial.html

Nitrokey NetHSM

作为容器镜像提供(无安全功能,仅用于测试目的!)

https://hub.docker.com/r/nitrokey/nethsm

PKCS #11驱动程序:https://github.com/Nitrokey/nethsm-pkcs11

"此驱动程序仍是一个早期概念验证实现,仅实现了操作TLS服务器所需的功能。"

Utimaco SecurityServer模拟器

https://utimaco.com/downloads/simulators-and-sdks/securityserver-simulator

(可能是在非免费许可证下;因此,可能无法在CI中公开使用(?))

SoftHSM2

PKCS #11的软件实现。

https://github.com/opendnssec/SoftHSMv2

依赖项

~29-40MB
~722K SLoC