<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E7%94%B0%E4%B8%AD</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E7%94%B0%E4%B8%AD"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/%E7%94%B0%E4%B8%AD"/>
	<updated>2026-04-11T21:21:28Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40659</id>
		<title>YubiKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40659"/>
		<updated>2025-08-02T11:28:38Z</updated>

		<summary type="html">&lt;p&gt;田中: /* インストール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OpenPGP]]&lt;br /&gt;
[[Category:スマートカード]]&lt;br /&gt;
[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:YubiKey]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related|OATH}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|KeePass}}&lt;br /&gt;
{{Related|OpenPGP-card-tools}}&lt;br /&gt;
{{Related|スマートカード}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.yubico.com YubiKey] は小さな [[Wikipedia:ja:セキュリティトークン|USB セキュリティトークン]]です。モデルにも依りますが、以下のようなことができます:&lt;br /&gt;
&lt;br /&gt;
* スマートカードのように振る舞う([[Wikipedia:CCID (protocol)|CCID protocol]] を使用) - [https://developers.yubico.com/PGP/ PGP] と [https://developers.yubico.com/PIV/ PIV] 秘密鍵の両方を保存できます。&lt;br /&gt;
* [[Universal 2nd Factor]] (U2F) リクエストを処理する。&lt;br /&gt;
* 約 30 個の[[オープン認証イニシアチブ]] (OATH) 資格情報を保存・クエリする。&lt;br /&gt;
* Yubico OTP モードか HMAC-SHA1 モードで[[Wikipedia:Challenge–response authentication|チャレンジレスポンス認証]]を処理する。&lt;br /&gt;
* [[Wikipedia:ja:ワンタイムパスワード|ワンタイムパスワード]] (OTP) を生成する - [https://developers.yubico.com/OTP/ Yubico&#039;s AES based standard]。&lt;br /&gt;
* 63 文字までの静的パスワードを&amp;quot;入力&amp;quot;する。&lt;br /&gt;
&lt;br /&gt;
YubiKeyに関連するアプリケーションやライブラリはオープンソースですが、YubiKeyそのもののファームウェアは[https://www.yubico.com/blog/secure-hardware-vs-open-source/ オープンソースではありません]。代替としては [[Solo]]、[[Tillitis TKey|TKey]]、[[Nitrokey]] があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 管理ツール ===&lt;br /&gt;
* {{App|YubiKey Manager|USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール({{ic|ykman}})。|https://developers.yubico.com/yubikey-manager/|{{Pkg|yubikey-manager}}}}&lt;br /&gt;
::{{Note|インストール後、{{ic|pcscd.service}} を[[有効化]]してください。}}&lt;br /&gt;
::{{Warning|YubiKey ManagerのGUIフロントエンドである{{AUR|yubikey-manager-qt}}は開発が終了しており、使用は推奨されません。{{Pkg|yubikey-manager}}および{{AUR|yubico-authenticator}}が[https://www.yubico.com/support/terms-conditions/yubico-end-of-life-policy/eol-products/ 後継として推奨されています]。}}&lt;br /&gt;
::{{Warning|YubiKey Managerに代わるもうひとつの選択肢であった、{{Pkg|yubikey-personalization}}および{{Pkg|yubikey-personalization-gui}}も開発が終了しており、使用は推奨されません。{{Pkg|yubikey-manager}}が[https://www.yubico.com/support/terms-conditions/yubico-end-of-life-policy/eol-products/ 後継として推奨されています]}}&lt;br /&gt;
* {{App|Yubico Authenticator for Desktop|Yubico Authenticatorは、YubiKey の第二要素クレデンシャルを管理するためのアプリケーションです。バージョン 6.0 から、コードベースが Flutter フレームワークを使って完全に書き換えられました。|https://developers.yubico.com/yubioath-flutter/|{{AUR|yubico-authenticator}}, {{AUR|yubico-authenticator-bin}}}}&lt;br /&gt;
&lt;br /&gt;
=== ライブラリ ===&lt;br /&gt;
* {{App|Yubico PAM-U2F|[[U2F]] により [[PAM]] ユーザ認証。|https://developers.yubico.com/pam-u2f/|{{Pkg|pam-u2f}}}}&lt;br /&gt;
::{{Note|このプログラムは、開発が終了した{{Pkg|yubico-pam}}の[https://www.yubico.com/support/terms-conditions/yubico-end-of-life-policy/eol-products/ 後継として推奨されています]。}}&lt;br /&gt;
* {{App|libfido2|クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。|https://developers.yubico.com/libfido2/|{{Pkg|libfido2}}}}&lt;br /&gt;
* {{App|YubiKey Full Disk Encryption|チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。|https://github.com/agherzan/yubikey-full-disk-encryption|{{Pkg|yubikey-full-disk-encryption}}}}&lt;br /&gt;
&lt;br /&gt;
== 入力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。&lt;br /&gt;
&lt;br /&gt;
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:&lt;br /&gt;
&lt;br /&gt;
* 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。&lt;br /&gt;
* 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。&lt;br /&gt;
* スマートカードを挿入/除去する。&lt;br /&gt;
&lt;br /&gt;
== 出力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は以下の入力を出力に変換します:&lt;br /&gt;
&lt;br /&gt;
* キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)&lt;br /&gt;
* 組み込みの LED は:&lt;br /&gt;
** 挿入した際に一度光ります。トラブルシューティングに便利です。&lt;br /&gt;
** API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。&lt;br /&gt;
* USB を通した API 応答。これは以下のように使用されます:&lt;br /&gt;
** チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)&lt;br /&gt;
** U2F チャレンジレスポンス認証&lt;br /&gt;
** CCID スマートカード関連のリクエスト&lt;br /&gt;
&lt;br /&gt;
== USB 接続モード ==&lt;br /&gt;
&lt;br /&gt;
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。&lt;br /&gt;
&lt;br /&gt;
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! プロトコル !! インターフェイス&lt;br /&gt;
|-&lt;br /&gt;
|OTP || Keyboard HID&lt;br /&gt;
|-&lt;br /&gt;
|FIDO || Other HID&lt;br /&gt;
|-&lt;br /&gt;
|PIV || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OpenPGP || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OATH || CCID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は &amp;quot;modes&amp;quot; という用語を使用します、OTP、FIDO、CCID と名付けられています。&lt;br /&gt;
&lt;br /&gt;
{{Note|ykman はリリース 0.6.1 (2018-04-16)で &amp;quot;U2F&amp;quot; を &amp;quot;FIDO&amp;quot; と名前を変更しました。https://developers.yubico.com/yubikey-manager/Release_Notes.html}}&lt;br /&gt;
&lt;br /&gt;
=== 有効になっているモードを取得 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 5 以前の YubiKey では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman config mode|&lt;br /&gt;
Current connection mode is: OTP+FIDO+CCID&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ykman mode}} というコマンドは非推奨となっており、今後削除されるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey バージョン 5 では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman info|&lt;br /&gt;
Device type: YubiKey 5 NFC&lt;br /&gt;
Serial number: XXXXXXXXX&lt;br /&gt;
Firmware version: 5.4.3&lt;br /&gt;
Form factor: Keychain (USB-A)&lt;br /&gt;
Enabled USB interfaces: OTP, FIDO, CCID&lt;br /&gt;
NFC transport is enabled.&lt;br /&gt;
&lt;br /&gt;
Applications    USB     NFC&lt;br /&gt;
FIDO2           Enabled Enabled&lt;br /&gt;
OTP             Enabled Enabled&lt;br /&gt;
FIDO U2F        Enabled Enabled&lt;br /&gt;
OATH            Enabled Enabled&lt;br /&gt;
YubiHSM Auth    Enabled Enabled&lt;br /&gt;
OpenPGP         Enabled Enabled&lt;br /&gt;
PIV             Enabled Enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== モードをセット ===&lt;br /&gt;
&lt;br /&gt;
すべてのモードが出荷時から有効化されています。変更するには:&lt;br /&gt;
&lt;br /&gt;
 $ ykman mode &#039;&#039;[OPTIONS]&#039;&#039; &#039;&#039;MODE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} には文字列を使用できます。例えば、{{ic|OTP+FIDO+CCID}}。短い形式もあります: {{ic|o+f+c}}。&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。&lt;br /&gt;
&lt;br /&gt;
以下にモード番号の表があります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||OTP device only.&lt;br /&gt;
|-&lt;br /&gt;
|1||CCID device only.&lt;br /&gt;
|-&lt;br /&gt;
|2||OTP/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|3||U2F device only.&lt;br /&gt;
|-&lt;br /&gt;
|4||OTP/U2F composite device.&lt;br /&gt;
|-&lt;br /&gt;
|5||U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|6||OTP/U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|81||CCID device only, with touch-eject.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の例では 86 という番号を使用しています。これは[https://github.com/Yubico/yubikey-manager/issues/20#issuecomment-326496204 無効な番号]です。80 は無視され、6 のように振る舞います。}}&lt;br /&gt;
&lt;br /&gt;
オプション:&lt;br /&gt;
* {{ic|--touch-eject}} - ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。&lt;br /&gt;
* {{ic|--autoeject-timeout &#039;&#039;SECONDS&#039;&#039;}} - 一定時間立つとスマートカードを自動的に除去します。{{ic|--touch-eject}} と同じような制限があります。&lt;br /&gt;
* {{ic|--chalresp-timeout &#039;&#039;SECONDS&#039;&#039;}} - チャレンジレスポンス認証のタイムアウトを設定します。&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman mode --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ワンタイムパスワード ==&lt;br /&gt;
&lt;br /&gt;
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。&lt;br /&gt;
&lt;br /&gt;
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち&#039;&#039;&#039;1つ&#039;&#039;&#039;を設定できます:&lt;br /&gt;
&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
* OATH-HOTP&lt;br /&gt;
* OATH-TOTP&lt;br /&gt;
* チャレンジレスポンス認証&lt;br /&gt;
* 静的パスワード&lt;br /&gt;
&lt;br /&gt;
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。{{ic|ykman otp swap}} により、スロット1とスロット2を入れ替えることはできます。&lt;br /&gt;
&lt;br /&gt;
=== 工場出荷時の設定 ===&lt;br /&gt;
&lt;br /&gt;
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|スロット1にある工場出荷時のキーを上書きしてしまうと、同じ信頼レベルの新しいキーを作成することはできなくなります。工場で生成された Yubico OTP 認証情報は {{ic|CC}} という接頭辞で始まります。一方、ユーザが生成した認証情報は {{ic|VV}} で始まります。セキュリティおよび機能的には基本的な違いはありませんが、一部のサービスは {{ic|CC}} の認証情報のみを信頼します。さらなる情報はこの[https://forum.yubico.com/viewtopic12ca.html?f%3D16&amp;amp;t%3D1960 フォーラムスレッド]で見られます。}}&lt;br /&gt;
&lt;br /&gt;
=== Yubico OTP ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.yubico.com/OTP/ Yubico OTP] は[[Wikipedia:ja:共通鍵暗号|共通鍵暗号]]に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの [[Wikipedia:ja:Advanced_Encryption_Standard|AES]] 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。&lt;br /&gt;
&lt;br /&gt;
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。&lt;br /&gt;
&lt;br /&gt;
==== YubiCloud と検証サーバー ====&lt;br /&gt;
&lt;br /&gt;
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば) {{Pkg|yubico-pam}} によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーの[https://developers.yubico.com/Software_Projects/Yubico_OTP/YubiCloud_Validation_Servers/ オープンソースの実装]も提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Yubico の検証サーバーを認証する場合:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HMAC&#039;&#039;&#039; を使用: https://upgrade.yubico.com/getapikey/ から HMAC 鍵と ID を取得してください。&lt;br /&gt;
* &#039;&#039;&#039;HTTPS&#039;&#039;&#039; を使用: 検証サーバーの証明書は GoDaddy によって署名されています。Arch ではデフォルトで GoDaddy を信頼しています ({{Pkg|ca-certificates}} をインストールしていれば)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 設定と使用 ====&lt;br /&gt;
&lt;br /&gt;
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp yubiotp --generate-key --upload 2&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman otp yubiotp --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
==== セキュリティリスク ====&lt;br /&gt;
&lt;br /&gt;
===== AES 鍵の漏洩 =====&lt;br /&gt;
&lt;br /&gt;
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。&lt;br /&gt;
&lt;br /&gt;
===== 検証リクエスト/レスポンスの盗聴 =====&lt;br /&gt;
&lt;br /&gt;
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== チャレンジレスポンス認証 ===&lt;br /&gt;
&lt;br /&gt;
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。&lt;br /&gt;
&lt;br /&gt;
これは以下のように利用できます:&lt;br /&gt;
&lt;br /&gt;
* 真の二要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。&lt;br /&gt;
* 「準」二要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。&lt;br /&gt;
&lt;br /&gt;
2つのチャレンジレスポンス認証アルゴリズムがあります:&lt;br /&gt;
&lt;br /&gt;
* HMAC-SHA1&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|yubikey-personalization-gui}} を使って GUI で、あるいは以下の指示で設定できます。&lt;br /&gt;
&lt;br /&gt;
==== HMAC-SHA1 アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --generate 2&lt;br /&gt;
&lt;br /&gt;
キーを与えるための {{ic|--generate}} フラグは省略できます ({{ic|ykman otp chalresp --help}} を参照)。キーを与える主な利点は、バックアップ用の2つ目のデバイスをセットアップする際に使用できることです。例えば、{{ic|openssl rand -hex 20}} は適切な鍵を生成します。&lt;br /&gt;
&lt;br /&gt;
==== Yubico OTP アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、{{ic|ykpersonalize}} を使用できます。スロット2にランダムな鍵を生成してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykpersonalize -2 -ochal-resp -ochal-yubico&lt;br /&gt;
&lt;br /&gt;
さらなる情報は {{man|1|ykpersonalize}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== チャレンジを送信 ====&lt;br /&gt;
&lt;br /&gt;
チャレンジを送信してレスポンスを受信するには、{{ic|ykchalresp -&#039;&#039;slot&#039;&#039; &#039;&#039;challenge&#039;&#039;}} コマンドを使用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykchalresp -2 &#039;&#039;archie&#039;&#039;|&lt;br /&gt;
12a19763be77d75af46fb76f0b737c117fa47205&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このコマンドは、プログラム済みのスロット2のユニークな 40 バイトの SHA1 ハッシュ値を返します。チャレンジが異なると、異なるユニークなレスポンスが返されます。&lt;br /&gt;
&lt;br /&gt;
=== 静的パスワード ===&lt;br /&gt;
&lt;br /&gt;
静的パスワードも生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static --generate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、パスワードを与えることも:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static &#039;&#039;slot&#039;&#039; &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は {{ic|ykman otp static --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ほとんどの YubiKey では、静的パスワードを保存するためのスロットの数 (2個) は限られています。チャレンジレスポンス認証のスロットは、無制限のチャレンジに対して静的ハッシュ値のレスポンスを提供します。これらは数字と小文字アルファベットのみですが、レスポンスの長さによってかなりのエントロピーが生まれます。}}&lt;br /&gt;
&lt;br /&gt;
=== エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット({{ic|cbdefghijklnrtuv}})、数値 {{ic|0-9}}、{{ic|!}} に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。&lt;br /&gt;
&lt;br /&gt;
Yubico はこの問題に関する[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf 白書]を提供しています。&lt;br /&gt;
&lt;br /&gt;
== OATH ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は2つの [[OATH]] 実装を提供します:&lt;br /&gt;
; OATH API: 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)&lt;br /&gt;
; OTP slot: 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)&lt;br /&gt;
&lt;br /&gt;
=== OATH API ===&lt;br /&gt;
&lt;br /&gt;
GUI がお好みならば、{{Pkg|yubioath-desktop}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は、{{ic|ykman oath uri}} を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:&lt;br /&gt;
&lt;br /&gt;
 $ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri&lt;br /&gt;
&lt;br /&gt;
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --touch &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP 鍵をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --oath-type HOTP &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
認証情報を一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath list&lt;br /&gt;
&lt;br /&gt;
コードを生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath code &#039;&#039;query&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なサブコマンドをすべて見るには、{{ic|ykman oath --help}} を実行してください。それぞれのサブコマンドの情報を見るには、{{ic|ykman oath &#039;&#039;subcommand&#039;&#039; --help}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== OTP スロット実装 ===&lt;br /&gt;
&lt;br /&gt;
スロット2で HOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp hotp 2 &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --totp &#039;&#039;slot&#039;&#039; &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate --totp &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman otp --help}} と https://developers.yubico.com/OATH/ も参照してください。&lt;br /&gt;
&lt;br /&gt;
== U2F ==&lt;br /&gt;
&lt;br /&gt;
YubiKey を用いた [[Universal 2nd Factor]] (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは &#039;FIDO&#039; とも呼ばれていることに注意してください。{{ic|ykman}} ユーティリティを通じていくつかの限定された管理オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* PIN を設定:  {{ic|ykman fido access change-pin}}&lt;br /&gt;
* 個別の資格情報を削除: {{ic|ykman fido credentials delete &#039;&#039;QUERY&#039;&#039;}}&lt;br /&gt;
* すべての資格情報と PIN をリセット: {{ic|ykman fido reset}}&lt;br /&gt;
&lt;br /&gt;
U2F を認証に使用するには、[[U2F]] の指示を見てください。&lt;br /&gt;
&lt;br /&gt;
[[WebAuthn]] も参照。&lt;br /&gt;
&lt;br /&gt;
== CCID スマートカード ==&lt;br /&gt;
&lt;br /&gt;
CCID (Chip Card Interface Device) は、スマートカードリーダーとして振る舞う USB デバイスによって使用されたり、YubiKey のように USB を通して直接接続するセキュリティトークンで使用されたりする USB 標準デバイスクラスです。HID (Human Interface Device) と CCID は両方とも USB デバイスクラスです。つまり、これらは USB 仕様の同じカテゴリに属すということです。HID は、キーボードなどのようなコンピュータ周辺機器のための仕様です。YubiKey は、OTP モードと FIDO モードで使用されたときは USB (HID) キーボードのように働きます。しかし、PIV アプリケーションを使用する時や OpenPGP デバイスとして使用する時は CCID プロトコルに切り替わります。&lt;br /&gt;
&lt;br /&gt;
CCID モードは 2015 年11以降に出荷された YubiKey のすべてでデフォルトで有効になっているはずです[https://www.yubico.com/support/knowledge-base/categories/articles/use-yubikey-yubikey-windows-hello-app/]。少なくとも CCID モードは有効化してください。[[#有効になっているモードを取得]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PIV ===&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO 以降から、YubiKey はチップ上に PIV (Personal Identity Verification) アプリケーションが含まれています。PIV は、RSA や ECC(楕円曲線暗号) を使用するトークンが個人電子証明書にどのように使用されるかを定めた米国政府規格(FIPS 201)です。YubiKey NEO は RSA 暗号のみをサポートしますが、その後のモデル(YubiKey 4 と 5)は RSA と ECC の両方をサポートします。PIV トークンの特徴は、秘密鍵を保護しオンチップで動作するように構築されているという点です。秘密鍵は、トークン上にインストールされた後は決してトークン外に出ることはありません。オプションで、オンチップの乱数生成器を使って秘密鍵をオンチップで生成することもできます。秘密鍵がオンチップで生成された場合、秘密鍵はチップの外部で処理されることはなく、トークンから秘密鍵を復元する方法もありません。PIV メカニズムを使用する際は、YubiKey は CCID デバイスとして機能します。&lt;br /&gt;
&lt;br /&gt;
=== OpenPGP スマートカード ===&lt;br /&gt;
&lt;br /&gt;
YubiKey は標準の GPG スマートカードとしてとして振る舞うことができます; セットアップと使用法に関する説明は [[GnuPG#スマートカード]] セクションを見てください。Yubico は https://developers.yubico.com/PGP/ でドキュメントも提供しています。&lt;br /&gt;
&lt;br /&gt;
他の機能(U2F と OTP)を使用したくない場合、ボタンはキーを挿入/除去するように設定でき、自動除去のタイムアウトも設定できます。詳細は [[#USB 接続モード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザ PIN は {{ic|123456}} で、デフォルトの admin PIN は {{ic|12345678}} です。デフォルトの PUK も {{ic|12345678}} です。覚えておきましょう。&lt;br /&gt;
&lt;br /&gt;
== 使用例 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、様々な認証の目的での YubiKey の使用法について説明しています。しかし、以下は使用法について完全に網羅されたリストではありません。&lt;br /&gt;
&lt;br /&gt;
=== LUKS による完全なディスク暗号化 ===&lt;br /&gt;
&lt;br /&gt;
複数の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;チャレンジレスポンス認証:&#039;&#039;&#039; とあるチャレンジに対する[[#チャレンジレスポンス認証|レスポンス]]が LUKS 鍵として使用されます。チャレンジは、真の二要素認証においてはパスワードとして機能し、一要素認証においてはチャレンジは平文で保存することができます。&lt;br /&gt;
* &#039;&#039;&#039;GnuPG:&#039;&#039;&#039; YubiKey の [[#CCID スマートカード|PGP スマートカード]]の機能を使用します。長いパスフレーズ無しで強力な二要素認証を提供します。&lt;br /&gt;
* &#039;&#039;&#039;FIDO HMAC Secret:&#039;&#039;&#039; あなたの YubiKey が [[U2F]] をサポートしているのであれば、共通鍵を返すように設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスクの暗号化の強度は、使用している鍵のうち最も弱いものの強さと同じです。上記のツールの内一つを設定したら、初期のパスフレーズを削除するか、より長いものに置き換えることを検討してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 共通の前提条件 ====&lt;br /&gt;
&lt;br /&gt;
* [[dm-crypt/システム全体の暗号化|LUKS により暗号化された]]起動可能なシステム。少なくとも1つの空きキースロットがあり、{{ic|encrypt}} [[mkinitcpio]] フックを使用していること。&lt;br /&gt;
** {{AUR|mkinitcpio-ykfde}} を例外として、{{ic|sd-encrypt}} はこれらのツールの全てでサポートされていません。&lt;br /&gt;
* LUKS ヘッダーのバックアップ(任意ですが、推奨)&lt;br /&gt;
&lt;br /&gt;
==== チャレンジレスポンス認証 ====&lt;br /&gt;
&lt;br /&gt;
完全な手順については {{Pkg|yubikey-full-disk-encryption}} の [https://github.com/agherzan/yubikey-full-disk-encryption#usage 公式ドキュメント] を見てください。大まかには:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-full-disk-encryption}} をインストール。&lt;br /&gt;
# {{ic|/etc/ykfde.conf}} を設定。&lt;br /&gt;
# 対象のディスクを登録: {{ic|# ykfde-enroll -d /dev/&#039;&#039;DISK&#039;&#039; -s &#039;&#039;LUKS_SLOT&#039;&#039;}}&lt;br /&gt;
# {{ic|ykfde}} [[mkinitcpio#HOOKS|mkinitcpio フック]] を {{ic|encrypt}} フックの前に追加。&lt;br /&gt;
# [[Initramfs の再生成]]&lt;br /&gt;
&lt;br /&gt;
:{{Note|Plymouth ユーザーは、{{ic|plymouth-encrypt}} フックを {{ic|ykfde}} フックに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
いくつかの利用可能なバリエーションがあります:&lt;br /&gt;
&lt;br /&gt;
* 2FA: デフォルトの挙動。対象デバイスの登録時、および起動時にパスワードとしてチャレンジを与えなければなりません。&lt;br /&gt;
* 1FA: {{ic|ykfde.conf}} に {{ic|YKFDE_CHALLENGE}} を設定してください。これは平文で保存されることに注意してください。このファイルに対する非ルートユーザの読み込みアクセスを禁止することを検討してください。&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-nfc-support-in-ykfde-initramfs-hook-experimental NFC サポート] (実験的)&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-ykfde-suspend-service-experimental サスペンドと復帰のサポート] (実験的) サスペンド時に、暗号化されたボリュームが自動的にロックされます。復帰時に自動でアンロックします。&lt;br /&gt;
&lt;br /&gt;
設定の変更を行った時は、変更を反映させるために initramfs の再生成を行わなければなりません。&lt;br /&gt;
&lt;br /&gt;
==== systemd ベースの initramfs ====&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックのユーザは {{AUR|mkinitcpio-ykfde}} か {{AUR|mkinitcpio-ykfde-git}} をインストールし、[https://github.com/eworm-de/mkinitcpio-ykfde/blob/master/README-mkinitcpio.md プロジェクトのドキュメント]にある手順に従ってください。手順は、大まかに言えば {{Pkg|yubikey-full-disk-encryption}} に似ています。&lt;br /&gt;
&lt;br /&gt;
==== GnuPG 暗号化キーファイル ====&lt;br /&gt;
&lt;br /&gt;
これを行うためのツールの一つは [https://github.com/fuhry/initramfs-scencrypt initramfs-scencrypt] です。完全な手順についてはドキュメントを見てください。2022年10月以降、このパッケージは、GitHub で PKGBUILD が提供されていますが、AUR に存在せず、徹底的にテストもされていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/特記事項#GPG や OpenSSL で暗号化されたキーファイルを使う|Dm-crypt のページ]]ではいくつかの代替策が提示されています。しかし、それらの殆どがフォーラムの古い投稿へのリンクです。&lt;br /&gt;
&lt;br /&gt;
==== FIDO2 プロトコルの HMAC secret extension ====&lt;br /&gt;
&lt;br /&gt;
YubiKey を完全ディスク暗号化に使うもう一つの方法は、[https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#sctn-hmac-secret-extension HMAC Secret Extension] を使用して、YubiKey から LUKS のパスワードを取得することです。これはパスフレーズによって保護することができます。この機能には、少なくとも[https://support.yubico.com/hc/en-us/articles/360016649319-YubiKey-5-2-3-Enhancements-to-FIDO-2-Support ファームウェア 5.2.3+ のYubiKey 5] が必要です。&lt;br /&gt;
パスフレーズによる保護の方法では、{{AUR|khefin}} をインストールし、[https://github.com/mjec/khefin/wiki/Arch-Linux-LUKS-configuration プロジェクトのドキュメント]にある手順に従ってください。&lt;br /&gt;
systemd 248 以降での(任意で PIN による保護が施された)1要素による方法では、FIDO2 キーを LUKS2 キースロットとして使用できます。手順は[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html 作者のブログ投稿]で見られます。&lt;br /&gt;
&lt;br /&gt;
=== KeePass ===&lt;br /&gt;
&lt;br /&gt;
[[KeePass]] は YubiKey をサポートするように設定できます。手順は [[KeePass#Yubikey|YubiKey セクション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== SSH 鍵 ===&lt;br /&gt;
&lt;br /&gt;
==== CCID ====&lt;br /&gt;
&lt;br /&gt;
あなたの YubiKey が CCID スマートカードをサポートしているのであれば、GPG 鍵や PIV 鍵のどちらかをベースとしてハードウェアによる [[SSH 鍵]] として使用することができます。Yubico は品質の良いドキュメントを提供しています:&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html PGP と PIV の両方の可能性から見た概要]、それらの利点と欠点を挙げています。&lt;br /&gt;
* [https://developers.yubico.com/PGP/SSH_authentication/index.html PGP 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html ユーザ証明書による PIV 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html #PKCS11 による PIV 認証]のための手順&lt;br /&gt;
&lt;br /&gt;
:{{Note|YubiKey 上の PIV アプリケーションデフォルトの PIN コードは {{ic|123456}} です。デフォルトの管理キーと一緒に PIN コードも変更しておくべきでしょう。詳細は [https://developers.yubico.com/PIV/Guides/Device_setup.html デバイスセットアップの手順] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== U2F ====&lt;br /&gt;
&lt;br /&gt;
YubiKey の U2F の機能を使用してハードウェアによる SSH 鍵を作成することもできます。手順は [[SSH 鍵#FIDO/U2F]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== PIV ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|yubikey-agent}} は SSH 鍵 を PIV トークンとして保存します。セットアップガイドは https://github.com/FiloSottile/yubikey-agent#readme を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PAM を用いた Linux ユーザ認証 ===&lt;br /&gt;
&lt;br /&gt;
ユーザ認証のために [[PAM]] を使用するすべてのものは、ユーザ認証のプロセスの一つの要素として YubiKey を使用するように設定できます。これには sudo、su、ssh、スクリーンロッカー、ディスプレイマネージャー、そして Linux システムがユーザを認証する必要のあるほぼすべての場面を含みます。その柔軟な設定により、システム全体や特定のアプリケーション、あるいはアプリケーションのグループに対して、あなたのニーズに合う認証要件を自由に設定することができます。例えば、ローカルセッションではパスワードの代わりとして YubiKey を受け入れ、リモートのセッションでは両方を要求することができます。これがどのように機能し、どのように設定するのかを理解するために、Arch Wiki の記事に加えて、{{man|8|pam}} や {{man|5|pam.conf}} を読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
YubiKey がサポートするプロトコルを PAM に統合するのに利用できるモジュールが複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|pam-u2f}} - FIDO2 規格による [[#U2F]] をサポート。どの手法を使うべきかわからない場合、これが良い選択です。&lt;br /&gt;
** [[Universal 2nd Factor#Arch Linux の認証|Arch Wiki の記事]]&lt;br /&gt;
** [https://developers.yubico.com/pam-u2f/ Yubico の公式ドキュメント]、サポートされるモジュールパラメータのリストがあります。&lt;br /&gt;
** Man ページ: {{man|8|pam_u2f}}、{{man|1|pamu2fcfg}}&lt;br /&gt;
* {{Pkg|oath-toolkit}} - [[#OATH]] ワンタイムパスワードをサポート(HOTP か TOTP)。&lt;br /&gt;
** [[pam_oath]]&lt;br /&gt;
* {{Pkg|yubico-pam}} - [[#Yubico OTP]] と チャレンジレスポンス認証 OTP をサポート。Yubico OTP モードでは認証サーバーへのネットワーク接続が必要であることに注意してください。チャレンジレスポンス認証では必要ありません。&lt;br /&gt;
** [https://developers.yubico.com/yubico-pam/ Yubico の公式ドキュメント]&lt;br /&gt;
** {{man|8|pam_yubico}} - チャレンジレスポンス認証モードを設定するのに使用される {{ic|mode}} パラメータに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|PAM の設定ファイルを変更する際には厳重な注意が必要です。間違うと、システムが完全に安全ではなくなったり、安全すぎて認証できなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
PAM の設定はこの記事の範囲を超えますが、簡単な概要としては:&lt;br /&gt;
&lt;br /&gt;
* 認証されたキーを含むファイルをホームディレクトリ内か一元的に作成する。&lt;br /&gt;
* 適切な PAM 設定ファイルの適切な場所に、以下のフォーマットに従う行を追加する:&lt;br /&gt;
    auth [required|sufficient] [module_name].so [module arguments]&lt;br /&gt;
* 多要素認証には {{ic|auth required}}、単一要素認証には {{ic|auth sufficient}}。&lt;br /&gt;
* {{ic|module_name}} - 例: {{ic|pam_u2f.so}}。インストールされているモジュールのリストを見てください: {{ic|ls /usr/lib/security }}&lt;br /&gt;
* モジュールの設定引数は、キーファイルの場所や、認証するためにどの手法をモジュールが使用すべきかなどです。&lt;br /&gt;
&lt;br /&gt;
==== SSH における注意事項 ====&lt;br /&gt;
&lt;br /&gt;
* Yubico は[https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html 追加のガイダンス]を公開しています。これは Ubuntu の古いバージョン向けですが、アップデートされている Arch システムにも適用できます。&lt;br /&gt;
* 遠隔地にあるサーバを YubiKey を使用するように設定する場合、追加で少なくとも一つの緊急用 SSH セッションを開いておくべきです。こうすれば、設定ミスにより締め出されないで済みます。&lt;br /&gt;
* {{ic|/etc/ssh/sshd_config}} に以下の設定が含まれていることを確認してください。{{Pkg|openssh}} に同梱されている {{ic|sshd_config}} はデフォルトでこれらが正しく設定されています。&lt;br /&gt;
    ChallengeResponseAuthentication no&lt;br /&gt;
    UsePAM yes&lt;br /&gt;
&lt;br /&gt;
=== ブラウザ/web 統合 ===&lt;br /&gt;
&lt;br /&gt;
多くのウェブサービスが FIDO ハードウェアトークンをサポートし始めています。詳細は [[U2F]] や [[WebAuthn]] のページを見てください。しかし、通常、するべきことといえば {{Pkg|libfido2}} をインストールして [https://demo.yubico.com/webauthn-technical/registration 試してみる]ことくらいです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey デバイスの挿入/除去時にアクションを実行する ===&lt;br /&gt;
&lt;br /&gt;
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成し、以下の内容を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;, ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, RUN+=&amp;quot;&#039;&#039;/usr/local/bin/script args&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを &amp;quot;remove&amp;quot; ではなく &amp;quot;add&amp;quot; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 挿入時に Yubico Authenticator を開始する ===&lt;br /&gt;
&lt;br /&gt;
Authenticator は長時間実行される GUI プロセスです。Udev ルール内で直接実行すると、プロセスが udev の処理をブロックしてしまいます。フォークすると、イベント処理の終了後に udev は無条件で (フォークによって生成された) プロセスをキルしてしまいます。なので、authenticator を udev ルールから開始することはできません。しかし、systemd.device を使うことができます。&lt;br /&gt;
&lt;br /&gt;
上記と同じように、{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成して、以下の内容を書き込んでください:&lt;br /&gt;
&lt;br /&gt;
 ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, SYMLINK+=&amp;quot;yubikey&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして、新しい systemd [[ユーザーユニット]]を[[作成]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/yubioath-desktop.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Autostart Yubico Authenticator&lt;br /&gt;
# Uncomment if you want to stop the authenticator when unplugged.&lt;br /&gt;
#StopPropagatedFrom=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/yubioath-desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、このユニットを[[有効化]]してください。&#039;&#039;systemctl&#039;&#039; が、このユニットが存在しない {{ic|dev-yubikey.device}} ユニットの依存関係として追加されたことを警告してきますが、問題ありません。このユニットは、YubiKey が挿入されると開始されます。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス/アップグレード ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey NEO 用に OATH アプレットをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のステップは、ファームウェアバージョン &amp;lt;= 3.1.2 の NEO でのみ必要です。現在の世代の NEO (U2F 搭載) は OpenPGP アプレットがすでにインストールされています。}}&lt;br /&gt;
&lt;br /&gt;
==== NEO を CCID デバイスとして設定する ====&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-personalization-gui}} ({{AUR|yubikey-personalization-gui-git}}) を[[インストール]]。&lt;br /&gt;
# udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。&lt;br /&gt;
# {{ic|ykpersonalize -m82}} を実行し、{{ic|y}} を入力、エンターを押す。&lt;br /&gt;
&lt;br /&gt;
==== アプレットをインストールする ====&lt;br /&gt;
&lt;br /&gt;
# {{AUR|gpshell}}、{{AUR|gppcscconnectionplugin}}、{{AUR|globalplatform}}、{{Pkg|pcsclite}} を[[インストール]]。&lt;br /&gt;
# {{ic|pcscd.service}} を[[起動]]。&lt;br /&gt;
# 最も最近の CAP ファイルを [https://developers.yubico.com/ykneo-oath/Releases/ ykneo-oath] サイトからダウンロード。&lt;br /&gt;
# {{ic|gpinstall.txt}} を [https://github.com/Yubico/ykneo-oath/blob/master/gpinstall.txt GitHub] からダウンロード。&lt;br /&gt;
# gpinstall.txt を編集して {{ic|install -file}} から始まる行を CAP ファイルが置かれているパスに修正。&lt;br /&gt;
# ターミナルを開き、{{ic|gpshell &#039;&#039;path/to/gpinstall.txt&#039;&#039;}} を実行。&lt;br /&gt;
# 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;Command --&amp;gt; 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100&lt;br /&gt;
Wrapped command --&amp;gt; 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77&lt;br /&gt;
27D0EDA00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
Command --&amp;gt; 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000&lt;br /&gt;
Wrapped command --&amp;gt; 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
card_disconnect&lt;br /&gt;
release_context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# NEO を抜き、Yubico Authenticator アプリで試す。&lt;br /&gt;
&lt;br /&gt;
==== (任意)Yubico Authenticator デスクトップクライアントをインストールする ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|yubioath-desktop}} をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcscd.service}} が実行中の間に、{{ic|yubioath-desktop}} を実行して、プロンプトが表示されたら YubiKey を挿入してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が HID デバイスとして機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[https://github.com/systemd/systemd/commit/d45ee2f31a8358db0accde2e7c81777cedadc3c2 バージョン 244以降の systemd は]この機能に対するネイティブサポートを追加したので、以下のステップはもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
[https://michaelheap.com/yubikey-on-arch/ この記事]で説明されているように、udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-security-key.rules|2=&lt;br /&gt;
KERNEL==&amp;quot;hidraw*&amp;quot;, SUBSYSTEM==&amp;quot;hidraw&amp;quot;, MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;users&amp;quot;, ATTRS{idVendor}==&amp;quot;2581&amp;quot;, ATTRS{idProduct}==&amp;quot;f1d0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|udevadm trigger}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== ykman が YubiKey に接続できない ===&lt;br /&gt;
&lt;br /&gt;
マネージャが YubiKey への接続に失敗する場合、{{ic|pcscd.service}} か {{ic|pcscd.socket}} が起動していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions. ===&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|scdaemon}} がすでにデバイスの排他的な制御を取得している場合に {{ic|ykman}} がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[https://github.com/Yubico/yubikey-manager/issues/35]&lt;br /&gt;
&lt;br /&gt;
これを修正するには、{{ic|~/.gnupg/scdaemon.conf}} 内であなたのデバイスに対して {{ic|reader-port}} オプションを正しい値で設定することができます。[https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG]&lt;br /&gt;
&lt;br /&gt;
{{Note|これにより、ykman を通して YubiKey にアクセスするたびに gpgagent が YubiKey をアンロックするプロンプトを表示するようになります。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO と YubiKey 4 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubikey&lt;br /&gt;
&lt;br /&gt;
YubiKey 5 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubi&lt;br /&gt;
&lt;br /&gt;
=== YubiKey がゲスト VM 内でバインドできない ===&lt;br /&gt;
&lt;br /&gt;
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの [[dmesg]] からバスとポートの情報を手に入れる必要があります:&lt;br /&gt;
&lt;br /&gt;
 # dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E &#039;s/^\&amp;lt;nowiki&amp;gt;[[^]]&amp;lt;/nowiki&amp;gt;+\] usb (&amp;lt;nowiki&amp;gt;[^:]&amp;lt;/nowiki&amp;gt;*):.*/\1/&#039;&lt;br /&gt;
&lt;br /&gt;
出力の USB id は {{ic|X-Y.Z}} または {{ic|X-Y}} の形式であるはずです。そして、ホスト上で、{{ic|find}} を使って {{ic|/sys/bus/usb/drivers}} を検索し、YubiKey がバインドしているドライバを探します (例: {{ic|usbhid}} または {{ic|usbfs}})。&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/bus/usb/drivers -name &amp;quot;*X-Y.Z*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デバイスのバインドを解除するには、先のコマンドの出力を使ってください (つまり、{{ic|/sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/X-Y.Z:1.0}}):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;X-Y.Z:1.0&#039; &amp;gt; /sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/unbind&lt;br /&gt;
&lt;br /&gt;
=== Error: [key] could not be locally signed or gpg: No default secret key: No public key ===&lt;br /&gt;
&lt;br /&gt;
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、[[pacman-key|Pacman]] が {{ic|pacman-key --populate}} で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が Yubico Authenticator で消えたり現れたりする ===&lt;br /&gt;
&lt;br /&gt;
これは、CCID ドライバがインストールされていない際に起こります。{{Pkg|ccid}} パッケージを[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey core error: timeout ===&lt;br /&gt;
&lt;br /&gt;
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|YubiKey|2024-08-26|814790}}&lt;/div&gt;</summary>
		<author><name>田中</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40658</id>
		<title>YubiKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40658"/>
		<updated>2025-08-02T11:23:45Z</updated>

		<summary type="html">&lt;p&gt;田中: /* インストール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OpenPGP]]&lt;br /&gt;
[[Category:スマートカード]]&lt;br /&gt;
[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:YubiKey]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related|OATH}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|KeePass}}&lt;br /&gt;
{{Related|OpenPGP-card-tools}}&lt;br /&gt;
{{Related|スマートカード}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.yubico.com YubiKey] は小さな [[Wikipedia:ja:セキュリティトークン|USB セキュリティトークン]]です。モデルにも依りますが、以下のようなことができます:&lt;br /&gt;
&lt;br /&gt;
* スマートカードのように振る舞う([[Wikipedia:CCID (protocol)|CCID protocol]] を使用) - [https://developers.yubico.com/PGP/ PGP] と [https://developers.yubico.com/PIV/ PIV] 秘密鍵の両方を保存できます。&lt;br /&gt;
* [[Universal 2nd Factor]] (U2F) リクエストを処理する。&lt;br /&gt;
* 約 30 個の[[オープン認証イニシアチブ]] (OATH) 資格情報を保存・クエリする。&lt;br /&gt;
* Yubico OTP モードか HMAC-SHA1 モードで[[Wikipedia:Challenge–response authentication|チャレンジレスポンス認証]]を処理する。&lt;br /&gt;
* [[Wikipedia:ja:ワンタイムパスワード|ワンタイムパスワード]] (OTP) を生成する - [https://developers.yubico.com/OTP/ Yubico&#039;s AES based standard]。&lt;br /&gt;
* 63 文字までの静的パスワードを&amp;quot;入力&amp;quot;する。&lt;br /&gt;
&lt;br /&gt;
YubiKeyに関連するアプリケーションやライブラリはオープンソースですが、YubiKeyそのもののファームウェアは[https://www.yubico.com/blog/secure-hardware-vs-open-source/ オープンソースではありません]。代替としては [[Solo]]、[[Tillitis TKey|TKey]]、[[Nitrokey]] があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 管理ツール ===&lt;br /&gt;
* {{App|YubiKey Manager|USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール({{ic|ykman}})。|https://developers.yubico.com/yubikey-manager/|{{Pkg|yubikey-manager}}}}&lt;br /&gt;
::{{Note|インストール後、{{ic|pcscd.service}} を[[有効化]]してください。}}&lt;br /&gt;
::{{Warning|YubiKey ManagerのGUIフロントエンドである{{AUR|yubikey-manager-qt}}は開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
::{{Note|このプログラムは、{{Pkg|yubico-pam}}の[https://www.yubico.com/support/terms-conditions/yubico-end-of-life-policy/eol-products/ 後継として推奨されています]。}}&lt;br /&gt;
::{{Warning|YubiKey Managerに代わるもうひとつの選択肢であった、{{Pkg|yubikey-personalization}}および{{Pkg|yubikey-personalization-gui}}も開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
* {{App|Yubico Authenticator 6.0+ for Desktop|Yubico Authenticator 6.0+ (バージョン 6.0 及びそれ以降) は、YubiKey の第二要素クレデンシャルを管理するためのアプリケーションです。バージョン 6.0 から、コードベースが Flutter フレームワークを使って完全に書き換えられました。|https://developers.yubico.com/yubioath-flutter/|{{AUR|yubico-authenticator}}, {{AUR|yubico-authenticator-bin}}}}&lt;br /&gt;
&lt;br /&gt;
=== ライブラリ ===&lt;br /&gt;
* {{App|Yubico PAM-U2F|[[U2F]] により [[PAM]] ユーザ認証。|https://developers.yubico.com/pam-u2f/|{{Pkg|pam-u2f}}}}&lt;br /&gt;
::{{Note|このプログラムは、{{Pkg|yubico-pam}}の[https://www.yubico.com/support/terms-conditions/yubico-end-of-life-policy/eol-products/ 後継として推奨されています]。}}&lt;br /&gt;
* {{App|libfido2|クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。|https://developers.yubico.com/libfido2/|{{Pkg|libfido2}}}}&lt;br /&gt;
* {{App|YubiKey Full Disk Encryption|チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。|https://github.com/agherzan/yubikey-full-disk-encryption|{{Pkg|yubikey-full-disk-encryption}}}}&lt;br /&gt;
&lt;br /&gt;
== 入力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。&lt;br /&gt;
&lt;br /&gt;
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:&lt;br /&gt;
&lt;br /&gt;
* 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。&lt;br /&gt;
* 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。&lt;br /&gt;
* スマートカードを挿入/除去する。&lt;br /&gt;
&lt;br /&gt;
== 出力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は以下の入力を出力に変換します:&lt;br /&gt;
&lt;br /&gt;
* キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)&lt;br /&gt;
* 組み込みの LED は:&lt;br /&gt;
** 挿入した際に一度光ります。トラブルシューティングに便利です。&lt;br /&gt;
** API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。&lt;br /&gt;
* USB を通した API 応答。これは以下のように使用されます:&lt;br /&gt;
** チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)&lt;br /&gt;
** U2F チャレンジレスポンス認証&lt;br /&gt;
** CCID スマートカード関連のリクエスト&lt;br /&gt;
&lt;br /&gt;
== USB 接続モード ==&lt;br /&gt;
&lt;br /&gt;
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。&lt;br /&gt;
&lt;br /&gt;
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! プロトコル !! インターフェイス&lt;br /&gt;
|-&lt;br /&gt;
|OTP || Keyboard HID&lt;br /&gt;
|-&lt;br /&gt;
|FIDO || Other HID&lt;br /&gt;
|-&lt;br /&gt;
|PIV || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OpenPGP || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OATH || CCID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は &amp;quot;modes&amp;quot; という用語を使用します、OTP、FIDO、CCID と名付けられています。&lt;br /&gt;
&lt;br /&gt;
{{Note|ykman はリリース 0.6.1 (2018-04-16)で &amp;quot;U2F&amp;quot; を &amp;quot;FIDO&amp;quot; と名前を変更しました。https://developers.yubico.com/yubikey-manager/Release_Notes.html}}&lt;br /&gt;
&lt;br /&gt;
=== 有効になっているモードを取得 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 5 以前の YubiKey では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman config mode|&lt;br /&gt;
Current connection mode is: OTP+FIDO+CCID&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ykman mode}} というコマンドは非推奨となっており、今後削除されるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey バージョン 5 では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman info|&lt;br /&gt;
Device type: YubiKey 5 NFC&lt;br /&gt;
Serial number: XXXXXXXXX&lt;br /&gt;
Firmware version: 5.4.3&lt;br /&gt;
Form factor: Keychain (USB-A)&lt;br /&gt;
Enabled USB interfaces: OTP, FIDO, CCID&lt;br /&gt;
NFC transport is enabled.&lt;br /&gt;
&lt;br /&gt;
Applications    USB     NFC&lt;br /&gt;
FIDO2           Enabled Enabled&lt;br /&gt;
OTP             Enabled Enabled&lt;br /&gt;
FIDO U2F        Enabled Enabled&lt;br /&gt;
OATH            Enabled Enabled&lt;br /&gt;
YubiHSM Auth    Enabled Enabled&lt;br /&gt;
OpenPGP         Enabled Enabled&lt;br /&gt;
PIV             Enabled Enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== モードをセット ===&lt;br /&gt;
&lt;br /&gt;
すべてのモードが出荷時から有効化されています。変更するには:&lt;br /&gt;
&lt;br /&gt;
 $ ykman mode &#039;&#039;[OPTIONS]&#039;&#039; &#039;&#039;MODE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} には文字列を使用できます。例えば、{{ic|OTP+FIDO+CCID}}。短い形式もあります: {{ic|o+f+c}}。&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。&lt;br /&gt;
&lt;br /&gt;
以下にモード番号の表があります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||OTP device only.&lt;br /&gt;
|-&lt;br /&gt;
|1||CCID device only.&lt;br /&gt;
|-&lt;br /&gt;
|2||OTP/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|3||U2F device only.&lt;br /&gt;
|-&lt;br /&gt;
|4||OTP/U2F composite device.&lt;br /&gt;
|-&lt;br /&gt;
|5||U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|6||OTP/U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|81||CCID device only, with touch-eject.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の例では 86 という番号を使用しています。これは[https://github.com/Yubico/yubikey-manager/issues/20#issuecomment-326496204 無効な番号]です。80 は無視され、6 のように振る舞います。}}&lt;br /&gt;
&lt;br /&gt;
オプション:&lt;br /&gt;
* {{ic|--touch-eject}} - ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。&lt;br /&gt;
* {{ic|--autoeject-timeout &#039;&#039;SECONDS&#039;&#039;}} - 一定時間立つとスマートカードを自動的に除去します。{{ic|--touch-eject}} と同じような制限があります。&lt;br /&gt;
* {{ic|--chalresp-timeout &#039;&#039;SECONDS&#039;&#039;}} - チャレンジレスポンス認証のタイムアウトを設定します。&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman mode --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ワンタイムパスワード ==&lt;br /&gt;
&lt;br /&gt;
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。&lt;br /&gt;
&lt;br /&gt;
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち&#039;&#039;&#039;1つ&#039;&#039;&#039;を設定できます:&lt;br /&gt;
&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
* OATH-HOTP&lt;br /&gt;
* OATH-TOTP&lt;br /&gt;
* チャレンジレスポンス認証&lt;br /&gt;
* 静的パスワード&lt;br /&gt;
&lt;br /&gt;
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。{{ic|ykman otp swap}} により、スロット1とスロット2を入れ替えることはできます。&lt;br /&gt;
&lt;br /&gt;
=== 工場出荷時の設定 ===&lt;br /&gt;
&lt;br /&gt;
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|スロット1にある工場出荷時のキーを上書きしてしまうと、同じ信頼レベルの新しいキーを作成することはできなくなります。工場で生成された Yubico OTP 認証情報は {{ic|CC}} という接頭辞で始まります。一方、ユーザが生成した認証情報は {{ic|VV}} で始まります。セキュリティおよび機能的には基本的な違いはありませんが、一部のサービスは {{ic|CC}} の認証情報のみを信頼します。さらなる情報はこの[https://forum.yubico.com/viewtopic12ca.html?f%3D16&amp;amp;t%3D1960 フォーラムスレッド]で見られます。}}&lt;br /&gt;
&lt;br /&gt;
=== Yubico OTP ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.yubico.com/OTP/ Yubico OTP] は[[Wikipedia:ja:共通鍵暗号|共通鍵暗号]]に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの [[Wikipedia:ja:Advanced_Encryption_Standard|AES]] 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。&lt;br /&gt;
&lt;br /&gt;
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。&lt;br /&gt;
&lt;br /&gt;
==== YubiCloud と検証サーバー ====&lt;br /&gt;
&lt;br /&gt;
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば) {{Pkg|yubico-pam}} によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーの[https://developers.yubico.com/Software_Projects/Yubico_OTP/YubiCloud_Validation_Servers/ オープンソースの実装]も提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Yubico の検証サーバーを認証する場合:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HMAC&#039;&#039;&#039; を使用: https://upgrade.yubico.com/getapikey/ から HMAC 鍵と ID を取得してください。&lt;br /&gt;
* &#039;&#039;&#039;HTTPS&#039;&#039;&#039; を使用: 検証サーバーの証明書は GoDaddy によって署名されています。Arch ではデフォルトで GoDaddy を信頼しています ({{Pkg|ca-certificates}} をインストールしていれば)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 設定と使用 ====&lt;br /&gt;
&lt;br /&gt;
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp yubiotp --generate-key --upload 2&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman otp yubiotp --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
==== セキュリティリスク ====&lt;br /&gt;
&lt;br /&gt;
===== AES 鍵の漏洩 =====&lt;br /&gt;
&lt;br /&gt;
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。&lt;br /&gt;
&lt;br /&gt;
===== 検証リクエスト/レスポンスの盗聴 =====&lt;br /&gt;
&lt;br /&gt;
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== チャレンジレスポンス認証 ===&lt;br /&gt;
&lt;br /&gt;
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。&lt;br /&gt;
&lt;br /&gt;
これは以下のように利用できます:&lt;br /&gt;
&lt;br /&gt;
* 真の二要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。&lt;br /&gt;
* 「準」二要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。&lt;br /&gt;
&lt;br /&gt;
2つのチャレンジレスポンス認証アルゴリズムがあります:&lt;br /&gt;
&lt;br /&gt;
* HMAC-SHA1&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|yubikey-personalization-gui}} を使って GUI で、あるいは以下の指示で設定できます。&lt;br /&gt;
&lt;br /&gt;
==== HMAC-SHA1 アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --generate 2&lt;br /&gt;
&lt;br /&gt;
キーを与えるための {{ic|--generate}} フラグは省略できます ({{ic|ykman otp chalresp --help}} を参照)。キーを与える主な利点は、バックアップ用の2つ目のデバイスをセットアップする際に使用できることです。例えば、{{ic|openssl rand -hex 20}} は適切な鍵を生成します。&lt;br /&gt;
&lt;br /&gt;
==== Yubico OTP アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、{{ic|ykpersonalize}} を使用できます。スロット2にランダムな鍵を生成してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykpersonalize -2 -ochal-resp -ochal-yubico&lt;br /&gt;
&lt;br /&gt;
さらなる情報は {{man|1|ykpersonalize}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== チャレンジを送信 ====&lt;br /&gt;
&lt;br /&gt;
チャレンジを送信してレスポンスを受信するには、{{ic|ykchalresp -&#039;&#039;slot&#039;&#039; &#039;&#039;challenge&#039;&#039;}} コマンドを使用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykchalresp -2 &#039;&#039;archie&#039;&#039;|&lt;br /&gt;
12a19763be77d75af46fb76f0b737c117fa47205&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このコマンドは、プログラム済みのスロット2のユニークな 40 バイトの SHA1 ハッシュ値を返します。チャレンジが異なると、異なるユニークなレスポンスが返されます。&lt;br /&gt;
&lt;br /&gt;
=== 静的パスワード ===&lt;br /&gt;
&lt;br /&gt;
静的パスワードも生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static --generate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、パスワードを与えることも:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static &#039;&#039;slot&#039;&#039; &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は {{ic|ykman otp static --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ほとんどの YubiKey では、静的パスワードを保存するためのスロットの数 (2個) は限られています。チャレンジレスポンス認証のスロットは、無制限のチャレンジに対して静的ハッシュ値のレスポンスを提供します。これらは数字と小文字アルファベットのみですが、レスポンスの長さによってかなりのエントロピーが生まれます。}}&lt;br /&gt;
&lt;br /&gt;
=== エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット({{ic|cbdefghijklnrtuv}})、数値 {{ic|0-9}}、{{ic|!}} に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。&lt;br /&gt;
&lt;br /&gt;
Yubico はこの問題に関する[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf 白書]を提供しています。&lt;br /&gt;
&lt;br /&gt;
== OATH ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は2つの [[OATH]] 実装を提供します:&lt;br /&gt;
; OATH API: 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)&lt;br /&gt;
; OTP slot: 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)&lt;br /&gt;
&lt;br /&gt;
=== OATH API ===&lt;br /&gt;
&lt;br /&gt;
GUI がお好みならば、{{Pkg|yubioath-desktop}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は、{{ic|ykman oath uri}} を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:&lt;br /&gt;
&lt;br /&gt;
 $ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri&lt;br /&gt;
&lt;br /&gt;
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --touch &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP 鍵をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --oath-type HOTP &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
認証情報を一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath list&lt;br /&gt;
&lt;br /&gt;
コードを生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath code &#039;&#039;query&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なサブコマンドをすべて見るには、{{ic|ykman oath --help}} を実行してください。それぞれのサブコマンドの情報を見るには、{{ic|ykman oath &#039;&#039;subcommand&#039;&#039; --help}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== OTP スロット実装 ===&lt;br /&gt;
&lt;br /&gt;
スロット2で HOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp hotp 2 &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --totp &#039;&#039;slot&#039;&#039; &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate --totp &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman otp --help}} と https://developers.yubico.com/OATH/ も参照してください。&lt;br /&gt;
&lt;br /&gt;
== U2F ==&lt;br /&gt;
&lt;br /&gt;
YubiKey を用いた [[Universal 2nd Factor]] (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは &#039;FIDO&#039; とも呼ばれていることに注意してください。{{ic|ykman}} ユーティリティを通じていくつかの限定された管理オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* PIN を設定:  {{ic|ykman fido access change-pin}}&lt;br /&gt;
* 個別の資格情報を削除: {{ic|ykman fido credentials delete &#039;&#039;QUERY&#039;&#039;}}&lt;br /&gt;
* すべての資格情報と PIN をリセット: {{ic|ykman fido reset}}&lt;br /&gt;
&lt;br /&gt;
U2F を認証に使用するには、[[U2F]] の指示を見てください。&lt;br /&gt;
&lt;br /&gt;
[[WebAuthn]] も参照。&lt;br /&gt;
&lt;br /&gt;
== CCID スマートカード ==&lt;br /&gt;
&lt;br /&gt;
CCID (Chip Card Interface Device) は、スマートカードリーダーとして振る舞う USB デバイスによって使用されたり、YubiKey のように USB を通して直接接続するセキュリティトークンで使用されたりする USB 標準デバイスクラスです。HID (Human Interface Device) と CCID は両方とも USB デバイスクラスです。つまり、これらは USB 仕様の同じカテゴリに属すということです。HID は、キーボードなどのようなコンピュータ周辺機器のための仕様です。YubiKey は、OTP モードと FIDO モードで使用されたときは USB (HID) キーボードのように働きます。しかし、PIV アプリケーションを使用する時や OpenPGP デバイスとして使用する時は CCID プロトコルに切り替わります。&lt;br /&gt;
&lt;br /&gt;
CCID モードは 2015 年11以降に出荷された YubiKey のすべてでデフォルトで有効になっているはずです[https://www.yubico.com/support/knowledge-base/categories/articles/use-yubikey-yubikey-windows-hello-app/]。少なくとも CCID モードは有効化してください。[[#有効になっているモードを取得]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PIV ===&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO 以降から、YubiKey はチップ上に PIV (Personal Identity Verification) アプリケーションが含まれています。PIV は、RSA や ECC(楕円曲線暗号) を使用するトークンが個人電子証明書にどのように使用されるかを定めた米国政府規格(FIPS 201)です。YubiKey NEO は RSA 暗号のみをサポートしますが、その後のモデル(YubiKey 4 と 5)は RSA と ECC の両方をサポートします。PIV トークンの特徴は、秘密鍵を保護しオンチップで動作するように構築されているという点です。秘密鍵は、トークン上にインストールされた後は決してトークン外に出ることはありません。オプションで、オンチップの乱数生成器を使って秘密鍵をオンチップで生成することもできます。秘密鍵がオンチップで生成された場合、秘密鍵はチップの外部で処理されることはなく、トークンから秘密鍵を復元する方法もありません。PIV メカニズムを使用する際は、YubiKey は CCID デバイスとして機能します。&lt;br /&gt;
&lt;br /&gt;
=== OpenPGP スマートカード ===&lt;br /&gt;
&lt;br /&gt;
YubiKey は標準の GPG スマートカードとしてとして振る舞うことができます; セットアップと使用法に関する説明は [[GnuPG#スマートカード]] セクションを見てください。Yubico は https://developers.yubico.com/PGP/ でドキュメントも提供しています。&lt;br /&gt;
&lt;br /&gt;
他の機能(U2F と OTP)を使用したくない場合、ボタンはキーを挿入/除去するように設定でき、自動除去のタイムアウトも設定できます。詳細は [[#USB 接続モード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザ PIN は {{ic|123456}} で、デフォルトの admin PIN は {{ic|12345678}} です。デフォルトの PUK も {{ic|12345678}} です。覚えておきましょう。&lt;br /&gt;
&lt;br /&gt;
== 使用例 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、様々な認証の目的での YubiKey の使用法について説明しています。しかし、以下は使用法について完全に網羅されたリストではありません。&lt;br /&gt;
&lt;br /&gt;
=== LUKS による完全なディスク暗号化 ===&lt;br /&gt;
&lt;br /&gt;
複数の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;チャレンジレスポンス認証:&#039;&#039;&#039; とあるチャレンジに対する[[#チャレンジレスポンス認証|レスポンス]]が LUKS 鍵として使用されます。チャレンジは、真の二要素認証においてはパスワードとして機能し、一要素認証においてはチャレンジは平文で保存することができます。&lt;br /&gt;
* &#039;&#039;&#039;GnuPG:&#039;&#039;&#039; YubiKey の [[#CCID スマートカード|PGP スマートカード]]の機能を使用します。長いパスフレーズ無しで強力な二要素認証を提供します。&lt;br /&gt;
* &#039;&#039;&#039;FIDO HMAC Secret:&#039;&#039;&#039; あなたの YubiKey が [[U2F]] をサポートしているのであれば、共通鍵を返すように設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスクの暗号化の強度は、使用している鍵のうち最も弱いものの強さと同じです。上記のツールの内一つを設定したら、初期のパスフレーズを削除するか、より長いものに置き換えることを検討してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 共通の前提条件 ====&lt;br /&gt;
&lt;br /&gt;
* [[dm-crypt/システム全体の暗号化|LUKS により暗号化された]]起動可能なシステム。少なくとも1つの空きキースロットがあり、{{ic|encrypt}} [[mkinitcpio]] フックを使用していること。&lt;br /&gt;
** {{AUR|mkinitcpio-ykfde}} を例外として、{{ic|sd-encrypt}} はこれらのツールの全てでサポートされていません。&lt;br /&gt;
* LUKS ヘッダーのバックアップ(任意ですが、推奨)&lt;br /&gt;
&lt;br /&gt;
==== チャレンジレスポンス認証 ====&lt;br /&gt;
&lt;br /&gt;
完全な手順については {{Pkg|yubikey-full-disk-encryption}} の [https://github.com/agherzan/yubikey-full-disk-encryption#usage 公式ドキュメント] を見てください。大まかには:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-full-disk-encryption}} をインストール。&lt;br /&gt;
# {{ic|/etc/ykfde.conf}} を設定。&lt;br /&gt;
# 対象のディスクを登録: {{ic|# ykfde-enroll -d /dev/&#039;&#039;DISK&#039;&#039; -s &#039;&#039;LUKS_SLOT&#039;&#039;}}&lt;br /&gt;
# {{ic|ykfde}} [[mkinitcpio#HOOKS|mkinitcpio フック]] を {{ic|encrypt}} フックの前に追加。&lt;br /&gt;
# [[Initramfs の再生成]]&lt;br /&gt;
&lt;br /&gt;
:{{Note|Plymouth ユーザーは、{{ic|plymouth-encrypt}} フックを {{ic|ykfde}} フックに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
いくつかの利用可能なバリエーションがあります:&lt;br /&gt;
&lt;br /&gt;
* 2FA: デフォルトの挙動。対象デバイスの登録時、および起動時にパスワードとしてチャレンジを与えなければなりません。&lt;br /&gt;
* 1FA: {{ic|ykfde.conf}} に {{ic|YKFDE_CHALLENGE}} を設定してください。これは平文で保存されることに注意してください。このファイルに対する非ルートユーザの読み込みアクセスを禁止することを検討してください。&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-nfc-support-in-ykfde-initramfs-hook-experimental NFC サポート] (実験的)&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-ykfde-suspend-service-experimental サスペンドと復帰のサポート] (実験的) サスペンド時に、暗号化されたボリュームが自動的にロックされます。復帰時に自動でアンロックします。&lt;br /&gt;
&lt;br /&gt;
設定の変更を行った時は、変更を反映させるために initramfs の再生成を行わなければなりません。&lt;br /&gt;
&lt;br /&gt;
==== systemd ベースの initramfs ====&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックのユーザは {{AUR|mkinitcpio-ykfde}} か {{AUR|mkinitcpio-ykfde-git}} をインストールし、[https://github.com/eworm-de/mkinitcpio-ykfde/blob/master/README-mkinitcpio.md プロジェクトのドキュメント]にある手順に従ってください。手順は、大まかに言えば {{Pkg|yubikey-full-disk-encryption}} に似ています。&lt;br /&gt;
&lt;br /&gt;
==== GnuPG 暗号化キーファイル ====&lt;br /&gt;
&lt;br /&gt;
これを行うためのツールの一つは [https://github.com/fuhry/initramfs-scencrypt initramfs-scencrypt] です。完全な手順についてはドキュメントを見てください。2022年10月以降、このパッケージは、GitHub で PKGBUILD が提供されていますが、AUR に存在せず、徹底的にテストもされていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/特記事項#GPG や OpenSSL で暗号化されたキーファイルを使う|Dm-crypt のページ]]ではいくつかの代替策が提示されています。しかし、それらの殆どがフォーラムの古い投稿へのリンクです。&lt;br /&gt;
&lt;br /&gt;
==== FIDO2 プロトコルの HMAC secret extension ====&lt;br /&gt;
&lt;br /&gt;
YubiKey を完全ディスク暗号化に使うもう一つの方法は、[https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#sctn-hmac-secret-extension HMAC Secret Extension] を使用して、YubiKey から LUKS のパスワードを取得することです。これはパスフレーズによって保護することができます。この機能には、少なくとも[https://support.yubico.com/hc/en-us/articles/360016649319-YubiKey-5-2-3-Enhancements-to-FIDO-2-Support ファームウェア 5.2.3+ のYubiKey 5] が必要です。&lt;br /&gt;
パスフレーズによる保護の方法では、{{AUR|khefin}} をインストールし、[https://github.com/mjec/khefin/wiki/Arch-Linux-LUKS-configuration プロジェクトのドキュメント]にある手順に従ってください。&lt;br /&gt;
systemd 248 以降での(任意で PIN による保護が施された)1要素による方法では、FIDO2 キーを LUKS2 キースロットとして使用できます。手順は[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html 作者のブログ投稿]で見られます。&lt;br /&gt;
&lt;br /&gt;
=== KeePass ===&lt;br /&gt;
&lt;br /&gt;
[[KeePass]] は YubiKey をサポートするように設定できます。手順は [[KeePass#Yubikey|YubiKey セクション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== SSH 鍵 ===&lt;br /&gt;
&lt;br /&gt;
==== CCID ====&lt;br /&gt;
&lt;br /&gt;
あなたの YubiKey が CCID スマートカードをサポートしているのであれば、GPG 鍵や PIV 鍵のどちらかをベースとしてハードウェアによる [[SSH 鍵]] として使用することができます。Yubico は品質の良いドキュメントを提供しています:&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html PGP と PIV の両方の可能性から見た概要]、それらの利点と欠点を挙げています。&lt;br /&gt;
* [https://developers.yubico.com/PGP/SSH_authentication/index.html PGP 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html ユーザ証明書による PIV 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html #PKCS11 による PIV 認証]のための手順&lt;br /&gt;
&lt;br /&gt;
:{{Note|YubiKey 上の PIV アプリケーションデフォルトの PIN コードは {{ic|123456}} です。デフォルトの管理キーと一緒に PIN コードも変更しておくべきでしょう。詳細は [https://developers.yubico.com/PIV/Guides/Device_setup.html デバイスセットアップの手順] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== U2F ====&lt;br /&gt;
&lt;br /&gt;
YubiKey の U2F の機能を使用してハードウェアによる SSH 鍵を作成することもできます。手順は [[SSH 鍵#FIDO/U2F]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== PIV ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|yubikey-agent}} は SSH 鍵 を PIV トークンとして保存します。セットアップガイドは https://github.com/FiloSottile/yubikey-agent#readme を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PAM を用いた Linux ユーザ認証 ===&lt;br /&gt;
&lt;br /&gt;
ユーザ認証のために [[PAM]] を使用するすべてのものは、ユーザ認証のプロセスの一つの要素として YubiKey を使用するように設定できます。これには sudo、su、ssh、スクリーンロッカー、ディスプレイマネージャー、そして Linux システムがユーザを認証する必要のあるほぼすべての場面を含みます。その柔軟な設定により、システム全体や特定のアプリケーション、あるいはアプリケーションのグループに対して、あなたのニーズに合う認証要件を自由に設定することができます。例えば、ローカルセッションではパスワードの代わりとして YubiKey を受け入れ、リモートのセッションでは両方を要求することができます。これがどのように機能し、どのように設定するのかを理解するために、Arch Wiki の記事に加えて、{{man|8|pam}} や {{man|5|pam.conf}} を読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
YubiKey がサポートするプロトコルを PAM に統合するのに利用できるモジュールが複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|pam-u2f}} - FIDO2 規格による [[#U2F]] をサポート。どの手法を使うべきかわからない場合、これが良い選択です。&lt;br /&gt;
** [[Universal 2nd Factor#Arch Linux の認証|Arch Wiki の記事]]&lt;br /&gt;
** [https://developers.yubico.com/pam-u2f/ Yubico の公式ドキュメント]、サポートされるモジュールパラメータのリストがあります。&lt;br /&gt;
** Man ページ: {{man|8|pam_u2f}}、{{man|1|pamu2fcfg}}&lt;br /&gt;
* {{Pkg|oath-toolkit}} - [[#OATH]] ワンタイムパスワードをサポート(HOTP か TOTP)。&lt;br /&gt;
** [[pam_oath]]&lt;br /&gt;
* {{Pkg|yubico-pam}} - [[#Yubico OTP]] と チャレンジレスポンス認証 OTP をサポート。Yubico OTP モードでは認証サーバーへのネットワーク接続が必要であることに注意してください。チャレンジレスポンス認証では必要ありません。&lt;br /&gt;
** [https://developers.yubico.com/yubico-pam/ Yubico の公式ドキュメント]&lt;br /&gt;
** {{man|8|pam_yubico}} - チャレンジレスポンス認証モードを設定するのに使用される {{ic|mode}} パラメータに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|PAM の設定ファイルを変更する際には厳重な注意が必要です。間違うと、システムが完全に安全ではなくなったり、安全すぎて認証できなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
PAM の設定はこの記事の範囲を超えますが、簡単な概要としては:&lt;br /&gt;
&lt;br /&gt;
* 認証されたキーを含むファイルをホームディレクトリ内か一元的に作成する。&lt;br /&gt;
* 適切な PAM 設定ファイルの適切な場所に、以下のフォーマットに従う行を追加する:&lt;br /&gt;
    auth [required|sufficient] [module_name].so [module arguments]&lt;br /&gt;
* 多要素認証には {{ic|auth required}}、単一要素認証には {{ic|auth sufficient}}。&lt;br /&gt;
* {{ic|module_name}} - 例: {{ic|pam_u2f.so}}。インストールされているモジュールのリストを見てください: {{ic|ls /usr/lib/security }}&lt;br /&gt;
* モジュールの設定引数は、キーファイルの場所や、認証するためにどの手法をモジュールが使用すべきかなどです。&lt;br /&gt;
&lt;br /&gt;
==== SSH における注意事項 ====&lt;br /&gt;
&lt;br /&gt;
* Yubico は[https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html 追加のガイダンス]を公開しています。これは Ubuntu の古いバージョン向けですが、アップデートされている Arch システムにも適用できます。&lt;br /&gt;
* 遠隔地にあるサーバを YubiKey を使用するように設定する場合、追加で少なくとも一つの緊急用 SSH セッションを開いておくべきです。こうすれば、設定ミスにより締め出されないで済みます。&lt;br /&gt;
* {{ic|/etc/ssh/sshd_config}} に以下の設定が含まれていることを確認してください。{{Pkg|openssh}} に同梱されている {{ic|sshd_config}} はデフォルトでこれらが正しく設定されています。&lt;br /&gt;
    ChallengeResponseAuthentication no&lt;br /&gt;
    UsePAM yes&lt;br /&gt;
&lt;br /&gt;
=== ブラウザ/web 統合 ===&lt;br /&gt;
&lt;br /&gt;
多くのウェブサービスが FIDO ハードウェアトークンをサポートし始めています。詳細は [[U2F]] や [[WebAuthn]] のページを見てください。しかし、通常、するべきことといえば {{Pkg|libfido2}} をインストールして [https://demo.yubico.com/webauthn-technical/registration 試してみる]ことくらいです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey デバイスの挿入/除去時にアクションを実行する ===&lt;br /&gt;
&lt;br /&gt;
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成し、以下の内容を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;, ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, RUN+=&amp;quot;&#039;&#039;/usr/local/bin/script args&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを &amp;quot;remove&amp;quot; ではなく &amp;quot;add&amp;quot; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 挿入時に Yubico Authenticator を開始する ===&lt;br /&gt;
&lt;br /&gt;
Authenticator は長時間実行される GUI プロセスです。Udev ルール内で直接実行すると、プロセスが udev の処理をブロックしてしまいます。フォークすると、イベント処理の終了後に udev は無条件で (フォークによって生成された) プロセスをキルしてしまいます。なので、authenticator を udev ルールから開始することはできません。しかし、systemd.device を使うことができます。&lt;br /&gt;
&lt;br /&gt;
上記と同じように、{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成して、以下の内容を書き込んでください:&lt;br /&gt;
&lt;br /&gt;
 ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, SYMLINK+=&amp;quot;yubikey&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして、新しい systemd [[ユーザーユニット]]を[[作成]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/yubioath-desktop.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Autostart Yubico Authenticator&lt;br /&gt;
# Uncomment if you want to stop the authenticator when unplugged.&lt;br /&gt;
#StopPropagatedFrom=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/yubioath-desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、このユニットを[[有効化]]してください。&#039;&#039;systemctl&#039;&#039; が、このユニットが存在しない {{ic|dev-yubikey.device}} ユニットの依存関係として追加されたことを警告してきますが、問題ありません。このユニットは、YubiKey が挿入されると開始されます。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス/アップグレード ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey NEO 用に OATH アプレットをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のステップは、ファームウェアバージョン &amp;lt;= 3.1.2 の NEO でのみ必要です。現在の世代の NEO (U2F 搭載) は OpenPGP アプレットがすでにインストールされています。}}&lt;br /&gt;
&lt;br /&gt;
==== NEO を CCID デバイスとして設定する ====&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-personalization-gui}} ({{AUR|yubikey-personalization-gui-git}}) を[[インストール]]。&lt;br /&gt;
# udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。&lt;br /&gt;
# {{ic|ykpersonalize -m82}} を実行し、{{ic|y}} を入力、エンターを押す。&lt;br /&gt;
&lt;br /&gt;
==== アプレットをインストールする ====&lt;br /&gt;
&lt;br /&gt;
# {{AUR|gpshell}}、{{AUR|gppcscconnectionplugin}}、{{AUR|globalplatform}}、{{Pkg|pcsclite}} を[[インストール]]。&lt;br /&gt;
# {{ic|pcscd.service}} を[[起動]]。&lt;br /&gt;
# 最も最近の CAP ファイルを [https://developers.yubico.com/ykneo-oath/Releases/ ykneo-oath] サイトからダウンロード。&lt;br /&gt;
# {{ic|gpinstall.txt}} を [https://github.com/Yubico/ykneo-oath/blob/master/gpinstall.txt GitHub] からダウンロード。&lt;br /&gt;
# gpinstall.txt を編集して {{ic|install -file}} から始まる行を CAP ファイルが置かれているパスに修正。&lt;br /&gt;
# ターミナルを開き、{{ic|gpshell &#039;&#039;path/to/gpinstall.txt&#039;&#039;}} を実行。&lt;br /&gt;
# 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;Command --&amp;gt; 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100&lt;br /&gt;
Wrapped command --&amp;gt; 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77&lt;br /&gt;
27D0EDA00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
Command --&amp;gt; 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000&lt;br /&gt;
Wrapped command --&amp;gt; 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
card_disconnect&lt;br /&gt;
release_context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# NEO を抜き、Yubico Authenticator アプリで試す。&lt;br /&gt;
&lt;br /&gt;
==== (任意)Yubico Authenticator デスクトップクライアントをインストールする ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|yubioath-desktop}} をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcscd.service}} が実行中の間に、{{ic|yubioath-desktop}} を実行して、プロンプトが表示されたら YubiKey を挿入してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が HID デバイスとして機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[https://github.com/systemd/systemd/commit/d45ee2f31a8358db0accde2e7c81777cedadc3c2 バージョン 244以降の systemd は]この機能に対するネイティブサポートを追加したので、以下のステップはもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
[https://michaelheap.com/yubikey-on-arch/ この記事]で説明されているように、udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-security-key.rules|2=&lt;br /&gt;
KERNEL==&amp;quot;hidraw*&amp;quot;, SUBSYSTEM==&amp;quot;hidraw&amp;quot;, MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;users&amp;quot;, ATTRS{idVendor}==&amp;quot;2581&amp;quot;, ATTRS{idProduct}==&amp;quot;f1d0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|udevadm trigger}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== ykman が YubiKey に接続できない ===&lt;br /&gt;
&lt;br /&gt;
マネージャが YubiKey への接続に失敗する場合、{{ic|pcscd.service}} か {{ic|pcscd.socket}} が起動していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions. ===&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|scdaemon}} がすでにデバイスの排他的な制御を取得している場合に {{ic|ykman}} がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[https://github.com/Yubico/yubikey-manager/issues/35]&lt;br /&gt;
&lt;br /&gt;
これを修正するには、{{ic|~/.gnupg/scdaemon.conf}} 内であなたのデバイスに対して {{ic|reader-port}} オプションを正しい値で設定することができます。[https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG]&lt;br /&gt;
&lt;br /&gt;
{{Note|これにより、ykman を通して YubiKey にアクセスするたびに gpgagent が YubiKey をアンロックするプロンプトを表示するようになります。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO と YubiKey 4 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubikey&lt;br /&gt;
&lt;br /&gt;
YubiKey 5 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubi&lt;br /&gt;
&lt;br /&gt;
=== YubiKey がゲスト VM 内でバインドできない ===&lt;br /&gt;
&lt;br /&gt;
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの [[dmesg]] からバスとポートの情報を手に入れる必要があります:&lt;br /&gt;
&lt;br /&gt;
 # dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E &#039;s/^\&amp;lt;nowiki&amp;gt;[[^]]&amp;lt;/nowiki&amp;gt;+\] usb (&amp;lt;nowiki&amp;gt;[^:]&amp;lt;/nowiki&amp;gt;*):.*/\1/&#039;&lt;br /&gt;
&lt;br /&gt;
出力の USB id は {{ic|X-Y.Z}} または {{ic|X-Y}} の形式であるはずです。そして、ホスト上で、{{ic|find}} を使って {{ic|/sys/bus/usb/drivers}} を検索し、YubiKey がバインドしているドライバを探します (例: {{ic|usbhid}} または {{ic|usbfs}})。&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/bus/usb/drivers -name &amp;quot;*X-Y.Z*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デバイスのバインドを解除するには、先のコマンドの出力を使ってください (つまり、{{ic|/sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/X-Y.Z:1.0}}):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;X-Y.Z:1.0&#039; &amp;gt; /sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/unbind&lt;br /&gt;
&lt;br /&gt;
=== Error: [key] could not be locally signed or gpg: No default secret key: No public key ===&lt;br /&gt;
&lt;br /&gt;
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、[[pacman-key|Pacman]] が {{ic|pacman-key --populate}} で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が Yubico Authenticator で消えたり現れたりする ===&lt;br /&gt;
&lt;br /&gt;
これは、CCID ドライバがインストールされていない際に起こります。{{Pkg|ccid}} パッケージを[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey core error: timeout ===&lt;br /&gt;
&lt;br /&gt;
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|YubiKey|2024-08-26|814790}}&lt;/div&gt;</summary>
		<author><name>田中</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40657</id>
		<title>YubiKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40657"/>
		<updated>2025-08-02T11:22:41Z</updated>

		<summary type="html">&lt;p&gt;田中: /* インストール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OpenPGP]]&lt;br /&gt;
[[Category:スマートカード]]&lt;br /&gt;
[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:YubiKey]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related|OATH}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|KeePass}}&lt;br /&gt;
{{Related|OpenPGP-card-tools}}&lt;br /&gt;
{{Related|スマートカード}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.yubico.com YubiKey] は小さな [[Wikipedia:ja:セキュリティトークン|USB セキュリティトークン]]です。モデルにも依りますが、以下のようなことができます:&lt;br /&gt;
&lt;br /&gt;
* スマートカードのように振る舞う([[Wikipedia:CCID (protocol)|CCID protocol]] を使用) - [https://developers.yubico.com/PGP/ PGP] と [https://developers.yubico.com/PIV/ PIV] 秘密鍵の両方を保存できます。&lt;br /&gt;
* [[Universal 2nd Factor]] (U2F) リクエストを処理する。&lt;br /&gt;
* 約 30 個の[[オープン認証イニシアチブ]] (OATH) 資格情報を保存・クエリする。&lt;br /&gt;
* Yubico OTP モードか HMAC-SHA1 モードで[[Wikipedia:Challenge–response authentication|チャレンジレスポンス認証]]を処理する。&lt;br /&gt;
* [[Wikipedia:ja:ワンタイムパスワード|ワンタイムパスワード]] (OTP) を生成する - [https://developers.yubico.com/OTP/ Yubico&#039;s AES based standard]。&lt;br /&gt;
* 63 文字までの静的パスワードを&amp;quot;入力&amp;quot;する。&lt;br /&gt;
&lt;br /&gt;
YubiKeyに関連するアプリケーションやライブラリはオープンソースですが、YubiKeyそのもののファームウェアは[https://www.yubico.com/blog/secure-hardware-vs-open-source/ オープンソースではありません]。代替としては [[Solo]]、[[Tillitis TKey|TKey]]、[[Nitrokey]] があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 管理ツール ===&lt;br /&gt;
* {{App|YubiKey Manager|USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール({{ic|ykman}})。|https://developers.yubico.com/yubikey-manager/|{{Pkg|yubikey-manager}}}}&lt;br /&gt;
::{{Note|インストール後、{{ic|pcscd.service}} を[[有効化]]してください。}}&lt;br /&gt;
::{{Warning|YubiKey ManagerのGUIフロントエンドである{{AUR|yubikey-manager-qt}}は開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
::{{Warning|YubiKey Managerに代わるもうひとつの選択肢であった、{{Pkg|yubikey-personalization}}および{{Pkg|yubikey-personalization-gui}}も開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
&lt;br /&gt;
=== ライブラリ ===&lt;br /&gt;
* {{App|Yubico PAM-U2F|[[U2F]] により [[PAM]] ユーザ認証。|https://developers.yubico.com/pam-u2f/|{{Pkg|pam-u2f}}}}&lt;br /&gt;
::{{Note|このプログラムは、{{Pkg|yubico-pam}}の[https://www.yubico.com/support/terms-conditions/yubico-end-of-life-policy/eol-products/ 後継として推奨されています]。}}&lt;br /&gt;
* {{App|Yubico Authenticator 6.0+ for Desktop|Yubico Authenticator 6.0+ (バージョン 6.0 及びそれ以降) は、YubiKey の第二要素クレデンシャルを管理するためのアプリケーションです。バージョン 6.0 から、コードベースが Flutter フレームワークを使って完全に書き換えられました。|https://developers.yubico.com/yubioath-flutter/|{{AUR|yubico-authenticator}}, {{AUR|yubico-authenticator-bin}}}}&lt;br /&gt;
* {{App|libfido2|クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。|https://developers.yubico.com/libfido2/|{{Pkg|libfido2}}}}&lt;br /&gt;
* {{App|YubiKey Full Disk Encryption|チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。|https://github.com/agherzan/yubikey-full-disk-encryption|{{Pkg|yubikey-full-disk-encryption}}}}&lt;br /&gt;
&lt;br /&gt;
== 入力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。&lt;br /&gt;
&lt;br /&gt;
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:&lt;br /&gt;
&lt;br /&gt;
* 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。&lt;br /&gt;
* 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。&lt;br /&gt;
* スマートカードを挿入/除去する。&lt;br /&gt;
&lt;br /&gt;
== 出力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は以下の入力を出力に変換します:&lt;br /&gt;
&lt;br /&gt;
* キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)&lt;br /&gt;
* 組み込みの LED は:&lt;br /&gt;
** 挿入した際に一度光ります。トラブルシューティングに便利です。&lt;br /&gt;
** API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。&lt;br /&gt;
* USB を通した API 応答。これは以下のように使用されます:&lt;br /&gt;
** チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)&lt;br /&gt;
** U2F チャレンジレスポンス認証&lt;br /&gt;
** CCID スマートカード関連のリクエスト&lt;br /&gt;
&lt;br /&gt;
== USB 接続モード ==&lt;br /&gt;
&lt;br /&gt;
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。&lt;br /&gt;
&lt;br /&gt;
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! プロトコル !! インターフェイス&lt;br /&gt;
|-&lt;br /&gt;
|OTP || Keyboard HID&lt;br /&gt;
|-&lt;br /&gt;
|FIDO || Other HID&lt;br /&gt;
|-&lt;br /&gt;
|PIV || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OpenPGP || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OATH || CCID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は &amp;quot;modes&amp;quot; という用語を使用します、OTP、FIDO、CCID と名付けられています。&lt;br /&gt;
&lt;br /&gt;
{{Note|ykman はリリース 0.6.1 (2018-04-16)で &amp;quot;U2F&amp;quot; を &amp;quot;FIDO&amp;quot; と名前を変更しました。https://developers.yubico.com/yubikey-manager/Release_Notes.html}}&lt;br /&gt;
&lt;br /&gt;
=== 有効になっているモードを取得 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 5 以前の YubiKey では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman config mode|&lt;br /&gt;
Current connection mode is: OTP+FIDO+CCID&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ykman mode}} というコマンドは非推奨となっており、今後削除されるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey バージョン 5 では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman info|&lt;br /&gt;
Device type: YubiKey 5 NFC&lt;br /&gt;
Serial number: XXXXXXXXX&lt;br /&gt;
Firmware version: 5.4.3&lt;br /&gt;
Form factor: Keychain (USB-A)&lt;br /&gt;
Enabled USB interfaces: OTP, FIDO, CCID&lt;br /&gt;
NFC transport is enabled.&lt;br /&gt;
&lt;br /&gt;
Applications    USB     NFC&lt;br /&gt;
FIDO2           Enabled Enabled&lt;br /&gt;
OTP             Enabled Enabled&lt;br /&gt;
FIDO U2F        Enabled Enabled&lt;br /&gt;
OATH            Enabled Enabled&lt;br /&gt;
YubiHSM Auth    Enabled Enabled&lt;br /&gt;
OpenPGP         Enabled Enabled&lt;br /&gt;
PIV             Enabled Enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== モードをセット ===&lt;br /&gt;
&lt;br /&gt;
すべてのモードが出荷時から有効化されています。変更するには:&lt;br /&gt;
&lt;br /&gt;
 $ ykman mode &#039;&#039;[OPTIONS]&#039;&#039; &#039;&#039;MODE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} には文字列を使用できます。例えば、{{ic|OTP+FIDO+CCID}}。短い形式もあります: {{ic|o+f+c}}。&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。&lt;br /&gt;
&lt;br /&gt;
以下にモード番号の表があります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||OTP device only.&lt;br /&gt;
|-&lt;br /&gt;
|1||CCID device only.&lt;br /&gt;
|-&lt;br /&gt;
|2||OTP/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|3||U2F device only.&lt;br /&gt;
|-&lt;br /&gt;
|4||OTP/U2F composite device.&lt;br /&gt;
|-&lt;br /&gt;
|5||U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|6||OTP/U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|81||CCID device only, with touch-eject.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の例では 86 という番号を使用しています。これは[https://github.com/Yubico/yubikey-manager/issues/20#issuecomment-326496204 無効な番号]です。80 は無視され、6 のように振る舞います。}}&lt;br /&gt;
&lt;br /&gt;
オプション:&lt;br /&gt;
* {{ic|--touch-eject}} - ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。&lt;br /&gt;
* {{ic|--autoeject-timeout &#039;&#039;SECONDS&#039;&#039;}} - 一定時間立つとスマートカードを自動的に除去します。{{ic|--touch-eject}} と同じような制限があります。&lt;br /&gt;
* {{ic|--chalresp-timeout &#039;&#039;SECONDS&#039;&#039;}} - チャレンジレスポンス認証のタイムアウトを設定します。&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman mode --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ワンタイムパスワード ==&lt;br /&gt;
&lt;br /&gt;
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。&lt;br /&gt;
&lt;br /&gt;
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち&#039;&#039;&#039;1つ&#039;&#039;&#039;を設定できます:&lt;br /&gt;
&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
* OATH-HOTP&lt;br /&gt;
* OATH-TOTP&lt;br /&gt;
* チャレンジレスポンス認証&lt;br /&gt;
* 静的パスワード&lt;br /&gt;
&lt;br /&gt;
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。{{ic|ykman otp swap}} により、スロット1とスロット2を入れ替えることはできます。&lt;br /&gt;
&lt;br /&gt;
=== 工場出荷時の設定 ===&lt;br /&gt;
&lt;br /&gt;
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|スロット1にある工場出荷時のキーを上書きしてしまうと、同じ信頼レベルの新しいキーを作成することはできなくなります。工場で生成された Yubico OTP 認証情報は {{ic|CC}} という接頭辞で始まります。一方、ユーザが生成した認証情報は {{ic|VV}} で始まります。セキュリティおよび機能的には基本的な違いはありませんが、一部のサービスは {{ic|CC}} の認証情報のみを信頼します。さらなる情報はこの[https://forum.yubico.com/viewtopic12ca.html?f%3D16&amp;amp;t%3D1960 フォーラムスレッド]で見られます。}}&lt;br /&gt;
&lt;br /&gt;
=== Yubico OTP ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.yubico.com/OTP/ Yubico OTP] は[[Wikipedia:ja:共通鍵暗号|共通鍵暗号]]に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの [[Wikipedia:ja:Advanced_Encryption_Standard|AES]] 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。&lt;br /&gt;
&lt;br /&gt;
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。&lt;br /&gt;
&lt;br /&gt;
==== YubiCloud と検証サーバー ====&lt;br /&gt;
&lt;br /&gt;
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば) {{Pkg|yubico-pam}} によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーの[https://developers.yubico.com/Software_Projects/Yubico_OTP/YubiCloud_Validation_Servers/ オープンソースの実装]も提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Yubico の検証サーバーを認証する場合:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HMAC&#039;&#039;&#039; を使用: https://upgrade.yubico.com/getapikey/ から HMAC 鍵と ID を取得してください。&lt;br /&gt;
* &#039;&#039;&#039;HTTPS&#039;&#039;&#039; を使用: 検証サーバーの証明書は GoDaddy によって署名されています。Arch ではデフォルトで GoDaddy を信頼しています ({{Pkg|ca-certificates}} をインストールしていれば)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 設定と使用 ====&lt;br /&gt;
&lt;br /&gt;
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp yubiotp --generate-key --upload 2&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman otp yubiotp --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
==== セキュリティリスク ====&lt;br /&gt;
&lt;br /&gt;
===== AES 鍵の漏洩 =====&lt;br /&gt;
&lt;br /&gt;
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。&lt;br /&gt;
&lt;br /&gt;
===== 検証リクエスト/レスポンスの盗聴 =====&lt;br /&gt;
&lt;br /&gt;
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== チャレンジレスポンス認証 ===&lt;br /&gt;
&lt;br /&gt;
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。&lt;br /&gt;
&lt;br /&gt;
これは以下のように利用できます:&lt;br /&gt;
&lt;br /&gt;
* 真の二要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。&lt;br /&gt;
* 「準」二要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。&lt;br /&gt;
&lt;br /&gt;
2つのチャレンジレスポンス認証アルゴリズムがあります:&lt;br /&gt;
&lt;br /&gt;
* HMAC-SHA1&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|yubikey-personalization-gui}} を使って GUI で、あるいは以下の指示で設定できます。&lt;br /&gt;
&lt;br /&gt;
==== HMAC-SHA1 アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --generate 2&lt;br /&gt;
&lt;br /&gt;
キーを与えるための {{ic|--generate}} フラグは省略できます ({{ic|ykman otp chalresp --help}} を参照)。キーを与える主な利点は、バックアップ用の2つ目のデバイスをセットアップする際に使用できることです。例えば、{{ic|openssl rand -hex 20}} は適切な鍵を生成します。&lt;br /&gt;
&lt;br /&gt;
==== Yubico OTP アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、{{ic|ykpersonalize}} を使用できます。スロット2にランダムな鍵を生成してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykpersonalize -2 -ochal-resp -ochal-yubico&lt;br /&gt;
&lt;br /&gt;
さらなる情報は {{man|1|ykpersonalize}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== チャレンジを送信 ====&lt;br /&gt;
&lt;br /&gt;
チャレンジを送信してレスポンスを受信するには、{{ic|ykchalresp -&#039;&#039;slot&#039;&#039; &#039;&#039;challenge&#039;&#039;}} コマンドを使用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykchalresp -2 &#039;&#039;archie&#039;&#039;|&lt;br /&gt;
12a19763be77d75af46fb76f0b737c117fa47205&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このコマンドは、プログラム済みのスロット2のユニークな 40 バイトの SHA1 ハッシュ値を返します。チャレンジが異なると、異なるユニークなレスポンスが返されます。&lt;br /&gt;
&lt;br /&gt;
=== 静的パスワード ===&lt;br /&gt;
&lt;br /&gt;
静的パスワードも生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static --generate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、パスワードを与えることも:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static &#039;&#039;slot&#039;&#039; &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は {{ic|ykman otp static --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ほとんどの YubiKey では、静的パスワードを保存するためのスロットの数 (2個) は限られています。チャレンジレスポンス認証のスロットは、無制限のチャレンジに対して静的ハッシュ値のレスポンスを提供します。これらは数字と小文字アルファベットのみですが、レスポンスの長さによってかなりのエントロピーが生まれます。}}&lt;br /&gt;
&lt;br /&gt;
=== エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット({{ic|cbdefghijklnrtuv}})、数値 {{ic|0-9}}、{{ic|!}} に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。&lt;br /&gt;
&lt;br /&gt;
Yubico はこの問題に関する[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf 白書]を提供しています。&lt;br /&gt;
&lt;br /&gt;
== OATH ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は2つの [[OATH]] 実装を提供します:&lt;br /&gt;
; OATH API: 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)&lt;br /&gt;
; OTP slot: 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)&lt;br /&gt;
&lt;br /&gt;
=== OATH API ===&lt;br /&gt;
&lt;br /&gt;
GUI がお好みならば、{{Pkg|yubioath-desktop}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は、{{ic|ykman oath uri}} を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:&lt;br /&gt;
&lt;br /&gt;
 $ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri&lt;br /&gt;
&lt;br /&gt;
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --touch &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP 鍵をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --oath-type HOTP &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
認証情報を一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath list&lt;br /&gt;
&lt;br /&gt;
コードを生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath code &#039;&#039;query&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なサブコマンドをすべて見るには、{{ic|ykman oath --help}} を実行してください。それぞれのサブコマンドの情報を見るには、{{ic|ykman oath &#039;&#039;subcommand&#039;&#039; --help}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== OTP スロット実装 ===&lt;br /&gt;
&lt;br /&gt;
スロット2で HOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp hotp 2 &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --totp &#039;&#039;slot&#039;&#039; &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate --totp &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman otp --help}} と https://developers.yubico.com/OATH/ も参照してください。&lt;br /&gt;
&lt;br /&gt;
== U2F ==&lt;br /&gt;
&lt;br /&gt;
YubiKey を用いた [[Universal 2nd Factor]] (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは &#039;FIDO&#039; とも呼ばれていることに注意してください。{{ic|ykman}} ユーティリティを通じていくつかの限定された管理オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* PIN を設定:  {{ic|ykman fido access change-pin}}&lt;br /&gt;
* 個別の資格情報を削除: {{ic|ykman fido credentials delete &#039;&#039;QUERY&#039;&#039;}}&lt;br /&gt;
* すべての資格情報と PIN をリセット: {{ic|ykman fido reset}}&lt;br /&gt;
&lt;br /&gt;
U2F を認証に使用するには、[[U2F]] の指示を見てください。&lt;br /&gt;
&lt;br /&gt;
[[WebAuthn]] も参照。&lt;br /&gt;
&lt;br /&gt;
== CCID スマートカード ==&lt;br /&gt;
&lt;br /&gt;
CCID (Chip Card Interface Device) は、スマートカードリーダーとして振る舞う USB デバイスによって使用されたり、YubiKey のように USB を通して直接接続するセキュリティトークンで使用されたりする USB 標準デバイスクラスです。HID (Human Interface Device) と CCID は両方とも USB デバイスクラスです。つまり、これらは USB 仕様の同じカテゴリに属すということです。HID は、キーボードなどのようなコンピュータ周辺機器のための仕様です。YubiKey は、OTP モードと FIDO モードで使用されたときは USB (HID) キーボードのように働きます。しかし、PIV アプリケーションを使用する時や OpenPGP デバイスとして使用する時は CCID プロトコルに切り替わります。&lt;br /&gt;
&lt;br /&gt;
CCID モードは 2015 年11以降に出荷された YubiKey のすべてでデフォルトで有効になっているはずです[https://www.yubico.com/support/knowledge-base/categories/articles/use-yubikey-yubikey-windows-hello-app/]。少なくとも CCID モードは有効化してください。[[#有効になっているモードを取得]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PIV ===&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO 以降から、YubiKey はチップ上に PIV (Personal Identity Verification) アプリケーションが含まれています。PIV は、RSA や ECC(楕円曲線暗号) を使用するトークンが個人電子証明書にどのように使用されるかを定めた米国政府規格(FIPS 201)です。YubiKey NEO は RSA 暗号のみをサポートしますが、その後のモデル(YubiKey 4 と 5)は RSA と ECC の両方をサポートします。PIV トークンの特徴は、秘密鍵を保護しオンチップで動作するように構築されているという点です。秘密鍵は、トークン上にインストールされた後は決してトークン外に出ることはありません。オプションで、オンチップの乱数生成器を使って秘密鍵をオンチップで生成することもできます。秘密鍵がオンチップで生成された場合、秘密鍵はチップの外部で処理されることはなく、トークンから秘密鍵を復元する方法もありません。PIV メカニズムを使用する際は、YubiKey は CCID デバイスとして機能します。&lt;br /&gt;
&lt;br /&gt;
=== OpenPGP スマートカード ===&lt;br /&gt;
&lt;br /&gt;
YubiKey は標準の GPG スマートカードとしてとして振る舞うことができます; セットアップと使用法に関する説明は [[GnuPG#スマートカード]] セクションを見てください。Yubico は https://developers.yubico.com/PGP/ でドキュメントも提供しています。&lt;br /&gt;
&lt;br /&gt;
他の機能(U2F と OTP)を使用したくない場合、ボタンはキーを挿入/除去するように設定でき、自動除去のタイムアウトも設定できます。詳細は [[#USB 接続モード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザ PIN は {{ic|123456}} で、デフォルトの admin PIN は {{ic|12345678}} です。デフォルトの PUK も {{ic|12345678}} です。覚えておきましょう。&lt;br /&gt;
&lt;br /&gt;
== 使用例 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、様々な認証の目的での YubiKey の使用法について説明しています。しかし、以下は使用法について完全に網羅されたリストではありません。&lt;br /&gt;
&lt;br /&gt;
=== LUKS による完全なディスク暗号化 ===&lt;br /&gt;
&lt;br /&gt;
複数の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;チャレンジレスポンス認証:&#039;&#039;&#039; とあるチャレンジに対する[[#チャレンジレスポンス認証|レスポンス]]が LUKS 鍵として使用されます。チャレンジは、真の二要素認証においてはパスワードとして機能し、一要素認証においてはチャレンジは平文で保存することができます。&lt;br /&gt;
* &#039;&#039;&#039;GnuPG:&#039;&#039;&#039; YubiKey の [[#CCID スマートカード|PGP スマートカード]]の機能を使用します。長いパスフレーズ無しで強力な二要素認証を提供します。&lt;br /&gt;
* &#039;&#039;&#039;FIDO HMAC Secret:&#039;&#039;&#039; あなたの YubiKey が [[U2F]] をサポートしているのであれば、共通鍵を返すように設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスクの暗号化の強度は、使用している鍵のうち最も弱いものの強さと同じです。上記のツールの内一つを設定したら、初期のパスフレーズを削除するか、より長いものに置き換えることを検討してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 共通の前提条件 ====&lt;br /&gt;
&lt;br /&gt;
* [[dm-crypt/システム全体の暗号化|LUKS により暗号化された]]起動可能なシステム。少なくとも1つの空きキースロットがあり、{{ic|encrypt}} [[mkinitcpio]] フックを使用していること。&lt;br /&gt;
** {{AUR|mkinitcpio-ykfde}} を例外として、{{ic|sd-encrypt}} はこれらのツールの全てでサポートされていません。&lt;br /&gt;
* LUKS ヘッダーのバックアップ(任意ですが、推奨)&lt;br /&gt;
&lt;br /&gt;
==== チャレンジレスポンス認証 ====&lt;br /&gt;
&lt;br /&gt;
完全な手順については {{Pkg|yubikey-full-disk-encryption}} の [https://github.com/agherzan/yubikey-full-disk-encryption#usage 公式ドキュメント] を見てください。大まかには:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-full-disk-encryption}} をインストール。&lt;br /&gt;
# {{ic|/etc/ykfde.conf}} を設定。&lt;br /&gt;
# 対象のディスクを登録: {{ic|# ykfde-enroll -d /dev/&#039;&#039;DISK&#039;&#039; -s &#039;&#039;LUKS_SLOT&#039;&#039;}}&lt;br /&gt;
# {{ic|ykfde}} [[mkinitcpio#HOOKS|mkinitcpio フック]] を {{ic|encrypt}} フックの前に追加。&lt;br /&gt;
# [[Initramfs の再生成]]&lt;br /&gt;
&lt;br /&gt;
:{{Note|Plymouth ユーザーは、{{ic|plymouth-encrypt}} フックを {{ic|ykfde}} フックに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
いくつかの利用可能なバリエーションがあります:&lt;br /&gt;
&lt;br /&gt;
* 2FA: デフォルトの挙動。対象デバイスの登録時、および起動時にパスワードとしてチャレンジを与えなければなりません。&lt;br /&gt;
* 1FA: {{ic|ykfde.conf}} に {{ic|YKFDE_CHALLENGE}} を設定してください。これは平文で保存されることに注意してください。このファイルに対する非ルートユーザの読み込みアクセスを禁止することを検討してください。&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-nfc-support-in-ykfde-initramfs-hook-experimental NFC サポート] (実験的)&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-ykfde-suspend-service-experimental サスペンドと復帰のサポート] (実験的) サスペンド時に、暗号化されたボリュームが自動的にロックされます。復帰時に自動でアンロックします。&lt;br /&gt;
&lt;br /&gt;
設定の変更を行った時は、変更を反映させるために initramfs の再生成を行わなければなりません。&lt;br /&gt;
&lt;br /&gt;
==== systemd ベースの initramfs ====&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックのユーザは {{AUR|mkinitcpio-ykfde}} か {{AUR|mkinitcpio-ykfde-git}} をインストールし、[https://github.com/eworm-de/mkinitcpio-ykfde/blob/master/README-mkinitcpio.md プロジェクトのドキュメント]にある手順に従ってください。手順は、大まかに言えば {{Pkg|yubikey-full-disk-encryption}} に似ています。&lt;br /&gt;
&lt;br /&gt;
==== GnuPG 暗号化キーファイル ====&lt;br /&gt;
&lt;br /&gt;
これを行うためのツールの一つは [https://github.com/fuhry/initramfs-scencrypt initramfs-scencrypt] です。完全な手順についてはドキュメントを見てください。2022年10月以降、このパッケージは、GitHub で PKGBUILD が提供されていますが、AUR に存在せず、徹底的にテストもされていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/特記事項#GPG や OpenSSL で暗号化されたキーファイルを使う|Dm-crypt のページ]]ではいくつかの代替策が提示されています。しかし、それらの殆どがフォーラムの古い投稿へのリンクです。&lt;br /&gt;
&lt;br /&gt;
==== FIDO2 プロトコルの HMAC secret extension ====&lt;br /&gt;
&lt;br /&gt;
YubiKey を完全ディスク暗号化に使うもう一つの方法は、[https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#sctn-hmac-secret-extension HMAC Secret Extension] を使用して、YubiKey から LUKS のパスワードを取得することです。これはパスフレーズによって保護することができます。この機能には、少なくとも[https://support.yubico.com/hc/en-us/articles/360016649319-YubiKey-5-2-3-Enhancements-to-FIDO-2-Support ファームウェア 5.2.3+ のYubiKey 5] が必要です。&lt;br /&gt;
パスフレーズによる保護の方法では、{{AUR|khefin}} をインストールし、[https://github.com/mjec/khefin/wiki/Arch-Linux-LUKS-configuration プロジェクトのドキュメント]にある手順に従ってください。&lt;br /&gt;
systemd 248 以降での(任意で PIN による保護が施された)1要素による方法では、FIDO2 キーを LUKS2 キースロットとして使用できます。手順は[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html 作者のブログ投稿]で見られます。&lt;br /&gt;
&lt;br /&gt;
=== KeePass ===&lt;br /&gt;
&lt;br /&gt;
[[KeePass]] は YubiKey をサポートするように設定できます。手順は [[KeePass#Yubikey|YubiKey セクション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== SSH 鍵 ===&lt;br /&gt;
&lt;br /&gt;
==== CCID ====&lt;br /&gt;
&lt;br /&gt;
あなたの YubiKey が CCID スマートカードをサポートしているのであれば、GPG 鍵や PIV 鍵のどちらかをベースとしてハードウェアによる [[SSH 鍵]] として使用することができます。Yubico は品質の良いドキュメントを提供しています:&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html PGP と PIV の両方の可能性から見た概要]、それらの利点と欠点を挙げています。&lt;br /&gt;
* [https://developers.yubico.com/PGP/SSH_authentication/index.html PGP 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html ユーザ証明書による PIV 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html #PKCS11 による PIV 認証]のための手順&lt;br /&gt;
&lt;br /&gt;
:{{Note|YubiKey 上の PIV アプリケーションデフォルトの PIN コードは {{ic|123456}} です。デフォルトの管理キーと一緒に PIN コードも変更しておくべきでしょう。詳細は [https://developers.yubico.com/PIV/Guides/Device_setup.html デバイスセットアップの手順] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== U2F ====&lt;br /&gt;
&lt;br /&gt;
YubiKey の U2F の機能を使用してハードウェアによる SSH 鍵を作成することもできます。手順は [[SSH 鍵#FIDO/U2F]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== PIV ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|yubikey-agent}} は SSH 鍵 を PIV トークンとして保存します。セットアップガイドは https://github.com/FiloSottile/yubikey-agent#readme を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PAM を用いた Linux ユーザ認証 ===&lt;br /&gt;
&lt;br /&gt;
ユーザ認証のために [[PAM]] を使用するすべてのものは、ユーザ認証のプロセスの一つの要素として YubiKey を使用するように設定できます。これには sudo、su、ssh、スクリーンロッカー、ディスプレイマネージャー、そして Linux システムがユーザを認証する必要のあるほぼすべての場面を含みます。その柔軟な設定により、システム全体や特定のアプリケーション、あるいはアプリケーションのグループに対して、あなたのニーズに合う認証要件を自由に設定することができます。例えば、ローカルセッションではパスワードの代わりとして YubiKey を受け入れ、リモートのセッションでは両方を要求することができます。これがどのように機能し、どのように設定するのかを理解するために、Arch Wiki の記事に加えて、{{man|8|pam}} や {{man|5|pam.conf}} を読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
YubiKey がサポートするプロトコルを PAM に統合するのに利用できるモジュールが複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|pam-u2f}} - FIDO2 規格による [[#U2F]] をサポート。どの手法を使うべきかわからない場合、これが良い選択です。&lt;br /&gt;
** [[Universal 2nd Factor#Arch Linux の認証|Arch Wiki の記事]]&lt;br /&gt;
** [https://developers.yubico.com/pam-u2f/ Yubico の公式ドキュメント]、サポートされるモジュールパラメータのリストがあります。&lt;br /&gt;
** Man ページ: {{man|8|pam_u2f}}、{{man|1|pamu2fcfg}}&lt;br /&gt;
* {{Pkg|oath-toolkit}} - [[#OATH]] ワンタイムパスワードをサポート(HOTP か TOTP)。&lt;br /&gt;
** [[pam_oath]]&lt;br /&gt;
* {{Pkg|yubico-pam}} - [[#Yubico OTP]] と チャレンジレスポンス認証 OTP をサポート。Yubico OTP モードでは認証サーバーへのネットワーク接続が必要であることに注意してください。チャレンジレスポンス認証では必要ありません。&lt;br /&gt;
** [https://developers.yubico.com/yubico-pam/ Yubico の公式ドキュメント]&lt;br /&gt;
** {{man|8|pam_yubico}} - チャレンジレスポンス認証モードを設定するのに使用される {{ic|mode}} パラメータに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|PAM の設定ファイルを変更する際には厳重な注意が必要です。間違うと、システムが完全に安全ではなくなったり、安全すぎて認証できなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
PAM の設定はこの記事の範囲を超えますが、簡単な概要としては:&lt;br /&gt;
&lt;br /&gt;
* 認証されたキーを含むファイルをホームディレクトリ内か一元的に作成する。&lt;br /&gt;
* 適切な PAM 設定ファイルの適切な場所に、以下のフォーマットに従う行を追加する:&lt;br /&gt;
    auth [required|sufficient] [module_name].so [module arguments]&lt;br /&gt;
* 多要素認証には {{ic|auth required}}、単一要素認証には {{ic|auth sufficient}}。&lt;br /&gt;
* {{ic|module_name}} - 例: {{ic|pam_u2f.so}}。インストールされているモジュールのリストを見てください: {{ic|ls /usr/lib/security }}&lt;br /&gt;
* モジュールの設定引数は、キーファイルの場所や、認証するためにどの手法をモジュールが使用すべきかなどです。&lt;br /&gt;
&lt;br /&gt;
==== SSH における注意事項 ====&lt;br /&gt;
&lt;br /&gt;
* Yubico は[https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html 追加のガイダンス]を公開しています。これは Ubuntu の古いバージョン向けですが、アップデートされている Arch システムにも適用できます。&lt;br /&gt;
* 遠隔地にあるサーバを YubiKey を使用するように設定する場合、追加で少なくとも一つの緊急用 SSH セッションを開いておくべきです。こうすれば、設定ミスにより締め出されないで済みます。&lt;br /&gt;
* {{ic|/etc/ssh/sshd_config}} に以下の設定が含まれていることを確認してください。{{Pkg|openssh}} に同梱されている {{ic|sshd_config}} はデフォルトでこれらが正しく設定されています。&lt;br /&gt;
    ChallengeResponseAuthentication no&lt;br /&gt;
    UsePAM yes&lt;br /&gt;
&lt;br /&gt;
=== ブラウザ/web 統合 ===&lt;br /&gt;
&lt;br /&gt;
多くのウェブサービスが FIDO ハードウェアトークンをサポートし始めています。詳細は [[U2F]] や [[WebAuthn]] のページを見てください。しかし、通常、するべきことといえば {{Pkg|libfido2}} をインストールして [https://demo.yubico.com/webauthn-technical/registration 試してみる]ことくらいです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey デバイスの挿入/除去時にアクションを実行する ===&lt;br /&gt;
&lt;br /&gt;
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成し、以下の内容を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;, ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, RUN+=&amp;quot;&#039;&#039;/usr/local/bin/script args&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを &amp;quot;remove&amp;quot; ではなく &amp;quot;add&amp;quot; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 挿入時に Yubico Authenticator を開始する ===&lt;br /&gt;
&lt;br /&gt;
Authenticator は長時間実行される GUI プロセスです。Udev ルール内で直接実行すると、プロセスが udev の処理をブロックしてしまいます。フォークすると、イベント処理の終了後に udev は無条件で (フォークによって生成された) プロセスをキルしてしまいます。なので、authenticator を udev ルールから開始することはできません。しかし、systemd.device を使うことができます。&lt;br /&gt;
&lt;br /&gt;
上記と同じように、{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成して、以下の内容を書き込んでください:&lt;br /&gt;
&lt;br /&gt;
 ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, SYMLINK+=&amp;quot;yubikey&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして、新しい systemd [[ユーザーユニット]]を[[作成]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/yubioath-desktop.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Autostart Yubico Authenticator&lt;br /&gt;
# Uncomment if you want to stop the authenticator when unplugged.&lt;br /&gt;
#StopPropagatedFrom=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/yubioath-desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、このユニットを[[有効化]]してください。&#039;&#039;systemctl&#039;&#039; が、このユニットが存在しない {{ic|dev-yubikey.device}} ユニットの依存関係として追加されたことを警告してきますが、問題ありません。このユニットは、YubiKey が挿入されると開始されます。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス/アップグレード ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey NEO 用に OATH アプレットをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のステップは、ファームウェアバージョン &amp;lt;= 3.1.2 の NEO でのみ必要です。現在の世代の NEO (U2F 搭載) は OpenPGP アプレットがすでにインストールされています。}}&lt;br /&gt;
&lt;br /&gt;
==== NEO を CCID デバイスとして設定する ====&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-personalization-gui}} ({{AUR|yubikey-personalization-gui-git}}) を[[インストール]]。&lt;br /&gt;
# udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。&lt;br /&gt;
# {{ic|ykpersonalize -m82}} を実行し、{{ic|y}} を入力、エンターを押す。&lt;br /&gt;
&lt;br /&gt;
==== アプレットをインストールする ====&lt;br /&gt;
&lt;br /&gt;
# {{AUR|gpshell}}、{{AUR|gppcscconnectionplugin}}、{{AUR|globalplatform}}、{{Pkg|pcsclite}} を[[インストール]]。&lt;br /&gt;
# {{ic|pcscd.service}} を[[起動]]。&lt;br /&gt;
# 最も最近の CAP ファイルを [https://developers.yubico.com/ykneo-oath/Releases/ ykneo-oath] サイトからダウンロード。&lt;br /&gt;
# {{ic|gpinstall.txt}} を [https://github.com/Yubico/ykneo-oath/blob/master/gpinstall.txt GitHub] からダウンロード。&lt;br /&gt;
# gpinstall.txt を編集して {{ic|install -file}} から始まる行を CAP ファイルが置かれているパスに修正。&lt;br /&gt;
# ターミナルを開き、{{ic|gpshell &#039;&#039;path/to/gpinstall.txt&#039;&#039;}} を実行。&lt;br /&gt;
# 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;Command --&amp;gt; 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100&lt;br /&gt;
Wrapped command --&amp;gt; 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77&lt;br /&gt;
27D0EDA00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
Command --&amp;gt; 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000&lt;br /&gt;
Wrapped command --&amp;gt; 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
card_disconnect&lt;br /&gt;
release_context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# NEO を抜き、Yubico Authenticator アプリで試す。&lt;br /&gt;
&lt;br /&gt;
==== (任意)Yubico Authenticator デスクトップクライアントをインストールする ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|yubioath-desktop}} をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcscd.service}} が実行中の間に、{{ic|yubioath-desktop}} を実行して、プロンプトが表示されたら YubiKey を挿入してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が HID デバイスとして機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[https://github.com/systemd/systemd/commit/d45ee2f31a8358db0accde2e7c81777cedadc3c2 バージョン 244以降の systemd は]この機能に対するネイティブサポートを追加したので、以下のステップはもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
[https://michaelheap.com/yubikey-on-arch/ この記事]で説明されているように、udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-security-key.rules|2=&lt;br /&gt;
KERNEL==&amp;quot;hidraw*&amp;quot;, SUBSYSTEM==&amp;quot;hidraw&amp;quot;, MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;users&amp;quot;, ATTRS{idVendor}==&amp;quot;2581&amp;quot;, ATTRS{idProduct}==&amp;quot;f1d0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|udevadm trigger}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== ykman が YubiKey に接続できない ===&lt;br /&gt;
&lt;br /&gt;
マネージャが YubiKey への接続に失敗する場合、{{ic|pcscd.service}} か {{ic|pcscd.socket}} が起動していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions. ===&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|scdaemon}} がすでにデバイスの排他的な制御を取得している場合に {{ic|ykman}} がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[https://github.com/Yubico/yubikey-manager/issues/35]&lt;br /&gt;
&lt;br /&gt;
これを修正するには、{{ic|~/.gnupg/scdaemon.conf}} 内であなたのデバイスに対して {{ic|reader-port}} オプションを正しい値で設定することができます。[https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG]&lt;br /&gt;
&lt;br /&gt;
{{Note|これにより、ykman を通して YubiKey にアクセスするたびに gpgagent が YubiKey をアンロックするプロンプトを表示するようになります。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO と YubiKey 4 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubikey&lt;br /&gt;
&lt;br /&gt;
YubiKey 5 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubi&lt;br /&gt;
&lt;br /&gt;
=== YubiKey がゲスト VM 内でバインドできない ===&lt;br /&gt;
&lt;br /&gt;
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの [[dmesg]] からバスとポートの情報を手に入れる必要があります:&lt;br /&gt;
&lt;br /&gt;
 # dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E &#039;s/^\&amp;lt;nowiki&amp;gt;[[^]]&amp;lt;/nowiki&amp;gt;+\] usb (&amp;lt;nowiki&amp;gt;[^:]&amp;lt;/nowiki&amp;gt;*):.*/\1/&#039;&lt;br /&gt;
&lt;br /&gt;
出力の USB id は {{ic|X-Y.Z}} または {{ic|X-Y}} の形式であるはずです。そして、ホスト上で、{{ic|find}} を使って {{ic|/sys/bus/usb/drivers}} を検索し、YubiKey がバインドしているドライバを探します (例: {{ic|usbhid}} または {{ic|usbfs}})。&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/bus/usb/drivers -name &amp;quot;*X-Y.Z*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デバイスのバインドを解除するには、先のコマンドの出力を使ってください (つまり、{{ic|/sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/X-Y.Z:1.0}}):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;X-Y.Z:1.0&#039; &amp;gt; /sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/unbind&lt;br /&gt;
&lt;br /&gt;
=== Error: [key] could not be locally signed or gpg: No default secret key: No public key ===&lt;br /&gt;
&lt;br /&gt;
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、[[pacman-key|Pacman]] が {{ic|pacman-key --populate}} で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が Yubico Authenticator で消えたり現れたりする ===&lt;br /&gt;
&lt;br /&gt;
これは、CCID ドライバがインストールされていない際に起こります。{{Pkg|ccid}} パッケージを[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey core error: timeout ===&lt;br /&gt;
&lt;br /&gt;
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|YubiKey|2024-08-26|814790}}&lt;/div&gt;</summary>
		<author><name>田中</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40656</id>
		<title>YubiKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40656"/>
		<updated>2025-08-02T11:21:42Z</updated>

		<summary type="html">&lt;p&gt;田中: /* 認証ツール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OpenPGP]]&lt;br /&gt;
[[Category:スマートカード]]&lt;br /&gt;
[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:YubiKey]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related|OATH}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|KeePass}}&lt;br /&gt;
{{Related|OpenPGP-card-tools}}&lt;br /&gt;
{{Related|スマートカード}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.yubico.com YubiKey] は小さな [[Wikipedia:ja:セキュリティトークン|USB セキュリティトークン]]です。モデルにも依りますが、以下のようなことができます:&lt;br /&gt;
&lt;br /&gt;
* スマートカードのように振る舞う([[Wikipedia:CCID (protocol)|CCID protocol]] を使用) - [https://developers.yubico.com/PGP/ PGP] と [https://developers.yubico.com/PIV/ PIV] 秘密鍵の両方を保存できます。&lt;br /&gt;
* [[Universal 2nd Factor]] (U2F) リクエストを処理する。&lt;br /&gt;
* 約 30 個の[[オープン認証イニシアチブ]] (OATH) 資格情報を保存・クエリする。&lt;br /&gt;
* Yubico OTP モードか HMAC-SHA1 モードで[[Wikipedia:Challenge–response authentication|チャレンジレスポンス認証]]を処理する。&lt;br /&gt;
* [[Wikipedia:ja:ワンタイムパスワード|ワンタイムパスワード]] (OTP) を生成する - [https://developers.yubico.com/OTP/ Yubico&#039;s AES based standard]。&lt;br /&gt;
* 63 文字までの静的パスワードを&amp;quot;入力&amp;quot;する。&lt;br /&gt;
&lt;br /&gt;
YubiKeyに関連するアプリケーションやライブラリはオープンソースですが、YubiKeyそのもののファームウェアは[https://www.yubico.com/blog/secure-hardware-vs-open-source/ オープンソースではありません]。代替としては [[Solo]]、[[Tillitis TKey|TKey]]、[[Nitrokey]] があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 管理ツール ===&lt;br /&gt;
* {{App|YubiKey Manager|USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール({{ic|ykman}})。|https://developers.yubico.com/yubikey-manager/|{{Pkg|yubikey-manager}}}}&lt;br /&gt;
::{{Note|インストール後、{{ic|pcscd.service}} を[[有効化]]してください。}}&lt;br /&gt;
::{{Warning|YubiKey ManagerのGUIフロントエンドである{{AUR|yubikey-manager-qt}}は開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
::{{Warning|YubiKey Managerに代わるもうひとつの選択肢であった、{{Pkg|yubikey-personalization}}および{{Pkg|yubikey-personalization-gui}}も開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
&lt;br /&gt;
=== 認証ツール ===&lt;br /&gt;
* {{App|Yubico PAM-U2F|[[U2F]] により [[PAM]] ユーザ認証。|https://developers.yubico.com/pam-u2f/|{{Pkg|pam-u2f}}}}&lt;br /&gt;
::{{Note|このプログラムは、{{Pkg|yubico-pam}}の[https://www.yubico.com/support/terms-conditions/yubico-end-of-life-policy/eol-products/ 後継として推奨されています]。}}&lt;br /&gt;
* {{App|Yubico Authenticator 6.0+ for Desktop|Yubico Authenticator 6.0+ (バージョン 6.0 及びそれ以降) は、YubiKey の第二要素クレデンシャルを管理するためのアプリケーションです。バージョン 6.0 から、コードベースが Flutter フレームワークを使って完全に書き換えられました。|https://developers.yubico.com/yubioath-flutter/|{{AUR|yubico-authenticator}}, {{AUR|yubico-authenticator-bin}}}}&lt;br /&gt;
* {{App|libfido2|クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。|https://developers.yubico.com/libfido2/|{{Pkg|libfido2}}}}&lt;br /&gt;
* {{App|YubiKey Full Disk Encryption|チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。|https://github.com/agherzan/yubikey-full-disk-encryption|{{Pkg|yubikey-full-disk-encryption}}}}&lt;br /&gt;
&lt;br /&gt;
== 入力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。&lt;br /&gt;
&lt;br /&gt;
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:&lt;br /&gt;
&lt;br /&gt;
* 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。&lt;br /&gt;
* 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。&lt;br /&gt;
* スマートカードを挿入/除去する。&lt;br /&gt;
&lt;br /&gt;
== 出力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は以下の入力を出力に変換します:&lt;br /&gt;
&lt;br /&gt;
* キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)&lt;br /&gt;
* 組み込みの LED は:&lt;br /&gt;
** 挿入した際に一度光ります。トラブルシューティングに便利です。&lt;br /&gt;
** API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。&lt;br /&gt;
* USB を通した API 応答。これは以下のように使用されます:&lt;br /&gt;
** チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)&lt;br /&gt;
** U2F チャレンジレスポンス認証&lt;br /&gt;
** CCID スマートカード関連のリクエスト&lt;br /&gt;
&lt;br /&gt;
== USB 接続モード ==&lt;br /&gt;
&lt;br /&gt;
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。&lt;br /&gt;
&lt;br /&gt;
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! プロトコル !! インターフェイス&lt;br /&gt;
|-&lt;br /&gt;
|OTP || Keyboard HID&lt;br /&gt;
|-&lt;br /&gt;
|FIDO || Other HID&lt;br /&gt;
|-&lt;br /&gt;
|PIV || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OpenPGP || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OATH || CCID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は &amp;quot;modes&amp;quot; という用語を使用します、OTP、FIDO、CCID と名付けられています。&lt;br /&gt;
&lt;br /&gt;
{{Note|ykman はリリース 0.6.1 (2018-04-16)で &amp;quot;U2F&amp;quot; を &amp;quot;FIDO&amp;quot; と名前を変更しました。https://developers.yubico.com/yubikey-manager/Release_Notes.html}}&lt;br /&gt;
&lt;br /&gt;
=== 有効になっているモードを取得 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 5 以前の YubiKey では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman config mode|&lt;br /&gt;
Current connection mode is: OTP+FIDO+CCID&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ykman mode}} というコマンドは非推奨となっており、今後削除されるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey バージョン 5 では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman info|&lt;br /&gt;
Device type: YubiKey 5 NFC&lt;br /&gt;
Serial number: XXXXXXXXX&lt;br /&gt;
Firmware version: 5.4.3&lt;br /&gt;
Form factor: Keychain (USB-A)&lt;br /&gt;
Enabled USB interfaces: OTP, FIDO, CCID&lt;br /&gt;
NFC transport is enabled.&lt;br /&gt;
&lt;br /&gt;
Applications    USB     NFC&lt;br /&gt;
FIDO2           Enabled Enabled&lt;br /&gt;
OTP             Enabled Enabled&lt;br /&gt;
FIDO U2F        Enabled Enabled&lt;br /&gt;
OATH            Enabled Enabled&lt;br /&gt;
YubiHSM Auth    Enabled Enabled&lt;br /&gt;
OpenPGP         Enabled Enabled&lt;br /&gt;
PIV             Enabled Enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== モードをセット ===&lt;br /&gt;
&lt;br /&gt;
すべてのモードが出荷時から有効化されています。変更するには:&lt;br /&gt;
&lt;br /&gt;
 $ ykman mode &#039;&#039;[OPTIONS]&#039;&#039; &#039;&#039;MODE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} には文字列を使用できます。例えば、{{ic|OTP+FIDO+CCID}}。短い形式もあります: {{ic|o+f+c}}。&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。&lt;br /&gt;
&lt;br /&gt;
以下にモード番号の表があります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||OTP device only.&lt;br /&gt;
|-&lt;br /&gt;
|1||CCID device only.&lt;br /&gt;
|-&lt;br /&gt;
|2||OTP/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|3||U2F device only.&lt;br /&gt;
|-&lt;br /&gt;
|4||OTP/U2F composite device.&lt;br /&gt;
|-&lt;br /&gt;
|5||U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|6||OTP/U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|81||CCID device only, with touch-eject.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の例では 86 という番号を使用しています。これは[https://github.com/Yubico/yubikey-manager/issues/20#issuecomment-326496204 無効な番号]です。80 は無視され、6 のように振る舞います。}}&lt;br /&gt;
&lt;br /&gt;
オプション:&lt;br /&gt;
* {{ic|--touch-eject}} - ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。&lt;br /&gt;
* {{ic|--autoeject-timeout &#039;&#039;SECONDS&#039;&#039;}} - 一定時間立つとスマートカードを自動的に除去します。{{ic|--touch-eject}} と同じような制限があります。&lt;br /&gt;
* {{ic|--chalresp-timeout &#039;&#039;SECONDS&#039;&#039;}} - チャレンジレスポンス認証のタイムアウトを設定します。&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman mode --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ワンタイムパスワード ==&lt;br /&gt;
&lt;br /&gt;
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。&lt;br /&gt;
&lt;br /&gt;
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち&#039;&#039;&#039;1つ&#039;&#039;&#039;を設定できます:&lt;br /&gt;
&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
* OATH-HOTP&lt;br /&gt;
* OATH-TOTP&lt;br /&gt;
* チャレンジレスポンス認証&lt;br /&gt;
* 静的パスワード&lt;br /&gt;
&lt;br /&gt;
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。{{ic|ykman otp swap}} により、スロット1とスロット2を入れ替えることはできます。&lt;br /&gt;
&lt;br /&gt;
=== 工場出荷時の設定 ===&lt;br /&gt;
&lt;br /&gt;
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|スロット1にある工場出荷時のキーを上書きしてしまうと、同じ信頼レベルの新しいキーを作成することはできなくなります。工場で生成された Yubico OTP 認証情報は {{ic|CC}} という接頭辞で始まります。一方、ユーザが生成した認証情報は {{ic|VV}} で始まります。セキュリティおよび機能的には基本的な違いはありませんが、一部のサービスは {{ic|CC}} の認証情報のみを信頼します。さらなる情報はこの[https://forum.yubico.com/viewtopic12ca.html?f%3D16&amp;amp;t%3D1960 フォーラムスレッド]で見られます。}}&lt;br /&gt;
&lt;br /&gt;
=== Yubico OTP ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.yubico.com/OTP/ Yubico OTP] は[[Wikipedia:ja:共通鍵暗号|共通鍵暗号]]に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの [[Wikipedia:ja:Advanced_Encryption_Standard|AES]] 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。&lt;br /&gt;
&lt;br /&gt;
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。&lt;br /&gt;
&lt;br /&gt;
==== YubiCloud と検証サーバー ====&lt;br /&gt;
&lt;br /&gt;
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば) {{Pkg|yubico-pam}} によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーの[https://developers.yubico.com/Software_Projects/Yubico_OTP/YubiCloud_Validation_Servers/ オープンソースの実装]も提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Yubico の検証サーバーを認証する場合:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HMAC&#039;&#039;&#039; を使用: https://upgrade.yubico.com/getapikey/ から HMAC 鍵と ID を取得してください。&lt;br /&gt;
* &#039;&#039;&#039;HTTPS&#039;&#039;&#039; を使用: 検証サーバーの証明書は GoDaddy によって署名されています。Arch ではデフォルトで GoDaddy を信頼しています ({{Pkg|ca-certificates}} をインストールしていれば)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 設定と使用 ====&lt;br /&gt;
&lt;br /&gt;
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp yubiotp --generate-key --upload 2&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman otp yubiotp --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
==== セキュリティリスク ====&lt;br /&gt;
&lt;br /&gt;
===== AES 鍵の漏洩 =====&lt;br /&gt;
&lt;br /&gt;
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。&lt;br /&gt;
&lt;br /&gt;
===== 検証リクエスト/レスポンスの盗聴 =====&lt;br /&gt;
&lt;br /&gt;
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== チャレンジレスポンス認証 ===&lt;br /&gt;
&lt;br /&gt;
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。&lt;br /&gt;
&lt;br /&gt;
これは以下のように利用できます:&lt;br /&gt;
&lt;br /&gt;
* 真の二要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。&lt;br /&gt;
* 「準」二要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。&lt;br /&gt;
&lt;br /&gt;
2つのチャレンジレスポンス認証アルゴリズムがあります:&lt;br /&gt;
&lt;br /&gt;
* HMAC-SHA1&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|yubikey-personalization-gui}} を使って GUI で、あるいは以下の指示で設定できます。&lt;br /&gt;
&lt;br /&gt;
==== HMAC-SHA1 アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --generate 2&lt;br /&gt;
&lt;br /&gt;
キーを与えるための {{ic|--generate}} フラグは省略できます ({{ic|ykman otp chalresp --help}} を参照)。キーを与える主な利点は、バックアップ用の2つ目のデバイスをセットアップする際に使用できることです。例えば、{{ic|openssl rand -hex 20}} は適切な鍵を生成します。&lt;br /&gt;
&lt;br /&gt;
==== Yubico OTP アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、{{ic|ykpersonalize}} を使用できます。スロット2にランダムな鍵を生成してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykpersonalize -2 -ochal-resp -ochal-yubico&lt;br /&gt;
&lt;br /&gt;
さらなる情報は {{man|1|ykpersonalize}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== チャレンジを送信 ====&lt;br /&gt;
&lt;br /&gt;
チャレンジを送信してレスポンスを受信するには、{{ic|ykchalresp -&#039;&#039;slot&#039;&#039; &#039;&#039;challenge&#039;&#039;}} コマンドを使用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykchalresp -2 &#039;&#039;archie&#039;&#039;|&lt;br /&gt;
12a19763be77d75af46fb76f0b737c117fa47205&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このコマンドは、プログラム済みのスロット2のユニークな 40 バイトの SHA1 ハッシュ値を返します。チャレンジが異なると、異なるユニークなレスポンスが返されます。&lt;br /&gt;
&lt;br /&gt;
=== 静的パスワード ===&lt;br /&gt;
&lt;br /&gt;
静的パスワードも生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static --generate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、パスワードを与えることも:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static &#039;&#039;slot&#039;&#039; &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は {{ic|ykman otp static --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ほとんどの YubiKey では、静的パスワードを保存するためのスロットの数 (2個) は限られています。チャレンジレスポンス認証のスロットは、無制限のチャレンジに対して静的ハッシュ値のレスポンスを提供します。これらは数字と小文字アルファベットのみですが、レスポンスの長さによってかなりのエントロピーが生まれます。}}&lt;br /&gt;
&lt;br /&gt;
=== エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット({{ic|cbdefghijklnrtuv}})、数値 {{ic|0-9}}、{{ic|!}} に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。&lt;br /&gt;
&lt;br /&gt;
Yubico はこの問題に関する[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf 白書]を提供しています。&lt;br /&gt;
&lt;br /&gt;
== OATH ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は2つの [[OATH]] 実装を提供します:&lt;br /&gt;
; OATH API: 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)&lt;br /&gt;
; OTP slot: 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)&lt;br /&gt;
&lt;br /&gt;
=== OATH API ===&lt;br /&gt;
&lt;br /&gt;
GUI がお好みならば、{{Pkg|yubioath-desktop}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は、{{ic|ykman oath uri}} を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:&lt;br /&gt;
&lt;br /&gt;
 $ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri&lt;br /&gt;
&lt;br /&gt;
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --touch &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP 鍵をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --oath-type HOTP &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
認証情報を一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath list&lt;br /&gt;
&lt;br /&gt;
コードを生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath code &#039;&#039;query&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なサブコマンドをすべて見るには、{{ic|ykman oath --help}} を実行してください。それぞれのサブコマンドの情報を見るには、{{ic|ykman oath &#039;&#039;subcommand&#039;&#039; --help}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== OTP スロット実装 ===&lt;br /&gt;
&lt;br /&gt;
スロット2で HOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp hotp 2 &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --totp &#039;&#039;slot&#039;&#039; &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate --totp &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman otp --help}} と https://developers.yubico.com/OATH/ も参照してください。&lt;br /&gt;
&lt;br /&gt;
== U2F ==&lt;br /&gt;
&lt;br /&gt;
YubiKey を用いた [[Universal 2nd Factor]] (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは &#039;FIDO&#039; とも呼ばれていることに注意してください。{{ic|ykman}} ユーティリティを通じていくつかの限定された管理オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* PIN を設定:  {{ic|ykman fido access change-pin}}&lt;br /&gt;
* 個別の資格情報を削除: {{ic|ykman fido credentials delete &#039;&#039;QUERY&#039;&#039;}}&lt;br /&gt;
* すべての資格情報と PIN をリセット: {{ic|ykman fido reset}}&lt;br /&gt;
&lt;br /&gt;
U2F を認証に使用するには、[[U2F]] の指示を見てください。&lt;br /&gt;
&lt;br /&gt;
[[WebAuthn]] も参照。&lt;br /&gt;
&lt;br /&gt;
== CCID スマートカード ==&lt;br /&gt;
&lt;br /&gt;
CCID (Chip Card Interface Device) は、スマートカードリーダーとして振る舞う USB デバイスによって使用されたり、YubiKey のように USB を通して直接接続するセキュリティトークンで使用されたりする USB 標準デバイスクラスです。HID (Human Interface Device) と CCID は両方とも USB デバイスクラスです。つまり、これらは USB 仕様の同じカテゴリに属すということです。HID は、キーボードなどのようなコンピュータ周辺機器のための仕様です。YubiKey は、OTP モードと FIDO モードで使用されたときは USB (HID) キーボードのように働きます。しかし、PIV アプリケーションを使用する時や OpenPGP デバイスとして使用する時は CCID プロトコルに切り替わります。&lt;br /&gt;
&lt;br /&gt;
CCID モードは 2015 年11以降に出荷された YubiKey のすべてでデフォルトで有効になっているはずです[https://www.yubico.com/support/knowledge-base/categories/articles/use-yubikey-yubikey-windows-hello-app/]。少なくとも CCID モードは有効化してください。[[#有効になっているモードを取得]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PIV ===&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO 以降から、YubiKey はチップ上に PIV (Personal Identity Verification) アプリケーションが含まれています。PIV は、RSA や ECC(楕円曲線暗号) を使用するトークンが個人電子証明書にどのように使用されるかを定めた米国政府規格(FIPS 201)です。YubiKey NEO は RSA 暗号のみをサポートしますが、その後のモデル(YubiKey 4 と 5)は RSA と ECC の両方をサポートします。PIV トークンの特徴は、秘密鍵を保護しオンチップで動作するように構築されているという点です。秘密鍵は、トークン上にインストールされた後は決してトークン外に出ることはありません。オプションで、オンチップの乱数生成器を使って秘密鍵をオンチップで生成することもできます。秘密鍵がオンチップで生成された場合、秘密鍵はチップの外部で処理されることはなく、トークンから秘密鍵を復元する方法もありません。PIV メカニズムを使用する際は、YubiKey は CCID デバイスとして機能します。&lt;br /&gt;
&lt;br /&gt;
=== OpenPGP スマートカード ===&lt;br /&gt;
&lt;br /&gt;
YubiKey は標準の GPG スマートカードとしてとして振る舞うことができます; セットアップと使用法に関する説明は [[GnuPG#スマートカード]] セクションを見てください。Yubico は https://developers.yubico.com/PGP/ でドキュメントも提供しています。&lt;br /&gt;
&lt;br /&gt;
他の機能(U2F と OTP)を使用したくない場合、ボタンはキーを挿入/除去するように設定でき、自動除去のタイムアウトも設定できます。詳細は [[#USB 接続モード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザ PIN は {{ic|123456}} で、デフォルトの admin PIN は {{ic|12345678}} です。デフォルトの PUK も {{ic|12345678}} です。覚えておきましょう。&lt;br /&gt;
&lt;br /&gt;
== 使用例 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、様々な認証の目的での YubiKey の使用法について説明しています。しかし、以下は使用法について完全に網羅されたリストではありません。&lt;br /&gt;
&lt;br /&gt;
=== LUKS による完全なディスク暗号化 ===&lt;br /&gt;
&lt;br /&gt;
複数の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;チャレンジレスポンス認証:&#039;&#039;&#039; とあるチャレンジに対する[[#チャレンジレスポンス認証|レスポンス]]が LUKS 鍵として使用されます。チャレンジは、真の二要素認証においてはパスワードとして機能し、一要素認証においてはチャレンジは平文で保存することができます。&lt;br /&gt;
* &#039;&#039;&#039;GnuPG:&#039;&#039;&#039; YubiKey の [[#CCID スマートカード|PGP スマートカード]]の機能を使用します。長いパスフレーズ無しで強力な二要素認証を提供します。&lt;br /&gt;
* &#039;&#039;&#039;FIDO HMAC Secret:&#039;&#039;&#039; あなたの YubiKey が [[U2F]] をサポートしているのであれば、共通鍵を返すように設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスクの暗号化の強度は、使用している鍵のうち最も弱いものの強さと同じです。上記のツールの内一つを設定したら、初期のパスフレーズを削除するか、より長いものに置き換えることを検討してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 共通の前提条件 ====&lt;br /&gt;
&lt;br /&gt;
* [[dm-crypt/システム全体の暗号化|LUKS により暗号化された]]起動可能なシステム。少なくとも1つの空きキースロットがあり、{{ic|encrypt}} [[mkinitcpio]] フックを使用していること。&lt;br /&gt;
** {{AUR|mkinitcpio-ykfde}} を例外として、{{ic|sd-encrypt}} はこれらのツールの全てでサポートされていません。&lt;br /&gt;
* LUKS ヘッダーのバックアップ(任意ですが、推奨)&lt;br /&gt;
&lt;br /&gt;
==== チャレンジレスポンス認証 ====&lt;br /&gt;
&lt;br /&gt;
完全な手順については {{Pkg|yubikey-full-disk-encryption}} の [https://github.com/agherzan/yubikey-full-disk-encryption#usage 公式ドキュメント] を見てください。大まかには:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-full-disk-encryption}} をインストール。&lt;br /&gt;
# {{ic|/etc/ykfde.conf}} を設定。&lt;br /&gt;
# 対象のディスクを登録: {{ic|# ykfde-enroll -d /dev/&#039;&#039;DISK&#039;&#039; -s &#039;&#039;LUKS_SLOT&#039;&#039;}}&lt;br /&gt;
# {{ic|ykfde}} [[mkinitcpio#HOOKS|mkinitcpio フック]] を {{ic|encrypt}} フックの前に追加。&lt;br /&gt;
# [[Initramfs の再生成]]&lt;br /&gt;
&lt;br /&gt;
:{{Note|Plymouth ユーザーは、{{ic|plymouth-encrypt}} フックを {{ic|ykfde}} フックに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
いくつかの利用可能なバリエーションがあります:&lt;br /&gt;
&lt;br /&gt;
* 2FA: デフォルトの挙動。対象デバイスの登録時、および起動時にパスワードとしてチャレンジを与えなければなりません。&lt;br /&gt;
* 1FA: {{ic|ykfde.conf}} に {{ic|YKFDE_CHALLENGE}} を設定してください。これは平文で保存されることに注意してください。このファイルに対する非ルートユーザの読み込みアクセスを禁止することを検討してください。&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-nfc-support-in-ykfde-initramfs-hook-experimental NFC サポート] (実験的)&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-ykfde-suspend-service-experimental サスペンドと復帰のサポート] (実験的) サスペンド時に、暗号化されたボリュームが自動的にロックされます。復帰時に自動でアンロックします。&lt;br /&gt;
&lt;br /&gt;
設定の変更を行った時は、変更を反映させるために initramfs の再生成を行わなければなりません。&lt;br /&gt;
&lt;br /&gt;
==== systemd ベースの initramfs ====&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックのユーザは {{AUR|mkinitcpio-ykfde}} か {{AUR|mkinitcpio-ykfde-git}} をインストールし、[https://github.com/eworm-de/mkinitcpio-ykfde/blob/master/README-mkinitcpio.md プロジェクトのドキュメント]にある手順に従ってください。手順は、大まかに言えば {{Pkg|yubikey-full-disk-encryption}} に似ています。&lt;br /&gt;
&lt;br /&gt;
==== GnuPG 暗号化キーファイル ====&lt;br /&gt;
&lt;br /&gt;
これを行うためのツールの一つは [https://github.com/fuhry/initramfs-scencrypt initramfs-scencrypt] です。完全な手順についてはドキュメントを見てください。2022年10月以降、このパッケージは、GitHub で PKGBUILD が提供されていますが、AUR に存在せず、徹底的にテストもされていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/特記事項#GPG や OpenSSL で暗号化されたキーファイルを使う|Dm-crypt のページ]]ではいくつかの代替策が提示されています。しかし、それらの殆どがフォーラムの古い投稿へのリンクです。&lt;br /&gt;
&lt;br /&gt;
==== FIDO2 プロトコルの HMAC secret extension ====&lt;br /&gt;
&lt;br /&gt;
YubiKey を完全ディスク暗号化に使うもう一つの方法は、[https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#sctn-hmac-secret-extension HMAC Secret Extension] を使用して、YubiKey から LUKS のパスワードを取得することです。これはパスフレーズによって保護することができます。この機能には、少なくとも[https://support.yubico.com/hc/en-us/articles/360016649319-YubiKey-5-2-3-Enhancements-to-FIDO-2-Support ファームウェア 5.2.3+ のYubiKey 5] が必要です。&lt;br /&gt;
パスフレーズによる保護の方法では、{{AUR|khefin}} をインストールし、[https://github.com/mjec/khefin/wiki/Arch-Linux-LUKS-configuration プロジェクトのドキュメント]にある手順に従ってください。&lt;br /&gt;
systemd 248 以降での(任意で PIN による保護が施された)1要素による方法では、FIDO2 キーを LUKS2 キースロットとして使用できます。手順は[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html 作者のブログ投稿]で見られます。&lt;br /&gt;
&lt;br /&gt;
=== KeePass ===&lt;br /&gt;
&lt;br /&gt;
[[KeePass]] は YubiKey をサポートするように設定できます。手順は [[KeePass#Yubikey|YubiKey セクション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== SSH 鍵 ===&lt;br /&gt;
&lt;br /&gt;
==== CCID ====&lt;br /&gt;
&lt;br /&gt;
あなたの YubiKey が CCID スマートカードをサポートしているのであれば、GPG 鍵や PIV 鍵のどちらかをベースとしてハードウェアによる [[SSH 鍵]] として使用することができます。Yubico は品質の良いドキュメントを提供しています:&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html PGP と PIV の両方の可能性から見た概要]、それらの利点と欠点を挙げています。&lt;br /&gt;
* [https://developers.yubico.com/PGP/SSH_authentication/index.html PGP 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html ユーザ証明書による PIV 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html #PKCS11 による PIV 認証]のための手順&lt;br /&gt;
&lt;br /&gt;
:{{Note|YubiKey 上の PIV アプリケーションデフォルトの PIN コードは {{ic|123456}} です。デフォルトの管理キーと一緒に PIN コードも変更しておくべきでしょう。詳細は [https://developers.yubico.com/PIV/Guides/Device_setup.html デバイスセットアップの手順] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== U2F ====&lt;br /&gt;
&lt;br /&gt;
YubiKey の U2F の機能を使用してハードウェアによる SSH 鍵を作成することもできます。手順は [[SSH 鍵#FIDO/U2F]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== PIV ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|yubikey-agent}} は SSH 鍵 を PIV トークンとして保存します。セットアップガイドは https://github.com/FiloSottile/yubikey-agent#readme を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PAM を用いた Linux ユーザ認証 ===&lt;br /&gt;
&lt;br /&gt;
ユーザ認証のために [[PAM]] を使用するすべてのものは、ユーザ認証のプロセスの一つの要素として YubiKey を使用するように設定できます。これには sudo、su、ssh、スクリーンロッカー、ディスプレイマネージャー、そして Linux システムがユーザを認証する必要のあるほぼすべての場面を含みます。その柔軟な設定により、システム全体や特定のアプリケーション、あるいはアプリケーションのグループに対して、あなたのニーズに合う認証要件を自由に設定することができます。例えば、ローカルセッションではパスワードの代わりとして YubiKey を受け入れ、リモートのセッションでは両方を要求することができます。これがどのように機能し、どのように設定するのかを理解するために、Arch Wiki の記事に加えて、{{man|8|pam}} や {{man|5|pam.conf}} を読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
YubiKey がサポートするプロトコルを PAM に統合するのに利用できるモジュールが複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|pam-u2f}} - FIDO2 規格による [[#U2F]] をサポート。どの手法を使うべきかわからない場合、これが良い選択です。&lt;br /&gt;
** [[Universal 2nd Factor#Arch Linux の認証|Arch Wiki の記事]]&lt;br /&gt;
** [https://developers.yubico.com/pam-u2f/ Yubico の公式ドキュメント]、サポートされるモジュールパラメータのリストがあります。&lt;br /&gt;
** Man ページ: {{man|8|pam_u2f}}、{{man|1|pamu2fcfg}}&lt;br /&gt;
* {{Pkg|oath-toolkit}} - [[#OATH]] ワンタイムパスワードをサポート(HOTP か TOTP)。&lt;br /&gt;
** [[pam_oath]]&lt;br /&gt;
* {{Pkg|yubico-pam}} - [[#Yubico OTP]] と チャレンジレスポンス認証 OTP をサポート。Yubico OTP モードでは認証サーバーへのネットワーク接続が必要であることに注意してください。チャレンジレスポンス認証では必要ありません。&lt;br /&gt;
** [https://developers.yubico.com/yubico-pam/ Yubico の公式ドキュメント]&lt;br /&gt;
** {{man|8|pam_yubico}} - チャレンジレスポンス認証モードを設定するのに使用される {{ic|mode}} パラメータに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|PAM の設定ファイルを変更する際には厳重な注意が必要です。間違うと、システムが完全に安全ではなくなったり、安全すぎて認証できなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
PAM の設定はこの記事の範囲を超えますが、簡単な概要としては:&lt;br /&gt;
&lt;br /&gt;
* 認証されたキーを含むファイルをホームディレクトリ内か一元的に作成する。&lt;br /&gt;
* 適切な PAM 設定ファイルの適切な場所に、以下のフォーマットに従う行を追加する:&lt;br /&gt;
    auth [required|sufficient] [module_name].so [module arguments]&lt;br /&gt;
* 多要素認証には {{ic|auth required}}、単一要素認証には {{ic|auth sufficient}}。&lt;br /&gt;
* {{ic|module_name}} - 例: {{ic|pam_u2f.so}}。インストールされているモジュールのリストを見てください: {{ic|ls /usr/lib/security }}&lt;br /&gt;
* モジュールの設定引数は、キーファイルの場所や、認証するためにどの手法をモジュールが使用すべきかなどです。&lt;br /&gt;
&lt;br /&gt;
==== SSH における注意事項 ====&lt;br /&gt;
&lt;br /&gt;
* Yubico は[https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html 追加のガイダンス]を公開しています。これは Ubuntu の古いバージョン向けですが、アップデートされている Arch システムにも適用できます。&lt;br /&gt;
* 遠隔地にあるサーバを YubiKey を使用するように設定する場合、追加で少なくとも一つの緊急用 SSH セッションを開いておくべきです。こうすれば、設定ミスにより締め出されないで済みます。&lt;br /&gt;
* {{ic|/etc/ssh/sshd_config}} に以下の設定が含まれていることを確認してください。{{Pkg|openssh}} に同梱されている {{ic|sshd_config}} はデフォルトでこれらが正しく設定されています。&lt;br /&gt;
    ChallengeResponseAuthentication no&lt;br /&gt;
    UsePAM yes&lt;br /&gt;
&lt;br /&gt;
=== ブラウザ/web 統合 ===&lt;br /&gt;
&lt;br /&gt;
多くのウェブサービスが FIDO ハードウェアトークンをサポートし始めています。詳細は [[U2F]] や [[WebAuthn]] のページを見てください。しかし、通常、するべきことといえば {{Pkg|libfido2}} をインストールして [https://demo.yubico.com/webauthn-technical/registration 試してみる]ことくらいです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey デバイスの挿入/除去時にアクションを実行する ===&lt;br /&gt;
&lt;br /&gt;
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成し、以下の内容を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;, ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, RUN+=&amp;quot;&#039;&#039;/usr/local/bin/script args&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを &amp;quot;remove&amp;quot; ではなく &amp;quot;add&amp;quot; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 挿入時に Yubico Authenticator を開始する ===&lt;br /&gt;
&lt;br /&gt;
Authenticator は長時間実行される GUI プロセスです。Udev ルール内で直接実行すると、プロセスが udev の処理をブロックしてしまいます。フォークすると、イベント処理の終了後に udev は無条件で (フォークによって生成された) プロセスをキルしてしまいます。なので、authenticator を udev ルールから開始することはできません。しかし、systemd.device を使うことができます。&lt;br /&gt;
&lt;br /&gt;
上記と同じように、{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成して、以下の内容を書き込んでください:&lt;br /&gt;
&lt;br /&gt;
 ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, SYMLINK+=&amp;quot;yubikey&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして、新しい systemd [[ユーザーユニット]]を[[作成]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/yubioath-desktop.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Autostart Yubico Authenticator&lt;br /&gt;
# Uncomment if you want to stop the authenticator when unplugged.&lt;br /&gt;
#StopPropagatedFrom=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/yubioath-desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、このユニットを[[有効化]]してください。&#039;&#039;systemctl&#039;&#039; が、このユニットが存在しない {{ic|dev-yubikey.device}} ユニットの依存関係として追加されたことを警告してきますが、問題ありません。このユニットは、YubiKey が挿入されると開始されます。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス/アップグレード ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey NEO 用に OATH アプレットをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のステップは、ファームウェアバージョン &amp;lt;= 3.1.2 の NEO でのみ必要です。現在の世代の NEO (U2F 搭載) は OpenPGP アプレットがすでにインストールされています。}}&lt;br /&gt;
&lt;br /&gt;
==== NEO を CCID デバイスとして設定する ====&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-personalization-gui}} ({{AUR|yubikey-personalization-gui-git}}) を[[インストール]]。&lt;br /&gt;
# udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。&lt;br /&gt;
# {{ic|ykpersonalize -m82}} を実行し、{{ic|y}} を入力、エンターを押す。&lt;br /&gt;
&lt;br /&gt;
==== アプレットをインストールする ====&lt;br /&gt;
&lt;br /&gt;
# {{AUR|gpshell}}、{{AUR|gppcscconnectionplugin}}、{{AUR|globalplatform}}、{{Pkg|pcsclite}} を[[インストール]]。&lt;br /&gt;
# {{ic|pcscd.service}} を[[起動]]。&lt;br /&gt;
# 最も最近の CAP ファイルを [https://developers.yubico.com/ykneo-oath/Releases/ ykneo-oath] サイトからダウンロード。&lt;br /&gt;
# {{ic|gpinstall.txt}} を [https://github.com/Yubico/ykneo-oath/blob/master/gpinstall.txt GitHub] からダウンロード。&lt;br /&gt;
# gpinstall.txt を編集して {{ic|install -file}} から始まる行を CAP ファイルが置かれているパスに修正。&lt;br /&gt;
# ターミナルを開き、{{ic|gpshell &#039;&#039;path/to/gpinstall.txt&#039;&#039;}} を実行。&lt;br /&gt;
# 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;Command --&amp;gt; 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100&lt;br /&gt;
Wrapped command --&amp;gt; 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77&lt;br /&gt;
27D0EDA00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
Command --&amp;gt; 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000&lt;br /&gt;
Wrapped command --&amp;gt; 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
card_disconnect&lt;br /&gt;
release_context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# NEO を抜き、Yubico Authenticator アプリで試す。&lt;br /&gt;
&lt;br /&gt;
==== (任意)Yubico Authenticator デスクトップクライアントをインストールする ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|yubioath-desktop}} をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcscd.service}} が実行中の間に、{{ic|yubioath-desktop}} を実行して、プロンプトが表示されたら YubiKey を挿入してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が HID デバイスとして機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[https://github.com/systemd/systemd/commit/d45ee2f31a8358db0accde2e7c81777cedadc3c2 バージョン 244以降の systemd は]この機能に対するネイティブサポートを追加したので、以下のステップはもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
[https://michaelheap.com/yubikey-on-arch/ この記事]で説明されているように、udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-security-key.rules|2=&lt;br /&gt;
KERNEL==&amp;quot;hidraw*&amp;quot;, SUBSYSTEM==&amp;quot;hidraw&amp;quot;, MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;users&amp;quot;, ATTRS{idVendor}==&amp;quot;2581&amp;quot;, ATTRS{idProduct}==&amp;quot;f1d0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|udevadm trigger}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== ykman が YubiKey に接続できない ===&lt;br /&gt;
&lt;br /&gt;
マネージャが YubiKey への接続に失敗する場合、{{ic|pcscd.service}} か {{ic|pcscd.socket}} が起動していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions. ===&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|scdaemon}} がすでにデバイスの排他的な制御を取得している場合に {{ic|ykman}} がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[https://github.com/Yubico/yubikey-manager/issues/35]&lt;br /&gt;
&lt;br /&gt;
これを修正するには、{{ic|~/.gnupg/scdaemon.conf}} 内であなたのデバイスに対して {{ic|reader-port}} オプションを正しい値で設定することができます。[https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG]&lt;br /&gt;
&lt;br /&gt;
{{Note|これにより、ykman を通して YubiKey にアクセスするたびに gpgagent が YubiKey をアンロックするプロンプトを表示するようになります。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO と YubiKey 4 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubikey&lt;br /&gt;
&lt;br /&gt;
YubiKey 5 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubi&lt;br /&gt;
&lt;br /&gt;
=== YubiKey がゲスト VM 内でバインドできない ===&lt;br /&gt;
&lt;br /&gt;
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの [[dmesg]] からバスとポートの情報を手に入れる必要があります:&lt;br /&gt;
&lt;br /&gt;
 # dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E &#039;s/^\&amp;lt;nowiki&amp;gt;[[^]]&amp;lt;/nowiki&amp;gt;+\] usb (&amp;lt;nowiki&amp;gt;[^:]&amp;lt;/nowiki&amp;gt;*):.*/\1/&#039;&lt;br /&gt;
&lt;br /&gt;
出力の USB id は {{ic|X-Y.Z}} または {{ic|X-Y}} の形式であるはずです。そして、ホスト上で、{{ic|find}} を使って {{ic|/sys/bus/usb/drivers}} を検索し、YubiKey がバインドしているドライバを探します (例: {{ic|usbhid}} または {{ic|usbfs}})。&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/bus/usb/drivers -name &amp;quot;*X-Y.Z*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デバイスのバインドを解除するには、先のコマンドの出力を使ってください (つまり、{{ic|/sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/X-Y.Z:1.0}}):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;X-Y.Z:1.0&#039; &amp;gt; /sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/unbind&lt;br /&gt;
&lt;br /&gt;
=== Error: [key] could not be locally signed or gpg: No default secret key: No public key ===&lt;br /&gt;
&lt;br /&gt;
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、[[pacman-key|Pacman]] が {{ic|pacman-key --populate}} で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が Yubico Authenticator で消えたり現れたりする ===&lt;br /&gt;
&lt;br /&gt;
これは、CCID ドライバがインストールされていない際に起こります。{{Pkg|ccid}} パッケージを[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey core error: timeout ===&lt;br /&gt;
&lt;br /&gt;
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|YubiKey|2024-08-26|814790}}&lt;/div&gt;</summary>
		<author><name>田中</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40655</id>
		<title>YubiKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40655"/>
		<updated>2025-08-02T11:21:01Z</updated>

		<summary type="html">&lt;p&gt;田中: /* インストール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OpenPGP]]&lt;br /&gt;
[[Category:スマートカード]]&lt;br /&gt;
[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:YubiKey]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related|OATH}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|KeePass}}&lt;br /&gt;
{{Related|OpenPGP-card-tools}}&lt;br /&gt;
{{Related|スマートカード}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.yubico.com YubiKey] は小さな [[Wikipedia:ja:セキュリティトークン|USB セキュリティトークン]]です。モデルにも依りますが、以下のようなことができます:&lt;br /&gt;
&lt;br /&gt;
* スマートカードのように振る舞う([[Wikipedia:CCID (protocol)|CCID protocol]] を使用) - [https://developers.yubico.com/PGP/ PGP] と [https://developers.yubico.com/PIV/ PIV] 秘密鍵の両方を保存できます。&lt;br /&gt;
* [[Universal 2nd Factor]] (U2F) リクエストを処理する。&lt;br /&gt;
* 約 30 個の[[オープン認証イニシアチブ]] (OATH) 資格情報を保存・クエリする。&lt;br /&gt;
* Yubico OTP モードか HMAC-SHA1 モードで[[Wikipedia:Challenge–response authentication|チャレンジレスポンス認証]]を処理する。&lt;br /&gt;
* [[Wikipedia:ja:ワンタイムパスワード|ワンタイムパスワード]] (OTP) を生成する - [https://developers.yubico.com/OTP/ Yubico&#039;s AES based standard]。&lt;br /&gt;
* 63 文字までの静的パスワードを&amp;quot;入力&amp;quot;する。&lt;br /&gt;
&lt;br /&gt;
YubiKeyに関連するアプリケーションやライブラリはオープンソースですが、YubiKeyそのもののファームウェアは[https://www.yubico.com/blog/secure-hardware-vs-open-source/ オープンソースではありません]。代替としては [[Solo]]、[[Tillitis TKey|TKey]]、[[Nitrokey]] があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 管理ツール ===&lt;br /&gt;
* {{App|YubiKey Manager|USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール({{ic|ykman}})。|https://developers.yubico.com/yubikey-manager/|{{Pkg|yubikey-manager}}}}&lt;br /&gt;
::{{Note|インストール後、{{ic|pcscd.service}} を[[有効化]]してください。}}&lt;br /&gt;
::{{Warning|YubiKey ManagerのGUIフロントエンドである{{AUR|yubikey-manager-qt}}は開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
::{{Warning|YubiKey Managerに代わるもうひとつの選択肢であった、{{Pkg|yubikey-personalization}}および{{Pkg|yubikey-personalization-gui}}も開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
&lt;br /&gt;
=== 認証ツール ===&lt;br /&gt;
* {{App|Yubico PAM-U2F|[[U2F]] により [[PAM]] ユーザ認証。|https://developers.yubico.com/pam-u2f/|{{Pkg|pam-u2f}}}}&lt;br /&gt;
::{{Note|このプログラムは、Yubicoによってかつて開発されていた{{Pkg|yubico-pam}}の後継として推奨されています。}}&lt;br /&gt;
* {{App|Yubico Authenticator 6.0+ for Desktop|Yubico Authenticator 6.0+ (バージョン 6.0 及びそれ以降) は、YubiKey の第二要素クレデンシャルを管理するためのアプリケーションです。バージョン 6.0 から、コードベースが Flutter フレームワークを使って完全に書き換えられました。|https://developers.yubico.com/yubioath-flutter/|{{AUR|yubico-authenticator}}, {{AUR|yubico-authenticator-bin}}}}&lt;br /&gt;
* {{App|libfido2|クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。|https://developers.yubico.com/libfido2/|{{Pkg|libfido2}}}}&lt;br /&gt;
* {{App|YubiKey Full Disk Encryption|チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。|https://github.com/agherzan/yubikey-full-disk-encryption|{{Pkg|yubikey-full-disk-encryption}}}}&lt;br /&gt;
&lt;br /&gt;
== 入力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。&lt;br /&gt;
&lt;br /&gt;
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:&lt;br /&gt;
&lt;br /&gt;
* 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。&lt;br /&gt;
* 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。&lt;br /&gt;
* スマートカードを挿入/除去する。&lt;br /&gt;
&lt;br /&gt;
== 出力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は以下の入力を出力に変換します:&lt;br /&gt;
&lt;br /&gt;
* キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)&lt;br /&gt;
* 組み込みの LED は:&lt;br /&gt;
** 挿入した際に一度光ります。トラブルシューティングに便利です。&lt;br /&gt;
** API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。&lt;br /&gt;
* USB を通した API 応答。これは以下のように使用されます:&lt;br /&gt;
** チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)&lt;br /&gt;
** U2F チャレンジレスポンス認証&lt;br /&gt;
** CCID スマートカード関連のリクエスト&lt;br /&gt;
&lt;br /&gt;
== USB 接続モード ==&lt;br /&gt;
&lt;br /&gt;
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。&lt;br /&gt;
&lt;br /&gt;
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! プロトコル !! インターフェイス&lt;br /&gt;
|-&lt;br /&gt;
|OTP || Keyboard HID&lt;br /&gt;
|-&lt;br /&gt;
|FIDO || Other HID&lt;br /&gt;
|-&lt;br /&gt;
|PIV || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OpenPGP || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OATH || CCID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は &amp;quot;modes&amp;quot; という用語を使用します、OTP、FIDO、CCID と名付けられています。&lt;br /&gt;
&lt;br /&gt;
{{Note|ykman はリリース 0.6.1 (2018-04-16)で &amp;quot;U2F&amp;quot; を &amp;quot;FIDO&amp;quot; と名前を変更しました。https://developers.yubico.com/yubikey-manager/Release_Notes.html}}&lt;br /&gt;
&lt;br /&gt;
=== 有効になっているモードを取得 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 5 以前の YubiKey では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman config mode|&lt;br /&gt;
Current connection mode is: OTP+FIDO+CCID&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ykman mode}} というコマンドは非推奨となっており、今後削除されるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey バージョン 5 では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman info|&lt;br /&gt;
Device type: YubiKey 5 NFC&lt;br /&gt;
Serial number: XXXXXXXXX&lt;br /&gt;
Firmware version: 5.4.3&lt;br /&gt;
Form factor: Keychain (USB-A)&lt;br /&gt;
Enabled USB interfaces: OTP, FIDO, CCID&lt;br /&gt;
NFC transport is enabled.&lt;br /&gt;
&lt;br /&gt;
Applications    USB     NFC&lt;br /&gt;
FIDO2           Enabled Enabled&lt;br /&gt;
OTP             Enabled Enabled&lt;br /&gt;
FIDO U2F        Enabled Enabled&lt;br /&gt;
OATH            Enabled Enabled&lt;br /&gt;
YubiHSM Auth    Enabled Enabled&lt;br /&gt;
OpenPGP         Enabled Enabled&lt;br /&gt;
PIV             Enabled Enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== モードをセット ===&lt;br /&gt;
&lt;br /&gt;
すべてのモードが出荷時から有効化されています。変更するには:&lt;br /&gt;
&lt;br /&gt;
 $ ykman mode &#039;&#039;[OPTIONS]&#039;&#039; &#039;&#039;MODE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} には文字列を使用できます。例えば、{{ic|OTP+FIDO+CCID}}。短い形式もあります: {{ic|o+f+c}}。&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。&lt;br /&gt;
&lt;br /&gt;
以下にモード番号の表があります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||OTP device only.&lt;br /&gt;
|-&lt;br /&gt;
|1||CCID device only.&lt;br /&gt;
|-&lt;br /&gt;
|2||OTP/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|3||U2F device only.&lt;br /&gt;
|-&lt;br /&gt;
|4||OTP/U2F composite device.&lt;br /&gt;
|-&lt;br /&gt;
|5||U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|6||OTP/U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|81||CCID device only, with touch-eject.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の例では 86 という番号を使用しています。これは[https://github.com/Yubico/yubikey-manager/issues/20#issuecomment-326496204 無効な番号]です。80 は無視され、6 のように振る舞います。}}&lt;br /&gt;
&lt;br /&gt;
オプション:&lt;br /&gt;
* {{ic|--touch-eject}} - ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。&lt;br /&gt;
* {{ic|--autoeject-timeout &#039;&#039;SECONDS&#039;&#039;}} - 一定時間立つとスマートカードを自動的に除去します。{{ic|--touch-eject}} と同じような制限があります。&lt;br /&gt;
* {{ic|--chalresp-timeout &#039;&#039;SECONDS&#039;&#039;}} - チャレンジレスポンス認証のタイムアウトを設定します。&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman mode --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ワンタイムパスワード ==&lt;br /&gt;
&lt;br /&gt;
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。&lt;br /&gt;
&lt;br /&gt;
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち&#039;&#039;&#039;1つ&#039;&#039;&#039;を設定できます:&lt;br /&gt;
&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
* OATH-HOTP&lt;br /&gt;
* OATH-TOTP&lt;br /&gt;
* チャレンジレスポンス認証&lt;br /&gt;
* 静的パスワード&lt;br /&gt;
&lt;br /&gt;
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。{{ic|ykman otp swap}} により、スロット1とスロット2を入れ替えることはできます。&lt;br /&gt;
&lt;br /&gt;
=== 工場出荷時の設定 ===&lt;br /&gt;
&lt;br /&gt;
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|スロット1にある工場出荷時のキーを上書きしてしまうと、同じ信頼レベルの新しいキーを作成することはできなくなります。工場で生成された Yubico OTP 認証情報は {{ic|CC}} という接頭辞で始まります。一方、ユーザが生成した認証情報は {{ic|VV}} で始まります。セキュリティおよび機能的には基本的な違いはありませんが、一部のサービスは {{ic|CC}} の認証情報のみを信頼します。さらなる情報はこの[https://forum.yubico.com/viewtopic12ca.html?f%3D16&amp;amp;t%3D1960 フォーラムスレッド]で見られます。}}&lt;br /&gt;
&lt;br /&gt;
=== Yubico OTP ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.yubico.com/OTP/ Yubico OTP] は[[Wikipedia:ja:共通鍵暗号|共通鍵暗号]]に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの [[Wikipedia:ja:Advanced_Encryption_Standard|AES]] 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。&lt;br /&gt;
&lt;br /&gt;
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。&lt;br /&gt;
&lt;br /&gt;
==== YubiCloud と検証サーバー ====&lt;br /&gt;
&lt;br /&gt;
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば) {{Pkg|yubico-pam}} によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーの[https://developers.yubico.com/Software_Projects/Yubico_OTP/YubiCloud_Validation_Servers/ オープンソースの実装]も提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Yubico の検証サーバーを認証する場合:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HMAC&#039;&#039;&#039; を使用: https://upgrade.yubico.com/getapikey/ から HMAC 鍵と ID を取得してください。&lt;br /&gt;
* &#039;&#039;&#039;HTTPS&#039;&#039;&#039; を使用: 検証サーバーの証明書は GoDaddy によって署名されています。Arch ではデフォルトで GoDaddy を信頼しています ({{Pkg|ca-certificates}} をインストールしていれば)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 設定と使用 ====&lt;br /&gt;
&lt;br /&gt;
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp yubiotp --generate-key --upload 2&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman otp yubiotp --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
==== セキュリティリスク ====&lt;br /&gt;
&lt;br /&gt;
===== AES 鍵の漏洩 =====&lt;br /&gt;
&lt;br /&gt;
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。&lt;br /&gt;
&lt;br /&gt;
===== 検証リクエスト/レスポンスの盗聴 =====&lt;br /&gt;
&lt;br /&gt;
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== チャレンジレスポンス認証 ===&lt;br /&gt;
&lt;br /&gt;
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。&lt;br /&gt;
&lt;br /&gt;
これは以下のように利用できます:&lt;br /&gt;
&lt;br /&gt;
* 真の二要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。&lt;br /&gt;
* 「準」二要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。&lt;br /&gt;
&lt;br /&gt;
2つのチャレンジレスポンス認証アルゴリズムがあります:&lt;br /&gt;
&lt;br /&gt;
* HMAC-SHA1&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|yubikey-personalization-gui}} を使って GUI で、あるいは以下の指示で設定できます。&lt;br /&gt;
&lt;br /&gt;
==== HMAC-SHA1 アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --generate 2&lt;br /&gt;
&lt;br /&gt;
キーを与えるための {{ic|--generate}} フラグは省略できます ({{ic|ykman otp chalresp --help}} を参照)。キーを与える主な利点は、バックアップ用の2つ目のデバイスをセットアップする際に使用できることです。例えば、{{ic|openssl rand -hex 20}} は適切な鍵を生成します。&lt;br /&gt;
&lt;br /&gt;
==== Yubico OTP アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、{{ic|ykpersonalize}} を使用できます。スロット2にランダムな鍵を生成してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykpersonalize -2 -ochal-resp -ochal-yubico&lt;br /&gt;
&lt;br /&gt;
さらなる情報は {{man|1|ykpersonalize}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== チャレンジを送信 ====&lt;br /&gt;
&lt;br /&gt;
チャレンジを送信してレスポンスを受信するには、{{ic|ykchalresp -&#039;&#039;slot&#039;&#039; &#039;&#039;challenge&#039;&#039;}} コマンドを使用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykchalresp -2 &#039;&#039;archie&#039;&#039;|&lt;br /&gt;
12a19763be77d75af46fb76f0b737c117fa47205&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このコマンドは、プログラム済みのスロット2のユニークな 40 バイトの SHA1 ハッシュ値を返します。チャレンジが異なると、異なるユニークなレスポンスが返されます。&lt;br /&gt;
&lt;br /&gt;
=== 静的パスワード ===&lt;br /&gt;
&lt;br /&gt;
静的パスワードも生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static --generate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、パスワードを与えることも:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static &#039;&#039;slot&#039;&#039; &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は {{ic|ykman otp static --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ほとんどの YubiKey では、静的パスワードを保存するためのスロットの数 (2個) は限られています。チャレンジレスポンス認証のスロットは、無制限のチャレンジに対して静的ハッシュ値のレスポンスを提供します。これらは数字と小文字アルファベットのみですが、レスポンスの長さによってかなりのエントロピーが生まれます。}}&lt;br /&gt;
&lt;br /&gt;
=== エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット({{ic|cbdefghijklnrtuv}})、数値 {{ic|0-9}}、{{ic|!}} に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。&lt;br /&gt;
&lt;br /&gt;
Yubico はこの問題に関する[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf 白書]を提供しています。&lt;br /&gt;
&lt;br /&gt;
== OATH ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は2つの [[OATH]] 実装を提供します:&lt;br /&gt;
; OATH API: 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)&lt;br /&gt;
; OTP slot: 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)&lt;br /&gt;
&lt;br /&gt;
=== OATH API ===&lt;br /&gt;
&lt;br /&gt;
GUI がお好みならば、{{Pkg|yubioath-desktop}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は、{{ic|ykman oath uri}} を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:&lt;br /&gt;
&lt;br /&gt;
 $ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri&lt;br /&gt;
&lt;br /&gt;
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --touch &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP 鍵をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --oath-type HOTP &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
認証情報を一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath list&lt;br /&gt;
&lt;br /&gt;
コードを生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath code &#039;&#039;query&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なサブコマンドをすべて見るには、{{ic|ykman oath --help}} を実行してください。それぞれのサブコマンドの情報を見るには、{{ic|ykman oath &#039;&#039;subcommand&#039;&#039; --help}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== OTP スロット実装 ===&lt;br /&gt;
&lt;br /&gt;
スロット2で HOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp hotp 2 &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --totp &#039;&#039;slot&#039;&#039; &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate --totp &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman otp --help}} と https://developers.yubico.com/OATH/ も参照してください。&lt;br /&gt;
&lt;br /&gt;
== U2F ==&lt;br /&gt;
&lt;br /&gt;
YubiKey を用いた [[Universal 2nd Factor]] (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは &#039;FIDO&#039; とも呼ばれていることに注意してください。{{ic|ykman}} ユーティリティを通じていくつかの限定された管理オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* PIN を設定:  {{ic|ykman fido access change-pin}}&lt;br /&gt;
* 個別の資格情報を削除: {{ic|ykman fido credentials delete &#039;&#039;QUERY&#039;&#039;}}&lt;br /&gt;
* すべての資格情報と PIN をリセット: {{ic|ykman fido reset}}&lt;br /&gt;
&lt;br /&gt;
U2F を認証に使用するには、[[U2F]] の指示を見てください。&lt;br /&gt;
&lt;br /&gt;
[[WebAuthn]] も参照。&lt;br /&gt;
&lt;br /&gt;
== CCID スマートカード ==&lt;br /&gt;
&lt;br /&gt;
CCID (Chip Card Interface Device) は、スマートカードリーダーとして振る舞う USB デバイスによって使用されたり、YubiKey のように USB を通して直接接続するセキュリティトークンで使用されたりする USB 標準デバイスクラスです。HID (Human Interface Device) と CCID は両方とも USB デバイスクラスです。つまり、これらは USB 仕様の同じカテゴリに属すということです。HID は、キーボードなどのようなコンピュータ周辺機器のための仕様です。YubiKey は、OTP モードと FIDO モードで使用されたときは USB (HID) キーボードのように働きます。しかし、PIV アプリケーションを使用する時や OpenPGP デバイスとして使用する時は CCID プロトコルに切り替わります。&lt;br /&gt;
&lt;br /&gt;
CCID モードは 2015 年11以降に出荷された YubiKey のすべてでデフォルトで有効になっているはずです[https://www.yubico.com/support/knowledge-base/categories/articles/use-yubikey-yubikey-windows-hello-app/]。少なくとも CCID モードは有効化してください。[[#有効になっているモードを取得]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PIV ===&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO 以降から、YubiKey はチップ上に PIV (Personal Identity Verification) アプリケーションが含まれています。PIV は、RSA や ECC(楕円曲線暗号) を使用するトークンが個人電子証明書にどのように使用されるかを定めた米国政府規格(FIPS 201)です。YubiKey NEO は RSA 暗号のみをサポートしますが、その後のモデル(YubiKey 4 と 5)は RSA と ECC の両方をサポートします。PIV トークンの特徴は、秘密鍵を保護しオンチップで動作するように構築されているという点です。秘密鍵は、トークン上にインストールされた後は決してトークン外に出ることはありません。オプションで、オンチップの乱数生成器を使って秘密鍵をオンチップで生成することもできます。秘密鍵がオンチップで生成された場合、秘密鍵はチップの外部で処理されることはなく、トークンから秘密鍵を復元する方法もありません。PIV メカニズムを使用する際は、YubiKey は CCID デバイスとして機能します。&lt;br /&gt;
&lt;br /&gt;
=== OpenPGP スマートカード ===&lt;br /&gt;
&lt;br /&gt;
YubiKey は標準の GPG スマートカードとしてとして振る舞うことができます; セットアップと使用法に関する説明は [[GnuPG#スマートカード]] セクションを見てください。Yubico は https://developers.yubico.com/PGP/ でドキュメントも提供しています。&lt;br /&gt;
&lt;br /&gt;
他の機能(U2F と OTP)を使用したくない場合、ボタンはキーを挿入/除去するように設定でき、自動除去のタイムアウトも設定できます。詳細は [[#USB 接続モード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザ PIN は {{ic|123456}} で、デフォルトの admin PIN は {{ic|12345678}} です。デフォルトの PUK も {{ic|12345678}} です。覚えておきましょう。&lt;br /&gt;
&lt;br /&gt;
== 使用例 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、様々な認証の目的での YubiKey の使用法について説明しています。しかし、以下は使用法について完全に網羅されたリストではありません。&lt;br /&gt;
&lt;br /&gt;
=== LUKS による完全なディスク暗号化 ===&lt;br /&gt;
&lt;br /&gt;
複数の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;チャレンジレスポンス認証:&#039;&#039;&#039; とあるチャレンジに対する[[#チャレンジレスポンス認証|レスポンス]]が LUKS 鍵として使用されます。チャレンジは、真の二要素認証においてはパスワードとして機能し、一要素認証においてはチャレンジは平文で保存することができます。&lt;br /&gt;
* &#039;&#039;&#039;GnuPG:&#039;&#039;&#039; YubiKey の [[#CCID スマートカード|PGP スマートカード]]の機能を使用します。長いパスフレーズ無しで強力な二要素認証を提供します。&lt;br /&gt;
* &#039;&#039;&#039;FIDO HMAC Secret:&#039;&#039;&#039; あなたの YubiKey が [[U2F]] をサポートしているのであれば、共通鍵を返すように設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスクの暗号化の強度は、使用している鍵のうち最も弱いものの強さと同じです。上記のツールの内一つを設定したら、初期のパスフレーズを削除するか、より長いものに置き換えることを検討してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 共通の前提条件 ====&lt;br /&gt;
&lt;br /&gt;
* [[dm-crypt/システム全体の暗号化|LUKS により暗号化された]]起動可能なシステム。少なくとも1つの空きキースロットがあり、{{ic|encrypt}} [[mkinitcpio]] フックを使用していること。&lt;br /&gt;
** {{AUR|mkinitcpio-ykfde}} を例外として、{{ic|sd-encrypt}} はこれらのツールの全てでサポートされていません。&lt;br /&gt;
* LUKS ヘッダーのバックアップ(任意ですが、推奨)&lt;br /&gt;
&lt;br /&gt;
==== チャレンジレスポンス認証 ====&lt;br /&gt;
&lt;br /&gt;
完全な手順については {{Pkg|yubikey-full-disk-encryption}} の [https://github.com/agherzan/yubikey-full-disk-encryption#usage 公式ドキュメント] を見てください。大まかには:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-full-disk-encryption}} をインストール。&lt;br /&gt;
# {{ic|/etc/ykfde.conf}} を設定。&lt;br /&gt;
# 対象のディスクを登録: {{ic|# ykfde-enroll -d /dev/&#039;&#039;DISK&#039;&#039; -s &#039;&#039;LUKS_SLOT&#039;&#039;}}&lt;br /&gt;
# {{ic|ykfde}} [[mkinitcpio#HOOKS|mkinitcpio フック]] を {{ic|encrypt}} フックの前に追加。&lt;br /&gt;
# [[Initramfs の再生成]]&lt;br /&gt;
&lt;br /&gt;
:{{Note|Plymouth ユーザーは、{{ic|plymouth-encrypt}} フックを {{ic|ykfde}} フックに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
いくつかの利用可能なバリエーションがあります:&lt;br /&gt;
&lt;br /&gt;
* 2FA: デフォルトの挙動。対象デバイスの登録時、および起動時にパスワードとしてチャレンジを与えなければなりません。&lt;br /&gt;
* 1FA: {{ic|ykfde.conf}} に {{ic|YKFDE_CHALLENGE}} を設定してください。これは平文で保存されることに注意してください。このファイルに対する非ルートユーザの読み込みアクセスを禁止することを検討してください。&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-nfc-support-in-ykfde-initramfs-hook-experimental NFC サポート] (実験的)&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-ykfde-suspend-service-experimental サスペンドと復帰のサポート] (実験的) サスペンド時に、暗号化されたボリュームが自動的にロックされます。復帰時に自動でアンロックします。&lt;br /&gt;
&lt;br /&gt;
設定の変更を行った時は、変更を反映させるために initramfs の再生成を行わなければなりません。&lt;br /&gt;
&lt;br /&gt;
==== systemd ベースの initramfs ====&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックのユーザは {{AUR|mkinitcpio-ykfde}} か {{AUR|mkinitcpio-ykfde-git}} をインストールし、[https://github.com/eworm-de/mkinitcpio-ykfde/blob/master/README-mkinitcpio.md プロジェクトのドキュメント]にある手順に従ってください。手順は、大まかに言えば {{Pkg|yubikey-full-disk-encryption}} に似ています。&lt;br /&gt;
&lt;br /&gt;
==== GnuPG 暗号化キーファイル ====&lt;br /&gt;
&lt;br /&gt;
これを行うためのツールの一つは [https://github.com/fuhry/initramfs-scencrypt initramfs-scencrypt] です。完全な手順についてはドキュメントを見てください。2022年10月以降、このパッケージは、GitHub で PKGBUILD が提供されていますが、AUR に存在せず、徹底的にテストもされていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/特記事項#GPG や OpenSSL で暗号化されたキーファイルを使う|Dm-crypt のページ]]ではいくつかの代替策が提示されています。しかし、それらの殆どがフォーラムの古い投稿へのリンクです。&lt;br /&gt;
&lt;br /&gt;
==== FIDO2 プロトコルの HMAC secret extension ====&lt;br /&gt;
&lt;br /&gt;
YubiKey を完全ディスク暗号化に使うもう一つの方法は、[https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#sctn-hmac-secret-extension HMAC Secret Extension] を使用して、YubiKey から LUKS のパスワードを取得することです。これはパスフレーズによって保護することができます。この機能には、少なくとも[https://support.yubico.com/hc/en-us/articles/360016649319-YubiKey-5-2-3-Enhancements-to-FIDO-2-Support ファームウェア 5.2.3+ のYubiKey 5] が必要です。&lt;br /&gt;
パスフレーズによる保護の方法では、{{AUR|khefin}} をインストールし、[https://github.com/mjec/khefin/wiki/Arch-Linux-LUKS-configuration プロジェクトのドキュメント]にある手順に従ってください。&lt;br /&gt;
systemd 248 以降での(任意で PIN による保護が施された)1要素による方法では、FIDO2 キーを LUKS2 キースロットとして使用できます。手順は[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html 作者のブログ投稿]で見られます。&lt;br /&gt;
&lt;br /&gt;
=== KeePass ===&lt;br /&gt;
&lt;br /&gt;
[[KeePass]] は YubiKey をサポートするように設定できます。手順は [[KeePass#Yubikey|YubiKey セクション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== SSH 鍵 ===&lt;br /&gt;
&lt;br /&gt;
==== CCID ====&lt;br /&gt;
&lt;br /&gt;
あなたの YubiKey が CCID スマートカードをサポートしているのであれば、GPG 鍵や PIV 鍵のどちらかをベースとしてハードウェアによる [[SSH 鍵]] として使用することができます。Yubico は品質の良いドキュメントを提供しています:&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html PGP と PIV の両方の可能性から見た概要]、それらの利点と欠点を挙げています。&lt;br /&gt;
* [https://developers.yubico.com/PGP/SSH_authentication/index.html PGP 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html ユーザ証明書による PIV 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html #PKCS11 による PIV 認証]のための手順&lt;br /&gt;
&lt;br /&gt;
:{{Note|YubiKey 上の PIV アプリケーションデフォルトの PIN コードは {{ic|123456}} です。デフォルトの管理キーと一緒に PIN コードも変更しておくべきでしょう。詳細は [https://developers.yubico.com/PIV/Guides/Device_setup.html デバイスセットアップの手順] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== U2F ====&lt;br /&gt;
&lt;br /&gt;
YubiKey の U2F の機能を使用してハードウェアによる SSH 鍵を作成することもできます。手順は [[SSH 鍵#FIDO/U2F]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== PIV ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|yubikey-agent}} は SSH 鍵 を PIV トークンとして保存します。セットアップガイドは https://github.com/FiloSottile/yubikey-agent#readme を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PAM を用いた Linux ユーザ認証 ===&lt;br /&gt;
&lt;br /&gt;
ユーザ認証のために [[PAM]] を使用するすべてのものは、ユーザ認証のプロセスの一つの要素として YubiKey を使用するように設定できます。これには sudo、su、ssh、スクリーンロッカー、ディスプレイマネージャー、そして Linux システムがユーザを認証する必要のあるほぼすべての場面を含みます。その柔軟な設定により、システム全体や特定のアプリケーション、あるいはアプリケーションのグループに対して、あなたのニーズに合う認証要件を自由に設定することができます。例えば、ローカルセッションではパスワードの代わりとして YubiKey を受け入れ、リモートのセッションでは両方を要求することができます。これがどのように機能し、どのように設定するのかを理解するために、Arch Wiki の記事に加えて、{{man|8|pam}} や {{man|5|pam.conf}} を読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
YubiKey がサポートするプロトコルを PAM に統合するのに利用できるモジュールが複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|pam-u2f}} - FIDO2 規格による [[#U2F]] をサポート。どの手法を使うべきかわからない場合、これが良い選択です。&lt;br /&gt;
** [[Universal 2nd Factor#Arch Linux の認証|Arch Wiki の記事]]&lt;br /&gt;
** [https://developers.yubico.com/pam-u2f/ Yubico の公式ドキュメント]、サポートされるモジュールパラメータのリストがあります。&lt;br /&gt;
** Man ページ: {{man|8|pam_u2f}}、{{man|1|pamu2fcfg}}&lt;br /&gt;
* {{Pkg|oath-toolkit}} - [[#OATH]] ワンタイムパスワードをサポート(HOTP か TOTP)。&lt;br /&gt;
** [[pam_oath]]&lt;br /&gt;
* {{Pkg|yubico-pam}} - [[#Yubico OTP]] と チャレンジレスポンス認証 OTP をサポート。Yubico OTP モードでは認証サーバーへのネットワーク接続が必要であることに注意してください。チャレンジレスポンス認証では必要ありません。&lt;br /&gt;
** [https://developers.yubico.com/yubico-pam/ Yubico の公式ドキュメント]&lt;br /&gt;
** {{man|8|pam_yubico}} - チャレンジレスポンス認証モードを設定するのに使用される {{ic|mode}} パラメータに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|PAM の設定ファイルを変更する際には厳重な注意が必要です。間違うと、システムが完全に安全ではなくなったり、安全すぎて認証できなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
PAM の設定はこの記事の範囲を超えますが、簡単な概要としては:&lt;br /&gt;
&lt;br /&gt;
* 認証されたキーを含むファイルをホームディレクトリ内か一元的に作成する。&lt;br /&gt;
* 適切な PAM 設定ファイルの適切な場所に、以下のフォーマットに従う行を追加する:&lt;br /&gt;
    auth [required|sufficient] [module_name].so [module arguments]&lt;br /&gt;
* 多要素認証には {{ic|auth required}}、単一要素認証には {{ic|auth sufficient}}。&lt;br /&gt;
* {{ic|module_name}} - 例: {{ic|pam_u2f.so}}。インストールされているモジュールのリストを見てください: {{ic|ls /usr/lib/security }}&lt;br /&gt;
* モジュールの設定引数は、キーファイルの場所や、認証するためにどの手法をモジュールが使用すべきかなどです。&lt;br /&gt;
&lt;br /&gt;
==== SSH における注意事項 ====&lt;br /&gt;
&lt;br /&gt;
* Yubico は[https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html 追加のガイダンス]を公開しています。これは Ubuntu の古いバージョン向けですが、アップデートされている Arch システムにも適用できます。&lt;br /&gt;
* 遠隔地にあるサーバを YubiKey を使用するように設定する場合、追加で少なくとも一つの緊急用 SSH セッションを開いておくべきです。こうすれば、設定ミスにより締め出されないで済みます。&lt;br /&gt;
* {{ic|/etc/ssh/sshd_config}} に以下の設定が含まれていることを確認してください。{{Pkg|openssh}} に同梱されている {{ic|sshd_config}} はデフォルトでこれらが正しく設定されています。&lt;br /&gt;
    ChallengeResponseAuthentication no&lt;br /&gt;
    UsePAM yes&lt;br /&gt;
&lt;br /&gt;
=== ブラウザ/web 統合 ===&lt;br /&gt;
&lt;br /&gt;
多くのウェブサービスが FIDO ハードウェアトークンをサポートし始めています。詳細は [[U2F]] や [[WebAuthn]] のページを見てください。しかし、通常、するべきことといえば {{Pkg|libfido2}} をインストールして [https://demo.yubico.com/webauthn-technical/registration 試してみる]ことくらいです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey デバイスの挿入/除去時にアクションを実行する ===&lt;br /&gt;
&lt;br /&gt;
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成し、以下の内容を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;, ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, RUN+=&amp;quot;&#039;&#039;/usr/local/bin/script args&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを &amp;quot;remove&amp;quot; ではなく &amp;quot;add&amp;quot; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 挿入時に Yubico Authenticator を開始する ===&lt;br /&gt;
&lt;br /&gt;
Authenticator は長時間実行される GUI プロセスです。Udev ルール内で直接実行すると、プロセスが udev の処理をブロックしてしまいます。フォークすると、イベント処理の終了後に udev は無条件で (フォークによって生成された) プロセスをキルしてしまいます。なので、authenticator を udev ルールから開始することはできません。しかし、systemd.device を使うことができます。&lt;br /&gt;
&lt;br /&gt;
上記と同じように、{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成して、以下の内容を書き込んでください:&lt;br /&gt;
&lt;br /&gt;
 ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, SYMLINK+=&amp;quot;yubikey&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして、新しい systemd [[ユーザーユニット]]を[[作成]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/yubioath-desktop.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Autostart Yubico Authenticator&lt;br /&gt;
# Uncomment if you want to stop the authenticator when unplugged.&lt;br /&gt;
#StopPropagatedFrom=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/yubioath-desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、このユニットを[[有効化]]してください。&#039;&#039;systemctl&#039;&#039; が、このユニットが存在しない {{ic|dev-yubikey.device}} ユニットの依存関係として追加されたことを警告してきますが、問題ありません。このユニットは、YubiKey が挿入されると開始されます。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス/アップグレード ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey NEO 用に OATH アプレットをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のステップは、ファームウェアバージョン &amp;lt;= 3.1.2 の NEO でのみ必要です。現在の世代の NEO (U2F 搭載) は OpenPGP アプレットがすでにインストールされています。}}&lt;br /&gt;
&lt;br /&gt;
==== NEO を CCID デバイスとして設定する ====&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-personalization-gui}} ({{AUR|yubikey-personalization-gui-git}}) を[[インストール]]。&lt;br /&gt;
# udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。&lt;br /&gt;
# {{ic|ykpersonalize -m82}} を実行し、{{ic|y}} を入力、エンターを押す。&lt;br /&gt;
&lt;br /&gt;
==== アプレットをインストールする ====&lt;br /&gt;
&lt;br /&gt;
# {{AUR|gpshell}}、{{AUR|gppcscconnectionplugin}}、{{AUR|globalplatform}}、{{Pkg|pcsclite}} を[[インストール]]。&lt;br /&gt;
# {{ic|pcscd.service}} を[[起動]]。&lt;br /&gt;
# 最も最近の CAP ファイルを [https://developers.yubico.com/ykneo-oath/Releases/ ykneo-oath] サイトからダウンロード。&lt;br /&gt;
# {{ic|gpinstall.txt}} を [https://github.com/Yubico/ykneo-oath/blob/master/gpinstall.txt GitHub] からダウンロード。&lt;br /&gt;
# gpinstall.txt を編集して {{ic|install -file}} から始まる行を CAP ファイルが置かれているパスに修正。&lt;br /&gt;
# ターミナルを開き、{{ic|gpshell &#039;&#039;path/to/gpinstall.txt&#039;&#039;}} を実行。&lt;br /&gt;
# 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;Command --&amp;gt; 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100&lt;br /&gt;
Wrapped command --&amp;gt; 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77&lt;br /&gt;
27D0EDA00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
Command --&amp;gt; 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000&lt;br /&gt;
Wrapped command --&amp;gt; 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
card_disconnect&lt;br /&gt;
release_context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# NEO を抜き、Yubico Authenticator アプリで試す。&lt;br /&gt;
&lt;br /&gt;
==== (任意)Yubico Authenticator デスクトップクライアントをインストールする ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|yubioath-desktop}} をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcscd.service}} が実行中の間に、{{ic|yubioath-desktop}} を実行して、プロンプトが表示されたら YubiKey を挿入してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が HID デバイスとして機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[https://github.com/systemd/systemd/commit/d45ee2f31a8358db0accde2e7c81777cedadc3c2 バージョン 244以降の systemd は]この機能に対するネイティブサポートを追加したので、以下のステップはもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
[https://michaelheap.com/yubikey-on-arch/ この記事]で説明されているように、udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-security-key.rules|2=&lt;br /&gt;
KERNEL==&amp;quot;hidraw*&amp;quot;, SUBSYSTEM==&amp;quot;hidraw&amp;quot;, MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;users&amp;quot;, ATTRS{idVendor}==&amp;quot;2581&amp;quot;, ATTRS{idProduct}==&amp;quot;f1d0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|udevadm trigger}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== ykman が YubiKey に接続できない ===&lt;br /&gt;
&lt;br /&gt;
マネージャが YubiKey への接続に失敗する場合、{{ic|pcscd.service}} か {{ic|pcscd.socket}} が起動していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions. ===&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|scdaemon}} がすでにデバイスの排他的な制御を取得している場合に {{ic|ykman}} がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[https://github.com/Yubico/yubikey-manager/issues/35]&lt;br /&gt;
&lt;br /&gt;
これを修正するには、{{ic|~/.gnupg/scdaemon.conf}} 内であなたのデバイスに対して {{ic|reader-port}} オプションを正しい値で設定することができます。[https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG]&lt;br /&gt;
&lt;br /&gt;
{{Note|これにより、ykman を通して YubiKey にアクセスするたびに gpgagent が YubiKey をアンロックするプロンプトを表示するようになります。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO と YubiKey 4 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubikey&lt;br /&gt;
&lt;br /&gt;
YubiKey 5 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubi&lt;br /&gt;
&lt;br /&gt;
=== YubiKey がゲスト VM 内でバインドできない ===&lt;br /&gt;
&lt;br /&gt;
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの [[dmesg]] からバスとポートの情報を手に入れる必要があります:&lt;br /&gt;
&lt;br /&gt;
 # dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E &#039;s/^\&amp;lt;nowiki&amp;gt;[[^]]&amp;lt;/nowiki&amp;gt;+\] usb (&amp;lt;nowiki&amp;gt;[^:]&amp;lt;/nowiki&amp;gt;*):.*/\1/&#039;&lt;br /&gt;
&lt;br /&gt;
出力の USB id は {{ic|X-Y.Z}} または {{ic|X-Y}} の形式であるはずです。そして、ホスト上で、{{ic|find}} を使って {{ic|/sys/bus/usb/drivers}} を検索し、YubiKey がバインドしているドライバを探します (例: {{ic|usbhid}} または {{ic|usbfs}})。&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/bus/usb/drivers -name &amp;quot;*X-Y.Z*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デバイスのバインドを解除するには、先のコマンドの出力を使ってください (つまり、{{ic|/sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/X-Y.Z:1.0}}):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;X-Y.Z:1.0&#039; &amp;gt; /sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/unbind&lt;br /&gt;
&lt;br /&gt;
=== Error: [key] could not be locally signed or gpg: No default secret key: No public key ===&lt;br /&gt;
&lt;br /&gt;
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、[[pacman-key|Pacman]] が {{ic|pacman-key --populate}} で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が Yubico Authenticator で消えたり現れたりする ===&lt;br /&gt;
&lt;br /&gt;
これは、CCID ドライバがインストールされていない際に起こります。{{Pkg|ccid}} パッケージを[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey core error: timeout ===&lt;br /&gt;
&lt;br /&gt;
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|YubiKey|2024-08-26|814790}}&lt;/div&gt;</summary>
		<author><name>田中</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40654</id>
		<title>YubiKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40654"/>
		<updated>2025-08-02T11:18:25Z</updated>

		<summary type="html">&lt;p&gt;田中: /* 認証ツール */ AUR: yubico-authenticator&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OpenPGP]]&lt;br /&gt;
[[Category:スマートカード]]&lt;br /&gt;
[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:YubiKey]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related|OATH}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|KeePass}}&lt;br /&gt;
{{Related|OpenPGP-card-tools}}&lt;br /&gt;
{{Related|スマートカード}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.yubico.com YubiKey] は小さな [[Wikipedia:ja:セキュリティトークン|USB セキュリティトークン]]です。モデルにも依りますが、以下のようなことができます:&lt;br /&gt;
&lt;br /&gt;
* スマートカードのように振る舞う([[Wikipedia:CCID (protocol)|CCID protocol]] を使用) - [https://developers.yubico.com/PGP/ PGP] と [https://developers.yubico.com/PIV/ PIV] 秘密鍵の両方を保存できます。&lt;br /&gt;
* [[Universal 2nd Factor]] (U2F) リクエストを処理する。&lt;br /&gt;
* 約 30 個の[[オープン認証イニシアチブ]] (OATH) 資格情報を保存・クエリする。&lt;br /&gt;
* Yubico OTP モードか HMAC-SHA1 モードで[[Wikipedia:Challenge–response authentication|チャレンジレスポンス認証]]を処理する。&lt;br /&gt;
* [[Wikipedia:ja:ワンタイムパスワード|ワンタイムパスワード]] (OTP) を生成する - [https://developers.yubico.com/OTP/ Yubico&#039;s AES based standard]。&lt;br /&gt;
* 63 文字までの静的パスワードを&amp;quot;入力&amp;quot;する。&lt;br /&gt;
&lt;br /&gt;
YubiKeyに関連するアプリケーションやライブラリはオープンソースですが、YubiKeyそのもののファームウェアは[https://www.yubico.com/blog/secure-hardware-vs-open-source/ オープンソースではありません]。代替としては [[Solo]]、[[Tillitis TKey|TKey]]、[[Nitrokey]] があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 管理ツール ===&lt;br /&gt;
* {{App|YubiKey Manager|USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール({{ic|ykman}})。|https://developers.yubico.com/yubikey-manager/|{{Pkg|yubikey-manager}}}}&lt;br /&gt;
::{{Note|インストール後、{{ic|pcscd.service}} を[[有効化]]してください。}}&lt;br /&gt;
::{{Warning|YubiKey ManagerのGUIフロントエンドである{{AUR|yubikey-manager-qt}}は開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
::{{Warning|YubiKey Managerに代わるもうひとつの選択肢であった、{{Pkg|yubikey-personalization}}および{{Pkg|yubikey-personalization-gui}}も開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
&lt;br /&gt;
=== 認証ツール ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Yubico PAM|Yubico OTP または チャレンジレスポンス認証による [[PAM]] ユーザ認証。|https://developers.yubico.com/yubico-pam/|{{Pkg|yubico-pam}}}}&lt;br /&gt;
* {{App|Yubico PAM-U2F|[[U2F]] により [[PAM]] ユーザ認証。|https://developers.yubico.com/pam-u2f/|{{Pkg|pam-u2f}}}}&lt;br /&gt;
* {{App|Yubico Authenticator 6.0+ for Desktop|Yubico Authenticator 6.0+ (バージョン 6.0 及びそれ以降) は、YubiKey の第二要素クレデンシャルを管理するためのアプリケーションです。バージョン 6.0 から、コードベースが Flutter フレームワークを使って完全に書き換えられました。|https://developers.yubico.com/yubioath-flutter/|{{AUR|yubico-authenticator}}, {{AUR|yubico-authenticator-bin}}}}&lt;br /&gt;
* {{App|libfido2|クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。|https://developers.yubico.com/libfido2/|{{Pkg|libfido2}}}}&lt;br /&gt;
* {{App|YubiKey Full Disk Encryption|チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。|https://github.com/agherzan/yubikey-full-disk-encryption|{{Pkg|yubikey-full-disk-encryption}}}}&lt;br /&gt;
&lt;br /&gt;
== 入力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。&lt;br /&gt;
&lt;br /&gt;
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:&lt;br /&gt;
&lt;br /&gt;
* 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。&lt;br /&gt;
* 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。&lt;br /&gt;
* スマートカードを挿入/除去する。&lt;br /&gt;
&lt;br /&gt;
== 出力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は以下の入力を出力に変換します:&lt;br /&gt;
&lt;br /&gt;
* キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)&lt;br /&gt;
* 組み込みの LED は:&lt;br /&gt;
** 挿入した際に一度光ります。トラブルシューティングに便利です。&lt;br /&gt;
** API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。&lt;br /&gt;
* USB を通した API 応答。これは以下のように使用されます:&lt;br /&gt;
** チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)&lt;br /&gt;
** U2F チャレンジレスポンス認証&lt;br /&gt;
** CCID スマートカード関連のリクエスト&lt;br /&gt;
&lt;br /&gt;
== USB 接続モード ==&lt;br /&gt;
&lt;br /&gt;
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。&lt;br /&gt;
&lt;br /&gt;
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! プロトコル !! インターフェイス&lt;br /&gt;
|-&lt;br /&gt;
|OTP || Keyboard HID&lt;br /&gt;
|-&lt;br /&gt;
|FIDO || Other HID&lt;br /&gt;
|-&lt;br /&gt;
|PIV || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OpenPGP || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OATH || CCID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は &amp;quot;modes&amp;quot; という用語を使用します、OTP、FIDO、CCID と名付けられています。&lt;br /&gt;
&lt;br /&gt;
{{Note|ykman はリリース 0.6.1 (2018-04-16)で &amp;quot;U2F&amp;quot; を &amp;quot;FIDO&amp;quot; と名前を変更しました。https://developers.yubico.com/yubikey-manager/Release_Notes.html}}&lt;br /&gt;
&lt;br /&gt;
=== 有効になっているモードを取得 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 5 以前の YubiKey では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman config mode|&lt;br /&gt;
Current connection mode is: OTP+FIDO+CCID&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ykman mode}} というコマンドは非推奨となっており、今後削除されるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey バージョン 5 では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman info|&lt;br /&gt;
Device type: YubiKey 5 NFC&lt;br /&gt;
Serial number: XXXXXXXXX&lt;br /&gt;
Firmware version: 5.4.3&lt;br /&gt;
Form factor: Keychain (USB-A)&lt;br /&gt;
Enabled USB interfaces: OTP, FIDO, CCID&lt;br /&gt;
NFC transport is enabled.&lt;br /&gt;
&lt;br /&gt;
Applications    USB     NFC&lt;br /&gt;
FIDO2           Enabled Enabled&lt;br /&gt;
OTP             Enabled Enabled&lt;br /&gt;
FIDO U2F        Enabled Enabled&lt;br /&gt;
OATH            Enabled Enabled&lt;br /&gt;
YubiHSM Auth    Enabled Enabled&lt;br /&gt;
OpenPGP         Enabled Enabled&lt;br /&gt;
PIV             Enabled Enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== モードをセット ===&lt;br /&gt;
&lt;br /&gt;
すべてのモードが出荷時から有効化されています。変更するには:&lt;br /&gt;
&lt;br /&gt;
 $ ykman mode &#039;&#039;[OPTIONS]&#039;&#039; &#039;&#039;MODE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} には文字列を使用できます。例えば、{{ic|OTP+FIDO+CCID}}。短い形式もあります: {{ic|o+f+c}}。&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。&lt;br /&gt;
&lt;br /&gt;
以下にモード番号の表があります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||OTP device only.&lt;br /&gt;
|-&lt;br /&gt;
|1||CCID device only.&lt;br /&gt;
|-&lt;br /&gt;
|2||OTP/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|3||U2F device only.&lt;br /&gt;
|-&lt;br /&gt;
|4||OTP/U2F composite device.&lt;br /&gt;
|-&lt;br /&gt;
|5||U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|6||OTP/U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|81||CCID device only, with touch-eject.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の例では 86 という番号を使用しています。これは[https://github.com/Yubico/yubikey-manager/issues/20#issuecomment-326496204 無効な番号]です。80 は無視され、6 のように振る舞います。}}&lt;br /&gt;
&lt;br /&gt;
オプション:&lt;br /&gt;
* {{ic|--touch-eject}} - ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。&lt;br /&gt;
* {{ic|--autoeject-timeout &#039;&#039;SECONDS&#039;&#039;}} - 一定時間立つとスマートカードを自動的に除去します。{{ic|--touch-eject}} と同じような制限があります。&lt;br /&gt;
* {{ic|--chalresp-timeout &#039;&#039;SECONDS&#039;&#039;}} - チャレンジレスポンス認証のタイムアウトを設定します。&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman mode --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ワンタイムパスワード ==&lt;br /&gt;
&lt;br /&gt;
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。&lt;br /&gt;
&lt;br /&gt;
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち&#039;&#039;&#039;1つ&#039;&#039;&#039;を設定できます:&lt;br /&gt;
&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
* OATH-HOTP&lt;br /&gt;
* OATH-TOTP&lt;br /&gt;
* チャレンジレスポンス認証&lt;br /&gt;
* 静的パスワード&lt;br /&gt;
&lt;br /&gt;
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。{{ic|ykman otp swap}} により、スロット1とスロット2を入れ替えることはできます。&lt;br /&gt;
&lt;br /&gt;
=== 工場出荷時の設定 ===&lt;br /&gt;
&lt;br /&gt;
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|スロット1にある工場出荷時のキーを上書きしてしまうと、同じ信頼レベルの新しいキーを作成することはできなくなります。工場で生成された Yubico OTP 認証情報は {{ic|CC}} という接頭辞で始まります。一方、ユーザが生成した認証情報は {{ic|VV}} で始まります。セキュリティおよび機能的には基本的な違いはありませんが、一部のサービスは {{ic|CC}} の認証情報のみを信頼します。さらなる情報はこの[https://forum.yubico.com/viewtopic12ca.html?f%3D16&amp;amp;t%3D1960 フォーラムスレッド]で見られます。}}&lt;br /&gt;
&lt;br /&gt;
=== Yubico OTP ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.yubico.com/OTP/ Yubico OTP] は[[Wikipedia:ja:共通鍵暗号|共通鍵暗号]]に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの [[Wikipedia:ja:Advanced_Encryption_Standard|AES]] 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。&lt;br /&gt;
&lt;br /&gt;
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。&lt;br /&gt;
&lt;br /&gt;
==== YubiCloud と検証サーバー ====&lt;br /&gt;
&lt;br /&gt;
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば) {{Pkg|yubico-pam}} によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーの[https://developers.yubico.com/Software_Projects/Yubico_OTP/YubiCloud_Validation_Servers/ オープンソースの実装]も提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Yubico の検証サーバーを認証する場合:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HMAC&#039;&#039;&#039; を使用: https://upgrade.yubico.com/getapikey/ から HMAC 鍵と ID を取得してください。&lt;br /&gt;
* &#039;&#039;&#039;HTTPS&#039;&#039;&#039; を使用: 検証サーバーの証明書は GoDaddy によって署名されています。Arch ではデフォルトで GoDaddy を信頼しています ({{Pkg|ca-certificates}} をインストールしていれば)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 設定と使用 ====&lt;br /&gt;
&lt;br /&gt;
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp yubiotp --generate-key --upload 2&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman otp yubiotp --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
==== セキュリティリスク ====&lt;br /&gt;
&lt;br /&gt;
===== AES 鍵の漏洩 =====&lt;br /&gt;
&lt;br /&gt;
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。&lt;br /&gt;
&lt;br /&gt;
===== 検証リクエスト/レスポンスの盗聴 =====&lt;br /&gt;
&lt;br /&gt;
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== チャレンジレスポンス認証 ===&lt;br /&gt;
&lt;br /&gt;
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。&lt;br /&gt;
&lt;br /&gt;
これは以下のように利用できます:&lt;br /&gt;
&lt;br /&gt;
* 真の二要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。&lt;br /&gt;
* 「準」二要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。&lt;br /&gt;
&lt;br /&gt;
2つのチャレンジレスポンス認証アルゴリズムがあります:&lt;br /&gt;
&lt;br /&gt;
* HMAC-SHA1&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|yubikey-personalization-gui}} を使って GUI で、あるいは以下の指示で設定できます。&lt;br /&gt;
&lt;br /&gt;
==== HMAC-SHA1 アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --generate 2&lt;br /&gt;
&lt;br /&gt;
キーを与えるための {{ic|--generate}} フラグは省略できます ({{ic|ykman otp chalresp --help}} を参照)。キーを与える主な利点は、バックアップ用の2つ目のデバイスをセットアップする際に使用できることです。例えば、{{ic|openssl rand -hex 20}} は適切な鍵を生成します。&lt;br /&gt;
&lt;br /&gt;
==== Yubico OTP アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、{{ic|ykpersonalize}} を使用できます。スロット2にランダムな鍵を生成してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykpersonalize -2 -ochal-resp -ochal-yubico&lt;br /&gt;
&lt;br /&gt;
さらなる情報は {{man|1|ykpersonalize}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== チャレンジを送信 ====&lt;br /&gt;
&lt;br /&gt;
チャレンジを送信してレスポンスを受信するには、{{ic|ykchalresp -&#039;&#039;slot&#039;&#039; &#039;&#039;challenge&#039;&#039;}} コマンドを使用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykchalresp -2 &#039;&#039;archie&#039;&#039;|&lt;br /&gt;
12a19763be77d75af46fb76f0b737c117fa47205&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このコマンドは、プログラム済みのスロット2のユニークな 40 バイトの SHA1 ハッシュ値を返します。チャレンジが異なると、異なるユニークなレスポンスが返されます。&lt;br /&gt;
&lt;br /&gt;
=== 静的パスワード ===&lt;br /&gt;
&lt;br /&gt;
静的パスワードも生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static --generate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、パスワードを与えることも:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static &#039;&#039;slot&#039;&#039; &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は {{ic|ykman otp static --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ほとんどの YubiKey では、静的パスワードを保存するためのスロットの数 (2個) は限られています。チャレンジレスポンス認証のスロットは、無制限のチャレンジに対して静的ハッシュ値のレスポンスを提供します。これらは数字と小文字アルファベットのみですが、レスポンスの長さによってかなりのエントロピーが生まれます。}}&lt;br /&gt;
&lt;br /&gt;
=== エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット({{ic|cbdefghijklnrtuv}})、数値 {{ic|0-9}}、{{ic|!}} に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。&lt;br /&gt;
&lt;br /&gt;
Yubico はこの問題に関する[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf 白書]を提供しています。&lt;br /&gt;
&lt;br /&gt;
== OATH ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は2つの [[OATH]] 実装を提供します:&lt;br /&gt;
; OATH API: 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)&lt;br /&gt;
; OTP slot: 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)&lt;br /&gt;
&lt;br /&gt;
=== OATH API ===&lt;br /&gt;
&lt;br /&gt;
GUI がお好みならば、{{Pkg|yubioath-desktop}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は、{{ic|ykman oath uri}} を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:&lt;br /&gt;
&lt;br /&gt;
 $ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri&lt;br /&gt;
&lt;br /&gt;
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --touch &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP 鍵をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --oath-type HOTP &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
認証情報を一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath list&lt;br /&gt;
&lt;br /&gt;
コードを生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath code &#039;&#039;query&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なサブコマンドをすべて見るには、{{ic|ykman oath --help}} を実行してください。それぞれのサブコマンドの情報を見るには、{{ic|ykman oath &#039;&#039;subcommand&#039;&#039; --help}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== OTP スロット実装 ===&lt;br /&gt;
&lt;br /&gt;
スロット2で HOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp hotp 2 &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --totp &#039;&#039;slot&#039;&#039; &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate --totp &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman otp --help}} と https://developers.yubico.com/OATH/ も参照してください。&lt;br /&gt;
&lt;br /&gt;
== U2F ==&lt;br /&gt;
&lt;br /&gt;
YubiKey を用いた [[Universal 2nd Factor]] (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは &#039;FIDO&#039; とも呼ばれていることに注意してください。{{ic|ykman}} ユーティリティを通じていくつかの限定された管理オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* PIN を設定:  {{ic|ykman fido access change-pin}}&lt;br /&gt;
* 個別の資格情報を削除: {{ic|ykman fido credentials delete &#039;&#039;QUERY&#039;&#039;}}&lt;br /&gt;
* すべての資格情報と PIN をリセット: {{ic|ykman fido reset}}&lt;br /&gt;
&lt;br /&gt;
U2F を認証に使用するには、[[U2F]] の指示を見てください。&lt;br /&gt;
&lt;br /&gt;
[[WebAuthn]] も参照。&lt;br /&gt;
&lt;br /&gt;
== CCID スマートカード ==&lt;br /&gt;
&lt;br /&gt;
CCID (Chip Card Interface Device) は、スマートカードリーダーとして振る舞う USB デバイスによって使用されたり、YubiKey のように USB を通して直接接続するセキュリティトークンで使用されたりする USB 標準デバイスクラスです。HID (Human Interface Device) と CCID は両方とも USB デバイスクラスです。つまり、これらは USB 仕様の同じカテゴリに属すということです。HID は、キーボードなどのようなコンピュータ周辺機器のための仕様です。YubiKey は、OTP モードと FIDO モードで使用されたときは USB (HID) キーボードのように働きます。しかし、PIV アプリケーションを使用する時や OpenPGP デバイスとして使用する時は CCID プロトコルに切り替わります。&lt;br /&gt;
&lt;br /&gt;
CCID モードは 2015 年11以降に出荷された YubiKey のすべてでデフォルトで有効になっているはずです[https://www.yubico.com/support/knowledge-base/categories/articles/use-yubikey-yubikey-windows-hello-app/]。少なくとも CCID モードは有効化してください。[[#有効になっているモードを取得]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PIV ===&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO 以降から、YubiKey はチップ上に PIV (Personal Identity Verification) アプリケーションが含まれています。PIV は、RSA や ECC(楕円曲線暗号) を使用するトークンが個人電子証明書にどのように使用されるかを定めた米国政府規格(FIPS 201)です。YubiKey NEO は RSA 暗号のみをサポートしますが、その後のモデル(YubiKey 4 と 5)は RSA と ECC の両方をサポートします。PIV トークンの特徴は、秘密鍵を保護しオンチップで動作するように構築されているという点です。秘密鍵は、トークン上にインストールされた後は決してトークン外に出ることはありません。オプションで、オンチップの乱数生成器を使って秘密鍵をオンチップで生成することもできます。秘密鍵がオンチップで生成された場合、秘密鍵はチップの外部で処理されることはなく、トークンから秘密鍵を復元する方法もありません。PIV メカニズムを使用する際は、YubiKey は CCID デバイスとして機能します。&lt;br /&gt;
&lt;br /&gt;
=== OpenPGP スマートカード ===&lt;br /&gt;
&lt;br /&gt;
YubiKey は標準の GPG スマートカードとしてとして振る舞うことができます; セットアップと使用法に関する説明は [[GnuPG#スマートカード]] セクションを見てください。Yubico は https://developers.yubico.com/PGP/ でドキュメントも提供しています。&lt;br /&gt;
&lt;br /&gt;
他の機能(U2F と OTP)を使用したくない場合、ボタンはキーを挿入/除去するように設定でき、自動除去のタイムアウトも設定できます。詳細は [[#USB 接続モード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザ PIN は {{ic|123456}} で、デフォルトの admin PIN は {{ic|12345678}} です。デフォルトの PUK も {{ic|12345678}} です。覚えておきましょう。&lt;br /&gt;
&lt;br /&gt;
== 使用例 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、様々な認証の目的での YubiKey の使用法について説明しています。しかし、以下は使用法について完全に網羅されたリストではありません。&lt;br /&gt;
&lt;br /&gt;
=== LUKS による完全なディスク暗号化 ===&lt;br /&gt;
&lt;br /&gt;
複数の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;チャレンジレスポンス認証:&#039;&#039;&#039; とあるチャレンジに対する[[#チャレンジレスポンス認証|レスポンス]]が LUKS 鍵として使用されます。チャレンジは、真の二要素認証においてはパスワードとして機能し、一要素認証においてはチャレンジは平文で保存することができます。&lt;br /&gt;
* &#039;&#039;&#039;GnuPG:&#039;&#039;&#039; YubiKey の [[#CCID スマートカード|PGP スマートカード]]の機能を使用します。長いパスフレーズ無しで強力な二要素認証を提供します。&lt;br /&gt;
* &#039;&#039;&#039;FIDO HMAC Secret:&#039;&#039;&#039; あなたの YubiKey が [[U2F]] をサポートしているのであれば、共通鍵を返すように設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスクの暗号化の強度は、使用している鍵のうち最も弱いものの強さと同じです。上記のツールの内一つを設定したら、初期のパスフレーズを削除するか、より長いものに置き換えることを検討してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 共通の前提条件 ====&lt;br /&gt;
&lt;br /&gt;
* [[dm-crypt/システム全体の暗号化|LUKS により暗号化された]]起動可能なシステム。少なくとも1つの空きキースロットがあり、{{ic|encrypt}} [[mkinitcpio]] フックを使用していること。&lt;br /&gt;
** {{AUR|mkinitcpio-ykfde}} を例外として、{{ic|sd-encrypt}} はこれらのツールの全てでサポートされていません。&lt;br /&gt;
* LUKS ヘッダーのバックアップ(任意ですが、推奨)&lt;br /&gt;
&lt;br /&gt;
==== チャレンジレスポンス認証 ====&lt;br /&gt;
&lt;br /&gt;
完全な手順については {{Pkg|yubikey-full-disk-encryption}} の [https://github.com/agherzan/yubikey-full-disk-encryption#usage 公式ドキュメント] を見てください。大まかには:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-full-disk-encryption}} をインストール。&lt;br /&gt;
# {{ic|/etc/ykfde.conf}} を設定。&lt;br /&gt;
# 対象のディスクを登録: {{ic|# ykfde-enroll -d /dev/&#039;&#039;DISK&#039;&#039; -s &#039;&#039;LUKS_SLOT&#039;&#039;}}&lt;br /&gt;
# {{ic|ykfde}} [[mkinitcpio#HOOKS|mkinitcpio フック]] を {{ic|encrypt}} フックの前に追加。&lt;br /&gt;
# [[Initramfs の再生成]]&lt;br /&gt;
&lt;br /&gt;
:{{Note|Plymouth ユーザーは、{{ic|plymouth-encrypt}} フックを {{ic|ykfde}} フックに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
いくつかの利用可能なバリエーションがあります:&lt;br /&gt;
&lt;br /&gt;
* 2FA: デフォルトの挙動。対象デバイスの登録時、および起動時にパスワードとしてチャレンジを与えなければなりません。&lt;br /&gt;
* 1FA: {{ic|ykfde.conf}} に {{ic|YKFDE_CHALLENGE}} を設定してください。これは平文で保存されることに注意してください。このファイルに対する非ルートユーザの読み込みアクセスを禁止することを検討してください。&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-nfc-support-in-ykfde-initramfs-hook-experimental NFC サポート] (実験的)&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-ykfde-suspend-service-experimental サスペンドと復帰のサポート] (実験的) サスペンド時に、暗号化されたボリュームが自動的にロックされます。復帰時に自動でアンロックします。&lt;br /&gt;
&lt;br /&gt;
設定の変更を行った時は、変更を反映させるために initramfs の再生成を行わなければなりません。&lt;br /&gt;
&lt;br /&gt;
==== systemd ベースの initramfs ====&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックのユーザは {{AUR|mkinitcpio-ykfde}} か {{AUR|mkinitcpio-ykfde-git}} をインストールし、[https://github.com/eworm-de/mkinitcpio-ykfde/blob/master/README-mkinitcpio.md プロジェクトのドキュメント]にある手順に従ってください。手順は、大まかに言えば {{Pkg|yubikey-full-disk-encryption}} に似ています。&lt;br /&gt;
&lt;br /&gt;
==== GnuPG 暗号化キーファイル ====&lt;br /&gt;
&lt;br /&gt;
これを行うためのツールの一つは [https://github.com/fuhry/initramfs-scencrypt initramfs-scencrypt] です。完全な手順についてはドキュメントを見てください。2022年10月以降、このパッケージは、GitHub で PKGBUILD が提供されていますが、AUR に存在せず、徹底的にテストもされていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/特記事項#GPG や OpenSSL で暗号化されたキーファイルを使う|Dm-crypt のページ]]ではいくつかの代替策が提示されています。しかし、それらの殆どがフォーラムの古い投稿へのリンクです。&lt;br /&gt;
&lt;br /&gt;
==== FIDO2 プロトコルの HMAC secret extension ====&lt;br /&gt;
&lt;br /&gt;
YubiKey を完全ディスク暗号化に使うもう一つの方法は、[https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#sctn-hmac-secret-extension HMAC Secret Extension] を使用して、YubiKey から LUKS のパスワードを取得することです。これはパスフレーズによって保護することができます。この機能には、少なくとも[https://support.yubico.com/hc/en-us/articles/360016649319-YubiKey-5-2-3-Enhancements-to-FIDO-2-Support ファームウェア 5.2.3+ のYubiKey 5] が必要です。&lt;br /&gt;
パスフレーズによる保護の方法では、{{AUR|khefin}} をインストールし、[https://github.com/mjec/khefin/wiki/Arch-Linux-LUKS-configuration プロジェクトのドキュメント]にある手順に従ってください。&lt;br /&gt;
systemd 248 以降での(任意で PIN による保護が施された)1要素による方法では、FIDO2 キーを LUKS2 キースロットとして使用できます。手順は[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html 作者のブログ投稿]で見られます。&lt;br /&gt;
&lt;br /&gt;
=== KeePass ===&lt;br /&gt;
&lt;br /&gt;
[[KeePass]] は YubiKey をサポートするように設定できます。手順は [[KeePass#Yubikey|YubiKey セクション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== SSH 鍵 ===&lt;br /&gt;
&lt;br /&gt;
==== CCID ====&lt;br /&gt;
&lt;br /&gt;
あなたの YubiKey が CCID スマートカードをサポートしているのであれば、GPG 鍵や PIV 鍵のどちらかをベースとしてハードウェアによる [[SSH 鍵]] として使用することができます。Yubico は品質の良いドキュメントを提供しています:&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html PGP と PIV の両方の可能性から見た概要]、それらの利点と欠点を挙げています。&lt;br /&gt;
* [https://developers.yubico.com/PGP/SSH_authentication/index.html PGP 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html ユーザ証明書による PIV 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html #PKCS11 による PIV 認証]のための手順&lt;br /&gt;
&lt;br /&gt;
:{{Note|YubiKey 上の PIV アプリケーションデフォルトの PIN コードは {{ic|123456}} です。デフォルトの管理キーと一緒に PIN コードも変更しておくべきでしょう。詳細は [https://developers.yubico.com/PIV/Guides/Device_setup.html デバイスセットアップの手順] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== U2F ====&lt;br /&gt;
&lt;br /&gt;
YubiKey の U2F の機能を使用してハードウェアによる SSH 鍵を作成することもできます。手順は [[SSH 鍵#FIDO/U2F]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== PIV ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|yubikey-agent}} は SSH 鍵 を PIV トークンとして保存します。セットアップガイドは https://github.com/FiloSottile/yubikey-agent#readme を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PAM を用いた Linux ユーザ認証 ===&lt;br /&gt;
&lt;br /&gt;
ユーザ認証のために [[PAM]] を使用するすべてのものは、ユーザ認証のプロセスの一つの要素として YubiKey を使用するように設定できます。これには sudo、su、ssh、スクリーンロッカー、ディスプレイマネージャー、そして Linux システムがユーザを認証する必要のあるほぼすべての場面を含みます。その柔軟な設定により、システム全体や特定のアプリケーション、あるいはアプリケーションのグループに対して、あなたのニーズに合う認証要件を自由に設定することができます。例えば、ローカルセッションではパスワードの代わりとして YubiKey を受け入れ、リモートのセッションでは両方を要求することができます。これがどのように機能し、どのように設定するのかを理解するために、Arch Wiki の記事に加えて、{{man|8|pam}} や {{man|5|pam.conf}} を読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
YubiKey がサポートするプロトコルを PAM に統合するのに利用できるモジュールが複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|pam-u2f}} - FIDO2 規格による [[#U2F]] をサポート。どの手法を使うべきかわからない場合、これが良い選択です。&lt;br /&gt;
** [[Universal 2nd Factor#Arch Linux の認証|Arch Wiki の記事]]&lt;br /&gt;
** [https://developers.yubico.com/pam-u2f/ Yubico の公式ドキュメント]、サポートされるモジュールパラメータのリストがあります。&lt;br /&gt;
** Man ページ: {{man|8|pam_u2f}}、{{man|1|pamu2fcfg}}&lt;br /&gt;
* {{Pkg|oath-toolkit}} - [[#OATH]] ワンタイムパスワードをサポート(HOTP か TOTP)。&lt;br /&gt;
** [[pam_oath]]&lt;br /&gt;
* {{Pkg|yubico-pam}} - [[#Yubico OTP]] と チャレンジレスポンス認証 OTP をサポート。Yubico OTP モードでは認証サーバーへのネットワーク接続が必要であることに注意してください。チャレンジレスポンス認証では必要ありません。&lt;br /&gt;
** [https://developers.yubico.com/yubico-pam/ Yubico の公式ドキュメント]&lt;br /&gt;
** {{man|8|pam_yubico}} - チャレンジレスポンス認証モードを設定するのに使用される {{ic|mode}} パラメータに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|PAM の設定ファイルを変更する際には厳重な注意が必要です。間違うと、システムが完全に安全ではなくなったり、安全すぎて認証できなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
PAM の設定はこの記事の範囲を超えますが、簡単な概要としては:&lt;br /&gt;
&lt;br /&gt;
* 認証されたキーを含むファイルをホームディレクトリ内か一元的に作成する。&lt;br /&gt;
* 適切な PAM 設定ファイルの適切な場所に、以下のフォーマットに従う行を追加する:&lt;br /&gt;
    auth [required|sufficient] [module_name].so [module arguments]&lt;br /&gt;
* 多要素認証には {{ic|auth required}}、単一要素認証には {{ic|auth sufficient}}。&lt;br /&gt;
* {{ic|module_name}} - 例: {{ic|pam_u2f.so}}。インストールされているモジュールのリストを見てください: {{ic|ls /usr/lib/security }}&lt;br /&gt;
* モジュールの設定引数は、キーファイルの場所や、認証するためにどの手法をモジュールが使用すべきかなどです。&lt;br /&gt;
&lt;br /&gt;
==== SSH における注意事項 ====&lt;br /&gt;
&lt;br /&gt;
* Yubico は[https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html 追加のガイダンス]を公開しています。これは Ubuntu の古いバージョン向けですが、アップデートされている Arch システムにも適用できます。&lt;br /&gt;
* 遠隔地にあるサーバを YubiKey を使用するように設定する場合、追加で少なくとも一つの緊急用 SSH セッションを開いておくべきです。こうすれば、設定ミスにより締め出されないで済みます。&lt;br /&gt;
* {{ic|/etc/ssh/sshd_config}} に以下の設定が含まれていることを確認してください。{{Pkg|openssh}} に同梱されている {{ic|sshd_config}} はデフォルトでこれらが正しく設定されています。&lt;br /&gt;
    ChallengeResponseAuthentication no&lt;br /&gt;
    UsePAM yes&lt;br /&gt;
&lt;br /&gt;
=== ブラウザ/web 統合 ===&lt;br /&gt;
&lt;br /&gt;
多くのウェブサービスが FIDO ハードウェアトークンをサポートし始めています。詳細は [[U2F]] や [[WebAuthn]] のページを見てください。しかし、通常、するべきことといえば {{Pkg|libfido2}} をインストールして [https://demo.yubico.com/webauthn-technical/registration 試してみる]ことくらいです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey デバイスの挿入/除去時にアクションを実行する ===&lt;br /&gt;
&lt;br /&gt;
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成し、以下の内容を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;, ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, RUN+=&amp;quot;&#039;&#039;/usr/local/bin/script args&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを &amp;quot;remove&amp;quot; ではなく &amp;quot;add&amp;quot; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 挿入時に Yubico Authenticator を開始する ===&lt;br /&gt;
&lt;br /&gt;
Authenticator は長時間実行される GUI プロセスです。Udev ルール内で直接実行すると、プロセスが udev の処理をブロックしてしまいます。フォークすると、イベント処理の終了後に udev は無条件で (フォークによって生成された) プロセスをキルしてしまいます。なので、authenticator を udev ルールから開始することはできません。しかし、systemd.device を使うことができます。&lt;br /&gt;
&lt;br /&gt;
上記と同じように、{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成して、以下の内容を書き込んでください:&lt;br /&gt;
&lt;br /&gt;
 ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, SYMLINK+=&amp;quot;yubikey&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして、新しい systemd [[ユーザーユニット]]を[[作成]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/yubioath-desktop.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Autostart Yubico Authenticator&lt;br /&gt;
# Uncomment if you want to stop the authenticator when unplugged.&lt;br /&gt;
#StopPropagatedFrom=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/yubioath-desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、このユニットを[[有効化]]してください。&#039;&#039;systemctl&#039;&#039; が、このユニットが存在しない {{ic|dev-yubikey.device}} ユニットの依存関係として追加されたことを警告してきますが、問題ありません。このユニットは、YubiKey が挿入されると開始されます。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス/アップグレード ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey NEO 用に OATH アプレットをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のステップは、ファームウェアバージョン &amp;lt;= 3.1.2 の NEO でのみ必要です。現在の世代の NEO (U2F 搭載) は OpenPGP アプレットがすでにインストールされています。}}&lt;br /&gt;
&lt;br /&gt;
==== NEO を CCID デバイスとして設定する ====&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-personalization-gui}} ({{AUR|yubikey-personalization-gui-git}}) を[[インストール]]。&lt;br /&gt;
# udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。&lt;br /&gt;
# {{ic|ykpersonalize -m82}} を実行し、{{ic|y}} を入力、エンターを押す。&lt;br /&gt;
&lt;br /&gt;
==== アプレットをインストールする ====&lt;br /&gt;
&lt;br /&gt;
# {{AUR|gpshell}}、{{AUR|gppcscconnectionplugin}}、{{AUR|globalplatform}}、{{Pkg|pcsclite}} を[[インストール]]。&lt;br /&gt;
# {{ic|pcscd.service}} を[[起動]]。&lt;br /&gt;
# 最も最近の CAP ファイルを [https://developers.yubico.com/ykneo-oath/Releases/ ykneo-oath] サイトからダウンロード。&lt;br /&gt;
# {{ic|gpinstall.txt}} を [https://github.com/Yubico/ykneo-oath/blob/master/gpinstall.txt GitHub] からダウンロード。&lt;br /&gt;
# gpinstall.txt を編集して {{ic|install -file}} から始まる行を CAP ファイルが置かれているパスに修正。&lt;br /&gt;
# ターミナルを開き、{{ic|gpshell &#039;&#039;path/to/gpinstall.txt&#039;&#039;}} を実行。&lt;br /&gt;
# 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;Command --&amp;gt; 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100&lt;br /&gt;
Wrapped command --&amp;gt; 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77&lt;br /&gt;
27D0EDA00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
Command --&amp;gt; 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000&lt;br /&gt;
Wrapped command --&amp;gt; 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
card_disconnect&lt;br /&gt;
release_context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# NEO を抜き、Yubico Authenticator アプリで試す。&lt;br /&gt;
&lt;br /&gt;
==== (任意)Yubico Authenticator デスクトップクライアントをインストールする ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|yubioath-desktop}} をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcscd.service}} が実行中の間に、{{ic|yubioath-desktop}} を実行して、プロンプトが表示されたら YubiKey を挿入してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が HID デバイスとして機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[https://github.com/systemd/systemd/commit/d45ee2f31a8358db0accde2e7c81777cedadc3c2 バージョン 244以降の systemd は]この機能に対するネイティブサポートを追加したので、以下のステップはもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
[https://michaelheap.com/yubikey-on-arch/ この記事]で説明されているように、udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-security-key.rules|2=&lt;br /&gt;
KERNEL==&amp;quot;hidraw*&amp;quot;, SUBSYSTEM==&amp;quot;hidraw&amp;quot;, MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;users&amp;quot;, ATTRS{idVendor}==&amp;quot;2581&amp;quot;, ATTRS{idProduct}==&amp;quot;f1d0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|udevadm trigger}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== ykman が YubiKey に接続できない ===&lt;br /&gt;
&lt;br /&gt;
マネージャが YubiKey への接続に失敗する場合、{{ic|pcscd.service}} か {{ic|pcscd.socket}} が起動していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions. ===&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|scdaemon}} がすでにデバイスの排他的な制御を取得している場合に {{ic|ykman}} がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[https://github.com/Yubico/yubikey-manager/issues/35]&lt;br /&gt;
&lt;br /&gt;
これを修正するには、{{ic|~/.gnupg/scdaemon.conf}} 内であなたのデバイスに対して {{ic|reader-port}} オプションを正しい値で設定することができます。[https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG]&lt;br /&gt;
&lt;br /&gt;
{{Note|これにより、ykman を通して YubiKey にアクセスするたびに gpgagent が YubiKey をアンロックするプロンプトを表示するようになります。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO と YubiKey 4 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubikey&lt;br /&gt;
&lt;br /&gt;
YubiKey 5 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubi&lt;br /&gt;
&lt;br /&gt;
=== YubiKey がゲスト VM 内でバインドできない ===&lt;br /&gt;
&lt;br /&gt;
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの [[dmesg]] からバスとポートの情報を手に入れる必要があります:&lt;br /&gt;
&lt;br /&gt;
 # dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E &#039;s/^\&amp;lt;nowiki&amp;gt;[[^]]&amp;lt;/nowiki&amp;gt;+\] usb (&amp;lt;nowiki&amp;gt;[^:]&amp;lt;/nowiki&amp;gt;*):.*/\1/&#039;&lt;br /&gt;
&lt;br /&gt;
出力の USB id は {{ic|X-Y.Z}} または {{ic|X-Y}} の形式であるはずです。そして、ホスト上で、{{ic|find}} を使って {{ic|/sys/bus/usb/drivers}} を検索し、YubiKey がバインドしているドライバを探します (例: {{ic|usbhid}} または {{ic|usbfs}})。&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/bus/usb/drivers -name &amp;quot;*X-Y.Z*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デバイスのバインドを解除するには、先のコマンドの出力を使ってください (つまり、{{ic|/sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/X-Y.Z:1.0}}):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;X-Y.Z:1.0&#039; &amp;gt; /sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/unbind&lt;br /&gt;
&lt;br /&gt;
=== Error: [key] could not be locally signed or gpg: No default secret key: No public key ===&lt;br /&gt;
&lt;br /&gt;
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、[[pacman-key|Pacman]] が {{ic|pacman-key --populate}} で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が Yubico Authenticator で消えたり現れたりする ===&lt;br /&gt;
&lt;br /&gt;
これは、CCID ドライバがインストールされていない際に起こります。{{Pkg|ccid}} パッケージを[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey core error: timeout ===&lt;br /&gt;
&lt;br /&gt;
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|YubiKey|2024-08-26|814790}}&lt;/div&gt;</summary>
		<author><name>田中</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40653</id>
		<title>YubiKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40653"/>
		<updated>2025-08-02T11:17:17Z</updated>

		<summary type="html">&lt;p&gt;田中: /* 認証ツール */ 使うべきではない上にレポジトリからも削除されたソフトウェアを除去&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OpenPGP]]&lt;br /&gt;
[[Category:スマートカード]]&lt;br /&gt;
[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:YubiKey]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related|OATH}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|KeePass}}&lt;br /&gt;
{{Related|OpenPGP-card-tools}}&lt;br /&gt;
{{Related|スマートカード}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.yubico.com YubiKey] は小さな [[Wikipedia:ja:セキュリティトークン|USB セキュリティトークン]]です。モデルにも依りますが、以下のようなことができます:&lt;br /&gt;
&lt;br /&gt;
* スマートカードのように振る舞う([[Wikipedia:CCID (protocol)|CCID protocol]] を使用) - [https://developers.yubico.com/PGP/ PGP] と [https://developers.yubico.com/PIV/ PIV] 秘密鍵の両方を保存できます。&lt;br /&gt;
* [[Universal 2nd Factor]] (U2F) リクエストを処理する。&lt;br /&gt;
* 約 30 個の[[オープン認証イニシアチブ]] (OATH) 資格情報を保存・クエリする。&lt;br /&gt;
* Yubico OTP モードか HMAC-SHA1 モードで[[Wikipedia:Challenge–response authentication|チャレンジレスポンス認証]]を処理する。&lt;br /&gt;
* [[Wikipedia:ja:ワンタイムパスワード|ワンタイムパスワード]] (OTP) を生成する - [https://developers.yubico.com/OTP/ Yubico&#039;s AES based standard]。&lt;br /&gt;
* 63 文字までの静的パスワードを&amp;quot;入力&amp;quot;する。&lt;br /&gt;
&lt;br /&gt;
YubiKeyに関連するアプリケーションやライブラリはオープンソースですが、YubiKeyそのもののファームウェアは[https://www.yubico.com/blog/secure-hardware-vs-open-source/ オープンソースではありません]。代替としては [[Solo]]、[[Tillitis TKey|TKey]]、[[Nitrokey]] があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 管理ツール ===&lt;br /&gt;
* {{App|YubiKey Manager|USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール({{ic|ykman}})。|https://developers.yubico.com/yubikey-manager/|{{Pkg|yubikey-manager}}}}&lt;br /&gt;
::{{Note|インストール後、{{ic|pcscd.service}} を[[有効化]]してください。}}&lt;br /&gt;
::{{Warning|YubiKey ManagerのGUIフロントエンドである{{AUR|yubikey-manager-qt}}は開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
::{{Warning|YubiKey Managerに代わるもうひとつの選択肢であった、{{Pkg|yubikey-personalization}}および{{Pkg|yubikey-personalization-gui}}も開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
&lt;br /&gt;
=== 認証ツール ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Yubico PAM|Yubico OTP または チャレンジレスポンス認証による [[PAM]] ユーザ認証。|https://developers.yubico.com/yubico-pam/|{{Pkg|yubico-pam}}}}&lt;br /&gt;
* {{App|Yubico PAM-U2F|[[U2F]] により [[PAM]] ユーザ認証。|https://developers.yubico.com/pam-u2f/|{{Pkg|pam-u2f}}}}&lt;br /&gt;
* {{App|Yubico Authenticator 6.0+ for Desktop|Yubico Authenticator 6.0+ (バージョン 6.0 及びそれ以降) は、YubiKey の第二要素クレデンシャルを管理するためのアプリケーションです。バージョン 6.0 から、コードベースが Flutter フレームワークを使って完全に書き換えられました。|https://developers.yubico.com/yubioath-flutter/|{{AUR|yubico-authenticator-bin}}}}&lt;br /&gt;
* {{App|libfido2|クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。|https://developers.yubico.com/libfido2/|{{Pkg|libfido2}}}}&lt;br /&gt;
* {{App|YubiKey Full Disk Encryption|チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。|https://github.com/agherzan/yubikey-full-disk-encryption|{{Pkg|yubikey-full-disk-encryption}}}}&lt;br /&gt;
&lt;br /&gt;
== 入力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。&lt;br /&gt;
&lt;br /&gt;
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:&lt;br /&gt;
&lt;br /&gt;
* 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。&lt;br /&gt;
* 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。&lt;br /&gt;
* スマートカードを挿入/除去する。&lt;br /&gt;
&lt;br /&gt;
== 出力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は以下の入力を出力に変換します:&lt;br /&gt;
&lt;br /&gt;
* キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)&lt;br /&gt;
* 組み込みの LED は:&lt;br /&gt;
** 挿入した際に一度光ります。トラブルシューティングに便利です。&lt;br /&gt;
** API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。&lt;br /&gt;
* USB を通した API 応答。これは以下のように使用されます:&lt;br /&gt;
** チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)&lt;br /&gt;
** U2F チャレンジレスポンス認証&lt;br /&gt;
** CCID スマートカード関連のリクエスト&lt;br /&gt;
&lt;br /&gt;
== USB 接続モード ==&lt;br /&gt;
&lt;br /&gt;
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。&lt;br /&gt;
&lt;br /&gt;
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! プロトコル !! インターフェイス&lt;br /&gt;
|-&lt;br /&gt;
|OTP || Keyboard HID&lt;br /&gt;
|-&lt;br /&gt;
|FIDO || Other HID&lt;br /&gt;
|-&lt;br /&gt;
|PIV || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OpenPGP || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OATH || CCID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は &amp;quot;modes&amp;quot; という用語を使用します、OTP、FIDO、CCID と名付けられています。&lt;br /&gt;
&lt;br /&gt;
{{Note|ykman はリリース 0.6.1 (2018-04-16)で &amp;quot;U2F&amp;quot; を &amp;quot;FIDO&amp;quot; と名前を変更しました。https://developers.yubico.com/yubikey-manager/Release_Notes.html}}&lt;br /&gt;
&lt;br /&gt;
=== 有効になっているモードを取得 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 5 以前の YubiKey では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman config mode|&lt;br /&gt;
Current connection mode is: OTP+FIDO+CCID&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ykman mode}} というコマンドは非推奨となっており、今後削除されるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey バージョン 5 では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman info|&lt;br /&gt;
Device type: YubiKey 5 NFC&lt;br /&gt;
Serial number: XXXXXXXXX&lt;br /&gt;
Firmware version: 5.4.3&lt;br /&gt;
Form factor: Keychain (USB-A)&lt;br /&gt;
Enabled USB interfaces: OTP, FIDO, CCID&lt;br /&gt;
NFC transport is enabled.&lt;br /&gt;
&lt;br /&gt;
Applications    USB     NFC&lt;br /&gt;
FIDO2           Enabled Enabled&lt;br /&gt;
OTP             Enabled Enabled&lt;br /&gt;
FIDO U2F        Enabled Enabled&lt;br /&gt;
OATH            Enabled Enabled&lt;br /&gt;
YubiHSM Auth    Enabled Enabled&lt;br /&gt;
OpenPGP         Enabled Enabled&lt;br /&gt;
PIV             Enabled Enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== モードをセット ===&lt;br /&gt;
&lt;br /&gt;
すべてのモードが出荷時から有効化されています。変更するには:&lt;br /&gt;
&lt;br /&gt;
 $ ykman mode &#039;&#039;[OPTIONS]&#039;&#039; &#039;&#039;MODE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} には文字列を使用できます。例えば、{{ic|OTP+FIDO+CCID}}。短い形式もあります: {{ic|o+f+c}}。&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。&lt;br /&gt;
&lt;br /&gt;
以下にモード番号の表があります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||OTP device only.&lt;br /&gt;
|-&lt;br /&gt;
|1||CCID device only.&lt;br /&gt;
|-&lt;br /&gt;
|2||OTP/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|3||U2F device only.&lt;br /&gt;
|-&lt;br /&gt;
|4||OTP/U2F composite device.&lt;br /&gt;
|-&lt;br /&gt;
|5||U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|6||OTP/U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|81||CCID device only, with touch-eject.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の例では 86 という番号を使用しています。これは[https://github.com/Yubico/yubikey-manager/issues/20#issuecomment-326496204 無効な番号]です。80 は無視され、6 のように振る舞います。}}&lt;br /&gt;
&lt;br /&gt;
オプション:&lt;br /&gt;
* {{ic|--touch-eject}} - ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。&lt;br /&gt;
* {{ic|--autoeject-timeout &#039;&#039;SECONDS&#039;&#039;}} - 一定時間立つとスマートカードを自動的に除去します。{{ic|--touch-eject}} と同じような制限があります。&lt;br /&gt;
* {{ic|--chalresp-timeout &#039;&#039;SECONDS&#039;&#039;}} - チャレンジレスポンス認証のタイムアウトを設定します。&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman mode --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ワンタイムパスワード ==&lt;br /&gt;
&lt;br /&gt;
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。&lt;br /&gt;
&lt;br /&gt;
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち&#039;&#039;&#039;1つ&#039;&#039;&#039;を設定できます:&lt;br /&gt;
&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
* OATH-HOTP&lt;br /&gt;
* OATH-TOTP&lt;br /&gt;
* チャレンジレスポンス認証&lt;br /&gt;
* 静的パスワード&lt;br /&gt;
&lt;br /&gt;
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。{{ic|ykman otp swap}} により、スロット1とスロット2を入れ替えることはできます。&lt;br /&gt;
&lt;br /&gt;
=== 工場出荷時の設定 ===&lt;br /&gt;
&lt;br /&gt;
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|スロット1にある工場出荷時のキーを上書きしてしまうと、同じ信頼レベルの新しいキーを作成することはできなくなります。工場で生成された Yubico OTP 認証情報は {{ic|CC}} という接頭辞で始まります。一方、ユーザが生成した認証情報は {{ic|VV}} で始まります。セキュリティおよび機能的には基本的な違いはありませんが、一部のサービスは {{ic|CC}} の認証情報のみを信頼します。さらなる情報はこの[https://forum.yubico.com/viewtopic12ca.html?f%3D16&amp;amp;t%3D1960 フォーラムスレッド]で見られます。}}&lt;br /&gt;
&lt;br /&gt;
=== Yubico OTP ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.yubico.com/OTP/ Yubico OTP] は[[Wikipedia:ja:共通鍵暗号|共通鍵暗号]]に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの [[Wikipedia:ja:Advanced_Encryption_Standard|AES]] 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。&lt;br /&gt;
&lt;br /&gt;
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。&lt;br /&gt;
&lt;br /&gt;
==== YubiCloud と検証サーバー ====&lt;br /&gt;
&lt;br /&gt;
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば) {{Pkg|yubico-pam}} によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーの[https://developers.yubico.com/Software_Projects/Yubico_OTP/YubiCloud_Validation_Servers/ オープンソースの実装]も提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Yubico の検証サーバーを認証する場合:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HMAC&#039;&#039;&#039; を使用: https://upgrade.yubico.com/getapikey/ から HMAC 鍵と ID を取得してください。&lt;br /&gt;
* &#039;&#039;&#039;HTTPS&#039;&#039;&#039; を使用: 検証サーバーの証明書は GoDaddy によって署名されています。Arch ではデフォルトで GoDaddy を信頼しています ({{Pkg|ca-certificates}} をインストールしていれば)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 設定と使用 ====&lt;br /&gt;
&lt;br /&gt;
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp yubiotp --generate-key --upload 2&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman otp yubiotp --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
==== セキュリティリスク ====&lt;br /&gt;
&lt;br /&gt;
===== AES 鍵の漏洩 =====&lt;br /&gt;
&lt;br /&gt;
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。&lt;br /&gt;
&lt;br /&gt;
===== 検証リクエスト/レスポンスの盗聴 =====&lt;br /&gt;
&lt;br /&gt;
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== チャレンジレスポンス認証 ===&lt;br /&gt;
&lt;br /&gt;
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。&lt;br /&gt;
&lt;br /&gt;
これは以下のように利用できます:&lt;br /&gt;
&lt;br /&gt;
* 真の二要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。&lt;br /&gt;
* 「準」二要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。&lt;br /&gt;
&lt;br /&gt;
2つのチャレンジレスポンス認証アルゴリズムがあります:&lt;br /&gt;
&lt;br /&gt;
* HMAC-SHA1&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|yubikey-personalization-gui}} を使って GUI で、あるいは以下の指示で設定できます。&lt;br /&gt;
&lt;br /&gt;
==== HMAC-SHA1 アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --generate 2&lt;br /&gt;
&lt;br /&gt;
キーを与えるための {{ic|--generate}} フラグは省略できます ({{ic|ykman otp chalresp --help}} を参照)。キーを与える主な利点は、バックアップ用の2つ目のデバイスをセットアップする際に使用できることです。例えば、{{ic|openssl rand -hex 20}} は適切な鍵を生成します。&lt;br /&gt;
&lt;br /&gt;
==== Yubico OTP アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、{{ic|ykpersonalize}} を使用できます。スロット2にランダムな鍵を生成してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykpersonalize -2 -ochal-resp -ochal-yubico&lt;br /&gt;
&lt;br /&gt;
さらなる情報は {{man|1|ykpersonalize}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== チャレンジを送信 ====&lt;br /&gt;
&lt;br /&gt;
チャレンジを送信してレスポンスを受信するには、{{ic|ykchalresp -&#039;&#039;slot&#039;&#039; &#039;&#039;challenge&#039;&#039;}} コマンドを使用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykchalresp -2 &#039;&#039;archie&#039;&#039;|&lt;br /&gt;
12a19763be77d75af46fb76f0b737c117fa47205&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このコマンドは、プログラム済みのスロット2のユニークな 40 バイトの SHA1 ハッシュ値を返します。チャレンジが異なると、異なるユニークなレスポンスが返されます。&lt;br /&gt;
&lt;br /&gt;
=== 静的パスワード ===&lt;br /&gt;
&lt;br /&gt;
静的パスワードも生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static --generate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、パスワードを与えることも:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static &#039;&#039;slot&#039;&#039; &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は {{ic|ykman otp static --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ほとんどの YubiKey では、静的パスワードを保存するためのスロットの数 (2個) は限られています。チャレンジレスポンス認証のスロットは、無制限のチャレンジに対して静的ハッシュ値のレスポンスを提供します。これらは数字と小文字アルファベットのみですが、レスポンスの長さによってかなりのエントロピーが生まれます。}}&lt;br /&gt;
&lt;br /&gt;
=== エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット({{ic|cbdefghijklnrtuv}})、数値 {{ic|0-9}}、{{ic|!}} に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。&lt;br /&gt;
&lt;br /&gt;
Yubico はこの問題に関する[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf 白書]を提供しています。&lt;br /&gt;
&lt;br /&gt;
== OATH ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は2つの [[OATH]] 実装を提供します:&lt;br /&gt;
; OATH API: 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)&lt;br /&gt;
; OTP slot: 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)&lt;br /&gt;
&lt;br /&gt;
=== OATH API ===&lt;br /&gt;
&lt;br /&gt;
GUI がお好みならば、{{Pkg|yubioath-desktop}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は、{{ic|ykman oath uri}} を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:&lt;br /&gt;
&lt;br /&gt;
 $ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri&lt;br /&gt;
&lt;br /&gt;
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --touch &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP 鍵をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --oath-type HOTP &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
認証情報を一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath list&lt;br /&gt;
&lt;br /&gt;
コードを生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath code &#039;&#039;query&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なサブコマンドをすべて見るには、{{ic|ykman oath --help}} を実行してください。それぞれのサブコマンドの情報を見るには、{{ic|ykman oath &#039;&#039;subcommand&#039;&#039; --help}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== OTP スロット実装 ===&lt;br /&gt;
&lt;br /&gt;
スロット2で HOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp hotp 2 &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --totp &#039;&#039;slot&#039;&#039; &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate --totp &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman otp --help}} と https://developers.yubico.com/OATH/ も参照してください。&lt;br /&gt;
&lt;br /&gt;
== U2F ==&lt;br /&gt;
&lt;br /&gt;
YubiKey を用いた [[Universal 2nd Factor]] (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは &#039;FIDO&#039; とも呼ばれていることに注意してください。{{ic|ykman}} ユーティリティを通じていくつかの限定された管理オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* PIN を設定:  {{ic|ykman fido access change-pin}}&lt;br /&gt;
* 個別の資格情報を削除: {{ic|ykman fido credentials delete &#039;&#039;QUERY&#039;&#039;}}&lt;br /&gt;
* すべての資格情報と PIN をリセット: {{ic|ykman fido reset}}&lt;br /&gt;
&lt;br /&gt;
U2F を認証に使用するには、[[U2F]] の指示を見てください。&lt;br /&gt;
&lt;br /&gt;
[[WebAuthn]] も参照。&lt;br /&gt;
&lt;br /&gt;
== CCID スマートカード ==&lt;br /&gt;
&lt;br /&gt;
CCID (Chip Card Interface Device) は、スマートカードリーダーとして振る舞う USB デバイスによって使用されたり、YubiKey のように USB を通して直接接続するセキュリティトークンで使用されたりする USB 標準デバイスクラスです。HID (Human Interface Device) と CCID は両方とも USB デバイスクラスです。つまり、これらは USB 仕様の同じカテゴリに属すということです。HID は、キーボードなどのようなコンピュータ周辺機器のための仕様です。YubiKey は、OTP モードと FIDO モードで使用されたときは USB (HID) キーボードのように働きます。しかし、PIV アプリケーションを使用する時や OpenPGP デバイスとして使用する時は CCID プロトコルに切り替わります。&lt;br /&gt;
&lt;br /&gt;
CCID モードは 2015 年11以降に出荷された YubiKey のすべてでデフォルトで有効になっているはずです[https://www.yubico.com/support/knowledge-base/categories/articles/use-yubikey-yubikey-windows-hello-app/]。少なくとも CCID モードは有効化してください。[[#有効になっているモードを取得]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PIV ===&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO 以降から、YubiKey はチップ上に PIV (Personal Identity Verification) アプリケーションが含まれています。PIV は、RSA や ECC(楕円曲線暗号) を使用するトークンが個人電子証明書にどのように使用されるかを定めた米国政府規格(FIPS 201)です。YubiKey NEO は RSA 暗号のみをサポートしますが、その後のモデル(YubiKey 4 と 5)は RSA と ECC の両方をサポートします。PIV トークンの特徴は、秘密鍵を保護しオンチップで動作するように構築されているという点です。秘密鍵は、トークン上にインストールされた後は決してトークン外に出ることはありません。オプションで、オンチップの乱数生成器を使って秘密鍵をオンチップで生成することもできます。秘密鍵がオンチップで生成された場合、秘密鍵はチップの外部で処理されることはなく、トークンから秘密鍵を復元する方法もありません。PIV メカニズムを使用する際は、YubiKey は CCID デバイスとして機能します。&lt;br /&gt;
&lt;br /&gt;
=== OpenPGP スマートカード ===&lt;br /&gt;
&lt;br /&gt;
YubiKey は標準の GPG スマートカードとしてとして振る舞うことができます; セットアップと使用法に関する説明は [[GnuPG#スマートカード]] セクションを見てください。Yubico は https://developers.yubico.com/PGP/ でドキュメントも提供しています。&lt;br /&gt;
&lt;br /&gt;
他の機能(U2F と OTP)を使用したくない場合、ボタンはキーを挿入/除去するように設定でき、自動除去のタイムアウトも設定できます。詳細は [[#USB 接続モード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザ PIN は {{ic|123456}} で、デフォルトの admin PIN は {{ic|12345678}} です。デフォルトの PUK も {{ic|12345678}} です。覚えておきましょう。&lt;br /&gt;
&lt;br /&gt;
== 使用例 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、様々な認証の目的での YubiKey の使用法について説明しています。しかし、以下は使用法について完全に網羅されたリストではありません。&lt;br /&gt;
&lt;br /&gt;
=== LUKS による完全なディスク暗号化 ===&lt;br /&gt;
&lt;br /&gt;
複数の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;チャレンジレスポンス認証:&#039;&#039;&#039; とあるチャレンジに対する[[#チャレンジレスポンス認証|レスポンス]]が LUKS 鍵として使用されます。チャレンジは、真の二要素認証においてはパスワードとして機能し、一要素認証においてはチャレンジは平文で保存することができます。&lt;br /&gt;
* &#039;&#039;&#039;GnuPG:&#039;&#039;&#039; YubiKey の [[#CCID スマートカード|PGP スマートカード]]の機能を使用します。長いパスフレーズ無しで強力な二要素認証を提供します。&lt;br /&gt;
* &#039;&#039;&#039;FIDO HMAC Secret:&#039;&#039;&#039; あなたの YubiKey が [[U2F]] をサポートしているのであれば、共通鍵を返すように設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスクの暗号化の強度は、使用している鍵のうち最も弱いものの強さと同じです。上記のツールの内一つを設定したら、初期のパスフレーズを削除するか、より長いものに置き換えることを検討してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 共通の前提条件 ====&lt;br /&gt;
&lt;br /&gt;
* [[dm-crypt/システム全体の暗号化|LUKS により暗号化された]]起動可能なシステム。少なくとも1つの空きキースロットがあり、{{ic|encrypt}} [[mkinitcpio]] フックを使用していること。&lt;br /&gt;
** {{AUR|mkinitcpio-ykfde}} を例外として、{{ic|sd-encrypt}} はこれらのツールの全てでサポートされていません。&lt;br /&gt;
* LUKS ヘッダーのバックアップ(任意ですが、推奨)&lt;br /&gt;
&lt;br /&gt;
==== チャレンジレスポンス認証 ====&lt;br /&gt;
&lt;br /&gt;
完全な手順については {{Pkg|yubikey-full-disk-encryption}} の [https://github.com/agherzan/yubikey-full-disk-encryption#usage 公式ドキュメント] を見てください。大まかには:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-full-disk-encryption}} をインストール。&lt;br /&gt;
# {{ic|/etc/ykfde.conf}} を設定。&lt;br /&gt;
# 対象のディスクを登録: {{ic|# ykfde-enroll -d /dev/&#039;&#039;DISK&#039;&#039; -s &#039;&#039;LUKS_SLOT&#039;&#039;}}&lt;br /&gt;
# {{ic|ykfde}} [[mkinitcpio#HOOKS|mkinitcpio フック]] を {{ic|encrypt}} フックの前に追加。&lt;br /&gt;
# [[Initramfs の再生成]]&lt;br /&gt;
&lt;br /&gt;
:{{Note|Plymouth ユーザーは、{{ic|plymouth-encrypt}} フックを {{ic|ykfde}} フックに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
いくつかの利用可能なバリエーションがあります:&lt;br /&gt;
&lt;br /&gt;
* 2FA: デフォルトの挙動。対象デバイスの登録時、および起動時にパスワードとしてチャレンジを与えなければなりません。&lt;br /&gt;
* 1FA: {{ic|ykfde.conf}} に {{ic|YKFDE_CHALLENGE}} を設定してください。これは平文で保存されることに注意してください。このファイルに対する非ルートユーザの読み込みアクセスを禁止することを検討してください。&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-nfc-support-in-ykfde-initramfs-hook-experimental NFC サポート] (実験的)&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-ykfde-suspend-service-experimental サスペンドと復帰のサポート] (実験的) サスペンド時に、暗号化されたボリュームが自動的にロックされます。復帰時に自動でアンロックします。&lt;br /&gt;
&lt;br /&gt;
設定の変更を行った時は、変更を反映させるために initramfs の再生成を行わなければなりません。&lt;br /&gt;
&lt;br /&gt;
==== systemd ベースの initramfs ====&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックのユーザは {{AUR|mkinitcpio-ykfde}} か {{AUR|mkinitcpio-ykfde-git}} をインストールし、[https://github.com/eworm-de/mkinitcpio-ykfde/blob/master/README-mkinitcpio.md プロジェクトのドキュメント]にある手順に従ってください。手順は、大まかに言えば {{Pkg|yubikey-full-disk-encryption}} に似ています。&lt;br /&gt;
&lt;br /&gt;
==== GnuPG 暗号化キーファイル ====&lt;br /&gt;
&lt;br /&gt;
これを行うためのツールの一つは [https://github.com/fuhry/initramfs-scencrypt initramfs-scencrypt] です。完全な手順についてはドキュメントを見てください。2022年10月以降、このパッケージは、GitHub で PKGBUILD が提供されていますが、AUR に存在せず、徹底的にテストもされていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/特記事項#GPG や OpenSSL で暗号化されたキーファイルを使う|Dm-crypt のページ]]ではいくつかの代替策が提示されています。しかし、それらの殆どがフォーラムの古い投稿へのリンクです。&lt;br /&gt;
&lt;br /&gt;
==== FIDO2 プロトコルの HMAC secret extension ====&lt;br /&gt;
&lt;br /&gt;
YubiKey を完全ディスク暗号化に使うもう一つの方法は、[https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#sctn-hmac-secret-extension HMAC Secret Extension] を使用して、YubiKey から LUKS のパスワードを取得することです。これはパスフレーズによって保護することができます。この機能には、少なくとも[https://support.yubico.com/hc/en-us/articles/360016649319-YubiKey-5-2-3-Enhancements-to-FIDO-2-Support ファームウェア 5.2.3+ のYubiKey 5] が必要です。&lt;br /&gt;
パスフレーズによる保護の方法では、{{AUR|khefin}} をインストールし、[https://github.com/mjec/khefin/wiki/Arch-Linux-LUKS-configuration プロジェクトのドキュメント]にある手順に従ってください。&lt;br /&gt;
systemd 248 以降での(任意で PIN による保護が施された)1要素による方法では、FIDO2 キーを LUKS2 キースロットとして使用できます。手順は[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html 作者のブログ投稿]で見られます。&lt;br /&gt;
&lt;br /&gt;
=== KeePass ===&lt;br /&gt;
&lt;br /&gt;
[[KeePass]] は YubiKey をサポートするように設定できます。手順は [[KeePass#Yubikey|YubiKey セクション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== SSH 鍵 ===&lt;br /&gt;
&lt;br /&gt;
==== CCID ====&lt;br /&gt;
&lt;br /&gt;
あなたの YubiKey が CCID スマートカードをサポートしているのであれば、GPG 鍵や PIV 鍵のどちらかをベースとしてハードウェアによる [[SSH 鍵]] として使用することができます。Yubico は品質の良いドキュメントを提供しています:&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html PGP と PIV の両方の可能性から見た概要]、それらの利点と欠点を挙げています。&lt;br /&gt;
* [https://developers.yubico.com/PGP/SSH_authentication/index.html PGP 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html ユーザ証明書による PIV 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html #PKCS11 による PIV 認証]のための手順&lt;br /&gt;
&lt;br /&gt;
:{{Note|YubiKey 上の PIV アプリケーションデフォルトの PIN コードは {{ic|123456}} です。デフォルトの管理キーと一緒に PIN コードも変更しておくべきでしょう。詳細は [https://developers.yubico.com/PIV/Guides/Device_setup.html デバイスセットアップの手順] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== U2F ====&lt;br /&gt;
&lt;br /&gt;
YubiKey の U2F の機能を使用してハードウェアによる SSH 鍵を作成することもできます。手順は [[SSH 鍵#FIDO/U2F]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== PIV ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|yubikey-agent}} は SSH 鍵 を PIV トークンとして保存します。セットアップガイドは https://github.com/FiloSottile/yubikey-agent#readme を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PAM を用いた Linux ユーザ認証 ===&lt;br /&gt;
&lt;br /&gt;
ユーザ認証のために [[PAM]] を使用するすべてのものは、ユーザ認証のプロセスの一つの要素として YubiKey を使用するように設定できます。これには sudo、su、ssh、スクリーンロッカー、ディスプレイマネージャー、そして Linux システムがユーザを認証する必要のあるほぼすべての場面を含みます。その柔軟な設定により、システム全体や特定のアプリケーション、あるいはアプリケーションのグループに対して、あなたのニーズに合う認証要件を自由に設定することができます。例えば、ローカルセッションではパスワードの代わりとして YubiKey を受け入れ、リモートのセッションでは両方を要求することができます。これがどのように機能し、どのように設定するのかを理解するために、Arch Wiki の記事に加えて、{{man|8|pam}} や {{man|5|pam.conf}} を読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
YubiKey がサポートするプロトコルを PAM に統合するのに利用できるモジュールが複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|pam-u2f}} - FIDO2 規格による [[#U2F]] をサポート。どの手法を使うべきかわからない場合、これが良い選択です。&lt;br /&gt;
** [[Universal 2nd Factor#Arch Linux の認証|Arch Wiki の記事]]&lt;br /&gt;
** [https://developers.yubico.com/pam-u2f/ Yubico の公式ドキュメント]、サポートされるモジュールパラメータのリストがあります。&lt;br /&gt;
** Man ページ: {{man|8|pam_u2f}}、{{man|1|pamu2fcfg}}&lt;br /&gt;
* {{Pkg|oath-toolkit}} - [[#OATH]] ワンタイムパスワードをサポート(HOTP か TOTP)。&lt;br /&gt;
** [[pam_oath]]&lt;br /&gt;
* {{Pkg|yubico-pam}} - [[#Yubico OTP]] と チャレンジレスポンス認証 OTP をサポート。Yubico OTP モードでは認証サーバーへのネットワーク接続が必要であることに注意してください。チャレンジレスポンス認証では必要ありません。&lt;br /&gt;
** [https://developers.yubico.com/yubico-pam/ Yubico の公式ドキュメント]&lt;br /&gt;
** {{man|8|pam_yubico}} - チャレンジレスポンス認証モードを設定するのに使用される {{ic|mode}} パラメータに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|PAM の設定ファイルを変更する際には厳重な注意が必要です。間違うと、システムが完全に安全ではなくなったり、安全すぎて認証できなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
PAM の設定はこの記事の範囲を超えますが、簡単な概要としては:&lt;br /&gt;
&lt;br /&gt;
* 認証されたキーを含むファイルをホームディレクトリ内か一元的に作成する。&lt;br /&gt;
* 適切な PAM 設定ファイルの適切な場所に、以下のフォーマットに従う行を追加する:&lt;br /&gt;
    auth [required|sufficient] [module_name].so [module arguments]&lt;br /&gt;
* 多要素認証には {{ic|auth required}}、単一要素認証には {{ic|auth sufficient}}。&lt;br /&gt;
* {{ic|module_name}} - 例: {{ic|pam_u2f.so}}。インストールされているモジュールのリストを見てください: {{ic|ls /usr/lib/security }}&lt;br /&gt;
* モジュールの設定引数は、キーファイルの場所や、認証するためにどの手法をモジュールが使用すべきかなどです。&lt;br /&gt;
&lt;br /&gt;
==== SSH における注意事項 ====&lt;br /&gt;
&lt;br /&gt;
* Yubico は[https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html 追加のガイダンス]を公開しています。これは Ubuntu の古いバージョン向けですが、アップデートされている Arch システムにも適用できます。&lt;br /&gt;
* 遠隔地にあるサーバを YubiKey を使用するように設定する場合、追加で少なくとも一つの緊急用 SSH セッションを開いておくべきです。こうすれば、設定ミスにより締め出されないで済みます。&lt;br /&gt;
* {{ic|/etc/ssh/sshd_config}} に以下の設定が含まれていることを確認してください。{{Pkg|openssh}} に同梱されている {{ic|sshd_config}} はデフォルトでこれらが正しく設定されています。&lt;br /&gt;
    ChallengeResponseAuthentication no&lt;br /&gt;
    UsePAM yes&lt;br /&gt;
&lt;br /&gt;
=== ブラウザ/web 統合 ===&lt;br /&gt;
&lt;br /&gt;
多くのウェブサービスが FIDO ハードウェアトークンをサポートし始めています。詳細は [[U2F]] や [[WebAuthn]] のページを見てください。しかし、通常、するべきことといえば {{Pkg|libfido2}} をインストールして [https://demo.yubico.com/webauthn-technical/registration 試してみる]ことくらいです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey デバイスの挿入/除去時にアクションを実行する ===&lt;br /&gt;
&lt;br /&gt;
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成し、以下の内容を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;, ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, RUN+=&amp;quot;&#039;&#039;/usr/local/bin/script args&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを &amp;quot;remove&amp;quot; ではなく &amp;quot;add&amp;quot; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 挿入時に Yubico Authenticator を開始する ===&lt;br /&gt;
&lt;br /&gt;
Authenticator は長時間実行される GUI プロセスです。Udev ルール内で直接実行すると、プロセスが udev の処理をブロックしてしまいます。フォークすると、イベント処理の終了後に udev は無条件で (フォークによって生成された) プロセスをキルしてしまいます。なので、authenticator を udev ルールから開始することはできません。しかし、systemd.device を使うことができます。&lt;br /&gt;
&lt;br /&gt;
上記と同じように、{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成して、以下の内容を書き込んでください:&lt;br /&gt;
&lt;br /&gt;
 ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, SYMLINK+=&amp;quot;yubikey&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして、新しい systemd [[ユーザーユニット]]を[[作成]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/yubioath-desktop.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Autostart Yubico Authenticator&lt;br /&gt;
# Uncomment if you want to stop the authenticator when unplugged.&lt;br /&gt;
#StopPropagatedFrom=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/yubioath-desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、このユニットを[[有効化]]してください。&#039;&#039;systemctl&#039;&#039; が、このユニットが存在しない {{ic|dev-yubikey.device}} ユニットの依存関係として追加されたことを警告してきますが、問題ありません。このユニットは、YubiKey が挿入されると開始されます。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス/アップグレード ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey NEO 用に OATH アプレットをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のステップは、ファームウェアバージョン &amp;lt;= 3.1.2 の NEO でのみ必要です。現在の世代の NEO (U2F 搭載) は OpenPGP アプレットがすでにインストールされています。}}&lt;br /&gt;
&lt;br /&gt;
==== NEO を CCID デバイスとして設定する ====&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-personalization-gui}} ({{AUR|yubikey-personalization-gui-git}}) を[[インストール]]。&lt;br /&gt;
# udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。&lt;br /&gt;
# {{ic|ykpersonalize -m82}} を実行し、{{ic|y}} を入力、エンターを押す。&lt;br /&gt;
&lt;br /&gt;
==== アプレットをインストールする ====&lt;br /&gt;
&lt;br /&gt;
# {{AUR|gpshell}}、{{AUR|gppcscconnectionplugin}}、{{AUR|globalplatform}}、{{Pkg|pcsclite}} を[[インストール]]。&lt;br /&gt;
# {{ic|pcscd.service}} を[[起動]]。&lt;br /&gt;
# 最も最近の CAP ファイルを [https://developers.yubico.com/ykneo-oath/Releases/ ykneo-oath] サイトからダウンロード。&lt;br /&gt;
# {{ic|gpinstall.txt}} を [https://github.com/Yubico/ykneo-oath/blob/master/gpinstall.txt GitHub] からダウンロード。&lt;br /&gt;
# gpinstall.txt を編集して {{ic|install -file}} から始まる行を CAP ファイルが置かれているパスに修正。&lt;br /&gt;
# ターミナルを開き、{{ic|gpshell &#039;&#039;path/to/gpinstall.txt&#039;&#039;}} を実行。&lt;br /&gt;
# 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;Command --&amp;gt; 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100&lt;br /&gt;
Wrapped command --&amp;gt; 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77&lt;br /&gt;
27D0EDA00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
Command --&amp;gt; 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000&lt;br /&gt;
Wrapped command --&amp;gt; 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
card_disconnect&lt;br /&gt;
release_context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# NEO を抜き、Yubico Authenticator アプリで試す。&lt;br /&gt;
&lt;br /&gt;
==== (任意)Yubico Authenticator デスクトップクライアントをインストールする ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|yubioath-desktop}} をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcscd.service}} が実行中の間に、{{ic|yubioath-desktop}} を実行して、プロンプトが表示されたら YubiKey を挿入してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が HID デバイスとして機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[https://github.com/systemd/systemd/commit/d45ee2f31a8358db0accde2e7c81777cedadc3c2 バージョン 244以降の systemd は]この機能に対するネイティブサポートを追加したので、以下のステップはもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
[https://michaelheap.com/yubikey-on-arch/ この記事]で説明されているように、udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-security-key.rules|2=&lt;br /&gt;
KERNEL==&amp;quot;hidraw*&amp;quot;, SUBSYSTEM==&amp;quot;hidraw&amp;quot;, MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;users&amp;quot;, ATTRS{idVendor}==&amp;quot;2581&amp;quot;, ATTRS{idProduct}==&amp;quot;f1d0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|udevadm trigger}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== ykman が YubiKey に接続できない ===&lt;br /&gt;
&lt;br /&gt;
マネージャが YubiKey への接続に失敗する場合、{{ic|pcscd.service}} か {{ic|pcscd.socket}} が起動していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions. ===&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|scdaemon}} がすでにデバイスの排他的な制御を取得している場合に {{ic|ykman}} がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[https://github.com/Yubico/yubikey-manager/issues/35]&lt;br /&gt;
&lt;br /&gt;
これを修正するには、{{ic|~/.gnupg/scdaemon.conf}} 内であなたのデバイスに対して {{ic|reader-port}} オプションを正しい値で設定することができます。[https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG]&lt;br /&gt;
&lt;br /&gt;
{{Note|これにより、ykman を通して YubiKey にアクセスするたびに gpgagent が YubiKey をアンロックするプロンプトを表示するようになります。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO と YubiKey 4 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubikey&lt;br /&gt;
&lt;br /&gt;
YubiKey 5 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubi&lt;br /&gt;
&lt;br /&gt;
=== YubiKey がゲスト VM 内でバインドできない ===&lt;br /&gt;
&lt;br /&gt;
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの [[dmesg]] からバスとポートの情報を手に入れる必要があります:&lt;br /&gt;
&lt;br /&gt;
 # dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E &#039;s/^\&amp;lt;nowiki&amp;gt;[[^]]&amp;lt;/nowiki&amp;gt;+\] usb (&amp;lt;nowiki&amp;gt;[^:]&amp;lt;/nowiki&amp;gt;*):.*/\1/&#039;&lt;br /&gt;
&lt;br /&gt;
出力の USB id は {{ic|X-Y.Z}} または {{ic|X-Y}} の形式であるはずです。そして、ホスト上で、{{ic|find}} を使って {{ic|/sys/bus/usb/drivers}} を検索し、YubiKey がバインドしているドライバを探します (例: {{ic|usbhid}} または {{ic|usbfs}})。&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/bus/usb/drivers -name &amp;quot;*X-Y.Z*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デバイスのバインドを解除するには、先のコマンドの出力を使ってください (つまり、{{ic|/sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/X-Y.Z:1.0}}):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;X-Y.Z:1.0&#039; &amp;gt; /sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/unbind&lt;br /&gt;
&lt;br /&gt;
=== Error: [key] could not be locally signed or gpg: No default secret key: No public key ===&lt;br /&gt;
&lt;br /&gt;
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、[[pacman-key|Pacman]] が {{ic|pacman-key --populate}} で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が Yubico Authenticator で消えたり現れたりする ===&lt;br /&gt;
&lt;br /&gt;
これは、CCID ドライバがインストールされていない際に起こります。{{Pkg|ccid}} パッケージを[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey core error: timeout ===&lt;br /&gt;
&lt;br /&gt;
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|YubiKey|2024-08-26|814790}}&lt;/div&gt;</summary>
		<author><name>田中</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40652</id>
		<title>YubiKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40652"/>
		<updated>2025-08-02T11:16:31Z</updated>

		<summary type="html">&lt;p&gt;田中: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OpenPGP]]&lt;br /&gt;
[[Category:スマートカード]]&lt;br /&gt;
[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:YubiKey]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related|OATH}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|KeePass}}&lt;br /&gt;
{{Related|OpenPGP-card-tools}}&lt;br /&gt;
{{Related|スマートカード}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.yubico.com YubiKey] は小さな [[Wikipedia:ja:セキュリティトークン|USB セキュリティトークン]]です。モデルにも依りますが、以下のようなことができます:&lt;br /&gt;
&lt;br /&gt;
* スマートカードのように振る舞う([[Wikipedia:CCID (protocol)|CCID protocol]] を使用) - [https://developers.yubico.com/PGP/ PGP] と [https://developers.yubico.com/PIV/ PIV] 秘密鍵の両方を保存できます。&lt;br /&gt;
* [[Universal 2nd Factor]] (U2F) リクエストを処理する。&lt;br /&gt;
* 約 30 個の[[オープン認証イニシアチブ]] (OATH) 資格情報を保存・クエリする。&lt;br /&gt;
* Yubico OTP モードか HMAC-SHA1 モードで[[Wikipedia:Challenge–response authentication|チャレンジレスポンス認証]]を処理する。&lt;br /&gt;
* [[Wikipedia:ja:ワンタイムパスワード|ワンタイムパスワード]] (OTP) を生成する - [https://developers.yubico.com/OTP/ Yubico&#039;s AES based standard]。&lt;br /&gt;
* 63 文字までの静的パスワードを&amp;quot;入力&amp;quot;する。&lt;br /&gt;
&lt;br /&gt;
YubiKeyに関連するアプリケーションやライブラリはオープンソースですが、YubiKeyそのもののファームウェアは[https://www.yubico.com/blog/secure-hardware-vs-open-source/ オープンソースではありません]。代替としては [[Solo]]、[[Tillitis TKey|TKey]]、[[Nitrokey]] があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 管理ツール ===&lt;br /&gt;
* {{App|YubiKey Manager|USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール({{ic|ykman}})。|https://developers.yubico.com/yubikey-manager/|{{Pkg|yubikey-manager}}}}&lt;br /&gt;
::{{Note|インストール後、{{ic|pcscd.service}} を[[有効化]]してください。}}&lt;br /&gt;
::{{Warning|YubiKey ManagerのGUIフロントエンドである{{AUR|yubikey-manager-qt}}は開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
::{{Warning|YubiKey Managerに代わるもうひとつの選択肢であった、{{Pkg|yubikey-personalization}}および{{Pkg|yubikey-personalization-gui}}も開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
&lt;br /&gt;
=== 認証ツール ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Yubico PAM|Yubico OTP または チャレンジレスポンス認証による [[PAM]] ユーザ認証。|https://developers.yubico.com/yubico-pam/|{{Pkg|yubico-pam}}}}&lt;br /&gt;
* {{App|Yubico PAM-U2F|[[U2F]] により [[PAM]] ユーザ認証。|https://developers.yubico.com/pam-u2f/|{{Pkg|pam-u2f}}}}&lt;br /&gt;
* {{App|Yubico Authenticator for Desktop|USB を通して YbiKey から OATH コードを読み込む GUI。古いスロットベースの実装 (YubiKey Standard と Edge) と新しい OATH 実装をサポート (YubiKey NEO と 4)。注: [https://gitlab.archlinux.org/archlinux/packaging/packages/yubioath-desktop/-/issues/2 archlinux/packaging/packages/yubioath-desktop]。&amp;lt;!-- TODO: issue テンプレートを使う --&amp;gt;|https://developers.yubico.com/OATH/YubiKey_OATH_software.html|{{Pkg|yubioath-desktop}}}}&lt;br /&gt;
* {{App|Yubico Authenticator 6.0+ for Desktop|Yubico Authenticator 6.0+ (バージョン 6.0 及びそれ以降) は、YubiKey の第二要素クレデンシャルを管理するためのアプリケーションです。バージョン 6.0 から、コードベースが Flutter フレームワークを使って完全に書き換えられました。|https://developers.yubico.com/yubioath-flutter/|{{AUR|yubico-authenticator-bin}}}}&lt;br /&gt;
* {{App|libfido2|クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。|https://developers.yubico.com/libfido2/|{{Pkg|libfido2}}}}&lt;br /&gt;
* {{App|YubiKey Full Disk Encryption|チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。|https://github.com/agherzan/yubikey-full-disk-encryption|{{Pkg|yubikey-full-disk-encryption}}}}&lt;br /&gt;
&lt;br /&gt;
== 入力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。&lt;br /&gt;
&lt;br /&gt;
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:&lt;br /&gt;
&lt;br /&gt;
* 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。&lt;br /&gt;
* 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。&lt;br /&gt;
* スマートカードを挿入/除去する。&lt;br /&gt;
&lt;br /&gt;
== 出力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は以下の入力を出力に変換します:&lt;br /&gt;
&lt;br /&gt;
* キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)&lt;br /&gt;
* 組み込みの LED は:&lt;br /&gt;
** 挿入した際に一度光ります。トラブルシューティングに便利です。&lt;br /&gt;
** API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。&lt;br /&gt;
* USB を通した API 応答。これは以下のように使用されます:&lt;br /&gt;
** チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)&lt;br /&gt;
** U2F チャレンジレスポンス認証&lt;br /&gt;
** CCID スマートカード関連のリクエスト&lt;br /&gt;
&lt;br /&gt;
== USB 接続モード ==&lt;br /&gt;
&lt;br /&gt;
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。&lt;br /&gt;
&lt;br /&gt;
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! プロトコル !! インターフェイス&lt;br /&gt;
|-&lt;br /&gt;
|OTP || Keyboard HID&lt;br /&gt;
|-&lt;br /&gt;
|FIDO || Other HID&lt;br /&gt;
|-&lt;br /&gt;
|PIV || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OpenPGP || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OATH || CCID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は &amp;quot;modes&amp;quot; という用語を使用します、OTP、FIDO、CCID と名付けられています。&lt;br /&gt;
&lt;br /&gt;
{{Note|ykman はリリース 0.6.1 (2018-04-16)で &amp;quot;U2F&amp;quot; を &amp;quot;FIDO&amp;quot; と名前を変更しました。https://developers.yubico.com/yubikey-manager/Release_Notes.html}}&lt;br /&gt;
&lt;br /&gt;
=== 有効になっているモードを取得 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 5 以前の YubiKey では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman config mode|&lt;br /&gt;
Current connection mode is: OTP+FIDO+CCID&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ykman mode}} というコマンドは非推奨となっており、今後削除されるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey バージョン 5 では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman info|&lt;br /&gt;
Device type: YubiKey 5 NFC&lt;br /&gt;
Serial number: XXXXXXXXX&lt;br /&gt;
Firmware version: 5.4.3&lt;br /&gt;
Form factor: Keychain (USB-A)&lt;br /&gt;
Enabled USB interfaces: OTP, FIDO, CCID&lt;br /&gt;
NFC transport is enabled.&lt;br /&gt;
&lt;br /&gt;
Applications    USB     NFC&lt;br /&gt;
FIDO2           Enabled Enabled&lt;br /&gt;
OTP             Enabled Enabled&lt;br /&gt;
FIDO U2F        Enabled Enabled&lt;br /&gt;
OATH            Enabled Enabled&lt;br /&gt;
YubiHSM Auth    Enabled Enabled&lt;br /&gt;
OpenPGP         Enabled Enabled&lt;br /&gt;
PIV             Enabled Enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== モードをセット ===&lt;br /&gt;
&lt;br /&gt;
すべてのモードが出荷時から有効化されています。変更するには:&lt;br /&gt;
&lt;br /&gt;
 $ ykman mode &#039;&#039;[OPTIONS]&#039;&#039; &#039;&#039;MODE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} には文字列を使用できます。例えば、{{ic|OTP+FIDO+CCID}}。短い形式もあります: {{ic|o+f+c}}。&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。&lt;br /&gt;
&lt;br /&gt;
以下にモード番号の表があります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||OTP device only.&lt;br /&gt;
|-&lt;br /&gt;
|1||CCID device only.&lt;br /&gt;
|-&lt;br /&gt;
|2||OTP/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|3||U2F device only.&lt;br /&gt;
|-&lt;br /&gt;
|4||OTP/U2F composite device.&lt;br /&gt;
|-&lt;br /&gt;
|5||U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|6||OTP/U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|81||CCID device only, with touch-eject.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の例では 86 という番号を使用しています。これは[https://github.com/Yubico/yubikey-manager/issues/20#issuecomment-326496204 無効な番号]です。80 は無視され、6 のように振る舞います。}}&lt;br /&gt;
&lt;br /&gt;
オプション:&lt;br /&gt;
* {{ic|--touch-eject}} - ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。&lt;br /&gt;
* {{ic|--autoeject-timeout &#039;&#039;SECONDS&#039;&#039;}} - 一定時間立つとスマートカードを自動的に除去します。{{ic|--touch-eject}} と同じような制限があります。&lt;br /&gt;
* {{ic|--chalresp-timeout &#039;&#039;SECONDS&#039;&#039;}} - チャレンジレスポンス認証のタイムアウトを設定します。&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman mode --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ワンタイムパスワード ==&lt;br /&gt;
&lt;br /&gt;
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。&lt;br /&gt;
&lt;br /&gt;
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち&#039;&#039;&#039;1つ&#039;&#039;&#039;を設定できます:&lt;br /&gt;
&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
* OATH-HOTP&lt;br /&gt;
* OATH-TOTP&lt;br /&gt;
* チャレンジレスポンス認証&lt;br /&gt;
* 静的パスワード&lt;br /&gt;
&lt;br /&gt;
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。{{ic|ykman otp swap}} により、スロット1とスロット2を入れ替えることはできます。&lt;br /&gt;
&lt;br /&gt;
=== 工場出荷時の設定 ===&lt;br /&gt;
&lt;br /&gt;
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|スロット1にある工場出荷時のキーを上書きしてしまうと、同じ信頼レベルの新しいキーを作成することはできなくなります。工場で生成された Yubico OTP 認証情報は {{ic|CC}} という接頭辞で始まります。一方、ユーザが生成した認証情報は {{ic|VV}} で始まります。セキュリティおよび機能的には基本的な違いはありませんが、一部のサービスは {{ic|CC}} の認証情報のみを信頼します。さらなる情報はこの[https://forum.yubico.com/viewtopic12ca.html?f%3D16&amp;amp;t%3D1960 フォーラムスレッド]で見られます。}}&lt;br /&gt;
&lt;br /&gt;
=== Yubico OTP ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.yubico.com/OTP/ Yubico OTP] は[[Wikipedia:ja:共通鍵暗号|共通鍵暗号]]に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの [[Wikipedia:ja:Advanced_Encryption_Standard|AES]] 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。&lt;br /&gt;
&lt;br /&gt;
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。&lt;br /&gt;
&lt;br /&gt;
==== YubiCloud と検証サーバー ====&lt;br /&gt;
&lt;br /&gt;
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば) {{Pkg|yubico-pam}} によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーの[https://developers.yubico.com/Software_Projects/Yubico_OTP/YubiCloud_Validation_Servers/ オープンソースの実装]も提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Yubico の検証サーバーを認証する場合:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HMAC&#039;&#039;&#039; を使用: https://upgrade.yubico.com/getapikey/ から HMAC 鍵と ID を取得してください。&lt;br /&gt;
* &#039;&#039;&#039;HTTPS&#039;&#039;&#039; を使用: 検証サーバーの証明書は GoDaddy によって署名されています。Arch ではデフォルトで GoDaddy を信頼しています ({{Pkg|ca-certificates}} をインストールしていれば)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 設定と使用 ====&lt;br /&gt;
&lt;br /&gt;
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp yubiotp --generate-key --upload 2&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman otp yubiotp --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
==== セキュリティリスク ====&lt;br /&gt;
&lt;br /&gt;
===== AES 鍵の漏洩 =====&lt;br /&gt;
&lt;br /&gt;
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。&lt;br /&gt;
&lt;br /&gt;
===== 検証リクエスト/レスポンスの盗聴 =====&lt;br /&gt;
&lt;br /&gt;
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== チャレンジレスポンス認証 ===&lt;br /&gt;
&lt;br /&gt;
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。&lt;br /&gt;
&lt;br /&gt;
これは以下のように利用できます:&lt;br /&gt;
&lt;br /&gt;
* 真の二要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。&lt;br /&gt;
* 「準」二要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。&lt;br /&gt;
&lt;br /&gt;
2つのチャレンジレスポンス認証アルゴリズムがあります:&lt;br /&gt;
&lt;br /&gt;
* HMAC-SHA1&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|yubikey-personalization-gui}} を使って GUI で、あるいは以下の指示で設定できます。&lt;br /&gt;
&lt;br /&gt;
==== HMAC-SHA1 アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --generate 2&lt;br /&gt;
&lt;br /&gt;
キーを与えるための {{ic|--generate}} フラグは省略できます ({{ic|ykman otp chalresp --help}} を参照)。キーを与える主な利点は、バックアップ用の2つ目のデバイスをセットアップする際に使用できることです。例えば、{{ic|openssl rand -hex 20}} は適切な鍵を生成します。&lt;br /&gt;
&lt;br /&gt;
==== Yubico OTP アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、{{ic|ykpersonalize}} を使用できます。スロット2にランダムな鍵を生成してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykpersonalize -2 -ochal-resp -ochal-yubico&lt;br /&gt;
&lt;br /&gt;
さらなる情報は {{man|1|ykpersonalize}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== チャレンジを送信 ====&lt;br /&gt;
&lt;br /&gt;
チャレンジを送信してレスポンスを受信するには、{{ic|ykchalresp -&#039;&#039;slot&#039;&#039; &#039;&#039;challenge&#039;&#039;}} コマンドを使用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykchalresp -2 &#039;&#039;archie&#039;&#039;|&lt;br /&gt;
12a19763be77d75af46fb76f0b737c117fa47205&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このコマンドは、プログラム済みのスロット2のユニークな 40 バイトの SHA1 ハッシュ値を返します。チャレンジが異なると、異なるユニークなレスポンスが返されます。&lt;br /&gt;
&lt;br /&gt;
=== 静的パスワード ===&lt;br /&gt;
&lt;br /&gt;
静的パスワードも生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static --generate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、パスワードを与えることも:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static &#039;&#039;slot&#039;&#039; &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は {{ic|ykman otp static --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ほとんどの YubiKey では、静的パスワードを保存するためのスロットの数 (2個) は限られています。チャレンジレスポンス認証のスロットは、無制限のチャレンジに対して静的ハッシュ値のレスポンスを提供します。これらは数字と小文字アルファベットのみですが、レスポンスの長さによってかなりのエントロピーが生まれます。}}&lt;br /&gt;
&lt;br /&gt;
=== エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット({{ic|cbdefghijklnrtuv}})、数値 {{ic|0-9}}、{{ic|!}} に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。&lt;br /&gt;
&lt;br /&gt;
Yubico はこの問題に関する[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf 白書]を提供しています。&lt;br /&gt;
&lt;br /&gt;
== OATH ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は2つの [[OATH]] 実装を提供します:&lt;br /&gt;
; OATH API: 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)&lt;br /&gt;
; OTP slot: 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)&lt;br /&gt;
&lt;br /&gt;
=== OATH API ===&lt;br /&gt;
&lt;br /&gt;
GUI がお好みならば、{{Pkg|yubioath-desktop}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は、{{ic|ykman oath uri}} を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:&lt;br /&gt;
&lt;br /&gt;
 $ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri&lt;br /&gt;
&lt;br /&gt;
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --touch &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP 鍵をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --oath-type HOTP &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
認証情報を一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath list&lt;br /&gt;
&lt;br /&gt;
コードを生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath code &#039;&#039;query&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なサブコマンドをすべて見るには、{{ic|ykman oath --help}} を実行してください。それぞれのサブコマンドの情報を見るには、{{ic|ykman oath &#039;&#039;subcommand&#039;&#039; --help}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== OTP スロット実装 ===&lt;br /&gt;
&lt;br /&gt;
スロット2で HOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp hotp 2 &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --totp &#039;&#039;slot&#039;&#039; &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate --totp &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman otp --help}} と https://developers.yubico.com/OATH/ も参照してください。&lt;br /&gt;
&lt;br /&gt;
== U2F ==&lt;br /&gt;
&lt;br /&gt;
YubiKey を用いた [[Universal 2nd Factor]] (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは &#039;FIDO&#039; とも呼ばれていることに注意してください。{{ic|ykman}} ユーティリティを通じていくつかの限定された管理オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* PIN を設定:  {{ic|ykman fido access change-pin}}&lt;br /&gt;
* 個別の資格情報を削除: {{ic|ykman fido credentials delete &#039;&#039;QUERY&#039;&#039;}}&lt;br /&gt;
* すべての資格情報と PIN をリセット: {{ic|ykman fido reset}}&lt;br /&gt;
&lt;br /&gt;
U2F を認証に使用するには、[[U2F]] の指示を見てください。&lt;br /&gt;
&lt;br /&gt;
[[WebAuthn]] も参照。&lt;br /&gt;
&lt;br /&gt;
== CCID スマートカード ==&lt;br /&gt;
&lt;br /&gt;
CCID (Chip Card Interface Device) は、スマートカードリーダーとして振る舞う USB デバイスによって使用されたり、YubiKey のように USB を通して直接接続するセキュリティトークンで使用されたりする USB 標準デバイスクラスです。HID (Human Interface Device) と CCID は両方とも USB デバイスクラスです。つまり、これらは USB 仕様の同じカテゴリに属すということです。HID は、キーボードなどのようなコンピュータ周辺機器のための仕様です。YubiKey は、OTP モードと FIDO モードで使用されたときは USB (HID) キーボードのように働きます。しかし、PIV アプリケーションを使用する時や OpenPGP デバイスとして使用する時は CCID プロトコルに切り替わります。&lt;br /&gt;
&lt;br /&gt;
CCID モードは 2015 年11以降に出荷された YubiKey のすべてでデフォルトで有効になっているはずです[https://www.yubico.com/support/knowledge-base/categories/articles/use-yubikey-yubikey-windows-hello-app/]。少なくとも CCID モードは有効化してください。[[#有効になっているモードを取得]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PIV ===&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO 以降から、YubiKey はチップ上に PIV (Personal Identity Verification) アプリケーションが含まれています。PIV は、RSA や ECC(楕円曲線暗号) を使用するトークンが個人電子証明書にどのように使用されるかを定めた米国政府規格(FIPS 201)です。YubiKey NEO は RSA 暗号のみをサポートしますが、その後のモデル(YubiKey 4 と 5)は RSA と ECC の両方をサポートします。PIV トークンの特徴は、秘密鍵を保護しオンチップで動作するように構築されているという点です。秘密鍵は、トークン上にインストールされた後は決してトークン外に出ることはありません。オプションで、オンチップの乱数生成器を使って秘密鍵をオンチップで生成することもできます。秘密鍵がオンチップで生成された場合、秘密鍵はチップの外部で処理されることはなく、トークンから秘密鍵を復元する方法もありません。PIV メカニズムを使用する際は、YubiKey は CCID デバイスとして機能します。&lt;br /&gt;
&lt;br /&gt;
=== OpenPGP スマートカード ===&lt;br /&gt;
&lt;br /&gt;
YubiKey は標準の GPG スマートカードとしてとして振る舞うことができます; セットアップと使用法に関する説明は [[GnuPG#スマートカード]] セクションを見てください。Yubico は https://developers.yubico.com/PGP/ でドキュメントも提供しています。&lt;br /&gt;
&lt;br /&gt;
他の機能(U2F と OTP)を使用したくない場合、ボタンはキーを挿入/除去するように設定でき、自動除去のタイムアウトも設定できます。詳細は [[#USB 接続モード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザ PIN は {{ic|123456}} で、デフォルトの admin PIN は {{ic|12345678}} です。デフォルトの PUK も {{ic|12345678}} です。覚えておきましょう。&lt;br /&gt;
&lt;br /&gt;
== 使用例 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、様々な認証の目的での YubiKey の使用法について説明しています。しかし、以下は使用法について完全に網羅されたリストではありません。&lt;br /&gt;
&lt;br /&gt;
=== LUKS による完全なディスク暗号化 ===&lt;br /&gt;
&lt;br /&gt;
複数の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;チャレンジレスポンス認証:&#039;&#039;&#039; とあるチャレンジに対する[[#チャレンジレスポンス認証|レスポンス]]が LUKS 鍵として使用されます。チャレンジは、真の二要素認証においてはパスワードとして機能し、一要素認証においてはチャレンジは平文で保存することができます。&lt;br /&gt;
* &#039;&#039;&#039;GnuPG:&#039;&#039;&#039; YubiKey の [[#CCID スマートカード|PGP スマートカード]]の機能を使用します。長いパスフレーズ無しで強力な二要素認証を提供します。&lt;br /&gt;
* &#039;&#039;&#039;FIDO HMAC Secret:&#039;&#039;&#039; あなたの YubiKey が [[U2F]] をサポートしているのであれば、共通鍵を返すように設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスクの暗号化の強度は、使用している鍵のうち最も弱いものの強さと同じです。上記のツールの内一つを設定したら、初期のパスフレーズを削除するか、より長いものに置き換えることを検討してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 共通の前提条件 ====&lt;br /&gt;
&lt;br /&gt;
* [[dm-crypt/システム全体の暗号化|LUKS により暗号化された]]起動可能なシステム。少なくとも1つの空きキースロットがあり、{{ic|encrypt}} [[mkinitcpio]] フックを使用していること。&lt;br /&gt;
** {{AUR|mkinitcpio-ykfde}} を例外として、{{ic|sd-encrypt}} はこれらのツールの全てでサポートされていません。&lt;br /&gt;
* LUKS ヘッダーのバックアップ(任意ですが、推奨)&lt;br /&gt;
&lt;br /&gt;
==== チャレンジレスポンス認証 ====&lt;br /&gt;
&lt;br /&gt;
完全な手順については {{Pkg|yubikey-full-disk-encryption}} の [https://github.com/agherzan/yubikey-full-disk-encryption#usage 公式ドキュメント] を見てください。大まかには:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-full-disk-encryption}} をインストール。&lt;br /&gt;
# {{ic|/etc/ykfde.conf}} を設定。&lt;br /&gt;
# 対象のディスクを登録: {{ic|# ykfde-enroll -d /dev/&#039;&#039;DISK&#039;&#039; -s &#039;&#039;LUKS_SLOT&#039;&#039;}}&lt;br /&gt;
# {{ic|ykfde}} [[mkinitcpio#HOOKS|mkinitcpio フック]] を {{ic|encrypt}} フックの前に追加。&lt;br /&gt;
# [[Initramfs の再生成]]&lt;br /&gt;
&lt;br /&gt;
:{{Note|Plymouth ユーザーは、{{ic|plymouth-encrypt}} フックを {{ic|ykfde}} フックに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
いくつかの利用可能なバリエーションがあります:&lt;br /&gt;
&lt;br /&gt;
* 2FA: デフォルトの挙動。対象デバイスの登録時、および起動時にパスワードとしてチャレンジを与えなければなりません。&lt;br /&gt;
* 1FA: {{ic|ykfde.conf}} に {{ic|YKFDE_CHALLENGE}} を設定してください。これは平文で保存されることに注意してください。このファイルに対する非ルートユーザの読み込みアクセスを禁止することを検討してください。&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-nfc-support-in-ykfde-initramfs-hook-experimental NFC サポート] (実験的)&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-ykfde-suspend-service-experimental サスペンドと復帰のサポート] (実験的) サスペンド時に、暗号化されたボリュームが自動的にロックされます。復帰時に自動でアンロックします。&lt;br /&gt;
&lt;br /&gt;
設定の変更を行った時は、変更を反映させるために initramfs の再生成を行わなければなりません。&lt;br /&gt;
&lt;br /&gt;
==== systemd ベースの initramfs ====&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックのユーザは {{AUR|mkinitcpio-ykfde}} か {{AUR|mkinitcpio-ykfde-git}} をインストールし、[https://github.com/eworm-de/mkinitcpio-ykfde/blob/master/README-mkinitcpio.md プロジェクトのドキュメント]にある手順に従ってください。手順は、大まかに言えば {{Pkg|yubikey-full-disk-encryption}} に似ています。&lt;br /&gt;
&lt;br /&gt;
==== GnuPG 暗号化キーファイル ====&lt;br /&gt;
&lt;br /&gt;
これを行うためのツールの一つは [https://github.com/fuhry/initramfs-scencrypt initramfs-scencrypt] です。完全な手順についてはドキュメントを見てください。2022年10月以降、このパッケージは、GitHub で PKGBUILD が提供されていますが、AUR に存在せず、徹底的にテストもされていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/特記事項#GPG や OpenSSL で暗号化されたキーファイルを使う|Dm-crypt のページ]]ではいくつかの代替策が提示されています。しかし、それらの殆どがフォーラムの古い投稿へのリンクです。&lt;br /&gt;
&lt;br /&gt;
==== FIDO2 プロトコルの HMAC secret extension ====&lt;br /&gt;
&lt;br /&gt;
YubiKey を完全ディスク暗号化に使うもう一つの方法は、[https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#sctn-hmac-secret-extension HMAC Secret Extension] を使用して、YubiKey から LUKS のパスワードを取得することです。これはパスフレーズによって保護することができます。この機能には、少なくとも[https://support.yubico.com/hc/en-us/articles/360016649319-YubiKey-5-2-3-Enhancements-to-FIDO-2-Support ファームウェア 5.2.3+ のYubiKey 5] が必要です。&lt;br /&gt;
パスフレーズによる保護の方法では、{{AUR|khefin}} をインストールし、[https://github.com/mjec/khefin/wiki/Arch-Linux-LUKS-configuration プロジェクトのドキュメント]にある手順に従ってください。&lt;br /&gt;
systemd 248 以降での(任意で PIN による保護が施された)1要素による方法では、FIDO2 キーを LUKS2 キースロットとして使用できます。手順は[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html 作者のブログ投稿]で見られます。&lt;br /&gt;
&lt;br /&gt;
=== KeePass ===&lt;br /&gt;
&lt;br /&gt;
[[KeePass]] は YubiKey をサポートするように設定できます。手順は [[KeePass#Yubikey|YubiKey セクション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== SSH 鍵 ===&lt;br /&gt;
&lt;br /&gt;
==== CCID ====&lt;br /&gt;
&lt;br /&gt;
あなたの YubiKey が CCID スマートカードをサポートしているのであれば、GPG 鍵や PIV 鍵のどちらかをベースとしてハードウェアによる [[SSH 鍵]] として使用することができます。Yubico は品質の良いドキュメントを提供しています:&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html PGP と PIV の両方の可能性から見た概要]、それらの利点と欠点を挙げています。&lt;br /&gt;
* [https://developers.yubico.com/PGP/SSH_authentication/index.html PGP 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html ユーザ証明書による PIV 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html #PKCS11 による PIV 認証]のための手順&lt;br /&gt;
&lt;br /&gt;
:{{Note|YubiKey 上の PIV アプリケーションデフォルトの PIN コードは {{ic|123456}} です。デフォルトの管理キーと一緒に PIN コードも変更しておくべきでしょう。詳細は [https://developers.yubico.com/PIV/Guides/Device_setup.html デバイスセットアップの手順] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== U2F ====&lt;br /&gt;
&lt;br /&gt;
YubiKey の U2F の機能を使用してハードウェアによる SSH 鍵を作成することもできます。手順は [[SSH 鍵#FIDO/U2F]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== PIV ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|yubikey-agent}} は SSH 鍵 を PIV トークンとして保存します。セットアップガイドは https://github.com/FiloSottile/yubikey-agent#readme を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PAM を用いた Linux ユーザ認証 ===&lt;br /&gt;
&lt;br /&gt;
ユーザ認証のために [[PAM]] を使用するすべてのものは、ユーザ認証のプロセスの一つの要素として YubiKey を使用するように設定できます。これには sudo、su、ssh、スクリーンロッカー、ディスプレイマネージャー、そして Linux システムがユーザを認証する必要のあるほぼすべての場面を含みます。その柔軟な設定により、システム全体や特定のアプリケーション、あるいはアプリケーションのグループに対して、あなたのニーズに合う認証要件を自由に設定することができます。例えば、ローカルセッションではパスワードの代わりとして YubiKey を受け入れ、リモートのセッションでは両方を要求することができます。これがどのように機能し、どのように設定するのかを理解するために、Arch Wiki の記事に加えて、{{man|8|pam}} や {{man|5|pam.conf}} を読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
YubiKey がサポートするプロトコルを PAM に統合するのに利用できるモジュールが複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|pam-u2f}} - FIDO2 規格による [[#U2F]] をサポート。どの手法を使うべきかわからない場合、これが良い選択です。&lt;br /&gt;
** [[Universal 2nd Factor#Arch Linux の認証|Arch Wiki の記事]]&lt;br /&gt;
** [https://developers.yubico.com/pam-u2f/ Yubico の公式ドキュメント]、サポートされるモジュールパラメータのリストがあります。&lt;br /&gt;
** Man ページ: {{man|8|pam_u2f}}、{{man|1|pamu2fcfg}}&lt;br /&gt;
* {{Pkg|oath-toolkit}} - [[#OATH]] ワンタイムパスワードをサポート(HOTP か TOTP)。&lt;br /&gt;
** [[pam_oath]]&lt;br /&gt;
* {{Pkg|yubico-pam}} - [[#Yubico OTP]] と チャレンジレスポンス認証 OTP をサポート。Yubico OTP モードでは認証サーバーへのネットワーク接続が必要であることに注意してください。チャレンジレスポンス認証では必要ありません。&lt;br /&gt;
** [https://developers.yubico.com/yubico-pam/ Yubico の公式ドキュメント]&lt;br /&gt;
** {{man|8|pam_yubico}} - チャレンジレスポンス認証モードを設定するのに使用される {{ic|mode}} パラメータに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|PAM の設定ファイルを変更する際には厳重な注意が必要です。間違うと、システムが完全に安全ではなくなったり、安全すぎて認証できなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
PAM の設定はこの記事の範囲を超えますが、簡単な概要としては:&lt;br /&gt;
&lt;br /&gt;
* 認証されたキーを含むファイルをホームディレクトリ内か一元的に作成する。&lt;br /&gt;
* 適切な PAM 設定ファイルの適切な場所に、以下のフォーマットに従う行を追加する:&lt;br /&gt;
    auth [required|sufficient] [module_name].so [module arguments]&lt;br /&gt;
* 多要素認証には {{ic|auth required}}、単一要素認証には {{ic|auth sufficient}}。&lt;br /&gt;
* {{ic|module_name}} - 例: {{ic|pam_u2f.so}}。インストールされているモジュールのリストを見てください: {{ic|ls /usr/lib/security }}&lt;br /&gt;
* モジュールの設定引数は、キーファイルの場所や、認証するためにどの手法をモジュールが使用すべきかなどです。&lt;br /&gt;
&lt;br /&gt;
==== SSH における注意事項 ====&lt;br /&gt;
&lt;br /&gt;
* Yubico は[https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html 追加のガイダンス]を公開しています。これは Ubuntu の古いバージョン向けですが、アップデートされている Arch システムにも適用できます。&lt;br /&gt;
* 遠隔地にあるサーバを YubiKey を使用するように設定する場合、追加で少なくとも一つの緊急用 SSH セッションを開いておくべきです。こうすれば、設定ミスにより締め出されないで済みます。&lt;br /&gt;
* {{ic|/etc/ssh/sshd_config}} に以下の設定が含まれていることを確認してください。{{Pkg|openssh}} に同梱されている {{ic|sshd_config}} はデフォルトでこれらが正しく設定されています。&lt;br /&gt;
    ChallengeResponseAuthentication no&lt;br /&gt;
    UsePAM yes&lt;br /&gt;
&lt;br /&gt;
=== ブラウザ/web 統合 ===&lt;br /&gt;
&lt;br /&gt;
多くのウェブサービスが FIDO ハードウェアトークンをサポートし始めています。詳細は [[U2F]] や [[WebAuthn]] のページを見てください。しかし、通常、するべきことといえば {{Pkg|libfido2}} をインストールして [https://demo.yubico.com/webauthn-technical/registration 試してみる]ことくらいです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey デバイスの挿入/除去時にアクションを実行する ===&lt;br /&gt;
&lt;br /&gt;
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成し、以下の内容を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;, ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, RUN+=&amp;quot;&#039;&#039;/usr/local/bin/script args&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを &amp;quot;remove&amp;quot; ではなく &amp;quot;add&amp;quot; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 挿入時に Yubico Authenticator を開始する ===&lt;br /&gt;
&lt;br /&gt;
Authenticator は長時間実行される GUI プロセスです。Udev ルール内で直接実行すると、プロセスが udev の処理をブロックしてしまいます。フォークすると、イベント処理の終了後に udev は無条件で (フォークによって生成された) プロセスをキルしてしまいます。なので、authenticator を udev ルールから開始することはできません。しかし、systemd.device を使うことができます。&lt;br /&gt;
&lt;br /&gt;
上記と同じように、{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成して、以下の内容を書き込んでください:&lt;br /&gt;
&lt;br /&gt;
 ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, SYMLINK+=&amp;quot;yubikey&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして、新しい systemd [[ユーザーユニット]]を[[作成]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/yubioath-desktop.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Autostart Yubico Authenticator&lt;br /&gt;
# Uncomment if you want to stop the authenticator when unplugged.&lt;br /&gt;
#StopPropagatedFrom=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/yubioath-desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、このユニットを[[有効化]]してください。&#039;&#039;systemctl&#039;&#039; が、このユニットが存在しない {{ic|dev-yubikey.device}} ユニットの依存関係として追加されたことを警告してきますが、問題ありません。このユニットは、YubiKey が挿入されると開始されます。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス/アップグレード ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey NEO 用に OATH アプレットをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のステップは、ファームウェアバージョン &amp;lt;= 3.1.2 の NEO でのみ必要です。現在の世代の NEO (U2F 搭載) は OpenPGP アプレットがすでにインストールされています。}}&lt;br /&gt;
&lt;br /&gt;
==== NEO を CCID デバイスとして設定する ====&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-personalization-gui}} ({{AUR|yubikey-personalization-gui-git}}) を[[インストール]]。&lt;br /&gt;
# udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。&lt;br /&gt;
# {{ic|ykpersonalize -m82}} を実行し、{{ic|y}} を入力、エンターを押す。&lt;br /&gt;
&lt;br /&gt;
==== アプレットをインストールする ====&lt;br /&gt;
&lt;br /&gt;
# {{AUR|gpshell}}、{{AUR|gppcscconnectionplugin}}、{{AUR|globalplatform}}、{{Pkg|pcsclite}} を[[インストール]]。&lt;br /&gt;
# {{ic|pcscd.service}} を[[起動]]。&lt;br /&gt;
# 最も最近の CAP ファイルを [https://developers.yubico.com/ykneo-oath/Releases/ ykneo-oath] サイトからダウンロード。&lt;br /&gt;
# {{ic|gpinstall.txt}} を [https://github.com/Yubico/ykneo-oath/blob/master/gpinstall.txt GitHub] からダウンロード。&lt;br /&gt;
# gpinstall.txt を編集して {{ic|install -file}} から始まる行を CAP ファイルが置かれているパスに修正。&lt;br /&gt;
# ターミナルを開き、{{ic|gpshell &#039;&#039;path/to/gpinstall.txt&#039;&#039;}} を実行。&lt;br /&gt;
# 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;Command --&amp;gt; 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100&lt;br /&gt;
Wrapped command --&amp;gt; 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77&lt;br /&gt;
27D0EDA00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
Command --&amp;gt; 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000&lt;br /&gt;
Wrapped command --&amp;gt; 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
card_disconnect&lt;br /&gt;
release_context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# NEO を抜き、Yubico Authenticator アプリで試す。&lt;br /&gt;
&lt;br /&gt;
==== (任意)Yubico Authenticator デスクトップクライアントをインストールする ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|yubioath-desktop}} をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcscd.service}} が実行中の間に、{{ic|yubioath-desktop}} を実行して、プロンプトが表示されたら YubiKey を挿入してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が HID デバイスとして機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[https://github.com/systemd/systemd/commit/d45ee2f31a8358db0accde2e7c81777cedadc3c2 バージョン 244以降の systemd は]この機能に対するネイティブサポートを追加したので、以下のステップはもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
[https://michaelheap.com/yubikey-on-arch/ この記事]で説明されているように、udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-security-key.rules|2=&lt;br /&gt;
KERNEL==&amp;quot;hidraw*&amp;quot;, SUBSYSTEM==&amp;quot;hidraw&amp;quot;, MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;users&amp;quot;, ATTRS{idVendor}==&amp;quot;2581&amp;quot;, ATTRS{idProduct}==&amp;quot;f1d0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|udevadm trigger}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== ykman が YubiKey に接続できない ===&lt;br /&gt;
&lt;br /&gt;
マネージャが YubiKey への接続に失敗する場合、{{ic|pcscd.service}} か {{ic|pcscd.socket}} が起動していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions. ===&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|scdaemon}} がすでにデバイスの排他的な制御を取得している場合に {{ic|ykman}} がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[https://github.com/Yubico/yubikey-manager/issues/35]&lt;br /&gt;
&lt;br /&gt;
これを修正するには、{{ic|~/.gnupg/scdaemon.conf}} 内であなたのデバイスに対して {{ic|reader-port}} オプションを正しい値で設定することができます。[https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG]&lt;br /&gt;
&lt;br /&gt;
{{Note|これにより、ykman を通して YubiKey にアクセスするたびに gpgagent が YubiKey をアンロックするプロンプトを表示するようになります。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO と YubiKey 4 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubikey&lt;br /&gt;
&lt;br /&gt;
YubiKey 5 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubi&lt;br /&gt;
&lt;br /&gt;
=== YubiKey がゲスト VM 内でバインドできない ===&lt;br /&gt;
&lt;br /&gt;
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの [[dmesg]] からバスとポートの情報を手に入れる必要があります:&lt;br /&gt;
&lt;br /&gt;
 # dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E &#039;s/^\&amp;lt;nowiki&amp;gt;[[^]]&amp;lt;/nowiki&amp;gt;+\] usb (&amp;lt;nowiki&amp;gt;[^:]&amp;lt;/nowiki&amp;gt;*):.*/\1/&#039;&lt;br /&gt;
&lt;br /&gt;
出力の USB id は {{ic|X-Y.Z}} または {{ic|X-Y}} の形式であるはずです。そして、ホスト上で、{{ic|find}} を使って {{ic|/sys/bus/usb/drivers}} を検索し、YubiKey がバインドしているドライバを探します (例: {{ic|usbhid}} または {{ic|usbfs}})。&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/bus/usb/drivers -name &amp;quot;*X-Y.Z*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デバイスのバインドを解除するには、先のコマンドの出力を使ってください (つまり、{{ic|/sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/X-Y.Z:1.0}}):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;X-Y.Z:1.0&#039; &amp;gt; /sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/unbind&lt;br /&gt;
&lt;br /&gt;
=== Error: [key] could not be locally signed or gpg: No default secret key: No public key ===&lt;br /&gt;
&lt;br /&gt;
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、[[pacman-key|Pacman]] が {{ic|pacman-key --populate}} で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が Yubico Authenticator で消えたり現れたりする ===&lt;br /&gt;
&lt;br /&gt;
これは、CCID ドライバがインストールされていない際に起こります。{{Pkg|ccid}} パッケージを[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey core error: timeout ===&lt;br /&gt;
&lt;br /&gt;
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|YubiKey|2024-08-26|814790}}&lt;/div&gt;</summary>
		<author><name>田中</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40651</id>
		<title>YubiKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40651"/>
		<updated>2025-08-02T11:13:34Z</updated>

		<summary type="html">&lt;p&gt;田中: /* 管理ツール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OpenPGP]]&lt;br /&gt;
[[Category:スマートカード]]&lt;br /&gt;
[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:YubiKey]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related|OATH}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|KeePass}}&lt;br /&gt;
{{Related|OpenPGP-card-tools}}&lt;br /&gt;
{{Related|スマートカード}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.yubico.com YubiKey] は小さな [[Wikipedia:ja:セキュリティトークン|USB セキュリティトークン]]です。モデルにも依りますが、以下のようなことができます:&lt;br /&gt;
&lt;br /&gt;
* スマートカードのように振る舞う([[Wikipedia:CCID (protocol)|CCID protocol]] を使用) - [https://developers.yubico.com/PGP/ PGP] と [https://developers.yubico.com/PIV/ PIV] 秘密鍵の両方を保存できます。&lt;br /&gt;
* [[Universal 2nd Factor]] (U2F) リクエストを処理する。&lt;br /&gt;
* 約 30 個の[[オープン認証イニシアチブ]] (OATH) 資格情報を保存・クエリする。&lt;br /&gt;
* Yubico OTP モードか HMAC-SHA1 モードで[[Wikipedia:Challenge–response authentication|チャレンジレスポンス認証]]を処理する。&lt;br /&gt;
* [[Wikipedia:ja:ワンタイムパスワード|ワンタイムパスワード]] (OTP) を生成する - [https://developers.yubico.com/OTP/ Yubico&#039;s AES based standard]。&lt;br /&gt;
* 63 文字までの静的パスワードを&amp;quot;入力&amp;quot;する。&lt;br /&gt;
&lt;br /&gt;
多くの機能を提供する一方、YubiKey の新しいバージョンは[https://www.yubico.com/blog/secure-hardware-vs-open-source/ オープンソースとしてリリースされていません]。代替としては [[Solo]]、[[Tillitis TKey|TKey]]、[[Nitrokey]] があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 管理ツール ===&lt;br /&gt;
* {{App|YubiKey Manager|USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール({{ic|ykman}})。|https://developers.yubico.com/yubikey-manager/|{{Pkg|yubikey-manager}}}}&lt;br /&gt;
::{{Note|インストール後、{{ic|pcscd.service}} を[[有効化]]してください。}}&lt;br /&gt;
::{{Warning|YubiKey ManagerのGUIフロントエンドである{{AUR|yubikey-manager-qt}}は開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
::{{Warning|YubiKey Managerに代わるもうひとつの選択肢であった、{{Pkg|yubikey-personalization}}および{{Pkg|yubikey-personalization-gui}}も開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
&lt;br /&gt;
=== 認証ツール ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Yubico PAM|Yubico OTP または チャレンジレスポンス認証による [[PAM]] ユーザ認証。|https://developers.yubico.com/yubico-pam/|{{Pkg|yubico-pam}}}}&lt;br /&gt;
* {{App|Yubico PAM-U2F|[[U2F]] により [[PAM]] ユーザ認証。|https://developers.yubico.com/pam-u2f/|{{Pkg|pam-u2f}}}}&lt;br /&gt;
* {{App|Yubico Authenticator for Desktop|USB を通して YbiKey から OATH コードを読み込む GUI。古いスロットベースの実装 (YubiKey Standard と Edge) と新しい OATH 実装をサポート (YubiKey NEO と 4)。注: [https://gitlab.archlinux.org/archlinux/packaging/packages/yubioath-desktop/-/issues/2 archlinux/packaging/packages/yubioath-desktop]。&amp;lt;!-- TODO: issue テンプレートを使う --&amp;gt;|https://developers.yubico.com/OATH/YubiKey_OATH_software.html|{{Pkg|yubioath-desktop}}}}&lt;br /&gt;
* {{App|Yubico Authenticator 6.0+ for Desktop|Yubico Authenticator 6.0+ (バージョン 6.0 及びそれ以降) は、YubiKey の第二要素クレデンシャルを管理するためのアプリケーションです。バージョン 6.0 から、コードベースが Flutter フレームワークを使って完全に書き換えられました。|https://developers.yubico.com/yubioath-flutter/|{{AUR|yubico-authenticator-bin}}}}&lt;br /&gt;
* {{App|libfido2|クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。|https://developers.yubico.com/libfido2/|{{Pkg|libfido2}}}}&lt;br /&gt;
* {{App|YubiKey Full Disk Encryption|チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。|https://github.com/agherzan/yubikey-full-disk-encryption|{{Pkg|yubikey-full-disk-encryption}}}}&lt;br /&gt;
&lt;br /&gt;
== 入力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。&lt;br /&gt;
&lt;br /&gt;
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:&lt;br /&gt;
&lt;br /&gt;
* 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。&lt;br /&gt;
* 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。&lt;br /&gt;
* スマートカードを挿入/除去する。&lt;br /&gt;
&lt;br /&gt;
== 出力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は以下の入力を出力に変換します:&lt;br /&gt;
&lt;br /&gt;
* キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)&lt;br /&gt;
* 組み込みの LED は:&lt;br /&gt;
** 挿入した際に一度光ります。トラブルシューティングに便利です。&lt;br /&gt;
** API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。&lt;br /&gt;
* USB を通した API 応答。これは以下のように使用されます:&lt;br /&gt;
** チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)&lt;br /&gt;
** U2F チャレンジレスポンス認証&lt;br /&gt;
** CCID スマートカード関連のリクエスト&lt;br /&gt;
&lt;br /&gt;
== USB 接続モード ==&lt;br /&gt;
&lt;br /&gt;
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。&lt;br /&gt;
&lt;br /&gt;
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! プロトコル !! インターフェイス&lt;br /&gt;
|-&lt;br /&gt;
|OTP || Keyboard HID&lt;br /&gt;
|-&lt;br /&gt;
|FIDO || Other HID&lt;br /&gt;
|-&lt;br /&gt;
|PIV || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OpenPGP || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OATH || CCID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は &amp;quot;modes&amp;quot; という用語を使用します、OTP、FIDO、CCID と名付けられています。&lt;br /&gt;
&lt;br /&gt;
{{Note|ykman はリリース 0.6.1 (2018-04-16)で &amp;quot;U2F&amp;quot; を &amp;quot;FIDO&amp;quot; と名前を変更しました。https://developers.yubico.com/yubikey-manager/Release_Notes.html}}&lt;br /&gt;
&lt;br /&gt;
=== 有効になっているモードを取得 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 5 以前の YubiKey では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman config mode|&lt;br /&gt;
Current connection mode is: OTP+FIDO+CCID&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ykman mode}} というコマンドは非推奨となっており、今後削除されるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey バージョン 5 では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman info|&lt;br /&gt;
Device type: YubiKey 5 NFC&lt;br /&gt;
Serial number: XXXXXXXXX&lt;br /&gt;
Firmware version: 5.4.3&lt;br /&gt;
Form factor: Keychain (USB-A)&lt;br /&gt;
Enabled USB interfaces: OTP, FIDO, CCID&lt;br /&gt;
NFC transport is enabled.&lt;br /&gt;
&lt;br /&gt;
Applications    USB     NFC&lt;br /&gt;
FIDO2           Enabled Enabled&lt;br /&gt;
OTP             Enabled Enabled&lt;br /&gt;
FIDO U2F        Enabled Enabled&lt;br /&gt;
OATH            Enabled Enabled&lt;br /&gt;
YubiHSM Auth    Enabled Enabled&lt;br /&gt;
OpenPGP         Enabled Enabled&lt;br /&gt;
PIV             Enabled Enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== モードをセット ===&lt;br /&gt;
&lt;br /&gt;
すべてのモードが出荷時から有効化されています。変更するには:&lt;br /&gt;
&lt;br /&gt;
 $ ykman mode &#039;&#039;[OPTIONS]&#039;&#039; &#039;&#039;MODE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} には文字列を使用できます。例えば、{{ic|OTP+FIDO+CCID}}。短い形式もあります: {{ic|o+f+c}}。&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。&lt;br /&gt;
&lt;br /&gt;
以下にモード番号の表があります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||OTP device only.&lt;br /&gt;
|-&lt;br /&gt;
|1||CCID device only.&lt;br /&gt;
|-&lt;br /&gt;
|2||OTP/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|3||U2F device only.&lt;br /&gt;
|-&lt;br /&gt;
|4||OTP/U2F composite device.&lt;br /&gt;
|-&lt;br /&gt;
|5||U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|6||OTP/U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|81||CCID device only, with touch-eject.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の例では 86 という番号を使用しています。これは[https://github.com/Yubico/yubikey-manager/issues/20#issuecomment-326496204 無効な番号]です。80 は無視され、6 のように振る舞います。}}&lt;br /&gt;
&lt;br /&gt;
オプション:&lt;br /&gt;
* {{ic|--touch-eject}} - ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。&lt;br /&gt;
* {{ic|--autoeject-timeout &#039;&#039;SECONDS&#039;&#039;}} - 一定時間立つとスマートカードを自動的に除去します。{{ic|--touch-eject}} と同じような制限があります。&lt;br /&gt;
* {{ic|--chalresp-timeout &#039;&#039;SECONDS&#039;&#039;}} - チャレンジレスポンス認証のタイムアウトを設定します。&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman mode --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ワンタイムパスワード ==&lt;br /&gt;
&lt;br /&gt;
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。&lt;br /&gt;
&lt;br /&gt;
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち&#039;&#039;&#039;1つ&#039;&#039;&#039;を設定できます:&lt;br /&gt;
&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
* OATH-HOTP&lt;br /&gt;
* OATH-TOTP&lt;br /&gt;
* チャレンジレスポンス認証&lt;br /&gt;
* 静的パスワード&lt;br /&gt;
&lt;br /&gt;
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。{{ic|ykman otp swap}} により、スロット1とスロット2を入れ替えることはできます。&lt;br /&gt;
&lt;br /&gt;
=== 工場出荷時の設定 ===&lt;br /&gt;
&lt;br /&gt;
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|スロット1にある工場出荷時のキーを上書きしてしまうと、同じ信頼レベルの新しいキーを作成することはできなくなります。工場で生成された Yubico OTP 認証情報は {{ic|CC}} という接頭辞で始まります。一方、ユーザが生成した認証情報は {{ic|VV}} で始まります。セキュリティおよび機能的には基本的な違いはありませんが、一部のサービスは {{ic|CC}} の認証情報のみを信頼します。さらなる情報はこの[https://forum.yubico.com/viewtopic12ca.html?f%3D16&amp;amp;t%3D1960 フォーラムスレッド]で見られます。}}&lt;br /&gt;
&lt;br /&gt;
=== Yubico OTP ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.yubico.com/OTP/ Yubico OTP] は[[Wikipedia:ja:共通鍵暗号|共通鍵暗号]]に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの [[Wikipedia:ja:Advanced_Encryption_Standard|AES]] 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。&lt;br /&gt;
&lt;br /&gt;
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。&lt;br /&gt;
&lt;br /&gt;
==== YubiCloud と検証サーバー ====&lt;br /&gt;
&lt;br /&gt;
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば) {{Pkg|yubico-pam}} によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーの[https://developers.yubico.com/Software_Projects/Yubico_OTP/YubiCloud_Validation_Servers/ オープンソースの実装]も提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Yubico の検証サーバーを認証する場合:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HMAC&#039;&#039;&#039; を使用: https://upgrade.yubico.com/getapikey/ から HMAC 鍵と ID を取得してください。&lt;br /&gt;
* &#039;&#039;&#039;HTTPS&#039;&#039;&#039; を使用: 検証サーバーの証明書は GoDaddy によって署名されています。Arch ではデフォルトで GoDaddy を信頼しています ({{Pkg|ca-certificates}} をインストールしていれば)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 設定と使用 ====&lt;br /&gt;
&lt;br /&gt;
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp yubiotp --generate-key --upload 2&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman otp yubiotp --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
==== セキュリティリスク ====&lt;br /&gt;
&lt;br /&gt;
===== AES 鍵の漏洩 =====&lt;br /&gt;
&lt;br /&gt;
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。&lt;br /&gt;
&lt;br /&gt;
===== 検証リクエスト/レスポンスの盗聴 =====&lt;br /&gt;
&lt;br /&gt;
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== チャレンジレスポンス認証 ===&lt;br /&gt;
&lt;br /&gt;
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。&lt;br /&gt;
&lt;br /&gt;
これは以下のように利用できます:&lt;br /&gt;
&lt;br /&gt;
* 真の二要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。&lt;br /&gt;
* 「準」二要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。&lt;br /&gt;
&lt;br /&gt;
2つのチャレンジレスポンス認証アルゴリズムがあります:&lt;br /&gt;
&lt;br /&gt;
* HMAC-SHA1&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|yubikey-personalization-gui}} を使って GUI で、あるいは以下の指示で設定できます。&lt;br /&gt;
&lt;br /&gt;
==== HMAC-SHA1 アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --generate 2&lt;br /&gt;
&lt;br /&gt;
キーを与えるための {{ic|--generate}} フラグは省略できます ({{ic|ykman otp chalresp --help}} を参照)。キーを与える主な利点は、バックアップ用の2つ目のデバイスをセットアップする際に使用できることです。例えば、{{ic|openssl rand -hex 20}} は適切な鍵を生成します。&lt;br /&gt;
&lt;br /&gt;
==== Yubico OTP アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、{{ic|ykpersonalize}} を使用できます。スロット2にランダムな鍵を生成してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykpersonalize -2 -ochal-resp -ochal-yubico&lt;br /&gt;
&lt;br /&gt;
さらなる情報は {{man|1|ykpersonalize}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== チャレンジを送信 ====&lt;br /&gt;
&lt;br /&gt;
チャレンジを送信してレスポンスを受信するには、{{ic|ykchalresp -&#039;&#039;slot&#039;&#039; &#039;&#039;challenge&#039;&#039;}} コマンドを使用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykchalresp -2 &#039;&#039;archie&#039;&#039;|&lt;br /&gt;
12a19763be77d75af46fb76f0b737c117fa47205&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このコマンドは、プログラム済みのスロット2のユニークな 40 バイトの SHA1 ハッシュ値を返します。チャレンジが異なると、異なるユニークなレスポンスが返されます。&lt;br /&gt;
&lt;br /&gt;
=== 静的パスワード ===&lt;br /&gt;
&lt;br /&gt;
静的パスワードも生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static --generate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、パスワードを与えることも:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static &#039;&#039;slot&#039;&#039; &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は {{ic|ykman otp static --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ほとんどの YubiKey では、静的パスワードを保存するためのスロットの数 (2個) は限られています。チャレンジレスポンス認証のスロットは、無制限のチャレンジに対して静的ハッシュ値のレスポンスを提供します。これらは数字と小文字アルファベットのみですが、レスポンスの長さによってかなりのエントロピーが生まれます。}}&lt;br /&gt;
&lt;br /&gt;
=== エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット({{ic|cbdefghijklnrtuv}})、数値 {{ic|0-9}}、{{ic|!}} に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。&lt;br /&gt;
&lt;br /&gt;
Yubico はこの問題に関する[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf 白書]を提供しています。&lt;br /&gt;
&lt;br /&gt;
== OATH ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は2つの [[OATH]] 実装を提供します:&lt;br /&gt;
; OATH API: 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)&lt;br /&gt;
; OTP slot: 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)&lt;br /&gt;
&lt;br /&gt;
=== OATH API ===&lt;br /&gt;
&lt;br /&gt;
GUI がお好みならば、{{Pkg|yubioath-desktop}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は、{{ic|ykman oath uri}} を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:&lt;br /&gt;
&lt;br /&gt;
 $ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri&lt;br /&gt;
&lt;br /&gt;
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --touch &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP 鍵をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --oath-type HOTP &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
認証情報を一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath list&lt;br /&gt;
&lt;br /&gt;
コードを生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath code &#039;&#039;query&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なサブコマンドをすべて見るには、{{ic|ykman oath --help}} を実行してください。それぞれのサブコマンドの情報を見るには、{{ic|ykman oath &#039;&#039;subcommand&#039;&#039; --help}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== OTP スロット実装 ===&lt;br /&gt;
&lt;br /&gt;
スロット2で HOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp hotp 2 &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --totp &#039;&#039;slot&#039;&#039; &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate --totp &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman otp --help}} と https://developers.yubico.com/OATH/ も参照してください。&lt;br /&gt;
&lt;br /&gt;
== U2F ==&lt;br /&gt;
&lt;br /&gt;
YubiKey を用いた [[Universal 2nd Factor]] (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは &#039;FIDO&#039; とも呼ばれていることに注意してください。{{ic|ykman}} ユーティリティを通じていくつかの限定された管理オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* PIN を設定:  {{ic|ykman fido access change-pin}}&lt;br /&gt;
* 個別の資格情報を削除: {{ic|ykman fido credentials delete &#039;&#039;QUERY&#039;&#039;}}&lt;br /&gt;
* すべての資格情報と PIN をリセット: {{ic|ykman fido reset}}&lt;br /&gt;
&lt;br /&gt;
U2F を認証に使用するには、[[U2F]] の指示を見てください。&lt;br /&gt;
&lt;br /&gt;
[[WebAuthn]] も参照。&lt;br /&gt;
&lt;br /&gt;
== CCID スマートカード ==&lt;br /&gt;
&lt;br /&gt;
CCID (Chip Card Interface Device) は、スマートカードリーダーとして振る舞う USB デバイスによって使用されたり、YubiKey のように USB を通して直接接続するセキュリティトークンで使用されたりする USB 標準デバイスクラスです。HID (Human Interface Device) と CCID は両方とも USB デバイスクラスです。つまり、これらは USB 仕様の同じカテゴリに属すということです。HID は、キーボードなどのようなコンピュータ周辺機器のための仕様です。YubiKey は、OTP モードと FIDO モードで使用されたときは USB (HID) キーボードのように働きます。しかし、PIV アプリケーションを使用する時や OpenPGP デバイスとして使用する時は CCID プロトコルに切り替わります。&lt;br /&gt;
&lt;br /&gt;
CCID モードは 2015 年11以降に出荷された YubiKey のすべてでデフォルトで有効になっているはずです[https://www.yubico.com/support/knowledge-base/categories/articles/use-yubikey-yubikey-windows-hello-app/]。少なくとも CCID モードは有効化してください。[[#有効になっているモードを取得]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PIV ===&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO 以降から、YubiKey はチップ上に PIV (Personal Identity Verification) アプリケーションが含まれています。PIV は、RSA や ECC(楕円曲線暗号) を使用するトークンが個人電子証明書にどのように使用されるかを定めた米国政府規格(FIPS 201)です。YubiKey NEO は RSA 暗号のみをサポートしますが、その後のモデル(YubiKey 4 と 5)は RSA と ECC の両方をサポートします。PIV トークンの特徴は、秘密鍵を保護しオンチップで動作するように構築されているという点です。秘密鍵は、トークン上にインストールされた後は決してトークン外に出ることはありません。オプションで、オンチップの乱数生成器を使って秘密鍵をオンチップで生成することもできます。秘密鍵がオンチップで生成された場合、秘密鍵はチップの外部で処理されることはなく、トークンから秘密鍵を復元する方法もありません。PIV メカニズムを使用する際は、YubiKey は CCID デバイスとして機能します。&lt;br /&gt;
&lt;br /&gt;
=== OpenPGP スマートカード ===&lt;br /&gt;
&lt;br /&gt;
YubiKey は標準の GPG スマートカードとしてとして振る舞うことができます; セットアップと使用法に関する説明は [[GnuPG#スマートカード]] セクションを見てください。Yubico は https://developers.yubico.com/PGP/ でドキュメントも提供しています。&lt;br /&gt;
&lt;br /&gt;
他の機能(U2F と OTP)を使用したくない場合、ボタンはキーを挿入/除去するように設定でき、自動除去のタイムアウトも設定できます。詳細は [[#USB 接続モード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザ PIN は {{ic|123456}} で、デフォルトの admin PIN は {{ic|12345678}} です。デフォルトの PUK も {{ic|12345678}} です。覚えておきましょう。&lt;br /&gt;
&lt;br /&gt;
== 使用例 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、様々な認証の目的での YubiKey の使用法について説明しています。しかし、以下は使用法について完全に網羅されたリストではありません。&lt;br /&gt;
&lt;br /&gt;
=== LUKS による完全なディスク暗号化 ===&lt;br /&gt;
&lt;br /&gt;
複数の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;チャレンジレスポンス認証:&#039;&#039;&#039; とあるチャレンジに対する[[#チャレンジレスポンス認証|レスポンス]]が LUKS 鍵として使用されます。チャレンジは、真の二要素認証においてはパスワードとして機能し、一要素認証においてはチャレンジは平文で保存することができます。&lt;br /&gt;
* &#039;&#039;&#039;GnuPG:&#039;&#039;&#039; YubiKey の [[#CCID スマートカード|PGP スマートカード]]の機能を使用します。長いパスフレーズ無しで強力な二要素認証を提供します。&lt;br /&gt;
* &#039;&#039;&#039;FIDO HMAC Secret:&#039;&#039;&#039; あなたの YubiKey が [[U2F]] をサポートしているのであれば、共通鍵を返すように設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスクの暗号化の強度は、使用している鍵のうち最も弱いものの強さと同じです。上記のツールの内一つを設定したら、初期のパスフレーズを削除するか、より長いものに置き換えることを検討してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 共通の前提条件 ====&lt;br /&gt;
&lt;br /&gt;
* [[dm-crypt/システム全体の暗号化|LUKS により暗号化された]]起動可能なシステム。少なくとも1つの空きキースロットがあり、{{ic|encrypt}} [[mkinitcpio]] フックを使用していること。&lt;br /&gt;
** {{AUR|mkinitcpio-ykfde}} を例外として、{{ic|sd-encrypt}} はこれらのツールの全てでサポートされていません。&lt;br /&gt;
* LUKS ヘッダーのバックアップ(任意ですが、推奨)&lt;br /&gt;
&lt;br /&gt;
==== チャレンジレスポンス認証 ====&lt;br /&gt;
&lt;br /&gt;
完全な手順については {{Pkg|yubikey-full-disk-encryption}} の [https://github.com/agherzan/yubikey-full-disk-encryption#usage 公式ドキュメント] を見てください。大まかには:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-full-disk-encryption}} をインストール。&lt;br /&gt;
# {{ic|/etc/ykfde.conf}} を設定。&lt;br /&gt;
# 対象のディスクを登録: {{ic|# ykfde-enroll -d /dev/&#039;&#039;DISK&#039;&#039; -s &#039;&#039;LUKS_SLOT&#039;&#039;}}&lt;br /&gt;
# {{ic|ykfde}} [[mkinitcpio#HOOKS|mkinitcpio フック]] を {{ic|encrypt}} フックの前に追加。&lt;br /&gt;
# [[Initramfs の再生成]]&lt;br /&gt;
&lt;br /&gt;
:{{Note|Plymouth ユーザーは、{{ic|plymouth-encrypt}} フックを {{ic|ykfde}} フックに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
いくつかの利用可能なバリエーションがあります:&lt;br /&gt;
&lt;br /&gt;
* 2FA: デフォルトの挙動。対象デバイスの登録時、および起動時にパスワードとしてチャレンジを与えなければなりません。&lt;br /&gt;
* 1FA: {{ic|ykfde.conf}} に {{ic|YKFDE_CHALLENGE}} を設定してください。これは平文で保存されることに注意してください。このファイルに対する非ルートユーザの読み込みアクセスを禁止することを検討してください。&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-nfc-support-in-ykfde-initramfs-hook-experimental NFC サポート] (実験的)&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-ykfde-suspend-service-experimental サスペンドと復帰のサポート] (実験的) サスペンド時に、暗号化されたボリュームが自動的にロックされます。復帰時に自動でアンロックします。&lt;br /&gt;
&lt;br /&gt;
設定の変更を行った時は、変更を反映させるために initramfs の再生成を行わなければなりません。&lt;br /&gt;
&lt;br /&gt;
==== systemd ベースの initramfs ====&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックのユーザは {{AUR|mkinitcpio-ykfde}} か {{AUR|mkinitcpio-ykfde-git}} をインストールし、[https://github.com/eworm-de/mkinitcpio-ykfde/blob/master/README-mkinitcpio.md プロジェクトのドキュメント]にある手順に従ってください。手順は、大まかに言えば {{Pkg|yubikey-full-disk-encryption}} に似ています。&lt;br /&gt;
&lt;br /&gt;
==== GnuPG 暗号化キーファイル ====&lt;br /&gt;
&lt;br /&gt;
これを行うためのツールの一つは [https://github.com/fuhry/initramfs-scencrypt initramfs-scencrypt] です。完全な手順についてはドキュメントを見てください。2022年10月以降、このパッケージは、GitHub で PKGBUILD が提供されていますが、AUR に存在せず、徹底的にテストもされていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/特記事項#GPG や OpenSSL で暗号化されたキーファイルを使う|Dm-crypt のページ]]ではいくつかの代替策が提示されています。しかし、それらの殆どがフォーラムの古い投稿へのリンクです。&lt;br /&gt;
&lt;br /&gt;
==== FIDO2 プロトコルの HMAC secret extension ====&lt;br /&gt;
&lt;br /&gt;
YubiKey を完全ディスク暗号化に使うもう一つの方法は、[https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#sctn-hmac-secret-extension HMAC Secret Extension] を使用して、YubiKey から LUKS のパスワードを取得することです。これはパスフレーズによって保護することができます。この機能には、少なくとも[https://support.yubico.com/hc/en-us/articles/360016649319-YubiKey-5-2-3-Enhancements-to-FIDO-2-Support ファームウェア 5.2.3+ のYubiKey 5] が必要です。&lt;br /&gt;
パスフレーズによる保護の方法では、{{AUR|khefin}} をインストールし、[https://github.com/mjec/khefin/wiki/Arch-Linux-LUKS-configuration プロジェクトのドキュメント]にある手順に従ってください。&lt;br /&gt;
systemd 248 以降での(任意で PIN による保護が施された)1要素による方法では、FIDO2 キーを LUKS2 キースロットとして使用できます。手順は[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html 作者のブログ投稿]で見られます。&lt;br /&gt;
&lt;br /&gt;
=== KeePass ===&lt;br /&gt;
&lt;br /&gt;
[[KeePass]] は YubiKey をサポートするように設定できます。手順は [[KeePass#Yubikey|YubiKey セクション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== SSH 鍵 ===&lt;br /&gt;
&lt;br /&gt;
==== CCID ====&lt;br /&gt;
&lt;br /&gt;
あなたの YubiKey が CCID スマートカードをサポートしているのであれば、GPG 鍵や PIV 鍵のどちらかをベースとしてハードウェアによる [[SSH 鍵]] として使用することができます。Yubico は品質の良いドキュメントを提供しています:&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html PGP と PIV の両方の可能性から見た概要]、それらの利点と欠点を挙げています。&lt;br /&gt;
* [https://developers.yubico.com/PGP/SSH_authentication/index.html PGP 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html ユーザ証明書による PIV 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html #PKCS11 による PIV 認証]のための手順&lt;br /&gt;
&lt;br /&gt;
:{{Note|YubiKey 上の PIV アプリケーションデフォルトの PIN コードは {{ic|123456}} です。デフォルトの管理キーと一緒に PIN コードも変更しておくべきでしょう。詳細は [https://developers.yubico.com/PIV/Guides/Device_setup.html デバイスセットアップの手順] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== U2F ====&lt;br /&gt;
&lt;br /&gt;
YubiKey の U2F の機能を使用してハードウェアによる SSH 鍵を作成することもできます。手順は [[SSH 鍵#FIDO/U2F]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== PIV ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|yubikey-agent}} は SSH 鍵 を PIV トークンとして保存します。セットアップガイドは https://github.com/FiloSottile/yubikey-agent#readme を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PAM を用いた Linux ユーザ認証 ===&lt;br /&gt;
&lt;br /&gt;
ユーザ認証のために [[PAM]] を使用するすべてのものは、ユーザ認証のプロセスの一つの要素として YubiKey を使用するように設定できます。これには sudo、su、ssh、スクリーンロッカー、ディスプレイマネージャー、そして Linux システムがユーザを認証する必要のあるほぼすべての場面を含みます。その柔軟な設定により、システム全体や特定のアプリケーション、あるいはアプリケーションのグループに対して、あなたのニーズに合う認証要件を自由に設定することができます。例えば、ローカルセッションではパスワードの代わりとして YubiKey を受け入れ、リモートのセッションでは両方を要求することができます。これがどのように機能し、どのように設定するのかを理解するために、Arch Wiki の記事に加えて、{{man|8|pam}} や {{man|5|pam.conf}} を読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
YubiKey がサポートするプロトコルを PAM に統合するのに利用できるモジュールが複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|pam-u2f}} - FIDO2 規格による [[#U2F]] をサポート。どの手法を使うべきかわからない場合、これが良い選択です。&lt;br /&gt;
** [[Universal 2nd Factor#Arch Linux の認証|Arch Wiki の記事]]&lt;br /&gt;
** [https://developers.yubico.com/pam-u2f/ Yubico の公式ドキュメント]、サポートされるモジュールパラメータのリストがあります。&lt;br /&gt;
** Man ページ: {{man|8|pam_u2f}}、{{man|1|pamu2fcfg}}&lt;br /&gt;
* {{Pkg|oath-toolkit}} - [[#OATH]] ワンタイムパスワードをサポート(HOTP か TOTP)。&lt;br /&gt;
** [[pam_oath]]&lt;br /&gt;
* {{Pkg|yubico-pam}} - [[#Yubico OTP]] と チャレンジレスポンス認証 OTP をサポート。Yubico OTP モードでは認証サーバーへのネットワーク接続が必要であることに注意してください。チャレンジレスポンス認証では必要ありません。&lt;br /&gt;
** [https://developers.yubico.com/yubico-pam/ Yubico の公式ドキュメント]&lt;br /&gt;
** {{man|8|pam_yubico}} - チャレンジレスポンス認証モードを設定するのに使用される {{ic|mode}} パラメータに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|PAM の設定ファイルを変更する際には厳重な注意が必要です。間違うと、システムが完全に安全ではなくなったり、安全すぎて認証できなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
PAM の設定はこの記事の範囲を超えますが、簡単な概要としては:&lt;br /&gt;
&lt;br /&gt;
* 認証されたキーを含むファイルをホームディレクトリ内か一元的に作成する。&lt;br /&gt;
* 適切な PAM 設定ファイルの適切な場所に、以下のフォーマットに従う行を追加する:&lt;br /&gt;
    auth [required|sufficient] [module_name].so [module arguments]&lt;br /&gt;
* 多要素認証には {{ic|auth required}}、単一要素認証には {{ic|auth sufficient}}。&lt;br /&gt;
* {{ic|module_name}} - 例: {{ic|pam_u2f.so}}。インストールされているモジュールのリストを見てください: {{ic|ls /usr/lib/security }}&lt;br /&gt;
* モジュールの設定引数は、キーファイルの場所や、認証するためにどの手法をモジュールが使用すべきかなどです。&lt;br /&gt;
&lt;br /&gt;
==== SSH における注意事項 ====&lt;br /&gt;
&lt;br /&gt;
* Yubico は[https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html 追加のガイダンス]を公開しています。これは Ubuntu の古いバージョン向けですが、アップデートされている Arch システムにも適用できます。&lt;br /&gt;
* 遠隔地にあるサーバを YubiKey を使用するように設定する場合、追加で少なくとも一つの緊急用 SSH セッションを開いておくべきです。こうすれば、設定ミスにより締め出されないで済みます。&lt;br /&gt;
* {{ic|/etc/ssh/sshd_config}} に以下の設定が含まれていることを確認してください。{{Pkg|openssh}} に同梱されている {{ic|sshd_config}} はデフォルトでこれらが正しく設定されています。&lt;br /&gt;
    ChallengeResponseAuthentication no&lt;br /&gt;
    UsePAM yes&lt;br /&gt;
&lt;br /&gt;
=== ブラウザ/web 統合 ===&lt;br /&gt;
&lt;br /&gt;
多くのウェブサービスが FIDO ハードウェアトークンをサポートし始めています。詳細は [[U2F]] や [[WebAuthn]] のページを見てください。しかし、通常、するべきことといえば {{Pkg|libfido2}} をインストールして [https://demo.yubico.com/webauthn-technical/registration 試してみる]ことくらいです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey デバイスの挿入/除去時にアクションを実行する ===&lt;br /&gt;
&lt;br /&gt;
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成し、以下の内容を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;, ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, RUN+=&amp;quot;&#039;&#039;/usr/local/bin/script args&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを &amp;quot;remove&amp;quot; ではなく &amp;quot;add&amp;quot; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 挿入時に Yubico Authenticator を開始する ===&lt;br /&gt;
&lt;br /&gt;
Authenticator は長時間実行される GUI プロセスです。Udev ルール内で直接実行すると、プロセスが udev の処理をブロックしてしまいます。フォークすると、イベント処理の終了後に udev は無条件で (フォークによって生成された) プロセスをキルしてしまいます。なので、authenticator を udev ルールから開始することはできません。しかし、systemd.device を使うことができます。&lt;br /&gt;
&lt;br /&gt;
上記と同じように、{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成して、以下の内容を書き込んでください:&lt;br /&gt;
&lt;br /&gt;
 ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, SYMLINK+=&amp;quot;yubikey&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして、新しい systemd [[ユーザーユニット]]を[[作成]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/yubioath-desktop.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Autostart Yubico Authenticator&lt;br /&gt;
# Uncomment if you want to stop the authenticator when unplugged.&lt;br /&gt;
#StopPropagatedFrom=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/yubioath-desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、このユニットを[[有効化]]してください。&#039;&#039;systemctl&#039;&#039; が、このユニットが存在しない {{ic|dev-yubikey.device}} ユニットの依存関係として追加されたことを警告してきますが、問題ありません。このユニットは、YubiKey が挿入されると開始されます。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス/アップグレード ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey NEO 用に OATH アプレットをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のステップは、ファームウェアバージョン &amp;lt;= 3.1.2 の NEO でのみ必要です。現在の世代の NEO (U2F 搭載) は OpenPGP アプレットがすでにインストールされています。}}&lt;br /&gt;
&lt;br /&gt;
==== NEO を CCID デバイスとして設定する ====&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-personalization-gui}} ({{AUR|yubikey-personalization-gui-git}}) を[[インストール]]。&lt;br /&gt;
# udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。&lt;br /&gt;
# {{ic|ykpersonalize -m82}} を実行し、{{ic|y}} を入力、エンターを押す。&lt;br /&gt;
&lt;br /&gt;
==== アプレットをインストールする ====&lt;br /&gt;
&lt;br /&gt;
# {{AUR|gpshell}}、{{AUR|gppcscconnectionplugin}}、{{AUR|globalplatform}}、{{Pkg|pcsclite}} を[[インストール]]。&lt;br /&gt;
# {{ic|pcscd.service}} を[[起動]]。&lt;br /&gt;
# 最も最近の CAP ファイルを [https://developers.yubico.com/ykneo-oath/Releases/ ykneo-oath] サイトからダウンロード。&lt;br /&gt;
# {{ic|gpinstall.txt}} を [https://github.com/Yubico/ykneo-oath/blob/master/gpinstall.txt GitHub] からダウンロード。&lt;br /&gt;
# gpinstall.txt を編集して {{ic|install -file}} から始まる行を CAP ファイルが置かれているパスに修正。&lt;br /&gt;
# ターミナルを開き、{{ic|gpshell &#039;&#039;path/to/gpinstall.txt&#039;&#039;}} を実行。&lt;br /&gt;
# 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;Command --&amp;gt; 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100&lt;br /&gt;
Wrapped command --&amp;gt; 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77&lt;br /&gt;
27D0EDA00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
Command --&amp;gt; 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000&lt;br /&gt;
Wrapped command --&amp;gt; 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
card_disconnect&lt;br /&gt;
release_context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# NEO を抜き、Yubico Authenticator アプリで試す。&lt;br /&gt;
&lt;br /&gt;
==== (任意)Yubico Authenticator デスクトップクライアントをインストールする ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|yubioath-desktop}} をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcscd.service}} が実行中の間に、{{ic|yubioath-desktop}} を実行して、プロンプトが表示されたら YubiKey を挿入してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が HID デバイスとして機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[https://github.com/systemd/systemd/commit/d45ee2f31a8358db0accde2e7c81777cedadc3c2 バージョン 244以降の systemd は]この機能に対するネイティブサポートを追加したので、以下のステップはもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
[https://michaelheap.com/yubikey-on-arch/ この記事]で説明されているように、udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-security-key.rules|2=&lt;br /&gt;
KERNEL==&amp;quot;hidraw*&amp;quot;, SUBSYSTEM==&amp;quot;hidraw&amp;quot;, MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;users&amp;quot;, ATTRS{idVendor}==&amp;quot;2581&amp;quot;, ATTRS{idProduct}==&amp;quot;f1d0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|udevadm trigger}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== ykman が YubiKey に接続できない ===&lt;br /&gt;
&lt;br /&gt;
マネージャが YubiKey への接続に失敗する場合、{{ic|pcscd.service}} か {{ic|pcscd.socket}} が起動していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions. ===&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|scdaemon}} がすでにデバイスの排他的な制御を取得している場合に {{ic|ykman}} がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[https://github.com/Yubico/yubikey-manager/issues/35]&lt;br /&gt;
&lt;br /&gt;
これを修正するには、{{ic|~/.gnupg/scdaemon.conf}} 内であなたのデバイスに対して {{ic|reader-port}} オプションを正しい値で設定することができます。[https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG]&lt;br /&gt;
&lt;br /&gt;
{{Note|これにより、ykman を通して YubiKey にアクセスするたびに gpgagent が YubiKey をアンロックするプロンプトを表示するようになります。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO と YubiKey 4 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubikey&lt;br /&gt;
&lt;br /&gt;
YubiKey 5 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubi&lt;br /&gt;
&lt;br /&gt;
=== YubiKey がゲスト VM 内でバインドできない ===&lt;br /&gt;
&lt;br /&gt;
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの [[dmesg]] からバスとポートの情報を手に入れる必要があります:&lt;br /&gt;
&lt;br /&gt;
 # dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E &#039;s/^\&amp;lt;nowiki&amp;gt;[[^]]&amp;lt;/nowiki&amp;gt;+\] usb (&amp;lt;nowiki&amp;gt;[^:]&amp;lt;/nowiki&amp;gt;*):.*/\1/&#039;&lt;br /&gt;
&lt;br /&gt;
出力の USB id は {{ic|X-Y.Z}} または {{ic|X-Y}} の形式であるはずです。そして、ホスト上で、{{ic|find}} を使って {{ic|/sys/bus/usb/drivers}} を検索し、YubiKey がバインドしているドライバを探します (例: {{ic|usbhid}} または {{ic|usbfs}})。&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/bus/usb/drivers -name &amp;quot;*X-Y.Z*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デバイスのバインドを解除するには、先のコマンドの出力を使ってください (つまり、{{ic|/sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/X-Y.Z:1.0}}):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;X-Y.Z:1.0&#039; &amp;gt; /sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/unbind&lt;br /&gt;
&lt;br /&gt;
=== Error: [key] could not be locally signed or gpg: No default secret key: No public key ===&lt;br /&gt;
&lt;br /&gt;
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、[[pacman-key|Pacman]] が {{ic|pacman-key --populate}} で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が Yubico Authenticator で消えたり現れたりする ===&lt;br /&gt;
&lt;br /&gt;
これは、CCID ドライバがインストールされていない際に起こります。{{Pkg|ccid}} パッケージを[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey core error: timeout ===&lt;br /&gt;
&lt;br /&gt;
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|YubiKey|2024-08-26|814790}}&lt;/div&gt;</summary>
		<author><name>田中</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40650</id>
		<title>YubiKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40650"/>
		<updated>2025-08-02T11:13:25Z</updated>

		<summary type="html">&lt;p&gt;田中: /* 管理ツール */ 使うべきでないプログラムの警告を追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OpenPGP]]&lt;br /&gt;
[[Category:スマートカード]]&lt;br /&gt;
[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:YubiKey]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related|OATH}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|KeePass}}&lt;br /&gt;
{{Related|OpenPGP-card-tools}}&lt;br /&gt;
{{Related|スマートカード}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.yubico.com YubiKey] は小さな [[Wikipedia:ja:セキュリティトークン|USB セキュリティトークン]]です。モデルにも依りますが、以下のようなことができます:&lt;br /&gt;
&lt;br /&gt;
* スマートカードのように振る舞う([[Wikipedia:CCID (protocol)|CCID protocol]] を使用) - [https://developers.yubico.com/PGP/ PGP] と [https://developers.yubico.com/PIV/ PIV] 秘密鍵の両方を保存できます。&lt;br /&gt;
* [[Universal 2nd Factor]] (U2F) リクエストを処理する。&lt;br /&gt;
* 約 30 個の[[オープン認証イニシアチブ]] (OATH) 資格情報を保存・クエリする。&lt;br /&gt;
* Yubico OTP モードか HMAC-SHA1 モードで[[Wikipedia:Challenge–response authentication|チャレンジレスポンス認証]]を処理する。&lt;br /&gt;
* [[Wikipedia:ja:ワンタイムパスワード|ワンタイムパスワード]] (OTP) を生成する - [https://developers.yubico.com/OTP/ Yubico&#039;s AES based standard]。&lt;br /&gt;
* 63 文字までの静的パスワードを&amp;quot;入力&amp;quot;する。&lt;br /&gt;
&lt;br /&gt;
多くの機能を提供する一方、YubiKey の新しいバージョンは[https://www.yubico.com/blog/secure-hardware-vs-open-source/ オープンソースとしてリリースされていません]。代替としては [[Solo]]、[[Tillitis TKey|TKey]]、[[Nitrokey]] があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 管理ツール ===&lt;br /&gt;
* {{App|YubiKey Manager|USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール({{ic|ykman}})。|https://developers.yubico.com/yubikey-manager/|{{Pkg|yubikey-manager}}}}&lt;br /&gt;
::{{Note|インストール後、{{ic|pcscd.service}} を[[有効化]]してください。}}&lt;br /&gt;
::{{Warning|YubiKey ManagerのGUIフロントエンドである{{AUR|yubikey-manager-qt}}は開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
::{{Warning|YubiKey Managerに代わるもうひとつの選択肢であった、{{Pkg|yubikey-personalization}},および{{Pkg|yubikey-personalization-gui}}も開発が終了しており、使用は推奨されません。}}&lt;br /&gt;
&lt;br /&gt;
=== 認証ツール ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Yubico PAM|Yubico OTP または チャレンジレスポンス認証による [[PAM]] ユーザ認証。|https://developers.yubico.com/yubico-pam/|{{Pkg|yubico-pam}}}}&lt;br /&gt;
* {{App|Yubico PAM-U2F|[[U2F]] により [[PAM]] ユーザ認証。|https://developers.yubico.com/pam-u2f/|{{Pkg|pam-u2f}}}}&lt;br /&gt;
* {{App|Yubico Authenticator for Desktop|USB を通して YbiKey から OATH コードを読み込む GUI。古いスロットベースの実装 (YubiKey Standard と Edge) と新しい OATH 実装をサポート (YubiKey NEO と 4)。注: [https://gitlab.archlinux.org/archlinux/packaging/packages/yubioath-desktop/-/issues/2 archlinux/packaging/packages/yubioath-desktop]。&amp;lt;!-- TODO: issue テンプレートを使う --&amp;gt;|https://developers.yubico.com/OATH/YubiKey_OATH_software.html|{{Pkg|yubioath-desktop}}}}&lt;br /&gt;
* {{App|Yubico Authenticator 6.0+ for Desktop|Yubico Authenticator 6.0+ (バージョン 6.0 及びそれ以降) は、YubiKey の第二要素クレデンシャルを管理するためのアプリケーションです。バージョン 6.0 から、コードベースが Flutter フレームワークを使って完全に書き換えられました。|https://developers.yubico.com/yubioath-flutter/|{{AUR|yubico-authenticator-bin}}}}&lt;br /&gt;
* {{App|libfido2|クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。|https://developers.yubico.com/libfido2/|{{Pkg|libfido2}}}}&lt;br /&gt;
* {{App|YubiKey Full Disk Encryption|チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。|https://github.com/agherzan/yubikey-full-disk-encryption|{{Pkg|yubikey-full-disk-encryption}}}}&lt;br /&gt;
&lt;br /&gt;
== 入力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。&lt;br /&gt;
&lt;br /&gt;
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:&lt;br /&gt;
&lt;br /&gt;
* 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。&lt;br /&gt;
* 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。&lt;br /&gt;
* スマートカードを挿入/除去する。&lt;br /&gt;
&lt;br /&gt;
== 出力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は以下の入力を出力に変換します:&lt;br /&gt;
&lt;br /&gt;
* キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)&lt;br /&gt;
* 組み込みの LED は:&lt;br /&gt;
** 挿入した際に一度光ります。トラブルシューティングに便利です。&lt;br /&gt;
** API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。&lt;br /&gt;
* USB を通した API 応答。これは以下のように使用されます:&lt;br /&gt;
** チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)&lt;br /&gt;
** U2F チャレンジレスポンス認証&lt;br /&gt;
** CCID スマートカード関連のリクエスト&lt;br /&gt;
&lt;br /&gt;
== USB 接続モード ==&lt;br /&gt;
&lt;br /&gt;
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。&lt;br /&gt;
&lt;br /&gt;
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! プロトコル !! インターフェイス&lt;br /&gt;
|-&lt;br /&gt;
|OTP || Keyboard HID&lt;br /&gt;
|-&lt;br /&gt;
|FIDO || Other HID&lt;br /&gt;
|-&lt;br /&gt;
|PIV || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OpenPGP || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OATH || CCID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は &amp;quot;modes&amp;quot; という用語を使用します、OTP、FIDO、CCID と名付けられています。&lt;br /&gt;
&lt;br /&gt;
{{Note|ykman はリリース 0.6.1 (2018-04-16)で &amp;quot;U2F&amp;quot; を &amp;quot;FIDO&amp;quot; と名前を変更しました。https://developers.yubico.com/yubikey-manager/Release_Notes.html}}&lt;br /&gt;
&lt;br /&gt;
=== 有効になっているモードを取得 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 5 以前の YubiKey では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman config mode|&lt;br /&gt;
Current connection mode is: OTP+FIDO+CCID&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ykman mode}} というコマンドは非推奨となっており、今後削除されるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey バージョン 5 では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman info|&lt;br /&gt;
Device type: YubiKey 5 NFC&lt;br /&gt;
Serial number: XXXXXXXXX&lt;br /&gt;
Firmware version: 5.4.3&lt;br /&gt;
Form factor: Keychain (USB-A)&lt;br /&gt;
Enabled USB interfaces: OTP, FIDO, CCID&lt;br /&gt;
NFC transport is enabled.&lt;br /&gt;
&lt;br /&gt;
Applications    USB     NFC&lt;br /&gt;
FIDO2           Enabled Enabled&lt;br /&gt;
OTP             Enabled Enabled&lt;br /&gt;
FIDO U2F        Enabled Enabled&lt;br /&gt;
OATH            Enabled Enabled&lt;br /&gt;
YubiHSM Auth    Enabled Enabled&lt;br /&gt;
OpenPGP         Enabled Enabled&lt;br /&gt;
PIV             Enabled Enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== モードをセット ===&lt;br /&gt;
&lt;br /&gt;
すべてのモードが出荷時から有効化されています。変更するには:&lt;br /&gt;
&lt;br /&gt;
 $ ykman mode &#039;&#039;[OPTIONS]&#039;&#039; &#039;&#039;MODE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} には文字列を使用できます。例えば、{{ic|OTP+FIDO+CCID}}。短い形式もあります: {{ic|o+f+c}}。&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。&lt;br /&gt;
&lt;br /&gt;
以下にモード番号の表があります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||OTP device only.&lt;br /&gt;
|-&lt;br /&gt;
|1||CCID device only.&lt;br /&gt;
|-&lt;br /&gt;
|2||OTP/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|3||U2F device only.&lt;br /&gt;
|-&lt;br /&gt;
|4||OTP/U2F composite device.&lt;br /&gt;
|-&lt;br /&gt;
|5||U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|6||OTP/U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|81||CCID device only, with touch-eject.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の例では 86 という番号を使用しています。これは[https://github.com/Yubico/yubikey-manager/issues/20#issuecomment-326496204 無効な番号]です。80 は無視され、6 のように振る舞います。}}&lt;br /&gt;
&lt;br /&gt;
オプション:&lt;br /&gt;
* {{ic|--touch-eject}} - ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。&lt;br /&gt;
* {{ic|--autoeject-timeout &#039;&#039;SECONDS&#039;&#039;}} - 一定時間立つとスマートカードを自動的に除去します。{{ic|--touch-eject}} と同じような制限があります。&lt;br /&gt;
* {{ic|--chalresp-timeout &#039;&#039;SECONDS&#039;&#039;}} - チャレンジレスポンス認証のタイムアウトを設定します。&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman mode --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ワンタイムパスワード ==&lt;br /&gt;
&lt;br /&gt;
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。&lt;br /&gt;
&lt;br /&gt;
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち&#039;&#039;&#039;1つ&#039;&#039;&#039;を設定できます:&lt;br /&gt;
&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
* OATH-HOTP&lt;br /&gt;
* OATH-TOTP&lt;br /&gt;
* チャレンジレスポンス認証&lt;br /&gt;
* 静的パスワード&lt;br /&gt;
&lt;br /&gt;
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。{{ic|ykman otp swap}} により、スロット1とスロット2を入れ替えることはできます。&lt;br /&gt;
&lt;br /&gt;
=== 工場出荷時の設定 ===&lt;br /&gt;
&lt;br /&gt;
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|スロット1にある工場出荷時のキーを上書きしてしまうと、同じ信頼レベルの新しいキーを作成することはできなくなります。工場で生成された Yubico OTP 認証情報は {{ic|CC}} という接頭辞で始まります。一方、ユーザが生成した認証情報は {{ic|VV}} で始まります。セキュリティおよび機能的には基本的な違いはありませんが、一部のサービスは {{ic|CC}} の認証情報のみを信頼します。さらなる情報はこの[https://forum.yubico.com/viewtopic12ca.html?f%3D16&amp;amp;t%3D1960 フォーラムスレッド]で見られます。}}&lt;br /&gt;
&lt;br /&gt;
=== Yubico OTP ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.yubico.com/OTP/ Yubico OTP] は[[Wikipedia:ja:共通鍵暗号|共通鍵暗号]]に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの [[Wikipedia:ja:Advanced_Encryption_Standard|AES]] 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。&lt;br /&gt;
&lt;br /&gt;
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。&lt;br /&gt;
&lt;br /&gt;
==== YubiCloud と検証サーバー ====&lt;br /&gt;
&lt;br /&gt;
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば) {{Pkg|yubico-pam}} によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーの[https://developers.yubico.com/Software_Projects/Yubico_OTP/YubiCloud_Validation_Servers/ オープンソースの実装]も提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Yubico の検証サーバーを認証する場合:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HMAC&#039;&#039;&#039; を使用: https://upgrade.yubico.com/getapikey/ から HMAC 鍵と ID を取得してください。&lt;br /&gt;
* &#039;&#039;&#039;HTTPS&#039;&#039;&#039; を使用: 検証サーバーの証明書は GoDaddy によって署名されています。Arch ではデフォルトで GoDaddy を信頼しています ({{Pkg|ca-certificates}} をインストールしていれば)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 設定と使用 ====&lt;br /&gt;
&lt;br /&gt;
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp yubiotp --generate-key --upload 2&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman otp yubiotp --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
==== セキュリティリスク ====&lt;br /&gt;
&lt;br /&gt;
===== AES 鍵の漏洩 =====&lt;br /&gt;
&lt;br /&gt;
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。&lt;br /&gt;
&lt;br /&gt;
===== 検証リクエスト/レスポンスの盗聴 =====&lt;br /&gt;
&lt;br /&gt;
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== チャレンジレスポンス認証 ===&lt;br /&gt;
&lt;br /&gt;
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。&lt;br /&gt;
&lt;br /&gt;
これは以下のように利用できます:&lt;br /&gt;
&lt;br /&gt;
* 真の二要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。&lt;br /&gt;
* 「準」二要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。&lt;br /&gt;
&lt;br /&gt;
2つのチャレンジレスポンス認証アルゴリズムがあります:&lt;br /&gt;
&lt;br /&gt;
* HMAC-SHA1&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|yubikey-personalization-gui}} を使って GUI で、あるいは以下の指示で設定できます。&lt;br /&gt;
&lt;br /&gt;
==== HMAC-SHA1 アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --generate 2&lt;br /&gt;
&lt;br /&gt;
キーを与えるための {{ic|--generate}} フラグは省略できます ({{ic|ykman otp chalresp --help}} を参照)。キーを与える主な利点は、バックアップ用の2つ目のデバイスをセットアップする際に使用できることです。例えば、{{ic|openssl rand -hex 20}} は適切な鍵を生成します。&lt;br /&gt;
&lt;br /&gt;
==== Yubico OTP アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、{{ic|ykpersonalize}} を使用できます。スロット2にランダムな鍵を生成してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykpersonalize -2 -ochal-resp -ochal-yubico&lt;br /&gt;
&lt;br /&gt;
さらなる情報は {{man|1|ykpersonalize}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== チャレンジを送信 ====&lt;br /&gt;
&lt;br /&gt;
チャレンジを送信してレスポンスを受信するには、{{ic|ykchalresp -&#039;&#039;slot&#039;&#039; &#039;&#039;challenge&#039;&#039;}} コマンドを使用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykchalresp -2 &#039;&#039;archie&#039;&#039;|&lt;br /&gt;
12a19763be77d75af46fb76f0b737c117fa47205&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このコマンドは、プログラム済みのスロット2のユニークな 40 バイトの SHA1 ハッシュ値を返します。チャレンジが異なると、異なるユニークなレスポンスが返されます。&lt;br /&gt;
&lt;br /&gt;
=== 静的パスワード ===&lt;br /&gt;
&lt;br /&gt;
静的パスワードも生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static --generate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、パスワードを与えることも:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static &#039;&#039;slot&#039;&#039; &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は {{ic|ykman otp static --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ほとんどの YubiKey では、静的パスワードを保存するためのスロットの数 (2個) は限られています。チャレンジレスポンス認証のスロットは、無制限のチャレンジに対して静的ハッシュ値のレスポンスを提供します。これらは数字と小文字アルファベットのみですが、レスポンスの長さによってかなりのエントロピーが生まれます。}}&lt;br /&gt;
&lt;br /&gt;
=== エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット({{ic|cbdefghijklnrtuv}})、数値 {{ic|0-9}}、{{ic|!}} に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。&lt;br /&gt;
&lt;br /&gt;
Yubico はこの問題に関する[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf 白書]を提供しています。&lt;br /&gt;
&lt;br /&gt;
== OATH ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は2つの [[OATH]] 実装を提供します:&lt;br /&gt;
; OATH API: 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)&lt;br /&gt;
; OTP slot: 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)&lt;br /&gt;
&lt;br /&gt;
=== OATH API ===&lt;br /&gt;
&lt;br /&gt;
GUI がお好みならば、{{Pkg|yubioath-desktop}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は、{{ic|ykman oath uri}} を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:&lt;br /&gt;
&lt;br /&gt;
 $ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri&lt;br /&gt;
&lt;br /&gt;
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --touch &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP 鍵をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --oath-type HOTP &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
認証情報を一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath list&lt;br /&gt;
&lt;br /&gt;
コードを生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath code &#039;&#039;query&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なサブコマンドをすべて見るには、{{ic|ykman oath --help}} を実行してください。それぞれのサブコマンドの情報を見るには、{{ic|ykman oath &#039;&#039;subcommand&#039;&#039; --help}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== OTP スロット実装 ===&lt;br /&gt;
&lt;br /&gt;
スロット2で HOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp hotp 2 &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --totp &#039;&#039;slot&#039;&#039; &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate --totp &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman otp --help}} と https://developers.yubico.com/OATH/ も参照してください。&lt;br /&gt;
&lt;br /&gt;
== U2F ==&lt;br /&gt;
&lt;br /&gt;
YubiKey を用いた [[Universal 2nd Factor]] (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは &#039;FIDO&#039; とも呼ばれていることに注意してください。{{ic|ykman}} ユーティリティを通じていくつかの限定された管理オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* PIN を設定:  {{ic|ykman fido access change-pin}}&lt;br /&gt;
* 個別の資格情報を削除: {{ic|ykman fido credentials delete &#039;&#039;QUERY&#039;&#039;}}&lt;br /&gt;
* すべての資格情報と PIN をリセット: {{ic|ykman fido reset}}&lt;br /&gt;
&lt;br /&gt;
U2F を認証に使用するには、[[U2F]] の指示を見てください。&lt;br /&gt;
&lt;br /&gt;
[[WebAuthn]] も参照。&lt;br /&gt;
&lt;br /&gt;
== CCID スマートカード ==&lt;br /&gt;
&lt;br /&gt;
CCID (Chip Card Interface Device) は、スマートカードリーダーとして振る舞う USB デバイスによって使用されたり、YubiKey のように USB を通して直接接続するセキュリティトークンで使用されたりする USB 標準デバイスクラスです。HID (Human Interface Device) と CCID は両方とも USB デバイスクラスです。つまり、これらは USB 仕様の同じカテゴリに属すということです。HID は、キーボードなどのようなコンピュータ周辺機器のための仕様です。YubiKey は、OTP モードと FIDO モードで使用されたときは USB (HID) キーボードのように働きます。しかし、PIV アプリケーションを使用する時や OpenPGP デバイスとして使用する時は CCID プロトコルに切り替わります。&lt;br /&gt;
&lt;br /&gt;
CCID モードは 2015 年11以降に出荷された YubiKey のすべてでデフォルトで有効になっているはずです[https://www.yubico.com/support/knowledge-base/categories/articles/use-yubikey-yubikey-windows-hello-app/]。少なくとも CCID モードは有効化してください。[[#有効になっているモードを取得]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PIV ===&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO 以降から、YubiKey はチップ上に PIV (Personal Identity Verification) アプリケーションが含まれています。PIV は、RSA や ECC(楕円曲線暗号) を使用するトークンが個人電子証明書にどのように使用されるかを定めた米国政府規格(FIPS 201)です。YubiKey NEO は RSA 暗号のみをサポートしますが、その後のモデル(YubiKey 4 と 5)は RSA と ECC の両方をサポートします。PIV トークンの特徴は、秘密鍵を保護しオンチップで動作するように構築されているという点です。秘密鍵は、トークン上にインストールされた後は決してトークン外に出ることはありません。オプションで、オンチップの乱数生成器を使って秘密鍵をオンチップで生成することもできます。秘密鍵がオンチップで生成された場合、秘密鍵はチップの外部で処理されることはなく、トークンから秘密鍵を復元する方法もありません。PIV メカニズムを使用する際は、YubiKey は CCID デバイスとして機能します。&lt;br /&gt;
&lt;br /&gt;
=== OpenPGP スマートカード ===&lt;br /&gt;
&lt;br /&gt;
YubiKey は標準の GPG スマートカードとしてとして振る舞うことができます; セットアップと使用法に関する説明は [[GnuPG#スマートカード]] セクションを見てください。Yubico は https://developers.yubico.com/PGP/ でドキュメントも提供しています。&lt;br /&gt;
&lt;br /&gt;
他の機能(U2F と OTP)を使用したくない場合、ボタンはキーを挿入/除去するように設定でき、自動除去のタイムアウトも設定できます。詳細は [[#USB 接続モード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザ PIN は {{ic|123456}} で、デフォルトの admin PIN は {{ic|12345678}} です。デフォルトの PUK も {{ic|12345678}} です。覚えておきましょう。&lt;br /&gt;
&lt;br /&gt;
== 使用例 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、様々な認証の目的での YubiKey の使用法について説明しています。しかし、以下は使用法について完全に網羅されたリストではありません。&lt;br /&gt;
&lt;br /&gt;
=== LUKS による完全なディスク暗号化 ===&lt;br /&gt;
&lt;br /&gt;
複数の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;チャレンジレスポンス認証:&#039;&#039;&#039; とあるチャレンジに対する[[#チャレンジレスポンス認証|レスポンス]]が LUKS 鍵として使用されます。チャレンジは、真の二要素認証においてはパスワードとして機能し、一要素認証においてはチャレンジは平文で保存することができます。&lt;br /&gt;
* &#039;&#039;&#039;GnuPG:&#039;&#039;&#039; YubiKey の [[#CCID スマートカード|PGP スマートカード]]の機能を使用します。長いパスフレーズ無しで強力な二要素認証を提供します。&lt;br /&gt;
* &#039;&#039;&#039;FIDO HMAC Secret:&#039;&#039;&#039; あなたの YubiKey が [[U2F]] をサポートしているのであれば、共通鍵を返すように設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスクの暗号化の強度は、使用している鍵のうち最も弱いものの強さと同じです。上記のツールの内一つを設定したら、初期のパスフレーズを削除するか、より長いものに置き換えることを検討してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 共通の前提条件 ====&lt;br /&gt;
&lt;br /&gt;
* [[dm-crypt/システム全体の暗号化|LUKS により暗号化された]]起動可能なシステム。少なくとも1つの空きキースロットがあり、{{ic|encrypt}} [[mkinitcpio]] フックを使用していること。&lt;br /&gt;
** {{AUR|mkinitcpio-ykfde}} を例外として、{{ic|sd-encrypt}} はこれらのツールの全てでサポートされていません。&lt;br /&gt;
* LUKS ヘッダーのバックアップ(任意ですが、推奨)&lt;br /&gt;
&lt;br /&gt;
==== チャレンジレスポンス認証 ====&lt;br /&gt;
&lt;br /&gt;
完全な手順については {{Pkg|yubikey-full-disk-encryption}} の [https://github.com/agherzan/yubikey-full-disk-encryption#usage 公式ドキュメント] を見てください。大まかには:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-full-disk-encryption}} をインストール。&lt;br /&gt;
# {{ic|/etc/ykfde.conf}} を設定。&lt;br /&gt;
# 対象のディスクを登録: {{ic|# ykfde-enroll -d /dev/&#039;&#039;DISK&#039;&#039; -s &#039;&#039;LUKS_SLOT&#039;&#039;}}&lt;br /&gt;
# {{ic|ykfde}} [[mkinitcpio#HOOKS|mkinitcpio フック]] を {{ic|encrypt}} フックの前に追加。&lt;br /&gt;
# [[Initramfs の再生成]]&lt;br /&gt;
&lt;br /&gt;
:{{Note|Plymouth ユーザーは、{{ic|plymouth-encrypt}} フックを {{ic|ykfde}} フックに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
いくつかの利用可能なバリエーションがあります:&lt;br /&gt;
&lt;br /&gt;
* 2FA: デフォルトの挙動。対象デバイスの登録時、および起動時にパスワードとしてチャレンジを与えなければなりません。&lt;br /&gt;
* 1FA: {{ic|ykfde.conf}} に {{ic|YKFDE_CHALLENGE}} を設定してください。これは平文で保存されることに注意してください。このファイルに対する非ルートユーザの読み込みアクセスを禁止することを検討してください。&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-nfc-support-in-ykfde-initramfs-hook-experimental NFC サポート] (実験的)&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-ykfde-suspend-service-experimental サスペンドと復帰のサポート] (実験的) サスペンド時に、暗号化されたボリュームが自動的にロックされます。復帰時に自動でアンロックします。&lt;br /&gt;
&lt;br /&gt;
設定の変更を行った時は、変更を反映させるために initramfs の再生成を行わなければなりません。&lt;br /&gt;
&lt;br /&gt;
==== systemd ベースの initramfs ====&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックのユーザは {{AUR|mkinitcpio-ykfde}} か {{AUR|mkinitcpio-ykfde-git}} をインストールし、[https://github.com/eworm-de/mkinitcpio-ykfde/blob/master/README-mkinitcpio.md プロジェクトのドキュメント]にある手順に従ってください。手順は、大まかに言えば {{Pkg|yubikey-full-disk-encryption}} に似ています。&lt;br /&gt;
&lt;br /&gt;
==== GnuPG 暗号化キーファイル ====&lt;br /&gt;
&lt;br /&gt;
これを行うためのツールの一つは [https://github.com/fuhry/initramfs-scencrypt initramfs-scencrypt] です。完全な手順についてはドキュメントを見てください。2022年10月以降、このパッケージは、GitHub で PKGBUILD が提供されていますが、AUR に存在せず、徹底的にテストもされていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/特記事項#GPG や OpenSSL で暗号化されたキーファイルを使う|Dm-crypt のページ]]ではいくつかの代替策が提示されています。しかし、それらの殆どがフォーラムの古い投稿へのリンクです。&lt;br /&gt;
&lt;br /&gt;
==== FIDO2 プロトコルの HMAC secret extension ====&lt;br /&gt;
&lt;br /&gt;
YubiKey を完全ディスク暗号化に使うもう一つの方法は、[https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#sctn-hmac-secret-extension HMAC Secret Extension] を使用して、YubiKey から LUKS のパスワードを取得することです。これはパスフレーズによって保護することができます。この機能には、少なくとも[https://support.yubico.com/hc/en-us/articles/360016649319-YubiKey-5-2-3-Enhancements-to-FIDO-2-Support ファームウェア 5.2.3+ のYubiKey 5] が必要です。&lt;br /&gt;
パスフレーズによる保護の方法では、{{AUR|khefin}} をインストールし、[https://github.com/mjec/khefin/wiki/Arch-Linux-LUKS-configuration プロジェクトのドキュメント]にある手順に従ってください。&lt;br /&gt;
systemd 248 以降での(任意で PIN による保護が施された)1要素による方法では、FIDO2 キーを LUKS2 キースロットとして使用できます。手順は[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html 作者のブログ投稿]で見られます。&lt;br /&gt;
&lt;br /&gt;
=== KeePass ===&lt;br /&gt;
&lt;br /&gt;
[[KeePass]] は YubiKey をサポートするように設定できます。手順は [[KeePass#Yubikey|YubiKey セクション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== SSH 鍵 ===&lt;br /&gt;
&lt;br /&gt;
==== CCID ====&lt;br /&gt;
&lt;br /&gt;
あなたの YubiKey が CCID スマートカードをサポートしているのであれば、GPG 鍵や PIV 鍵のどちらかをベースとしてハードウェアによる [[SSH 鍵]] として使用することができます。Yubico は品質の良いドキュメントを提供しています:&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html PGP と PIV の両方の可能性から見た概要]、それらの利点と欠点を挙げています。&lt;br /&gt;
* [https://developers.yubico.com/PGP/SSH_authentication/index.html PGP 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html ユーザ証明書による PIV 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html #PKCS11 による PIV 認証]のための手順&lt;br /&gt;
&lt;br /&gt;
:{{Note|YubiKey 上の PIV アプリケーションデフォルトの PIN コードは {{ic|123456}} です。デフォルトの管理キーと一緒に PIN コードも変更しておくべきでしょう。詳細は [https://developers.yubico.com/PIV/Guides/Device_setup.html デバイスセットアップの手順] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== U2F ====&lt;br /&gt;
&lt;br /&gt;
YubiKey の U2F の機能を使用してハードウェアによる SSH 鍵を作成することもできます。手順は [[SSH 鍵#FIDO/U2F]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== PIV ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|yubikey-agent}} は SSH 鍵 を PIV トークンとして保存します。セットアップガイドは https://github.com/FiloSottile/yubikey-agent#readme を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PAM を用いた Linux ユーザ認証 ===&lt;br /&gt;
&lt;br /&gt;
ユーザ認証のために [[PAM]] を使用するすべてのものは、ユーザ認証のプロセスの一つの要素として YubiKey を使用するように設定できます。これには sudo、su、ssh、スクリーンロッカー、ディスプレイマネージャー、そして Linux システムがユーザを認証する必要のあるほぼすべての場面を含みます。その柔軟な設定により、システム全体や特定のアプリケーション、あるいはアプリケーションのグループに対して、あなたのニーズに合う認証要件を自由に設定することができます。例えば、ローカルセッションではパスワードの代わりとして YubiKey を受け入れ、リモートのセッションでは両方を要求することができます。これがどのように機能し、どのように設定するのかを理解するために、Arch Wiki の記事に加えて、{{man|8|pam}} や {{man|5|pam.conf}} を読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
YubiKey がサポートするプロトコルを PAM に統合するのに利用できるモジュールが複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|pam-u2f}} - FIDO2 規格による [[#U2F]] をサポート。どの手法を使うべきかわからない場合、これが良い選択です。&lt;br /&gt;
** [[Universal 2nd Factor#Arch Linux の認証|Arch Wiki の記事]]&lt;br /&gt;
** [https://developers.yubico.com/pam-u2f/ Yubico の公式ドキュメント]、サポートされるモジュールパラメータのリストがあります。&lt;br /&gt;
** Man ページ: {{man|8|pam_u2f}}、{{man|1|pamu2fcfg}}&lt;br /&gt;
* {{Pkg|oath-toolkit}} - [[#OATH]] ワンタイムパスワードをサポート(HOTP か TOTP)。&lt;br /&gt;
** [[pam_oath]]&lt;br /&gt;
* {{Pkg|yubico-pam}} - [[#Yubico OTP]] と チャレンジレスポンス認証 OTP をサポート。Yubico OTP モードでは認証サーバーへのネットワーク接続が必要であることに注意してください。チャレンジレスポンス認証では必要ありません。&lt;br /&gt;
** [https://developers.yubico.com/yubico-pam/ Yubico の公式ドキュメント]&lt;br /&gt;
** {{man|8|pam_yubico}} - チャレンジレスポンス認証モードを設定するのに使用される {{ic|mode}} パラメータに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|PAM の設定ファイルを変更する際には厳重な注意が必要です。間違うと、システムが完全に安全ではなくなったり、安全すぎて認証できなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
PAM の設定はこの記事の範囲を超えますが、簡単な概要としては:&lt;br /&gt;
&lt;br /&gt;
* 認証されたキーを含むファイルをホームディレクトリ内か一元的に作成する。&lt;br /&gt;
* 適切な PAM 設定ファイルの適切な場所に、以下のフォーマットに従う行を追加する:&lt;br /&gt;
    auth [required|sufficient] [module_name].so [module arguments]&lt;br /&gt;
* 多要素認証には {{ic|auth required}}、単一要素認証には {{ic|auth sufficient}}。&lt;br /&gt;
* {{ic|module_name}} - 例: {{ic|pam_u2f.so}}。インストールされているモジュールのリストを見てください: {{ic|ls /usr/lib/security }}&lt;br /&gt;
* モジュールの設定引数は、キーファイルの場所や、認証するためにどの手法をモジュールが使用すべきかなどです。&lt;br /&gt;
&lt;br /&gt;
==== SSH における注意事項 ====&lt;br /&gt;
&lt;br /&gt;
* Yubico は[https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html 追加のガイダンス]を公開しています。これは Ubuntu の古いバージョン向けですが、アップデートされている Arch システムにも適用できます。&lt;br /&gt;
* 遠隔地にあるサーバを YubiKey を使用するように設定する場合、追加で少なくとも一つの緊急用 SSH セッションを開いておくべきです。こうすれば、設定ミスにより締め出されないで済みます。&lt;br /&gt;
* {{ic|/etc/ssh/sshd_config}} に以下の設定が含まれていることを確認してください。{{Pkg|openssh}} に同梱されている {{ic|sshd_config}} はデフォルトでこれらが正しく設定されています。&lt;br /&gt;
    ChallengeResponseAuthentication no&lt;br /&gt;
    UsePAM yes&lt;br /&gt;
&lt;br /&gt;
=== ブラウザ/web 統合 ===&lt;br /&gt;
&lt;br /&gt;
多くのウェブサービスが FIDO ハードウェアトークンをサポートし始めています。詳細は [[U2F]] や [[WebAuthn]] のページを見てください。しかし、通常、するべきことといえば {{Pkg|libfido2}} をインストールして [https://demo.yubico.com/webauthn-technical/registration 試してみる]ことくらいです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey デバイスの挿入/除去時にアクションを実行する ===&lt;br /&gt;
&lt;br /&gt;
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成し、以下の内容を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;, ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, RUN+=&amp;quot;&#039;&#039;/usr/local/bin/script args&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを &amp;quot;remove&amp;quot; ではなく &amp;quot;add&amp;quot; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 挿入時に Yubico Authenticator を開始する ===&lt;br /&gt;
&lt;br /&gt;
Authenticator は長時間実行される GUI プロセスです。Udev ルール内で直接実行すると、プロセスが udev の処理をブロックしてしまいます。フォークすると、イベント処理の終了後に udev は無条件で (フォークによって生成された) プロセスをキルしてしまいます。なので、authenticator を udev ルールから開始することはできません。しかし、systemd.device を使うことができます。&lt;br /&gt;
&lt;br /&gt;
上記と同じように、{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成して、以下の内容を書き込んでください:&lt;br /&gt;
&lt;br /&gt;
 ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, SYMLINK+=&amp;quot;yubikey&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして、新しい systemd [[ユーザーユニット]]を[[作成]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/yubioath-desktop.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Autostart Yubico Authenticator&lt;br /&gt;
# Uncomment if you want to stop the authenticator when unplugged.&lt;br /&gt;
#StopPropagatedFrom=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/yubioath-desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、このユニットを[[有効化]]してください。&#039;&#039;systemctl&#039;&#039; が、このユニットが存在しない {{ic|dev-yubikey.device}} ユニットの依存関係として追加されたことを警告してきますが、問題ありません。このユニットは、YubiKey が挿入されると開始されます。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス/アップグレード ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey NEO 用に OATH アプレットをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のステップは、ファームウェアバージョン &amp;lt;= 3.1.2 の NEO でのみ必要です。現在の世代の NEO (U2F 搭載) は OpenPGP アプレットがすでにインストールされています。}}&lt;br /&gt;
&lt;br /&gt;
==== NEO を CCID デバイスとして設定する ====&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-personalization-gui}} ({{AUR|yubikey-personalization-gui-git}}) を[[インストール]]。&lt;br /&gt;
# udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。&lt;br /&gt;
# {{ic|ykpersonalize -m82}} を実行し、{{ic|y}} を入力、エンターを押す。&lt;br /&gt;
&lt;br /&gt;
==== アプレットをインストールする ====&lt;br /&gt;
&lt;br /&gt;
# {{AUR|gpshell}}、{{AUR|gppcscconnectionplugin}}、{{AUR|globalplatform}}、{{Pkg|pcsclite}} を[[インストール]]。&lt;br /&gt;
# {{ic|pcscd.service}} を[[起動]]。&lt;br /&gt;
# 最も最近の CAP ファイルを [https://developers.yubico.com/ykneo-oath/Releases/ ykneo-oath] サイトからダウンロード。&lt;br /&gt;
# {{ic|gpinstall.txt}} を [https://github.com/Yubico/ykneo-oath/blob/master/gpinstall.txt GitHub] からダウンロード。&lt;br /&gt;
# gpinstall.txt を編集して {{ic|install -file}} から始まる行を CAP ファイルが置かれているパスに修正。&lt;br /&gt;
# ターミナルを開き、{{ic|gpshell &#039;&#039;path/to/gpinstall.txt&#039;&#039;}} を実行。&lt;br /&gt;
# 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;Command --&amp;gt; 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100&lt;br /&gt;
Wrapped command --&amp;gt; 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77&lt;br /&gt;
27D0EDA00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
Command --&amp;gt; 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000&lt;br /&gt;
Wrapped command --&amp;gt; 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
card_disconnect&lt;br /&gt;
release_context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# NEO を抜き、Yubico Authenticator アプリで試す。&lt;br /&gt;
&lt;br /&gt;
==== (任意)Yubico Authenticator デスクトップクライアントをインストールする ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|yubioath-desktop}} をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcscd.service}} が実行中の間に、{{ic|yubioath-desktop}} を実行して、プロンプトが表示されたら YubiKey を挿入してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が HID デバイスとして機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[https://github.com/systemd/systemd/commit/d45ee2f31a8358db0accde2e7c81777cedadc3c2 バージョン 244以降の systemd は]この機能に対するネイティブサポートを追加したので、以下のステップはもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
[https://michaelheap.com/yubikey-on-arch/ この記事]で説明されているように、udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-security-key.rules|2=&lt;br /&gt;
KERNEL==&amp;quot;hidraw*&amp;quot;, SUBSYSTEM==&amp;quot;hidraw&amp;quot;, MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;users&amp;quot;, ATTRS{idVendor}==&amp;quot;2581&amp;quot;, ATTRS{idProduct}==&amp;quot;f1d0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|udevadm trigger}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== ykman が YubiKey に接続できない ===&lt;br /&gt;
&lt;br /&gt;
マネージャが YubiKey への接続に失敗する場合、{{ic|pcscd.service}} か {{ic|pcscd.socket}} が起動していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions. ===&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|scdaemon}} がすでにデバイスの排他的な制御を取得している場合に {{ic|ykman}} がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[https://github.com/Yubico/yubikey-manager/issues/35]&lt;br /&gt;
&lt;br /&gt;
これを修正するには、{{ic|~/.gnupg/scdaemon.conf}} 内であなたのデバイスに対して {{ic|reader-port}} オプションを正しい値で設定することができます。[https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG]&lt;br /&gt;
&lt;br /&gt;
{{Note|これにより、ykman を通して YubiKey にアクセスするたびに gpgagent が YubiKey をアンロックするプロンプトを表示するようになります。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO と YubiKey 4 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubikey&lt;br /&gt;
&lt;br /&gt;
YubiKey 5 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubi&lt;br /&gt;
&lt;br /&gt;
=== YubiKey がゲスト VM 内でバインドできない ===&lt;br /&gt;
&lt;br /&gt;
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの [[dmesg]] からバスとポートの情報を手に入れる必要があります:&lt;br /&gt;
&lt;br /&gt;
 # dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E &#039;s/^\&amp;lt;nowiki&amp;gt;[[^]]&amp;lt;/nowiki&amp;gt;+\] usb (&amp;lt;nowiki&amp;gt;[^:]&amp;lt;/nowiki&amp;gt;*):.*/\1/&#039;&lt;br /&gt;
&lt;br /&gt;
出力の USB id は {{ic|X-Y.Z}} または {{ic|X-Y}} の形式であるはずです。そして、ホスト上で、{{ic|find}} を使って {{ic|/sys/bus/usb/drivers}} を検索し、YubiKey がバインドしているドライバを探します (例: {{ic|usbhid}} または {{ic|usbfs}})。&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/bus/usb/drivers -name &amp;quot;*X-Y.Z*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デバイスのバインドを解除するには、先のコマンドの出力を使ってください (つまり、{{ic|/sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/X-Y.Z:1.0}}):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;X-Y.Z:1.0&#039; &amp;gt; /sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/unbind&lt;br /&gt;
&lt;br /&gt;
=== Error: [key] could not be locally signed or gpg: No default secret key: No public key ===&lt;br /&gt;
&lt;br /&gt;
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、[[pacman-key|Pacman]] が {{ic|pacman-key --populate}} で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が Yubico Authenticator で消えたり現れたりする ===&lt;br /&gt;
&lt;br /&gt;
これは、CCID ドライバがインストールされていない際に起こります。{{Pkg|ccid}} パッケージを[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey core error: timeout ===&lt;br /&gt;
&lt;br /&gt;
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|YubiKey|2024-08-26|814790}}&lt;/div&gt;</summary>
		<author><name>田中</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40649</id>
		<title>YubiKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40649"/>
		<updated>2025-08-02T11:11:03Z</updated>

		<summary type="html">&lt;p&gt;田中: /* 管理ツール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OpenPGP]]&lt;br /&gt;
[[Category:スマートカード]]&lt;br /&gt;
[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:YubiKey]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related|OATH}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|KeePass}}&lt;br /&gt;
{{Related|OpenPGP-card-tools}}&lt;br /&gt;
{{Related|スマートカード}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.yubico.com YubiKey] は小さな [[Wikipedia:ja:セキュリティトークン|USB セキュリティトークン]]です。モデルにも依りますが、以下のようなことができます:&lt;br /&gt;
&lt;br /&gt;
* スマートカードのように振る舞う([[Wikipedia:CCID (protocol)|CCID protocol]] を使用) - [https://developers.yubico.com/PGP/ PGP] と [https://developers.yubico.com/PIV/ PIV] 秘密鍵の両方を保存できます。&lt;br /&gt;
* [[Universal 2nd Factor]] (U2F) リクエストを処理する。&lt;br /&gt;
* 約 30 個の[[オープン認証イニシアチブ]] (OATH) 資格情報を保存・クエリする。&lt;br /&gt;
* Yubico OTP モードか HMAC-SHA1 モードで[[Wikipedia:Challenge–response authentication|チャレンジレスポンス認証]]を処理する。&lt;br /&gt;
* [[Wikipedia:ja:ワンタイムパスワード|ワンタイムパスワード]] (OTP) を生成する - [https://developers.yubico.com/OTP/ Yubico&#039;s AES based standard]。&lt;br /&gt;
* 63 文字までの静的パスワードを&amp;quot;入力&amp;quot;する。&lt;br /&gt;
&lt;br /&gt;
多くの機能を提供する一方、YubiKey の新しいバージョンは[https://www.yubico.com/blog/secure-hardware-vs-open-source/ オープンソースとしてリリースされていません]。代替としては [[Solo]]、[[Tillitis TKey|TKey]]、[[Nitrokey]] があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 管理ツール ===&lt;br /&gt;
* {{App|YubiKey Manager|USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール({{ic|ykman}})。|https://developers.yubico.com/yubikey-manager/|{{Pkg|yubikey-manager}}}}&lt;br /&gt;
::{{Note|インストール後、{{ic|pcscd.service}} を[[有効化]]してください。}}&lt;br /&gt;
* {{App|YubiKey Personalization|OTP USB 接続を通して YubiKey の設定とクエリをするためのライブラリとツール。ykman よりも強力ですが、使うのが難しいです。オプションの GUI あり。|https://developers.yubico.com/yubikey-personalization/|{{Pkg|yubikey-personalization}}, {{Pkg|yubikey-personalization-gui}}}}&lt;br /&gt;
&lt;br /&gt;
=== 認証ツール ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Yubico PAM|Yubico OTP または チャレンジレスポンス認証による [[PAM]] ユーザ認証。|https://developers.yubico.com/yubico-pam/|{{Pkg|yubico-pam}}}}&lt;br /&gt;
* {{App|Yubico PAM-U2F|[[U2F]] により [[PAM]] ユーザ認証。|https://developers.yubico.com/pam-u2f/|{{Pkg|pam-u2f}}}}&lt;br /&gt;
* {{App|Yubico Authenticator for Desktop|USB を通して YbiKey から OATH コードを読み込む GUI。古いスロットベースの実装 (YubiKey Standard と Edge) と新しい OATH 実装をサポート (YubiKey NEO と 4)。注: [https://gitlab.archlinux.org/archlinux/packaging/packages/yubioath-desktop/-/issues/2 archlinux/packaging/packages/yubioath-desktop]。&amp;lt;!-- TODO: issue テンプレートを使う --&amp;gt;|https://developers.yubico.com/OATH/YubiKey_OATH_software.html|{{Pkg|yubioath-desktop}}}}&lt;br /&gt;
* {{App|Yubico Authenticator 6.0+ for Desktop|Yubico Authenticator 6.0+ (バージョン 6.0 及びそれ以降) は、YubiKey の第二要素クレデンシャルを管理するためのアプリケーションです。バージョン 6.0 から、コードベースが Flutter フレームワークを使って完全に書き換えられました。|https://developers.yubico.com/yubioath-flutter/|{{AUR|yubico-authenticator-bin}}}}&lt;br /&gt;
* {{App|libfido2|クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。|https://developers.yubico.com/libfido2/|{{Pkg|libfido2}}}}&lt;br /&gt;
* {{App|YubiKey Full Disk Encryption|チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。|https://github.com/agherzan/yubikey-full-disk-encryption|{{Pkg|yubikey-full-disk-encryption}}}}&lt;br /&gt;
&lt;br /&gt;
== 入力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。&lt;br /&gt;
&lt;br /&gt;
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:&lt;br /&gt;
&lt;br /&gt;
* 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。&lt;br /&gt;
* 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。&lt;br /&gt;
* スマートカードを挿入/除去する。&lt;br /&gt;
&lt;br /&gt;
== 出力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は以下の入力を出力に変換します:&lt;br /&gt;
&lt;br /&gt;
* キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)&lt;br /&gt;
* 組み込みの LED は:&lt;br /&gt;
** 挿入した際に一度光ります。トラブルシューティングに便利です。&lt;br /&gt;
** API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。&lt;br /&gt;
* USB を通した API 応答。これは以下のように使用されます:&lt;br /&gt;
** チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)&lt;br /&gt;
** U2F チャレンジレスポンス認証&lt;br /&gt;
** CCID スマートカード関連のリクエスト&lt;br /&gt;
&lt;br /&gt;
== USB 接続モード ==&lt;br /&gt;
&lt;br /&gt;
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。&lt;br /&gt;
&lt;br /&gt;
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! プロトコル !! インターフェイス&lt;br /&gt;
|-&lt;br /&gt;
|OTP || Keyboard HID&lt;br /&gt;
|-&lt;br /&gt;
|FIDO || Other HID&lt;br /&gt;
|-&lt;br /&gt;
|PIV || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OpenPGP || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OATH || CCID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は &amp;quot;modes&amp;quot; という用語を使用します、OTP、FIDO、CCID と名付けられています。&lt;br /&gt;
&lt;br /&gt;
{{Note|ykman はリリース 0.6.1 (2018-04-16)で &amp;quot;U2F&amp;quot; を &amp;quot;FIDO&amp;quot; と名前を変更しました。https://developers.yubico.com/yubikey-manager/Release_Notes.html}}&lt;br /&gt;
&lt;br /&gt;
=== 有効になっているモードを取得 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 5 以前の YubiKey では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman config mode|&lt;br /&gt;
Current connection mode is: OTP+FIDO+CCID&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ykman mode}} というコマンドは非推奨となっており、今後削除されるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey バージョン 5 では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman info|&lt;br /&gt;
Device type: YubiKey 5 NFC&lt;br /&gt;
Serial number: XXXXXXXXX&lt;br /&gt;
Firmware version: 5.4.3&lt;br /&gt;
Form factor: Keychain (USB-A)&lt;br /&gt;
Enabled USB interfaces: OTP, FIDO, CCID&lt;br /&gt;
NFC transport is enabled.&lt;br /&gt;
&lt;br /&gt;
Applications    USB     NFC&lt;br /&gt;
FIDO2           Enabled Enabled&lt;br /&gt;
OTP             Enabled Enabled&lt;br /&gt;
FIDO U2F        Enabled Enabled&lt;br /&gt;
OATH            Enabled Enabled&lt;br /&gt;
YubiHSM Auth    Enabled Enabled&lt;br /&gt;
OpenPGP         Enabled Enabled&lt;br /&gt;
PIV             Enabled Enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== モードをセット ===&lt;br /&gt;
&lt;br /&gt;
すべてのモードが出荷時から有効化されています。変更するには:&lt;br /&gt;
&lt;br /&gt;
 $ ykman mode &#039;&#039;[OPTIONS]&#039;&#039; &#039;&#039;MODE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} には文字列を使用できます。例えば、{{ic|OTP+FIDO+CCID}}。短い形式もあります: {{ic|o+f+c}}。&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。&lt;br /&gt;
&lt;br /&gt;
以下にモード番号の表があります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||OTP device only.&lt;br /&gt;
|-&lt;br /&gt;
|1||CCID device only.&lt;br /&gt;
|-&lt;br /&gt;
|2||OTP/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|3||U2F device only.&lt;br /&gt;
|-&lt;br /&gt;
|4||OTP/U2F composite device.&lt;br /&gt;
|-&lt;br /&gt;
|5||U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|6||OTP/U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|81||CCID device only, with touch-eject.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の例では 86 という番号を使用しています。これは[https://github.com/Yubico/yubikey-manager/issues/20#issuecomment-326496204 無効な番号]です。80 は無視され、6 のように振る舞います。}}&lt;br /&gt;
&lt;br /&gt;
オプション:&lt;br /&gt;
* {{ic|--touch-eject}} - ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。&lt;br /&gt;
* {{ic|--autoeject-timeout &#039;&#039;SECONDS&#039;&#039;}} - 一定時間立つとスマートカードを自動的に除去します。{{ic|--touch-eject}} と同じような制限があります。&lt;br /&gt;
* {{ic|--chalresp-timeout &#039;&#039;SECONDS&#039;&#039;}} - チャレンジレスポンス認証のタイムアウトを設定します。&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman mode --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ワンタイムパスワード ==&lt;br /&gt;
&lt;br /&gt;
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。&lt;br /&gt;
&lt;br /&gt;
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち&#039;&#039;&#039;1つ&#039;&#039;&#039;を設定できます:&lt;br /&gt;
&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
* OATH-HOTP&lt;br /&gt;
* OATH-TOTP&lt;br /&gt;
* チャレンジレスポンス認証&lt;br /&gt;
* 静的パスワード&lt;br /&gt;
&lt;br /&gt;
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。{{ic|ykman otp swap}} により、スロット1とスロット2を入れ替えることはできます。&lt;br /&gt;
&lt;br /&gt;
=== 工場出荷時の設定 ===&lt;br /&gt;
&lt;br /&gt;
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|スロット1にある工場出荷時のキーを上書きしてしまうと、同じ信頼レベルの新しいキーを作成することはできなくなります。工場で生成された Yubico OTP 認証情報は {{ic|CC}} という接頭辞で始まります。一方、ユーザが生成した認証情報は {{ic|VV}} で始まります。セキュリティおよび機能的には基本的な違いはありませんが、一部のサービスは {{ic|CC}} の認証情報のみを信頼します。さらなる情報はこの[https://forum.yubico.com/viewtopic12ca.html?f%3D16&amp;amp;t%3D1960 フォーラムスレッド]で見られます。}}&lt;br /&gt;
&lt;br /&gt;
=== Yubico OTP ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.yubico.com/OTP/ Yubico OTP] は[[Wikipedia:ja:共通鍵暗号|共通鍵暗号]]に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの [[Wikipedia:ja:Advanced_Encryption_Standard|AES]] 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。&lt;br /&gt;
&lt;br /&gt;
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。&lt;br /&gt;
&lt;br /&gt;
==== YubiCloud と検証サーバー ====&lt;br /&gt;
&lt;br /&gt;
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば) {{Pkg|yubico-pam}} によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーの[https://developers.yubico.com/Software_Projects/Yubico_OTP/YubiCloud_Validation_Servers/ オープンソースの実装]も提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Yubico の検証サーバーを認証する場合:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HMAC&#039;&#039;&#039; を使用: https://upgrade.yubico.com/getapikey/ から HMAC 鍵と ID を取得してください。&lt;br /&gt;
* &#039;&#039;&#039;HTTPS&#039;&#039;&#039; を使用: 検証サーバーの証明書は GoDaddy によって署名されています。Arch ではデフォルトで GoDaddy を信頼しています ({{Pkg|ca-certificates}} をインストールしていれば)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 設定と使用 ====&lt;br /&gt;
&lt;br /&gt;
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp yubiotp --generate-key --upload 2&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman otp yubiotp --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
==== セキュリティリスク ====&lt;br /&gt;
&lt;br /&gt;
===== AES 鍵の漏洩 =====&lt;br /&gt;
&lt;br /&gt;
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。&lt;br /&gt;
&lt;br /&gt;
===== 検証リクエスト/レスポンスの盗聴 =====&lt;br /&gt;
&lt;br /&gt;
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== チャレンジレスポンス認証 ===&lt;br /&gt;
&lt;br /&gt;
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。&lt;br /&gt;
&lt;br /&gt;
これは以下のように利用できます:&lt;br /&gt;
&lt;br /&gt;
* 真の二要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。&lt;br /&gt;
* 「準」二要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。&lt;br /&gt;
&lt;br /&gt;
2つのチャレンジレスポンス認証アルゴリズムがあります:&lt;br /&gt;
&lt;br /&gt;
* HMAC-SHA1&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|yubikey-personalization-gui}} を使って GUI で、あるいは以下の指示で設定できます。&lt;br /&gt;
&lt;br /&gt;
==== HMAC-SHA1 アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --generate 2&lt;br /&gt;
&lt;br /&gt;
キーを与えるための {{ic|--generate}} フラグは省略できます ({{ic|ykman otp chalresp --help}} を参照)。キーを与える主な利点は、バックアップ用の2つ目のデバイスをセットアップする際に使用できることです。例えば、{{ic|openssl rand -hex 20}} は適切な鍵を生成します。&lt;br /&gt;
&lt;br /&gt;
==== Yubico OTP アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、{{ic|ykpersonalize}} を使用できます。スロット2にランダムな鍵を生成してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykpersonalize -2 -ochal-resp -ochal-yubico&lt;br /&gt;
&lt;br /&gt;
さらなる情報は {{man|1|ykpersonalize}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== チャレンジを送信 ====&lt;br /&gt;
&lt;br /&gt;
チャレンジを送信してレスポンスを受信するには、{{ic|ykchalresp -&#039;&#039;slot&#039;&#039; &#039;&#039;challenge&#039;&#039;}} コマンドを使用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykchalresp -2 &#039;&#039;archie&#039;&#039;|&lt;br /&gt;
12a19763be77d75af46fb76f0b737c117fa47205&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このコマンドは、プログラム済みのスロット2のユニークな 40 バイトの SHA1 ハッシュ値を返します。チャレンジが異なると、異なるユニークなレスポンスが返されます。&lt;br /&gt;
&lt;br /&gt;
=== 静的パスワード ===&lt;br /&gt;
&lt;br /&gt;
静的パスワードも生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static --generate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、パスワードを与えることも:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static &#039;&#039;slot&#039;&#039; &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は {{ic|ykman otp static --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ほとんどの YubiKey では、静的パスワードを保存するためのスロットの数 (2個) は限られています。チャレンジレスポンス認証のスロットは、無制限のチャレンジに対して静的ハッシュ値のレスポンスを提供します。これらは数字と小文字アルファベットのみですが、レスポンスの長さによってかなりのエントロピーが生まれます。}}&lt;br /&gt;
&lt;br /&gt;
=== エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット({{ic|cbdefghijklnrtuv}})、数値 {{ic|0-9}}、{{ic|!}} に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。&lt;br /&gt;
&lt;br /&gt;
Yubico はこの問題に関する[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf 白書]を提供しています。&lt;br /&gt;
&lt;br /&gt;
== OATH ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は2つの [[OATH]] 実装を提供します:&lt;br /&gt;
; OATH API: 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)&lt;br /&gt;
; OTP slot: 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)&lt;br /&gt;
&lt;br /&gt;
=== OATH API ===&lt;br /&gt;
&lt;br /&gt;
GUI がお好みならば、{{Pkg|yubioath-desktop}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は、{{ic|ykman oath uri}} を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:&lt;br /&gt;
&lt;br /&gt;
 $ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri&lt;br /&gt;
&lt;br /&gt;
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --touch &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP 鍵をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --oath-type HOTP &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
認証情報を一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath list&lt;br /&gt;
&lt;br /&gt;
コードを生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath code &#039;&#039;query&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なサブコマンドをすべて見るには、{{ic|ykman oath --help}} を実行してください。それぞれのサブコマンドの情報を見るには、{{ic|ykman oath &#039;&#039;subcommand&#039;&#039; --help}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== OTP スロット実装 ===&lt;br /&gt;
&lt;br /&gt;
スロット2で HOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp hotp 2 &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --totp &#039;&#039;slot&#039;&#039; &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate --totp &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman otp --help}} と https://developers.yubico.com/OATH/ も参照してください。&lt;br /&gt;
&lt;br /&gt;
== U2F ==&lt;br /&gt;
&lt;br /&gt;
YubiKey を用いた [[Universal 2nd Factor]] (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは &#039;FIDO&#039; とも呼ばれていることに注意してください。{{ic|ykman}} ユーティリティを通じていくつかの限定された管理オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* PIN を設定:  {{ic|ykman fido access change-pin}}&lt;br /&gt;
* 個別の資格情報を削除: {{ic|ykman fido credentials delete &#039;&#039;QUERY&#039;&#039;}}&lt;br /&gt;
* すべての資格情報と PIN をリセット: {{ic|ykman fido reset}}&lt;br /&gt;
&lt;br /&gt;
U2F を認証に使用するには、[[U2F]] の指示を見てください。&lt;br /&gt;
&lt;br /&gt;
[[WebAuthn]] も参照。&lt;br /&gt;
&lt;br /&gt;
== CCID スマートカード ==&lt;br /&gt;
&lt;br /&gt;
CCID (Chip Card Interface Device) は、スマートカードリーダーとして振る舞う USB デバイスによって使用されたり、YubiKey のように USB を通して直接接続するセキュリティトークンで使用されたりする USB 標準デバイスクラスです。HID (Human Interface Device) と CCID は両方とも USB デバイスクラスです。つまり、これらは USB 仕様の同じカテゴリに属すということです。HID は、キーボードなどのようなコンピュータ周辺機器のための仕様です。YubiKey は、OTP モードと FIDO モードで使用されたときは USB (HID) キーボードのように働きます。しかし、PIV アプリケーションを使用する時や OpenPGP デバイスとして使用する時は CCID プロトコルに切り替わります。&lt;br /&gt;
&lt;br /&gt;
CCID モードは 2015 年11以降に出荷された YubiKey のすべてでデフォルトで有効になっているはずです[https://www.yubico.com/support/knowledge-base/categories/articles/use-yubikey-yubikey-windows-hello-app/]。少なくとも CCID モードは有効化してください。[[#有効になっているモードを取得]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PIV ===&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO 以降から、YubiKey はチップ上に PIV (Personal Identity Verification) アプリケーションが含まれています。PIV は、RSA や ECC(楕円曲線暗号) を使用するトークンが個人電子証明書にどのように使用されるかを定めた米国政府規格(FIPS 201)です。YubiKey NEO は RSA 暗号のみをサポートしますが、その後のモデル(YubiKey 4 と 5)は RSA と ECC の両方をサポートします。PIV トークンの特徴は、秘密鍵を保護しオンチップで動作するように構築されているという点です。秘密鍵は、トークン上にインストールされた後は決してトークン外に出ることはありません。オプションで、オンチップの乱数生成器を使って秘密鍵をオンチップで生成することもできます。秘密鍵がオンチップで生成された場合、秘密鍵はチップの外部で処理されることはなく、トークンから秘密鍵を復元する方法もありません。PIV メカニズムを使用する際は、YubiKey は CCID デバイスとして機能します。&lt;br /&gt;
&lt;br /&gt;
=== OpenPGP スマートカード ===&lt;br /&gt;
&lt;br /&gt;
YubiKey は標準の GPG スマートカードとしてとして振る舞うことができます; セットアップと使用法に関する説明は [[GnuPG#スマートカード]] セクションを見てください。Yubico は https://developers.yubico.com/PGP/ でドキュメントも提供しています。&lt;br /&gt;
&lt;br /&gt;
他の機能(U2F と OTP)を使用したくない場合、ボタンはキーを挿入/除去するように設定でき、自動除去のタイムアウトも設定できます。詳細は [[#USB 接続モード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザ PIN は {{ic|123456}} で、デフォルトの admin PIN は {{ic|12345678}} です。デフォルトの PUK も {{ic|12345678}} です。覚えておきましょう。&lt;br /&gt;
&lt;br /&gt;
== 使用例 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、様々な認証の目的での YubiKey の使用法について説明しています。しかし、以下は使用法について完全に網羅されたリストではありません。&lt;br /&gt;
&lt;br /&gt;
=== LUKS による完全なディスク暗号化 ===&lt;br /&gt;
&lt;br /&gt;
複数の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;チャレンジレスポンス認証:&#039;&#039;&#039; とあるチャレンジに対する[[#チャレンジレスポンス認証|レスポンス]]が LUKS 鍵として使用されます。チャレンジは、真の二要素認証においてはパスワードとして機能し、一要素認証においてはチャレンジは平文で保存することができます。&lt;br /&gt;
* &#039;&#039;&#039;GnuPG:&#039;&#039;&#039; YubiKey の [[#CCID スマートカード|PGP スマートカード]]の機能を使用します。長いパスフレーズ無しで強力な二要素認証を提供します。&lt;br /&gt;
* &#039;&#039;&#039;FIDO HMAC Secret:&#039;&#039;&#039; あなたの YubiKey が [[U2F]] をサポートしているのであれば、共通鍵を返すように設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスクの暗号化の強度は、使用している鍵のうち最も弱いものの強さと同じです。上記のツールの内一つを設定したら、初期のパスフレーズを削除するか、より長いものに置き換えることを検討してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 共通の前提条件 ====&lt;br /&gt;
&lt;br /&gt;
* [[dm-crypt/システム全体の暗号化|LUKS により暗号化された]]起動可能なシステム。少なくとも1つの空きキースロットがあり、{{ic|encrypt}} [[mkinitcpio]] フックを使用していること。&lt;br /&gt;
** {{AUR|mkinitcpio-ykfde}} を例外として、{{ic|sd-encrypt}} はこれらのツールの全てでサポートされていません。&lt;br /&gt;
* LUKS ヘッダーのバックアップ(任意ですが、推奨)&lt;br /&gt;
&lt;br /&gt;
==== チャレンジレスポンス認証 ====&lt;br /&gt;
&lt;br /&gt;
完全な手順については {{Pkg|yubikey-full-disk-encryption}} の [https://github.com/agherzan/yubikey-full-disk-encryption#usage 公式ドキュメント] を見てください。大まかには:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-full-disk-encryption}} をインストール。&lt;br /&gt;
# {{ic|/etc/ykfde.conf}} を設定。&lt;br /&gt;
# 対象のディスクを登録: {{ic|# ykfde-enroll -d /dev/&#039;&#039;DISK&#039;&#039; -s &#039;&#039;LUKS_SLOT&#039;&#039;}}&lt;br /&gt;
# {{ic|ykfde}} [[mkinitcpio#HOOKS|mkinitcpio フック]] を {{ic|encrypt}} フックの前に追加。&lt;br /&gt;
# [[Initramfs の再生成]]&lt;br /&gt;
&lt;br /&gt;
:{{Note|Plymouth ユーザーは、{{ic|plymouth-encrypt}} フックを {{ic|ykfde}} フックに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
いくつかの利用可能なバリエーションがあります:&lt;br /&gt;
&lt;br /&gt;
* 2FA: デフォルトの挙動。対象デバイスの登録時、および起動時にパスワードとしてチャレンジを与えなければなりません。&lt;br /&gt;
* 1FA: {{ic|ykfde.conf}} に {{ic|YKFDE_CHALLENGE}} を設定してください。これは平文で保存されることに注意してください。このファイルに対する非ルートユーザの読み込みアクセスを禁止することを検討してください。&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-nfc-support-in-ykfde-initramfs-hook-experimental NFC サポート] (実験的)&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-ykfde-suspend-service-experimental サスペンドと復帰のサポート] (実験的) サスペンド時に、暗号化されたボリュームが自動的にロックされます。復帰時に自動でアンロックします。&lt;br /&gt;
&lt;br /&gt;
設定の変更を行った時は、変更を反映させるために initramfs の再生成を行わなければなりません。&lt;br /&gt;
&lt;br /&gt;
==== systemd ベースの initramfs ====&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックのユーザは {{AUR|mkinitcpio-ykfde}} か {{AUR|mkinitcpio-ykfde-git}} をインストールし、[https://github.com/eworm-de/mkinitcpio-ykfde/blob/master/README-mkinitcpio.md プロジェクトのドキュメント]にある手順に従ってください。手順は、大まかに言えば {{Pkg|yubikey-full-disk-encryption}} に似ています。&lt;br /&gt;
&lt;br /&gt;
==== GnuPG 暗号化キーファイル ====&lt;br /&gt;
&lt;br /&gt;
これを行うためのツールの一つは [https://github.com/fuhry/initramfs-scencrypt initramfs-scencrypt] です。完全な手順についてはドキュメントを見てください。2022年10月以降、このパッケージは、GitHub で PKGBUILD が提供されていますが、AUR に存在せず、徹底的にテストもされていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/特記事項#GPG や OpenSSL で暗号化されたキーファイルを使う|Dm-crypt のページ]]ではいくつかの代替策が提示されています。しかし、それらの殆どがフォーラムの古い投稿へのリンクです。&lt;br /&gt;
&lt;br /&gt;
==== FIDO2 プロトコルの HMAC secret extension ====&lt;br /&gt;
&lt;br /&gt;
YubiKey を完全ディスク暗号化に使うもう一つの方法は、[https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#sctn-hmac-secret-extension HMAC Secret Extension] を使用して、YubiKey から LUKS のパスワードを取得することです。これはパスフレーズによって保護することができます。この機能には、少なくとも[https://support.yubico.com/hc/en-us/articles/360016649319-YubiKey-5-2-3-Enhancements-to-FIDO-2-Support ファームウェア 5.2.3+ のYubiKey 5] が必要です。&lt;br /&gt;
パスフレーズによる保護の方法では、{{AUR|khefin}} をインストールし、[https://github.com/mjec/khefin/wiki/Arch-Linux-LUKS-configuration プロジェクトのドキュメント]にある手順に従ってください。&lt;br /&gt;
systemd 248 以降での(任意で PIN による保護が施された)1要素による方法では、FIDO2 キーを LUKS2 キースロットとして使用できます。手順は[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html 作者のブログ投稿]で見られます。&lt;br /&gt;
&lt;br /&gt;
=== KeePass ===&lt;br /&gt;
&lt;br /&gt;
[[KeePass]] は YubiKey をサポートするように設定できます。手順は [[KeePass#Yubikey|YubiKey セクション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== SSH 鍵 ===&lt;br /&gt;
&lt;br /&gt;
==== CCID ====&lt;br /&gt;
&lt;br /&gt;
あなたの YubiKey が CCID スマートカードをサポートしているのであれば、GPG 鍵や PIV 鍵のどちらかをベースとしてハードウェアによる [[SSH 鍵]] として使用することができます。Yubico は品質の良いドキュメントを提供しています:&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html PGP と PIV の両方の可能性から見た概要]、それらの利点と欠点を挙げています。&lt;br /&gt;
* [https://developers.yubico.com/PGP/SSH_authentication/index.html PGP 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html ユーザ証明書による PIV 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html #PKCS11 による PIV 認証]のための手順&lt;br /&gt;
&lt;br /&gt;
:{{Note|YubiKey 上の PIV アプリケーションデフォルトの PIN コードは {{ic|123456}} です。デフォルトの管理キーと一緒に PIN コードも変更しておくべきでしょう。詳細は [https://developers.yubico.com/PIV/Guides/Device_setup.html デバイスセットアップの手順] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== U2F ====&lt;br /&gt;
&lt;br /&gt;
YubiKey の U2F の機能を使用してハードウェアによる SSH 鍵を作成することもできます。手順は [[SSH 鍵#FIDO/U2F]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== PIV ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|yubikey-agent}} は SSH 鍵 を PIV トークンとして保存します。セットアップガイドは https://github.com/FiloSottile/yubikey-agent#readme を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PAM を用いた Linux ユーザ認証 ===&lt;br /&gt;
&lt;br /&gt;
ユーザ認証のために [[PAM]] を使用するすべてのものは、ユーザ認証のプロセスの一つの要素として YubiKey を使用するように設定できます。これには sudo、su、ssh、スクリーンロッカー、ディスプレイマネージャー、そして Linux システムがユーザを認証する必要のあるほぼすべての場面を含みます。その柔軟な設定により、システム全体や特定のアプリケーション、あるいはアプリケーションのグループに対して、あなたのニーズに合う認証要件を自由に設定することができます。例えば、ローカルセッションではパスワードの代わりとして YubiKey を受け入れ、リモートのセッションでは両方を要求することができます。これがどのように機能し、どのように設定するのかを理解するために、Arch Wiki の記事に加えて、{{man|8|pam}} や {{man|5|pam.conf}} を読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
YubiKey がサポートするプロトコルを PAM に統合するのに利用できるモジュールが複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|pam-u2f}} - FIDO2 規格による [[#U2F]] をサポート。どの手法を使うべきかわからない場合、これが良い選択です。&lt;br /&gt;
** [[Universal 2nd Factor#Arch Linux の認証|Arch Wiki の記事]]&lt;br /&gt;
** [https://developers.yubico.com/pam-u2f/ Yubico の公式ドキュメント]、サポートされるモジュールパラメータのリストがあります。&lt;br /&gt;
** Man ページ: {{man|8|pam_u2f}}、{{man|1|pamu2fcfg}}&lt;br /&gt;
* {{Pkg|oath-toolkit}} - [[#OATH]] ワンタイムパスワードをサポート(HOTP か TOTP)。&lt;br /&gt;
** [[pam_oath]]&lt;br /&gt;
* {{Pkg|yubico-pam}} - [[#Yubico OTP]] と チャレンジレスポンス認証 OTP をサポート。Yubico OTP モードでは認証サーバーへのネットワーク接続が必要であることに注意してください。チャレンジレスポンス認証では必要ありません。&lt;br /&gt;
** [https://developers.yubico.com/yubico-pam/ Yubico の公式ドキュメント]&lt;br /&gt;
** {{man|8|pam_yubico}} - チャレンジレスポンス認証モードを設定するのに使用される {{ic|mode}} パラメータに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|PAM の設定ファイルを変更する際には厳重な注意が必要です。間違うと、システムが完全に安全ではなくなったり、安全すぎて認証できなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
PAM の設定はこの記事の範囲を超えますが、簡単な概要としては:&lt;br /&gt;
&lt;br /&gt;
* 認証されたキーを含むファイルをホームディレクトリ内か一元的に作成する。&lt;br /&gt;
* 適切な PAM 設定ファイルの適切な場所に、以下のフォーマットに従う行を追加する:&lt;br /&gt;
    auth [required|sufficient] [module_name].so [module arguments]&lt;br /&gt;
* 多要素認証には {{ic|auth required}}、単一要素認証には {{ic|auth sufficient}}。&lt;br /&gt;
* {{ic|module_name}} - 例: {{ic|pam_u2f.so}}。インストールされているモジュールのリストを見てください: {{ic|ls /usr/lib/security }}&lt;br /&gt;
* モジュールの設定引数は、キーファイルの場所や、認証するためにどの手法をモジュールが使用すべきかなどです。&lt;br /&gt;
&lt;br /&gt;
==== SSH における注意事項 ====&lt;br /&gt;
&lt;br /&gt;
* Yubico は[https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html 追加のガイダンス]を公開しています。これは Ubuntu の古いバージョン向けですが、アップデートされている Arch システムにも適用できます。&lt;br /&gt;
* 遠隔地にあるサーバを YubiKey を使用するように設定する場合、追加で少なくとも一つの緊急用 SSH セッションを開いておくべきです。こうすれば、設定ミスにより締め出されないで済みます。&lt;br /&gt;
* {{ic|/etc/ssh/sshd_config}} に以下の設定が含まれていることを確認してください。{{Pkg|openssh}} に同梱されている {{ic|sshd_config}} はデフォルトでこれらが正しく設定されています。&lt;br /&gt;
    ChallengeResponseAuthentication no&lt;br /&gt;
    UsePAM yes&lt;br /&gt;
&lt;br /&gt;
=== ブラウザ/web 統合 ===&lt;br /&gt;
&lt;br /&gt;
多くのウェブサービスが FIDO ハードウェアトークンをサポートし始めています。詳細は [[U2F]] や [[WebAuthn]] のページを見てください。しかし、通常、するべきことといえば {{Pkg|libfido2}} をインストールして [https://demo.yubico.com/webauthn-technical/registration 試してみる]ことくらいです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey デバイスの挿入/除去時にアクションを実行する ===&lt;br /&gt;
&lt;br /&gt;
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成し、以下の内容を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;, ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, RUN+=&amp;quot;&#039;&#039;/usr/local/bin/script args&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを &amp;quot;remove&amp;quot; ではなく &amp;quot;add&amp;quot; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 挿入時に Yubico Authenticator を開始する ===&lt;br /&gt;
&lt;br /&gt;
Authenticator は長時間実行される GUI プロセスです。Udev ルール内で直接実行すると、プロセスが udev の処理をブロックしてしまいます。フォークすると、イベント処理の終了後に udev は無条件で (フォークによって生成された) プロセスをキルしてしまいます。なので、authenticator を udev ルールから開始することはできません。しかし、systemd.device を使うことができます。&lt;br /&gt;
&lt;br /&gt;
上記と同じように、{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成して、以下の内容を書き込んでください:&lt;br /&gt;
&lt;br /&gt;
 ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, SYMLINK+=&amp;quot;yubikey&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして、新しい systemd [[ユーザーユニット]]を[[作成]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/yubioath-desktop.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Autostart Yubico Authenticator&lt;br /&gt;
# Uncomment if you want to stop the authenticator when unplugged.&lt;br /&gt;
#StopPropagatedFrom=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/yubioath-desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、このユニットを[[有効化]]してください。&#039;&#039;systemctl&#039;&#039; が、このユニットが存在しない {{ic|dev-yubikey.device}} ユニットの依存関係として追加されたことを警告してきますが、問題ありません。このユニットは、YubiKey が挿入されると開始されます。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス/アップグレード ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey NEO 用に OATH アプレットをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のステップは、ファームウェアバージョン &amp;lt;= 3.1.2 の NEO でのみ必要です。現在の世代の NEO (U2F 搭載) は OpenPGP アプレットがすでにインストールされています。}}&lt;br /&gt;
&lt;br /&gt;
==== NEO を CCID デバイスとして設定する ====&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-personalization-gui}} ({{AUR|yubikey-personalization-gui-git}}) を[[インストール]]。&lt;br /&gt;
# udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。&lt;br /&gt;
# {{ic|ykpersonalize -m82}} を実行し、{{ic|y}} を入力、エンターを押す。&lt;br /&gt;
&lt;br /&gt;
==== アプレットをインストールする ====&lt;br /&gt;
&lt;br /&gt;
# {{AUR|gpshell}}、{{AUR|gppcscconnectionplugin}}、{{AUR|globalplatform}}、{{Pkg|pcsclite}} を[[インストール]]。&lt;br /&gt;
# {{ic|pcscd.service}} を[[起動]]。&lt;br /&gt;
# 最も最近の CAP ファイルを [https://developers.yubico.com/ykneo-oath/Releases/ ykneo-oath] サイトからダウンロード。&lt;br /&gt;
# {{ic|gpinstall.txt}} を [https://github.com/Yubico/ykneo-oath/blob/master/gpinstall.txt GitHub] からダウンロード。&lt;br /&gt;
# gpinstall.txt を編集して {{ic|install -file}} から始まる行を CAP ファイルが置かれているパスに修正。&lt;br /&gt;
# ターミナルを開き、{{ic|gpshell &#039;&#039;path/to/gpinstall.txt&#039;&#039;}} を実行。&lt;br /&gt;
# 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;Command --&amp;gt; 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100&lt;br /&gt;
Wrapped command --&amp;gt; 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77&lt;br /&gt;
27D0EDA00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
Command --&amp;gt; 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000&lt;br /&gt;
Wrapped command --&amp;gt; 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
card_disconnect&lt;br /&gt;
release_context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# NEO を抜き、Yubico Authenticator アプリで試す。&lt;br /&gt;
&lt;br /&gt;
==== (任意)Yubico Authenticator デスクトップクライアントをインストールする ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|yubioath-desktop}} をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcscd.service}} が実行中の間に、{{ic|yubioath-desktop}} を実行して、プロンプトが表示されたら YubiKey を挿入してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が HID デバイスとして機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[https://github.com/systemd/systemd/commit/d45ee2f31a8358db0accde2e7c81777cedadc3c2 バージョン 244以降の systemd は]この機能に対するネイティブサポートを追加したので、以下のステップはもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
[https://michaelheap.com/yubikey-on-arch/ この記事]で説明されているように、udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-security-key.rules|2=&lt;br /&gt;
KERNEL==&amp;quot;hidraw*&amp;quot;, SUBSYSTEM==&amp;quot;hidraw&amp;quot;, MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;users&amp;quot;, ATTRS{idVendor}==&amp;quot;2581&amp;quot;, ATTRS{idProduct}==&amp;quot;f1d0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|udevadm trigger}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== ykman が YubiKey に接続できない ===&lt;br /&gt;
&lt;br /&gt;
マネージャが YubiKey への接続に失敗する場合、{{ic|pcscd.service}} か {{ic|pcscd.socket}} が起動していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions. ===&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|scdaemon}} がすでにデバイスの排他的な制御を取得している場合に {{ic|ykman}} がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[https://github.com/Yubico/yubikey-manager/issues/35]&lt;br /&gt;
&lt;br /&gt;
これを修正するには、{{ic|~/.gnupg/scdaemon.conf}} 内であなたのデバイスに対して {{ic|reader-port}} オプションを正しい値で設定することができます。[https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG]&lt;br /&gt;
&lt;br /&gt;
{{Note|これにより、ykman を通して YubiKey にアクセスするたびに gpgagent が YubiKey をアンロックするプロンプトを表示するようになります。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO と YubiKey 4 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubikey&lt;br /&gt;
&lt;br /&gt;
YubiKey 5 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubi&lt;br /&gt;
&lt;br /&gt;
=== YubiKey がゲスト VM 内でバインドできない ===&lt;br /&gt;
&lt;br /&gt;
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの [[dmesg]] からバスとポートの情報を手に入れる必要があります:&lt;br /&gt;
&lt;br /&gt;
 # dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E &#039;s/^\&amp;lt;nowiki&amp;gt;[[^]]&amp;lt;/nowiki&amp;gt;+\] usb (&amp;lt;nowiki&amp;gt;[^:]&amp;lt;/nowiki&amp;gt;*):.*/\1/&#039;&lt;br /&gt;
&lt;br /&gt;
出力の USB id は {{ic|X-Y.Z}} または {{ic|X-Y}} の形式であるはずです。そして、ホスト上で、{{ic|find}} を使って {{ic|/sys/bus/usb/drivers}} を検索し、YubiKey がバインドしているドライバを探します (例: {{ic|usbhid}} または {{ic|usbfs}})。&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/bus/usb/drivers -name &amp;quot;*X-Y.Z*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デバイスのバインドを解除するには、先のコマンドの出力を使ってください (つまり、{{ic|/sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/X-Y.Z:1.0}}):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;X-Y.Z:1.0&#039; &amp;gt; /sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/unbind&lt;br /&gt;
&lt;br /&gt;
=== Error: [key] could not be locally signed or gpg: No default secret key: No public key ===&lt;br /&gt;
&lt;br /&gt;
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、[[pacman-key|Pacman]] が {{ic|pacman-key --populate}} で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が Yubico Authenticator で消えたり現れたりする ===&lt;br /&gt;
&lt;br /&gt;
これは、CCID ドライバがインストールされていない際に起こります。{{Pkg|ccid}} パッケージを[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey core error: timeout ===&lt;br /&gt;
&lt;br /&gt;
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|YubiKey|2024-08-26|814790}}&lt;/div&gt;</summary>
		<author><name>田中</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40648</id>
		<title>YubiKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=YubiKey&amp;diff=40648"/>
		<updated>2025-08-02T11:10:31Z</updated>

		<summary type="html">&lt;p&gt;田中: /* インストール */ 上流で開発が終了した、推奨されないツールを除去&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:OpenPGP]]&lt;br /&gt;
[[Category:スマートカード]]&lt;br /&gt;
[[Category:Universal 2nd Factor]]&lt;br /&gt;
[[en:YubiKey]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Universal 2nd Factor}}&lt;br /&gt;
{{Related|OATH}}&lt;br /&gt;
{{Related|dm-crypt/システム全体の暗号化}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|KeePass}}&lt;br /&gt;
{{Related|OpenPGP-card-tools}}&lt;br /&gt;
{{Related|スマートカード}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.yubico.com YubiKey] は小さな [[Wikipedia:ja:セキュリティトークン|USB セキュリティトークン]]です。モデルにも依りますが、以下のようなことができます:&lt;br /&gt;
&lt;br /&gt;
* スマートカードのように振る舞う([[Wikipedia:CCID (protocol)|CCID protocol]] を使用) - [https://developers.yubico.com/PGP/ PGP] と [https://developers.yubico.com/PIV/ PIV] 秘密鍵の両方を保存できます。&lt;br /&gt;
* [[Universal 2nd Factor]] (U2F) リクエストを処理する。&lt;br /&gt;
* 約 30 個の[[オープン認証イニシアチブ]] (OATH) 資格情報を保存・クエリする。&lt;br /&gt;
* Yubico OTP モードか HMAC-SHA1 モードで[[Wikipedia:Challenge–response authentication|チャレンジレスポンス認証]]を処理する。&lt;br /&gt;
* [[Wikipedia:ja:ワンタイムパスワード|ワンタイムパスワード]] (OTP) を生成する - [https://developers.yubico.com/OTP/ Yubico&#039;s AES based standard]。&lt;br /&gt;
* 63 文字までの静的パスワードを&amp;quot;入力&amp;quot;する。&lt;br /&gt;
&lt;br /&gt;
多くの機能を提供する一方、YubiKey の新しいバージョンは[https://www.yubico.com/blog/secure-hardware-vs-open-source/ オープンソースとしてリリースされていません]。代替としては [[Solo]]、[[Tillitis TKey|TKey]]、[[Nitrokey]] があります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== 管理ツール ===&lt;br /&gt;
&lt;br /&gt;
* {{App|YubiKey Manager|USB を通して YubiKey の設定とクエリをするための Python ライブラリとコマンドラインツール({{ic|ykman}})。|https://developers.yubico.com/yubikey-manager/|{{Pkg|yubikey-manager}}}&lt;br /&gt;
::{{Note|インストール後、{{ic|pcscd.service}} を[[有効化]]してください。}}&lt;br /&gt;
* {{App|YubiKey Personalization|OTP USB 接続を通して YubiKey の設定とクエリをするためのライブラリとツール。ykman よりも強力ですが、使うのが難しいです。オプションの GUI あり。|https://developers.yubico.com/yubikey-personalization/|{{Pkg|yubikey-personalization}}, {{Pkg|yubikey-personalization-gui}}}}&lt;br /&gt;
&lt;br /&gt;
=== 認証ツール ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Yubico PAM|Yubico OTP または チャレンジレスポンス認証による [[PAM]] ユーザ認証。|https://developers.yubico.com/yubico-pam/|{{Pkg|yubico-pam}}}}&lt;br /&gt;
* {{App|Yubico PAM-U2F|[[U2F]] により [[PAM]] ユーザ認証。|https://developers.yubico.com/pam-u2f/|{{Pkg|pam-u2f}}}}&lt;br /&gt;
* {{App|Yubico Authenticator for Desktop|USB を通して YbiKey から OATH コードを読み込む GUI。古いスロットベースの実装 (YubiKey Standard と Edge) と新しい OATH 実装をサポート (YubiKey NEO と 4)。注: [https://gitlab.archlinux.org/archlinux/packaging/packages/yubioath-desktop/-/issues/2 archlinux/packaging/packages/yubioath-desktop]。&amp;lt;!-- TODO: issue テンプレートを使う --&amp;gt;|https://developers.yubico.com/OATH/YubiKey_OATH_software.html|{{Pkg|yubioath-desktop}}}}&lt;br /&gt;
* {{App|Yubico Authenticator 6.0+ for Desktop|Yubico Authenticator 6.0+ (バージョン 6.0 及びそれ以降) は、YubiKey の第二要素クレデンシャルを管理するためのアプリケーションです。バージョン 6.0 から、コードベースが Flutter フレームワークを使って完全に書き換えられました。|https://developers.yubico.com/yubioath-flutter/|{{AUR|yubico-authenticator-bin}}}}&lt;br /&gt;
* {{App|libfido2|クライアントサイドの U2F サポート。ウェブブラウザで U2F プロトコルを YubiKey による認証のために利用できるようになります。|https://developers.yubico.com/libfido2/|{{Pkg|libfido2}}}}&lt;br /&gt;
* {{App|YubiKey Full Disk Encryption|チャレンジレスポンスモードを使用し、強力な LUKS パスフレーズを生成します。完全なディスク暗号化をサポート。|https://github.com/agherzan/yubikey-full-disk-encryption|{{Pkg|yubikey-full-disk-encryption}}}}&lt;br /&gt;
&lt;br /&gt;
== 入力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は、USB を通して API を呼び出したりボタンを押したりする形で入力を受け付けます。&lt;br /&gt;
&lt;br /&gt;
ボタンはとても敏感です。状況にも依りますが、ボタンを押すと以下のどれか1つを行います:&lt;br /&gt;
&lt;br /&gt;
* 静的パスワードやワンタイムパスワード(OTP)をトリガーする(短く押すとスロット1、長く押すとスロット2)。これはデフォルトの挙動で、うっかりトリガーしてしまうことは簡単です。&lt;br /&gt;
* 機能やアクセスを確定/許可する。LED が点灯し、ユーザに入力を促します。&lt;br /&gt;
* スマートカードを挿入/除去する。&lt;br /&gt;
&lt;br /&gt;
== 出力 ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は以下の入力を出力に変換します:&lt;br /&gt;
&lt;br /&gt;
* キーストローク(USB キーボードをエミュレートします)、静的パスワードや OTP をタイプするために使用します。(静的パスワードはキーロガーに対して脆弱であることに注意してください。)&lt;br /&gt;
* 組み込みの LED は:&lt;br /&gt;
** 挿入した際に一度光ります。トラブルシューティングに便利です。&lt;br /&gt;
** API の応答を許可するためにボタンを押すことを要求された際に安定して光ります。&lt;br /&gt;
* USB を通した API 応答。これは以下のように使用されます:&lt;br /&gt;
** チャレンジレスポンス認証(Yubico OTP モードか HMAC-SHA1 モードを使って計算されます)&lt;br /&gt;
** U2F チャレンジレスポンス認証&lt;br /&gt;
** CCID スマートカード関連のリクエスト&lt;br /&gt;
&lt;br /&gt;
== USB 接続モード ==&lt;br /&gt;
&lt;br /&gt;
YubiKey のモデルによりますが、デバイスは3つまでの異なる USB インターフェイスを提供します。これらのインターフェイスのうち2つは USB HID (Human Interface Device) デバイスクラスを実装しています; 3つ目はスマートカードインターフェイス(CCID)です。3つすべて独立して有効化/無効化できます。これにより、それらに関連したプロトコルの制御ができます。&lt;br /&gt;
&lt;br /&gt;
以下の表はどのプロトコルがどのインターフェイスを使用するかを示しています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! プロトコル !! インターフェイス&lt;br /&gt;
|-&lt;br /&gt;
|OTP || Keyboard HID&lt;br /&gt;
|-&lt;br /&gt;
|FIDO || Other HID&lt;br /&gt;
|-&lt;br /&gt;
|PIV || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OpenPGP || CCID&lt;br /&gt;
|-&lt;br /&gt;
|OATH || CCID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は &amp;quot;modes&amp;quot; という用語を使用します、OTP、FIDO、CCID と名付けられています。&lt;br /&gt;
&lt;br /&gt;
{{Note|ykman はリリース 0.6.1 (2018-04-16)で &amp;quot;U2F&amp;quot; を &amp;quot;FIDO&amp;quot; と名前を変更しました。https://developers.yubico.com/yubikey-manager/Release_Notes.html}}&lt;br /&gt;
&lt;br /&gt;
=== 有効になっているモードを取得 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 5 以前の YubiKey では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman config mode|&lt;br /&gt;
Current connection mode is: OTP+FIDO+CCID&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ykman mode}} というコマンドは非推奨となっており、今後削除されるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey バージョン 5 では:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykman info|&lt;br /&gt;
Device type: YubiKey 5 NFC&lt;br /&gt;
Serial number: XXXXXXXXX&lt;br /&gt;
Firmware version: 5.4.3&lt;br /&gt;
Form factor: Keychain (USB-A)&lt;br /&gt;
Enabled USB interfaces: OTP, FIDO, CCID&lt;br /&gt;
NFC transport is enabled.&lt;br /&gt;
&lt;br /&gt;
Applications    USB     NFC&lt;br /&gt;
FIDO2           Enabled Enabled&lt;br /&gt;
OTP             Enabled Enabled&lt;br /&gt;
FIDO U2F        Enabled Enabled&lt;br /&gt;
OATH            Enabled Enabled&lt;br /&gt;
YubiHSM Auth    Enabled Enabled&lt;br /&gt;
OpenPGP         Enabled Enabled&lt;br /&gt;
PIV             Enabled Enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== モードをセット ===&lt;br /&gt;
&lt;br /&gt;
すべてのモードが出荷時から有効化されています。変更するには:&lt;br /&gt;
&lt;br /&gt;
 $ ykman mode &#039;&#039;[OPTIONS]&#039;&#039; &#039;&#039;MODE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} には文字列を使用できます。例えば、{{ic|OTP+FIDO+CCID}}。短い形式もあります: {{ic|o+f+c}}。&lt;br /&gt;
* {{ic|&#039;&#039;MODE&#039;&#039;}} にはモード番号を使用できます。複数の有効化するモードをエンコードしたものです。&lt;br /&gt;
&lt;br /&gt;
以下にモード番号の表があります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|0||OTP device only.&lt;br /&gt;
|-&lt;br /&gt;
|1||CCID device only.&lt;br /&gt;
|-&lt;br /&gt;
|2||OTP/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|3||U2F device only.&lt;br /&gt;
|-&lt;br /&gt;
|4||OTP/U2F composite device.&lt;br /&gt;
|-&lt;br /&gt;
|5||U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|6||OTP/U2F/CCID composite device.&lt;br /&gt;
|-&lt;br /&gt;
|81||CCID device only, with touch-eject.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の例では 86 という番号を使用しています。これは[https://github.com/Yubico/yubikey-manager/issues/20#issuecomment-326496204 無効な番号]です。80 は無視され、6 のように振る舞います。}}&lt;br /&gt;
&lt;br /&gt;
オプション:&lt;br /&gt;
* {{ic|--touch-eject}} - ボタンを押すとスマートカードを挿入/除去します。これは CCID のみのモードでのみ動作します; FIDO と OTP は無効化されていなければなりません。&lt;br /&gt;
* {{ic|--autoeject-timeout &#039;&#039;SECONDS&#039;&#039;}} - 一定時間立つとスマートカードを自動的に除去します。{{ic|--touch-eject}} と同じような制限があります。&lt;br /&gt;
* {{ic|--chalresp-timeout &#039;&#039;SECONDS&#039;&#039;}} - チャレンジレスポンス認証のタイムアウトを設定します。&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman mode --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ワンタイムパスワード ==&lt;br /&gt;
&lt;br /&gt;
どういうわけか、この機能には誤解を招く名前が付けられています。この機能には静的パスワードとチャレンジレスポンス認証の機能も含まれているのです。&lt;br /&gt;
&lt;br /&gt;
2つのスロットがこの機能のために提供されています。それぞれのスロットには、短くボタンを押したり、長くボタンを押すことでアクセスできます。それぞれのスロットは以下のうち&#039;&#039;&#039;1つ&#039;&#039;&#039;を設定できます:&lt;br /&gt;
&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
* OATH-HOTP&lt;br /&gt;
* OATH-TOTP&lt;br /&gt;
* チャレンジレスポンス認証&lt;br /&gt;
* 静的パスワード&lt;br /&gt;
&lt;br /&gt;
それぞれの機能には、作成時に提供できる複数の設定オプションがあります。しかし、一度設定すると読み返すことができません。{{ic|ykman otp swap}} により、スロット1とスロット2を入れ替えることはできます。&lt;br /&gt;
&lt;br /&gt;
=== 工場出荷時の設定 ===&lt;br /&gt;
&lt;br /&gt;
新しい YubiKey では、Yubico OTP がスロット1に事前に設定されています。この初期の AES 共通鍵はその YubiKey と Yubico の認証サーバーに保存されています。これにより、YubiCloud に対して認証でき、Yubico Forum ウェブサイトや https://demo.yubico.com と組み合わせて Yubico OTP を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|スロット1にある工場出荷時のキーを上書きしてしまうと、同じ信頼レベルの新しいキーを作成することはできなくなります。工場で生成された Yubico OTP 認証情報は {{ic|CC}} という接頭辞で始まります。一方、ユーザが生成した認証情報は {{ic|VV}} で始まります。セキュリティおよび機能的には基本的な違いはありませんが、一部のサービスは {{ic|CC}} の認証情報のみを信頼します。さらなる情報はこの[https://forum.yubico.com/viewtopic12ca.html?f%3D16&amp;amp;t%3D1960 フォーラムスレッド]で見られます。}}&lt;br /&gt;
&lt;br /&gt;
=== Yubico OTP ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.yubico.com/OTP/ Yubico OTP] は[[Wikipedia:ja:共通鍵暗号|共通鍵暗号]]に基づいています。より具体的には、それぞれの YubiKey にはそのデバイスにユニークな128ビットの [[Wikipedia:ja:Advanced_Encryption_Standard|AES]] 鍵が含まれており、この鍵は検証サーバーにも保存されています。パスワードを尋ねられた際には、YubiKey は鍵の ID、カウンタ、乱数などの異なるフィールドを連結し、その結果を暗号化することでトークンを作成します。&lt;br /&gt;
&lt;br /&gt;
この OTP は対象のシステムに送られ、検証サーバーに渡されます。検証サーバー(同じく秘密鍵を所有しています)はそれを復号し、内部の情報を検証します。その結果は対象のシステムに返されます。そして、システムはアクセスを許可するかどうかを判断することができます。&lt;br /&gt;
&lt;br /&gt;
==== YubiCloud と検証サーバー ====&lt;br /&gt;
&lt;br /&gt;
Yubico は、YubiCloud と呼ばれる、無料かつ制限無しでアクセスできる検証サーバーを提供しています。YubiCloud はすべての YubiKey の工場出荷時の設定を把握しており、これは (例えば) {{Pkg|yubico-pam}} によって使用される「デフォルト」の検証サービスです。Yubico はまた、サーバーの[https://developers.yubico.com/Software_Projects/Yubico_OTP/YubiCloud_Validation_Servers/ オープンソースの実装]も提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Yubico の検証サーバーを認証する場合:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HMAC&#039;&#039;&#039; を使用: https://upgrade.yubico.com/getapikey/ から HMAC 鍵と ID を取得してください。&lt;br /&gt;
* &#039;&#039;&#039;HTTPS&#039;&#039;&#039; を使用: 検証サーバーの証明書は GoDaddy によって署名されています。Arch ではデフォルトで GoDaddy を信頼しています ({{Pkg|ca-certificates}} をインストールしていれば)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 設定と使用 ====&lt;br /&gt;
&lt;br /&gt;
スロットに新しいキーを生成してください。そして、それを YubiCloud にアップロードしてください(ブラウザで開きます):&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp yubiotp --generate-key --upload 2&lt;br /&gt;
&lt;br /&gt;
さらなる情報は、{{ic|ykman otp yubiotp --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
==== セキュリティリスク ====&lt;br /&gt;
&lt;br /&gt;
===== AES 鍵の漏洩 =====&lt;br /&gt;
&lt;br /&gt;
ご想像の通り、AES 鍵は絶対に秘密にする必要があります。Yubikey から AES 鍵を抜き取ることはできません (少なくともソフトウェアを使って抜き取るのは不可能に近い)。AES 鍵は検証サーバーにも存在するため、このサーバーのセキュリティというのがとても重要になります。&lt;br /&gt;
&lt;br /&gt;
===== 検証リクエスト/レスポンスの盗聴 =====&lt;br /&gt;
&lt;br /&gt;
システムは検証サーバーの決定に従っているため、検証サーバーになりすます攻撃が考えられます。これを防ぐには、対象のシステムが、HMAC か HTTPS を使用して、検証サーバーを認証する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== チャレンジレスポンス認証 ===&lt;br /&gt;
&lt;br /&gt;
チャレンジは YubiKey に送られ、YubeKey はとある秘密に基づいてレスポンスを計算します。同じチャレンジに対しては常に同じレスポンスが返されます。その秘密無しでは、この計算は現実的ではありません。たとえ、大量のチャレンジレスポンス認証を行ったとしてもです。&lt;br /&gt;
&lt;br /&gt;
これは以下のように利用できます:&lt;br /&gt;
&lt;br /&gt;
* 真の二要素認証: ユーザーはチャレンジを与えられ、パスワードに加えて正しいレスポンスを返さなければなりません。両方が秘密鍵を持っていなければなりません。&lt;br /&gt;
* 「準」二要素認証: チャレンジはパスワードのように振る舞い、サーバーは正しいレスポンスを保持しています。これは OTP ではなく、レスポンス鍵を手に入れれば誰でもアクセス許可を得ることができます。しかし、サーバーが秘密鍵を必要としないので、よりシンプルです。&lt;br /&gt;
&lt;br /&gt;
2つのチャレンジレスポンス認証アルゴリズムがあります:&lt;br /&gt;
&lt;br /&gt;
* HMAC-SHA1&lt;br /&gt;
* Yubico OTP&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|yubikey-personalization-gui}} を使って GUI で、あるいは以下の指示で設定できます。&lt;br /&gt;
&lt;br /&gt;
==== HMAC-SHA1 アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
生成された鍵を使ってスロット2をチャレンジレスポンス認証モードで設定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --generate 2&lt;br /&gt;
&lt;br /&gt;
キーを与えるための {{ic|--generate}} フラグは省略できます ({{ic|ykman otp chalresp --help}} を参照)。キーを与える主な利点は、バックアップ用の2つ目のデバイスをセットアップする際に使用できることです。例えば、{{ic|openssl rand -hex 20}} は適切な鍵を生成します。&lt;br /&gt;
&lt;br /&gt;
==== Yubico OTP アルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は chal-yubico アルゴリズムの設定にはサポートしていないようです。しかし、{{ic|ykpersonalize}} を使用できます。スロット2にランダムな鍵を生成してください:&lt;br /&gt;
&lt;br /&gt;
 $ ykpersonalize -2 -ochal-resp -ochal-yubico&lt;br /&gt;
&lt;br /&gt;
さらなる情報は {{man|1|ykpersonalize}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== チャレンジを送信 ====&lt;br /&gt;
&lt;br /&gt;
チャレンジを送信してレスポンスを受信するには、{{ic|ykchalresp -&#039;&#039;slot&#039;&#039; &#039;&#039;challenge&#039;&#039;}} コマンドを使用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ykchalresp -2 &#039;&#039;archie&#039;&#039;|&lt;br /&gt;
12a19763be77d75af46fb76f0b737c117fa47205&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このコマンドは、プログラム済みのスロット2のユニークな 40 バイトの SHA1 ハッシュ値を返します。チャレンジが異なると、異なるユニークなレスポンスが返されます。&lt;br /&gt;
&lt;br /&gt;
=== 静的パスワード ===&lt;br /&gt;
&lt;br /&gt;
静的パスワードも生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static --generate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、パスワードを与えることも:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp static &#039;&#039;slot&#039;&#039; &#039;&#039;password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のオプションがあります; 生成されるパスワードの長さと文字セットや、Enter キーストロークを送るかどうかを設定できます。詳細は {{ic|ykman otp static --help}} で見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ほとんどの YubiKey では、静的パスワードを保存するためのスロットの数 (2個) は限られています。チャレンジレスポンス認証のスロットは、無制限のチャレンジに対して静的ハッシュ値のレスポンスを提供します。これらは数字と小文字アルファベットのみですが、レスポンスの長さによってかなりのエントロピーが生まれます。}}&lt;br /&gt;
&lt;br /&gt;
=== エミュレートされた USB キーボードの限界、「なぜ私のパスワードは弱く見えるのか」 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのキーボードレイアウトで YubiKey が機能するようにするために、パスワードはデフォルトで ModHex アルファベット({{ic|cbdefghijklnrtuv}})、数値 {{ic|0-9}}、{{ic|!}} に制限されています。これらの文字は非常に多くのキーボードレイアウトで同じスキャンコードを使用し、ほとんどのコンピュータで互換性が保証されます。&lt;br /&gt;
&lt;br /&gt;
Yubico はこの問題に関する[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf 白書]を提供しています。&lt;br /&gt;
&lt;br /&gt;
== OATH ==&lt;br /&gt;
&lt;br /&gt;
YubiKey は2つの [[OATH]] 実装を提供します:&lt;br /&gt;
; OATH API: 新しい手法であり、モデルによっては約30個の認証情報を格納できます。(YubiKey 4、NEO、それ以降)&lt;br /&gt;
; OTP slot: 古い手法であり、両方の OTP スロットが1つの認証情報を格納できます。(チャレンジレスポンス認証をサポートするすべてのモデル)&lt;br /&gt;
&lt;br /&gt;
=== OATH API ===&lt;br /&gt;
&lt;br /&gt;
GUI がお好みならば、{{Pkg|yubioath-desktop}} を使用できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman}} は、{{ic|ykman oath uri}} を使って URI 形式のコードを追加できます。以下は、QR コードのイメージから認証情報を追加するワンライナーです:&lt;br /&gt;
&lt;br /&gt;
 $ zbarimg qr_code.png --quiet --raw | xargs ykman oath uri&lt;br /&gt;
&lt;br /&gt;
手動で行うこともできます。TOTP 鍵をプログラムし、コードを生成するためにボタンへのタッチを要求します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --touch &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP 鍵をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath add --oath-type HOTP &#039;&#039;name&#039;&#039; &#039;&#039;secret&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
認証情報を一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath list&lt;br /&gt;
&lt;br /&gt;
コードを生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman oath code &#039;&#039;query&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なサブコマンドをすべて見るには、{{ic|ykman oath --help}} を実行してください。それぞれのサブコマンドの情報を見るには、{{ic|ykman oath &#039;&#039;subcommand&#039;&#039; --help}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== OTP スロット実装 ===&lt;br /&gt;
&lt;br /&gt;
スロット2で HOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp hotp 2 &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP をプログラムします:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp chalresp --totp &#039;&#039;slot&#039;&#039; &#039;&#039;key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TOTP を生成します:&lt;br /&gt;
&lt;br /&gt;
 $ ykman otp calculate --totp &#039;&#039;slot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|ykman otp --help}} と https://developers.yubico.com/OATH/ も参照してください。&lt;br /&gt;
&lt;br /&gt;
== U2F ==&lt;br /&gt;
&lt;br /&gt;
YubiKey を用いた [[Universal 2nd Factor]] (U2F) はとても単純です。鍵そのものに対する設定は必要ありません。このモードは一部のドキュメントやユーティリティでは &#039;FIDO&#039; とも呼ばれていることに注意してください。{{ic|ykman}} ユーティリティを通じていくつかの限定された管理オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* PIN を設定:  {{ic|ykman fido access change-pin}}&lt;br /&gt;
* 個別の資格情報を削除: {{ic|ykman fido credentials delete &#039;&#039;QUERY&#039;&#039;}}&lt;br /&gt;
* すべての資格情報と PIN をリセット: {{ic|ykman fido reset}}&lt;br /&gt;
&lt;br /&gt;
U2F を認証に使用するには、[[U2F]] の指示を見てください。&lt;br /&gt;
&lt;br /&gt;
[[WebAuthn]] も参照。&lt;br /&gt;
&lt;br /&gt;
== CCID スマートカード ==&lt;br /&gt;
&lt;br /&gt;
CCID (Chip Card Interface Device) は、スマートカードリーダーとして振る舞う USB デバイスによって使用されたり、YubiKey のように USB を通して直接接続するセキュリティトークンで使用されたりする USB 標準デバイスクラスです。HID (Human Interface Device) と CCID は両方とも USB デバイスクラスです。つまり、これらは USB 仕様の同じカテゴリに属すということです。HID は、キーボードなどのようなコンピュータ周辺機器のための仕様です。YubiKey は、OTP モードと FIDO モードで使用されたときは USB (HID) キーボードのように働きます。しかし、PIV アプリケーションを使用する時や OpenPGP デバイスとして使用する時は CCID プロトコルに切り替わります。&lt;br /&gt;
&lt;br /&gt;
CCID モードは 2015 年11以降に出荷された YubiKey のすべてでデフォルトで有効になっているはずです[https://www.yubico.com/support/knowledge-base/categories/articles/use-yubikey-yubikey-windows-hello-app/]。少なくとも CCID モードは有効化してください。[[#有効になっているモードを取得]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PIV ===&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO 以降から、YubiKey はチップ上に PIV (Personal Identity Verification) アプリケーションが含まれています。PIV は、RSA や ECC(楕円曲線暗号) を使用するトークンが個人電子証明書にどのように使用されるかを定めた米国政府規格(FIPS 201)です。YubiKey NEO は RSA 暗号のみをサポートしますが、その後のモデル(YubiKey 4 と 5)は RSA と ECC の両方をサポートします。PIV トークンの特徴は、秘密鍵を保護しオンチップで動作するように構築されているという点です。秘密鍵は、トークン上にインストールされた後は決してトークン外に出ることはありません。オプションで、オンチップの乱数生成器を使って秘密鍵をオンチップで生成することもできます。秘密鍵がオンチップで生成された場合、秘密鍵はチップの外部で処理されることはなく、トークンから秘密鍵を復元する方法もありません。PIV メカニズムを使用する際は、YubiKey は CCID デバイスとして機能します。&lt;br /&gt;
&lt;br /&gt;
=== OpenPGP スマートカード ===&lt;br /&gt;
&lt;br /&gt;
YubiKey は標準の GPG スマートカードとしてとして振る舞うことができます; セットアップと使用法に関する説明は [[GnuPG#スマートカード]] セクションを見てください。Yubico は https://developers.yubico.com/PGP/ でドキュメントも提供しています。&lt;br /&gt;
&lt;br /&gt;
他の機能(U2F と OTP)を使用したくない場合、ボタンはキーを挿入/除去するように設定でき、自動除去のタイムアウトも設定できます。詳細は [[#USB 接続モード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザ PIN は {{ic|123456}} で、デフォルトの admin PIN は {{ic|12345678}} です。デフォルトの PUK も {{ic|12345678}} です。覚えておきましょう。&lt;br /&gt;
&lt;br /&gt;
== 使用例 ==&lt;br /&gt;
&lt;br /&gt;
このセクションでは、様々な認証の目的での YubiKey の使用法について説明しています。しかし、以下は使用法について完全に網羅されたリストではありません。&lt;br /&gt;
&lt;br /&gt;
=== LUKS による完全なディスク暗号化 ===&lt;br /&gt;
&lt;br /&gt;
複数の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;チャレンジレスポンス認証:&#039;&#039;&#039; とあるチャレンジに対する[[#チャレンジレスポンス認証|レスポンス]]が LUKS 鍵として使用されます。チャレンジは、真の二要素認証においてはパスワードとして機能し、一要素認証においてはチャレンジは平文で保存することができます。&lt;br /&gt;
* &#039;&#039;&#039;GnuPG:&#039;&#039;&#039; YubiKey の [[#CCID スマートカード|PGP スマートカード]]の機能を使用します。長いパスフレーズ無しで強力な二要素認証を提供します。&lt;br /&gt;
* &#039;&#039;&#039;FIDO HMAC Secret:&#039;&#039;&#039; あなたの YubiKey が [[U2F]] をサポートしているのであれば、共通鍵を返すように設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスクの暗号化の強度は、使用している鍵のうち最も弱いものの強さと同じです。上記のツールの内一つを設定したら、初期のパスフレーズを削除するか、より長いものに置き換えることを検討してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 共通の前提条件 ====&lt;br /&gt;
&lt;br /&gt;
* [[dm-crypt/システム全体の暗号化|LUKS により暗号化された]]起動可能なシステム。少なくとも1つの空きキースロットがあり、{{ic|encrypt}} [[mkinitcpio]] フックを使用していること。&lt;br /&gt;
** {{AUR|mkinitcpio-ykfde}} を例外として、{{ic|sd-encrypt}} はこれらのツールの全てでサポートされていません。&lt;br /&gt;
* LUKS ヘッダーのバックアップ(任意ですが、推奨)&lt;br /&gt;
&lt;br /&gt;
==== チャレンジレスポンス認証 ====&lt;br /&gt;
&lt;br /&gt;
完全な手順については {{Pkg|yubikey-full-disk-encryption}} の [https://github.com/agherzan/yubikey-full-disk-encryption#usage 公式ドキュメント] を見てください。大まかには:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-full-disk-encryption}} をインストール。&lt;br /&gt;
# {{ic|/etc/ykfde.conf}} を設定。&lt;br /&gt;
# 対象のディスクを登録: {{ic|# ykfde-enroll -d /dev/&#039;&#039;DISK&#039;&#039; -s &#039;&#039;LUKS_SLOT&#039;&#039;}}&lt;br /&gt;
# {{ic|ykfde}} [[mkinitcpio#HOOKS|mkinitcpio フック]] を {{ic|encrypt}} フックの前に追加。&lt;br /&gt;
# [[Initramfs の再生成]]&lt;br /&gt;
&lt;br /&gt;
:{{Note|Plymouth ユーザーは、{{ic|plymouth-encrypt}} フックを {{ic|ykfde}} フックに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
いくつかの利用可能なバリエーションがあります:&lt;br /&gt;
&lt;br /&gt;
* 2FA: デフォルトの挙動。対象デバイスの登録時、および起動時にパスワードとしてチャレンジを与えなければなりません。&lt;br /&gt;
* 1FA: {{ic|ykfde.conf}} に {{ic|YKFDE_CHALLENGE}} を設定してください。これは平文で保存されることに注意してください。このファイルに対する非ルートユーザの読み込みアクセスを禁止することを検討してください。&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-nfc-support-in-ykfde-initramfs-hook-experimental NFC サポート] (実験的)&lt;br /&gt;
* [https://github.com/agherzan/yubikey-full-disk-encryption#enable-ykfde-suspend-service-experimental サスペンドと復帰のサポート] (実験的) サスペンド時に、暗号化されたボリュームが自動的にロックされます。復帰時に自動でアンロックします。&lt;br /&gt;
&lt;br /&gt;
設定の変更を行った時は、変更を反映させるために initramfs の再生成を行わなければなりません。&lt;br /&gt;
&lt;br /&gt;
==== systemd ベースの initramfs ====&lt;br /&gt;
&lt;br /&gt;
{{ic|sd-encrypt}} フックのユーザは {{AUR|mkinitcpio-ykfde}} か {{AUR|mkinitcpio-ykfde-git}} をインストールし、[https://github.com/eworm-de/mkinitcpio-ykfde/blob/master/README-mkinitcpio.md プロジェクトのドキュメント]にある手順に従ってください。手順は、大まかに言えば {{Pkg|yubikey-full-disk-encryption}} に似ています。&lt;br /&gt;
&lt;br /&gt;
==== GnuPG 暗号化キーファイル ====&lt;br /&gt;
&lt;br /&gt;
これを行うためのツールの一つは [https://github.com/fuhry/initramfs-scencrypt initramfs-scencrypt] です。完全な手順についてはドキュメントを見てください。2022年10月以降、このパッケージは、GitHub で PKGBUILD が提供されていますが、AUR に存在せず、徹底的にテストもされていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/特記事項#GPG や OpenSSL で暗号化されたキーファイルを使う|Dm-crypt のページ]]ではいくつかの代替策が提示されています。しかし、それらの殆どがフォーラムの古い投稿へのリンクです。&lt;br /&gt;
&lt;br /&gt;
==== FIDO2 プロトコルの HMAC secret extension ====&lt;br /&gt;
&lt;br /&gt;
YubiKey を完全ディスク暗号化に使うもう一つの方法は、[https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#sctn-hmac-secret-extension HMAC Secret Extension] を使用して、YubiKey から LUKS のパスワードを取得することです。これはパスフレーズによって保護することができます。この機能には、少なくとも[https://support.yubico.com/hc/en-us/articles/360016649319-YubiKey-5-2-3-Enhancements-to-FIDO-2-Support ファームウェア 5.2.3+ のYubiKey 5] が必要です。&lt;br /&gt;
パスフレーズによる保護の方法では、{{AUR|khefin}} をインストールし、[https://github.com/mjec/khefin/wiki/Arch-Linux-LUKS-configuration プロジェクトのドキュメント]にある手順に従ってください。&lt;br /&gt;
systemd 248 以降での(任意で PIN による保護が施された)1要素による方法では、FIDO2 キーを LUKS2 キースロットとして使用できます。手順は[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html 作者のブログ投稿]で見られます。&lt;br /&gt;
&lt;br /&gt;
=== KeePass ===&lt;br /&gt;
&lt;br /&gt;
[[KeePass]] は YubiKey をサポートするように設定できます。手順は [[KeePass#Yubikey|YubiKey セクション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== SSH 鍵 ===&lt;br /&gt;
&lt;br /&gt;
==== CCID ====&lt;br /&gt;
&lt;br /&gt;
あなたの YubiKey が CCID スマートカードをサポートしているのであれば、GPG 鍵や PIV 鍵のどちらかをベースとしてハードウェアによる [[SSH 鍵]] として使用することができます。Yubico は品質の良いドキュメントを提供しています:&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html PGP と PIV の両方の可能性から見た概要]、それらの利点と欠点を挙げています。&lt;br /&gt;
* [https://developers.yubico.com/PGP/SSH_authentication/index.html PGP 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_user_certificates.html ユーザ証明書による PIV 認証]のための手順&lt;br /&gt;
* [https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html #PKCS11 による PIV 認証]のための手順&lt;br /&gt;
&lt;br /&gt;
:{{Note|YubiKey 上の PIV アプリケーションデフォルトの PIN コードは {{ic|123456}} です。デフォルトの管理キーと一緒に PIN コードも変更しておくべきでしょう。詳細は [https://developers.yubico.com/PIV/Guides/Device_setup.html デバイスセットアップの手順] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== U2F ====&lt;br /&gt;
&lt;br /&gt;
YubiKey の U2F の機能を使用してハードウェアによる SSH 鍵を作成することもできます。手順は [[SSH 鍵#FIDO/U2F]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== PIV ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|yubikey-agent}} は SSH 鍵 を PIV トークンとして保存します。セットアップガイドは https://github.com/FiloSottile/yubikey-agent#readme を見てください。&lt;br /&gt;
&lt;br /&gt;
=== PAM を用いた Linux ユーザ認証 ===&lt;br /&gt;
&lt;br /&gt;
ユーザ認証のために [[PAM]] を使用するすべてのものは、ユーザ認証のプロセスの一つの要素として YubiKey を使用するように設定できます。これには sudo、su、ssh、スクリーンロッカー、ディスプレイマネージャー、そして Linux システムがユーザを認証する必要のあるほぼすべての場面を含みます。その柔軟な設定により、システム全体や特定のアプリケーション、あるいはアプリケーションのグループに対して、あなたのニーズに合う認証要件を自由に設定することができます。例えば、ローカルセッションではパスワードの代わりとして YubiKey を受け入れ、リモートのセッションでは両方を要求することができます。これがどのように機能し、どのように設定するのかを理解するために、Arch Wiki の記事に加えて、{{man|8|pam}} や {{man|5|pam.conf}} を読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
YubiKey がサポートするプロトコルを PAM に統合するのに利用できるモジュールが複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|pam-u2f}} - FIDO2 規格による [[#U2F]] をサポート。どの手法を使うべきかわからない場合、これが良い選択です。&lt;br /&gt;
** [[Universal 2nd Factor#Arch Linux の認証|Arch Wiki の記事]]&lt;br /&gt;
** [https://developers.yubico.com/pam-u2f/ Yubico の公式ドキュメント]、サポートされるモジュールパラメータのリストがあります。&lt;br /&gt;
** Man ページ: {{man|8|pam_u2f}}、{{man|1|pamu2fcfg}}&lt;br /&gt;
* {{Pkg|oath-toolkit}} - [[#OATH]] ワンタイムパスワードをサポート(HOTP か TOTP)。&lt;br /&gt;
** [[pam_oath]]&lt;br /&gt;
* {{Pkg|yubico-pam}} - [[#Yubico OTP]] と チャレンジレスポンス認証 OTP をサポート。Yubico OTP モードでは認証サーバーへのネットワーク接続が必要であることに注意してください。チャレンジレスポンス認証では必要ありません。&lt;br /&gt;
** [https://developers.yubico.com/yubico-pam/ Yubico の公式ドキュメント]&lt;br /&gt;
** {{man|8|pam_yubico}} - チャレンジレスポンス認証モードを設定するのに使用される {{ic|mode}} パラメータに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|PAM の設定ファイルを変更する際には厳重な注意が必要です。間違うと、システムが完全に安全ではなくなったり、安全すぎて認証できなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
PAM の設定はこの記事の範囲を超えますが、簡単な概要としては:&lt;br /&gt;
&lt;br /&gt;
* 認証されたキーを含むファイルをホームディレクトリ内か一元的に作成する。&lt;br /&gt;
* 適切な PAM 設定ファイルの適切な場所に、以下のフォーマットに従う行を追加する:&lt;br /&gt;
    auth [required|sufficient] [module_name].so [module arguments]&lt;br /&gt;
* 多要素認証には {{ic|auth required}}、単一要素認証には {{ic|auth sufficient}}。&lt;br /&gt;
* {{ic|module_name}} - 例: {{ic|pam_u2f.so}}。インストールされているモジュールのリストを見てください: {{ic|ls /usr/lib/security }}&lt;br /&gt;
* モジュールの設定引数は、キーファイルの場所や、認証するためにどの手法をモジュールが使用すべきかなどです。&lt;br /&gt;
&lt;br /&gt;
==== SSH における注意事項 ====&lt;br /&gt;
&lt;br /&gt;
* Yubico は[https://developers.yubico.com/yubico-pam/Yubikey_and_SSH_via_PAM.html 追加のガイダンス]を公開しています。これは Ubuntu の古いバージョン向けですが、アップデートされている Arch システムにも適用できます。&lt;br /&gt;
* 遠隔地にあるサーバを YubiKey を使用するように設定する場合、追加で少なくとも一つの緊急用 SSH セッションを開いておくべきです。こうすれば、設定ミスにより締め出されないで済みます。&lt;br /&gt;
* {{ic|/etc/ssh/sshd_config}} に以下の設定が含まれていることを確認してください。{{Pkg|openssh}} に同梱されている {{ic|sshd_config}} はデフォルトでこれらが正しく設定されています。&lt;br /&gt;
    ChallengeResponseAuthentication no&lt;br /&gt;
    UsePAM yes&lt;br /&gt;
&lt;br /&gt;
=== ブラウザ/web 統合 ===&lt;br /&gt;
&lt;br /&gt;
多くのウェブサービスが FIDO ハードウェアトークンをサポートし始めています。詳細は [[U2F]] や [[WebAuthn]] のページを見てください。しかし、通常、するべきことといえば {{Pkg|libfido2}} をインストールして [https://demo.yubico.com/webauthn-technical/registration 試してみる]ことくらいです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey デバイスの挿入/除去時にアクションを実行する ===&lt;br /&gt;
&lt;br /&gt;
例えば、USB スロットから YubiKey を抜いた時にアクションを実行したいとしましょう。{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成し、以下の内容を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ACTION==&amp;quot;remove&amp;quot;, ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, RUN+=&amp;quot;&#039;&#039;/usr/local/bin/script args&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
注意すべきなのは、ほとんどのキーはこの例でカバーされていますが、すべてのバージョンの YubiKey で動作するとは限らないということです。lsusb の出力を見て、ベンダーとモデル ID をデバイスの説明と共に得るか、udevadm を使って情報を得る必要があります。もちろん、YubiKey の挿入時にスクリプトを実行したい場合は、アクションを &amp;quot;remove&amp;quot; ではなく &amp;quot;add&amp;quot; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 挿入時に Yubico Authenticator を開始する ===&lt;br /&gt;
&lt;br /&gt;
Authenticator は長時間実行される GUI プロセスです。Udev ルール内で直接実行すると、プロセスが udev の処理をブロックしてしまいます。フォークすると、イベント処理の終了後に udev は無条件で (フォークによって生成された) プロセスをキルしてしまいます。なので、authenticator を udev ルールから開始することはできません。しかし、systemd.device を使うことができます。&lt;br /&gt;
&lt;br /&gt;
上記と同じように、{{ic|/etc/udev/rules.d/80-yubikey-actions.rules}} を作成して、以下の内容を書き込んでください:&lt;br /&gt;
&lt;br /&gt;
 ENV{ID_VENDOR}==&amp;quot;Yubico&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0010|0111|0112|0113|0114|0115|0116|0401|0402|0403|0404|0405|0406|0407|0410&amp;quot;, SYMLINK+=&amp;quot;yubikey&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして、新しい systemd [[ユーザーユニット]]を[[作成]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/yubioath-desktop.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Autostart Yubico Authenticator&lt;br /&gt;
# Uncomment if you want to stop the authenticator when unplugged.&lt;br /&gt;
#StopPropagatedFrom=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=dev-yubikey.device&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/yubioath-desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、このユニットを[[有効化]]してください。&#039;&#039;systemctl&#039;&#039; が、このユニットが存在しない {{ic|dev-yubikey.device}} ユニットの依存関係として追加されたことを警告してきますが、問題ありません。このユニットは、YubiKey が挿入されると開始されます。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス/アップグレード ==&lt;br /&gt;
&lt;br /&gt;
=== YubiKey NEO 用に OATH アプレットをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のステップで、YubiKey NEO に OATH アプレットをインストールできます。Google Play Store の Yubico Authenticator を使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=以下のステップは、ファームウェアバージョン &amp;lt;= 3.1.2 の NEO でのみ必要です。現在の世代の NEO (U2F 搭載) は OpenPGP アプレットがすでにインストールされています。}}&lt;br /&gt;
&lt;br /&gt;
==== NEO を CCID デバイスとして設定する ====&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|yubikey-personalization-gui}} ({{AUR|yubikey-personalization-gui-git}}) を[[インストール]]。&lt;br /&gt;
# udev ルールを追加して再起動すれば root にならなくても YubiKey を扱えるようになります。&lt;br /&gt;
# {{ic|ykpersonalize -m82}} を実行し、{{ic|y}} を入力、エンターを押す。&lt;br /&gt;
&lt;br /&gt;
==== アプレットをインストールする ====&lt;br /&gt;
&lt;br /&gt;
# {{AUR|gpshell}}、{{AUR|gppcscconnectionplugin}}、{{AUR|globalplatform}}、{{Pkg|pcsclite}} を[[インストール]]。&lt;br /&gt;
# {{ic|pcscd.service}} を[[起動]]。&lt;br /&gt;
# 最も最近の CAP ファイルを [https://developers.yubico.com/ykneo-oath/Releases/ ykneo-oath] サイトからダウンロード。&lt;br /&gt;
# {{ic|gpinstall.txt}} を [https://github.com/Yubico/ykneo-oath/blob/master/gpinstall.txt GitHub] からダウンロード。&lt;br /&gt;
# gpinstall.txt を編集して {{ic|install -file}} から始まる行を CAP ファイルが置かれているパスに修正。&lt;br /&gt;
# ターミナルを開き、{{ic|gpshell &#039;&#039;path/to/gpinstall.txt&#039;&#039;}} を実行。&lt;br /&gt;
# 理想的には、大量のテキストが流れて、最後に以下のようなものが書かれていることです:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;Command --&amp;gt; 80E88013D7C000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A100&lt;br /&gt;
Wrapped command --&amp;gt; 84E88013DFC000C400BE00C700CA00CA00B400BE00CE00D200D500D700B000DB00C700DF00BEFFFF00BE00E400AC00AE00AE00DB00E700A&lt;br /&gt;
A00EA00ED00ED00ED00BE00EF00F100F400F100F700FA00FF00BE00F700AA01010103010700CA00C400B400AA00F700B400AA00B600C7010C&lt;br /&gt;
010C00AA0140012001B0056810B0013005600000056810E0011006B4B44304B44404B44106B44B4405B443400343B002410636810E06B4B44&lt;br /&gt;
407326810B004B43103441003334002B102B404B3B403BB4003B440076820A4100221024405B4341008B44600000231066820A15D848CB77&lt;br /&gt;
27D0EDA00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
Command --&amp;gt; 80E60C002107A000000527210108A00000052721010108A000000527210101010003C901000000&lt;br /&gt;
Wrapped command --&amp;gt; 84E60C002907A000000527210108A00000052721010108A000000527210101010003C9010000B4648127914A4C7C00&lt;br /&gt;
Response &amp;lt;-- 009000&lt;br /&gt;
card_disconnect&lt;br /&gt;
release_context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# NEO を抜き、Yubico Authenticator アプリで試す。&lt;br /&gt;
&lt;br /&gt;
==== (任意)Yubico Authenticator デスクトップクライアントをインストールする ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|yubioath-desktop}} をインストールすることで、Yubico Authenticator のデスクトップバージョンを取得できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcscd.service}} が実行中の間に、{{ic|yubioath-desktop}} を実行して、プロンプトが表示されたら YubiKey を挿入してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
Yubikey が最後に機能したときからアップデートを実行した場合特に、再起動を行ってください。一部の機能が問題なく動いているようでも再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が HID デバイスとして機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=[https://github.com/systemd/systemd/commit/d45ee2f31a8358db0accde2e7c81777cedadc3c2 バージョン 244以降の systemd は]この機能に対するネイティブサポートを追加したので、以下のステップはもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
[https://michaelheap.com/yubikey-on-arch/ この記事]で説明されているように、udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-security-key.rules|2=&lt;br /&gt;
KERNEL==&amp;quot;hidraw*&amp;quot;, SUBSYSTEM==&amp;quot;hidraw&amp;quot;, MODE=&amp;quot;0664&amp;quot;, GROUP=&amp;quot;users&amp;quot;, ATTRS{idVendor}==&amp;quot;2581&amp;quot;, ATTRS{idProduct}==&amp;quot;f1d0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|udevadm trigger}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== ykman が YubiKey に接続できない ===&lt;br /&gt;
&lt;br /&gt;
マネージャが YubiKey への接続に失敗する場合、{{ic|pcscd.service}} か {{ic|pcscd.socket}} が起動していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed connecting to YubiKey 5 [OTP+FIDO+CCID]. Make sure the application have the required permissions. ===&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|scdaemon}} がすでにデバイスの排他的な制御を取得している場合に {{ic|ykman}} がデバイスの oath 認証情報にアクセスした際に発生する可能性があります。[https://github.com/Yubico/yubikey-manager/issues/35]&lt;br /&gt;
&lt;br /&gt;
これを修正するには、{{ic|~/.gnupg/scdaemon.conf}} 内であなたのデバイスに対して {{ic|reader-port}} オプションを正しい値で設定することができます。[https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG]&lt;br /&gt;
&lt;br /&gt;
{{Note|これにより、ykman を通して YubiKey にアクセスするたびに gpgagent が YubiKey をアンロックするプロンプトを表示するようになります。}}&lt;br /&gt;
&lt;br /&gt;
YubiKey NEO と YubiKey 4 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubikey&lt;br /&gt;
&lt;br /&gt;
YubiKey 5 の場合:&lt;br /&gt;
&lt;br /&gt;
 reader-port Yubico Yubi&lt;br /&gt;
&lt;br /&gt;
=== YubiKey がゲスト VM 内でバインドできない ===&lt;br /&gt;
&lt;br /&gt;
YubiKey がゲストで利用可能であると仮定すると、この問題はドライバがホストのデバイスにバインドしている結果です。デバイスのバインドを解除するには、ホストの [[dmesg]] からバスとポートの情報を手に入れる必要があります:&lt;br /&gt;
&lt;br /&gt;
 # dmesg | grep -B1 Yubico | tail -n 2 | head -n 1 | sed -E &#039;s/^\&amp;lt;nowiki&amp;gt;[[^]]&amp;lt;/nowiki&amp;gt;+\] usb (&amp;lt;nowiki&amp;gt;[^:]&amp;lt;/nowiki&amp;gt;*):.*/\1/&#039;&lt;br /&gt;
&lt;br /&gt;
出力の USB id は {{ic|X-Y.Z}} または {{ic|X-Y}} の形式であるはずです。そして、ホスト上で、{{ic|find}} を使って {{ic|/sys/bus/usb/drivers}} を検索し、YubiKey がバインドしているドライバを探します (例: {{ic|usbhid}} または {{ic|usbfs}})。&lt;br /&gt;
&lt;br /&gt;
 $ find /sys/bus/usb/drivers -name &amp;quot;*X-Y.Z*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
デバイスのバインドを解除するには、先のコマンドの出力を使ってください (つまり、{{ic|/sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/X-Y.Z:1.0}}):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;X-Y.Z:1.0&#039; &amp;gt; /sys/bus/usb/drivers/&#039;&#039;DRIVER&#039;&#039;/unbind&lt;br /&gt;
&lt;br /&gt;
=== Error: [key] could not be locally signed or gpg: No default secret key: No public key ===&lt;br /&gt;
&lt;br /&gt;
これは、YubiKey が挿入された状態で非標準的なキーリングでキーの署名をしようとした際に起こります(例えば、[[pacman-key|Pacman]] が {{ic|pacman-key --populate}} で行うように)。解決策は、問題を起こしている YubiKey を取り外してやり直すことです。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey が Yubico Authenticator で消えたり現れたりする ===&lt;br /&gt;
&lt;br /&gt;
これは、CCID ドライバがインストールされていない際に起こります。{{Pkg|ccid}} パッケージを[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== YubiKey core error: timeout ===&lt;br /&gt;
&lt;br /&gt;
おそらく間違ったスロットを使用しています。もう一方のスロットで試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|YubiKey|2024-08-26|814790}}&lt;/div&gt;</summary>
		<author><name>田中</name></author>
	</entry>
</feed>