「Universal 2nd Factor」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(英語版より転載)
 
(→‎​LUKS を使用した保存データの暗号化: 非ルートパーティションを翻訳して追加)
 
(他の1人の利用者による、間の16版が非表示)
1行目: 1行目:
 
[[Category:Universal 2nd Factor]]
 
[[Category:Universal 2nd Factor]]
  +
[[en:Universal 2nd Factor]]
[[Wikipedia:Universal 2nd Factor|Universal 2nd Factor (U2F)]] is an open standard that strengthens and simplifies two-factor authentication (2FA) using specialized USB or NFC devices based on similar security technology found in smart cards.
 
  +
[[Wikipedia:Universal 2nd Factor|Universal 2nd Factor (U2F)]] はスマートカードと同様のセキュリティ技術に基づいて、専用の USB または NFC デバイスを使用した二要素認証 (2FA) を強化、簡素化するためのオープンスタンダードです。
   
  +
当初は Google と Yubico が開発し、NXP セミコンダクターズが貢献していましたが、現在は、FIDO アライアンスがホストしています。
While initially developed by Google and Yubico, with contribution from NXP Semiconductors, the standard is now hosted by the FIDO Alliance.
 
   
For all articles on U2F and U2F-devices see: [[:Category:Universal 2nd Factor]].
+
U2F および U2F-devices については、[[:Category:Universal 2nd Factor]] も参照してください。
   
  +
