はじめに
おはようございます。こんにちは。こんばんは。キティちゃんです。いつもははじめに色々書いているのですが、今回書いた内容はダメと言わてしまったので、シンプルにしました。それはさておき、今日はとある認証方式の話をしていきたいと思います。
きっかけ
二要素認証のサイトを見た時に、ふと「これ、Qiitaのネタとして使えそう」と思ったのがきっかけです。
また、二要素認証と二段階認証ってどう違うんだっけということを無くすための意味でも書きたいと思いました。(お恥ずかしながらたまにごっちゃになってしまいます。。)
ここから深堀していくにあたり、まずは二要素認証とは、二段階認証と何が違うのかについて書いていきます。
二要素認証
まず前提として3つの要素があります。
1. 知識
2. 所持
3. 生体
上記3つの要素から2つを組み合わせた認証方式を二要素認証といい、また、多要素認証と言ったりもします。
まず、「知識」はユーザーのみが知りえる情報のことを指します。例えば、ID、パスワードなどが該当します。
次に「所持」は、文字通り、ユーザーが保持している情報のことを指します。例えば、スマホへのSMSやメール等で通知されるワンタイムパスワードやICカードが該当します。
最後に「生体」は、人体の情報のことを指します。例えば、虹彩、静脈、指紋が該当します。
二段階認証と何が違うのか
言葉通り、二段階認証は認証を2回に分けて(2段階)行うことから、二段階認証と言われます。二要素認証と異なる点としては、段階的に認証を行うこと、また、同じ要素の組み合わせでもいいということです。
二要素認証は例えば、「ID情報(知識)」×「知識」以外の要素」と異なる要素を組み合わせた認証方式ですが、二段階認証は「ID情報(知識)」で認証後、「他の「知識」情報」or「「知識」以外の要素」で認証と段階的に認証を行う認証方式です。
私の記憶では、例えばTwitterにログインだか、アカウント作成だかする際に、メールアドレスを入力後、スマホにSMS通知が行き、SMSに記載された番号を入力したという記憶はありませんか?まさにあれが、「知識」×「所持」の二要素認証です。
ここで、「じゃあ、段階を分けて異なる要素で認証する場合はなんていうの?それは二段階認証じゃないの?」と思った方もいらっしゃるかもしれません。その通りです。先程も説明しましたが、二段階認証は同じ要素"でも"段階を分けることで成り立つ認証方式です。別に要素が同じである必要はありません。なので、ある意味二要素認証は、二段階認証に包含されていると言えます。ですが、あくまで二段階認証と二要素認証は"異なる認証の仕組み"であるということは理解していただければと思います。
セキュリティ診断でも意外と面倒くさい
Webアプリケーション診断の経験がある方は分かるかもしれませんが、アタックロックがあるかもしれない認証機能を診断するためには、認証に失敗するパターンと成功するパターンをシナリオとして組んだりなんて記憶にあるのではないでしょうか。特にシナリオが長くなると診断にかかる時間も増したりするので、結構進捗に響いたりします。。特にWebアプリケーションを動作させているサーバー側の規模が小さかったりするとより悲惨です。
アタックロックはログインを要するサイトに必要な機能なのは理解していますが、なかなか診断泣かせです。アタックロックとは簡単に言うと、複数回入力に誤りがあった場合に、不正ログインができないようにロックをする機能のことです。
この辺は仕事のことなので、分からない人はいつか知るときが来た時にこの記事を思い出してください。
教訓
何かしらの要素を入力する場合は、アタックロックがあるかもしれないと疑うようになりました。特にWeb診断をする場合は、警戒することに越したことはないです。アタックロックがかかってからでは遅いです。場合によってはお客様に解除依頼をしたりする必要が発生するため、作業遅延に繋がります。(そうならないためにも、予備としていくつかアカウントをもらう訳ですが。。)
終わりに
今回は二段階認証、二要素認証について触れました。他にも認証方式はありますが、それは別の機会(はないかもしれません)にでも。
実は私自身もアタックロックがかかってしまったことがあります。まさかそんなところでって感じではあったので油断していました。。今回の内容はだいぶ前から構想としてあったのですが、アタックロックにあったことから構成を若干変えて今回のような内容となりました。勉強とかもそうですが、アウトプットすることで自分への勉強にもなるので、今後にも活かせそうです。
一人でも多くの方がアタックロックにかからないことを祈りながらココアを飲みます。最後までお付き合いいただきありがとうございました。
追伸
再度お伝えしますが、アタックロックは悪い機能ではなく、ログインを要するようなアプリケーションには必要な機能です。不正アクセス防止などを目的としています。一番は入力した内容に間違いがないかを見直すことです。特に、暗証番号とか自分しか知らない情報を入力して認証しようとしている画面には気を付けましょう。
参考
『認証強化』日立ソリューションズ
・https://www.hitachi-solutions.co.jp/iam/sp/sol_kyouka.html
『二要素認証と二段階認証の違いを理解していますか?』キャノン サイバーセキュリティ情報局
・https://eset-info.canon-its.jp/malware_info/special/detail/210311.html