San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
API Security

相互認証とは?

はじめに

相互認証とは何か、またその例についてご不明な場合は適した情報です。この記事を読むことで、この概念の基本を理解できるようになります。

相互認証とは?

相互認証の説明

別名、二方向認証や二方向SSLとも呼ばれ、相互認証はサーバーとクライアントの認証を統合する技法です。サーバーがクライアントに自身を認証し、クライアントがサーバーに自身を認証して安全な暗号化通信路を確立するため、認証は相互に行われます。

相互認証の実例

クライアントがサーバーのデジタル証明書を信頼し、サーバーがクライアントの証明書を信頼する場合に、相互認証で接続が確立されます。トランスポート層セキュリティ(TLS)プロトコルを用いて証明書の送受信を行います。

キーストアにはクライアントのデジタル証明書と秘密鍵が格納されます。複数の証明書が存在する場合、最新のタイムスタンプの証明書を用いてクライアントをサーバーに認証します。

相互認証により、企業クライアントが誤ってセキュリティ情報を悪意あるサイトや信頼できないサイトに開示するリスクが低減されます。フィッシングメールが届く可能性はありますが、相互認証ツールは怪しいリンクをクリックした際に情報が次ページへ渡らないよう設計されています。また、認識していたとしてもWebクライアントは信頼できないサイトに認証情報を送信しません。

相互認証の仕組みの例として、フィッシングサイトに誘導される知識不足のオンライン銀行利用者やショッピングサイト利用者を考えてみてください。適正な接続がクライアントのPCと企業サーバーの双方で確立されていなければ、PIN、パスワード、社会保障番号などの重要情報が送信されることはありません。

一部のツールは、相互認証プロセスの一環として送受信データを別々のチャネルに分割します。この仕組みにより、悪意ある攻撃者が情報にアクセスするのが難しくなります。相互認証ツールは、企業のPCが悪意あるサイトにアクセスしたり利用したりするのを防ぎます。

また、肩越しの覗き見、マン・イン・ザ・ミドル、キーロガー、トロイの木馬、ファーミングなど、様々なインターネット詐欺からも守られます。

相互認証のユースケース

APIの要求は、本物から送られていることを確認するために検証されます。相互認証により、APIが攻撃を受けず、APIクライアントが偽のAPI応答を受信しないよう保証します。

  • ゼロトラストセキュリティ

「ゼロトラスト」の考え方は、どのクライアントやデバイスもリスクとなり得ると認めます。相互認証は、接続双方で認証を求めることにより、企業、サーバ、またはアプリとの正規の通信のみを許可します。これにより、クライアントは正しい企業、サーバ、またはアプリと接続していると確信できます。

  • IoT

多くのIoTデバイスは正しく動作するために、遠隔サーバとの接続が必要です。場合によっては、他のIoTデバイスとも接続が求められます。IoTデバイスは不特定の企業(インターネット)を経由して通信するため、相互認証により、受信情報が正確かつ本物であることを保証し、攻撃者が接続を乗っ取る可能性を低減します。面白い記事 - API Management For IoT

相互認証で使用されるコンポーネント

次に、認証プロセスの要素をご紹介します。

  1. Burrows-Abadi-Needham(BAN)アルゴリズム。BANはゼロトラストの考えに基づき、通信が検証されるまで信用しません。セキュリティとデータ交換プロトコルをBANルールで検証し、すべての条件が満たされるまで通信を完了しません。相互認証では重要なプロトコルです。
  2. デジタル署名による認証。相互認証プロセスで、これらの証明書に必要な基本情報が記録されています。以下はその例です:
  • 認証される公開鍵
  • 公開鍵に紐付く接続情報
  • 証明書発行者によるデジタル署名
  • その他の関連メタデータ
  1. X.509規格による証明書。デジタル証明書の構造を定義したX.509規格が、これらの認証に用いられます。X.509証明書は、クライアントとサーバー間の通信を検証するために必要な情報をすべて含み、公開鍵または秘密鍵、デジタル署名、認証の属性情報、及び発行機関の情報を有します。
  2. SSLはSecure Sockets Layerの略です。インターネットエンジニアリングタスクフォースが評価した、TLSの前身にあたるプロトコルです。SSLはクライアントとサーバーの相互認証において重要な役割を果たしていました。SSLはTLS同様、送受信者が正規の主体であることを保証し、送信者と受信者の情報を含むデジタル証明書を利用します。また、デジタル署名と鍵を使って暗号化された通信セッションを確立します。
  3. TLSはTransport Layer Securityの略です。TLSはSSLの後継として同様の役割を担います。メッセージの検証、鍵の有効期限、暗号スイート、アルゴリズムなどにおいて、SSLより安全で効率的な技術を採用しています。
