はじめに
筆者、今年の4月で3年目になるWeb系エンジニアです。
過去にいくつかのWebアプリの開発に携わってきましたが、直近1年では顧客との要件定義に参加する機会も増えてきました。
Webアプリの開発で避けては通れないのが認証機能です。
業務システムであればまだしも(若干語弊があるが)、一般に公開されるサービスではMFA(多要素認証)の導入は基本的に必須であると考えています。
さて、一つ前の文章に「多要素認証」という言葉が出てきましたが、
これとは別に「二段階認証」という言葉もよく耳にしますよね。
なんとなーく頭ではわかっているつもりでも、正直他人に説明できるほど理解はできていませんでした。
要件定義の時も、顧客とエンジニアとで認識のズレがあると後で大変なことになります。
そこで周りのエンジニアから聞いたことや他の記事を読んで学んだことを、
知識の整理も兼ねてこちらに書き残したいと思います。
あくまでも筆者の認識ですので、もし間違いがあればコメントで教えていただけると幸いです。
多要素認証?二段階認証?
〇要素、〇段階、ということなので、
認証に使用する要素の数が違う?
認証情報を入力する回数が違う?
色々なことが考えられます。
大まかな理解ではこのくらいでも問題ないかと思いますが、今回はもう少し細かく見ていきます。
多要素認証
筆者なりの解釈では以下の通りです。
ID+パスワード+本人が持ち合わせている情報(指紋、秘密の回答、など)
IDとパスワードの時点で二要素、それに加えて本人のみが持つ情報を認証に使用することで、多要素認証になると考えています。
「多要素」は「3つ以上の要素」といった感じでしょうか。
二段階認証
ID+パスワード+本人が持つ認証情報でしか知り得ない情報(登録済みのメールアドレスに送信した認証コード、Google Authenticatorなど)
と認識しています。
例えば、登録済みのメールアドレスのドメインがGmailだとします。
この場合、Gmailアカウントの認証情報(本人が持つ認証情報)を知らなければ、送信された認証コードを確認することができません。
本命のログイン情報(IDとパスワード)とは別に、もう一組の認証情報を使用するイメージです。
終わりに
これら2つはどちらが良いといったように比較するものではなく、それぞれ状況に応じて使い分けるものだと考えています。
筆者自身、この2つについて完全に理解しているわけではないですし、人によって捉え方も様々になるかと思います。
この記事を読んで「こういう解釈もあるんだな~」くらいに感じていただけると嬉しいです。
最後まで読んでいただきありがとうございました。