ビットコインに触れる方は情報セキュリティに注意すべきというのは、昨年原さんが書かれた記事にある通りです。

暗号資産取引所を利用する上で取るべきセキュリティ対策とは
今週は読者からの質問コーナーです。 こんにちは。 暗号通貨を扱う上でのセキュリティに興味があります。 例えば常日頃、PCやスマホで取引所を利用する上で取るべきセキュリティ対策ですが、 私は専門用語などに疎く、研究所の記事を見ても自分のレベルにあった対策を選ぶのが 難しい所があります。 一般的にはPCはMACやwindows、ブラウザはgoogleやsafari、家の中ではhome wifi、外出時は データやフリーwifi(自分は使わないようにしています)といった環境だと思います。 この状況下でセキュリティを上げるために変更すべきことを初心者向けに教えて頂けると助かります。 2019年7/28にネットワークセキュリティのためのTORやVPNのレポートがあったようですが、研究所の検索では出てきませんでした。読みたいです。大分昔の記事ですが、今もセキュリティ力が高い方々はTORやVPNを使用して取引をしたりしてるのでしょうか? よろしくお願いします。 暗号資産を扱う際のセキュリティ対策についての質問をいただきました。 2024年現在、パソコンを利用される方の一般的な状況は次の通りかと

久しぶりにパスワードの見直し等を行っていたら、消えていったサービスをたくさん見つけて懐かしさが込み上げてきたほか、こんなにたくさんあったっけ?という数のログイン情報があることを再認識できました。みなさんもパスワードマネージャーを使ってパスワードの使いまわしをなくしましょう。

そのついでに、パスワードマネージャーが単一障害点になってしまうので、セキュリティ向上のためにかねてから使ってみたいと思っていたYubikeyを導入してみました。

Yubikeyでのログインに対応しているサービス一覧はこちら

今日は一般的なPCユーザーに役立つYubikeyの利用方法と、開発者などに役立つSSHでYubikeyを使用する方法についてレポートしていきます。

・アカウントの依存関係

・Yubikeyとは

・パスキー vs 二要素認証

・セットアップ&利用手順

・SSHにYubikeyを使う

アカウントの依存関係

読者の皆様も様々なアカウントを所有していると思いますが、それぞれが「何によってユーザーを認証している(どの経路でパスワードリセットやパスワードの覗き見などを通して乗っ取れる)」か把握されていますか?例えば、多くの人が下のような構造になっていると思います(出典):

Google, Dropbox, Firefox Syncのいずれかを破られるとすべて失う。GoogleをSMSでパスワードリセットされるとすべて失う。SMSは非常に脆弱な認証手段である。

パスワードマネージャーは、これをこのような構造に作り変え、パスワードマネージャーを死守すればすべて守れるようにするものです(出典):

パスワードマネージャーを破られなければ、各サービスは個別に独立している

すると、肝心なのはパスワードマネージャーを守ることです。少なくとも2要素認証は必ず使いたいところです。

同時に、上記の図のように独立させるためにはパスワードの写真やリセット用のコードをGoogle Photosなどに保存するのもだめです。パスワードマネージャーについては、上記の図の出典元の記事がとてもわかりやすいです。
YubiKeyとBitWardenで安心Web生活 | κeenのHappy Hacκing Blog
κeenです。最近YubiKeyを買ったので色々試しています。今回はそのうちのWeb認証回です。

Yubikeyとは

そしてそのパスワードマネージャーを物理的なキーで守ろうというのがYubikeyなどのFIDO2デバイスです。

Yubikeyはログイン権限の保存を想定して開発された、FIDO2、TOTP/HOTP(ワンタイムパスワード)、数種類の公開鍵暗号などに対応したハードウェア署名装置です。この界隈の人には、パスワードレス認証や二段階認証に使う秘密情報を保存しておくハードウェアウォレットみたいなものといったほうが通じるかもしれません。

2要素認証でポピュラーなワンタイムパスワードは、誤ってフィッシングサイトに入力してしまうと意味がありませんが、Yubikeyを使えばFIDO2/WebAuthnの特徴によりフィッシングサイトに正常なワンタイムパスワードを入力してしまうことはありません。Yubikey自体をパスキーとしてパスワードレスログインを使用することもできます。

ただ、正直なところ一般的なユーザーにはYubikeyのような専用ハードウェアまでいかなくても、二段階認証アプリをインストールしたスマホなどで良いような気はします。(Google Authenticatorの同期機能はオフにしないとパスワードマネージャーに加えてGoogleアカウントも単一障害点になりますが。)

けっこうな種類数がありますが、Yubikey 5シリーズが一番汎用性とコストパフォーマンスを両立していると思います。なので、4種類揃えてみました。(Yubikey 5C、Yubikey 5Ciは立ち位置が謎なので買いませんでした)

