注目の記事

やはりお前らの多要素認証は間違っている

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

よく訓練されたアップル信者、都元です。 いきなりガン煽りのタイトルで申し訳ないんですが、これしか頭に浮かびませんでした。 ちなみに原作は見たことがありません。

弊社は本日を最終営業日として、これから冬季休業となります。 今年も一年、どうもありがとうございました。というわけで書き納めの一本、その2。

さて、「認証」という言葉がありますが、要するに 相手が誰(何)であるかを確認すること を表します。 正確には「ひとつのデジタルアイデンティティがある実体に対応することの確証を得ること」です。 が、まぁそれはまた別のお話。

この「認証」はなにもコンピュータに限定した話ではなく、人間同士のコミュニケーションでも 随時行っている話です。目の前で自分と会話している人物が、本当に自分が望んでいる相手かどうか、 というのは確信できていると思います。

結論

さていきなりの結論ですが。実は単要素なのに、二要素認証とか多要素認証とか言っちゃってませんか? 認証に必要な「何か」の数が2つであっても、それは多要素であるとは限りません。

具体的には、第一パスワードと第二パスワード、とかいう意味の分かんないヤーツ。何で分けた。

というわけで、多要素とはなにか、あらためて整理していきたいと思います。

認証の3要素

この「認証」を行うためには、3つの方法があります。っていうかむしろ3つしかありません。 4つ目が見つかったら結構な発見なんじゃないでしょうか。

  1. WHAT YOU ARE (inherence factor)

    顔貌、声、指紋、署名など、その人自身を提示して、相手にアイデンティティを確認させる方法です。小さなコミュニティでは、お互いの顔や声を相互に知っているため、面と向かえば相手が誰かはわかりますね。認証が完了する、ということです。

  2. WHAT YOU HAVE (possession factor)

    身分証、携帯電話等、その人だけが持っているものを提示することによって認証をします。ある程度コミュニティが大きくなってくると、お互いの特徴を覚えきれなくなります。そんな場合は身分証明書を提示して、相手を認証すると思います。

    また、その身分証には顔写真がプリントしてあることも多く、結果として WYA に依存するものも少なくありません。

  3. WHAT YOU KNOW (knowledge factor)

    パスワード、秘密の質問等、その人だけが知っていることを提示して認証をします。コンピュータの世界で最も多く使われるファクターでしょう。

2要素認証 (2-Factor Authentication)

前述の通り、コンピュータの世界では knowledge factor を使った認証が一般的です。 しかし昨今、パスワードが流出したり、簡単すぎるパスワードを推測されたり、という事故が多発しています。 従って、そのような事故があっても直ちに損害が出ないように、2つの要素を組み合わせて認証を行うシステムがあります。これを2要素認証と呼びます。

さらに3つの要素すべてを確認することも含めて、多要素認証 Multi-Factor Authentication (MFA) と言ったりしますね。

そう、2要素認証は、前述の3つの中から異なった2つを認証に使う、っていうことです。 パスワードと秘密の質問は、所詮どちらも knowledge factor です。なので両方確認しても、単要素認証です。

安全に見えてロクにセキュリティの向上に寄与していない代物なのです。

2段階認証 (2-Step Authentication? Verification?)

一方で2段階認証という言葉もあります。これは前述の2要素認証をのことを指していることもあり、 しかしよく見ると Authentication ではなく Verification であったり、とだいぶ厄介な言葉です。

はい、定義不明です。そんなわけで、筆者個人としてはあまり好きな言葉ではないです。 なので本稿ではこの用語にこれ以上触れません。

しかし。なんとあの天下の Google 先生がこれを2段階認証と呼んでいる英語サイト)事実があります。

まぁ繰り返しますが、私には「2段階認証」はよくわかりません。諸々ご注意ください。

現実世界の多要素認証の例

代表的なものは、クレジットカードだと思っています。 「カードそのものを持っている」という possession factor と、「署名ができる」という inherence factor の組み合わせで本人を確認し、 決済するシステムが店頭でのクレジットカードの使い方です。

ネットバンキングでも、最近は多要素認証が主流です。 「パスワードを知っている」という knowledge factor と、「セキュリティトークンを持っている」という possession factor の組み合わせです。

ちなみにセキュリティトークンに表示される数字は knowledge factor っぽく見えるかもしれませんが、 このトークンを持っていない限り知識でどうしようもないので、これは possession factor です。

possession factor を knowledge factor に還元してしまう魔法

で。多要素認証だと思っていたら実は微妙、という事例もいくつか。

オンラインショッピングにおけるクレジットカード利用。これは実は単要素認証です。 というのも、カード番号と裏面のセキュリティーコードという、カードを持っていればどうにかなる情報、 つまり possession factor のみで決済ができてしまいます。さらに、これらの情報を記憶することも 恐らくそう困難ではないため、knowledge factor としても機能してしまいそうです。

最近は 3D セキュア という、 IDとパスワードによって本人確認をする仕組みも存在しますが、前述の「カードの possession factor のみで決済可能」 という状況を打破したに過ぎません。カード番号とセキュリティーコードを (覚えられるので) knowledge factor とみなした場合は、 3D セキュアを追加したとしても結局は knowledge factor の寄せ集めでしかありません。

さらにさらに。最近は 1Password を始めとするパスワードマネージャーを利用している方も多いと思います。 二要素認証が必要なサイトにおいて、登録時に表示されるQRコードをパスワードマネージャーに読み込ませる 機能があったりします。

これを行うと、パスワードマネージャーからトークンの番号を引き出せるようになり、認証時に非常に便利です。

…せっかくの possession factor が knowledge factor に還元され、単要素認証化していることに気づきましたでしょうか。

まとめ

まぁこのあたりは利便性とのトレードオフなので、一概になんとも言いづらいのですが、 無意識無邪気に、何も知りませんでしたというわけにもいかないと思います。

やるならやるで、その影響を認識した上で運用しましょうね。

ではみなさま、良いお年を。