深色模式
PIV 智能卡使用
概述
YuerKey 实现了 PIV(Personal Identity Verification)智能卡标准(NIST SP 800-73-4),提供 11 个密钥槽位,支持 Windows 智能卡登录、VPN 认证、文档签名等企业级安全场景。
PIV 是美国联邦政府制定的身份验证标准,广泛应用于企业和政府的身份认证体系中。YuerKey 完整实现了该标准,你可以将它当作一张智能卡来使用。
密钥槽位说明
YuerKey 提供以下 PIV 密钥槽位:
| 槽位 | 名称 | 用途 | 说明 |
|---|---|---|---|
| 9A | PIV Authentication | 身份认证 | 用于 VPN 登录、系统登录等,需要 PIN |
| 9B | PIV Management | 管理操作 | 用于导入证书、管理密钥等管理操作 |
| 9C | Digital Signature | 数字签名 | 每次签名都需要输入 PIN,用于文档签名、代码签名 |
| 9D | Key Management | 密钥管理 | 用于加密/解密文件,仅首次使用需要 PIN |
| 9E | Card Authentication | 卡片认证 | 无需 PIN 即可使用,适用于门禁、物理访问控制 |
| 82-87 | Retired Key Management | 旧密钥存档 | 6 个槽位,用于保留历史密钥,便于解密旧文件 |
初始化
默认凭证
YuerKey 出厂时使用以下默认值:
| 凭证 | 默认值 | 长度要求 |
|---|---|---|
| PIN | 123456 | 6-8 位数字 |
| PUK | 12345678 | 6-8 位数字 |
| Management Key | 3DES 默认密钥 | 24 字节 |
安全提示
首次使用务必修改所有默认凭证。使用默认值会带来严重的安全风险。
修改 PIN
通过命令行(推荐):
bash
# 使用 yubico-piv-tool
yubico-piv-tool -a change-pin -P 123456 -N <新PIN>
# 或使用 pkcs15-tool
pkcs15-tool --change-pin通过 YuerKey App:
连接设备后,进入 设备设置 → 安全 → 修改 PIV PIN。
修改 PUK
bash
yubico-piv-tool -a change-puk -P 12345678 -N <新PUK>PUK 用于在 PIN 被锁定时(连续输错 3 次)解锁 PIN。请妥善保管 PUK。
修改 Management Key
bash
yubico-piv-tool -a set-mgm-key -n <新管理密钥>PIN 锁定与解锁
- PIN 连续输错 3 次后会被锁定
- 使用 PUK 可以解锁 PIN 并设置新 PIN:
bash
yubico-piv-tool -a unblock-pin -P <PUK> -N <新PIN>- PUK 连续输错 3 次后也会被锁定,此时需要恢复出厂设置
使用场景
Windows 智能卡登录
Windows 原生支持 PIV 智能卡登录,配置步骤如下:
- 生成密钥对并获取证书
bash
# 在 9A 槽位生成 RSA-2048 密钥对
yubico-piv-tool -s 9a -a generate -A RSA2048 -o public.pem
# 创建证书签名请求(CSR)
yubico-piv-tool -s 9a -a verify-pin -a request-certificate \
-S "/CN=你的用户名/" -i public.pem -o request.csr- 从企业 CA 获取签发的证书(或使用自签名证书)
bash
# 自签名证书(测试用)
yubico-piv-tool -s 9a -a verify-pin -a selfsign-certificate \
-S "/CN=你的用户名/" -i public.pem -o cert.pem
# 导入证书
yubico-piv-tool -s 9a -a import-certificate -i cert.pem在 Windows 中注册证书
- 插入 YuerKey,Windows 自动识别为智能卡
- 打开「certutil」或通过组策略部署证书映射
使用智能卡登录
- 在 Windows 登录界面选择「智能卡登录」
- 插入 YuerKey
- 输入 PIV PIN
- 登录完成
VPN 认证
许多企业 VPN 支持使用 PIV 证书进行身份认证:
- 在 9A 槽位生成密钥并获取企业 CA 签发的证书
- 在 VPN 客户端中选择「智能卡」或「PKCS#11」认证方式
- 指向 YuerKey 的 PKCS#11 库
- 连接 VPN 时,输入 PIN 完成认证
OpenVPN 配置示例:
pkcs11-providers /usr/lib/libykcs11.so
pkcs11-id 'your-certificate-id'代码签名
使用 9C 槽位的证书进行代码签名(每次签名都需要输入 PIN,确保安全):
bash
# 使用 signtool(Windows)
signtool sign /sha1 <证书指纹> /fd sha256 /t http://timestamp.example.com your-app.exe
# 使用 jarsigner(Java)
jarsigner -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 app.jar aliasSSH 认证
PIV 证书也可以用于 SSH 认证:
bash
# 导出 SSH 公钥
ssh-keygen -D /usr/lib/libykcs11.so -e
# 使用 PIV 进行 SSH 登录
ssh -I /usr/lib/libykcs11.so user@server支持的算法
| 算法 | 密钥长度 | 适用场景 |
|---|---|---|
| RSA | 2048 / 3072 / 4096 | 广泛兼容,适合企业环境 |
| ECDSA | P-256 / P-384 | 更短的密钥,同等安全性,速度更快 |
| Ed25519 | 256 位 | 现代签名算法,性能最优 |
| X25519 | 256 位 | 现代密钥交换算法 |
算法选择建议
- 需要最大兼容性:选择 RSA-2048
- 追求性能和安全性平衡:选择 ECDSA P-256
- 仅用于现代系统:选择 Ed25519
兼容工具
以下工具已测试兼容 YuerKey 的 PIV 功能:
- yubico-piv-tool:命令行 PIV 管理工具
- OpenSC (pkcs11-tool / pkcs15-tool):通用智能卡工具
- Windows 智能卡服务:原生支持
- macOS 智能卡框架:原生支持
- GnuTLS / OpenSSL:通过 PKCS#11 接口
常见问题
Windows 无法识别智能卡?
确认安装了正确的 minidriver 驱动。YuerKey 兼容标准 PIV minidriver,Windows 10/11 通常自动安装。
PIN 被锁定怎么办?
使用 PUK 解锁:
bash
yubico-piv-tool -a unblock-pin -P <PUK> -N <新PIN>如何重置 PIV 应用?
如果 PIN 和 PUK 都被锁定,可以重置整个 PIV 应用(会清除所有密钥和证书):
bash
yubico-piv-tool -a reset证书到期了怎么办?
重新申请证书并导入到相同槽位,密钥对不需要重新生成。