この文書は2016年以降更新されていません

ユーザープライバシーの保護に関するチートシート

OWASP 作成
ジャンプ先: 移動検索
Cheatsheets-header.jpg

最終改訂日 (yy/mm/dd):2015/07/18

はじめに

この OWASP チートシートでは、ユーザーのプライバシーや匿名性を損なう可能性がある潜在的なさまざまな脅威および攻撃からユーザーを保護するために Web 開発者が活用できる対策について説明します。このチートシートでは、オンラインサービス、特にソーシャルネットワーキングやコミュニケーションプラットフォームなどのコンテキストでユーザーが遭遇する可能性があるプライバシーや匿名性に対する脅威について重点的に取り上げます。

ガイドライン

強力な暗号化

ユーザーの ID、個人情報、またはコミュニケーションを処理するオンラインプラットフォームはすべて、強力な暗号化によって保護する必要があります。ユーザーのコミュニケーションは、転送中のものも保存中のものも暗号化する必要があります。パスワードなどのユーザー固有の秘密情報についても、資格情報の漏えいリスクを大幅に軽減するためにワークファクターを大きくした、衝突耐性のある強力なハッシュアルゴリズムのほか、適切な完全性の制御を使用して保護する必要があります。

通信中のデータを保護するために、開発者は TLS/SSL のベストプラクティスに従う必要があります。たとえば、証明書の検証、秘密鍵の適切な保護、強力な暗号のみの使用、ユーザーに対する分かりやすく明確な警告の表示、十分な鍵長の確保などがあります。 プライベートデータを保存する場合は、十分な長さの鍵を使用して暗号化するとともに、技術と手順の両面で厳格なアクセス制限を 適用しなければなりません。ユーザーの資格情報は、保存中に暗号化されているかどうかにかかわらず、ハッシュ化する必要があります。

強力な暗号化の詳細なガイドとベストプラクティスについては、OWASP の以下の参考資料を参照してください。

  1. 暗号の保存に関するチートシート
  2. 認証に関するチートシート
  3. トランスポート層の保護に関するチートシート
  4. Guide to Cryptography
  5. Testing for TLS/SSL

HTTP Strict Transport Security のサポート

HTTP Strict Transport Security (HSTS) は、セキュアな (HTTPS) 接続のみを受け入れることをユーザーエージェントに示すためにサーバーによって設定される HTTP ヘッダーです。このヘッダーは、セキュアでないすべての HTTP リンクを HTTPS に変更するようユーザーエージェントに促すとともに、ユーザーに信頼されていないあらゆる TLS/SSL 接続を拒否することによってフェールセーフ動作をするように、準拠しているユーザーエージェントに強制します。

HSTS については、Mozilla Firefox や Google Chrome などの一般的なユーザーエージェントで平均的なサポートが提供されています。スパイ行為や中間者攻撃に絶えず脅かされているユーザーには引き続き非常に有用です。

すべてのユーザーに対して HSTS を強制することが現実的でないとしても、Web 開発者は、少なくとも、HSTS を有効化できる選択肢をユーザーに提供すべきです。

HSTS の詳細については、以下を参照してください。

  1. HTTP Strict Transport Security (Wikipedia)
  2. IETF による HSTS に関するドラフト
  3. OWASP Appsec Tutorial Series - Episode 4: Strict Transport Security

デジタル証明書のピン留め

証明書のピン留めとは、ユーザーエージェント (Web ブラウザー、モバイルアプリ、またはブラウザープラグイン) 内のデジタル証明書 (公開鍵) として、事前定義された情報セット (通常ハッシュ) をハードコードまたは保管することによって、事前定義された証明書 / 公開鍵のみがセキュアな通信に使用されるようにし、その他のものについては、たとえユーザーがその証明書 / 公開キーを (明示的または暗黙的に) 信頼していてもエラーになるようにするという手法です。