Yubikey Bioシリーズは指紋認証がついていますが、$90~$95ほどします。また、FIDO2・U2Fにしか対応していません。同じ対応範囲で廉価版にYubikey Security Key NFCシリーズもありますが、パスワードレスログインのFIDO2・U2Fにしか対応していません。その代わり$25~$29で買えます

パスキー vs 二要素認証

まず前提として、Yubikeyを単一の認証手段(パスワードレスログイン)として使うか、パスワードと組み合わせた二要素認証手段として使うか考える必要があります。

パスキーとして

パスキー(FIDO2)によるパスワードレスログインにYubikeyを使用する場合は、パスワードを管理する必要がなくなり、フィッシング耐性もあり、アカウントのセキュリティはYubikeyに事実上一本化できます。

一方、Yubikeyの故障や紛失に備えて予備のYubikeyを設定しておく必要があります(でなければアクセスを失ってしまう)。YubikeyのPINも忘れてはいけません。また、対応しているサービスが比較的少ないという問題があります。

二要素認証として

FIDO2・U2Fを使った二要素認証はパスキーよりは多くのサービスが対応しています。また、Yubico Authenticatorアプリを入れればYubikeyをワンタイムパスワードに使用することもできます(が、それならGoogle Authenticatorでいいような気はします)。ログインのためにID・パスワードとYubikeyの両方が必要なため、ある意味ではパスキーより強固かもしれません。

逆に、YubikeyのPINに加えてメールアドレス・パスワードを管理したり、ワンタイムパスワードに利用する場合はリカバリー用コードを管理する手間がかかります。2要素認証がFIDO2だけならやはり2台目のYubikeyをセットアップしておく必要があるでしょう。


個人的には二要素認証として設定し、紙媒体やスマートフォン内の認証機でリカバリー用キーをバックアップする(クラウド同期はオフ)のが現時点では一番使いやすいでしょうか。

例えばBitwardenの場合、Yubikeyでできる機能はまだ限られていて、パスキーに設定してログインに使用してもその後のパスワードのアンロックにはマスターパスワードが必要です。また、まだパスワード等の暗号化にも使用できないようでした。したがって、パスキーとしてセットアップしても事実上は二要素認証の手段の1つにとどまるので、今は最初から二要素認証としてセットアップするのがおすすめです。

余談ですが、パスキーの受け渡しでアカウントを共有するようなニッチなユースケースが思いついたら教えて下さい。Yubikeyを使ってビットコインウォレットを作るニッチなユースケースについては昨年記事にしました:

CasaがYubikeyを使って秘密鍵を保管するプロダクトを発表。ハードウェアウォレットとの違いは?
個人向けにビットコインのマルチシグ管理サービスを提供しているCasa社が、これまではスマートフォンとハードウェアウォレットに限定していた鍵の保管デバイスにYubikeyも加えると発表しました。 Yubikeyは数千円で購入できるパソコンの「物理キー」として使えるデバイスで、以前解説したPasskeyによるパスワードレスログインにも物理キーとして利用できるものです。比較的安価にも関わらず、これまで仮想通貨に関連する用途ではそれほど(少なくとも消費者向けでは)登場するシーンはありませんでした。 Passkeyを使ったパスワードレスログインができるサービスが増加。そのメリット・デメリットを解説今月、取引所のBitbankでパスキー(Passkey)を用いたパスワードレス認証でのログインが可能になりました。これに関連するものと思われる質問が読者様から寄せられていたので今回はこれに回答していきます。 最近ログインに際して、passkeyを設定できるサービスが増えてきた印象があります。 「メールアドレス・パスワード+アプリ2FA」と比較してメリットデメリットは何がありますか? ・Passkey

セットアップ&利用手順

シードフレーズをバックアップできるハードウェアウォレットとは異なり、Yubikeyに入れた鍵情報はバックアップすることはできません。なので、複数台をセットアップしておくことをおすすめします。なかなか壊れなさそうではありますが、1台壊れたら新たに1台購入してまた複数台体制を再セットアップする(鍵を更新する)運用を想定します。Google Authenticatorなどのワンタイムパスワードと併用ならYubikeyが壊れてもそれでログインできるので一台で問題ないです。

ちなみに、これはパスワードマネージャーとの相性の良さが現れる側面でもあります。例えばYubikeyが壊れて、2台体制を維持するために新しい鍵をセットアップする場合、パスワードマネージャー1箇所だけ鍵を更新するのと、各サービスで鍵を更新するのとでは大きく手間が異なります。

まず届いたYubikeyを開封します。自分はスウェーデンの公式ストアから購入しましたが(送料と消費税を払ってもそっちのほうが安かった)、日本国内の正規代理店から買うこともできます(ソフト技研など。Amazonにも出品しています)。スウェーデンから買う場合、住所が長い方はできるだけ短く書いたほうがよさそうです(住所が途中で切れていて部屋番号が省略されてしまっていたので配送業者から電話が来ました)。

