Ubuntu Weekly Recipe

第570回 セキュリティキーを使って,Ubuntuで多要素認証をしてみよう

この記事を読むのに必要な時間:およそ 4 分

セキュリティキーを利用した多要素認証は,これまでも「利用者本人のみが所有するもの」という側面から,有効な認証の要素の一つとして利用されてきました。Googleでも2017年初頭からセキュリティキーを導入してから,アカウントの乗っ取りは報告されていないとコメントしています(2018年7月の記事です⁠⁠。

また,2019年3月にFIDO2の構成技術の一つであるWebAuthnがW3Cでも勧告され,セキュリティキーや生体認証,モバイルデバイスなどにより,より簡単で安全にログインできるWeb認証が利用可能となりました。筆者もFIDO2準拠のセキュリティキーを購入したこともあり,今回はUbuntuでセキュリティキーを利用した多要素認証を試してみました。

セキュリティキーの選定

検索サイトなどで「FIDO2 セキュリティキー」のキーワードで検索すると,セキュリティキーの大手でもあるYubico社のYubikeyなどが出てきますが,今回筆者はYubikeyと互換性があり,Linuxにも対応しているSoloKeys社のSoloをAmazon.com経由で3,000円弱(送料込み)で購入しました※1⁠。形状としてはUSBメモリと似た外観でボタンのみが付いている,いたってシンプルなセキュリティキーです。

※1
Solokeysが販売するセキュリティキーはオープンハードウェアであり,Github上にセキュリティキーのハードウェア設計図のリポジトリを置いています。腕に自信のある方は挑戦してみるのもよいかもしれません。

図1 セキュリティキーSoloの外観

画像

本記事では,このSoloの利用を前提として多要素認証を試しています。他のセキュリティキーを使った場合でも,以降で説明するセキュリティキーの挿抜時におけるデバイス検出の設定を行うudevでのパラメータが異なること※2を除くと,ほぼ同じような内容になるかと思います。

※2
USBのベンダーID,プロダクトIDなど,主にUSBデバイスに関連する部分で異なります。Yubikeyを使う場合にはYubicoのサポートを参考にしながら設定することをおすすめします。

セキュリティキーの認識

セキュリティキーはUSBデバイスのため,udevを利用してデバイスを認識できるようにします。今回は「/etc/udev/rules.d/」上に管理者権限で「70-solokeys-access.rules」を作成し,以下の内容を追加します。

ACTION=="add", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="a2ca", ATTRS{product}=="Solo*", TAG+="uaccess", GROUP="plugdev", KERNEL=="hidraw*", SUBSYSTEM=="hidraw"

udevadmコマンドでudevのルールを反映します。

$ sudo udevadm control --reload-rules && sudo udevadm trigger

udevのルールを反映後,セキュリティキーを挿入すると「/dev」配下に「hidraw*」⁠*は任意の数字)がデバイスとして追加されます。一般ユーザーでcatやechoを利用してエラーが出ないことを確認できれば,デバイスとしては正しく認識している状況です(以下は「/dev」配下に「hidraw0」として認識された場合で確認⁠⁠。

$ cat /dev/hidraw0
$ echo "Hello, Ubuntu" > /dev/hidraw0

著者プロフィール

かずはまけんたろう

Ubuntu Japanese Translatorsメンバーで動画再生環境に興味津々。いろいろありますが鳩サブレと牛乳が大好き。