この記事では、認証と認可について
- 認証と認可の違い
- 認証とは
- 認証の3要素とは
- 多要素認証・2要素認証・2段階認証の違いとは
- 認可とは
- 認証と認可の関係
などを図を用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。
認証と認可の違い
認証と認可は特に区別されないので、混同しやすい用語です。
しかし、アプリケーション開発やセキュリティを考える上では、認証と認可は区別して、別物として扱うことが重要です。下記に認証と認可のの要点をまとめます(後ほど各用語について詳しく説明します)。
認証と認可の違い
- 認証
- IDやパスワードを入力して、通信している相手が誰であるのかを確認すること。
- 認証は英語ではAuthenticationと書きます。
- 長いので略して、AuthNやAuthCと書くこともああります。
- 認可
- 特定の条件下(例:ユーザごとの権限)において、リソースアクセスの権限を与えること。
- 認可は英語ではAuthorizationと書きます。
- 長いので略して、AuthZやAuthRと書くこともああります。
では、これから認証と認可について詳しく説明します。
あわせて読みたい
認証と認可を実現する技術として、OAuthやOpenID Connectがあります。
OAuthとOpenID Connectについては下記の記事で詳しく説明しています。興味のある方は下記のリンクからぜひチェックをしてみてください。
OAuthとは?『仕組み』などを分かりやすく解説!
続きを見る
-
OpenID Connectとは?『仕組み』や『OAuthとの違い』などを解説!
続きを見る
認証とは
認証とは通信している相手が「誰(何)であるのか」を「何らかの手段(例えば、IDやパスワードなど)」で確認・特定することです。通信している相手がなりすましていないことを証明するのが認証です。
例えば、パソコンにIDとパスワードを設定している場合、IDとパスワードを入力してログインをします。IDとパスワードを入力することで、操作者が誰であるのかをパソコンは特定することができます。
その他の認証としては、声や指紋などを用いた生体認証があります。また、銀行口座の解説などで本人確認のために保険証や免許証などを提示するのも認証になります。
認証の例
Webアプリケーションで用いられる認証には下記のようなものがあります。
- Basic認証
- フォーム認証
- IDとパスワード等を入力させて行う認証
補足
- 純粋な「認証」は、認証が完了したからといって、何かの権限を与えるわけではありません。何かの権限を与えるのは「認可」となります。例えば、あなたが私に運転免許証を提示して、そこに「田中太郎」と書いてあり、あなたの顔と運転免許証の顔が一致していると、私はあなたが「田中太郎」さんであると分かります(認証)。しかし、それだけです。認証したからといって、あなたに何かの権限を与えるのとは別の話です。
- HTTPステータスの場合、認証が失敗すると、「401エラー(Unauthorized)」になります。例えば、Webサイトのアクセスやログインに必要なIDやパスワードを間違えて入力すると、「401エラー」が表示されます。この状態の時、サーバーは「通信相手はいったい誰だ?」となっています。
認証の3要素
「米国国立標準技術研究所(NIST: National Institute of Standards and Technology)」が認証についてのガイドラインをまとめています。このガイドライン「NIST SP800-63」では、認証の要素は性質によって、「記憶情報・知識情報(Something you know)」「所持情報(Something you have)」「生体情報(Something you are)」という3種類に分類・定義されています。
記憶情報を用いた認証
本人のみ記憶していることを提示して認証する方法です。
例えば、IDとパスワード、秘密の質問、PINコードなどがあります。パターン認証(画面を指でなぞってロックを解除する)も記憶情報の1つです。
これらの情報は他人に知られないようにしておかなければなりません。システム構築も比較的容易なため、コンピュータの世界では最も多く使われている認証になります。
補足
- PINコードはICカード(クレジットカードやキャッシュカードなど)の契約時に自分で決めた暗証番号です。
- PINは、「Personal Identification Number」の略です。
所持情報を用いた認証
本人のみが所持しているものを提示して認証する方法です。
例えば、運転免許証やマイナンバーカードなどの身分証などがあります。ワンタイムパスワードなどのトークンなども所持情報になります。クレジットカードやキャッシュカード等のICカードを使った認証では、カード内に格納されている情報を用いて認証を行っています。スマホにSMSなどでパスワードを送信して、そのパスワードを使って認証する方法も所持情報の1つになります。
これらの所持物は紛失や盗難の危険性があるので、PINコードと組み合わせて用いることが多いです。
生体情報を用いた認証
本人の生体に基づくデータにより利用者を認証する方法です。
例えば、指紋や静脈、虹彩、顔の形などがあります。
生体情報を用いた認証は本人に結びついたデータなので、記憶忘れや所有物の紛失などの問題がありません。
多要素認証・2要素認証・2段階認証の違い
多要素認証・2要素認証・2段階認証の違いについて説明します。
認証の3要素のうち、2つ以上を組み合わせた認証のことを多要素認証といいます。多要素認証によりセキュリティレベルを高めることができます。多要素認証は英語では「Multi-Factor Authentication」と書きます。MFAと略称で呼ばれることもあります。
多要素認証の中でも、2要素を使う認証のことを「2要素認証」といいます。例えば、IDとパスワード(知識情報)で認証した後に、スマホのSMSに届いたパスワード(所持情報)で認証した場合、2つの要素を組み合わせているので「2要素認証」となります。
「2要素認証」と似た言葉に「2段階認証」があります。この2つは認証を2回行うという点では同じです。認証の3要素のうち2要素を利用するのが2要素認証、1要素のみ利用するのが2段階認証です。例えば、IDとパスワード(知識情報)で認証した後に、秘密の質問(知識情報)で認証した場合、認証を2回行っていますが、知識情報の1要素のみを用いているので、2段階認証となります。
認可とは
認可とは、特定の条件下(ユーザごとの権限など)において、リソースアクセスの権限を与えることです。
例えば、「全ユーザが閲覧可能なWebページA」と「ある特定のユーザ(例えば管理者) のみ閲覧可能なWebページB」があったとします。この場合、AさんはWebページAのみしか閲覧する権限がありませんが、管理者はWebページAもWebページBも閲覧する権限があります。
その他の例としては、Twitterで「taro」というユーザアカウントがパスワードを入力して、ログインした場合を考えてみましょう。この場合、「taro」アカウントは、リソース(Twitterの場合だとツイートなど)に対して、投稿・編集・閲覧の権限が与えられていますが、その他のアカウントにはリソース(ツイートなど)を閲覧する権限しかありません。
認可の例
Webアプリケーションで用いられる認可には下記のようなものがあります。
- TwitterやInstagramに投稿する
- IDとパスワードでログインすることで、TwitterやInstagramに投稿する権限を得ることができます(これは認証することで認可されている例)。
- 無償版と有償版で利用できる機能に差をつける
- アルコールやたばこに関するWebサイトなどで、一定の年齢以上のユーザのみ閲覧できるように制限をかける
補足
- 純粋な「認可」は、認可が完了したからといって、身元が明らかになるわけではありません。相手を特定するのは「認証」となります。例えば、駅で切手を買うと、電車に乗ることが許可されます(認可)。しかし、それだけです。認可したからといって、あなたが誰であるのかまでは分かりません。
- HTTPステータスの場合、認可が失敗すると、「403エラー(Forbidden)」になります。例えば、社内ネットワーク(イントラネット)に外部からアクセスした場合には、サーバはリクエストを理解したものの、サイトへのアクセス権限がないので、403エラーが表示されます。
認証と認可の関係
認証と認可には関係性があります。
多くの場合、認可は認証に依存しています(認証することで認可される)。しかし、「認証せずに認可のみする場合」や「認可せずに認証のみする場合」もあります。これらについて順番に説明します。
認可は認証に依存している
多くの場合、認可は認証に依存しています。
例えば、海外に旅行に行く場合を考えてみましょう。パスポートを用いて本人確認をすることで(認証)、旅行をする権利を得ることができます(認可)。
サイトの管理者である場合を考えてみましょう。管理者のIDとパスワードを入力することで(認証)、サイトの構成や見た目を変える権利を得ることができます(認可)。
自動車を運転する場合を考えてみましょう。運転免許証を持つことで、本人確認をし(認証)、その上で自動車を運転する権利を得ています(認可)。
このように認証されると、即座に認可されることがほとんどです。認証と認可は異なるものですが、密接に関わり合っています。
補足
- 認可の時に説明した「特定の条件下」というのが「相手が特定の誰かであることが認証されている」という条件であることが多いのです。
認証せずに認可のみする場合
身近な例だと、例えば、駅で切符を買うと、電車に乗ることができます。これは、細かく言うと、切符を持っている方の本人確認をせずに(認証せずに)、電車に乗る権利を得ることができています(認可)。
また、IPアドレスでアクセス制限をしているWebアプリケーションの場合だと、「認証せずに認可のみすること」になります。IPアドレスだけでは、通信している相手が誰かまでは分かりません(認証していません)。
認可せずに認証のみする場合
認証したのに認可しないとなると、何のために認証をした?となるので、1つのシステムに閉じている限りは、「認可せずに認証のみすること」はほとんどありません。しかし、システム間で認証の委譲が発生するような場合では、認証のみ行う場合があります。
例えば、「WebサービスA」がユーザの認証を行い、その認証結果を「WebサービスB」に伝えた場合は、「WebサービスA」は認証をしていますが、認可はしていないことになります。例えば、OpenID Connectは、認証を委譲しているので、認可せずに認証のみを行う場合があります。
本記事のまとめ
この記事では、認証と認可について、以下の内容を説明しました。
- 認証と認可の違い
- 認証とは
- 認証の3要素とは
- 多要素認証・2要素認証・2段階認証の違いとは
- 認可とは
- 認証と認可の関係
お読み頂きありがとうございました。