== Web サイトの認証 ==
== Authentication for websites ==
 
   
U2F is supported by major sites like Google, Facebook, Twitter, or GitHub. Check out [https://twofactorauth.org/ twofactorauth.org] or [https://www.dongleauth.info/ dongleauth.info] to find other websites and links to setup documentation. For all browsers which support it, likely the only action required is to install {{Pkg|libfido2}}. Yubico offers a [https://demo.yubico.com/ demo page] for testing.
+
U2F は、GoogleFacebookTwitter、Github などの主要なサイトでサポートされています。[https://twofactorauth.org/ twofactorauth.org] または [https://www.dongleauth.info/ dongleauth.info] には他のサイトや設定資料へのリンクがありますのでご確認ください。サポートしている全てのブラウザでは、 {{Pkg|libfido2}} をインストールするだけでよいでしょう。Yubico はテスト用に [https://demo.yubico.com/ demo page] を提供しています。
   
 
=== Firefox ===
 
=== Firefox ===
   
[[Firefox/Tweaks#Fido U2F authentication]]
+
[[Firefox 設定#​Fido U2F 認証]]
   
 
=== Chromium/Chrome ===
 
=== Chromium/Chrome ===
   
[[Chromium/Tips and tricks#U2F authentication]]
+
[[Chromium 設定#U2F 認証]]
   
== Authentication for Arch Linux ==
+
== Arch Linux の認証 ==
   
  +
YubiKey を開発した Yubico 社は、U2F [[PAM]] モジュールを開発しました。U2F PAM モジュールは、ログイン時の二番目の要素として、またはパスワードを完全に置き換えるために使用することができます。
Yubico, the company creating the YubiKey, develops an U2F [[PAM]] module. It can be used to act as a second factor during login or replace the need for a password entirely.
 
   
  +
=== PAM モジュールのインストール ===
=== Installing the PAM module ===
 
   
  +
このモジュールは、{{Pkg|pam-u2f}} パッケージの一部です。
The module is part of the package {{Pkg|pam-u2f}}.
 
   
=== Adding a key ===
+
=== 鍵の追加 ===
   
  +
鍵は {{ic|pamu2fcfg}} ツールで追加する必要があります:
Keys need to be added with the tool {{ic|pamu2fcfg}}:
 
   
 
$ mkdir ~/.config/Yubico
 
$ mkdir ~/.config/Yubico
 
$ pamu2fcfg -o pam://hostname -i pam://hostname > ~/.config/Yubico/u2f_keys
 
$ pamu2fcfg -o pam://hostname -i pam://hostname > ~/.config/Yubico/u2f_keys
   
  +
U2F キーのボタンをクリックして、鍵を確認します。
Click the button of your U2F key to confirm the key.
 
   
  +
{{Note|異なるネットワークの DHCP などが原因で、システムのホスト名が変更された場合、ログインできなくなります。これを防ぐために、上記のオプションを指定し、{{ic|hostname}} を実際のホスト名に置き換えることをお勧めします。}}
{{Note|If the hostname of your system changes, e.g. because of DHCP in different networks, you would be unable to login. In order to prevent that, it is recommended to specify the abovementioned options and replace {{ic|hostname}} with the actual hostname.}}
 
   
  +
複数の鍵を所有している場合は、それらを追加してください
If you own multiple keys, append them with
 
   
 
$ pamu2fcfg -o pam://hostname -i pam://hostname -n >> ~/.config/Yubico/u2f_keys
 
$ pamu2fcfg -o pam://hostname -i pam://hostname -n >> ~/.config/Yubico/u2f_keys
   
=== Passwordless sudo ===
+
=== パスワードなしの sudo ===
   
  +
{{Warning|設定に変更を加える前に、root 権限で別のシェルを開始してください。(例 {{ic|sudo -s}})。このようにすることで、問題が発生した場合に変更を元に戻すことができます。}}
{{Warning|Before making any changes to your configuration, start a separate shell with root permissions (e.g. {{ic|sudo -s}}). This way you can revert any changes if something goes wrong.}}
 
   
Open {{ic|/etc/pam.d/sudo}} and add
+
{{ic|/etc/pam.d/sudo}} を開いて、以下を追加
   
 
auth sufficient pam_u2f.so origin=pam://hostname appid=pam://hostname
 
auth sufficient pam_u2f.so origin=pam://hostname appid=pam://hostname
   
  +
1行目の記述します。前述の {{ic|hostname}} は必ず書きかえてください。次に、新しいターミナルを起動し、{{ic|sudo ls}} と入力します。キーの LED が点滅し、それをクリックするとコマンドが実行されます。
as the first line. Be sure to replace the {{ic|hostname}} as mentioned above. Then create a new terminal and type {{ic|sudo ls}}. Your key's LED should flash and after clicking it the command is executed.
 
   
=== GDM login ===
+
=== GDM ログイン ===
   
Open {{ic|/etc/pam.d/gdm-password}} and add
+
{{ic|/etc/pam.d/gdm-password}} を開いて追加します。
   
 
auth required pam_u2f.so nouserok origin=pam://hostname appid=pam://hostname
 
auth required pam_u2f.so nouserok origin=pam://hostname appid=pam://hostname
   
  +
既存の {{ic|auth}} 行の後に追加します。{{ic|nouserok}} オプションを使用することで、ユーザーがキーを設定していない場合にルールを失敗させることができることに留意してください。これにより、複数のユーザーが U2F キーを使用している場合でも、そのうちの一部のユーザーのみが U2F キーを使用するという設定が可能です。
after the existing {{ic|auth}} lines. Please note the use of the {{ic|nouserok}} option which allows the rule to fail if the user did not configure a key. This way setups with multiple users where only some of them use a U2F key are supported.
 
   
{{Note|This method will not work with encrypted home partitions because the decryption is not done before the login process completed, so the {{ic|u2f_keys}} file is unavailable. In this case use a central mapping file as explained in the [https://developers.yubico.com/pam-u2f/ official documentation of pam-u2f].}}
+
{{Note|この方法は暗号化されたホームパーティションでは動作しません。なぜなら、ログインプロセスが完了する前に復号化が行われず、{{ic|u2f_keys}} ファイルが利用できないからです。この場合、[https://developers.yubico.com/pam-u2f/ official documentation of pam-u2f] で説明されているように、セントラルマッピングファイルを使用してください。}}
   
=== Other authentication methods ===
+
=== その他の認証方法 ===
   
  +
上で説明したように、他のサービスに対しても PAM モジュールを有効にします。例えば、[[Cinnamon]] のスクリーンセーバーを保護するには、{{ic|/etc/pam.d/cinnamon-screensaver}} を編集します。
Enable the PAM module for other services like explained above. For example, to secure the screensaver of [[Cinnamon]], edit {{ic|/etc/pam.d/cinnamon-screensaver}}.
 
   
  +
=== トラブルシューティング ===
=== Troubleshooting ===
 
   
  +
システムから自分自身をロックアウトしてしまった場合は、リカバリーモードまたは USB ペンドライブから起動します。その後、PAM コンフィグの変更を元に戻して再起動します。
If you managed to lock yourself out of the system, boot into recovery mode or from a USB pen drive. Then revert the changes in the PAM config and reboot.
 
   
 
== OpenSSH ==
 
== OpenSSH ==
   
  +
OpenSSH は [https://www.openssh.com/txt/release-8.2 8.2] から FIDO/U2F ハードウェアトークンをネイティブにサポートしています。クライアントとサーバの両方が、ecdsa-sk/ed25519-sk 形式の鍵をサポートしている必要があります。次のコマンドを使用して、セキュリティで裏付けされた鍵ペアを生成します
OpenSSH supports FIDO/U2F hardware tokens natively since [https://www.openssh.com/txt/release-8.2 8.2]. Both the client and server must support the ed25519-sk key types. Generate a security key backed key pair with:
 
   
  +
* ECDSA 鍵の場合
$ ssh-keygen -t ecdsa-sk
 
  +
:{{bc|$ ssh-keygen -t ecdsa-sk}}
  +
* Ed25519 鍵の場合
  +
:{{bc|$ ssh-keygen -t ed25519-sk}}
   
  +
{{Note|Yubikey を使用している場合、ed25519-sk 形式の鍵にはファームウェアバージョン 5.2.3 が必要です。}}
{{Note|If you are using a Yubikey, firmware version 5.2.3 is needed for the ed25519-sk key type.}}
 
  +
  +
== ​LUKS を使用した保存データの暗号化 ==
  +
  +
バージョン248以降、[[systemd]] は FIDO2 キーを使って [[dm-crypt/システム全体の暗号化|LUKS パーティション]]のロックを解除できるようになりました。
  +
  +
まず、{{ic|/etc/crypttab}} ファイルを設定するか、または、root パーティションのロックを解除したい場合は {{ic|initramfs}} をカスタマイズする必要があります。全般的な手順は、TPM チップを使ってロックを解除する場合と同様です。[[Trusted Platform Module#systemd-cryptenroll]] を参照してください。
  +
  +
キーを登録するには、''systemd-cryptenroll'' ユーティリティーを使用する必要があります。まず、以下のコマンドを実行して、検出された鍵をリストアップします:
  +
  +
$ systemd-cryptenroll --fido2-device=list
  +
  +
次に、{{ic|auto}} 値 (または、複数ある場合は、{{ic|/dev/hidrawX}} などの FIDO2 デバイスへのパス) を指定して、LUKS スロットにキーを登録できます。
  +
  +
$ systemd-cryptenroll --fido2-device=/path/to/fido2_device /dev/sdX
  +
  +
=== 非ルートパーティション ===
  +
  +
非ルートデータパーティションの場合、[[crypttab]] は次のようになります。
  +
  +
{{hc|1=/etc/crypttab|2=
  +
data /dev/sd''X'' none fido2-device=auto
  +
}}
  +
  +
これは、暗号化されたパーティションが [[LVM]] で管理される論理ボリュームである場合にも機能します。
  +
  +
{{hc|/etc/crypttab|2=
  +
data /dev/vg1/data none fido2-device=auto
  +
}}

2023年11月1日 (水) 18:14時点における最新版

Universal 2nd Factor (U2F) はスマートカードと同様のセキュリティ技術に基づいて、専用の USB または NFC デバイスを使用した二要素認証 (2FA) を強化、簡素化するためのオープンスタンダードです。

当初は Google と Yubico が開発し、NXP セミコンダクターズが貢献していましたが、現在は、FIDO アライアンスがホストしています。

U2F および U2F-devices については、Category:Universal 2nd Factor も参照してください。

Web サイトの認証

U2F は、Google、Facebook、Twitter、Github などの主要なサイトでサポートされています。twofactorauth.org または dongleauth.info には他のサイトや設定資料へのリンクがありますのでご確認ください。サポートしている全てのブラウザでは、 libfido2 をインストールするだけでよいでしょう。Yubico はテスト用に demo page を提供しています。

Firefox

Firefox 設定#​Fido U2F 認証

Chromium/Chrome

Chromium 設定#U2F 認証

Arch Linux の認証

YubiKey を開発した Yubico 社は、U2F PAM モジュールを開発しました。U2F PAM モジュールは、ログイン時の二番目の要素として、またはパスワードを完全に置き換えるために使用することができます。

PAM モジュールのインストール

このモジュールは、pam-u2f パッケージの一部です。

鍵の追加

鍵は pamu2fcfg ツールで追加する必要があります:

$ mkdir ~/.config/Yubico
$ pamu2fcfg -o pam://hostname -i pam://hostname > ~/.config/Yubico/u2f_keys

U2F キーのボタンをクリックして、鍵を確認します。

ノート: 異なるネットワークの DHCP などが原因で、システムのホスト名が変更された場合、ログインできなくなります。これを防ぐために、上記のオプションを指定し、hostname を実際のホスト名に置き換えることをお勧めします。

複数の鍵を所有している場合は、それらを追加してください

$ pamu2fcfg -o pam://hostname -i pam://hostname -n >> ~/.config/Yubico/u2f_keys

パスワードなしの sudo

警告: 設定に変更を加える前に、root 権限で別のシェルを開始してください。(例 sudo -s)。このようにすることで、問題が発生した場合に変更を元に戻すことができます。

/etc/pam.d/sudo を開いて、以下を追加

auth            sufficient      pam_u2f.so origin=pam://hostname appid=pam://hostname

1行目の記述します。前述の hostname は必ず書きかえてください。次に、新しいターミナルを起動し、sudo ls と入力します。キーの LED が点滅し、それをクリックするとコマンドが実行されます。

GDM ログイン

/etc/pam.d/gdm-password を開いて追加します。

auth            required      pam_u2f.so nouserok origin=pam://hostname appid=pam://hostname

既存の auth 行の後に追加します。nouserok オプションを使用することで、ユーザーがキーを設定していない場合にルールを失敗させることができることに留意してください。これにより、複数のユーザーが U2F キーを使用している場合でも、そのうちの一部のユーザーのみが U2F キーを使用するという設定が可能です。

ノート: この方法は暗号化されたホームパーティションでは動作しません。なぜなら、ログインプロセスが完了する前に復号化が行われず、u2f_keys ファイルが利用できないからです。この場合、official documentation of pam-u2f で説明されているように、セントラルマッピングファイルを使用してください。

その他の認証方法

上で説明したように、他のサービスに対しても PAM モジュールを有効にします。例えば、Cinnamon のスクリーンセーバーを保護するには、/etc/pam.d/cinnamon-screensaver を編集します。

トラブルシューティング

システムから自分自身をロックアウトしてしまった場合は、リカバリーモードまたは USB ペンドライブから起動します。その後、PAM コンフィグの変更を元に戻して再起動します。

OpenSSH

OpenSSH は 8.2 から FIDO/U2F ハードウェアトークンをネイティブにサポートしています。クライアントとサーバの両方が、ecdsa-sk/ed25519-sk 形式の鍵をサポートしている必要があります。次のコマンドを使用して、セキュリティで裏付けされた鍵ペアを生成します

  • ECDSA 鍵の場合
$ ssh-keygen -t ecdsa-sk
  • Ed25519 鍵の場合
$ ssh-keygen -t ed25519-sk
ノート: Yubikey を使用している場合、ed25519-sk 形式の鍵にはファームウェアバージョン 5.2.3 が必要です。

​LUKS を使用した保存データの暗号化

バージョン248以降、systemd は FIDO2 キーを使って LUKS パーティションのロックを解除できるようになりました。

まず、/etc/crypttab ファイルを設定するか、または、root パーティションのロックを解除したい場合は initramfs をカスタマイズする必要があります。全般的な手順は、TPM チップを使ってロックを解除する場合と同様です。Trusted Platform Module#systemd-cryptenroll を参照してください。

キーを登録するには、systemd-cryptenroll ユーティリティーを使用する必要があります。まず、以下のコマンドを実行して、検出された鍵をリストアップします:

$ systemd-cryptenroll --fido2-device=list

​ 次に、auto 値 (または、複数ある場合は、/dev/hidrawX などの FIDO2 デバイスへのパス) を指定して、LUKS スロットにキーを登録できます。

$ systemd-cryptenroll --fido2-device=/path/to/fido2_device /dev/sdX

非ルートパーティション

非ルートデータパーティションの場合、crypttab は次のようになります。

/etc/crypttab
data /dev/sdX none fido2-device=auto

これは、暗号化されたパーティションが LVM で管理される論理ボリュームである場合にも機能します。

/etc/crypttab
data /dev/vg1/data none fido2-device=auto