惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

PCI Perspectives
PCI Perspectives
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Palo Alto Networks Blog
S
Schneier on Security
Scott Helme
Scott Helme
T
Threat Research - Cisco Blogs
K
Kaspersky official blog
Microsoft Azure Blog
Microsoft Azure Blog
T
The Exploit Database - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tenable Blog
G
GRAHAM CLULEY
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
I
Intezer
D
Docker
月光博客
月光博客
L
Lohrmann on Cybersecurity
Latest news
Latest news
B
Blog
罗磊的独立博客
M
MIT News - Artificial intelligence
S
Securelist
Know Your Adversary
Know Your Adversary
Help Net Security
Help Net Security
Recorded Future
Recorded Future
S
SegmentFault 最新的问题
N
Netflix TechBlog - Medium
T
Threatpost
H
Hacker News: Front Page
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
人人都是产品经理
人人都是产品经理
F
Fortinet All Blogs
博客园 - Franky
P
Proofpoint News Feed
大猫的无限游戏
大猫的无限游戏
Blog — PlanetScale
Blog — PlanetScale
有赞技术团队
有赞技术团队
博客园 - 【当耐特】
A
About on SuperTechFans
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tor Project blog
Google Online Security Blog
Google Online Security Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Engineering at Meta
Engineering at Meta
Webroot Blog
Webroot Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Microsoft Security Blog
Microsoft Security Blog

K.I.S.S

身在 Kimi 的 800 天 写在 Kimi K2 发布之后:再也不仅仅是 ChatBot macOS 按域名切换 DNS 解析 | K.I.S.S 为什么说 GPT 是无损压缩 | K.I.S.S 握着你的手训一个类GPT语言模型 (二) | K.I.S.S 握着你的手训一个类GPT语言模型 (一) | K.I.S.S Rosetta in Linux Virtual Machine on Apple Silicon Fit an Overfit with MegEngine 把 CUPS 扔进 docker 里 ASUS Chromebook Flip | K.I.S.S GPG 与 SSH Agent 转发 使用 dnsmasq 和 ipset 的策略路由 定制GH60机械键盘 | K.I.S.S Debian 网络安装内核参数 | K.I.S.S 我的 Vim 配置 | K.I.S.S Libinput 与 Udev | K.I.S.S 给妹子看的 Arch Linux 桌面日常安装 | K.I.S.S 修复GTK3 CSD外观 | K.I.S.S 握着你的手教你画哀女王 | K.I.S.S R.I.P Google Reader | K.I.S.S Richard Stallman仍然是对的 | K.I.S.S Scala 自定义控制结构 | K.I.S.S 入手Wacom Bamboo CTL470 | K.I.S.S 转个型? | K.I.S.S Wish List | K.I.S.S pulseaudio音量问题 | K.I.S.S 入手yubikey,一点小心得 | K.I.S.S 迁移到Octopress | K.I.S.S 自动更新DNSPod记录 | K.I.S.S Linux 用作 IPv6 网关 | K.I.S.S Conky从豆瓣获取MPD专辑封面 | K.I.S.S 我和Linus大学时那些事儿 | K.I.S.S Micro$oft依然是那副老德行 | K.I.S.S 用PulseAudio TCP Forwarding实现网络传声 | K.I.S.S 利用tmpfs加速gnome-shell overview模式Applications索引 | K.I.S.S 新的短网址 | K.I.S.S 紧张的一个月 | K.I.S.S 5月11日活动有感 | K.I.S.S 西电开源社区2011年Tee 最终版 | K.I.S.S 多头多尾的Linux | K.I.S.S Linux的中文名称怎么翻译呢? | K.I.S.S iPhone使用OpenVPN | K.I.S.S 我的人人网敏感词 | K.I.S.S 纪念钱立生老师 | K.I.S.S twitter键盘控:Twittperator | K.I.S.S 天生的暴力倾向? | K.I.S.S The Open Source Spirit | K.I.S.S Libreoffice | K.I.S.S Hello world! | K.I.S.S Python 调用gnuplot的例子 | K.I.S.S The Beginning | K.I.S.S About Me | K.I.S.S
YubiKey 4 简介与配置 | K.I.S.S
2016-02-09 · via K.I.S.S

