パスワード管理ソフトのbitwardenを活用する

パスワード管理はソフトウェアに任せる

安全快適にリモートワークを行う」で記載したように、リモートワークの活用機会が高まり、ますます各自のパスワード管理が重要になってきています。頭ではパスワードの使い回しは良く無いと理解していながら、結局は文字列+数字で似たようなパスワードをいくつも作ってしまい、脆弱な状態にあるケースは多いように感じます。パスワード管理ソフトの導入はITリテラシが高く無いとなかなか取り組む機会はありませんが、個人のパスワードと会社のアカウントに利用しているパスワードが類似しているのは問題です。同僚とパスワードを共有してしまうという問題も多くあります。先日のニュースでは国内企業のVPNの脆弱性からパスワードが漏洩し、2要素認証を設定していた企業は救われたと記事になっていました。ここで紹介するパスワード管理ソフトですが、パスワードを管理する事と、ランダムな文字列でのパスワード生成機能の2つの機能を持ちます。また、このbitwardenは、パスワードが登録されたサイトに遷移すると指紋認証や顔認証等でパスワードが入力されます。当然ながら、URLが異なればパスワードを自動入力しないため、フィッシング対策にもなります。このプロダクトは無償、有償と選択が可能ですが、無償でも十分な機能を保持しています。

パスワード管理の目指す姿

  • 信頼できるソフトウェアを活用する(bitwarden社について)
  • クロスプラットフォームで複数のチャネル、有名なブラウザーに対応し利便性が高いこと
  • パスワード生成機能は所定の文字数で任意に数字や記号を含められること
  • ネットに繋がらなくてもパスワード管理ソフトを利用できること
  • 可能な限り2要素認証を組み合わせること
  • 容易にバックアップが取得できること
  • 本当に重要なIDこそ自分で記憶する。金融に関わるパスワード管理
  • クラウド管理かオンプレミス(ローカル環境)か
  1. 信頼できるソフトウェアを活用する(bitwarden社について)
    プロダクトを提供している企業のプライバシーポリシーがしっかり記載され、どの国に属するかが記載され、本人の同意なく情報を開示しないという基本事項がプライバシーポリシーに記載されている事は重要です。曖昧に記載している企業のソフトウェアはお勧めしません。最終的に企業が属する国の命令には逆らえませんが、明瞭である事は重要です。オープンソースである事などは、さらに企業のスタンスが明確です。

  2. クロスプラットフォームで複数のチャネル、有名なブラウザーに対応し利便性が高いこと
    クロスプラットフォームである事は利便性が高くなります。Windowsだけで使えても、スマホでは別管理というのではじきに使わなくなってしまいます。Windows、macOS、iOS、Androidに対応している事は必須条件でしょう。スマホやタブレットなどでは指紋認証や顔認証でスムーズにパスワードを利用できる事が前提です。

  3. パスワード生成機能は所定の文字数で任意に数字や記号を含められること
    サイトによっては文字列数の下限、上限が異なります。また記号の一部が含められないなどサイトによってルールは異なります。パスワード管理ソフトでは、サイトによって任意にルールを定めたうえで生成できる事が求められます。

  4. ネットに繋がらなくてもパスワード管理ソフトを利用できること
    ネットに繋げるためのパスワードや、ブラウザから利用するものがパスワード管理の全てではありません。クローズネットワークやスマホの機内モードであったとしても重要なデータにアクセスする機会はあり得ます。これはソフトウェアのデザインですが、bitwardenはそのシチュエーションを踏まえたソフトウェアのデザインがなされています。

  5. 可能な限り2要素認証を組み合わせること
    これはユーザー側に求める要件です。パスワードが漏洩する可能性を踏まえ、利用するサイトやサービスでは2要素認証を設定しておくべきです。パスワード自体を第三者に預けられる前提が2要素認証です。もちろん、bitwardenからパスワード全体が漏洩する事は企業の存続に関わるわけですし、その可能性は低いと考えられますが完璧と考えるべきではありません。今や2要素認証はサービス提供業者の基本提供機能ですからパスワードが万が一漏洩しても水際で防ぐ事ができます。なお、使い方の注意として2要素認証のキーとなる要素をbitwardenに保存するべきではありません。2要素認証で有名なAuthyはバックアップパスワードなどの存在がありますが、これは主に利用するパスワード管理ソフトとは別に管理すべきです。

  6. 容易にバックアップが取得できること
    パスワードは漏洩する事が最悪の事象ですが、ロストすると回復に時間を要し、大幅な時間をロスします。各個人の責任でバックアップは取得しておくべきです。bitwardenは、csvまたはjson形式で簡単にエクスポートできます。これを暗号化されたUSBメディアなどにバックアップし、ネットとは繋がらない場所に保管しておく事が求められます。

  7. 本当に重要なIDこそ自分で記憶する。金融に関わるパスワード管理
    オンラインバンキングなど、漏洩した時には直接金銭的、かつ高額となり得るものはパスワード管理システムから除外される事をお勧めします。2要素認証があるのは当然としても、です。もちろん上述した暗号化されたUSBメディアに保存しておく事でも構いません。ネットで到達できる場所に保存されるべきではありません。クレジットカードの盗難とは異なり、オンラインバンキングではユーザー側の重過失によって補償減額、または補償せずという取り扱いになりえます。これはパスワードを記載した手帳を盗まれた、パスワードをスマホに保存してあったものが盗難されるなどした場合もユーザー側の重過失にあたる可能性があります。そのアカウントの利用でどういったリスクがあるのかを考えIDとパスワードを管理していく必要があります。●●payのQR決済もオンラインバンキング程は高額にならないものの、金銭流出のリスクがあります。主要なQR決済事業者は不正利用に対して補償するというスタンスが主流ではあるものの、パスワード管理におけるユーザー側の過失があれば補償されない可能性があります。各企業の約款、補償の事項に必ず目を通す必要があります。全ては個別事案での判断という事なのでしょうが、そもそもパスワードの使い回しは過失と言われても仕方がないのではないでしょうか。金融分野は極めてリスクが高いという事になります。QR決済は少額決済ですが、2要素認証は必須といえるでしょう。英単語と数字の単純な組み合わせではない複雑さを持ったパスワードを設定される事をお勧めします。

  8. クラウドかオンプレミス(ローカル環境)か
    自宅のPCでパスワード管理する事とbitwardenのようにクラウドで管理する事のどちらが安全かと言われれば判断は難しいところです。ちなみに、bitwardenはオンプレミスで構築できます。実際に過去、ubuntu18.04LTSにdocker、docker composeを導入し、bitwardenをセットアップし利用していた事があります。ダイナミックDNSはno-ipを使い、SSLは無償のLet’s Encryptにbitwarden自身が登録すれば完了です。3カ月ごとにスクリプトを走らせればSSL証明書を自動更新し、dockerから最新イメージを自動ダウンロードしてシステムを最新に保ちます。Linux上でMS SQLServerが動作し、bitwardenはコンパクトながらとても技術の高さを感じました。しかし、個人でWAF導入やアクセスログのチェックなどセキュリティ対策を実施する事の難易度の高さも感じ、再びクラウド管理に戻しました。ビジネス目的にて、インターネットに接続されない企業内でbitwardenを活用するのは非常に良い方法です。個人のサイバーセキュリティ対策で実現可能な事は資金面やスキル面でも限界があります。隙を見せず、目立たず狙われにくい事が大切です。

