yubikey 测试步骤

2024年2月19日14:20:47 发表评论 117 views

第一步

插入yubikey

  1. win键,打开git bash 输入gpg --version
Shall@LAPTOP-BUE85051 MINGW64 ~

$ gpg --version

gpg (GnuPG) 2.2.16-unknown

libgcrypt 1.8.4

Copyright (C) 2019 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.



Home: /c/Users/Shall/.gnupg

Supported algorithms:

Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA

Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,

        CAMELLIA128, CAMELLIA192, CAMELLIA256

Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224

Compression: Uncompressed, ZIP, ZLIB, BZIP2

  1. 或者登陆 https://www.gnupg.org/download/index.html 下载正式版gpg “Gpg4win”
    yubikey 测试步骤yubikey 测试步骤
  2. 进入gpg 使用 gpg --gen-key 生成密钥对, (如果失败可以用gpg --delete-keys 和 --delete-secret-keys删除私钥)如果没有选项,则可以使用--full-generate-key选项(这个官网2024版本默认生成ed25519版本的) 然后选择第一个
    yubikey 测试步骤yubikey 测试步骤
    yubikey 测试步骤yubikey 测试步骤
    yubikey 测试步骤yubikey 测试步骤
    yubikey 测试步骤yubikey 测试步骤
  3. 输入gpg --expert --edit-key +keyID 进入gpg后,输入addkey来添加子密钥,然后生成三个key: yubikey 测试步骤yubikey 测试步骤

签名 RSA (sign only)
加密 RSA (encrypt only)
认证 RSA (set your own capabilities)(略有不同)
sec(主密钥)ssb(私钥secret sub-key)sub(公钥)
生成第三个的流程(最后选Q finish)
yubikey 测试步骤yubikey 测试步骤
最后save

备份公钥私钥(重要)

gpg --armor --output public.gpg.asc --export [KeyID]
gpg --armor --output private.gpg.asc --export-secret-keys [KeyID]

开始导入yubikey

yubikey 测试步骤yubikey 测试步骤
然后使用key num命令选中key,然后使用keytocard命令移动到card里面(从此本机的密钥无法复制)
访问的时候需要输入ubk的admin PIN,就是八位数的那个(一开始没注意总是提示bad PIN)

疯狂测试

直接用kle加密一个文件,再删除本地私钥。然后解密该文件的时候,无论使用命令行还是图形界面都提示要插入智能卡(并且提示了智能卡的编号,即便重新导入私钥也是如此),难道用智能卡加密的文件只能用智能卡解密?难道不是用所谓的公钥加密的?一旦智能卡遗失了呢?
答案:经过测试,必须全部删除公钥私钥后,重新导入即可,删除后再解密会提示没有某某指纹的私钥,导入后直接解密
最后删除导入的私钥即可

加解密文件

参考:https://gist.github.com/jhjguxin/6037564

gpg -e -r username filename (-r 表示指定用户)    # 加密文件

gpg -d filename.gpg      # 此时会弹出输入ubk的PIN窗口

签名和验签

公钥的上传和set url 和fetch

gpg --keyserver hkp://pgp.mit.edu --send-keys 35023C1E8DEB09435105647FFE38FE1D457E8CB0
其他几个好像不稳定或者是被墙了,这个一下子就成功了

导入公钥
apt-get update 或者aptitude update出现以下错误:
The following signatures couldn't be verified because the public key is not available: : NO_PUBKEY B5B7720097BB3B58

解决方法:
1,从任何一个key server获得缺失的公钥B5B7720097BB3B58。
gpg --keyserver subkeys.pgp.net --recv-keys B5B7720097BB3B58
2,导入公钥B5B7720097BB3B58。
gpg -a --export B5B7720097BB3B58 | sudo apt-key add -

国内可用key server列表:
keyserver.ubuntu.com
pgp.mit.edu
subkeys.pgp.net
www.gpg-keyserver.de

上传的好像没下载成功,但是上传到我个人服务器的http下载链接,配置进去再删除本地公钥,最后进入 --edit-card,然后fetch就直接成功了,再运行--list-keys就能看到对应的公钥了。

多个主密钥指定公钥加密

开启PGP触摸验证

开启cmd梯子
set http_proxy=http://127.0.0.1:1081
set https_proxy=http://127.0.0.1:1081
安装:
pip install --user yubikey-manager

ykman openpgp keys set-touch SIG ON # 还是比较好用的,每一个层级都有对应的help

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: