AWSアカウントの保護、とりわけルートアカウントの保護について、改めて考えた。1passwordを二段階認証に利用してきたが、考えるほどにこれは「多要素認証」の原則に反するやり方であり、本末転倒であるという思いが強まった。

多要素認証の定義

 うんざりするほど何度も読んできた定義ではあるが、改めて自分の状況に照らし合わせて考えようとすると、結局基本の概念に戻ってくることになる。

 調査した範囲でもっとも権威と信頼のあるように見えたアメリカ国立標準技術研究所から引用する。1

MFA, sometimes referred to as two-factor authentication or 2FA, is a security enhancement that allows you to present two pieces of evidence – your credentials – when logging in to an account. Your credentials fall into any of these three categories: something you know (like a password or PIN), something you have (like a smart card), or something you are (like your fingerprint). Your credentials must come from two different categories to enhance security – so entering two different passwords would not be considered multi-factor.

 これに照らして考えると、1password単独による認証は、ワンタイムパスワード(OTP)を発行していても「多要素認証」と呼べない。というのは、ひとつのマスタパスワードで1passwordにアクセスできれば、パスワードとOTPの両方がおのずと取得できてしまうことになるからだ。これは言うなれば「預金通帳」と「暗証番号のメモ」を同じ金庫にしまうようなもので、これでは暗証番号が本来二重の防御となるべきところが、金庫の鍵ひとつがあるだけで口座情報が盗まれてしまう。

 1passwordのマスタパスワードが漏れなければ問題はないし、そのマスタパスワードが僕の脳にしか存在しないのであればなおさら、現実的には漏れるはずはない。しかし現実的にどうあれ、原則に照らして考えると、これでは事実上は一要素認証だ。一般のウェブサイトであれば別にそれでもいいかもしれない。しかしAWSのルートアカウントの保護のように重要な防御を考えると、いくら注意してもしすぎるということはない。要するに、1passwordでOTPを生成する方針ではよくないと確信するにいたった。

Authy を採用した

 https://authy.com/

 これについては特に思い入れがあったわけでもないが、悪くない選択肢に見えたため選択した。バックアップ機能や複数デバイス対応が優れていると宣伝されていたため、かつてGoogle Authenticatorの端末間移行で面倒な思いをした僕にこれは刺さった。

 数日使ってみて、1passwordがパスワードを自動入力しワンタイムパスワードもクリップボードにコピーしてくれていたことを思うと、いくらか不便には感じる。しかしそれくらいの不便をしてこそ守りがいがあるのが安全というものだろう。

 なお1passwordの当該の機能については、圧倒的に便利ではあるし1password自身もそれを勧めてきているようだが、原理原則を考えるとあってはならないし使ってはいけない機能と思う。

 最後に、同様に1passwordを多要素認証に使うことを止める意見の記事があったため参考として掲げる。

  AWSの多要素認証に1passwordが使えたけど使っちゃダメだと思った話 - Qiita