bitwardenの利用方法

bitwardenのWebサイトで最初にアカウントを作成します。

https://bitwarden.com

アカウント作成の最初の画面こそ英語ですが、実際のアカウント作成画面は日本語となります。利用するアプリも日本語ですので扱いはとても簡単に感じます。

アカウントの作成が終了したらWebにログインし、もし現在利用されているパスワードマネージャがあるのであればインポートできます。ChromeやFirefoxのパスワードをcsvに一旦出力し、インポートもできます。bitwardenではこのパスワードの集合体を保管庫と呼んでいます。

続いて設定タブから2要素認証を設定します。おなじみのAuthyやメール通知を選択できます。

次に、PCであれば、端末毎にbitwardenのクライアントアプリケーションおよび利用するブラウザの拡張機能としてbitwardenをインストールしてください。上記の画面ではYubikey、Duo、FIDOがプレミアム版としての表記がありますが、無償版のbitwardenであっても、生体認証に対応しています。プレミアム版に登録しDuoを選択した場合は、2要素認証の6桁の数字を入力する事なく、シングルサインオンでスマホに通知がきますので以下のように”Approve”をタップするだけでログインが完了します。これはあくまでbitwardenのログインの話であって、各サイトのログイン時にシングルサインオンが可能になるわけではありません。

