JP7438383B2 - ウェブアプリケーションの信頼性の検証 - Google Patents

ウェブアプリケーションの信頼性の検証 Download PDF

Info

Publication number
JP7438383B2
JP7438383B2 JP2022550983A JP2022550983A JP7438383B2 JP 7438383 B2 JP7438383 B2 JP 7438383B2 JP 2022550983 A JP2022550983 A JP 2022550983A JP 2022550983 A JP2022550983 A JP 2022550983A JP 7438383 B2 JP7438383 B2 JP 7438383B2
Authority
JP
Japan
Prior art keywords
web application
code
trusted
cryptographic hash
integrity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022550983A
Other languages
English (en)
Other versions
JP2023519121A (ja
Inventor
ジョン・ブラッドリー・チェン
ジェイソン・ジェフリー・ミラー
ガン・ワン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2023519121A publication Critical patent/JP2023519121A/ja
Application granted granted Critical
Publication of JP7438383B2 publication Critical patent/JP7438383B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2119Authenticating web pages, e.g. with suspicious links

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Information Transfer Between Computers (AREA)
  • Inspection Of Paper Currency And Valuable Securities (AREA)
  • Materials For Medical Uses (AREA)
  • Investigating Strength Of Materials By Application Of Mechanical Stress (AREA)

Description

本明細書は、ウェブアプリケーションのセキュリティに関する。
ウェブアプリとも呼ばれるウェブアプリケーションは、ウェブブラウザ内で実行されるアプリケーションである。ウェブアプリケーションは、スクリプト、ハイパーテキストマークアップ言語(HTML)、カスケーディングスタイルシート(CSS)、および/または他のウェブ技術を使用して構築することができる。ウェブアプリケーションは通常、ハイパーテキスト転送プロトコルHTTP要求などの要求を送信することによって、対応するウェブサーバとインタラクションする。
一般に、本明細書に記載されている主題の革新的な側面の1つは、クライアントデバイスのブラウザによって、ウェブアプリケーションのコードを備える電子リソースを取得するステップと、ウェブアプリケーションのコードを処理するステップを含む、ブラウザによって電子リソースをレンダリングするステップであって、コードがブラウザにリモートサーバへの要求を開始させる、ステップと、コードの処理に応じて、要求を生成するステップと、ウェブアプリケーションの完全性要素の少なくとも一部を含むように、要求を修正するステップと、修正された要求をリモートサーバに送信するステップと、リモートサーバから、リモートサーバが完全性要素を使用してウェブアプリケーションが信頼できることを検証したことに基づく、要求に対する応答を受信するステップと、応答に基づいてデータを表示するステップとを含む方法で具現化することができる。本態様の他の実装形態は、方法の態様を実行するように構成され、コンピュータストレージデバイスにエンコードされた、対応する装置、システム、およびコンピュータプログラムを含む。
これらおよび他の実装形態は、それぞれ任意で、次の機能の1つまたは複数を含むことができる。いくつかの態様では、完全性要素を含むように要求を修正するステップは、完全性要素の一部を要求のヘッダに挿入するステップを備える。
いくつかの態様では、電子リソースは完全性要素を含む。いくつかの態様は、コードの処理に応じて、ブラウザによって、ウェブアプリケーションのコードおよび完全性要素に少なくとも部分的に基づいて、ウェブアプリケーションが信頼できることを検証するステップを含むことができる。要求は、ウェブアプリケーションが信頼できるとの検証に応じて生成することができる。ウェブアプリケーションの完全性要素は、(i)暗号化ハッシュ関数、および(ii)暗号化ハッシュ関数とウェブアプリケーションの信頼できるコードを使用して計算された信頼できる暗号化ハッシュを指定する完全性属性を含むことができる。
ブラウザによって、ウェブアプリケーションのコードおよび完全性要素に少なくとも部分的に基づいて、ウェブアプリケーションが信頼できることを検証するステップは、ブラウザによって、暗号化ハッシュ関数を使用して、ブラウザによって取得されたウェブアプリケーションのコードの暗号化ハッシュを計算するステップと、計算された暗号化ハッシュを信頼できる暗号化ハッシュと比較することによって、計算された暗号化ハッシュが信頼できる暗号化ハッシュと一致することを決定するステップと、ブラウザによって、計算された暗号化ハッシュが信頼できる暗号化ハッシュと一致するとの決定に応じて、ウェブアプリケーションが信頼できることを検証するステップとを含むことができる。完全性要素の一部は、信頼できる暗号化ハッシュを含むことができる。
いくつかの態様では、完全性要素は、完全性データのセットと、完全性データのセットに基づいて生成されたデジタル署名とを備える署名付き承認要素を含む。完全性データのセットは、暗号化ハッシュ関数とウェブアプリケーションの信頼できるコードを使用して計算された信頼できる暗号化ハッシュと、信頼できる署名者のアイデンティティと、デジタル署名が生成された時刻を示すタイムスタンプとを含むことができる。完全性要素の一部は、完全性データのセットとデジタル署名とを含むことができる。
いくつかの態様では、要求を修正するステップは、コードが埋め込まれているコンテキストを識別するデータを要求に挿入するステップを含む。コードが埋め込まれているコンテキストを識別するデータは、(i)コードが埋め込まれている電子リソースのフレームの属性、またはフレームの属性の暗号化ハッシュのうちの少なくとも1つを含む。
いくつかの態様では、完全性要素は、ウェブアプリケーションのコンポーネントとウェブパッケージを識別するデータとを含むウェブパッケージのデジタル署名を含む。ウェブアプリケーションの完全性要素は、(i)暗号化ハッシュ関数と、(ii)暗号化ハッシュ関数を使用して計算された信頼できる暗号化ハッシュ、およびウェブアプリケーションの信頼できる資産とを指定する完全性属性を含むことができる。信頼できる資産は、ウェブアプリケーションの画像、ロゴ、または他の資産を含むことができる。
ウェブアプリケーションが要求、たとえばHTTP要求をサーバ、たとえばウェブサーバに送信する場合、サーバを所有または動作するエンティティは、呼出し元のウェブアプリケーションの信頼性をサーバに評価してもらいたい場合がある。たとえば、エンティティは、要求を開始したコードが意図したドメインによって提供されたこと、コードが修正されていないこと、および拡張機能がコードの挙動を変更していないことを確認したい場合がある。エンティティはまた、サーバに、コードが埋め込まれているフレーム、たとえばiframeの存在およびコンテキストを理解および/または応答させたい場合がある。これにより、ウェブアプリケーションが不正に使用されていないこと、および/またはウェブアプリケーションのコードが修正されていないことを確認することができる。
本明細書に記載されている主題は、以下の利点のうちの1つまたは複数を実現するために、特定の実施形態において実装することができる。ウェブアプリケーションの修正された、不正な、または悪意のあるバージョンではなく、信頼できるウェブアプリケーションに応答が提供されていることを確認するために、ウェブアプリケーションの信頼性は、ウェブアプリケーションによって開始された要求への応答を提供する前に、ウェブサーバによって検証することができる。ウェブアプリケーション、ウェブアプリケーションがレンダリングされるブラウザ、およびブラウザが実行されているクライアントデバイスに対して信頼の鎖を確立することができ、これにより、要求の生成および送信に関与するすべてのコンポーネントが信頼できるものであり、不正または侵害されていないことが保証される。これにより、要求内の情報の完全性が保証され、要求への応答が不正または悪意のある目的で使用されていないことが保証される。
本明細書で説明するウェブアプリケーションの信頼性を検証するための技法は、検証を実行するために必要な時間を削減することができる。たとえば、完全性情報のセットに対するデジタル署名を含む署名付き承認要素を完全性要素として使用するとウェブアプリケーションの検証は、サーバによって0.15ミリ秒(ms)未満で実行することができる。これにより、要求に応じたコンテンツの提供、またはウェブアプリケーションを含む電子リソース、たとえばウェブページとのユーザのインタラクションなどの、速度が重要なアプリケーションにおいて検証が使用されることが可能になる。また、迅速な応答を提供することにより、検証プロセスの完了に時間がかかりすぎるサーバからの応答を待機するなどによる、ウェブアプリケーション内でエラーが発生するのを防ぐ。
ウェブアプリケーションがその信頼性をウェブサーバに安全に伝えることによって、ウェブサーバは、ウェブアプリケーションを開発する開発者の能力を制限することなく、また正当なウェブアプリケーションでのユーザエクスペリエンスを低下させることなく、ウェブアプリケーションの信頼性を検証することができる。
前述の主題の様々な特徴および利点は、図面に関して以下に説明される。さらなる特徴および利点は、本明細書に記載の主題および特許請求の範囲から明らかである。
ウェブアプリケーションの信頼性が検証される環境を示す図である。 完全性要素を備えたウェブアプリケーションがクライアントデバイスへの配信のためにアップロードされる環境を示す図である。 完全性要素を備えたウェブアプリケーションがクライアントデバイスへの配信のためにアップロードされる環境を示す図である。 ウェブアプリケーションの信頼性を検証するための例示的なプロセスを示すスイムレーン図である。 アプリケーションの信頼性を検証し、ウェブアプリケーションの信頼性の検証に応じて応答を提供するための例示的なプロセスを示す流れ図である。 例示的なコンピュータシステムのブロック図である。
様々な図面における同様の参照番号および指定は、同様の要素を示す。
一般に、本明細書は、ウェブアプリケーションの信頼性を検証するためのシステムおよび技法について説明する。ウェブサーバは、ウェブアプリケーションからの要求の受信に応じて、ウェブアプリケーションの信頼性を検証することができる。このようにして、ウェブサーバは、要求に対する応答を提供する前に、ウェブアプリケーションが信頼できるものであることを確認することができる。
サーバは、要求に含まれる完全性要素を使用して、ウェブアプリケーションの信頼性を検証することができる。完全性要素は様々な形式またはデータ構造を有することができるが、ウェブアプリケーションの信頼性を単独で、または他の情報と組み合わせて検証するために、それぞれを使用することができる。たとえば、サーバはまた、要求が適切なオリジンから発信されたことを検証することができ、これは、ウェブアプリケーションを含む電子リソース(たとえば、ウェブページ)のドメインである可能性がある。別の例では、サーバは、ウェブアプリケーションがレンダリングされるコンテキストが適切または共通のコンテキストであることを検証することができる。これらの技法はウェブブラウザおよびウェブアプリケーションの観点から説明されているが、他のコンテキスト、たとえば特定のプラットフォームまたは特定のデバイス用に開発されたネイティブアプリケーション内の埋込みアプリケーションの完全性を検証するために、同様の技法を使用することができる。
図1は、ウェブアプリケーションの信頼性が検証される環境100を示している。例示的な環境100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せなどのデータ通信ネットワーク105を含む。ネットワーク105は、クライアントデバイス110、コンテンツ管理システム120、およびウェブサーバ130を接続する。ウェブサーバと呼ばれているが、ウェブサーバ130は、他のタイプのコンピューティングシステムを使用して実装することができるが、電子リソースに埋め込まれたウェブアプリケーションとインタラクションするウェブサーバと呼ばれる。
クライアントデバイス110は、ネットワーク105を介して通信することができる電子デバイスである。例示的なクライアントデバイス110は、パーソナルコンピュータ、モバイル通信デバイス、たとえば、スマートフォン、およびネットワーク105を介してデータを送受信することができる他のデバイスを含む。クライアントデバイスはまた、マイクを通じてオーディオ入力を受け取り、スピーカを通じてオーディオ出力を出力するデジタルアシスタントデバイスを含むことができる。デジタルアシスタントは、オーディオ入力を受け取るためにマイクをアクティブにする「ホットワード」または「ホットフレーズ」をデジタルアシスタントが検出すると、リッスンモード(たとえば、オーディオ入力を受け入れる準備ができている状態)にすることができる。デジタルアシスタントデバイスはまた、画像をキャプチャし、情報を視覚的に提示するためのカメラおよび/またはディスプレイを含むことができる。デジタルアシスタントは、ウェアラブルデバイス(たとえば、時計またはメガネ)、スマートフォン、スピーカデバイス、タブレットデバイス、または別のハードウェアデバイスを含む様々な形式のハードウェアデバイスにおいて実装することができる。クライアントデバイスはまた、デジタルメディアデバイス、たとえば、ビデオをテレビにストリーミングするためにテレビまたは他のディスプレイにプラグインするストリーミングデバイス、ゲームシステム、または仮想現実システムを含むことができる。
クライアントデバイス110は、通常、ネットワーク105を介したデータの送受信を容易にするために、ウェブブラウザ111および/またはネイティブアプリケーションなどのアプリケーションを含む。ネイティブアプリケーションは、特定のプラットフォームまたは特定のデバイス(たとえば、特定のオペレーティングシステムを有するモバイルデバイス)用に開発されたアプリケーションである。
コンテンツ管理システム120は、ブラウザ111から受信した要求に応じて電子リソースを提供するサーバを含むことができる。コンテンツ管理システム120は、発行者のウェブサイトをホストすることができる。ウェブサイトは、ドメイン名に関連付けられ、コンテンツ管理システム120の1つまたは複数のサーバによってホストされる1つまたは複数の電子リソースを含む。ウェブサイトの例は、ハイパーテキストマークアップ言語(HTML)でフォーマットされたウェブページの集合であり、テキスト、画像、および/またはマルチメディアコンテンツを含むことができる。電子リソースは、スクリプト、HTML、カスケーディングスタイルシート(CSS)、ブラウザ拡張機能、または他のウェブ技術で構築された1つまたは複数のウェブアプリケーションを含むことができる。各ウェブサイトは、ウェブサイトを制御、管理、および/または所有するエンティティであるコンテンツ発行者によって維持される。
リソースは、ネットワーク105を介して発行者によって提供され、リソースアドレスに関連付けることができる任意のデータである。リソースは、いくつか例を挙げると、HTMLページ、ワードプロセッシングドキュメント、ポータブルドキュメントフォーマット(PDF)ドキュメント、画像、ビデオ、およびフィードソースを含む。リソースには、単語、フレーズ、写真などのコンテンツを含むことができ、埋込み情報(メタデータおよびハイパーリンクなど)および/または埋込み命令(たとえば、スクリプト)を含み得る。
ウェブサーバ130は、ウェブアプリケーションからの要求を受信して応答することができる。たとえば、ウェブアプリケーションのいくつかの機能は、ウェブアプリケーションが処理されている、たとえば実行されているクライアントデバイス110から離れたリモートサーバにおいて実行されるタスクを含むことができる。ウェブアプリケーションは要求を開始することができ、ブラウザ111はウェブアプリケーションに対応するウェブサーバ130に要求を送信することができる。ウェブサーバ130は、タスクを実行し、ブラウザ111に応答を提供するアプリケーションサーバとインタラクションすることができ、ブラウザ111は、ウェブアプリケーションに応答を提供する。次いで、ウェブアプリケーションは、応答に基づいてブラウザ内でコンテンツをレンダリングする、要求に応答してアクションが実行されたことを検証するデータを表示する、または応答に基づいて何らかの他のアクションを実行することができる。
ウェブサーバ130は、要求に基づいて行動する前、および/または要求に対する応答を提供する前に、要求を開始したウェブアプリケーションの信頼性を検証することができる。たとえば、ウェブサーバは、1つまたは複数の完全性信号に基づいて、ウェブアプリケーションが少なくともしきい値の信頼性を有していることを確認することができる。ウェブアプリケーションの信頼性を検証するための例示的なプロセスを、段階A~Eを参照して以下に説明する。
いくつかの実装形態では、ウェブサーバ130は、ウェブアプリケーション、ウェブアプリケーションを処理/レンダリングしているブラウザ111の信頼性、およびウェブブラウザが実行されているクライアントデバイス110の信頼性のうちの2つ以上の信頼性を示す信頼の鎖を確立することができる。たとえば、ウェブサーバ130は、ブラウザ111から、これらのコンポーネントの各々の信頼性を検証するために使用できるデータを受信することができる。ウェブサーバ130がコンポーネントのうちのいずれか1つの信頼性を検証できない場合、ウェブサーバ130は、要求に応答しないことを選択するか、すべてのコンポーネントが信頼できるものとして検証された場合、ウェブアプリケーションが提供するであろう応答とは異なる修正された応答を決定することができる。
段階Aの間、ブラウザは、コンテンツ管理システム120から電子リソース122を取得する。ウェブページとすることができる電子リソース122は、コード124および完全性要素126を含む。コード124は、電子リソース122に含まれる、たとえば、埋め込まれているウェブアプリケーションのコードとすることができる。たとえば、コード124は、HTMLドキュメント内のスクリプトタグ、たとえば、<script src=“url"> </script>の間に含まれるスクリプトを含むことができる。いくつかの電子リソースは、1つまたは複数のウェブアプリケーション用の複数のスクリプトまたは他のコード要素を含むことができる。
電子リソース122は、1つまたは複数のコード要素の各々について、それぞれの完全性要素126を含むことができる。たとえば、ウェブアプリケーションが複数のスクリプトを含む場合、電子リソース122は、個々のスクリプトごとにそれぞれの完全性要素126を含むことができる。
本明細書で説明されている技法は、主にウェブアプリケーションのコードの完全性要素に関して説明されているが、ウェブアプリケーションの他の資産が修正されていないこと、したがってウェブアプリケーションが信頼できることを検証するために、同じまたは類似の技法を使用することができる。たとえば、電子リソース122は、たとえば、各コード要素、各画像、各ロゴなど、資産ごとにそれぞれの完全性要素を含むことができる。コード要素(たとえば、HTML、CSS、スクリプト)、画像および/またはロゴが修正されていないことを検証することによって、ウェブサーバ130は、ウェブアプリケーションのルックアンドフィールが修正されていないことを検証することができる。
完全性要素126は、本明細書で説明されている様々な形態のうちの1つを取ることができる。一例では、完全性要素は、暗号化ハッシュ関数と、暗号化ハッシュ関数、およびウェブアプリケーションの信頼できるコードを使用して計算された信頼できる暗号化ハッシュを指定する完全性属性を含むか、またはその形式であることができる。この信頼できる暗号化ハッシュは、ブラウザ111および/またはウェブサーバ130が、暗号化ハッシュ関数および電子リソース122とともに受信された実際のコード124を使用してハッシュ値を計算することから得られる期待ハッシュ値である。コード要素の暗号化ハッシュは、コード要素のアイデンティティと呼ばれることがある。暗号化ハッシュ関数は、たとえばSHA256などの、選択した1つまたは様々なハッシュ関数にすることができる。
別の例では、コード124の完全性要素は、完全性データのセットと、完全性データのセットに基づいて生成されたデジタル署名とを含む署名付き承認要素を含むことができる。署名付き承認要素は、図3を参照して後述するように、信頼できる署名者によって生成することができる。完全性データのセットは、暗号化ハッシュ関数とウェブアプリケーションの信頼できるコードを使用して計算された信頼できる暗号化ハッシュと、信頼できる署名者のアイデンティティと、デジタル署名が生成された時刻を示すタイムスタンプとを含むことができる。信頼された署名者のアイデンティティは、信頼された署名者のドメイン、たとえば、信頼された署名者ドメインのeTLD+1に基づくことができる。eTLD+1は、有効なトップレベルドメイン(eTLD)に、パブリックサフィックスよりも1つ上のレベルを加えたものである。eTLD+1の例は「example.com」であり、「.com」はトップレベルドメインである。
タイムスタンプは、デジタル署名が生成された日付および/または時刻を示すことができる。たとえば、タイムスタンプは、日付、日付と時間、またはより高い解像度(秒など)にすることができる。別の例では、タイムスタンプは、エポックまたは特定の日付からの日数を示すことができる。デジタル署名は、信頼できる署名者の秘密鍵と完全性データのセットを使用して生成できるため、秘密鍵に対応する公開鍵を使用してデジタル署名の検証が失敗した場合、データのセットの修正を検出することができる。
別の例では、ウェブアプリケーションは、ウェブアプリケーションのすべての資産(たとえば、HTML、CSS、スクリプト、画像など)を簡単に配信できる単一のファイルにバンドルするウェブパッケージとして配信することができる。そのようなファイルは、ウェブアプリケーションの開発者または別の適切なエンティティによってデジタル署名することができる。これにより、ウェブサーバは、そのオリジンに加えて、ウェブパッケージによって送付されたコード124の実際のアイデンティティを検証することができる。この例では、完全性要素はウェブパッケージのデジタル署名にすることができる。
段階Bの間、ブラウザ111は電子リソース122をレンダリングする。ブラウザ111がウェブアプリケーションのコード124をレンダリングするとき、コード124は、段階Cにおいて要求112をウェブサーバ130に送信するようにブラウザ111に命令することができる。完全性要素がアプリケーションの信頼できるコードの信頼できる暗号化ハッシュを含む実装形態では、ブラウザ111は、要求を生成して送信する前に、電子リソース122に含まれるコード124が信頼できるものであることを任意で検証することができる。これは、完全性要素126から暗号化ハッシュ関数および信頼できる暗号化ハッシュのアイデンティティを抽出することと、抽出された暗号化ハッシュ関数を用いて電子リソース122に含まれるコード124の暗号化ハッシュを計算することと、計算された暗号化ハッシュを信頼できる暗号化ハッシュと比較することとを含むことができる。2つのハッシュが一致する場合、コード124の信頼性が正常に検証され、ブラウザ111は要求を生成して送信することができる。2つのハッシュが一致しない場合、ブラウザ111は要求112をブロックする、たとえば要求112を送信しないことができ、またはブラウザ111はウェブアプリケーションのコード124のレンダリングを停止することができる。
段階Cにおいて、ブラウザ111が要求112を生成し、ウェブアプリケーションに対応するウェブサーバ130に要求112を送信する。要求112を生成することは、コード124、たとえば、要求を開始した個々のコード要素の完全性要素126または完全性要素126の少なくとも一部を含むように、要求112を修正することを含むことができる。たとえば、ブラウザ111は、要求112を開始したウェブアプリケーションのコード124の暗号化ハッシュを含むように、要求を開始したコード124の署名付き承認要素を含むように、または完全性要素126の形式に応じて、ウェブパッケージのデジタル署名を含むように、要求112を修正することができる。完全性要素がコード124の暗号化ハッシュを含む実装形態では、たとえ電子リソース122が信頼できる暗号化ハッシュを含む完全性属性を含まない場合でも、ブラウザ111はこの暗号化ハッシュを送信することができる。代わりに、ブラウザは、適切な暗号化ハッシュ関数、たとえば、事前に指定されたハッシュ関数、または電子リソース111またはコード124によって識別されるハッシュ関数を使用して、コード124の暗号化ハッシュを生成して送信することができる。このようにして、ウェブサーバは、要求112を生成したコード124のアイデンティティを依然として知ることができ、コード124が信頼できるかどうかを決定するためにコード124の暗号化ハッシュを使用することができる。
電子リソースが完全性属性を含み、完全性属性の信頼できる暗号化ハッシュがブラウザ111によって計算された暗号化ハッシュと一致すると仮定すると、ブラウザ111は2つのハッシュ値のいずれかを要求112に挿入することができる。図1に示されるように、ブラウザ111は、HTTP要求のヘッダ114に完全性要素または完全性要素の一部を挿入することができ、このヘッダ114はまた、要求112の追加情報、たとえば、要求112の目的、要求112の処理において使用されるデータなどを含む本体116を含む。以下でより詳細に説明するように、ブラウザ111は、ウェブアプリケーションの信頼性を検証するために使用することができる追加の完全性情報を要求112、たとえばヘッダ114に挿入することができる。
段階Dの間、ウェブサーバ130は要求112を処理する。要求112を処理することは、要求を開始したウェブアプリケーションの信頼性を検証することを含むことができる。ウェブサーバ130が要求112を検証する技法は、完全性要素126の形式および/または要求112に含まれる追加の完全性情報に基づいて異なる場合がある。ウェブアプリケーションの信頼性を検証するための例示的な技法については、以下で詳しく説明する。
段階Eの間、ウェブサーバ130は、ウェブアプリケーションの信頼性が正常に検証されたかどうかに基づいて、要求112に応答するか、または応答しないことができる。ウェブアプリケーションの信頼性が正常に検証された場合、ウェブサーバ130は、要求112を処理し、たとえば、ブラウザ111において表示するためのコンテンツを提供することによって、通常の方法で要求112に応答することができる。ウェブアプリケーションの信頼性が正常に検証されない場合、ウェブサーバ130は、要求112を無視するか、ウェブアプリケーションが信頼できないことを示す応答でブラウザ111に応答することができる。ブラウザ111が応答を受信した場合、ブラウザ111は、応答に基づいてクライアントデバイス110のディスプレイにおいてコンテンツを表示することができる。
図2は、完全性要素を備えたウェブアプリケーションがクライアントデバイスへの配信のためにアップロードされる環境200を示している。この例では、完全性要素は、暗号化ハッシュ関数と、暗号化ハッシュ関数、およびウェブアプリケーションの信頼できるコードを使用して計算された信頼できる暗号化ハッシュを指定する完全性属性を含む。
段階Aの間、信頼できるウェブアプリケーション発行者240は、ウェブアプリケーション(すなわち、ウェブアプリケーションA)を開発するために、開発ツール210を使用する。開発ツール210は、ユーザがウェブアプリケーションを開発および発行することを可能にするソフトウェアを備えたコンピュータとして実装することができる。たとえば、開発ツール210は、クラウドベースまたはローカルのソフトウェア開発プラットフォームとすることができる。ウェブアプリケーションは、クライアントデバイスによって実行されるとウェブアプリケーションの機能を実装するコード214、たとえばスクリプト、HTML、CSSなどを含む。ウェブアプリケーションはまた、画像、ロゴなどの他の資産を含むことができる。このコード214は、元のコードであり、悪意のある当事者によって修正される機会がなかったため、信頼できるコードと見なすことができる。同様に、資産は信頼できる資産と見なすことができる。ウェブアプリケーションを開発した後、ウェブアプリケーション発行者240は、開発ツール210がウェブアプリケーションを発行することを要求する要求242を生成する。
段階Bの間、開発ツール210は、暗号化ハッシュ関数を使用して、コード214および/または他の資産の暗号化ハッシュを計算する。ウェブアプリケーションが複数のコード要素、たとえば複数のスクリプトを含む場合、開発ツール210は、暗号化ハッシュ関数を使用して各コード要素のそれぞれの暗号化ハッシュを計算することができる。暗号化ハッシュは信頼できるコードを使用して計算されるため、暗号化ハッシュは信頼できる暗号化ハッシュと呼ばれ得る。
開発ツール210は、信頼できるコードデータベース230に、コード214および/または他の資産のデータ要素212を送信することができる。データ要素212は、ウェブアプリケーションの一意の識別子216およびコードの暗号化ハッシュ218を含むことができる。ウェブアプリケーションが複数のコード要素を含む場合、開発ツール210は、コード要素ごとにそれぞれのデータ要素212を送信することができる。信頼できるコードデータベース230は、コードおよび/またはウェブアプリケーションの他の資産の信頼できる暗号化ハッシュを記憶することができるため、以下でより詳細に説明するように、ウェブサーバがウェブアプリケーションの信頼性を検証することができる。
開発ツール210はまた、コード214および/または他の資産のための完全性要素を含むために、ウェブアプリケーションAを更新することができる。この例では、完全性要素は完全性属性246である。開発ツール210は、完全性属性246をコード214に挿入することができ、その結果コード244が更新される。たとえば、コード214が1つまたは複数のスクリプトである場合、開発ツール210は、暗号化ハッシュ関数および信頼できる暗号化ハッシュを指定する完全性属性246を含めるためにスクリプトタグを更新することができる。この例では、開発ツール210は、更新されたコード244の各スクリプトタグに、スクリプトタグ内のスクリプトの完全性属性246を含めるために、コード214を更新することができる。ウェブアプリケーションの実行可能コードは、更新されたウェブアプリケーションにおいて同じままにすることができる。
段階Cの間、開発ツール210は、更新されたウェブアプリケーションをコンテンツ管理システム120に送信し、更新されたウェブアプリケーションを電子リソースに含めることができるようにする。このように、電子リソースが更新されたウェブアプリケーションを含む場合、電子リソースは、コード244および/またはウェブアプリケーションの他の資産の完全性属性を含む。段階BおよびCは、信頼できるウェブアプリケーション発行者240に対して完全に透過的であり得る。
図3は、完全性要素を備えたウェブアプリケーションがクライアントデバイスへの配信のためにアップロードされる環境300を示している。この例では、完全性要素は署名付き承認要素を含む。
段階Aの間、信頼できるウェブアプリケーション発行者240は、ウェブアプリケーション(すなわち、ウェブアプリケーションA)を開発するために開発ツール210を使用する。ウェブアプリケーションは、クライアントデバイスによって実行されるとウェブアプリケーションの機能および/または他の資産を実装するコード314、たとえば、スクリプト、HTML、CSSなどを含む。このコード314(すなわち、図2のコード214に類似)および/または他の資産は、元のコードまたは資産であり、悪意のある当事者によって修正される機会がなかったため、信頼できると見なすことができる。ウェブアプリケーションを開発した後、ウェブアプリケーション発行者240は、開発ツール210がウェブアプリケーションを発行することを要求する要求342を生成する。
段階Bの間、開発ツール210は、アプリケーションのコード314および/または他の資産をレビューのために信頼できる署名者350に送信する。信頼できる署名者350は、コードおよび/または他の資産を評価し、コードまたは他の資産が信頼できる場合、そのコードまたは他の資産の署名付き承認要素を生成する、信頼できるサードパーティのサードパーティコンピュータであり得る。信頼できるサードパーティは、たとえば、コンピュータ/ネットワークセキュリティソフトウェア会社またはアンチウイルス開発者、信頼できるウェブアプリケーション発行者、または業界の規制機関、あるいは信頼できるウェブアプリケーション発行者240および電子リソースの発行者とは異なる別の適切なパーティなどの、コードの評価に関する専門知識を有するパーティである可能性がある。この評価は、たとえば、ウイルス、スパイウェアのコード、および/あるいは他のマルウェアまたは悪意のあるコードのスキャンを含むことができる。いくつかの実装形態では、信頼できるウェブアプリケーション発行者240は、ウェブアプリケーションに自己署名するために、信頼できる署名者350として機能することができる。
段階Cの間、信頼できる署名者350は、コード314の各コード要素(または、他の資産)を評価し、信頼できると見なされるコード要素(または、他の資産)ごとに署名付き承認要素を生成することができる。信頼できる署名者350は、暗号化ハッシュ関数を使用してコード要素の暗号化ハッシュを計算することによって、コード要素、たとえばスクリプトの署名付き承認要素を生成することができる。この暗号化ハッシュは、前述の完全性属性の信頼できる暗号化ハッシュと同じにすることができる。この暗号化ハッシュはウェブアプリケーションの信頼できるコードを使用して計算されるため、この暗号化ハッシュは信頼できる暗号化ハッシュと呼ばれる。
信頼できる署名者350は、完全性データのセットと、完全性データのセットに基づいて生成されたデジタル署名とを含むデータ構造、たとえば複合メッセージを生成することによって、コード要素の署名付き承認要素を生成することができる。前述のように、完全性データのセットは、コード要素の信頼できる暗号化ハッシュと、信頼できる署名者350のアイデンティティと、デジタル署名が生成された時刻を示すタイムスタンプとを含むことができる。信頼された署名者350は、信頼された署名者350の秘密鍵を使用してデータのセットに署名することによってデジタル署名を生成することができる。デジタル署名は、秘密鍵に対応する、たとえば数学的にリンクされている公開鍵を使用して後で検証することができる。信頼できる署名者は、各署名付き承認要素を開発ツール210に提供する。
段階Dの間、開発ツール210は、完全性要素として、署名付き承認要素を含むために、ウェブアプリケーションAを更新する。開発ツール210は、完全性属性246をコード314に挿入することができ、その結果、コード344が更新される。たとえば、コード314が1つまたは複数のスクリプトである場合、開発ツール210は、スクリプトの署名付き承認要素を含む新しい属性を含むために、スクリプトタグを更新することができる。この例では、開発ツール210は、更新されたコード344の各スクリプトタグにスクリプトタグの属性内のスクリプトに対する署名付き承認要素を含むために、コード314を更新することができる。ウェブアプリケーションの実行可能ファイルは、更新されたウェブアプリケーションにおいて同じままにすることができる。以下でより詳細に説明するように、ウェブアプリケーションの信頼性を検証するために、ウェブアプリケーションの署名付き承認要素を使用することができる。
開発ツール210は、更新されたウェブアプリケーションをコンテンツ管理システム120に送信し、更新されたウェブアプリケーションを電子リソースに含めることができるようにする。このように、電子リソースが更新されたウェブアプリケーションを含む場合、電子リソースは、ウェブアプリケーションのコード344(すなわち、図2のコード244に類似)の完全性属性を含む。段階B~Dは、信頼できるウェブアプリケーション発行者240に対して完全に透過的であり得る。
図4は、ウェブアプリケーションの信頼性を検証するための例示的なプロセス400を示すスイムレーン図である。プロセス400の動作は、たとえば、クライアントデバイス110のブラウザ111、コンテンツ管理システム(CMS)120、ウェブアプリケーションのコード124、およびウェブサーバ130によって実装することができる。プロセス400の動作はまた、非一時的であってもよい1つまたは複数のコンピュータ可読媒体に記憶された命令として実装することもでき、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させることができる。
プロセス400は、アプリケーションのコードに基づいてウェブアプリケーションの信頼性を検証することに関して説明されているが、ウェブアプリケーションの他の資産、たとえば画像および/またはロゴに基づいてウェブアプリケーションの信頼性を検証するためにプロセス400を使用することができる。たとえば、資産に対して完全性要素が生成されてから、これらの資産のいずれかが修正されたかどうかを決定するために、プロセス400を使用することができる。したがって、以下の説明では、ウェブアプリケーションの他の資産を指すために、コードという用語を資産に置き換えることもできる。
ブラウザ111は、電子リソースを取得する(402)。ブラウザ111は、ウェブサイトをホストするコンテンツ管理システム120から電子リソースを取得することができる。たとえば、ブラウザ111は、ユーザのウェブページへのリンクとのインタラクションか、ユーザのウェブページのユニバーサルリソースロケータ(URL)のブラウザ111への入力に応じて、コンテンツ管理システム120からウェブページを要求することができる。電子リソースは、ウェブアプリケーションを含むことができる。
電子リソースはまたウェブアプリケーションのコードについて、1つまたは複数の完全性要素を含むことができる。たとえば、電子リソースは、ウェブアプリケーションのコード要素(または、他の要素、たとえば画像/ロゴ)ごとの完全性要素を含むことができる。前述のように、完全性要素は、完全性属性、署名付き承認要素、またはウェブパッケージのデジタル署名であり得る。
ブラウザ111は、電子リソースをレンダリングする(404)。ブラウザ111は、クライアントデバイス110のディスプレイ上に電子リソースのコンテンツを表示することができる。電子リソースをレンダリングするために、ブラウザ111は、電子リソース、たとえば電子ドキュメントのプロセスコードを処理することができる。たとえば、電子リソースは、ウェブアプリケーション用のスクリプト(または、他のコード)も含むHTMLコードを含むHTMLドキュメントである場合がある。電子リソースのHTMLを処理する際に、ブラウザ111は、たとえば電子リソースのスクリプトタグまたは他の適切なタグ内のアプリケーションのコード124を識別することができる。
ブラウザ111は、ウェブアプリケーションのコード124の信頼性を検証する(406)。これは、ブラウザ111によって実行される任意のステップであり得る。たとえば、いくつかの電子リソースは、ウェブアプリケーションの信頼できるコードの暗号化ハッシュを含まない場合がある。ブラウザ111は、電子リソースに含まれるコード124の完全性要素を使用して、コード124の信頼性を検証することができる。たとえば、前述のように、完全性要素は、ウェブアプリケーションの信頼できるコードの信頼できる暗号化ハッシュを含むことができる。コード124の信頼性を検証するために、ブラウザ111は、電子リソースとともに受信されたウェブアプリケーションの実際のコードの暗号化ハッシュを計算するために、信頼できる暗号化ハッシュを計算するために使用されたのと同じハッシュ関数を使用することができる。次いで、ブラウザは、信頼された暗号化ハッシュを計算された暗号化ハッシュと比較することができる。2つのハッシュが一致する場合、ブラウザ111は、ウェブアプリケーションのコード124が信頼できると決定することができる。2つのハッシュが一致しない場合、ブラウザ111は、ウェブアプリケーションのコード124が信頼できないと決定することができる。コードが信頼できると見なされる場合、ブラウザ111はコードを処理し、ウェブアプリケーションに代わって要求をウェブサーバに送信することができる。コードが信頼できないと決定された場合、ブラウザ111は、コードを処理することを拒否する、および/またはウェブアプリケーションのコードに代わってウェブサーバ130に要求を送信することを拒否することができる。ブラウザ111は、電子リソースに含まれるウェブアプリケーションの各コード要素の信頼性を検証することができる。
ブラウザ111は、ウェブアプリケーションのコードを処理する(408)。たとえば、ブラウザ111は、コードを読み取り、コードに基づいて1つまたは複数のアクションを実行することができる。1つのそのようなアクションは、要求を生成し、ウェブサーバ130に送信することである。要求は、ブラウザ111によってレンダリングされたウェブアプリケーションとのユーザのインタラクションに基づくコンテンツに対するものであり得る。
コード124は要求を開始する(410)。コード124は、ブラウザ111に要求を生成してウェブサーバ130に送信するように命令することによって、ウェブサーバ130への要求を開始することができる。
ブラウザ111は要求を生成する(412)。ブラウザ111は、ウェブサーバ130に対するデータおよび/または命令を含む要求を生成することができる。たとえば、要求は、ユーザのインタラクションに応答するためにウェブサーバ130からの応答が必要とされるウェブアプリケーションとのユーザのインタラクションを記述するデータを含むことができる。要求はHTTP要求にすることができる。
ブラウザ111は、要求を開始したコード124の完全性要素(または、完全性要素の少なくとも一部)を含むように要求を修正することができる。ブラウザ111は、完全性要素または完全性要素の一部を要求のヘッダに挿入することができる。完全性要素が完全性属性である場合、ブラウザ111は、アプリケーションの信頼できるコードの信頼できる暗号化ハッシュを要求に含むことができる。完全性要素が署名付き承認要素である場合、ブラウザ111は、署名付き承認要素を要求に挿入することができる。完全性要素が署名付きウェブパッケージである場合、ブラウザは署名付きウェブパッケージのデジタル署名を要求に挿入することができる。
ブラウザ111はまたウェブアプリケーションの信頼性を検証するために使用することができる追加の完全性情報を要求に挿入することができる。追加の完全性情報は、ウェブアプリケーションのオリジンを含むことができる。オリジンは、ウェブアプリケーションを含む電子リソースのドメインにすることができる。たとえば、ウェブアプリケーションがexample.comに対応するウェブページに埋め込まれている場合、オリジンはexample.comになる。これにより、ウェブサーバ130は、ウェブアプリケーションが適切な電子リソースに含まれていることを検証することが可能になる。いくつかの実装形態では、ウェブアプリケーションのオリジンはUniversal Resource Identifier(URI)またはURLにすることができる。
追加の完全性情報は、コード124のコンテキストを識別するデータを含むことができる。コード124のコンテキストを識別するデータは、コードがネストされる電子リソースのフレーム、たとえばiframeの属性を含むことができる。たとえば、ウェブアプリケーションは、ウェブページの特定のiframe内にネストすることができる。これは、コード124の信頼を確立するための重要なシグナルとなる可能性がある。たとえば、コードは通常、特定のiframe内にネストされ得る。コード124が珍しいまたは新しいiframe内にネストされている場合、ウェブアプリケーションは信頼できない可能性がある。
コード124は、ブラウザ111に、このコンテキスト情報を収集し、その情報を要求、たとえば要求のヘッダに挿入するように命令することができる。情報は、ネストされたiframe要素、たとえば、それらの要素のsrc属性の値のみを含むことができる。いくつかの実装形態では、ブラウザ111は、暗号化ハッシュ関数を使用してコンテキスト情報の暗号化ハッシュを計算し、暗号化ハッシュを要求に挿入することができる。このようにして、ウェブサーバ130は、暗号化ハッシュを、コード124がネストされたコンテキストの以前の暗号化ハッシュと比較することができる。
ブラウザ111は、修正された要求をウェブサーバ130に送信する(414)。ウェブサーバ130は、要求から完全性要素(または、要求に含まれる完全性要素の一部)を抽出する(416)。たとえば、ウェブサーバ130は、要求のヘッダから完全性要素を抽出することができる。要求に含まれる場合、ウェブサーバ130はまた、コンテキスト情報および/またはウェブアプリケーションのオリジンを抽出することができる。
ウェブサーバ130は、ウェブアプリケーションの信頼性を検証する(418)。ウェブサーバ130は、要求に含まれる完全性要素(または、その一部)を使用して、ウェブアプリケーションの信頼性を検証することができ、要求に含まれる場合、追加の完全性情報、たとえば、コンテキスト情報および/またはウェブアプリケーションのオリジンが検証される。ウェブアプリケーションの信頼性を検証するための技法は、完全性要素の形式と、要求に含まれる追加の完全性情報によって異なる場合がある。
完全性要素が、暗号化ハッシュ関数および暗号化ハッシュを指定する完全性属性である場合、ウェブサーバ130は、暗号化ハッシュが、データベースに記憶されているウェブアプリケーションの信頼できる暗号化ハッシュと一致するかどうかを決定するために、データベース、たとえば、図2のデータベース230に問い合わせることができる。要求に含まれる暗号化ハッシュが、データベースに記憶されたウェブアプリケーションの信頼できる暗号化ハッシュと一致する場合、ウェブサーバ130は、ウェブアプリケーションが信頼できると決定することができる。要求に含まれる暗号化ハッシュが、データベースに記憶されたウェブアプリケーションの信頼できる暗号化ハッシュと一致しない場合、ウェブサーバ130は、ウェブアプリケーションが信頼できないと決定することができる。この署名比較により、ウェブサーバ130は、ウェブアプリケーションのコードが信頼できるバージョンのコードから修正されたかどうかを決定することが可能になる。すなわち、署名の検証に失敗した場合、コードはアプリケーションの信頼できるコードと一致しない。以下でより詳細に説明するように、ウェブサーバ130はまたウェブアプリケーションが信頼できるかどうかを決定する際に、暗号化ハッシュに加えて追加の完全性情報を考慮することができる。
完全性要素が署名付き認要素である場合、ウェブサーバ130は、ウェブアプリケーションが信頼できるかどうかを決定するために複数のステップを実行することができる。ウェブサーバ130は、署名付き承認要素に含まれる署名者のアイデンティティが、たとえば、ウェブサーバ130によって維持される信頼できる署名者のリスト内の信頼できる署名者と一致するかどうかを決定することができる。一致する場合、ウェブアプリケーションはこの検証ステップにパスする。
ウェブサーバ130はまた、署名付き承認要素のデジタル署名が有効であるかどうかを決定することができる。ウェブサーバ130は、署名付き承認要素のデータのセットと、データのセットに署名するために使用される秘密鍵に対応する公開鍵とを使用して、デジタル署名が有効であるかどうかを決定することができる。デジタル署名が有効である場合、デジタル署名が生成されてからデータのセットが変更されていないことを意味し、したがって、ウェブアプリケーションはこの検証ステップにパスする。
ウェブサーバ130はまた、デジタル署名が現在時刻のしきい値期間内に生成されたかどうかを決定することができる。これを行うために、ウェブサーバ130は、署名付き承認要素のタイムスタンプを現在時刻、たとえば検証が実行されている時刻と比較することができる。現在時刻とタイムスタンプによって示される時刻との差がしきい値期間内である場合、ウェブアプリケーションはこの検証ステップにパスする。
署名付き承認要素のすべての検証手順が成功した場合、ウェブサーバ130は、ウェブアプリケーションが信頼できると決定することができる。以下でより詳細に説明するように、ウェブサーバ130はまたウェブアプリケーションが信頼できるかどうかを決定する際に、暗号化ハッシュに加えて追加の完全性情報を考慮することができる。
署名付き承認要素を使用すると、完全性属性を使用するよりもパフォーマンス上の利点がある場合がある。たとえば、ウェブサーバ130は、完全性要素の暗号化ハッシュがウェブアプリケーションの信頼できる暗号化ハッシュと一致するかどうかを決定するためにデータベースに問い合わせる必要はない。これにより、データベースがボトルネックになり、短い時間内に多くの要求を受信した場合にレイテンシの原因となるのを防ぐことができる。
完全性要素がウェブパッケージのデジタル署名である場合、ウェブサーバ130は、ウェブアプリケーションが含まれる電子リソースのドメインではなく、ウェブアプリケーションの実際のオリジンを検証することができる。この例では、要求は、ウェブサーバが要求を開始したウェブパッケージのアイデンティティを認識できるように、ウェブパッケージのリソースロケータ、たとえばURIまたはURLを含むことができる。リソースロケータを使用するとウェブサーバは、追加の検証を実行するために、任意でウェブパッケージをダウンロードすることができる。ウェブアプリケーションのデジタル署名は、アプリケーション発行者によって生成することができ、これにより、ウェブサーバは、ウェブアプリケーションがアプリケーション発行者によって配信されたことを検証することができる。
要求が追加の完全性情報を含む場合、ウェブサーバ130は、完全性要素と追加の完全性情報の組合せに基づいて、ウェブアプリケーションが信頼できるかどうかを決定することができる。追加の完全性情報がウェブアプリケーションのオリジンを識別するデータを含む場合、ウェブサーバ130は、ウェブアプリケーションが意図されたドメインによって、たとえば、意図されたドメインのセットのうちの1つによってサービスされたかどうかを決定することができる。たとえば、ビデオを表示するためのウェブアプリケーションは、電子リソース内にビデオ再生を埋め込むことが許可されているドメインのセットで利用できるようにし得る。要求によって識別されたオリジンがドメインのセットに含まれていない場合、ウェブサーバ130は、ウェブアプリケーションが信頼できないと決定することができる。たとえば、信頼できると見なされるために、ウェブサーバ130は、ウェブアプリケーションが完全性要素の検証およびオリジンの検証にパスすることを要求することができる。
追加の完全性情報がコンテキスト情報を含む場合、ウェブサーバ130は、コンテキスト情報を以前に受信した(または、許容された)コンテキスト情報と比較することができる。たとえば、コンテキスト情報は、ウェブアプリケーションがネストされているフレームの属性の暗号化ハッシュを含むことができる。この暗号化ハッシュが、知られている信頼できるコンテキストの暗号化ハッシュ、または少なくとも受信した要求のしきい値が一致する共通コンテキストの暗号化ハッシュと一致しない場合、ウェブサーバ130は、ウェブアプリケーションが信頼できないと決定することができる。暗号化ハッシュが、知られている信頼できるコンテキストの暗号化ハッシュ、または少なくとも受信した要求のしきい値が一致する共通コンテキストの暗号化ハッシュと一致する場合、ウェブサーバ130は、ウェブアプリケーションが信頼できると決定することができ、完全性要素が正常に検証されたと仮定する。すなわち、ウェブサーバ130は、ウェブアプリケーションが信頼できると見なされるために、コンテキスト検証と完全性要素検証の両方が成功することを要求することができる。
いくつかの実装形態では、ウェブサーバ130は、完全性要素、オリジン、およびウェブアプリケーションがネストされているコンテキストを検証することができる。3つの検証すべてにパスするとウェブサーバ130は、ウェブアプリケーションが信頼できると決定することができる。検証に失敗した場合、ウェブサーバ130は、ウェブアプリケーションが信頼できないと決定することができる。
いくつかの実装形態では、ウェブサーバ130は、検証のうちの1つまたは複数に基づいて信頼性スコアを決定することができる。たとえば、ウェブサーバ130は、検証ごとに個々のスコアを決定し、その検証の重要性に基づいて各スコアを任意に重み付けすることによって、スコアを組み合わせることができる。この例では、スコアは、オリジンの信頼性、および/または異なるコンテキストからウェブアプリケーションに対して要求が受信される頻度と比較して、要求のコンテキストに一致するコンテキストからウェブアプリケーションに対して要求が受信される頻度に基づいて異なる場合がある。ウェブアプリケーションの場合、複数のオリジンの各々が、ウェブアプリケーションの発行者または別のエンティティによって割り当てられた信頼性に基づいて、対応するスコアを有することができる。ウェブサーバ130は、ウェブアプリケーションが信頼できるかどうかを決定するために、信頼性スコアをしきい値信頼性と比較することができる。たとえば、信頼性スコアが信頼性しきい値を満足する、または信頼性しきい値を超えることによって、信頼性しきい値を満たす場合、ウェブサーバ130は、ウェブアプリケーションが信頼できると決定することができる。
いくつかの実装形態では、ウェブサーバは、たとえば、要求に応答する前に、ウェブアプリケーション、ブラウザ、およびクライアントデバイスの信頼性を検証することができる。たとえば、ウェブサーバは、ブラウザおよび/またはクライアントデバイスのトラストトークンまたは署名付き引換え記録を受信することができる。トークンまたは署名付き引換え記録は、ブラウザ111および/またはクライアントデバイス110の信頼性の評決を含むことができる。トークンまたは署名付き引換え記録はまた、トークンまたは署名付き引換え記録が信頼できるパーティによって発行され、ブラウザ111に発行されてから改ざんされていないことを保証するために、デジタル署名および/または追加情報を含むことができる。
ウェブサーバ130は、ブラウザ111に応答を送信する(420)。ウェブサーバ130は、ウェブアプリケーションが信頼できると決定されたかどうかに基づいて、適切な応答を決定することができる。ウェブアプリケーションが信頼できると決定された場合、ウェブサーバ130は、要求を処理し、たとえば、ブラウザ111による表示のために応答コンテンツを識別して提供することによって、またはウェブサーバ130が要求に対応するアクションを完了したことの検証を提供することによって、通常の方法で要求に応答する。
ウェブアプリケーションが信頼できないと決定された場合、ウェブサーバ130は、要求を無視するか、ウェブアプリケーションが信頼できず、したがってコンテンツが提供されていないことを示す応答をブラウザ111に送信することができる。ウェブサーバ130はまたウェブアプリケーションの監査ログを維持することができる。要求ごとに、ウェブサーバ130は、監査ログに、要求の完全性要素とウェブアプリケーションが信頼できると分類されたか、信頼できないと分類されたかを示すデータとを記憶することができる。ウェブサーバ130はまた、監査ログに、要求とともに受信した追加の完全性情報を記憶することができる。いくつかの実装形態では、ウェブサーバ130は、信頼できないと分類された要求のデータ(たとえば、完全性要素、信頼できる分類、および追加の完全性情報)のみを記憶することができる。監査ログにより、発行者または別のパーティは、ウェブアプリケーションの不正または誤用を分析することができる。
ブラウザ111は、コード124に応答を送信する(422)。次に、ウェブアプリケーションのコード124は、応答を処理し、応答に基づいてアクションを実行することができる。たとえば、コード124は、ブラウザ111に、応答に基づいてコンテンツを表示させたり、アクションが完了したというメッセージまたは他の確認を表示させたりすることができる。
図5は、アプリケーションの信頼性を検証し、ウェブアプリケーションの信頼性の検証に応じて応答を提供するための例示的なプロセス500を示す流れ図である。例示的なプロセス500は、クライアントデバイス110のブラウザ111によって実行することができる。プロセス500の動作は、たとえば、クライアントデバイス110のブラウザ111によって実装することができる。プロセス500の動作はまた、非一時的であってもよい1つまたは複数のコンピュータ可読媒体に記憶された命令として実装することもでき、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス500の動作を実行させることができる。
プロセス500は、アプリケーションのコードに基づいてウェブアプリケーションの信頼性を検証することに関して説明されているが、ウェブアプリケーションの他の資産、たとえば画像および/またはロゴに基づいてウェブアプリケーションの信頼性を検証するためにプロセス500を使用することができる。たとえば、資産に対して完全性要素が生成されてから、これらの資産のいずれかが修正されたかどうかを決定するために、プロセス500を使用することができる。したがって、以下の説明では、ウェブアプリケーションの他の資産を指すために、コードという用語を資産に置き換えることもできる。
電子リソースが取得される(502)。電子リソースには、ウェブアプリケーションのコードを含むことができる。たとえば、電子リソースは、ウェブアプリケーションの1つまたは複数のコード要素として、1つまたは複数のスクリプトを含むことができる。別の例では、ウェブアプリケーションは、HTML、CSS、拡張機能、または別の適切なウェブ技術を使用して実装することができる。電子リソースは、コードの完全性要素、たとえば、1つまたは複数の個々のコード要素の各々を含むことができる。
ウェブアプリケーションの信頼性が検証される(504)。これは、ブラウザ111によって実行される任意のステップである可能性がある。たとえば、いくつかの電子リソースは、ウェブアプリケーションの信頼できるコードの暗号化ハッシュを含まない場合がある。ブラウザは、完全性要素とウェブアプリケーションのコードを使用して、ウェブアプリケーションが信頼できるものであることを検証することができる。たとえば、前述のように、完全性要素は、アプリケーションの信頼できるコードの信頼できる暗号化ハッシュを含むことができる。ウェブアプリケーションの信頼性を検証することは、暗号化ハッシュ関数(存在する場合)のアイデンティティと信頼できる暗号化ハッシュを完全性要素から抽出することと、電子リソースに含まれるコードの暗号化ハッシュを計算することと、計算された暗号化ハッシュを信頼できる暗号化ハッシュと比較することとを含むことができる。2つのハッシュが一致するとウェブアプリケーションの信頼性が正常に検証される。
電子リソースがレンダリングされる(506)。ブラウザは、クライアントデバイスのディスプレイに電子リソースのコンテンツを表示することを含むことができる電子リソースをレンダリングすることができる。
要求が生成される(508)。ブラウザは、ウェブアプリケーションが信頼できるとの決定に応じて、要求を生成することができる。たとえば、ウェブアプリケーションのコードを処理すると、コードが要求を開始する可能性がある。ウェブアプリケーションが信頼できる場合、ブラウザはウェブアプリケーションに代わってウェブサーバへの要求を生成することができる。
要求が修正される(510)。いくつかの実装形態では、ブラウザは、ウェブアプリケーションのコードに対して不透明な方法で要求を修正することができる。ブラウザは、完全性要素または完全性要素の少なくとも一部を要求に挿入することによって、要求を修正することができる。完全性要素が完全性属性である場合、この部分には信頼できる暗号化ハッシュを含むことができる。完全性要素がウェブパッケージに関連付けられている場合、この部分はウェブパッケージのデジタル署名とURI/URLを含むことができる。完全性要素が署名付き承認要素である場合、ブラウザは署名付き承認要素を要求に挿入することができる。完全性要素は、前述のように、要求のヘッダに挿入することができる。ブラウザはまた、前述のように、追加の完全性情報を取得して要求に挿入することができる。
要求は、リモートサーバに送信される(512)。ブラウザは、ネットワークを介して、修正された要求をウェブアプリケーションに対応するウェブサーバに送信することができる。
リモートサーバから応答が受信される(514)。ウェブサーバは、完全性要素に基づいてウェブアプリケーションの信頼性を検証することができる。ウェブアプリケーションが信頼できると見なされた場合、ウェブサーバはブラウザに応答を送信することができる。
応答に基づいてデータが表示される(516)。ブラウザはウェブサーバから受信した応答をウェブアプリケーションに渡すことができ、ウェブアプリケーションは、応答を処理して、処理に基づいてブラウザにデータを表示させることができる。このデータは、たとえば、要求に応答して生成されたコンテンツ、または要求に応答してアクションが実行されたことを確認する検証メッセージを含むことができる。
図6は、前述の動作を実行するために使用することができる例示的なコンピュータシステム600のブロック図である。システム600は、プロセッサ610、メモリ620、ストレージデバイス630、および入力/出力デバイス640を含む。コンポーネント610、620、630、および640の各々は、たとえば、システムバス650を使用して相互接続することができる。プロセッサ610は、システム600内で実行するための命令を処理することができる。いくつかの実装形態では、プロセッサ610はシングルスレッドプロセッサである。別の実装形態では、プロセッサ610はマルチスレッドプロセッサである。プロセッサ610は、メモリ620またはストレージデバイス630に記憶された命令を処理することができる。
メモリ620は、システム600内に情報を記憶する。一実装形態では、メモリ620はコンピュータ可読媒体である。いくつかの実装形態では、メモリ620は揮発性メモリユニットである。別の実装形態では、メモリ620は不揮発性メモリユニットである。
ストレージデバイス630は、システム600に大容量ストレージを提供することができる。いくつかの実装形態では、ストレージデバイス630はコンピュータ可読媒体である。様々な異なる実装形態では、ストレージデバイス630は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイスによってネットワーク上で共有されるストレージデバイス(たとえば、クラウドストレージデバイス)、または他の何らかの大容量ストレージデバイスを含むことができる。
入力/出力デバイス640は、システム600に入力/出力動作を提供する。いくつかの実装形態では、入力/出力デバイス640は、ネットワークインターフェースデバイス、たとえばイーサネットカード、シリアル通信デバイス、たとえばRS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば802.11カードの1つまたは複数を含むことができる。別の実装形態では、入力/出力デバイスは、入力データを受信し、出力データを外部デバイス660、たとえば、キーボード、プリンタ、およびディスプレイデバイスに送信するように構成されたドライバデバイスを含むことができる。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなどの他の実装形態も使用することができる。
例示的な処理システムが図6において説明されたが、本明細書に記載されている主題および機能動作の実装形態は、他のタイプのデジタル電子回路、あるいは本明細書に開示された構造およびそれらの構造的同等物を含むコンピュータソフトウェア、ファームウェア、またはハードウェア、あるいはそれらのうちの1つまたは複数の組合せにおいて実装することができる。
本明細書に記載されている主題および動作の実施形態は、デジタル電子回路、あるいは本明細書に開示された構造およびそれらの構造的同等物を含むコンピュータソフトウェア、ファームウェア、またはハードウェア、あるいはそれらのうちの1つまたは複数の組合せにおいて実装することができる。本明細書に記載されている主題の実施形態は、データ処理装置による実行、またはデータ処理装置の動作を制御するために、コンピュータストレージ媒体(または、媒体)上にエンコードされた、1つまたは複数のコンピュータプログラム、すなわち、コンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。代替的、または追加的に、プログラム命令は、人工的に生成された伝播信号、たとえば、データ処理装置による実行のために適切な受信装置に送信するための情報をエンコードするために生成される機械生成の電気信号、光信号、または電磁気信号でエンコードすることができる。コンピュータ記憶媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムまたはシリアルアクセスメモリアレイまたはデバイス、あるいはそれらの1つまたは複数の組合せであってもよく、またはそれらに含まれてもよい。さらに、コンピュータストレージ媒体は伝播信号ではないが、コンピュータストレージ媒体は、人工的に生成された伝播信号にエンコードされたコンピュータプログラム命令のソースまたは宛先となり得る。コンピュータストレージ媒体は、1つまたは複数の別個の物理的コンポーネントまたは媒体(たとえば、複数のCD、ディスク、または他のストレージデバイス)であってもよく、またはそれらに含まれてもよい。
本明細書に記載されている動作は、1つまたは複数のコンピュータ可読ストレージデバイスに記憶されたデータまたは他のソースから受信したデータに対してデータ処理装置によって実行される動作として実装することができる。
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または前述のものの複数、あるいは組合せを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路を含むことができる。装置はまた、ハードウェアに加えて、問題のコンピュータプログラムの実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、あるいはそれらの1つまたは複数の組合せを構成するコードを含むことができる。この装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなど、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語またはインタープリタ型言語、宣言型言語または手続き型言語を含む、任意の形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、あるいはモジュール、コンポーネント、サブルーチン、オブジェクト、またはコンピューティング環境における使用に適した他のユニットとしてなどを含む、任意の形式で展開することができる。コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、必ずしもそうである必要はない。プログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語ドキュメントに記憶されている1つまたは複数のスクリプト)を保持するファイルの一部、問題のプログラム専用の単一のファイル、または複数の調整されたファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)に記憶することができる。コンピュータプログラムは、1台のコンピュータ、あるいは1つのサイトに配置された、または複数のサイトに分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開することができる。
本明細書に記載されているプロセスおよび論理フローは、入力データを動作して出力を生成することによってアクションを実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行することができる。プロセスおよび論理フローはまた、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路によって実行することができ、装置をそれとして実装することができる。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、読取り専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令とデータを受信する。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサと、命令とデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、磁気、光磁気ディスク、または光ディスクなどのデータを記憶するための1つまたは複数の大容量ストレージデバイスを含むか、そこからデータを受信する、またはそこにデータを転送する、またはその両方を実行するように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを備えている必要はない。さらに、コンピュータは、いくつか例を挙げると、たとえばモバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、あるいはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)などの別のデバイスに埋め込むことができる。コンピュータプログラム命令およびデータを記憶するために適したデバイスは、例として、半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば内蔵ハードディスクまたはリムーバブルディスクなど、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクなどのすべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補足することもでき、そこに組み込むこともできる。
ユーザとのインタラクションを提供するために、本明細書に記載されている主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえばCRT(陰極線管)またはLCD(液晶表示装置)モニタ、ならびにユーザがコンピュータに入力を提供することができるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールを有するコンピュータ上に実装することができる。ユーザとのインタラクションを提供するために、他の種類のデバイスを使用することができ、たとえば、ユーザに提供されるフィードバックは、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなど、任意の形態の感覚的フィードバックであってよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形式で受信することができる。さらに、コンピュータは、ユーザが使用するデバイスとの間でドキュメントを送受信することによって、たとえば、ウェブブラウザから受信した要求に応じて、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザとインタラクションすることができる。
本明細書に記載されている主題の実施形態は、たとえばデータサーバとしてバックエンドコンポーネントを含む、またはアプリケーションサーバなどのミドルウェアコンポーネントを含む、または、たとえば、ユーザが本明細書に記載されている主題の実装形態とインタラクションできるグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータなどのフロントエンドコンポーネント、あるいは、そのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの1つまたは複数の任意の組合せを含むコンピューティングシステムに実装することができる。システムのコンポーネントは、デジタルデータ通信の任意の形式または媒体、たとえば通信ネットワークによって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、およびピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントとサーバを含むことができる。一般に、クライアントとサーバは互いに離れており、通常は通信ネットワークを通じてインタラクションする。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアントとサーバの関係を有するコンピュータプログラムによって発生する。いくつかの実施形態では、サーバは、データ(たとえば、HTMLページ)をクライアントデバイスに送信する(たとえば、データを表示し、クライアントデバイスとインタラクションするユーザからユーザ入力を受信する目的で)。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザインタラクションの結果)は、サーバにおいてクライアントデバイスから受信することができる。
本明細書は多くの特定の実装形態の詳細を含んでいるが、これらは、発明の範囲または特許請求の範囲に対する制限として解釈されるべきではなく、特定の発明の特定の実施形態に固有の機能の説明として解釈されるべきである。別個の実施形態の文脈において本明細書に記載されている特定の特徴はまた、単一の実施形態において組み合わせて実装することができる。逆に、単一の実施形態の文脈において説明されている様々な特徴はまた、複数の実施形態において個別に、または任意の適切なサブコンビネーションで実装することができる。さらに、特徴は特定の組合せにおいて作用するものとして上記で説明され、最初にそのように主張されてもよいが、主張された組合せからの1つまたは複数の特徴は、場合によっては組合せから削除される可能性があり、主張された組合せはサブコンビネーションまたはサブコンビネーションのバリエーションに向けられていることがある。
同様に、動作は特定の順序で図面に示されているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順序または連続した順序で実行されること、または図示されたすべての動作が実行されることを必要とするものとして理解されるべきではない。特定の状況では、マルチタスクと並列処理が有利な場合がある。さらに、上述の実施形態における様々なシステムコンポーネントの分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明したプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に統合するか、または複数のソフトウェア製品にパッケージ化できることを理解されたい。
このように、主題の特定の実施形態が説明された。他の実施形態は、以下の特許請求の範囲内にある。場合によっては、特許請求の範囲に記載されているアクションを異なる順序で実行しても、望ましい結果が得られることがある。さらに、添付の図に示されるプロセスは、望ましい結果を達成するために、示された特定の順序または連続した順序を必ずしも必要としない。特定の実装形態では、マルチタスクと並列処理が有利な場合がある。
100 環境
105 通信ネットワーク
110 クライアントデバイス
111 ブラウザ
112 要求
114 ヘッダ
116 本体
120 コンテンツ管理システム
122 電子リソース
124 コード
126 完全性要素
130 ウェブサーバ
200 環境
210 開発ツール
212 データ要素
214 コード
216 識別子
218 暗号化ハッシュ
230 信頼できるコードデータベース
240 ウェブアプリケーション発行者
242 要求
244 コード
246 完全性属性
300 環境
314 コード
342 要求
344 コード
350 信頼できる署名者
400 プロセス
500 プロセス
600 システム
610 プロセッサ
620 メモリ
630 ストレージデバイス
640 入力/出力デバイス
650 システムバス
660 外部デバイス

