开放认证倡议
外观
(从 OATH 重定向)
开放认证倡议 (OATH) 是一个行业范围内的合作项目,旨在开发使用开放标准的开放参考架构,以推广强认证的应用。他们发布了 Google Authenticator 和其他常用双因素认证应用程序所使用的标准。
安装
以下软件包可用于生成、传输和验证 OATH 凭证
- oath-toolkit - 接收凭证并生成代码。包含用于用户认证的 PAM 模块。请参阅 pam_oath。
- libpam-google-authenticator - 提供一个名为
google-authenticator的客户端程序,用于生成新凭证,以及一个用于用户认证的 PAM 模块。请参阅 Google Authenticator。 - pass-otp - 为 pass 添加 OATH 支持
- zbar - 解码 QR 码
- qrencode - 编码 QR 码
标准
OATH 制定了两个对 Arch 用户具有重要意义的标准,两者都基于任意长度的 Base32 编码共享密钥
- HOTP
- HMAC (基于哈希的消息认证码) 一次性密码 (HOTP)。每次生成密码时,计数器都会递增。该值与密钥连接,然后进行哈希处理以生成 6-10 位数字的代码。认证方执行相同的操作,只是在成功认证一个代码后会递增计数器。为了处理计数器的不同步,认证方还可以检查其当前计数器状态之外的几个 (30-100) 附加值。
- TOTP
- 基于时间的单次密码 (TOTP),其工作原理与 HOTP 非常相似,只是它使用当前时间而不是计数器。这解决了不同步问题,并消除了对手记录 OTP 以备后用的可能性。
URI 凭证格式
凭证通常以 QR 编码的 URI 格式共享。所有字段都必须是 URI 编码的字符串
otpauth://TYPE/LABEL?PARAMETERS
警告 URI 格式的凭证以及由此生成的任何 QR 码都包含生成有效一次性密码所需的所有信息。像对待其他任何密码一样保护它。
- 类型
totp或hotp- 标签
- 标识一个密钥与哪个帐户相关联,可以选择以发行者字符串为前缀。示例:
Arch%20Wiki:archie@archlinux.example - 参数
- 采用标准的 URI 参数格式 -
?name=value&name=value...
secret- 必需;这是 Base32 共享密钥。issuer- 指示帐户关联的提供商或服务。如果省略,则使用标签的发行者前缀。如果两者都存在,则它们应相等。algorithm- 默认为SHA1。也可以是SHA256或SHA512。digits- 密码应有多长。默认为 6,可以是 8。counter- 使用 HOTP 时必需。初始计数器值。period- 使用 TOTP 时可选。设置代码的有效时长,默认为 30 秒。
这是一个例子
otpauth://totp/Example%20Company:archie@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example%20Company
|type| issuer prefix | account | secret | issuer |
| label | parameters |
技巧与提示
解码 QR 码
可以使用 zbar 的工具完成此操作。解码 PNG 文件
$ zbarimg my_qr_code.png --quiet --raw
解码相机图像
$ zbarcam /dev/video0
$ import -silent -window root png:- | zbarimg --quiet --raw - | xclip -selection clipboard
创建 QR 码
qrencode 软件包在这里很有用。
编码 URI,另存为 PNG
$ qrencode -o my_code.png 'MY_URI'
编码 URI,将 QR 码打印到终端
$ qrencode -t ansiutf8 'MY_URI'
编码 URI,将其作为 PNG 复制到 剪贴板
$ qrencode -o - 'MY_URI' | xclip -selection clipboard -t image/png
生成密钥
要以正确的格式生成自己的密钥,您可以使用类似以下内容的方法
$ head -c 16 /dev/urandom | base32 --wrap 0
从命令行生成 OTP
使用 oath-toolkit 中的 oathtool(1)
$ oathtool --base32 --totp KEY
包括 pass 和 KeePass 在内的许多密码管理器也提供生成这些代码的支持。
使用 PAM 进行 Linux 用户认证
请参阅 pam_oath 或 Google Authenticator。
参见
- 标准规范
- URI 格式参考
- QR 和条形码解码器 - 请勿在此处输入实际凭证。
- QR 码测试器 (archive.org) - 请勿在此处输入实际凭证。