Duo Securityは2018年にCisco社が買収しています。CiscoのAnyConnectを使う場合の2要素認証に使われるもので、どちらかといえば法人がターゲットです。最近だとMicrosoft365でも使えるようになりました。個人利用は無償です。

Duo Security
https://duo.com

“Free Trial”と言われると基本は有償サービスのように感じますが、”Free Trial”からアカウントを作成し、速やかに無料アカウント(Duo Free)に切り替え可能です。
bitwardenとの連携は以下のようにDuoの画面からbitwardenの情報を元にID、秘密鍵、APIサーバーを設定します。そしてスマホアプリの”Duo Mobile”をセットアップし利用します。

そもそもコストの低いbitwardenでDuoのPushサービスが利用できるという事は、Duoは法人向けの利用料も廉価なのでしょうか。今後色々なサービスでもDuoを利用する機会が増えてくる事が期待されます。

bitwardenの設定

bitwardenに対しパスワードの入力の都度、毎回マスターパスワードを入力するのは大変な作業で現実的ではありません。2要素認証を設定していれば、初回こそマスターパスワードと2要素認証が必要ですが、2回目以降のログインでは同一クライアントまたは同一ブラウザであれば2要素認証は不要です。bitwardenはさらにpinによる簡易な対話型認証をし、保管庫にアクセスする事が可能となります。

PINによるロック解除

ブラウザの拡張機能からbitwardenを呼び出し、”設定”から保管庫のタイムアウトはブラウザ再起動時とし、PINでロック解除にチェックします。すると右側の画面がポップアップするので、簡易なPINコードを決めたら入力し、”ブラウザー再起動時にマスターパスワードでロック”のチェックボックスは外します。最後に”送信”ボタンをクリックし確定します。

これでブラウザーを再起動しても、再びマスターパスワードは不要でPINコードで保管庫にアクセスできます。

生体認証によるロック解除(スマホ)

スマホの場合は最近では生体認証がほぼ使える状態でしょう。iOSであればbitwardenの”設定”から”Face IDでロック解除”をチェックします。Androidの場合も同様にbitwardenの”設定”から”生体認証でロック解除”を設定します。

生体認証によるロック解除(PC)

スマホと同様ですが、bitwardenの仕組みはブラウザから生体認証するときにデスクトップアプリのbitwardenとやりとりして認証します。ブラウザ起動後、最初にbitwardenを使う場合はロック解除が必要ですが、この時にデスクトップ版のbitwardenをあらかじめ起動しておくことが必須です。

Windowsのbitwardenでは、Windows Helloに対応しています。生体認証が付いていないPCであっても、Amazonなどで安価に(2,000円強)で指紋認証のUSBドングルが販売されているのでこちらを利用可能です。Windows Helloのセットアップも難しくはありません。USBに挿せばドライバを自動セットアップしてくれます。Windowsのログイン、bitwarden共に指紋認証が行え便利です。

Amazon 【Amazon.co.jp 限定】SEKC USB指紋認証キー Windows Hello機能対応 0.05秒 指紋認証でセキュリティ対策 SFSD-01
https://www.amazon.co.jp/gp/product/B07GLRQPHP/

OSのWindows Helloの設定が無事完了すると、bitwardenアプリでも生体認証が行えるようになります。設定から”生体認証でロック解除”をチェックします。また、ブラウザの拡張機能としてbitwardenをインストールし、拡張機能版のbitwardenでも同様に生体認証を設定します。

macOSでも設定内容はWindowsと同じです。macbookであればTouch IDが使えるので、Touch IDでアプリ、ブラウザ共にロック解除が可能です。私が知る限りでは、SafariとMicrosoft EdgeではTouch IDで解除できますが、mac版Firefoxでは生体認証によるロック解除は使えませんでした。

なお、生体認証といえばYubikeyが挙げられますが、これはWindows Helloに対応させた運用をするのは難しく、Windows Hello対応の指紋認証デバイスを購入されることをお勧めします。(なんだかややこしい書き方をしていますが、YubikeyではWindowsローカルアカウント前提とか色々運用上の制約があります)。

その他カスタマイズする箇所としてはクリップボードの消去で、他のアプリケーションからクリップボードの中身を読み取られる可能性を考え、速やかに消去する設定がお勧めです。

(2020-09-30追記)
iOS14から、クリップボードを読み取ったアプリケーションについて画面上部に表示される機能が加わりました。これまでこっそりクリップボードの内容を読み取っていたアプリ提供者も釈明に追われる事でしょう。そのようなアプリは多くないようですが、パスワードや他の重要な情報を読み取られてしまうリスクを念頭に対処してください。