2012 年我买了自己的第一块 YubiKey, 当时功能还很少,后来康哥在参加 BlackHat 会议 时,参展的 yubico 公司直接送 Yubikey NEO,于是我免费得到 一个。

Yubikey NEO 比早前的 Yubikey 增加了 OpenPGP Smartcard 和 U2F 支持,还可以通过 NFC 获得 Yubico One-Time-Password。唯一遗憾的一点是它的 OpenPGP Smartcard 支持到 2048 位 RSA,而我本人的 GPG 密钥都是 4096 位的,所以为了 使用它我只好增加了一个 2048 位的签名子密钥。

15 年 11 月 Yubico 又推出了 YubiKey 4,增加了 4096 位 RSA 加密支持(貌似只有加密,没有签名), 加上一些其他原因(后文),时间又正好赶上妹子回国,于是让妹子在 Amazon 买了帮我带了回来。

首先说一下功能,YubiKey 4 可以同时工作在三种模式:

  • 传统键盘设备模式: Yubico OTP, Challenge-Response, 静态密码, HOTP 等, 这个模式又有两个slot,对应于短按和长按操作,生成两种密码
  • Smartcard 模式: OpenPGP card 和 PIV card,可以用来安全地保存 RSA 私钥
  • U2F 模式: 一种两步认证协议,Google, Dropbox, Github 等网站都支持

@BlahGeek 之前入手 YubiKey 4 时写得 blog 描述得更详细一些,可以参考。

各功能配置

首先安装相关工具,Arch 用户直接

sudo pacman -S yubikey-personalization yubikey-personalization-gui

然后打开所有功能模式

ykpersonalize -m86 # 同时打开 HID+Smartcard+U2F 

传统键盘设备模式

这部分比较简单,使用 yubikey-personalization-gui 即可进行图形化配置,前文 也讲过 YubiKey 和 PAM 结合做认证。

由于 Yubico OTP 需要认证服务器(默认是 yubico cloud)做认证,所以如果你修改了 Yubico OTP 配置的话,还需要把密钥等信息上传到 Yubico Cloud, 这里 有一份图文并茂的官方文档。

OpenPGP Card

如果你使用 GPG 来做加密和签名,那么 OpenPGP Card 可以进一步加强安全性和便利性。

首先你需要设置一下 YubiKey。

gpg --card-edit  # 打开设置

首先敲 admin 命令打开管理模式,可以使用 help 命令查看帮助,然后用 passwd 命令设置 PIN, Admin PIN 和 Reset Code, 可以是字母和数字,PIN 的默认值是 123456,Admin PIN 的默认值是 12345678。请 牢牢记住 这三个密码。

  • PIN 码是平时最常用的密码,如果输错三次就会被锁定,需要使用 Reset Code 来解锁,Reset Code 输错三次,只能物理重置
  • Admin PIN 是管理卡信息(如添加密钥、修改密码)使用的密码,不能短于 8 位,输错三次则管理功能被锁定,只能物理重置记住,千万不要在需要输入 Admin PIN 的时候输入短于 8 位的密码,这样会直接锁定 (我的 YubiKey NEO 就是这么悲剧的)。

你可以继续设置一些其他信息,比如持卡人姓名、公钥的URL等等,也可以下次再弄。

一个 GPG 密钥包含多个 RSA 密钥对,一对主密钥,若干对不同用途的子密钥,一对密钥包括一个公钥和一个私钥。 一般 gpg --gen-key 得到的,就包括一对主密钥,可以用于签名;一对子密钥用于加密。

不推荐把主密钥放进 YubiKey 里,因为主密钥还有一个重要功能就是维持社交关系,时间流逝,子密钥可能经常变化, 而别人只需要记住你的主密钥ID就可以随时更新。如果把主密钥放进 YubiKey 里,万一丢了,那么你就无法证明你是你了。

假设你已经生成好了一个 GPG 密钥组,用

gpg --edit-key i@example.com

编辑密钥,例如我的密钥:

gpg --edit-key i@bigeagle.me
gpg (GnuPG) 2.1.11; Copyright (C) 2016 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

