相互TLS認証(mTLS)は認証の一種であり、接続する2者間でTLSプロトコルを使用して相互に認証し合います。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
相互TLS認証(略してmTLS)は、相互認証方式です。 mTLSは、ネットワーク接続の両端にいる当事者がお互いに正しい秘密鍵を持っていることを確認することで、彼らが主張する人物であることを保証します。各自のTLS証明書内の情報に従って、追加の検証が行われます。
mTLSは、Zero Trustセキュリティフレームワーク*で組織内のユーザー、デバイス、サーバーを確認するために良く使用されます。また、APIのセキュリティの維持にも役立ちます。
*ゼロトラストとは、ユーザー、デバイス、ネットワークトラフィックをデフォルトで一切信頼しないことを意味し、多くのセキュリティ上の脆弱性を排除するのに役立つアプローチです。
Transport Layer Security(TLS)はインターネット上で広く使用されている暗号化プロトコルです。TLSは、以前はSSLと呼ばれていましたが、クライアント-サーバー間接続において、サーバーの認証およびクライアントとサーバー間の通信の暗号化を行い、部外者が通信を盗み見できないようにします。
TLSの仕組みについて理解するために重要なことが3つあります。
TLSは、公開鍵と秘密鍵という2つの鍵を使用する公開鍵暗号という技術を使用することで機能します。公開鍵で暗号化されたものは、秘密鍵でのみ復号化できます。
したがって、公開鍵で暗号化されたメッセージを復号化するサーバーは、秘密鍵を所有していることを証明することになります。ドメインまたはサーバーのTLS証明書を調べると、誰でも公開鍵を表示することができます。
TLS証明書はデータファイルで、このファイルには公開鍵、証明書の発行者(TLS証明書は認証局から発行されます)、証明書の有効期限など、サーバーやデバイスの身元を確認するための重要な情報が含まれています。
TLSハンドシェイクは、TLS証明書の検証と、サーバーが秘密鍵を所有していることを確認するためのプロセスです。また、TLSハンドシェイクはハンドシェイクが終了した後の暗号化方式も確立します。
通常、TLSでは、サーバーはTLS証明書と公開鍵/秘密鍵のペアを持ちますが、クライアントはこれらを持ちません。一般的なTLSの処理は次のようになります。
ただし、mTLSではクライアントとサーバーの双方が証明書を持ち、双方が公開鍵/秘密鍵のペアを用いて認証を行います。通常のTLSと比較して、mTLSでは両者を検証するための追加ステップがあります(追加の手順は太字です)。
mTLSを実装する組織は、自分自身が認証局として機能します。これは、認証局が外部組織であり、証明書の所有者が関連付けられたドメインを正当に所有しているかどうかをチェックする標準的なTLSとは対照的です(TLS証明書の検証についてご覧ください)。
mTLSには、「ルート」TLS証明書が必要です。この証明書により、組織は自分自身の認証局になることができます。承認されたクライアントとサーバーが使用する証明書は、このルート証明書に対応している必要があります。ルート証明書は自己署名されており、これは組織が自分で作成したことを意味します。(この方法は、公共のインターネット上の一方向TLSでは機能しません。この場合、外部の認証局がこれらの証明書を発行する必要があります)。
mTLSは、クライアントとサーバー間のトラフィックが双方向で安全かつ信頼できることを保証するのに役立ちます。これにより、組織のネットワークやアプリケーションにログインするユーザーに対する追加のセキュリティ層が提供されます。また、Internet of Things(IoT)デバイスなど、ログインプロセスを経ないクライアントデバイスとの接続の検証も行われます。
mTLSは、以下のような様々な種類の攻撃を防ぐことができます。
日常的な目的であれば、一方向認証で十分な保護が得られます。公衆インターネットにおけるTLSの目的は、1)ユーザーが偽装されたWebサイトを訪問しないようにすること、2)機密データがインターネットを構成するさまざまなネットワークを通過する際に安全かつ暗号化された状態に保つこと、3)データが転送中に改ざんされないことを保証すること、です。クライアントがサーバーのIDのみを検証する一方向TLSは、これらの目標を達成します。
さらに、すべてのエンドユーザーデバイスにTLS証明書を配布することは非常に困難です。これに必要な数十億もの証明書を生成、管理、検証することは、ほぼ不可能なタスクです。
しかし、小規模な組織ではmTLSは非常に有用であり、特にその組織がネットワークセキュリティにZero Trustアプローチを採用している場合には、非常に実用的です。Zero Trustのアプローチでは、デフォルトでいかなるユーザー、デバイス、リクエストも信頼しないので、組織は、すべてのユーザー、デバイス、リクエストがネットワーク内の任意のポイントにアクセスしようとするたびに、認証できる必要があります。mTLSは、ユーザーの認証とデバイスの検証によってこれを可能にします。
Cloudflare Zero Trustは、Zero TrustセキュリティにmTLSを使用しています。また、Cloudflare API ShieldもAPIエンドポイントの検証にmTLSを使用して、権限のない人が悪意のある可能性のあるAPIリクエストを送信できないようにします。CloudflareでmTLSを実装する方法についてご覧ください。