アカウント作成時の実例

アカウント作成時に、どのようにパスワードを自動生成し登録していくのかを動画にしてありますので参考にしてください。

実例として価格comのサイトへのアカウント作成の挙動です。価格comは半角英数の8〜12文字という制約があります。記号は使えません。パスワードの規則に添うようにパスワードを生成します。

一度登録してしまえば、ブラウザからのログインはとても簡単です。

サイトによって挙動は異なるのですが、価格comの場合、ログインボタンをクリックするだけで、あとは勝手にbitwardenがIDとパスワードをセットしてくれます。

これで、たくさんのパスワードに悩まされる事なく、パスワードの使い回しによる、”利用者の過失”というリスクから解放されます。私は、個人向けのセキュリティ対策はまず最初に認証管理が重要と考えています。なかなか興味が向かない分野ですが、参考にしていただければ幸いです。

(補足)bitwardenの脆弱性について

bitwardenはオープンソースであるが故に、いろいろな脆弱性を見つけられ、指摘を受ける可能性があります。実際にJPCERT/CCIPAとの共同で提供されている、脆弱性対策情報データベースであるJVN IPediaから、bitwardenの脆弱性を検索できます。

JPCERT/CC
https://www.jpcert.or.jp
IPA
https://www.ipa.go.jp
JVN IPedia
https://jvndb.jvn.jp/index.html

JPN IPediaでbitwardenについて検索すると、2件該当し、直近では2020年7月18日に公開された「JVNDB-2020-008246 Bitwarden Server におけるサーバサイドのリクエストフォージェリの脆弱性」が見つかります。セキュリティの専門家は、このサーバーサイドリクエストフォージェリはかなりリスクが高い内容と認識しています。端的に言えば、bitwarden Serverを踏み台にし、そこからネットワーク内の別のサーバーの情報を抜き取る事が可能(かもしれない)という脆弱性です。またCVSSv3の値が7.5と定量的にもリスクが高い事を示しています。JVN IPediaは速やかに情報共有を行うのが目的であって、ユーザーがどう対応するか、または修正が完全であるかどうかの評価を行いません。
この修正に関しては、JPN IPediaから辿ると、bitwardenのGitHub上のプルリクエストが行われており、内容はhackerOneから7月16日に指摘されたものでIPv6が混在した場合の脆弱性とわかります。このやりとりを見れば7月18日には修正が行われマージコミットされています。そして7月29日にはVersion1.36.0の提供が行われ、対応完了という流れになります。Version1.36.0については以下を参照してください。

bitwardenのGitHub上のプルリクエスト
https://github.com/bitwarden/server/pull/827
hackerOne
https://www.hackerone.com
Version 1.36.0(GitHub)
https://github.com/bitwarden/server/releases/tag/v1.36.0

実際に、クラウド上でbitwarden社がどのように運用しているかまでは公開されていません。一般的には多重化されたサイバーセキュリティ製品で守られており、そう簡単に攻撃が成功するケースは無いものと考えられますが、ユーザーがオンプレミスで運用している場合で、インターネットにbitwarden Serverを公開している場合は高いリスクといえます。そのような理由で私も一時はインターネット接続を認めない形でLAN内のみでオンプレでbitwarden Serverを運用していたものの、こういった情報を頻繁に追っていくのがあまりに大変であるため、再びクラウドの利用に切り替えたという次第です。

hackeroneに対しては、あくまで企業の意思で登録するもので、bitwarden社はhackeroneへの登録を行っています。hackeroneに登録されたハッカーは脆弱性を見つけた場合には報奨金を得る仕組みとなっています。ハッカーの中には報奨金を寄付に回す人達もいます。bitwarden社のモデルはかなり勇気のある行動で自分たちの技術力に自信が無いとなかなかこういった行動は取れないでしょう。

サーバーセキュリティ製品なのでサーバーサイドからクライアントに対し緊急パッチを当てる機能は必須です。しかし、「開発者がOSの特権を用いてやりたい放題の脆弱性」だと指摘されるケースもあります。それが脆弱性だとしたらアプリケーションを何もインストールできなくなってしまいます。そういったケースも含めてオープンに説明責任を果たし、ユーザーに考える機会を与える事、信頼を蓄積していく事がプロの仕事でありプロダクトの信頼性に繋がると私は考えています。