pub  rsa4096/865BAC3A
     created: 2014-12-28  expires: 2020-10-17  usage: SC  
     trust: ultimate      validity: ultimate
ssb  rsa4096/167D42E5
     created: 2014-12-28  expires: 2016-08-16  usage: E   
     card-no: 0006 04239808
ssb  rsa2048/1C27920A
     created: 2016-01-25  expires: 2017-01-24  usage: S   
     card-no: 0006 04239808
[ultimate] (1). Justin Wong <i@bigeagle.me>
[ultimate] (2)  Justin Wong <bigeagle@xdlinux.info>
[ultimate] (3)  Justin Wong <justin.w.xd@gmail.com>
[ultimate] (4)  Yuzhi Wang (Tsinghua) <yz-wang12@mails.tsinghua.edu.cn>

gpg> 

其中 pub 开头的是主密钥,865BAC3A 就是我的主密钥 ID,功能有签名(S, sign)和证书(C, certificate); ssb 开头的是子密钥,我有两个: 167D42E5 是我的加密(E)子密钥,密钥长度 4096bit,算法是 RSA;1C27920A 是签名子密钥,长度 2048bit,算法 RSA。绝大多数情况下不需要记住这些密钥 ID。

例如我们现在想把加密和签名子密钥放进 YubiKey 中,那么首先生成一个签名子密钥,用 addkey 命令,跟着向导走几步即可。 接下来把子密钥导入 YubiKey,使用 key <数字> 选择密钥对,0是主密钥对,1以上是子密钥,选中后 ssb 变会多一个 * 号, 可以多次输入key X命令同时选中多个密钥。然后用 keytocard 命令,此时会提示输入 Admin PIN,正确输入,导入完成。注意,私钥 一旦进入YubiKey就无法取出,如果你需要备份请提前做,如果你可以取出请找 Yubico 要奖赏。

这样以后就必须在 YubiKey 插入的时候才能完成 GPG 操作,使用时输入 PIN 码解锁即可。 另一个好处是可以方便的在别人的计算机上完成 GPG 操作,不仅免去了导入导出密钥的麻烦,更重要的更安全。在插入卡 的时候,如果你设置了公钥组的URL,使用 fetch 命令即可导入自己的公钥,配合卡上的私钥即可。

还需要注意的是,如果有 GPG Agent 运行,而 YubiKey 被拔出,那么之后的操作会提示找不到卡(即使重新插入), 运行一下 gpgconf --reload scdaemon 即可。我配合 @xiaq 的 udevedu, 每次插入就 reload 一下,脚本在 gist 里了。

另外,如果使用 YubiKey NEO 的话,则可以配合 OpenKeyChains 通过 NFC 在 Android 手机上进行 GPG 操作。

U2F 两次认证

现在吼多网站都提供两次认证加强安全性,比如 Google, Dropbox 。 常见的两次认证是使用 Google Authenticator, Duo Mobile 等工具产生 TOTP (Time-based One-Time Password), 每次登陆的时候都要开手机运行App,总还是麻烦了些,而 U2F 则可以通过插入 YubiKey 并轻触按钮完成认证。

目前只有 Google Chrome 浏览器完全实现了 U2F 支持,Firefox 需要安装插件 但还不太完美。我试了一下,

  • GitHub 注册设备操作 Firefox 没响应,用 Chrome 注册设备后,Firefox 可正常认证。
  • Google 只允许 Chrome
  • Dropbox 只允许 Chrome

另外有pam-u2f 可以用于 Linux 的各项认证操作,替代传统的 Challenge-Response,用法也很简单。

Arch 用户直接安装 AUR 里的 pam_u2f,首先注册设备

pamu2fcfg -u<username>

这是 YubiKey 上的灯会闪烁,轻按一下,终端里就会打出一行字,格式为

<username>:<KeyHandle1>,<UserKey1>

把这一段内容放在 ~/.config/Yubico/u2f_keys

编辑需要的 PAM 服务(例如sudo),在合适的位置加一行

auth sufficient pam_u2f.so

这样需要认证的时候,YubiKey 灯会闪,轻按一下即可完成认证。

最后

还有好多没折腾的功能,比如 PIV Smartcard,后续折腾出来继续更新 #flag。