Claims (12)

  1. クライアントデバイスのブラウザによって、ウェブアプリケーションのコードおよび完全性要素を備える電子リソースを取得するステップと、
    前記ブラウザによって、前記コードおよび前記完全性要素に少なくとも部分的に基づいて、前記ウェブアプリケーションが信頼できることを検証するステップと、
    前記ウェブアプリケーションの前記コードを処理するステップを含む、前記ブラウザによって前記電子リソースをレンダリングするステップであって、前記コードが前記ブラウザにリモートサーバへの要求を開始させる、ステップと、
    前記コードの処理に応じて、
    前記要求を生成するステップであって、前記要求が、前記ウェブアプリケーションが信頼できるとの検証に応じて生成される、ステップと、
    前記完全性要素の少なくとも一部を含むように、前記要求を修正するステップと、
    前記修正された要求を前記リモートサーバに送信するステップと、
    前記リモートサーバから、前記リモートサーバが前記完全性要素を使用して前記ウェブアプリケーションが信頼できることを検証したことに基づく、前記要求に対する応答を受信するステップと、
    前記応答に基づいてデータを表示するステップと、
    を備える、コンピュータ実装方法。
  2. 前記完全性要素を含むように前記要求を修正するステップが、前記完全性要素の前記一部を前記要求のヘッダに挿入するステップを備える、請求項1に記載のコンピュータ実装方法。
  3. 前記ウェブアプリケーションの前記完全性要素が、(i)暗号化ハッシュ関数、および(ii)前記暗号化ハッシュ関数と前記ウェブアプリケーションの信頼できるコードを使用して計算された信頼できる暗号化ハッシュを指定する完全性属性を備える、請求項1に記載のコンピュータ実装方法。
  4. 前記ブラウザによって、前記ウェブアプリケーションの前記コードおよび前記完全性要素に少なくとも部分的に基づいて、前記ウェブアプリケーションが信頼できることを検証するステップが、
    前記ブラウザによって、前記暗号化ハッシュ関数を使用して、前記ブラウザによって取得された前記ウェブアプリケーションの前記コードの暗号化ハッシュを計算するステップと、
    前記計算された暗号化ハッシュを前記信頼できる暗号化ハッシュと比較することによって、前記計算された暗号化ハッシュが前記信頼できる暗号化ハッシュと一致することを決定するステップと、
    前記ブラウザによって、前記計算された暗号化ハッシュが前記信頼できる暗号化ハッシュと一致するとの決定に応じて、前記ウェブアプリケーションが信頼できることを検証するステップと
    を備え、
    前記完全性要素の前記一部が、前記信頼できる暗号化ハッシュを備える、請求項3に記載のコンピュータ実装方法。
  5. 前記完全性要素が、完全性データのセットと、完全性データの前記セットに基づいて生成されたデジタル署名とを備える署名付き承認要素を備え、完全性データの前記セットが、
    暗号化ハッシュ関数と前記ウェブアプリケーションの信頼できるコードを使用して計算された信頼できる暗号化ハッシュと、
    信頼できる署名者のアイデンティティと、
    前記デジタル署名が生成された時刻を示すタイムスタンプと
    を備え、
    前記完全性要素の前記一部が、完全性データの前記セットと前記デジタル署名とを備える、請求項1から4のいずれか一項に記載のコンピュータ実装方法。
  6. 前記要求を修正するステップが、前記コードが埋め込まれているコンテキストを識別するデータを前記要求に挿入するステップをさらに備える、請求項1から5のいずれか一項に記載のコンピュータ実装方法。
  7. 前記コードが埋め込まれている前記コンテキストを識別する前記データが、(i)前記コードが埋め込まれている前記電子リソースのフレームの属性、または前記フレームの前記属性の暗号化ハッシュのうちの少なくとも1つを備える、請求項6に記載のコンピュータ実装方法。
  8. 前記完全性要素が、前記ウェブアプリケーションのコンポーネントとウェブパッケージを識別するデータとを含む前記ウェブパッケージのデジタル署名を備える、請求項1から7のいずれか一項に記載のコンピュータ実装方法。
  9. 前記ウェブアプリケーションの前記完全性要素が、(i)暗号化ハッシュ関数と、(ii)前記暗号化ハッシュ関数を使用して計算された信頼できる暗号化ハッシュ、および前記ウェブアプリケーションの信頼できる資産とを指定する完全性属性を備え、前記信頼できる資産が、前記ウェブアプリケーションの画像、ロゴ、または他の資産を備える、請求項1に記載のコンピュータ実装方法。
  10. 1つまたは複数のプロセッサと、
    前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、請求項1から9のいずれか一項に記載の方法を実行させる命令を記憶する1つまたは複数のストレージデバイスと
    を備える、システム。
  11. 1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、請求項1から9のいずれか一項に記載の方法を実行させる命令を担持する、コンピュータ可読ストレージ媒体。
  12. コンピュータによって実行されると、前記コンピュータに、請求項1から9のいずれかに記載の方法のステップを実行させる命令を備える、コンピュータプログラム。
