JP6121447B2 - 外部コード証明を用いたウェブブラウジングオーバヘッドの低減 - Google Patents

外部コード証明を用いたウェブブラウジングオーバヘッドの低減 Download PDF

Info

Publication number
JP6121447B2
JP6121447B2 JP2014554724A JP2014554724A JP6121447B2 JP 6121447 B2 JP6121447 B2 JP 6121447B2 JP 2014554724 A JP2014554724 A JP 2014554724A JP 2014554724 A JP2014554724 A JP 2014554724A JP 6121447 B2 JP6121447 B2 JP 6121447B2
Authority
JP
Japan
Prior art keywords
web page
execution
browser
signature
tool
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
JP2014554724A
Other languages
English (en)
Other versions
JP2015515657A (ja
JP2015515657A5 (ja
Inventor
ルイス・セゼ
ゲオルゲ・シー・カスカヴァル
モハンマド・エイチ・レシャディ
Original Assignee
クアルコム,インコーポレイテッド
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 クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2015515657A publication Critical patent/JP2015515657A/ja
Publication of JP2015515657A5 publication Critical patent/JP2015515657A5/ja
Application granted granted Critical
Publication of JP6121447B2 publication Critical patent/JP6121447B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Description

関連出願の記載
本願は、発明の名称を「外部コード証明を用いたウェブブラウジングオーバヘッドの低減」とした2012年1月26日出願の米国仮特許出願第61/591141号の優先権を主張し、その内容全体を引用により本明細書に組み込む。
最近のブラウザ技術の大きな発展にもかかわらず、ウェブブラウザには概して複雑な計算集約的タスクを実行する能力が欠如したままである。上記および他の制約に対処するために、一部のウェブブラウザは、そのタスク/処理の一部または全部をリモートサーバにオフロードすることがある。たとえば、一部のウェブブラウザ(たとえば、Opera(商標)Mini)は、ブラウザに送る前にウェブページを処理し画像ファイルに圧縮するサーバにウェブページを要求するように構成することができる。そのようなシステムでは、ブラウザは単に画像を受け取りレンダリングするだけであり、ページを表示することに関連した処理/タスクのほとんどすべての実行をサーバに頼っている。
他のウェブブラウザ(たとえば、Amazon silk)は、一部のタスク/処理のみがサーバにオフロードされる分割アーキテクチャを使用することがある。しかしながら、この分割アーキテクチャは一般に、所定のサーバおよび独自仕様のブラウザを使用する必要がある。その上、(独自仕様かどうかを問わず)ウェブブラウザは、既に実行されているタスクを、または、(たとえば、コンテンツに対する最近の更新/変更などの観点から)事前処理された結果が最新であるかどうかを、常に完全に通知されるわけではない。事前処理コードの妥当性を保証するための機構がなければ、ブラウザは、関連するページをレンダリングするために、コードが効率的に符号化されているかどうか、および/または、必要に応じて実行されることが他の形で信頼され得るかどうかを決定することができない。
様々な態様が、ブラウザでコンテンツを処理するための方法であって、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツをブラウザ内に受け取るステップと、署名検証プロセスを用いて、事前実行動作のうちの少なくとも1つに関連付けられた署名を検証するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めた場合、第1の動作を実行するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めない場合、第2の動作を実行するステップとを含む方法を含む。
一態様では、第1の動作を実行するステップが、事前実行動作を取り込むステップを含む。さらなる態様では、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作をスキップするステップを含む。さらなる態様では、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を変更するステップを含む。さらなる態様では、第2の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を実行するステップを含む。さらなる態様では、署名検証プロセスを用いて、事前実行動作に関連付けられた署名を検証するステップが、より良い結果を達成するために、事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するステップを含む。さらなる態様では、方法は、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、事前実行動作に署名するステップとを含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ブラウザ内でツール動作を実行するステップを含む。さらなる態様では、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップが、ブラウザが実行されているコンピューティングデバイスのメモリから、署名された事前処理コードを取り出すステップを含む。さらなる態様では、第1または第2の動作の結果をコンピューティングデバイスのメモリに記憶するステップを含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、オフラインツールにおいてツール動作を実行するステップを含み、方法は、署名された事前実行動作をブラウザに送るステップをさらに含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、サーバにおいてツール動作を実行するステップを含み、方法は、署名された事前実行動作を、ブラウザが実行されているコンピューティングデバイスに送るステップをさらに含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScript(登録商標)を生成するステップを含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含む。さらなる態様では、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツの一部分を事前処理するステップを含む。さらなる態様では、方法は、コードの署名された事前処理された部分をウェブページコンテンツ内に含めるステップと、ウェブページコンテンツを、ブラウザが動作しているコンピューティングデバイスに送るステップとをさらに含む。さらなる態様では、事前処理コードに署名するステップは、バリデータによって達成される。さらなる態様では、事前処理コードに署名するステップが、特定のルールが事前処理動作において順守されていることを証明する署名を提供するステップを含む。
さらなる態様は、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るための手段と、署名検証プロセスを用いて、事前実行動作のうちの少なくとも1つに関連付けられた署名を検証するための手段と、署名検証プロセスが事前実行動作に関連付けられた署名を認めた場合、第1の動作を実行するための手段と、署名検証プロセスが事前実行動作に関連付けられた署名を認めない場合、第2の動作を実行するための手段とを含むコンピューティングデバイスを含む。一態様では、第1の動作を実行するための手段が、事前実行動作を取り込むための手段を含む。さらなる態様では、第1の動作を実行するための手段が、事前実行動作に関連付けられたブラウザ動作をスキップするための手段を含む。さらなる態様では、第1の動作を実行するための手段が、事前実行動作に関連付けられたブラウザ動作を変更するための手段を含む。さらなる態様では、第2の動作を実行するための手段が、事前実行動作に関連付けられたブラウザ動作を実行するための手段を含む。さらなる態様では、署名検証プロセスを用いて、事前実行動作に関連付けられた署名を検証するための手段が、より良い結果を達成するために、事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するための手段を含む。さらなる態様では、デバイスが、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段と、事前実行動作に署名するための手段とをさらに含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、コンピューティングデバイスで実行されているブラウザアプリケーション内でツール動作を実行するための手段を含む。さらなる態様では、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るための手段が、メモリから、署名された事前処理コードを取り出すための手段を含む。さらなる態様では、コンピューティングデバイスが、第1または第2の動作の結果をメモリに記憶するための手段をさらに含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、JavaScriptを生成するための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、カスケーディングスタイルシートを生成するための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、ソース対ソース変換を実行するための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行するための手段が、使用されないカスケーディングスタイルシートの部分をマークするための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段を含む。さらなる態様では、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、ウェブページコンテンツの一部分を事前処理するための手段を含む。さらなる態様では、事前処理コードに署名するための手段が、コンピューティングデバイスで実行されているバリデータアプリケーションにおいて事前処理コードに署名するための手段を含む。さらなる態様では、事前処理コードに署名するための手段が、特定のルールが事前処理動作において順守されていることを証明する署名を生成するための手段を含む。
さらなる態様は、ウェブページコンテンツの部分に対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段と、事前実行動作に署名するための手段と、署名された事前処理された動作をウェブページコンテンツ内に含めるための手段と、ウェブページコンテンツをコンピューティングデバイスに送るための手段とを含むサーバを含む。一態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、JavaScriptを生成するための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、カスケーディングスタイルシートを生成するための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、ソース対ソース変換を実行するための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行するための手段が、使用されないカスケーディングスタイルシートの部分をマークするための手段を含む。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段が、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段を含む。さらなる態様では、事前処理コードに署名するための手段が、特定のルールが事前処理動作において順守されていることを証明する署名を提供するための手段を含む。
さらなる態様は、メモリと、メモリに結合されたプロセッサとを含み、プロセッサは、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップと、署名検証プロセスを用いて、事前実行動作のうちの少なくとも1つに関連付けられた署名を検証するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めた場合、第1の動作を実行するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めない場合、第2の動作を実行するステップとを含む動作を実行するためのプロセッサ実行可能命令で構成される、コンピューティングデバイスを含む。一態様では、第1の動作を実行するステップが、事前実行動作を取り込むステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作をスキップするステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を変更するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、第2の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、署名検証プロセスを用いて、事前実行動作に関連付けられた署名を検証するステップが、より良い結果を達成するために、事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、事前実行動作に署名するステップとをさらに含む動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、コンピューティングデバイスで実行されているブラウザ内でツール動作を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップが、メモリから、署名された事前処理コードを取り出すステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、第1または第2の動作の結果をコンピューティングデバイスのメモリに記憶するステップをさらに含む動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツの一部分を事前処理するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、事前処理コードに署名するステップが、コンピューティングデバイスで実行されているバリデータアプリケーションにおいて事前処理コードに署名するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、事前処理コードに署名するステップが、特定のルールが事前処理動作において順守されていることを証明する署名を提供するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。
さらなる態様は、メモリと、メモリに結合されたプロセッサとを含み、プロセッサは、ウェブページコンテンツを受け取るステップと、ウェブページコンテンツの部分に対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、事前実行動作に署名するステップと、署名された事前処理された動作をウェブページコンテンツ内に含めるステップと、署名された事前実行動作を含むウェブページコンテンツをコンピューティングデバイスに送るステップとを含む動作を実行するためのプロセッサ実行可能命令で構成される、サーバを含む。一態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。さらなる態様では、事前処理コードに署名するステップが、特定のルールが事前処理動作において順守されていることを証明する署名を生成するステップを含むように動作を実行するためのプロセッサ実行可能命令でプロセッサが構成される。
さらなる態様は、プロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、プロセッサ実行可能ソフトウェア命令が、プロセッサに、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツをブラウザ内に受け取るステップと、署名検証プロセスを用いて、事前実行動作のうちの少なくとも1つに関連付けられた署名を検証するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めた場合、第1の動作を実行するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めない場合、第2の動作を実行するステップとを含む、ブラウザでコンテンツを処理するための動作を実行させるように構成される、非一時的コンピュータ可読記憶媒体を含む。一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1の動作を実行するステップが、事前実行動作を取り込むステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作をスキップするステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を変更するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第2の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を実行するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、署名検証プロセスを用いて、事前実行動作に関連付けられた署名を検証するステップが、より良い結果を達成するために、事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、事前実行動作に署名するステップとをさらに含む動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ブラウザ内でツール動作を実行するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップが、ブラウザが実行されているコンピューティングデバイスのメモリから、署名された事前処理コードを取り出すステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、第1または第2の動作の結果をコンピューティングデバイスのメモリに記憶するステップをさらに含む動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行させるように構成される。さらなる態様では、さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツの一部分を事前処理するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、事前処理コードに署名するステップが、バリデータが実行されているコンピューティングデバイスにおいて事前処理コードに署名するステップを含むように動作を実行させるように構成される。記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、事前処理コードに署名するステップが、特定のルールが事前処理動作において順守されていることを証明する署名を提供するステップを含むように動作を実行させるように構成される。
さらなる態様は、サーバ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、サーバ実行可能ソフトウェア命令は、サーバに、ウェブページコンテンツを受け取るステップと、ウェブページコンテンツの部分に対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、事前実行動作に署名するステップと、署名された事前処理された動作をウェブページコンテンツ内に含めるステップと、署名された事前実行動作を含むウェブページコンテンツをコンピューティングデバイスに送るステップとを含む動作を実行させるように構成され、サーバプロセッサは、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップと、事前実行動作に署名するステップとを含む動作を実行するためのサーバ実行可能命令で構成される、非一時的コンピュータ可読記憶媒体を含む。
一態様では、記憶されたサーバ実行可能ソフトウェア命令は、サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたサーバ実行可能ソフトウェア命令は、サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたサーバ実行可能ソフトウェア命令は、サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたサーバ実行可能ソフトウェア命令は、サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたサーバ実行可能ソフトウェア命令は、サーバに、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行させるように構成される。さらなる態様では、記憶されたサーバ実行可能ソフトウェア命令は、サーバに、事前処理コードに署名するステップが、特定のルールが事前処理動作において順守されていることを証明する署名を提供するステップを含むように動作を実行させるように構成される。
さらなる態様は、クライアントメモリ、およびクライアントメモリに結合されたクライアントプロセッサを含む、クライアントデバイスと、サーバメモリ、およびサーバメモリに結合されたサーバプロセッサを含む、サーバとを含むシステムであって、クライアントプロセッサは、各々が署名に関連付けられた1つまたは複数の事前実行動作を含むコンテンツを受け取るステップと、署名検証プロセスを用いて、事前実行動作のうちの少なくとも1つに関連付けられた署名を検証するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めた場合、第1の動作を実行するステップと、署名検証プロセスが事前実行動作に関連付けられた署名を認めない場合、第2の動作を実行するステップとを含む動作を実行するためのプロセッサ実行可能命令で構成される。一態様では、第1の動作を実行するステップが、事前実行動作を取り込むステップを含むように動作を実行するためのプロセッサ実行可能命令でクライアントプロセッサが構成される。さらなる態様では、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作をスキップするステップを含むように動作を実行するためのプロセッサ実行可能命令でクライアントプロセッサが構成される。さらなる態様では、第1の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を変更するステップを含むように動作を実行するためのプロセッサ実行可能命令でクライアントプロセッサが構成される。さらなる態様では、第2の動作を実行するステップが、事前実行動作に関連付けられたブラウザ動作を実行するステップを含むように動作を実行するためのプロセッサ実行可能命令でクライアントプロセッサが構成される。さらなる態様では、署名検証プロセスを用いて、事前実行動作に関連付けられた署名を検証するステップが、より良い結果を達成するために、事前実行動作に関連付けられたブラウザ動作がスキップされ得るかまたは異なるように実行され得るかを決定するステップを含むように動作を実行するためのプロセッサ実行可能命令でクライアントプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、JavaScriptを生成するステップを含むように動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、カスケーディングスタイルシートを生成するステップを含むように動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含むように動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含むように動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、ウェブページコンテンツに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップが、ウェブページコンテンツ内の実行可能スクリプトに対応するコードに対しツール動作を実行して、少なくとも1つの事前実行動作を生成するステップを含むように動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、事前処理コードに署名するステップが、特定のルールが事前処理動作において順守されていることを証明する署名を生成するステップを含むように動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、署名された事前処理された動作をウェブページコンテンツ内に含めるステップと、署名された事前実行動作を含むウェブページコンテンツをクライアントデバイスに送るステップとを含む動作を実行するためのサーバ実行可能命令でサーバプロセッサが構成される。さらなる態様では、1つまたは複数の事前実行動作を含むコンテンツを受け取るステップが、署名された事前処理された動作を含むウェブページコンテンツをサーバから受け取るステップを含むように動作を実行するためのプロセッサ実行可能命令でクライアントプロセッサが構成される。
本明細書に組み込まれ本明細書の一部を構成する添付の図面は、本発明の例示的な態様を示し、上記の概略的な説明および下記の発明を実施するための形態とともに、本発明の特徴を説明するのに役立つ。
様々な態様を実装するために適切な例示的なネットワークにおける論理構成要素およびフローを示す構成要素ブロック図である。 外部コード証明を用いてウェブブラウジングオーバヘッドを低減するための態様方法のプロセスフロー図である。 外部コード証明を用いてウェブブラウジングオーバヘッドを低減するための態様方法のプロセスフロー図である。 外部コード証明を用いてウェブブラウジングオーバヘッドを低減するための別の態様方法のプロセスフロー図である。 様々な態様とともに使用するのに適切な例示的なモバイルデバイスを示す図である。 様々な態様とともに使用するのに適切な例示的なパーソナルコンピュータを示す図である。
添付の図面を参照して様々な態様を詳細に説明する。同じまたは同様の部分を指すために、可能な場合は、図面全体にわたって同じ参照番号を使用する。特定の例および実装形態に対して行われる参照は、説明を目的とし、本発明の範囲または特許請求の範囲を限定するものではない。
「コンピューティングデバイス」という用語は、本明細書では、サーバ、パーソナルコンピュータ、モバイルデバイス、セルラー電話、携帯情報端末(PDA)、パームトップコンピュータ、ワイヤレス電子メール受信機(たとえば、Blackberry(登録商標)およびTreo(登録商標)デバイス)、マルチメディアインターネット対応セルラー電話(たとえば、Blackberry Storm(登録商標))、全地球測位システム(GPS)受信機、ワイヤレスゲームコントローラ、パーソナルコンピュータ、およびウェブブラウザタイプアプリケーションで構成されるプログラマブルプロセッサを含む同様の携帯電子デバイスのうちの1つまたはすべてを総称的に指すために使用される。様々な態様は、特に、処理電力が限られた携帯電話のようなモバイルデバイスで有用であるが、一般に、動的および/またはスクリプト言語で書かれたスクリプトおよびアプリケーションを実行する任意のコンピューティングデバイスで有用である。
「署名」および「証明」という用語は本明細書では総称的に使用され、コード、スクリプト、データ、またはコンテンツを符号化またはラベリングして、コード/スクリプト/データ/コンテンツがオフラインツールまたはバリデータによって事前処理されたかつ/または他の形でクライアントの要求に合致すると、クライアント(たとえば、ウェブブラウザ)が決定できるようにする任意の方法を指すことができる。
「動的言語」および「スクリプト言語」という用語は本出願では総称的に使用され、任意の動的言語、スクリプト言語、マークアップ言語、スタイルシート、または、実行時に解釈および/またはコンパイルされるプログラム(本明細書では「コード」または「スクリプト」)を書くために使用される任意のインタープリタ型言語を指すことができる。したがって、本出願では、「スクリプト言語」という用語は、ソースコードまたはバイトコードから解釈される言語、あるいは従来ネイティブマシンコードにコンパイルされるプログラムとともに実行される言語に限定されるべきではない。本出願の範囲内のスクリプト言語の例には、例えば、JavaScript、カスケーディングスタイルシート、HTML、Python、およびRuby、ならびにJava(登録商標)および将来開発され得る他の言語が含まれる。
本明細書では、様々な実施形態によって使用されまたは扱われ得るスクリプト言語の便宜的な例として、JavaScriptおよび関連する用語を使用して、様々な態様を説明する。しかしながら、本明細書のJavaScriptに関係する例およびJavaScript言語に対する他の言及は、単に例示が目的であり、その特定のタイプの動的スクリプト言語に説明または実施形態を限定しないことは理解されよう。したがって、特許請求の範囲は、特に指定されない限りJavaScriptを必要とすると解釈されるべきではない。
「コード」および「スクリプト」という用語は、本明細書では総称的および互換的に使用され、アプリケーションによって使用またはレンダリングされ得るデータおよびコンテンツを包含することは理解されよう。また、本明細書に開示される様々な態様は、コードとコンテンツの両方が含まれるアプリケーション(たとえば、ブラウザ)の任意の部分に適用可能とされ得ることも理解されよう。
様々な態様で、特定のブラウザ動作が、時間と空間の両方で(すなわち、先行して、異なるマシンで実行される)他のブラウザ動作と分離されるように、ブラウザ動作が2つの部分(オフラインツール部分とブラウザ部分)に分離され得る。署名/証明は、これら2つの部分の結果が実行時に安全に結合できることを保証するために使用され得る。
前述のように、最近のブラウザ技術の大きな発展にもかかわらず、ウェブブラウザは概して複雑な計算集約的タスクを実行する能力が欠如したままである。様々な態様は、ウェブブラウザ自体と分離される外部または「オフライン」ツールを使用して、いくつかのタスクを先行して実行することを可能にすることによって、上記および他の制約を解消する。たとえば、ブラウザは、オフライン/外部ツールによって特定の変換、最適化、計算、および/または分析を先行して行うことが可能なように構成することができ、それらの結果は、ブラウザによって受け取られ、ブラウザの性能を向上するために実行時に使用され得る。オフライン/外部ツールは、たとえば、ペイロード中に使用されないカスケーディングスタイルシート(CSS)の部分をマークすることによって、使用されない部分をブラウザが容易に識別できるようにデータを事前処理することができる。オフライン/外部ツールは、ソース対ソース変換を行う(たとえば、JavaScriptを取り込んで最適化されたJavaScriptを生成する)こともでき、生成/変換されたコード(たとえば、JavaScript)は、ブラウザが処理、実行、および/または表示をするためにコンテンツに埋め込まれてよい。
元のコードと後の生成されたコードはともに同じフォーマットとされ得る(たとえば、両者ともJavaScriptとされ得る)ので、ウェブブラウザは、外部/オフラインツールによってすでに実行されているタスクについて、(たとえば、コンテンツに対する最近の更新/変更などの観点から)事前処理されたタスクが依然として最新であるかについて、または、障害または違反(たとえば、不正な実行、制約されない障害など)が、たとえば互換性のない前提により生じないように、事前処理されたタスクが実行されたかについて、完全に通知されないことがある。
これらおよび他の理由から、ブラウザは、実行前に、生成されたコードの妥当性を検証するために、いくつかの動作を行うことが必要な場合がある。この検証プロセスは、ブラウザとオフラインツールとの間でかなりの量の補足情報(たとえば、タスクおよびバージョン情報、サポートされるブラウザ、事前処理方法など)を受け渡すこと、および/または(たとえば、Javaクラスをロードしたときに要求されるように)受け取ったコードの本体全体にバイトコード検証を実行することを必要とすることがある。大量の補足情報の受け渡しにより、ブラウザにオーバヘッドが追加される。検証オーバヘッドは、単にすべての段階を実行し事前処理されたデータを無視するよりも大きくなることがある。追加のオーバヘッドによりオフラインツールを実行する利益が打ち消されることがある。
様々な態様は、1つまたは複数の事前処理されたスクリプト/コマンド/データ/コンテンツ(本明細書では総称的に「スクリプト」または「コード」)に関連付けられた署名または証明を利用するフレームワークを提供し、それによって、ウェブブラウザが、スクリプトを検証、確認、および/または信頼し、先行してブラウザによって生成されメモリに記憶されたまたはオフライン/外部ツールによって提供されたコードに依拠することによって、関連付けられたスクリプトをさらに処理することをスキップすることをできるようにする。
様々な態様で、事前処理されているタスク(たとえば、変換、最適化、コンパイル、計算、分析など)をブラウザが決定することを可能にするやり方で、そして、追加の処理を実行することなく事前処理コードが信頼できる(すなわち、事前処理コードが正しく実行される)ということをブラウザが信頼することができるように、事前処理コードを検証し符号化しブラウザに渡す。
様々な態様で、オフライン/外部ツールによって生成され、ウェブページコンテンツの他の部分に含まれたコード/データに、「検証されたスタンプ」または「署名」が埋め込まれることがある。この署名は、(たとえば、検証識別子を介して)達成されたタスクを識別することができる。また、この署名により、ブラウザが、コードが効率的に符号化されていて追加の処理またはブラウザ検証なしに実行されてよいことを確認することを可能にすることができる。したがって、一態様では、扱いにくい量の補足情報をブラウザに渡すことに代えて、生成されたコードを、コードに(たとえば、コメント、注釈などで)埋め込まれる署名によって署名することができ、それにより、クライアントアプリケーション(たとえば、ブラウザ)が、達成されたタスクを容易に識別し、コードが安全に実行されることを信頼することが可能になる。一態様では、署名は、的確に定義され構造化され効率的に符号化された補足情報とすることができる。
様々な態様で、「検証されたスタンプ」または「署名」をコードに埋め込むことによって、事前処理コードを検証するためにブラウザが任意の追加の動作を実行する必要性がなくなり、したがって、ウェブブラウジングオーバヘッドが低減し性能が向上する。
一態様では、先行して処理されたコードを確認し検証するための署名の使用は、ウェブページを処理した結果をメモリに記憶するときにウェブブラウザによって用いられることもある。この態様では、ブラウザがウェブページをレンダリングしながらウェブページスクリプトを処理する際、処理されたスクリプトを、次にページがレンダリングされるときに再使用するため、メモリに記憶することができる。ウェブページは頻繁に変わるので、ページが先行してレンダリングされたものと同じであるかを決定するために、従来は、プロセッサがページスクリプトをかなり処理する必要がある。本態様では、コードが処理された後にウェブブラウザがメモリに保存されたコードに署名することを可能にする。次いで、ブラウザは署名を使用して、保存されたコードが適切にページをレンダリングするものとして信頼できるかを決定することができる。たとえば、ウェブページコンテンツが最後にウェブブラウザによってレンダリングされてから変化した場合、署名を検証するプロセスがコンテンツの変化をブラウザに通知することができ、その場合、ブラウザは、メモリから取り出された先行のコードを再使用する代わりに、スクリプトを実行することを選択することができる。
事前処理コードスタンプ/署名/証明の埋め込みにより、外部/オフラインツールとブラウザとの間の効率的な通信プロトコルを提供することができ、それにより、ブラウザが、受け取ったコードの安全性または信頼性(すなわち、不適切なメモリアクセスがない、コードを生成してから重要な変更がない、コードが異常を引き起こさないなど)を確認できるようになる。
前述のように、特定のブラウザ動作が、時間と空間の両方で(たとえば、先行して、または異なるマシンで実行される)他の動作と分離されるように、ブラウザ動作が2つの部分(オフラインツール部分とブラウザ部分)に分離され得る。一態様では、オフラインツール(たとえば、静的および/または動的分析を実行するツール)が、事前処理コードを生成し、コードが特定のルールを順守していることを証明するためにコードに署名し、署名したコードをブラウザ内に埋め込むことができる。一態様では、事前処理コードを外部バリデータによって検証することができ、外部バリデータは、オフラインツールの結果(すなわち、事前処理コード)に署名することができる。結果は、プライベート鍵によって、または、タグ、属性、フォーマット化コメントなどの形式で既知のキーワードを含めることによって署名され得る。ブラウザは、コードが既知の外部/オフラインツールによって処理されたか、コードが最新であるか、および/またはコードが安全もしくは信頼できるかを決定するために、暗号化証明書を使用することができる。たとえば、ブラウザは、バリデータ公開鍵を使用して埋め込まれた署名を検証し、コードが信頼されるバリデータによってまたはその期待されるバージョンによって実際に処理されたかを決定することができる。ブラウザがコード内の署名を検証した場合、ブラウザは、何らかの追加のオーバヘッドを送ること、追加の情報を要求すること、またはコード検証に一般的に必要とされる任意の追加の処理/分析を実行することなしに、コードが安全に実行されると信頼することが可能である。このプロセスは、ブラウザが事前処理コードに依拠しそのコードを使用することを可能にし、それによって、クライアントデバイスにおける処理オーバヘッドを低減し、性能を向上させる。
ウェブブラウザが、処理されたコードを記憶し、埋め込まれた署名を使用して、記憶したコードが信頼できることを検証する、態様では、ブラウザそれ自体がバリデータの役割をすることを除いて、プロセスは同様のやり方で進行する。
図1は、様々な態様による外部コード証明を用いてウェブブラウジングオーバヘッドを低減するために使用され得る例示的なネットワーク100を示す。ネットワーク100は、インターネット104を介してコンテンツをクライアントマシン106に送達するウェブ/コンテンツサーバ102を含むことができる。クライアントマシン106は、ネットワークインターフェースモジュール108、ディスプレイモジュール116、メモリ118、およびウェブブラウザ110を含むことができる。ブラウザ110は、JavaScriptを解釈し実行するためのJavaScriptエンジン112を含むことができる。
ネットワーク100はまた、ブラウザ動作を実行するように構成されたオフライン/外部ツール114を含むことができる。外部/オフラインツール114は、ウェブサーバ102、別個のサーバ、プロキシ、またはクライアントマシン106など、ネットワーク100の任意の場所に実装することができる。外部/オフラインツール114は、独立したプロセス、またはブラウザ110の一部として実装することができる。外部/オフラインツール114は、コードを生成する(たとえば、プリプロセッサであり得る)、または静的な事前処理コード(たとえば、開発者によって提供されたコード、ブラウザの先行実行セッションの結果など)をブラウザ110に送るように構成され得る。
ブラウザ110は、特定のブラウザ動作(たとえば、変換、最適化など)をオフライン/外部ツール114にオフロードして、オフロードされた動作が、時間および/または空間で(すなわち、先行して、異なるマシンで実行される)他の動作と分離されるようにするように構成され得る。外部/オフラインツール114は、Javascriptをコンパイルし、1つまたは複数のプラットフォーム(たとえば、Androidなど)のためのコードを生成し、生成したコードに署名を用いて署名することができる。オフライン/外部ツール114によって生成されたコードは、ブラウザによって使用されたコードと同じタイプとすることができる(すなわち、ソース対ソース変換を行う)。たとえば、オフラインツールは、JavaScriptコードを入力として取り込み、その出力として最適化(および署名)されたJavaScriptコードを生成する。生成されたコードは、コンパイルされた実行可能コード(たとえば、一連の完全にコンパイルされた関数)であってよい。署名の存在によって、ブラウザ110は、生成されたコードを直接呼び出すことが可能になり、そして、そのコードの実行が(たとえば、JavaScriptエンジン112を介して)ブラウザ110それ自体によってJavaScriptコードが生成された場合とまったく同じ動作を生じると信頼することが可能になる。これにより、ブラウザ/ユーザの視点から、JavaScriptコンパイルの実質的にすべてのコストが効果的に取り除かれる。
一態様では、外部/オフラインツール114は、ブラウザ110の一部であり、クライアントマシン106が電源に接続されているかつ/または遊休状態であることをクライアントマシン自体が検出したときにスクリプトを事前処理するプリプロセッサを含む。
一態様では、外部/オフラインツール114は、事前処理コードに署名し、そのコードを後で使用するためにメモリに記憶することができる。
一態様では、署名をサポートしないブラウザに署名が影響を与えないように、生成されたコードに署名を埋め込むことができる。一態様では、オフライン/外部ツールは、埋め込まれたコードが、未修正のJavaScriptエンジンによって無視され、埋め込まれたコードを理解するよう修正されたJavaScriptエンジンによって処理されることが可能なように、コードを埋め込むように構成され得る。一態様では、オフライン/外部ツールは、コメントまたは注釈でコードを埋め込むように構成され得る。
図2Aは、外部コード証明を使用することによってウェブブラウジングオーバヘッドを低減する態様方法200を示す。ブロック202では、ブラウザ動作は、オフラインツール部分とブラウザ部分に分離され得る。ブロック204では、オフラインツールは、ブラウザのコードの実行に先立ってオフラインツール部分を実行し、事前処理コードを生成する。ブロック206では、オフラインツールは、署名をコード内に埋め込むことによって事前処理コードに署名することができる。一態様では、ブロック206の一部として、事前処理コードは、バリデータによって検証することができ、バリデータは、ハッシュ型の署名動作で使用されるプライベート鍵または他の検証可能な鍵を用いて、オフラインツールの結果(すなわち、事前処理コード)に署名することができる。様々な既知の署名プロセスのいずれかが、事前処理コードのコンテンツに基づいて署名を生成するのに使用され得る。事前処理コードに署名することによって、受信デバイスは、コードを受け取ったとき、コードに対し同じまたは類似のプロセスを実行することで署名を検証することができる。あるいは、署名は、事前処理コードに基づいてもよい。ブロック208で、署名された事前処理コードをウェブコンテンツの他の部分とともにブラウザに送ることができる。
ブロック210では、ブラウザが、署名されたコードをウェブページコンテンツの他の部分とともに受け取ることができる。ブロック212では、ブラウザは、受け取ったコード内の署名を評価することができる。たとえば、ブロック212の一部として、ブラウザが、バリデータ公開鍵を使用して、コードが信頼されたバリデータによって実際に処理されたかどうかを検証することができる。さらにまたは代わりに、ブラウザは、事前処理されたウェブページ内のスクリプトに対するハッシュ関数を実行して、そのコードに特徴的なハッシュ値を得ることができる。この検証プロセスは、事前処理コードがウェブページ内の未処理のスクリプトに対応することと、信頼できるオフラインツールによって事前処理が行われたこととの両方を確認することができる。
決定ブロック214では、ブラウザは、署名が一致するかどうかを決定することができる。ブラウザが、生成および埋め込みされた署名が一致すると決定した場合(すなわち、決定ブロック214=「Yes」)、ブラウザは、クライアント部分とオフラインツール部分を実行時に組み合わせ、署名されたコードをその安全性を信頼して実行することができる。ブラウザが、署名が一致しないと決定した場合(すなわち、決定ブロック214=「No」)、ブロック218で、ブラウザは、事前処理コードが提供されなかったかのように、スクリプトを実行することによって、ページをレンダリングすることができる。したがって、署名の埋め込みは、コードが安全である(たとえば、正しい動作である、無許可のメモリアクセスがないなど)とブラウザが信頼できるようにすることによって、2つの部分の結果が実行時に安全に組み合わせられることを保証することにより、特定のブラウザ動作が、時間と空間の両方で(すなわち、先行して、異なるマシンで実行される)他の動作から分離されることを可能にする。
図2Bは、外部コード証明を使用することによってウェブブラウジングオーバヘッドを低減する態様方法250を示す。ブロック252では、ブラウザは、オフラインツール部分から入力を受け取ることができる。ブロック254では、ブラウザは、署名された事前処理コード/コンテンツを受け取ることができる。決定ブロック256では、ブラウザは、(たとえば、生成および埋め込みされた署名が一致すると決定することによって、)受け取った署名された事前処理コード/コンテンツ内に何らかの有効な署名が存在すると決定する場合がある。有効な署名が存在しないと決定した場合(すなわち、決定ブロック256=「No」)、ブロック258で、ブラウザは、事前処理コードが提供されなかったかのように、すべての受け取ったコードに対する完全な動作を実行することによって、ページをレンダリングすることができる。有効な署名が存在すると決定した場合(すなわち、決定ブロック256=「Yes」)、ブロック260で、ブラウザは、事前処理コードを実行し、コード/コンテンツの署名されていない部分に関する完全な検証を実行するだけで、ページをレンダリングすることができる。オプションブロック262で、オプションとして、ブラウザは、次の実行セットについての署名および結果を生成し、それらを後で取り出すためにローカルまたはリモートで記憶してもよい。様々な既知の署名プロセスのいずれかが、事前処理コードのコンテンツに基づくことが可能な署名を生成するのに使用され得る。事前処理コードに署名することによって、受信デバイスは、コードをメモリから入手したとき、またはアクセスされたウェブページの一部として受け取ったとき、コードに対し同じまたは類似のプロセスを実行することで署名を検証することができる。
図3は、ブラウザが後で同じページをレンダリングするときにコードが再使用できるかを決定できるやり方で、処理されたコードを保存するために、コード署名方法を使用することによってウェブブラウジングオーバヘッドを低減する別の態様方法300を示す。ブロック302では、ブラウザは、特定のウェブサイトを訪問するよう求める要求を受け取ることができる。決定ブロック304では、ブラウザは、これが、所与の時間枠内でそのサイトが訪問された最初の時かどうかを決定することができる。それが最初の訪問であるとブラウザが決定した場合(すなわち、決定ブロック304=「Yes」)、ブロック306では、ブラウザは、従来の方法を用いてウェブページコンテンツを処理することができる。ブロック308では、ブラウザは、処理されたコードに署名し、生成された署名を含めるまたは埋め込む。ブロック310では、署名された処理されたコードを、ウェブブラウザが動作しているデバイスのメモリに記憶することができる。
それがウェブブラウザへの最初の訪問でないとブラウザが決定した場合(すなわち、決定ブロック304=「No」)、ブロック312で、署名されたコードをメモリから取り出すことができる。ブロック314では、ブラウザは、コードに含まれたまたは埋め込まれた署名を検証することができる。このプロセスは、ウェブページコンテンツ内の対応するスクリプトに対して署名プロセス(たとえば、ハッシュ関数)を実行して、別の署名を生成することを含むことができる。決定ブロック316では、ブラウザは、署名が一致するかどうかを決定することができる。事前処理されたウェブページ内のスクリプトに基づいて署名が生成された場合、署名の比較は、記憶された先行して処理されたコードが、現在ダウンロードされたウェブページ内のものと同じスクリプトを実行することによって生成されたかどうかを、ブラウザが速やかに確認することを可能にする。署名が一致するとブラウザが決定した場合(すなわち、決定ブロック316=「Yes」)、ブロック320で、ブラウザは、署名されたコードを実行することができ、その署名されたコードは、記憶された先行して処理されたコードが最新のウェブページコンテンツ内のものと同じスクリプトを実行することによって生成されたものと検証されている。したがって、署名の一致により、ブラウザが、先行して記憶されたコードの実行が最新のウェブページを適切にレンダリングすると信頼することが可能である。ブラウザが、署名が一致しないと決定した場合(すなわち、決定ブロック316=「No」)、ブロック318で、ブラウザは、先行して処理されたコードがメモリに記憶されていなかった場合のように、ブロック306でウェブページをレンダリングするためにスクリプトを実行する動作を行う。
さらなる態様では、方法300の動作を方法200の動作と組み合わせて、ウェブブラウザが、ウェブページコンテンツとともにオフラインツールによって提供された事前処理コードを検証し使用し、ウェブページスクリプトの処理結果を署名とともに記憶し、先行して記憶されたコードに関連付けられた署名が検証されたとき、そのコードを再使用するようにすることができる。
様々な態様は、コード内に署名が存在しないことにより、ウェブページ内のスクリプトがまだ処理されてなく、したがってブラウザによって処理しなければならないことをJavaScriptエンジンに示すように構成され得る。一態様では、署名は、最適化を受け入れる利用可能な言語機能のうちの限られた一部のみがコードを生成するために使用されていること、および、そのコードの実行が、使用されるいくつかの機能をもたらさないことを、ブラウザに示すことができる。一態様では、署名は、利用可能な言語機能(たとえば、型検査)の拡張セットがコードを生成するために使用されていること、および、ブラウザが同様の動作の実行を差し控えることができることを、ブラウザに示すことができる。
一態様では、オフライン/外部ツールは、コードを事前コンパイルするコンパイラである。
様々な実施形態で、セキュリティの問題がなく、先行の動作または最適化の妥当性を保証することを理解されたい。様々な態様方法は、実行可能コードおよびJavaScript(登録商標)コードのみを対象とするものではなく、ブラウザの任意の部分、コードとコンテンツの両方に適用されてもよい。
様々な態様では、ツール(たとえば、JavaScriptコンパイラ、パーサ、CSSプロセッサ、レイアウトエンジンなど)をオフライン部分とオンライン部分に分割することができる。オフライン部分は、コードに対してセットの動作を実行し、実行された動作を捕捉する1つまたは複数の署名を生成することができる。オンライン部分は、署名を検査して、特定の動作を、スキップできるか、簡略化もしくは近似した形式で実行できるか、より良い結果を達成するために異なるように実行できるか、および/または、クライアントが事前検証されたコードを他の形で利用できるかを決定することが可能である。できない場合、オンライン部分は、入力(コードまたはコンテンツ)に対し(潜在的に比較的最適化されていない)同じ動作を再び実行することができる。
様々な態様によって実現される利益の1つは、特定の動作がオンライン部分でスキップまたは簡略化できるかどうかを決定する廉価な方法としての署名の使用である。オフライン部分は、サーバ上に実装されてもクライアント上に実装されてもよい。一態様では、オフライン部分は、クライアント上に実装され、コンピューティングデバイスが遊休状態のとき実行され得る。
様々な態様は、任意の様々なコンピューティングデバイスに実装され得る。モバイルコンピューティングデバイスの例を図4に示し、ノートブックコンピュータの例を図5に示す。典型的なモバイルコンピューティングデバイス400は、一般的に図4に示す構成要素を有する。たとえば、モバイルコンピューティングデバイス400は、内部メモリ402およびタッチ表面入力デバイス/ディスプレイ403に結合されたプロセッサ401を含むことができる。タッチスクリーンディスプレイ403は、たとえば、抵抗検知タッチスクリーン、容量検知タッチスクリーン、赤外線検知タッチスクリーン、音響/圧電検知タッチスクリーンなどである。様々な態様は、いかなる特定のタイプのタッチスクリーンディスプレイ403またはタッチパッド技術にも限定されない。さらに、コンピューティングデバイス400は、プロセッサ401に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ405に接続された、電磁放射を送受信するためのアンテナ404を有することができる。コンピューティングデバイス400は、ユーザの入力を受け取るための物理ボタン408を含むこともできる。
様々な態様は、モバイルコンピューティングデバイスの大幅な性能向上を実現することができるが、パーソナルコンピュータおよびラップトップコンピュータを含む他の形態のコンピューティングデバイスも、動的言語スクリプトの事前パースから利益を得ることができる。このようなコンピューティングデバイスは、典型的には、例示的パーソナルラップトップコンピュータ500を表す図5に示す構成要素を含む。そのようなパーソナルコンピュータ500は、一般に、揮発性メモリ502、およびディスクドライブ503のような大容量不揮発性メモリに結合されたプロセッサ501を含む。コンピュータ500は、プロセッサ501に結合されたコンパクトディスク(CD)および/またはDVDドライブ504を含むこともできる。コンピュータデバイス500は、プロセッサ401をネットワークに結合するためのネットワーク接続回路505など、データ接続を確立するまたは外部メモリデバイスを受け入れるためプロセッサ401に結合されるいくつかのコネクタポートを含むこともできる。コンピュータ500はさらに、コンピュータ技術分野で周知のように、キーボード508、マウス510などのポインティングデバイス、およびディスプレイ509に結合することができる。
様々な態様はまた、図6に示したサーバ600など様々な市販のサーバデバイスのいずれに実装されてもよい。そのようなサーバ600は、典型的にはプロセッサ601を含み、複数のプロセッサシステム611、621、631を含むことができ、プロセッサシステムのうちの1つまたは複数は、マルチコアプロセッサであるかまたはマルチコアプロセッサを含むことができる。プロセッサ601は、揮発性メモリ602、およびディスクドライブ603などの大容量不揮発性メモリに結合することができる。サーバ600はまた、プロセッサ601に結合されたフロッピー(登録商標)ディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ606を含むことができる。サーバ600は、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワークのようなネットワーク605とデータ接続を確立するためプロセッサ601に結合されたネットワークアクセスポート604を含むことができる。
プロセッサ401、501、601は、本明細書で説明する様々な態様の機能を含む様々な機能を実行するためのソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つもしくは複数の多重プロセッサチップとすることができる。いくつかのモバイルデバイスでは、ワイヤレス通信機能に専用の1つのプロセッサ、および他のアプリケーションの実行に専用の1つのプロセッサなど、複数のプロセッサ401、501、601が設けられてよい。典型的には、ソフトウェアアプリケーションは、アクセスされてプロセッサ401、501、601にロードされる前に、内部メモリ402、502、602に記憶され得る。いくつかのモバイルデバイスでは、プロセッサ401、501、601は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含むことができる。いくつかのモバイルデバイスでは、セキュアメモリが、プロセッサ401、501、601に結合された別個のメモリチップ内にあり得る。内部メモリ402、502、602は、揮発性メモリまたはフラッシュメモリのような不揮発性メモリ、あるいは両方の混合とすることができる。本明細書では、メモリに対する一般的な言及は、内部メモリ402、502、602、モバイルデバイスに接続されたリムーバブルメモリ、およびプロセッサ401、501、601自体の内部のメモリを含む、プロセッサ401、501、601によってアクセス可能なすべてのメモリを指す。
前述の方法の説明およびプロセスフロー図は、単に説明のための例として示しており、様々な態様のブロックを提示した順序で実行しなければならないことを要求するまたは示唆するものではない。当業者には理解されるように、前述の態様におけるステップの順序は任意の順序で実行され得る。「その後」、「次いで」、「次に」などの用語は、ブロックの順序を限定するものではなく、これらの用語は、単に方法の説明を通して読者を案内するために使用されている。さらに、たとえば、冠詞「a」、「an」または「the」を使用する単数形の請求要素へのいかなる言及も、その要素を単数に限定すると解釈されるべきではない。
本明細書で開示した態様に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得る。ハードウェアとソフトウェアのこのような互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップは上記では概してそれらの機能について説明されている。そのような機能をハードウェアとして実装するかソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に応じて変わる。当業者は説明された機能を特定の適用例ごとに異なる方法で実装し得るが、そのような実装の決定が本発明の範囲からの逸脱をもたらすものと解釈すべきではない。
本明細書に開示された態様に関して説明された様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書に説明された機能を実行するように設計されたそれらの任意の組合せによって実装または実施され得る。汎用プロセッサは、マイクロプロセッサとすることができるが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械としてもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連結した1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装されてよい。代替的に、いくつかのステップまたは方法が、所与の機能に固有の回路によって実行されてもよい。
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実装することができる。ソフトウェアで実装される場合、機能は、1つもしくは複数の命令またはコードとして非一時的コンピュータ可読またはプロセッサ可読記憶媒体で記憶されまたは送信され得る。本明細書で開示する方法またはアルゴリズムのステップは、非一時的プロセッサ可読媒体またはコンピュータ可読媒体上に存在できるプロセッサ実行可能ソフトウェアモジュールで実施され得る。非一時的プロセッサ可読媒体は、コンピューティングデバイスのコンピュータまたはプロセッサによってアクセスできる任意の利用可能な記憶媒体とすることができる。限定ではなく例として、そのような非一時的プロセッサ可読媒体またはコンピュータ可読媒体には、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または、所望のプログラムコードを命令もしくはデータ構造の形態で搬送もしくは記憶するために使用され、コンピューティングデバイスのコンピュータもしくはプロセッサによってアクセスされ得る任意の他の媒体が含まれ得る。本明細書で使用されるディスク(diskおよびdisc)には、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクが含まれ、ディスク(disk)は、通常はデータを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも非一時的コンピュータ可読媒体の範囲内に含まれるべきである。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込むことができる非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せもしくはセットとして存在することができる。
開示した態様の上記の説明は、当業者が本発明を作製または使用できるように提供されている。これらの態様に対する様々な修正が当業者には容易に明らかであり、本明細書で規定される一般的な原理は、本発明の趣旨または範囲を逸脱することなく他の態様に適用され得る。したがって、本発明は、本明細書に示した態様に限定されるものではなく、添付の特許請求の範囲ならびに本明細書に開示した原理および新規の特徴に一致する最も広い範囲を与えられるべきである。
100 ネットワーク
102 ウェブ/コンテンツサーバ
104 インターネット
106 クライアントマシン
108 ネットワークインターフェースモジュール
110 ウェブブラウザ
112 JavaScriptエンジン
114 外部ツール、オフライン/外部ツール
116 ディスプレイモジュール
118 メモリ
400 モバイルコンピューティングデバイス
401 プロセッサ
402 内部メモリ
403 タッチスクリーンディスプレイ
404 アンテナ
405 セルラー電話トランシーバ
408 物理ボタン
500 パーソナルラップトップコンピュータ
501 プロセッサ
502 揮発性メモリ
503 ディスクドライブ
504 コンパクトディスク(CD)および/またはDVDドライブ
505 ネットワーク接続回路
508 キーボード
509 ディスプレイ
510 マウス
600 サーバ
601 プロセッサ
602 揮発性メモリ
603 ディスクドライブ
604 ネットワークアクセスポート
605 ネットワーク
606 フロッピー(登録商標)ディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ
611 プロセッサシステム
621 プロセッサシステム
631 プロセッサシステム

Claims (21)

  1. ブラウザでコンテンツを処理するための方法であって、
    前記ブラウザにおいて、ウェブページに関連付けられたウェブページコンテンツを受け取るステップであって、前記ウェブページコンテンツは、前記ウェブページを描画するために使用される複数の動作を含む、ステップと、
    1つまたは複数の事前実行動作受け取るステップであって、前記1つまたは複数の事前実行動作の各々は前記複数の動作のうち1つの動作に対応し前記ブラウザにより生成また組み込まれた署名に関連付けられる、ステップと、
    署名検証プロセスを用いて、前記事前実行動作のうち少なくとも1つに関連付けられた前記署名を検証するステップと、
    前記署名検証プロセスが前記少なくとも1つの事前実行動作に関連付けられた前記署名を認めた場合、前記少なくとも1つの事前実行動作に対応しない前記複数の動作のうちの動作を実施することによって前記ウェブページを描画し、前記少なくとも1つの事前実行動作に対応する前記複数の動作のうちの動作の実施をスキップするステップと、
    前記署名検証プロセスが前記少なくとも1つの事前実行動作に関連付けられた前記署名を認めない場合、前記複数の動作を実施することによって前記ウェブページを描画するステップと、
    を含む方法。
  2. 前記少なくとも1つの事前実行動作を取り込むステップをさらに含む、請求項1に記載の方法。
  3. 前記少なくとも1つの事前実行動作に対応する前記複数の動作のうちの動作を変更するステップをさらに含む、請求項1に記載の方法。
  4. 前記少なくとも1つの事前実行動作に対応する前記複数の動作のうち動作を実行するステップをさらに含む、請求項1に記載の方法。
  5. 前記少なくとも1つの事前実行動作に関連付けられた前記署名を検証するための前記署名検証プロセスが、前記少なくとも1つの事前実行動作に対応する前記複数の動作のうちの動作がより良い結果を達成するために異なって実施され得るかを判定するステップを含む、請求項1に記載の方法。
  6. 前記複数の動作にツール動作を実行して、前記1つまたは複数の事前実行動作を生成するステップと、
    前記1つまたは複数の事前実行動作に署名するステップと
    をさらに含む、請求項1に記載の方法。
  7. 前記複数の動作に対して前記ツール動作を実行して、前記1つまたは複数の事前実行動作を生成するステップは、オフラインツール内の前記ツール動作を含み、前記方法は、前記署名された1つまたは複数の事前実行動作を後の取り出しのために記憶部に送るステップをさらに含む、請求項6に記載の方法。
  8. 前記複数の動作に対し前記ツール動作を実行して、前記1つまたは複数の事前実行動作を生成するステップはJavaScript(登録商標)またはカスケーディングスタイルシートを生成するステップを含む、請求項6に記載の方法。
  9. 前記複数の動作に対し前記に対しツール動作を実行して、前記1つまたは複数の事前実行動作を生成するステップが、ソース対ソース変換を実行するステップを含む、請求項6に記載の方法。
  10. 前記複数の動作に対し前記ツール動作を実行するステップが、使用されないカスケーディングスタイルシートの部分をマークするステップを含む、請求項6に記載の方法。
  11. 前記複数の動作に対し前記ツール動作を実行して、前記1つまたは複数の事前実行動作を生成するステップが、前記ウェブページコンテンツ内の実行可能スクリプト対し前記ツール動作を実行して、前記1つまたは複数の事前実行動作を生成するステップを含む、請求項6に記載の方法。
  12. 前記1つまたは複数の事前実行動作に署名するステップが、バリデータによって遂行される、請求項6に記載の方法。
  13. 前記1つまたは複数の事前実行動作に署名するステップが、安全性または信頼性が確認された署名を提供するステップを含む、請求項6に記載の方法。
  14. 前記複数の動作に対し前記ツール動作を実行して、前記1つまたは複数の事前実行動作を生成するステップが、前記ブラウザ内で前記ツール動作を実行するステップを含む、請求項6に記載の方法。
  15. 夫々が署名に関連付けられた前記1つまたは複数の事前実行動作受け取るステップが、前記ブラウザが実行されているコンピューティングデバイスのメモリから、署名された事前処理コードを取り出すステップを含む、請求項14に記載の方法。
  16. 前記ウェブページの描画の結果を前記コンピューティングデバイスの前記メモリに記憶するステップをさらに含む、請求項15に記載の方法。
  17. 前記複数の動作に対し前記ツール動作を実行して、前記1つまたは複数の事前実行動作を生成するステップが、前記ウェブページコンテンツの一部分を事前処理するステップを含む、請求項14に記載の方法。
  18. ブラウザでコンテンツを処理するためのコンピューティングデバイスであって、
    ウェブページに関連付けられたウェブページコンテンツを受け取るための手段であって、前記ウェブページコンテンツは、前記ウェブページを描画するために使用される複数の動作を含む、手段と、
    1つまたは複数の事前実行動作を受け取るための手段であって、前記1つまたは複数の事前実行動作の各々は前記複数の動作のうち1つの動作に対応し前記ブラウザにより生成また組み込まれた署名に関連付けられる、手段と、
    署名検証プロセスを用いて、前記事前実行動作のうち少なくとも1つに関連付けられた前記署名を検証するための手段と、
    前記署名検証プロセスが前記少なくとも1つの事前実行動作に関連付けられた前記署名を認めた場合、前記少なくとも1つの事前実行動作に対応しない前記複数の動作のうちの動作を実施することによって前記ウェブページを描画し、前記少なくとも1つの事前実行動作に対応する前記複数の動作のうちの動作の実施をスキップするための手段と、
    前記署名検証プロセスが前記少なくとも1つの事前実行動作に関連付けられた前記署名を認めない場合、前記複数の動作を実施することによって前記ウェブページを描画するための手段と、
    を含むコンピューティングデバイス。
  19. ウェブページに関連付けられたウェブページコンテンツの複数の動作に対しツール動作を実行して、少なくとも1つの事前実行動作を生成するための手段であって、前記少なくとも1つの事前実行動作は、前記複数の動作のうち1つの動作に対応し、さらに、前記複数の動作は前記ウェブページを描画するために使用される、手段と、
    前記生成された少なくとも1つの事前実行動作に署名して、前記少なくとも1つの事前実行動作に関連付けられた前記署名を検証するための署名検証プロセスをブラウザが実行できるようにするための手段であって、前記署名は前記ブラウザにより生成または組み込まれる、手段と、
    前記署名された少なくとも1つの事前実行された動作を前記ウェブページコンテンツ内に含めるための手段と、
    前記ウェブページコンテンツを前記ブラウザに送るための手段であって、前記ブラウザは、前記署名が検証された場合、前記少なくとも1つの事前実行動作に対応しない前記複数の動作のうちの動作を実施することによって前記ウェブページを描画し、前記少なくとも1つの事前実行動作に対応する前記複数の動作のうちの動作の実施をスキップし、前記署名が検証されない場合、前記複数の動作を実施することによって前記ウェブページを描画するように、コンピューティングデバイス上で構成される、手段と
    を含むサーバ。
  20. ブラウザ内で使用するためのオフライン/外部ツールによりコンテンツを処理するための方法であって、
    オフライン/外部ツールにより、ウェブページコンテンツの複数の動作に対しツール動作を実行して、事前実行動作を生成するステップであって、前記少なくとも1つの事前実行動作は、前記複数の動作のうち1つの動作に対応し、さらに、前記複数の動作は前記ウェブページを描画するために使用される、ステップと、
    オフライン/外部ツールにより、前記生成された少なくとも1つの事前実行動作に署名して、前記少なくとも1つの事前実行動作に関連付けられた前記署名を検証するための署名検証プロセスをブラウザが実行できるようにするステップであって、前記署名は前記ブラウザにより生成または組み込まれる、ステップと、
    オフライン/外部ツールにより、前記署名された少なくとも1つの事前処理された動作を前記ウェブページコンテンツ内に含めるステップと、
    オフライン/外部ツールにより、前記ウェブページコンテンツを前記ブラウザに送るステップであって、前記ブラウザは、前記署名が検証された場合、前記少なくとも1つの事前実行動作に対応しない前記複数の動作のうちの動作を実施することによって前記ウェブページを描画し、前記少なくとも1つの事前実行動作に対応する前記複数の動作のうちの動作の実施をスキップし、前記署名が検証されない場合、前記複数の動作を実施することによって前記ウェブページを描画するように、コンピューティングデバイス上で構成される、ステップと
    を含む方法。
  21. クライアントメモリと、前記クライアントメモリに接続されたクライアントプロセッサとを含む、ブラウザ内のコンテンツを処理するためのクライアントデバイスと、
    サーバメモリと、前記サーバメモリに接続されたサーバプロセッサとを含むサーバと、
    を備え、
    前記クライアントプロセッサは、
    ウェブページに関連付けられたウェブページコンテンツを受け取るステップであって、前記ウェブページコンテンツは、前記ウェブページを描画するために使用される複数の動作を含む、ステップと、
    1つまたは複数の事前実行動作を受け取るステップであって、前記1つまたは複数の事前実行動作の各々は前記複数の動作のうち1つの動作に対応し前記ブラウザにより生成また組み込まれた署名に関連付けられる、ステップと、
    署名検証プロセスを用いて、少なくとも1つの事前実行動作に関連付けられた前記署名を検証するステップと、
    前記署名検証プロセスが前記少なくとも1つの事前実行動作に関連付けられた前記署名を認めた場合、前記少なくとも1つの事前実行動作に対応しない前記複数の動作のうちの動作を実施することによって前記ウェブページを描画し、前記少なくとも1つの事前実行動作に対応する前記複数の動作のうちの動作の実施をスキップするステップと、
    前記署名検証プロセスが前記少なくとも1つの事前実行動作に関連付けられた前記署名を認めない場合、前記複数の動作を実施することによって前記ウェブページを描画するステップと、
    を含む動作を実施するためのプロセッサ実行可能命令で構成され、
    前記サーバプロセッサは、
    前記複数の動作に対しツール動作を実行するステップと、
    前記1つまたは複数の動作を生成するステップと、
    前記1つまたは複数の事前実行動作に署名して、前記署名検証プロセスをブラウザが実行できるようにするステップと、
    前記ウェブページコンテンツと前記署名された1つまたは複数の事前実行処理された動作を前記ブラウザに送るステップと
    を含む動作を実施するためのサーバ実行可能命令で構成される、
    システム。
JP2014554724A 2012-01-26 2013-01-08 外部コード証明を用いたウェブブラウジングオーバヘッドの低減 Active JP6121447B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261591141P 2012-01-26 2012-01-26
US61/591,141 2012-01-26
US13/399,126 2012-02-17
US13/399,126 US9819687B2 (en) 2012-01-26 2012-02-17 Reducing web browsing overheads with external code certification
PCT/US2013/020613 WO2013112278A1 (en) 2012-01-26 2013-01-08 Reducing web browsing overheads with external code certification

Publications (3)

Publication Number Publication Date
JP2015515657A JP2015515657A (ja) 2015-05-28
JP2015515657A5 JP2015515657A5 (ja) 2016-02-04
JP6121447B2 true JP6121447B2 (ja) 2017-04-26

Family

ID=48871424

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014554724A Active JP6121447B2 (ja) 2012-01-26 2013-01-08 外部コード証明を用いたウェブブラウジングオーバヘッドの低減

Country Status (7)

Country Link
US (1) US9819687B2 (ja)
EP (1) EP2807586A1 (ja)
JP (1) JP6121447B2 (ja)
KR (1) KR101823016B1 (ja)
CN (1) CN104094257A (ja)
IN (1) IN2014CN04737A (ja)
WO (1) WO2013112278A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8984598B2 (en) * 2012-06-27 2015-03-17 International Business Machines Corporation Web-based security proxy for computing system environment scanning
CN103942137B (zh) * 2013-01-23 2017-08-25 腾讯科技(深圳)有限公司 浏览器兼容性测试方法及装置
EP2767905A1 (en) * 2013-02-15 2014-08-20 Samsung Electronics Co., Ltd Terminal apparatus, server, browser of terminal apparatus operating system and method of operating browser
US9178904B1 (en) * 2013-09-11 2015-11-03 Symantec Corporation Systems and methods for detecting malicious browser-based scripts
US9614900B1 (en) * 2014-06-19 2017-04-04 Amazon Technologies, Inc. Multi-process architecture for a split browser
CN104572837B (zh) 2014-12-10 2019-07-26 百度在线网络技术(北京)有限公司 在网页上提供认证信息的方法及装置
US9436449B1 (en) 2015-06-02 2016-09-06 Microsoft Technology Licensing, Llc Scenario-based code trimming and code reduction
CN105681290B (zh) * 2016-01-08 2018-11-02 北京京东尚科信息技术有限公司 一种自动过滤网络运营商嵌入http响应内容的方法和装置
US10305874B2 (en) 2017-06-16 2019-05-28 Microsoft Technology Licensing, Llc Multi-factor execution gateway
CN108306937B (zh) * 2017-12-29 2022-02-25 五八有限公司 短信验证码的发送方法、获取方法、服务器及存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1091276A1 (en) 1999-10-06 2001-04-11 Alcatel Authentication of hypertext kind of resources through signature handling protocol
US7747866B1 (en) 2000-08-24 2010-06-29 Jpmorgan Chase Bank, N.A. System and method providing improved error detection related to transmission of data over a communication link
JP3730498B2 (ja) * 2000-09-19 2006-01-05 株式会社東芝 署名用記憶媒体
US6910128B1 (en) 2000-11-21 2005-06-21 International Business Machines Corporation Method and computer program product for processing signed applets
US8392827B2 (en) 2001-04-30 2013-03-05 International Business Machines Corporation Method for generation and assembly of web page content
US7873706B2 (en) 2003-03-19 2011-01-18 Cgi Communications, Inc. System and method for seamlessly providing video content to client systems over a network
JP2005267593A (ja) 2004-02-16 2005-09-29 Shuji Sonoda ブラウザ装置及びそのプログラム及びブラウジングシステム
US7398433B2 (en) 2004-03-31 2008-07-08 Microsoft Corporation System and method of preventing a web browser plug-in module from generating a failure
US7971194B1 (en) 2005-06-16 2011-06-28 Sap Portals Israel Ltd. Programming language techniques for client-side development and execution
JP2008098795A (ja) 2006-10-10 2008-04-24 Seiko Epson Corp 議事録生成システム
US8549472B1 (en) * 2007-06-12 2013-10-01 Fair Isaac Corporation System and method for web design
CN101102187A (zh) 2007-08-09 2008-01-09 上海格尔软件股份有限公司 一种实现自动签名/验证签名功能的方法
JP4997070B2 (ja) 2007-10-31 2012-08-08 京セラドキュメントソリューションズ株式会社 電気機器、画像表示制御方法、及び、画像表示制御プログラム
US8812853B1 (en) * 2008-03-18 2014-08-19 Avaya Inc. Traceability for threaded communications
US20100037317A1 (en) 2008-08-06 2010-02-11 Jeong Wook Oh Mehtod and system for security monitoring of the interface between a browser and an external browser module
US20100037062A1 (en) * 2008-08-11 2010-02-11 Mark Carney Signed digital documents
US8291230B2 (en) 2009-01-20 2012-10-16 International Business Machines Corporation Method and system for signing JavaScript object notation (JSON) messages
US8850211B2 (en) * 2009-04-27 2014-09-30 Qualcomm Incorporated Method and apparatus for improving code and data signing
US8875285B2 (en) 2010-03-24 2014-10-28 Microsoft Corporation Executable code validation in a web browser
US9424236B2 (en) * 2011-04-26 2016-08-23 Oracle International Corporation Filtered Stylesheets

Also Published As

Publication number Publication date
WO2013112278A1 (en) 2013-08-01
US9819687B2 (en) 2017-11-14
US20130198612A1 (en) 2013-08-01
KR20140114446A (ko) 2014-09-26
CN104094257A (zh) 2014-10-08
KR101823016B1 (ko) 2018-01-29
JP2015515657A (ja) 2015-05-28
EP2807586A1 (en) 2014-12-03
IN2014CN04737A (ja) 2015-09-18

Similar Documents

Publication Publication Date Title
JP6121447B2 (ja) 外部コード証明を用いたウェブブラウジングオーバヘッドの低減
US9369475B2 (en) System and method for securing a third party communication with a hosting web page
JP6061364B2 (ja) アプリケーションのセキュリティ検証のためのクラウド支援された方法及びサービス
KR101578991B1 (ko) Dom-기반 동형을 이용하여 웹-브라우징 연산을 메모라이징
RU2610254C2 (ru) Система и способ определения измененных веб-страниц
US20120272223A1 (en) Technique for Run-Time Provision of Executable Code using Off-Device Services
KR20140016380A (ko) 샌드박스에 참조들을 유지하는 시스템 및 방법
CN112966196A (zh) 一种网页聚合支付的跳转控制方法、装置、系统及介质
CN102664874B (zh) 一种安全登陆的方法和系统
CN113946602A (zh) 数据查找方法、装置、设备和介质
US11212287B2 (en) Program execution control method, program, recording medium, web page, transmission server, client, and web system
JP2019003629A (ja) チートアプリケーション識別方法およびシステム
CN109246069B (zh) 网页登录方法、装置和可读存储介质
CN116166907A (zh) 一种使用WebAssembly和服务页面编译技术开发Web应用的方法及装置
JP2019194832A (ja) ウェブリソースの変更を検出するシステムおよび方法
US20230102116A1 (en) Verifying the trustworthiness of web applications
CN112631654A (zh) 一种基于取证平台的程序联动方法和系统
US8171296B2 (en) System and method for producing and checking validation certificates
KR101249449B1 (ko) 웹 플랫폼 검증 도구 생성 장치 및 그 제어방법
KR101869377B1 (ko) 네트워크 시그너처들 사이 또는 시그너처 페어들 사이의 의존도를 분석하는 기계어 분석 장치 및 기계어 분석 방법
KR101803443B1 (ko) 네트워크 행동을 하는 어플리케이션의 프로토콜을 분석하는 기계어 분석 방법 및 기계어 분석 장치
CN116781314A (zh) 一种对系统访问请求进行校验的方法、装置及存储介质
KR20230094701A (ko) 스마트 컨트랙트와 서면 계약서 간의 동등성을 증명하는 방법 및 장치
CN117313069A (zh) 基于页面公共头的单点登录方法、系统、设备和存储介质
JP2021176043A (ja) ソフトウェア検証方法およびソフトウェア開発システム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151208

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170131

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: 20170306

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170329

R150 Certificate of patent or registration of utility model

Ref document number: 6121447

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150