公開鍵ピンニングとは?
通常、クライアントアプリケーションとサーバー側の間のトラフィックは、公開鍵基盤(PKI)に依存しています。このメカニズムは、ほとんどのインターネットトラフィックには十分ですが、Okta Secure Identity Commitmentでは、国家レベルの攻撃者を含む、高度で持続的な標的型攻撃者を考慮する必要があります。
Oktaは、Okta Verifyを含むサービス間のすべての通信のベースラインとして、PKIとTLSを使用しています。しかし、高度な攻撃シナリオでは、Oktaの管理外にある公開証明書が侵害され、デバイスのオペレーティングシステムによって受け入れられたり、そのデバイスのユーザーによって明示的に信頼されたりする可能性があります。このような場合、攻撃者はOkta VerifyとOktaのサーバーサイドエンドポイント間のトラフィックを中間者攻撃(AITM)によって検査および操作し、後述する多くの問題を引き起こす可能性があります。
Public Key Pinning は、クライアントアプリケーションが予期する証明書のみを許可リストに登録し、他のすべての証明書をブロックする方法です。これは、パブリック認証局が侵害された場合(Digicertなど)でも、クライアントアプリケーションがそれらの証明書を受け入れないことを意味します。代わりに、攻撃者はOktaの内部で保持されている秘密鍵を盗んで、当社のサーバーになりすます必要があります。
攻撃の例: 不正な WiFi または VPN
ユーザーがコーヒーショップで作業していると想像してください。コーヒーショップの別のお客様が、パイナップルをバックパックに入れています。このデバイスは、ショップのWiFiを偽装し、巧妙な戦術の中でも特に、高い信号強度を偽って接続を積極的に乗っ取ることができます。
デバイスが WiFi ネットワークに接続すると、DNS やプロキシ設定などのネットワーク設定を取得し、適切な宛先に送信する前に、すべてのトラフィックを自身にルーティングできます。サードパーティから盗まれた SSL 証明書 (または承認されたプロファイル) を使用すると、HTTPS トラフィックでさえアラームを発生させることなく復号化できます。
これが整うと、OpenID Connectなどのフローは、トラフィックのリルーティングに対して脆弱になり、アクセストークンが盗まれたり、別のURLに設定されたりする可能性があります。

上記のフローでは、次のシーケンスが発生します。
- Okta Verifyは、組織のopenid-configurationセットアップへの接続を試みます。これはプロトコル仕様で必須です。
- トラフィックは攻撃者のインフラストラクチャに再ルーティングされます。
- 攻撃者のインフラストラクチャから返される値は、キーパラメーターを変更します。
- 攻撃者のキーエンドポイントにkeys_uriを変更します。これにより、攻撃者は正当な秘密鍵を欠いているにもかかわらず、検証に合格するJWTを送信できます。
- 標準で定義されたトークン交換フローが攻撃者のインフラストラクチャにルーティングされる可能性のある(傍受される可能性のある)token_endpointなどのエンドポイントを変更します。
- この時点で、攻撃者は表面積を大幅に拡大しており、何らかの種類のフィッシングと組み合わせると、アカウントの乗っ取りにつながる可能性があります。
ピンニングが保護する方法
TLS接続を固定する主な目標は3つあります。信頼性、完全性、プライバシーです。
真正性
Okta のクライアントアプリケーションは、改ざん防止保護とパブリックキーが焼き付けられて展開されています。Okta のインフラストラクチャは秘密キーを保持しているため、これらの焼き付けられたキーを使用してサーバーの ID を確認するために使用します。これは、Okta Verify がフィッシングサイトやその他の攻撃者が制御するインフラストラクチャへの接続にだまされることがないことを意味します。
完全性
クライアントとサーバー間で転送されるデータのほとんどは、JSON Web Tokensなどの検証可能な構造でカプセル化されていますが、これらの構造を検証するために必要なエンドポイントはそうではない可能性があります(例:`/oauth2/v1/keys`)。キーのピン留めにより、クライアントが操作されたキーセットを受け入れることを防ぎ、構成ミスやフィッシング攻撃を含む大規模な攻撃対象領域につながる可能性があります。
プライバシー
Oktaは個人情報(PII)の使用を最小限に抑えるように努めていますが、Okta Verify Device Assuranceの性質上、組織のセキュリティを強化するために、デバイスの正常な識別とそれに関連する詳細なシグナルが含まれます。第三者がこのデータを読み取った場合、攻撃やデータ収集に使用するために、ユーザーとそのデバイスに関する情報を収集する可能性があります。
ピン留めが有効な場合の攻撃例

ピン留めがアクティブな場合、Okta VerifyはTLSハンドシェイク中にTLS接続を調べますデータを送受信する前に。クライアントは接続をドロップし、Okta以外のインフラストラクチャが転送中のデータを読み取ったり変更したりする可能性をすぐに遮断します。
この保護は、ハードウェアキー/ WebAuthNのような他のフィッシング耐性のある認証システムでは達成できない、Okta FastPassに対する軽減コントロールとなります。これらの認証システムは、署名付きアサーションをインターネット経由で送信するために、ブラウザの(固定されていない)PKI + TLSの実装に依存しているためです。
デメリット
Oktaのピン留めの主な欠点は、運用上の複雑さです。常にお客様をより安全に保つために、追加の作業を受け入れる用意があります。
一部の組織には、ネットワーク境界内のすべてのトラフィックを検査するポリシーがあります。Okta Verifyのトラフィックが検査ルールに含まれている場合、攻撃者がトラフィックの検査または変更を実行した場合と同様に、独自のネットワーク接続をブロックします。
上記の理由から、Okta Verifyとそのインフラストラクチャ間のトラフィックの検査を許可することはできません。そうしないと、お客様が上記の攻撃シナリオにさらされることになります。ネットワーク内のトラフィックを検査する必要がある場合は、検査ルールからOktaのインフラストラクチャを許可リストに登録できます。ブラウザとOktaインフラストラクチャ間のログイン・トラフィックを検査する必要がある組織は、カスタムドメインを使用し、Okta Verifyに影響を与えることなく、そのドメインへのトラフィックを検査できます。
私たちはこの分野を注視しており、セキュリティと運用が改善される代替手段の検討に前向きです。そのような事態が発生した場合でも、代替手段のセキュリティレベルは現在のレベル以上になるのでご安心ください。
Oktaは、セキュリティを最優先にすることにコミットメントしました。Okta Verifyが世界で最も安全な認証システムになるように日々努力し、Oktaとお客様を保護しています。キーピンニングは、Okta Verifyの全体的なセキュリティの重要な要素であり、お客様の安全を維持するために全力を尽くします。
このブログ記事についてご質問がありますか?eng_blogs@okta.comまでご連絡ください。
Oktaの洞察力に富んだエンジニアリングブログで、知識をさらに深めてください。
Oktaの情熱的で優秀なエンジニアチームで働きませんか?採用情報ページをご覧ください。
Oktaは、最新かつ高度なアイデンティティ管理の可能性を解き放ちます。詳細は、セールス担当者にお問い合わせください。