JP2022550983A 2021-01-20 2021-01-20 ウェブアプリケーションの信頼性の検証 Active JP7438383B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2021/014118 WO2022159085A1 (en) 2021-01-20 2021-01-20 Verifying the trustworthiness of web applications

Publications (2)

Publication Number Publication Date
JP2023519121A JP2023519121A (ja) 2023-05-10
JP7438383B2 true JP7438383B2 (ja) 2024-02-26

Family

ID=74595425

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022550983A Active JP7438383B2 (ja) 2021-01-20 2021-01-20 ウェブアプリケーションの信頼性の検証

Country Status (6)

Country Link
US (1) US20230102116A1 (ja)
EP (1) EP4081925A1 (ja)
JP (1) JP7438383B2 (ja)
KR (1) KR20220130752A (ja)
CN (1) CN115151907A (ja)
WO (1) WO2022159085A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007527147A (ja) 2003-09-05 2007-09-20 ライムライト ネットワークス インコーポレーテッド コンテンツのダウンロードの認証
US20110321168A1 (en) 2010-06-28 2011-12-29 International Business Machines Corporation Thwarting cross-site request forgery (csrf) and clickjacking attacks
US20120210435A1 (en) 2011-02-16 2012-08-16 F-Secure Corporation Web content ratings
JP2019502997A (ja) 2015-12-17 2019-01-31 イルデト・ベー・フェー ウェブページ、ウェブアプリ、およびアプリケーションをセキュリティ保護すること

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2695245T3 (es) * 2013-12-04 2019-01-02 Telefonica Digital Espana Slu Método implementado por ordenador y un sistema informático para evitar problemas de seguridad en el uso de certificados digitales en la firma de códigos y un producto de programa informático de los mismos

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007527147A (ja) 2003-09-05 2007-09-20 ライムライト ネットワークス インコーポレーテッド コンテンツのダウンロードの認証
US20110321168A1 (en) 2010-06-28 2011-12-29 International Business Machines Corporation Thwarting cross-site request forgery (csrf) and clickjacking attacks
US20120210435A1 (en) 2011-02-16 2012-08-16 F-Secure Corporation Web content ratings
JP2019502997A (ja) 2015-12-17 2019-01-31 イルデト・ベー・フェー ウェブページ、ウェブアプリ、およびアプリケーションをセキュリティ保護すること