mutual authentication in action
相互認証の実例

相互SSL認証

ステップ1

クライアントは、安全なウェブサーバー(サイト)とHTTPSで接続します。接続の詳細な流れは以下の通りです:

  1. クライアントは「Client Hello」メッセージをサーバーに送信し、接続を開始します。クライアントがサポートするSSL/TLSプロトコル、提案されたCipherSuite、及び圧縮方式が含まれます。
  2. サーバーは「Server Hello」メッセージを送信し、以下の情報を記載します:
  • SSL/TLSのバージョン(クライアントの提示内容から選択)
  • 暗号スイート(クライアントの提示内容から選択)
  • 圧縮方式(クライアントの提示内容から選択)
  • セッションIDに対するクライアントからの要求

相互認証が完了するまで、サーバーはクライアントに認証要求を送信しません。

ステップ2

次に、クライアントはサーバーの認証を実施します。これを相互(または二方向)認証と呼びます。

  1. サーバーは自身のデジタル証明書(公開鍵を含む)をクライアントに送信します。
  2. クライアントはサーバーから「Server Hello Done」メッセージを受信します。
  3. クライアントはサーバーのデジタル認証情報を、以下の項目で検証します:
  • 証明書のチェーン
  • 有効期限
  • 失効状態
  1. クライアントはサーバーの公開鍵で暗号化されたランダムデータを送信します。
  2. サーバーは自身の秘密鍵を用いてこのデータを復号し、クライアントとサーバーが共通鍵を生成するための情報とします。

ステップ3

この段階で、サーバーはクライアントの認証を実施します。

  1. クライアントは自身のデジタル証明書(公開鍵を含む)をサーバーに送信します。
  2. クライアントは「Underwriting affirm」メッセージを送り、前のメッセージの署名付きコピーを含みます。クライアントの秘密鍵で署名されています。
  3. サーバーは、証明書チェーン、有効期限、失効状態を確認してクライアントのデジタル証明書を検証します。
  4. サーバーはクライアントの公開鍵を用いて「Support Verify」メッセージを確認します。

ステップ4

この段階で、クライアントとサーバーはハンドシェイクを完了し、アプリデータの送受信を開始します。

  1. クライアントは共通鍵で暗号化された完了メッセージを送信します。
  2. サーバーは共通鍵で暗号化された完了メッセージを送信します。

ハンドシェイクが完了すると、クライアントとサーバーは共通鍵を用いてデータの暗号化・復号を行います。

相互認証で防げる攻撃

中間攻撃: 攻撃者が二者間の通信に割り込み、通信内容を傍受して双方になりすます中間攻撃があります。攻撃者は通信の両端を検証できないため、相互認証がこの攻撃を防ぎます。

攻撃者は偽装や模倣によって、サーバーまたはクライアントに自らが信頼される相手と誤認させようとします。サーバーやクライアントを模倣することは可能ですが、双方が認証を行うことでそのような行為は非常に困難になります。

証明書の窃盗: 一部の相互認証が秘密鍵に依存するため、攻撃者が実際のクライアントの秘密鍵を入手するリスクは存在します。しかし、相互認証は主に公開鍵に基づいているため、証明書自体が盗まれる可能性は低く、フィッシング攻撃も防止できます。

相互認証は二要素認証と同じか?

二要素認証(2FA)は相互認証と混同してはいけません。2FAでは、クライアントが実際のトークンや秘密鍵など、2種類の認証情報をサーバーに提供します。一方、WallarmはクラウドWAF、アンチウイルスソフト、アンチスパイウェアソフトなど、多様なサービスで相互認証を採用し、より高度なセキュリティを実現しています。

FAQ

参考資料

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック