認証と認可
認証とは「あなたは誰か」を確かめることで、認可とは「あなたは何をしてよいか」を決めることです。 この二つは別のもので、区別して考える必要があります。
別表記:認証と認可/認証/認可/Authentication/Authorization/AuthN/AuthZ/本人確認と権限付与
認証
認証は、本人であることの確認です。IDとパスワードを入力する、スマートフォンの通知を承認する、指紋を読ませる。これらは、「いまアクセスしてきたのは、確かにこの人だ」と確かめる手続きです。
ログイン画面でやっていることが認証です。成功すれば、システムは「この人は山田さんだ」と認識します。
認可
認可は、その人が何をしてよいかの判断です。山田さんだと分かったうえで、山田さんは経理のフォルダを開けるのか、顧客データを書き換えられるのか、管理者の設定を変えられるのか。これを決めるのが認可です。
ログインできたからといって、何でもできるわけではありません。認証を通った後に、操作のたびに認可の判断が行われています。
なぜ区別が重要なのか
この二つを混同すると、対策の議論が噛み合いません。
「多要素認証を入れたから安全だ」は、認証の話です。本人でない者のログインは防げますが、本人(またはそのAI)が権限の範囲内で何をするかは制限しません。
「権限を絞ったから安全だ」は、認可の話です。できることは限定されますが、本人になりすました者がその権限を使うことは防げません。
両方が揃って、初めて「正しい人が、正しい範囲で」操作できる状態になります。
AIエージェントとの関係
AIエージェントについては、認証と認可の両方に、人とは違う問題があります。
認証については、AIは多要素認証の手順を実行できないので、APIキーやトークンといった別の手段で「このAIだ」と確かめることになります。この手段は、人の認証より漏れやすく、守りが弱くなりがちです。
認可については、AIが指示の解釈で動きを変えるので、権限の範囲内でも想定外の操作をします。しかも、「このAIは何をしてよいか」だけでなく、「このAIは誰の代理で動いているか」まで考慮しないと、認可の判断ができません。人のアカウントには「誰の代理か」という概念がなかったので、既存の認可の仕組みには、これを表す場所がありません。
VC(Verifiable Credentials)が主に関わるのは、認可のほうです。「誰の委任で、何をどこまで、いつまで」を証明書としてAIに持たせ、受け付ける側がそれを見て認可の判断をします。認証については、AIがその証明書の正当な持ち主であることを、証明書に紐づいた鍵で示します。
よくある誤解
ログインできれば、権限があるということか。 違います。ログインは認証で、権限は認可です。ログインできても、権限のない操作はできません。
OAuthは認証の仕組みか。 認可の仕組みです。「この操作を許可するか」を扱います。本人確認は、OpenID Connectなど別の仕組みが担います。
認証を強くすれば、認可は要らないのか。 要ります。本人であることが確かでも、本人が何をしてよいかは別に決める必要があります。本人のAIが、本人の権限で、意図しない操作をする、という問題は、認証では防げません。
