#otp #piv #yubi-keys

yubirs

一个用于与YubiKeys交互的库(OTP和PIV功能)

21个版本

0.9.3 2024年5月29日
0.9.2 2024年3月2日
0.9.1 2023年5月3日
0.9.0 2022年6月8日
0.1.0 2017年2月5日

#46 in 身份验证


用于 yubirs-tools

Apache-2.0

240KB
5K SLoC

yubirs

Build Status

Rust中与YubiKeys交互的库。

目前,此库支持OTP和PIV功能。

在Linux上使用Yubikeys

以下是一些有关如何使用Yubikey的有用资源

特别是,为了完全使用Yubikey,需要进行一些设置。OTP模式通常无需额外设置(因为我们只依赖于Yubikey的USB键盘功能),但对于PIV/智能卡功能,则需要一些额外的设置。

Arch Linux

  • libu2f-host 为非root用户使用Yubikey提供udev规则。
  • yubikey-manager 提供一些管理Yubikey的实用工具。
  • pcsclite 是yubirs的依赖项;这是我们用于与Yubikey程序交互的PC/SC库。
  • pcsc-tools 提供了一些与智能卡交互的实用工具。
  • ccid 提供了一个通用的USB芯片/智能卡接口设备驱动程序。
  • libusb-compat 提供了一个库,用于用户空间应用程序与USB设备通信。
sudo pacman -S libu2f-host yubikey-manager pcsclite pcsc-tools ccid libusb-compat

# For pcsclite to work, we need to start the pcscd daemon.
sudo systemctl start pcscd.service
sudo systemctl enable pcscd.service

Gentoo Linux

Gentoo的过程非常相似

# Install necessary packages.
emerge -av libu2f-host yubikey-manager pcsc-lite pcsc-tools ccid libusb-compat

# Add your user to the right group to be able to access the device. Replace
# $MY_USER with your username.
gpasswd -a $MY_USER pcscd plugdev usb

# Configure hotplugging by setting rc_hotplug="pcscd" in this file:
vim /etc/rc.conf

# Start pcscd, and configure it to start on boot.
rc-update add pcscd default
/etc/init.d/pcscd start

polkit

如果您的系统配置为使用polkit(例如,如果您正在运行KDE),则您还需要修改polkit的规则,以允许非root用户访问PC/SC设备。在/usr/share/polkit-1/rules.d/02-pcsc.rules

polkit.addRule(function(action, subject) {
    if (action.id == "org.debian.pcsc-lite.access_card" &&
        subject.user == "< YOUR USER HERE >") {
            return polkit.Result.YES;
    }
});

polkit.addRule(function(action, subject) {
    if (action.id == "org.debian.pcsc-lite.access_pcsc" &&
        subject.user == "< YOUR USER HERE >") {
            return polkit.Result.YES;
    }
});

测试

为了验证一切设置正确,以下命令都应正常工作并打印出有关Yubikey的信息

gpg --card-status
pcsc_scan

命令行工具

虽然yubirs是一个库,但yubirs-tools提供了用于处理YubiKeys的命令行工具。目前,以下二进制文件可用

piv-tool

piv-tool 类似于上游的yubico-piv-tool,但基于yubirs构建,而不是使用上游的C库。它具有与上游工具相似的功能性,但可能存在一些差距。官方上游文档提供了涉及概念的概述。

开发

该存储库包含一些额外的Git配置,这使得开发更容易。要使用此配置,请在存储库根目录中运行git config --local include.path ../.gitconfig注意:包含任意Git配置是一个安全漏洞,因此在包含之前应该审核此自定义配置。

依赖关系

约2-13MB
约159K SLoC