【そうごにんしょう】

相互認証 とは?

💡 「あなた誰?」「そっちこそ誰?」から始まる信頼関係
📌 このページのポイント
相互認証 — 双方向の身元確認 クライアント 証明書A サーバー 証明書B 証明書Aを提示 証明書Bを提示 双方が確認OK → 安全な通信を開始 片方向認証: サーバーだけ確認 相互認証: 両方を確認 ✓
相互認証のイメージ
ひよこ ひよこ

相互認証って、普通の認証と何が違うの?

ペンギン先生 ペンギン先生

普通のログインはユーザーがサーバーに「自分はこの人です」と証明するだけの片方向認証だよね。相互認証では、さらにサーバー側も「自分は本物のサーバーです」とユーザーに証明するんだよ。合言葉を片方だけじゃなくて、お互いに確認し合うイメージだね

ひよこ ひよこ

サーバーの身元確認って、普段意識したことないかも?

ペンギン先生 ペンギン先生

実はブラウザHTTPSサイトにアクセスするとき、裏側でサーバー証明書の検証が行われているんだよ。鍵マークが表示されるのがその証拠だね。ただしこれはサーバー認証だけで、相互認証ではクライアント側の証明もセットで行うんだ

ひよこ ひよこ

どんな場面で相互認証が必要になるの?

ペンギン先生 ペンギン先生

マイクロサービス間の通信、銀行のオンラインバンキング、IoTデバイスとクラウドの接続なんかが典型例だよ。特にゼロトラストの考え方では「ネットワーク内部でも信用しない」が原則だから、あらゆる通信に相互認証を求めるんだ

ひよこ ひよこ

実装方法って証明書以外にもあるの?

ペンギン先生 ペンギン先生

代表的なのはmTLS(証明書ベース)だけど、Kerberosのようにチケットベースで相互認証する方式もあるよ。Active Directory環境ではKerberosが広く使われていて、クライアントとサーバーがKDCという認証サーバーを介してお互いを確認し合うんだ

ひよこ ひよこ

相互認証を入れると遅くなったりしないの?

ペンギン先生 ペンギン先生

確かにハンドシェイクが増える分オーバーヘッドはあるけど、TLS 1.3では初回接続のハンドシェイクが1-RTTに短縮されて、再接続時は0-RTTも可能だから、実用上はほとんど気にならないレベルだよ。セッション再開の仕組みをうまく使えば、パフォーマンスと安全性を両立できるんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「相互認証」って出てきたら「通信する両者がお互いの身元を確認し合うこと」と思えればだいたいOK!
📖 おまけ:英語の意味
「Mutual Authentication」 = 相互認証
💬 mutualは「相互の・双方の」という意味で、一方通行ではなく双方向に認証するニュアンスだよ
← 用語集にもどる