7

Canokey配置OpenPGP/PIV/NDEF

 3 years ago
source link: https://awsl.blog/2021/canokey-openpgp
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

OpenPGP

RFC4880OpenPGP 定义为用于签名和加密的标准。它使用私钥对邮件和文档进行签名/加密。使用OpenPGP的最常用工具之一是GNU Privacy Guard,简称GnuPGgpg

私钥可以存储在CanoKey中,也可以使用CanoKey生成OpenPGP密钥。你无法导出CanoKey中存储的私钥。这减少了私钥泄漏的可能性。

支持的算法

  • RSA2048
  • RSA4096 *
  • X25519
  • Ed25519
  • NIST P-256 (secp256r1,prime256v1)
  • NIST P-384 (secp384r1)
  • secp256k1

*由于计算性能的限制,无法在卡中生成RSA4096。但是,您可以生成密钥对并将其导入到CanoKey。

请注意,当前不支持RSA3072

  • PIN码:默认123456,最小长度 6,最大长度 64
  • 管理员PIN:默认12345678,最小长度 8,最大长度 64
  • 重置代码:默认未设置,最小长度 8,最大长度 64
  • 签名PIN:强制 //即每次签名时验证pin
  • 触摸策略:SIG,DEC,AUT已关闭
  • 触摸缓存时间:0

OpenPGP有三个密钥槽,分别是签名密钥 SIG ,加密密钥 DEC 和身份验证密钥 AUT 。您可以在Web控制台的管理小程序中打开或关闭SIG,DEC,AUT的触摸策略。触摸缓存时间的值介于0到255秒之间(0表示没有缓存)。

触摸策略仅在使用USB接口时适用。

PIN策略

对于DECAUT,在成功验证PIN后,它对于这一次通电始终有效。

对于SIG,如果标志forcesig处于打开状态,则要求为每个签名提供PIN;否则,将为每个签名请求PIN。否则,仅在通电后才要求输入PIN作为第一个签名。

使用GnuPG

现在请参阅GNU隐私手册

您也可以参考https://github.com/drduh/YubiKey-Guide

#智能卡相关的命令
#在下面尝试确保gpg可与canokey一起使用
gpg --card-status
#使用它来编辑卡信息和配置
#或生成密钥
gpg --edit-card
#生成密钥
gpg --expert --full-generate-key
#获取关键信息
gpg --list-keys --with-fingerprint --with-subkey-fingerprint [密钥ID或用户ID]
gpg --list-keys --with-keygrip [keyid或user id]
gpg --list-sigs [密钥ID或用户ID]

#编辑key
#在交互式shell中添加uid / subkey
#keytocard或addcardkey
gpg --edit-key <密钥ID或用户ID>

#导入/导出key
gpg --import file
gpg --armor --output file --export <keyid or user id>
gpg --armor --output file --export-secret-keys <keyid or user id>
gpg --delete-keys <keyid or user id>


#签名并验证
gpg --armor --sign file
gpg --sign-key --ask-cert-level <key id>
gpg --armor --detach-sign file
gpg --clear-sign file
gpg --verify file.asc

#加密和解密
gpg --armor --encrypt --recipient <keyid or user id>
gpg --decrypt file

#杂项
gpgconf --kill gpg-agent
gpg-connect-agent reloadagent /bye
gpgconf --list-dirs agent-socket
gpgconf --list-dirs agent-extra-socket
gpgconf --list-dirs agent-ssh-socket

Linux

请注意,我们建议为gpg-agent /scdaemon使用ccidpcsclite来访问CanoKey,即在~/ .gnupg / scdaemon.conf中设置。

pcsc-driver /usr/lib/libpcsclite.so
card-timeout 5
disable-ccid

您应该像docs中那样设置ccid

调试和报告

Linux

您可以使用pcsc_scan来检查pcscd是否检测到了智能卡。请注意,pcscd仅使用它检测到的第一张智能卡,因此,如果您的还有其他智能卡读卡器,则应先卸载或禁用。

您可以使用pcscd -a -d -f来监视读卡器的通讯状态。可能会报告其日志以进行故障排除。

个人身份验证(PIV)是美国政府定义为 FIPS 201 的标准。智能卡存储密钥以进行签名/加密。PIV主要用于非Web场景。

支持的算法

  • RSA2048
  • NIST P-256
  • NIST P-384
  • PIN:默认123456
  • PUK:默认12345678
  • 管理密钥:默认010203040506070801020304050607080080102030405060708

## 默认值

  • 模式:默认的读/写,可以使用Canokeys提供的管理小程序在 Web控制台 中进行切换
  • 内容:默认NDEF消息是 URL https://canokeys.org
  • 最大NDEF信息长度:1022字节

您可以将其用作包含URL,vCard或NDEF支持的任何内容的NFC标签。
请注意,由于不进行加密,因此不应将机密存储在NDEF中。

您可以使用 NFC工具 来处理NDEF消息。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK