認証と認可、多要素認証と多段階認証

7payのこともあったので、セキュリティの基本的なことについて、理解がフワフワしていたり半ば忘れていたりする情報を改めて整理。

認証と認可

認証と認可の違いは、この記事が分かりやすかった。

dev.classmethod.jp

基本的にこの記事の繰り返しになってしまうけど、咀嚼するために自分でも文章にしてみる。

認証

Authentication (AuthN)

相手が誰なのかを確認すること。本人確認。

相手が誰なのかを確認する、というところまでが認証であって、確認できたからどうする、という話はまた別。

認証の3要素

何を使って認証するかには3種類ある。

生体認証 (WHAT YOU ARE: WYA)

その人自身を提示することによる認証。

顔、指紋、署名、動作など。

所有物認証 (WHAT YOU HAVE: WYH)

その人だけが持っているものを提示することによる認証。

家の鍵、印鑑、身分証明書、非接触ICカード、セキュリティトークンなど。

知識認証 (WHAT YOU KNOW: WYK)

その人だけが知っていることを提示することによる認証。

パスワード、合言葉、暗証番号、特定のパターン(Androidのロック画面とか)など。

認可

authorization (AuthZ)

特定の条件に対して、アクセスする権限を与える(許可する)こと。

特定の条件を満たしているから許可する、というところだけが認可であって、どうやって条件を満たしたか(あなたが誰なのか)は別の話。

先の記事から引用すると、切符を持っているから電車に乗れる。切符を自分で買ったのか誰かにもらったかは関係ない。
鍵を持っているから家に入れる。あなたの身元が確認できたから入れるのではなく、鍵があったから入れたというだけ。

多要素認証と多段階認証

さっきの記事から離れます。
名前が似てるけど別物の「多要素認証」と「多段階認証」について。

この記事が分かりやすい。

www.segunabe.com

多要素認証

認証の3要素のうち、複数を示すことで認証するやり方。

つまり、クレジットカード(WYH) を示した上で暗証番号(WYK) を入力しないと決済できない、とか、暗証番号(WYK) と静脈認証(WYA) を通らないとATMでお金を下ろせないとかそういうの。

ちなみに同じ要素を複数求めるだけでは、あまりセキュリティは上がらない。理由は、一度にまとめて奪いやすいから。

具体的に言うと、通帳(WYH) と印鑑(WYH) が同じ場所に置いてあったらまとめて盗まれちゃうし、指紋認証(WYA) + 虹彩認証(WYA) を求めても、本人がさらわれて強要されたらまとめて突破される。

でもキャッシュカード(WYH) と暗証番号(WYK) なら、キャッシュカードが盗まれただけではまだ突破できない。なので比較的強度が高い。

多段階認証

認証プロセスを二段階に分けるやり方。

典型的な例は、まず一段階目としてIDとパスワードでの認証を行い、二段階目に、スマートフォンに送られてきたSMSのワンタイムパスワードで認証するパターン。

ワンタイムパスワード用のトークンを使う場合もある。オンラインバンキングとか。