Also Published As

Publication number Publication date
US20230102116A1 (en) 2023-03-30
WO2022159085A1 (en) 2022-07-28
KR20220130752A (ko) 2022-09-27
CN115151907A (zh) 2022-10-04
JP2023519121A (ja) 2023-05-10
EP4081925A1 (en) 2022-11-02

Similar Documents

Publication Publication Date Title
KR102429406B1 (ko) 콘텐츠 플랫폼에서 사용자 상호작용 확인
US11790111B2 (en) Verifiable consent for privacy protection
US11882327B2 (en) Verifying display of third party content at a client device
US11949688B2 (en) Securing browser cookies
JP7286004B2 (ja) クライアントデバイスからの通信の完全性の保護
KR102536358B1 (ko) 디바이스 및 애플리케이션 무결성 검증
KR102470639B1 (ko) 신뢰되는 코드 증명 토큰으로 데이터 무결성 향상
JP7438383B2 (ja) ウェブアプリケーションの信頼性の検証
JP7410280B2 (ja) 複数受信者セキュア通信
WO2018095276A1 (zh) 在网络中发布作品的方法和装置
JP2022536565A (ja) クラウドソーシングを用いて偽情報に対処すること
CN113015974B (zh) 针对隐私保护的可验证同意
EP4211870B1 (en) Secure attribution using attestation tokens
JP7135210B2 (ja) プライバシー保持アプリケーションおよびデバイスエラー検出

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221003

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221003

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231002

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240115

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240213

R150 Certificate of patent or registration of utility model

Ref document number: 7438383

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150