ピン留めは、次のような場合に効果があります。

  • ユーザーが信頼している CA (認証局) が危害を受け、その CA から任意のドメインの証明書が発行され、悪意のある第三者によってユーザーに対する盗聴行為が行われる可能性がある場合
  • 有害な可能性があるルート CA を受け入れるようにユーザーが強制される環境 (企業環境や国の PKI スキームなど)
  • 対象とする利用者層に証明書の警告が理解されず、無効な証明書が許可されてしまう可能性があるアプリケーション

証明書のピン留めの詳細については、以下を参照してください。

  1. OWASP Certificate ピン留めに関するチートシート
  1. Public Key Pinning Extension for HTTP draft-ietf-websec-key-pinning-02
  1. Securing the SSL channel against man-in-the-middle attacks: Future technologies - HTTP Strict Transport Security and and Pinning of Certs (Tobias Gondrom 著)

パニックモード

パニックモードとは、アカウント 情報漏えいの直接的な脅威にさらされたときに、ユーザーが頼ることができるモードのことです。

パニックモードを作成できるようにしておくと、特にセキュアでない地域において、ユーザーがこのような脅威を切り抜けるのに役立つ場合があります。不幸なことに、世界中の多くのユーザーがこの種の脅威にさらされていますが、ほとんどの Web 開発者は、この事実を認識または考慮していません。

パニックモードの例として、脅威に遭遇して困窮したユーザーが自分のデータを削除できるモード、偽の受信ボックス / アカウント / システムにログインできるモード、機密データのバックアップ / アップロード / 非表示化を行うモードなどがあります。

実装するべき適切なパニックモードは、アプリケーションの種類によって異なります。たとえば、TrueCrypt のようなディスク暗号化ソフトウェアの場合は、ユーザーが間違ったパスワードを入力したら、偽のシステムパーティションを起動する、というようなパニックモードの実装が考えられます。

電子メールプロバイダーはたとえば、パニックモードでは事前定義された (通常、ユーザーの定義に基づく) 機密の電子メールや連絡先を非表示にし、無害な電子メールメッセージのみを読めるようにしつつ、パニックモードが実際のアカウントに取って代わることは防止する、などの実装ができます。

パニックモードに関する重要な注意点は、容易に見破られてはならない、ということです。パニックモード内に侵入した攻撃者が、できるだけ真実に気づかないようにする必要があります。つまり、パニックモードになっても、機密ではない通常の操作 (電子メールの送受信など) のほとんどが続行可能であり、かつそのパニックモードからさらに別のパニックモードを作成可能である必要があるということです (攻撃者が被害者のパニックモード上でパニックモードを新たに作成しようとしてこの作成に失敗した場合、攻撃者は既にパニックモードになっていることに気づき、被害者に危害を加えようとする可能性があります)。 別のソリューションは、ユーザーアカウントからのパニックモードの生成を防止して、攻撃者によるなりすましをやや困難にすることです。たとえば、アウトオブバンドでのみ作成可能にします。それにより、攻撃者はそのアカウントに対してパニックモードが既に存在することを知ることができません。

パニックモードの実装では常に、攻撃者を惑わし、攻撃者が被害者の実際のアカウント / 機密データにアクセスするのを防止することと、特定のアカウントのパニックモードが既に存在していることを見破られないようにすることを念頭に置く必要があります。

TrueCrypt の隠されたオペレーティングシステムモードの詳細については、以下を参照してください。

  1. TrueCrypt Hidden Operating System

リモートセッションの無効化

ユーザーの機器が紛失したり、盗まれたり、押収されたりした場合や、Cookie が盗まれた疑いがある場合に備えて、現在のオンラインセッションを表示して、疑わしい残留セッション (特に、盗まれた、または押収されたデバイスに属するセッション) を切断 / 無効化できるようにする機能を提供すると、ユーザーにとって非常に役立つ場合があります。リモートセッションの無効化は、中間者攻撃でセッションの詳細が盗まれた疑いがある場合にも役立ちます。

セッション管理の詳細については、以下を参照してください。

  1. OWASP セッション管理に関するチートシート

匿名ネットワークからの接続の許可