NFC対応のモデル(Yubikey 5 NFC、Yubikey 5C NFC)は輸送中にNFC経由でタンパリングされないために無効化されて配送されているので、最初に3秒以上USB経由で電源供給してアクティベーションする必要があります。

その後、すべてのYubikeyモデルはデバイスのUSBポートに挿す、あるいはNFCリーダーにかざすだけで使用できます。さっそくつなげてみましょう。タッチする場面があるのでタッチしやすい位置のUSBポートがおすすめです。

Bitwardenの二要素認証としてセットアップするには、設定>セキュリティ>FIDO2 WebAuthn(Yubico OTPセキュリティーキーではない)>名前をつけて「読み取りキー」>画面に従って操作(PINの設定、入力、Yubikeyのタッチ)>保存、という流れになります。

次にログインするときはパスワード入力→(最近YubikieyのPINを入力していないならPIN入力)→Yubikeyのタッチ、でログインできます。

​ただし、モバイルでは未対応のようなので、モバイルでも使いたいなら結局Google Authenticatorのような別の二要素認証も入れておかないと使いづらいと思います。

そもそもChromeに入っているGoogle Password Managerも便利なので、一般的なユーザーはパスワードマネージャーに課金しなくても、他のブラウザとパスワードを共有する必要がないならそれでも十分かと思います。家族には最低限Google Password Managerを使うように言っています。その場合はGoogleアカウントも二要素認証などで確実に保護しましょう。

以後、同じキーで別のサイトでセットアップする場合も、FIDO2/WebAuthnの2要素認証として選択→PINの入力→本体のタッチ、という流れになります。

もしパスキーとして使用する場合は、大抵のブラウザはGoogle Password ManagerやTouchIDなどを既定で使用しようとするので、ダイアログから外部セキュリティーキーを選択しましょう。(そこでQRコードが表示されたら、別の外部セキュリティーキーと書かれたメニューを開いてみましょう。UX悪いですね)

Yubikeyを失くしたり壊したりしてもログインできなくならないように、ちゃんと複数(あるいは別の二要素認証手段と合わせて)セットアップしておきましょう。

今回はYubikeyとGoogle Authenticatorを併用することにしました。

SSHでYubikeyを使う

さて、上でもさらっと書きましたが、ウェブ上のアカウントの管理なら別にYubikeyを導入しなくても一般的な二段階認証アプリを使うだけで十分かもしれません。しかし、ここからがYubikey使ってる!って感じになってきます。

開発者がリモートにある端末にログインするのに使うSSHは、パスワード式のログインでは脆弱なので公開鍵暗号によるログインが一般的になってきています。その暗号鍵をYubikeyを使って複数台のマシンで利用できたら便利ですよね。

YubikeyをSSHの鍵として使う方法は3種類(FIDO2、Smartcard、GPG)ありますが、2020年2月にリリースされたOpenSSH 8.2以降で使えて一番カンタンなFIDO2方式で説明します。

PINを設定したYubikeyを接続した状態で、SSH鍵を生成してYubikeyに格納します:

ssh-keygen -t ed25519-sk -O resident -f ~/.ssh/id_keyname_sk

もしed25519に関するエラーが出た場合は、以下でやり直します:

ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_keyname_sk

PINの入力とタッチが求められた後、通常通りid_keyname_skとid_keyname_sk.pubという2つのファイルが生成されます。後者の公開鍵ファイルは接続先のサーバーのauthorized_keyに追加します。(OpenSSH 8.2以降であることを確認!)

前者のファイルは通常は秘密鍵ですが、今回はただのスタブファイルです。別のデバイスの~/.ssh/下にコピーすることでそこのSSHエージェントに登録することもできますが、Yubikeyを接続した状態で

ssh-add -K

するとファイルをコピーしてくる手間なく自動的にSSHエージェントに利用可能な秘密鍵として追加されます!(実際の秘密鍵はYubikey内部にあるままで、スタブファイルが~/.ssh/下に追加されます)

公開鍵をまた取り出したい場合も、Yubikeyを接続した状態で

ssh-add -L

するだけで一覧取得できます。使うときは普通のSSH公開鍵ログインと同様、

ssh -i ~/.ssh/id_keyname_sk user@server

でログインできます。(PIN入力、タッチ後)

SSH鍵の持ち運びがしやすいのはかなり便利なのではないでしょうか。

まとめ

・一般的な用途なら、Google Password Manager+Googleアカウントの二段階認証でそこそこセキュリティは強化できる。(この場合、各アカウントのパスワードのリセット方法もGoogleアカウントに集約するのを忘れず)

・Yubikeyは鍵の持ち運びをクラウド同期などに頼らずに行いたい場合に便利。ただしパスキーに対応しているサービスは少ないので、多くの場合2要素認証手段の1つとして使うことになる

・OpenSSH 8.2以降で利用可能になったFIDO2を使ったSSHログインには非常に便利