Tor プロジェクトなどの匿名ネットワークは、世界のセキュアでない地域のユーザーに、監視を逃れたり、情報にアクセスしたり、検閲のバリアを突破したりするための、またとないチャンスを提供します。紛争地域の活動家は、このようなネットワーク、特に、ソーシャルネットワーク、メディアストリーミング Web サイト、電子メールプロバイダーなどのメディアを使用して、世界の他の地域の人々に向けて不正を報告したり、無検閲の情報を送信したりすることがよくあります。

Web 開発者およびネットワーク管理者は、あらゆる手段を駆使して、ユーザーがこのようなネットワークからサービスにアクセスできるようにする必要があり、また、世界中の人々に及ぼす影響を考慮して、このような匿名ネットワークを阻害するあらゆるポリシーを評価し直す必要があります。

可能であれば、アプリケーション開発者は、開発するアプリケーションをこれらの匿名ネットワークと統合するか、これらの容易な結合を可能にするよう努めるべきです。たとえば、SOCKS プロキシや統合ライブラリ (OnionKit for Android など) をサポートします。

匿名ネットワーク、および匿名ネットワークが提供するユーザー保護の詳細については、以下を参照してください。

  1. Tor プロジェクト
  2. I2P ネットワーク
  3. OnionKit: Android アプリでのネットワークセキュリティと暗号化の促進

IP アドレス漏えいの防止

ユーザーの保護を考えた場合、ユーザーの IP アドレスの漏えい防止は非常に重要です。アバター、署名、写真の添付ファイルなど、外部のサードパーティコンテンツをホストするアプリケーションでは、アプリケーションページへのサードパーティコンテンツのロードのブロックをユーザーに許可する利点について考慮する必要があります。

たとえば、サードパーティの外部ドメインのイメージをユーザーのフィードまたはタイムラインに埋め込むことが可能な場合、攻撃者がイメージを自分のドメインにホストして、そのイメージに対する HTTP リクエストを監視することによって、被害者の実際の IP アドレスを検出する可能性があります。

ユーザーコンテンツが動作することを必要とする Web アプリケーションは多数あり、このような必要性はビジネスプロセスとして完全に容認されます。しかし、Web 開発者は、外部コンテンツをブロックするオプションを予防措置としてユーザーに提供することを検討すべきです。これは、主にソーシャルネットワークやフォーラムに適用されますが、Web ベースの電子メールにも適用されます。なぜなら、Web ベースの電子メールの場合、HTML 形式の電子メールにイメージを埋め込むことが可能なためです。

サードパーティのイメージを含む HTML 形式の電子メールにも同様の問題が存在しますが、ほとんどの電子メールクライアントおよびプロバイダーでは、サードパーティコンテンツのロードが既定でブロックされるようになっており、ユーザーのプライバシーと匿名性の保護が強化されています。

正直であることと透明性

Web アプリケーションが法的または政治的な保護をユーザーに十分に提供できない場合、またはログなどの機密情報の悪用や漏えいを防止できない場合は、その事実をユーザーにわかりやすく説明し、そのサービスを使用すべきかどうかを、ユーザーが適切な知識に基づいて選択できるようにする必要があります。

ユーザー情報の削除または調査を外部エンティティによって要求されている場合は、その要求についてユーザーに通知します (ただし、法律に違反しない場合)。

正直であることは、アプリケーションとそのユーザーとの間に信頼の文化を育むうえで大いに役立ちます。また、このような率直な情報提供によって、世界中の多くのユーザーが、自分がどのような選択を行うべきか慎重に検討するようになるため、世界中の対照的なさまざまな地域のユーザーに害が及ぶのを防止できます。

セキュアロギングに関する詳細な洞察については、以下を参照してください。

  1. OWASP ロギングに関するチートシート

Authors and Primary Editors

Mohammed ALDOUB - OWASP Kuwait chapter leader

Other Cheatsheets

Developer Cheat Sheets (Builder)

Assessment Cheat Sheets (Breaker)

Mobile Cheat Sheets

OpSec Cheat Sheets (Defender)

Draft Cheat Sheets