JP6257754B2 - データの保護 - Google Patents

データの保護 Download PDF

Info

Publication number
JP6257754B2
JP6257754B2 JP2016515006A JP2016515006A JP6257754B2 JP 6257754 B2 JP6257754 B2 JP 6257754B2 JP 2016515006 A JP2016515006 A JP 2016515006A JP 2016515006 A JP2016515006 A JP 2016515006A JP 6257754 B2 JP6257754 B2 JP 6257754B2
Authority
JP
Japan
Prior art keywords
encryption
source data
obfuscated
obfuscation
tree
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
JP2016515006A
Other languages
English (en)
Other versions
JP2016521875A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of JP2016521875A publication Critical patent/JP2016521875A/ja
Application granted granted Critical
Publication of JP6257754B2 publication Critical patent/JP6257754B2/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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/128Restricting unauthorised execution of programs involving web programs, i.e. using technology especially used in internet, generally interacting with a web browser, e.g. hypertext markup language [HTML], applets, java
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Storage Device Security (AREA)

Description

[関連出願の相互参照]
本出願は、2013年5月20日に出願された、発明の名称を「DATA PROTECTION METHOD AND DEVICE(データ保護の方法およびデバイス)」とする中国特許出願第201310186287.7号の優先権を主張する。該出願は、あらゆる目的のために、参照によって本明細書に組み込まれる。
本出願は、データセキュリティの分野に関し、特に、データ保護の技術に関する。
今日、コンピュータおよびその他の端末機器の使用範囲が広がるにつれて、クライアントデバイスに格納されるまたはクライアントデバイス間で伝送されるソースデータのセキュリティが、益々重要な課題になっている。ソースデータ保護の実施の失敗または不適切な保護手段の採用は、ユーザがemail、ウェブブラウザ、およびその他のソフトウェアアプリケーションを使用してソースデータを伝送、交換、および/または格納する過程でそのソースデータの偽造、改ざん、置き換え、喪失、および/または漏出を招いてきた。ソースデータには、例えば、コンピュータコードがある。
例えば、ウェブ開発においてクライアントデバイスによって広く使用されているスクリプト言語であるJavaScript(登録商標、以下同じ)が、ウェブページに動的関数を追加するためにしばしば使用される。JavaScriptの使用は、ウェブページとユーザとの間におけるリアルタイムで動的で双方向性の関係を可能にした。しかしながら、JavaScriptソースコード(例えばソースデータ)は、通例、平文のフォーマット(cleartext format)でクライアントデバイスに提示されるので、JavaScriptを使用して収集された重要なデータは、悪意あるユーザによっておよび/またはクライアントデバイスで実行されているプログラムによって偽造される、改ざんされる、および置き換えられるリスクがあるだろう。平文で提示された機密ソースデータまたは重要情報は、クライアントデバイス内において容易に取得可能であり、そのような情報は、クライアントデバイスにおいて違法操作の実施に使用される恐れがある。
従来のシステムでは、クライアントデバイスにおいてソースデータを使用するセキュリティを強化するために、サーバ側ではソースデータが難読化され、クライアント側ではサーバへの伝送のために収集された機密データが暗号化される。しかしながら、従来のシステムの大半は、決まった暗号化技術、決まった暗号化キー、および決まった難読化パラメータを用いている。しかしながら、このような決まった難読化および暗号化の技術がひとたび悪意あるユーザまたはプログラムによって解読されると、データが極めて容易に偽造および改ざんされ、これは、ソースデータのセキュリティにとって直接的な脅威となる。
本発明の様々な実施形態が、以下の詳細な説明および添付の図面で開示される。
データ保護のための一実施形態を示した図である。
データを保護するためのプロセスの一実施形態を示したフローチャートである。
リクエストされたウェブページデータを送信するためのプロセスの一実施形態を示したフローチャートである。
スクリプトリソース・リクエストに応答するためのプロセスの一実施形態を示したフローチャートである。
スクリプトリソース・リクエストに応答するためのプロセスの一実施形態を示したフローチャートである。
ウェブページデータをリクエストする一実施形態を示したフローチャートである。
データを保護するように構成されたサーバの一実施形態を示した図である。
本発明は、プロセス、装置、システム、合成物、コンピュータ読み取り可能ストレージ媒体に実装されたコンピュータプログラム製品、ならびに/または結合先のメモリに記憶された命令および/もしくは結合先のメモリによって提供される命令を実行するように構成されたプロセッサなどのプロセッサのような、数々の形態で実現可能である。本明細書では、これらの実現形態、または本発明がとりえるその他のあらゆる形態が、技術と称されてよい。総じて、開示されるプロセスの各ステップの順番は、本発明の範囲内で変更されてよい。別途明記されない限り、タスクを実施するように構成されるものとして説明されるプロセッサまたはメモリなどのコンポーネントは、所定時にタスクを実施するように一時的に構成された汎用コンポーネントとして、またはタスクを実施するように製造された特殊コンポーネントとして実装されてよい。本明細書で使用される「プロセッサ」という用語は、コンピュータプログラム命令などのデータを処理するように構成された1つ以上のデバイス、回路、ならびに/または処理コアを言う。
本発明の原理を例示した添付の図面とともに、以下で、本発明の1つ以上の実施形態の詳細な説明が提供される。本発明は、このような実施形態に関連付けて説明されるが、いずれの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定され、本発明は、数々の代替形態、変更形態、および均等物を包含している。以下の説明では、本発明の完全な理解を与えるために、数々の具体的詳細が明記されている。これらの詳細は、例示を目的として提供されるものであり、本発明は、これらの詳細の一部または全部を伴わずとも、特許請求の範囲にしたがって実施されてよい。明瞭を期するために、本発明に関連した技術分野で知られる技工物は、本発明が不必要に不明瞭にされないように、詳細な説明を省略されている。
本明細書では、データ保護の実施形態が説明される。様々な実施形態において、データ保護は、クライアントデバイスによってリクエストされたスクリプトリソース・ソースデータセットに対して難読化を実施することを含む。スクリプトリソース・ソースデータセットは、複数の意味単位を決定するために解析される。例えば、スクリプトリソース・ソースデータセットは、JavaScriptコードでなる。少なくとも一部には、複数の意味単位の値を複数の意味構造のそれぞれにマッピングすることに基づいて、ツリー構造化ソースデータが決定される。ツリー構造化ソースデータに適用するための難読化手順が選択される。難読化手順は、特定の順序の1つ以上のタイプの難読化技術を含むことができる。難読化されたツリー構造化ソースデータは、少なくとも一部には、選択された難読化手順をツリー構造化ソースデータに適用することによって、決定される。難読化されたツリー構造化ソースデータは、難読化されたスクリプトリソース・ソースデータセットに変換される。難読化されたスクリプトリソース・ソースデータセットは、クライアントデバイスに送信することができる。
一部の実施形態では、クライアントデバイスに送信される暗号化ツール(例えば、選択された暗号化技術と、暗号化キーと)が、クライアントデバイスに送信される前に難読化されるスクリプトリソース・ソースデータセットに含められることによって保護される。一部の実施形態では、難読化されたスクリプトリソース・ソースデータセットは、クライアントデバイスにおいて実行されるときに、特定のクライアント関連パラメータを収集するように、および該収集されたクライアント関連パラメータを、難読化されたスクリプトリソース・ソースデータセットに含められた暗号化ツールを使用して暗号化するように、および該暗号化されたクライアント関連パラメータをサーバに送信するように構成される。一部の実施形態では、サーバは、クライアントデバイスにおいて悪意ある活動が発生したかもしれないかどうかを判断するために、受信された暗号化されたクライアント関連パラメータに対してデータ検証を実施することができる。
図1は、データ保護の一実施形態を示した図である。この例では、システム100は、クライアントデバイス102と、ネットワーク103と、サーバ104と、データベース105とを含む。ネットワーク103は、高速データネットワークおよび/または電気通信ネットワークを含む。クライアントデバイス102は、ネットワーク103を通じてサーバ104と通信するように構成される。
図中、クライアントデバイス102は、ラップトップとして示されているが、クライアントデバイス102のその他の例として、デスクトップコンピュータ、タブレット端末、スマートフォン、モバイル機器、または任意の計算機器が挙げられる。クライアントデバイス102は、サーバ104に対してスクリプトリソース・ソースデータセットをリクエストするように構成される。様々な実施形態において、サーバ104は、スクリプトリソース・ソースデータセットを求めるリクエストをデータベース105から取り出し、該リクエストされたスクリプトリソース・ソースデータセットに対し、それをクライアントデバイス102に送信する前に難読化を実施するように構成される。難読化は、ソースデータの可読性を下げるためにおよびソースデータの解読の難易度を上げるために実施される。難読化は、スクリプトリソースソースデータに含まれる、データ構造、データプロセス、関数入り口点、および/またはパラメータなどの機密性である可能性がある情報を悪意ある者が読み出せる可能性を下げることによって、ソースデータの保護およびセキュリティを強化することができる。
リクエストされたスクリプトリソース・ソースデータセットを難読化するために、サーバ104は、スクリプトリソース・ソースデータセットを解析して複数の意味単位を決定するように構成される。一部の実施形態では、「意味単位」は、意味内容に関係付けられるスクリプトデータの一部分を言う。例えば、意味単位は、スクリプトリソース・ソースデータセットが記述された言語に関係付けられた構文および/または文法に基づいて見分けられる。サーバ104は、少なくとも一部には、複数の意味単位の値を複数の意味構造のそれぞれにマッピングすることに基づいて、ツリー構造化ソースデータを決定するように構成される。ソースデータのツリー構造は、様々な意味構造およびそれらの構成要素の間における論理的および/または意味的関係を維持している。サーバ104は、ツリー構造化ソースデータに適用する難読化手順を選択するように構成され、選択された難読化手順は、1つ以上の難読化技術を含む。サーバ104は、少なくとも一部には、選択された難読化手順をツリー構造化ソースデータに適用することによって、難読化されたツリー構造化ソースデータを生成するように構成される。サーバ104は、難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセットに変換するように構成される。サーバ104は、次いで、難読化されたスクリプトリソース・ソースデータセットをクライアントデバイス102に送信する。
一部の実施形態では、難読化されたスクリプトリソース・ソースデータセットは、暗号化技術および暗号化キーを含むように構成される。一部の実施形態では、難読化されたスクリプトリソース・ソースデータセットは、クライアントデバイス102において実行されるときに、特定のクライアント関連パラメータを収集するように、および該収集されたクライアント関連パラメータを、難読化されたスクリプトリソース・ソースデータセットに含められた暗号化ツールを使用して暗号化するように、および該暗号化されたクライアント関連パラメータをサーバ104に送信するように構成される。暗号化は、機密データを含むかもしれない収集されたクライアント関連パラメータのセキュリティを、それらのパラメータが悪意ある者によって理解される可能性を下げることによって強化することができる。サーバ104は、クライアントデバイス102において悪意ある活動が発生したかもしれないかどうかを判断するために、受信された暗号化されたクライアント関連パラメータに対してデータ検証を実施するように構成される。
したがって、クライアントデバイス102とサーバ104との間で送信されるスクリプトリソース・ソースデータセットおよび/またはクライアント関連パラメータに対する難読化および/または暗号化は、特定の者がそれらがアクセス権限を有していないデータにアクセスすることを防ぐことができる。
図2は、データを保護するためのプロセスの一実施形態を示したフローチャートである。一部の実施形態では、プロセス200は、図1のシステム100において実行される。具体的には、一部の実施形態では、プロセス200は、図1のシステム100のサーバ104において実行される。
プロセス200は、平文のスクリプトリソースソースデータ(例えば、JavaScriptコード)を、結果として得られる難読化されたスクリプトリソースソースデータが難読化前の元の平文のリソースソースデータを実行して得られたであろう実行結果と同一の実行結果を得られるように実行可能であるように難読化する一例を説明している。様々な実施形態において、「平文」は、難読化および/または暗号化されていないデータを言う。プロセス200は、「等価難読化」を実施する一例を説明している。これは、結果として得られた難読化されたデータが元の平文の難読化されたデータと同一の結果を得るように実行されることが可能であるようなタイプの難読化を言う。
例えば、スクリプトリソース・ソースデータセットを求めるクライアントデバイスからのリクエストが、サーバにおいて受信される。リクエストに応えて、サーバは、プロセス200を実施して、リクエストされたスクリプトリソース・ソースデータセットを難読化し、次いで、該難読化されたスクリプトリソース・ソースデータセットを、クライアントデバイスに送り返すことができる。
202では、複数の意味単位を決定するために、スクリプトリソース・ソースデータセットが解析される。
一部の実施形態では、(例えば、クライアントデバイスによってリクエストされた)スクリプトリソース・ソースデータセットに対して構文および/または意味解析が実施される。例えば、スクリプトリソース・ソースデータセットは、JavaScriptコードである。JavaScriptコードは、クライアントデバイスにおいて1つ以上の関数を実施するように構成することができる。例えば、解析において、スクリプトリソース・ソースデータセットは、長い文字列として抽出される。この長い文字列に対してスキャンおよび構文解析が実施され、この長い文字列に含まれる有意な意味単位が特定され、スクリプトリソースソースデータに含まれる意味単位として抽出される。一部の実施形態では、解析は、少なくとも一部には、(例えば、スクリプトリソース・ソースデータセットが記述された言語のタイプに関係付けられた)意味規則に基づいて実施される。意味規則は、様々なタイプの意味単位の特性(例えば構文もしくは文法)、および/または各タイプの意味に関係付けられた基準を含む。例えば、或る意味規則は、キーワード「for」がループの存在を示すこと、およびこのようなループが構造「for (;;) {}」に関係付けられていることを示すことができる。この意味規則の例を適用するにあたっては、長い文字列のなかで、「for (;;) {}」を含むスクリプトリソース・ソースデータセットの部分(例えばコードセクション)が検索される。長い文字列から抽出される各意味単位は、元のリソースソースデータセットのなかでその意味単位のパラメータに関係付けられている値および/または文字列を含んでいる。意味単位の例として、関数宣言、(1つ以上の)文、関数呼び出し、スクリプトルートノード、変数宣言、変数値割り当て、およびループが挙げられるが、これらに限定はされない。
一部の実施形態では、スクリプトリソース・ソースデータセットは、さらに詳しく後述されるように、選択された暗号化キーと、選択された暗号化技術とを含むことができる。
一部の実施形態では、意味解析は、スクリプトリソース・ソースデータセットをコンパイルするにあたってコンパイラプログラムによって実施される。
204では、少なくとも一部には、複数の意味単位の値を複数の意味構造のそれぞれにマッピングすることに基づいて、ツリー構造化ソースデータが決定される。
様々な実施形態において、複数の意味構造が、所定のツリー構造化意味構造定義ライブラリに格納される。例えば、所定のツリー構造化意味構造定義に格納された意味構造は、その意味構造のための一般的/汎用的パラメータ値および/または文字列を含む。また、例えば、所定のツリー構造化意味構造定義に格納された意味構造は、そのパラメータどうしの間、および/またはその意味構造自身とライブラリに格納されたその他の意味構造との間における、階層および/またはツリー関係も含むことができる。
ライブラリに格納された意味構造定義の例として、以下の1つ以上が挙げられる。
a)スクリプトルートノード
スクリプトルートノード下では、JavaScriptの特徴に合致する任意のノードがツリー構造ソースデータに追加可能である。
スクリプトルートノードの一例は、次のとおりである。
Struct script{
Node1 node1;
Node2 node2;
……………
}
b)ブロック構造
一部の実施形態では、ブロック構造は、0または1つ以上の文が集まったグループである。
ブロック構造の一例は、次のとおりである。
Struct BLOCK(){
Node1 node1;
Node2 node2;
……………
}
c)関数宣言
関数宣言の一例は、次のとおりである。
Struct Function(){
FunctionParam param1;
FunctionParam param2;
……………….
//argument declarations
BLOCK doBlock; //define main executive structure
FunctionReturnNode return;
}
d)関数呼び出し
関数呼び出しは、宣言された関数の呼び出しを示している。関数呼び出しは、関数名および関数のパラメータを含む。
関数呼び出しの一例は、次のとおりである。
Struct FunctionCall () {
StringNode functionName;
numNode param1;
numNode param2;
……………….
//Parameter input function
}
e)下位のデータノード宣言
基本データノードの宣言の例は、次のとおりである。
NumNodeは、特定の数を表わすノードの数値型を宣言する。
StringNodeは、ノードの文字列型を宣言し、該文字列は、特定の文字列を表している。
f)変数宣言
変数宣言の宣言例は、次のとおりである。
Struct var () {
VarName name;
(NumNode num1 ;)
(StringNode string1 ;)
…………….
}
g)変数値割り当て
宣言された変数のための値が割り当て可能である。変数値割り当ての一例は、次のとおりである。
Struct SetValue () {
VarName name;
(NumNode num1 ;) or (StringNode string1 ;)
}
示されてはいないが所定のツリー構造化意味構造定義ライブラリに含められてよい意味構造のその他の例として、変数参照、変数演算子、およびループ構文構造のうちの1つ以上が挙げられる。
スクリプトリソース・ソースデータセットの解析から決定される各意味単位について、対応する意味構造が、所定のツリー構造化意味構造定義ライブラリから決定される。次いで、スクリプトリソース・ソースデータセットの解析から決定された各意味単位が、その対応する意味構造に搭載される。様々な実施形態において、意味単位をその対応する意味構造に「搭載する」とは、意味単位の文字列値および/または数値をその対応する意味構造内の適切な位置にマッピングすることを言う。例えば、(元のスクリプトリソース・ソースデータセットから抽出された、)関数を包含した意味単位を搭載することは、意味単位の実際の値をマッピングして、(所定のツリー構造化意味構造定義ライブラリから得られた)対応する意味構造内における対応する一般的/汎用的パラメータ名に取って代わらせるおよび/または(所定のツリー構造化意味構造定義ライブラリから得られた)対応する意味構造内の適切な位置に追加することを含む。
意味単位からの値を対応する意味構造にマッピングする(例えば、意味単位を対応する意味構造に搭載する)一例は、以下のとおりである。すなわち、もし、(ステップ202における)解析を通じて、長い文字列が文「function add (num1, num2)」を含むと判断され、意味単位抽出規則に基づいて、この位置のコードが関数宣言を含むと判断されるならば、文「function add (num1, num2)」は、意味単位として抽出可能である。関数宣言意味単位に対応する意味構造「struct function ()」が、所定のツリー構造化意味構造定義ライブラリにおいて見つけられる。関数宣言意味単位「function add (num1, num2)」は、関数名の値「add」およびパラメータ値「num1」および「num2」を意味構造内の適切な位置にマッピングすることによって、対応する意味構造「struct function ()」に搭載され、搭載された意味構造「struct function add (num1, num2)」が得られる。
対応する意味単位を搭載された意味構造は、集められてツリー構造化ソースデータを形成する。一部の実施形態では、ツリーは、抽象構文ツリーであり、これは、スクリプトリソース・ソースデータセットの抽象統語構造を表わす。例えば、ツリー意味構造の各ノードは、スクリプトリソース・ソースデータセットの解析によって決定された対応する意味単位からマッピングされた値で満たされる(例えば、対応する意味単位を搭載される)。例えば、ツリー構造化ソースデータは、所定のツリー構造化意味構造定義ライブラリにおいて見つけられた意味構造で形成されてよく、所定のツリー構造化意味構造定義ライブラリにおいて指定された、意味構造間におけるおよび/または各意味構造内の構成要素間におけるツリー関連および/またはその他の論理的関係に基づいて、そのそれぞれの意味単位を搭載される。一部の実施形態では、ツリー構造化ソースデータは、コンパイラプログラムがスクリプトリソース・ソースデータセットをコンパイルすることによって決定される。一部の実施形態では、コンパイラプログラムは、少なくとも一部には、所定のツリー構造化意味構造定義ライブラリにおいて指定された、意味構造間におけるおよび/または各意味構造内の構成要素間におけるツリー関連関係に基づいて、ツリー構造化ソースデータを決定することができる。
206では、ツリー構造化ソースデータに適用される難読化手順が選択される。選択される難読化手順は、1つ以上の難読化技術を含む。
難読化手順は、1つ以上のタイプの難読化技術を特定の順序で適用することを含む。様々な実施形態において、難読化手順の選択は、1つ以上の特定の難読化技術を選択すること、および/または選択された特定の難読化技術をどのような順番でツリー構造化ソースデータに適用するかを決定することを含む。選択されてツリー構造化ソースデータに適用される難読化手順は、その結果がサーバによる等価難読化の実施であることが望ましい、すなわち、その結果として得られた難読化されたスクリプトリソース・ソースデータセットが難読化前の平文のスクリプトリソース・ソースデータセットを実行して得られるだろう結果と同じ結果が得られるように実行可能であることが望ましい。
一部の実施形態では、ツリー構造化ソースデータのための難読化手順として、所定の難読化手順が事前に選択可能である。一部の実施形態では、ツリー構造化ソースデータのための難読化手順として、複数の所定の難読化技術のなかから、1つ以上の難読化技術が動的に且つ無作為に選択可能である。
一部の実施形態では、難読化手順に含めるための1つ以上の難読化技術が、所望のレベルの難読化を達成するように選択可能である。例えば、難読化されたデータの解読が困難であるほど、難読化のレベルは高く、難読化されたデータの解読が容易であるほど、難読化のレベルは低い。
一部の実施形態では、選択された難読化手順は、変数名置換、関数名置換、数値置換、文順序置換、空白排除、無効コード挿入、およびコード暗号化のうちの1つ以上から選択される1つ以上の難読化技術を含むことができる。以下は、このような難読化技術の各例の説明である。
1)変数名置換
変数名置換タイプの難読化技術は、ツリー構造化ソースデータに含まれる変数名を、変数定義、変数値割り当て、および変数操作が正しいことを保証しつつ、代替の変数名で置き換えることでなる。変数名置換は、変数宣言ノード、変数値割り当て、および変数参照ノードに含まれる同じ変数の変数名を置き換えることを含む。さらに、変数名置換では、一部の実施形態では、代替の変数名パラメータ(例えば難読化パラメータ)は無作為に生成され、同じ変数の範囲内では変数が異なれば変数名が異なることおよびロジックが正しいことが保証される。例えば、ツリー構造化ソースデータに変数名置換タイプの難読化技術を適用するにあたっては、代替となる実際の変数名として、「a」および「b」などの意味のない無作為の文字またはフレーズを使用することができる。
2)関数名置換
関数名置換タイプの難読化技術は、ツリー構造化ソースデータに含まれる関数名を代替の関数名で置き換えることでなる。関数名置換は、意味のある元の関数名を意味のない文字および/またはフレーズで置き換えることと、ならびに関数が異なれば関数名が異なることおよび同じ関数内ではロジックが正しいことを保証することを含む。関数名置換は、関数宣言ノードおよび関数参照ノードに含まれる同じ関数の関数名を置き換えることを含む。さらに、関数名置換では、一部の実施形態では、関数名置換パラメータ(例えば難読化パラメータ)は無作為に生成される。例えば、無作為に生成された語句「aa」が、ツリー構造化ソースデータに含まれる実際の関数名に置き換わることができる。
上述された変数名置換および関数名置換の難読化技術では、意味があるものとして選ばれたであろうツリー構造化ソースデータの元の変数名および関数名が、意味のない(例えば無作為に生成された)文字で置き換えられることが可能であり、そうして、解読者にとっての読解の難易度および解析の難易度のレベルを上げることができる。
3)数値置換
数値置換タイプの難読化技術は、ツリー構造化ソースデータに含まれる数値の数式を置き換えることでなり、ここでは、置き換え後の数式の計算結果が、置きわる間の元の数値に等しくなる。例えば、2つの数値置換パラメータ、rand1およびrand2が、無作為に生成される。これら2つの数値置換パラメータは、数値を表わすために使用できる数式:(num + rand1 * rand2) % rand2を形成することができる。該数式は、難読化のレベルを高めるために、基数8または基数16で表わすことができる。例えば、ツリー構造化ソースデータに含まれる数値var1 = 1は、数式:(base 16) var1 = 0307 % 0x63で置き換え可能である。
4)文順序置換
文順序置換タイプの難読化技術は、所要の呼び出し順序を有さないデータの順序を、ツリー構造化ソースデータの正常な実行が影響されないという条件下で編成し直すことでなる。具体的には、例えば、順序がごちゃまぜにされてよい複数の文が、文順序を選択するための切り替え機能を使用したループ構造内に配される。したがって、元の文順序は変更されるが、実行の際は、これらの文は依然として元の文順序にしたがって実行される。
5)空白排除
空白排除タイプの難読化技術は、文間の全ての改行および空白ならびにその他の任意のタイプの空白文字についてツリー構造化ソースデータをチェックすることと、データの可読性を下げるためにそのような改行および空白を排除することとでなる。
6)無効コードの挿入
無効コードの挿入は、ツリー構造化ソースデータに無効コードが挿入されるタイプの難読化技術でなる。挿入された無効コードは、ツリー構造化ソースデータに固有なロジックにもツリー構造化ソースデータの正常な実行にも影響を及ぼさない。したがって、無効コードライブラリが事前に決定可能であり、この無効コードライブラリから、ツリー構造化ソースデータに挿入するための1つ以上の無効コードが無作為に選択可能である。ツリー構造化ソースデータに無効コードが挿入された後も、該ツリー構造化ソースデータは依然として正しく実行することができる。
7)コード暗号化
コード暗号化は、ツリー構造化ソースデータに含まれるコードの暗号化が実施されるタイプの難読化技術でなる。例えば、暗号化は、ツリー構造化ソースデータ内の指定のタイプのキーワードおよび指定の長さの文字列、または指定の長さ基準を満たす文字列に対して実施することができる。一部の実施形態では、難読化技術のタイプとして暗号化が選択された場合、難読化されたソースデータがクライアントデバイスにおいて実行されるときに復号化技術を使用して暗号化が戻せるように、対応する復号化技術が難読化ソースデータに含められる。
一部の実施形態では、コード暗号化タイプの難読化を実施するために、所定のコード化技術ライブラリからコード暗号化技術が無作為に選択され、コード暗号化キーが無作為に生成される。選択されたコード暗号化技術と、コード暗号化キーとに基づいて、暗号化対象とされるコードに対応する暗号文が算出される。コード化技術ライブラリにおいて、コード暗号化技術に対応するコード復号化技術も検索される。コード暗号化キーがコード復号化キーとして機能することもできる、またはこのコード暗号化キーに対応する異なるコード復号化キーが生成可能である。所定のツリー構造化意味構造定義ライブラリにおいて、コード復号化技術に対応する意味構造が見つけられ、該意味構造のパラメータとして機能するコード復号化キーおよび暗号文が、意味構造内の適切な位置にマッピングされる。この搭載された意味構造は、次いで、ツリー構造化ソースデータ内の対応する位置に追加される。この位置のコードは、全て、適切なコード復号化技術を呼び出せることを保証される。ツリー構造化ソースデータの暗号化対象コードは、該コードを実行するときがきたら、コード復号化技術およびコード復号化キーを使用して暗号文の復号化および実行が可能であるように、復号化技術呼び出しフォーマットで置き換えられる。
選択された難読化手順は、上述された様々な難読化技術例のうちの任意の1つを含んでいてよい。或いは、選択された難読化手順は、上述された様々な難読化技術例の複数を組み合わせたものを含んでいてよく、この場合、これらの難読化技術は、指定の順序で相次いで各自実施される。各難読化技術、または複数の難読化技術の各組み合わせは、異なるレベルの難読化に関係付けられる。
複数の難読化技術を異なる組み合わせで且つ異なる順序で適用することによって、異なる難読化結果が実現される。異なる難読化結果は、難読化されたツリー構造化ソースデータに関係付けられる難読化のレベルおよび量が異なる。
次の表1は、様々な難読化手順の例を示している。表1において、難読化手順は、「組み合わせ1」、「組み合わせ2」、「組み合わせ3」、および「組み合わせ4」として標識されている。各難読化手順の例は、上述のような複数の難読化技術と、それらの難読化技術がツリー構造化ソースデータに適用される順序とを指定している。
Figure 0006257754
表1において、組み合わせ1〜3は、7つの異なるタイプ例の難読化技術を適用する3つの異なる順序を表している。組み合わせ1〜3の各組み合わせに含まれる7つのタイプの難読化技術は同じであるが、組み合わせごとに難読化技術の順序が異なるゆえに、結果として得られる難読化されたツリー構造化ソースデータの難読化のレベルは、組み合わせ1から組み合わせ3にかけて順次小さくなり、データの量もまた、組み合わせ1から組み合わせ3にかけて順次小さくなる。例えば、より低いレベルの難読化を得るためには、表1に示された組み合わせ4のように、より少ない数の難読化技術を組み合わせて難読化手順を形成することができる。
選択された難読化手順に含めることができる難読化技術は、本明細書で説明された幾つかのタイプに限定されず、本明細書で説明された以外の難読化技術を含むことができる。
208では、少なくとも一部には、選択された難読化手順をツリー構造化ソースデータに適用することに基づいて、難読化されたツリー構造化ソースデータが決定される。
ツリー構造化ソースデータは、選択された難読化手順をツリー構造化ソースに適用することによって難読化される。もし、選択された難読化手順が複数の難読化技術を指定しているならば、一部の実施形態では、選択された難読化手順は、そのような難読化技術を実施する指定の順序も指定している。
選択された難読化手順における各タイプの難読化技術が適用されている間に、対応する難読化パラメータが生成可能である。例えば、難読化パラメータは、置換パラメータ(例えば、置換変数名、置換関数名、置換数値/数式、文順序置換に使用されるループ構造、選択された無効コード、暗号化キー)と、特定のタイプの難読化技術を実施する際に(例えば無作為にまたはそれ以外のやり方で)生成または選択されるその他のデータとを含むことができる。
選択された難読化手順における1つ以上の難読化技術として指定された或る難読化技術に対応する難読化パラメータは、その難読化技術のタイプに応じて生成可能である。難読化手順ごとに異なる選択される難読化技術のタイプの相違、難読化手順ごとに異なる組み合わされる難読化技術の順序の相違、または難読化技術ごとに異なるその難読化技術によって生成される難読化パラメータの相違は、本明細書で説明される難読化を、無作為性および廃棄可能性によって特徴付けられるものにすることができる。要するに、難読化の結果は、スクリプトリソースソースデータが同じであっても、プロセス200で説明された難読化プロセスが用いられるたびに、選択された難読化手順に関係付けられる相違および/または無作為性に基づいて異なるものになるだろう。本明細書で説明されるプロセス200に記載された難読化プロセスによって導入される可変性は、ソースデータのセキュリティを効果的に強化する。
ツリー構造化ソースデータに適用されるものとして、いずれの難読化手順が選択されるかにかかわらず、ツリー構造化ソースデータに対して実施される難読化は等価難読化であり、これは、難読化されたツリー構造化ソースデータと、難読化前の平文のツリー構造化ソースとで、実行結果が同じであることを示している。例えば、ツリー構造化ソースデータの文字列「javascript」は、コード暗号化タイプの難読化技術に基づいて難読化され、暗号化結果「GvajecsaGpirot」が得られる。例えば、ツリー構造化ソースデータの難読化に使用される暗号化に対応する復号化技術は、暗号化されたデータを復号化するためにクライアントデバイスによって使用可能であるように、ツリー構造化ソースデータ自体に含めることができる。「javascript」と「GvajecsaGpirot」は、異なる文字列ではあるが、これらは、難読化されたツリー構造化ソースデータにおいて難読化文字列「GvajecsaGpirot」を含むソースデータの部分がクライアントデバイスにおいて実行されるときに、クライアントデバイスが「GvajecsaGpirot」を復号化し、実行に使用するための「javascript」を得られるように、意味的に同じやり方で使用される。したがって、難読化された「GvajecsaGpirot」は、「javascript」と等価である。
210において、難読化されたツリー構造化ソースデータは、難読化されたスクリプトリソース・ソースデータセットに変換される。
様々な実施形態において、難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセット(例えば、難読化されたスクリプトリソース・ソースデータセットは、フォーマットがツリー構造ではない)に変換することは、難読化されたツリー構造化ソースデータをトラバースすることと、所定のツリー構造化意味構造定義ライブラリに含まれる意味構造に基づいて、難読化されたツリー構造化ソースデータに含まれる意味構造を解析することとを含む。所定のツリー構造化意味構造定義ライブラリに含まれる意味構造に基づいて、難読化されたツリー構造化ソースデータを解析することによって、難読化されたツリー構造化ソースデータから、難読化された複数の意味構造を特定および抽出することができる。抽出された難読化された意味構造からは、対応する難読化された意味単位を決定することができる。難読化されたスクリプトリソース・ソースデータセットは、難読化された意味単位から構成され、該難読化された意味単位は、抽出された難読化された意味構造から決定することができる。難読化されたツリー構造化ソースデータとは異なり、難読化されたスクリプトリソース・ソースデータセットは、ツリータイプの構造をとらず、しかしながら、難読化されたスクリプトリソース・ソースデータセットは、クライアントデバイスに伝送可能なおよびクライアントデバイス(例えばクライアントデバイスのアプリケーション)によって実行可能な形態をとっている。
難読化されたスクリプトリソース・ソースデータセットは、クライアントデバイスに送信され、該クライアントデバイスにおいて、(例えばクライアントデバイスにおいて特定の関数を実施するためにおよび/または関連のウェブページを変更するために)抽出することができる。ツリー構造化ソースデータに対して実施される難読化は、等価難読化であったので、クライアントデバイスにおける難読化されたスクリプトリソースソースデータの実行結果は、難読化前の平文のスクリプトリソースソースデータが代わりに実行された場合と同じになる。
一部の実施形態では、難読化されたツリー構造化ソースデータの、難読化されたスクリプトリソース・ソースデータセットへの変換が、逆コンパイラプログラムによって実施可能である。
ツリー構造化ソースデータが難読化されているゆえに、難読化されたスクリプトリソース・ソースデータセットの内容は、難読化前のスクリプトリソース・ソースデータセットの内容とは異なるように見える。難読化されたスクリプトリソース・ソースデータセットは、より複雑で且つ読みにくく見え、これは、解読の難易度を上げて、ソースデータのセキュリティを保護する。難読化されたスクリプトリソース・ソースデータセットは、先ず難読化を解くことをしなくても、クライアントデバイスにおいて実行されることが可能である。なぜならば、選択された難読化手順は、平文のソースデータの元の文字列および/もしくは数値の少なくとも一部を意味のない値で置き換えるが元のコード文法は維持しているか、ならびに/または難読化ソースデータが実行されている間に復号化可能であるような値の暗号化を行うかのいずれかであるからである。
上記プロセス200において説明されたように、スクリプトリソース・ソースデータセットは、ツリー構造化ソースデータにおける複数の意味構造の論理関係変換および/または意味置換(難読化)を使用して、ツリー構造化ソースデータの形に解析および編成することができる。ツリー構造化ソースデータは、難読化前のツリー構造化ソースデータとの間における実行結果の一貫性を維持しつつ難読化されることが可能である。難読化されたツリー構造化ソースデータは、次いで、難読化されたスクリプトリソースソースデータに変換される。難読化されたスクリプトリソースソースデータの実行結果は、難読化前の平文のフォーマットの実行結果と同一である。また、難読化パラメータは、無作為に生成可能であり、これは、同じスクリプトリソースソースデータでも難読化のたびに異なる難読化結果が生じることを可能にする。このような難読化結果の相違は、難読化されたスクリプトリソースソースデータの解読の難易度を上げ、スクリプトリソースソースデータのセキュリティを強化することができる。
一部の実施形態では、重要データは、スクリプトリソース・ソースデータセットに追加されることによって、およびスクリプトリソース・ソースデータセットに対して(例えばプロセス200などのプロセスによって実現される)等価難読化を実施することによって保護することができる。重要データの一例は、暗号化ツール(例えば暗号化技術および暗号化キー)であってよい。例えば、暗号化ツールは、難読化される前のスクリプトリソース・ソースデータセットに含めることができる。次いで、暗号化技術および暗号化キーを含むスクリプトリソース・ソースデータセットは、等価難読化を経ることができる。等価難読化を経た後、暗号化技術および暗号化キーの内容は変化するかもしれないが、実行結果は変わらない。したがって、暗号化技術および暗号化キーの難読化は、その後に続く使用には影響を及ぼさないが、暗号化技術および暗号化キーの解読の難易度は上げる。暗号化ツールを保護することによって、クライアントデバイスに格納されて暗号化ツールによって暗号化される機密データも保護することができる。
図3および図4は、クライアントデータの暗号化に暗号化ツールが使用される例を説明している。
図3は、リクエストされたウェブページデータを送信するためのプロセスの一実施形態を示したフローチャートである。一部の実施形態では、プロセス300は、図1のシステム100において実行される。具体的には、一部の実施形態では、プロセス300は、図1のシステム100のサーバ104において実行される。
プロセス300は、クライアントデバイスによってリクエストされたウェブページデータをクライアントデバイスに送信するプロセスの一例を説明している。クライアントデバイスに送信されるウェブページデータは、さらに、スクリプトリソース・ソースデータセットに埋め込まれた暗号化ツール(例えば、暗号化技術および暗号化キーを実現するコンピュータコード)をリクエストするためにクライアントデバイスによって使用される暗号化トークンを含む。クライアントデバイスによって暗号化ツールを求めてなされる続くリクエストに応答するプロセスは、図4においてさらに詳しく後述される。
302では、クライアントデバイスからページリクエストが受信される。
クライアントデバイスからページリクエストが受信される。ページリクエストは、クライアントデバイスとサーバとの間にオンラインセッションを確立するために使用される。ページリクエストは、新しいオンラインセッションのためのセッショントークンも確立する。セッショントークンは、サーバにアクセスするために、およびそれによって最終的にページリクエストに対応するウェブページデータを取り出すために使用することができる。オンラインセッションのセッショントークンは、クライアントデバイスとサーバとの間における連続通信時間間隔を表わすために使用される一意の識別子であってよい。セッショントークンは、クライアントデバイスを識別するために、およびこのクライアントデバイスとサーバとの間における通信を維持するためにも使用することができる。
304では、ページリクエストの受信に応えて暗号化キーが生成される。
ページリクエストに対応するセッショントークンのために、暗号化トークンが生成可能である。一部の実施形態では、暗号化トークンは、無作為に生成される。セッショントークンと暗号化トークンとの間における1対1の対応関係を示すデータが、サーバにおける暗号化トークンライブラリに格納される。例えば、暗号化トークンは、データまたは文字でなる16ビット以上の無作為な文字列であってよい。
306では、暗号化トークンは、ページリクエストに関係付けられたウェブページデータに含められる。
一部の実施形態では、暗号化トークンは、受信されたページリクエストに関係付けられたウェブページデータ内の関連の場所に書き込まれる。一部の実施形態では、ウェブページデータは、クライアントデバイスがスクリプトリソース・ソースデータセットをリクエストする元になるアドレスを含む。
例えば、生成された暗号化トークンは、リクエストされたウェブページデータの文:<script type="text/javascript" src="http://xyz.com/yyy.js?token=abcdefghijklmn0123456789"></script>に書き込まれる。この文例では、「token=abcdefghijklmn0123456789」が暗号化トークンであり、この暗号化トークンの値、すなわち「abcdefghijklmn0123456789」は、サーバによって無作為に生成される。さらに、この例の文では、「http://xyz.com/yyy.js」が、クライアントデバイスがリクエストする必要があるJavaScriptスクリプトリソースのアドレスである。例えば、指定のアドレスにおいて入手可能なJavaScriptスクリプトリソースは、実行されたときに、クライアントデバイスに格納された特定のパラメータを収集するようにおよびまた暗号化もするように構成される。
308では、暗号化トークンを含むウェブページデータがクライアントデバイスに送信される。
クライアントデバイス(またはクライアントデバイスにおいて実行される、ウェブブラウザなどのアプリケーション)は、暗号化トークンを含む受信されたウェブページデータをレンダリングするように構成される。
クライアントデバイスにおいてウェブページデータがレンダリングされるのに伴って、ウェブページにおいて参照されるJavaScriptスクリプトリソースがクライアントデバイスに存在しないことが決定される。したがって、クライアントデバイスは、スクリプトリソースソースデータを取り出してスクリプトリソースの取り込みを完了させるために、ウェブページデータに含まれるアドレスに関係付けられたサーバにスクリプトリソース・リクエストを送信するように構成される。図4においてさらに後述されるように、スクリプトソースデータは、暗号化ツールを含んでいてよく、暗号化ツールを含むスクリプトソースデータは、クライアントデバイスに送信される前に難読化されることが可能である。
図4は、スクリプトリソース・リクエストに応答するためのプロセスの一実施形態を示したフローチャートである。一部の実施形態では、プロセス400は、図1のシステム100において実行される。具体的には、一部の実施形態では、プロセス400は、図1のシステム100のサーバ104において実行される。
プロセス400は、スクリプトリソース・リクエストに応答するプロセスの一例を説明しており、該プロセスは、リクエストされたスクリプトリソース・ソースデータセットに暗号化技術および暗号化キーを含めることを含む。プロセス400は、さらに、スクリプトリソース・ソースデータセットを、クライアントデバイスに送信する前に難読化することも説明している。図5においてさらに詳しく後述されるように、一部の実施形態では、スクリプトリソース・ソースデータセットは、クライアントデバイスにおいて実行されるときに、クライアントデバイスに格納されている特定のパラメータを収集するように、および該収集されたパラメータを暗号化技術と暗号化キーとを使用して暗号化するように、および該暗号化されたデータをサーバによる検証のためにサーバに送り返すように構成される。
402では、クライアントデバイスからスクリプトリソース・リクエストが受信される。スクリプトリソース・リクエストは、暗号化トークンパラメータを含む。
一部の実施形態では、スクリプトリソース・リクエストは、クライアントデバイスにおいてウェブページデータがレンダリングされている間にクライアントデバイスにおいて生成される。ウェブページデータは、図3のプロセス300などのプロセスを使用してサーバからクライアントデバイスに送信されたものである。例えば、スクリプトリソース・リクエストは、ウェブページデータによって参照されるスクリプトリソース・ソースデータセットがクライアントデバイスでは入手可能ではないというクライアントデバイスによる決定に応えてクライアントデバイスにおいて生成される。ウェブページデータは、スクリプトリソース・ソースデータセットを得るためにクライアントデバイスがスクリプトリソース・リクエストを送信することができる送信先のアドレスを含んでいてよい。
スクリプトリソース・リクエストは、暗号化トークンパラメータを含み、このパラメータの値は、ウェブページデータに含まれていた暗号化トークンである。一部の実施形態では、暗号化トークンは、サーバにおいて無作為に生成されて格納されたものである。様々な実施形態において、スクリプトリソース・リクエストは、図3のプロセス300におけるサーバによるページリクエストの受信に応えて確立されたのと同じオンラインセッションに関係付けられる。
404では、暗号化トークンパラメータに対応する暗号化キーおよび復号化キーが生成される。
一部の実施形態では、一意の暗号化キーが無作為に生成される。一部の実施形態では、少なくとも一部には、このスクリプトリソース・リクエストに含まれる暗号化トークンパラメータに基づいて、一意の暗号化キーがサーバにおいて生成される。暗号化キーと暗号化トークンとの間における対応関係を示すデータが、サーバにおける暗号化キーライブラリに格納される。
暗号化キーに対応する復号化キーも生成され、サーバにおけるこの暗号化キーライブラリに格納される。一部の実施形態では、復号化キーは、暗号化キーと同一であるように生成される。一部の実施形態では、復号化キーは、暗号化キーに基づいて生成される。
406では、暗号化技術が選択される。暗号化キーは、この選択された暗号化技術に追加される。
一部の実施形態では、既定の暗号化技術ライブラリから、暗号化技術が無作為に選択される。一部の実施形態では、暗号化技術は、所定の規則および/または暗号化トークンパラメータに基づいて、既定の暗号化技術ライブラリから選択することができる。既定の暗号化技術ライブラリに格納されている暗号化技術は、対称暗号化技術または非対称暗号化技術であってよい。既定の暗号化技術ライブラリに格納されている暗号化技術は、維持および定期的なアップデータが可能である。暗号化技術に関係付けられたラベルと暗号化トークンとの間における対応関係を示すデータが、サーバに格納される。ラベルは、(例えば既定の暗号化技術ライブラリから)選択された暗号化技術と、該選択された暗号化技術に対応する復号化技術とを一意に識別するために使用される。
暗号化キーは、暗号化技術に書き込まれる。例えば、暗号化キーは、選択された暗号化技術を実現するコンピュータコードに、暗号化技術パラメータとして追加される。
408では、暗号化キーを含む選択された暗号化技術を実現するコンピュータコードが、スクリプトリソース・ソースデータセットに含められる。
(暗号化キーを含む)選択された暗号化技術コードを実現するコンピュータコードは、JavaScriptスクリプトリソースを表わすスクリプトリソースソースコードに組み込まれる。暗号化キーを含む選択された暗号化技術を実現するコードは、スクリプトリソース・ソースデータセット内の関連の場所に配される。例えば、暗号化キーを含む選択された暗号化技術を実現するコードは、スクリプトリソースソースコードセット内の、ループ構造にネスト化されていない部分に配される。
410では、スクリプトリソース・ソースデータセットが難読化される。
暗号化キーを伴う暗号化技術を実現するコンピュータコードを含むスクリプトリソース・ソースデータセットは、スクリプトリソース・ソースデータセットおよび埋め込まれた暗号化情報がクライアントデバイスにおいて解読される可能性を下げるために難読化される。一部の実施形態では、スクリプトリソース・ソースデータセットは、図2のプロセス200などのプロセスを使用して難読化可能である。
412では、難読化されたスクリプトリソース・ソースデータセットが、クライアントデバイスに送信される。難読化されたスクリプトリソース・ソースデータセットは、クライアントデバイスにおいて1つ以上のクライアント関連パラメータを収集するように、および該収集された1つ以上のクライアント関連パラメータを、選択された暗号化技術と、暗号化キーとを使用して暗号化するように構成される。
難読化されたスクリプトリソース・ソースデータセットは、クライアントデバイスに送信される。一部の実施形態では、クライアントデバイスは、クライアントデバイスに格納されているパラメータを収集するために、および該収集されたクライアント関連パラメータをスクリプトリソース・ソースデータセット内の暗号化技術と暗号化キーとを用いて暗号化および保護するために、難読化されたスクリプトリソース・ソースデータセットを実行することができる。
難読化されたスクリプトリソース・ソースデータセットの実行によって収集可能なクライアント関連パラメータは、クライアントデバイスに格納されたパラメータを含む。このようなクライアント関連パラメータの少なくとも一部は、機密データであるかもしれない。難読化されたスクリプトリソース・ソースデータセットの実行によって収集可能なクライアント関連パラメータの例として、クライアント環境パラメータ、ユーザ行為パラメータ、およびブラウザプラグイン呼び出しパラメータのうちの1つ以上が挙げられる。クライアント環境パラメータの具体例として、ウェブブラウザのヴァージョン、オペレーティングシステムのヴァージョン、クライアントデバイスの画面の寸法(例えばサイズおよびアスペクト)、ならびにクライアントデバイスの画面解像度が挙げられる。ユーザ行為パラメータの具体例として、マウスの動き情報、マウスのクリック情報、キー操作情報、および焦点の動き情報が挙げられる。ブラウザプラグイン呼び出しパラメータの具体例として、その他のブラウザ制御およびクライアントMACアドレスの呼び出しが挙げられる。様々な実施形態において、収集されたクライアント関連パラメータは、暗号化トークンパラメータも含み、これは、ウェブページデータに含められた暗号化トークンの値を有する。
難読化されたスクリプトリソース・ソースデータセットの実行によって収集される特定のタイプのクライアント関連パラメータは、事前にスクリプトリソースソースデータに書き込まれることが可能であり、このようなパラメータは、次いで、クライアントがスクリプトリソースソースデータを実行するときに収集されることが可能である。
関連のパラメータが収集された後、クライアントデバイスにおける難読化されたスクリプトリソース・ソースデータセットの実行は、難読化されたスクリプトリソース・ソースデータセットに含まれる難読化された暗号化技術および難読化された暗号化キーを使用して、収集されたパラメータに対してデータ暗号化を実施する。暗号化されたパラメータは、検証のためにサーバに送信される。以下で図5においてさらに詳細に説明されるように、暗号化されたデータ(クライアントデバイスから収集された暗号化された関連パラメータ)および暗号化トークンを含む検証リクエストがサーバに送信される。サーバは、クライアントデバイスにおいて生じたかもしれない偽造、改ざん、または置き換えなどの違法操作の存在を決定するために、送信されたパラメータに対してデータ完全性の検証を実施することができる。
図5は、スクリプトリソース・リクエストに応答するためのプロセスの一実施形態を示したフローチャートである。一部の実施形態では、プロセス500は、図1のシステム100において実行される。具体的には、一部の実施形態では、プロセス500は、図1のシステム100のサーバ104において実行される。
プロセス500は、暗号化されたクライアント関連パラメータがクライアントデバイスから受信され、悪意ある活動がクライアントデバイスにおいて起きたかどうかを判断するために検証される、プロセスの一例を説明している。
502では、クライアントデバイスから検証リクエストが受信される。検証リクエストは、暗号化トークンパラメータと、1つ以上の暗号化されたクライアント関連パラメータとを含む。
例えば、クライアントデバイスからのページリクエストの受信に応えて、サーバは、図3のプロセス300などのプロセスによって実行されるように、暗号化トークンと、スクリプトリソース・ソースデータセットを得るのに有用なデータとを含むウェブページデータをクライアントデバイスに送信する。ウェブページデータがクライアントデバイスにおいて処理されている間に、サーバは、(ウェブページデータからの)暗号化トークンを含むスクリプトリソース・リクエストをクライアントデバイスから受信することができる。スクリプトリソース・リクエストの受信に応えて、サーバは、リクエストされたスクリプトリソース・ソースデータセットを見つけることができる。スクリプトリソース・ソースデータセットは、少なくとも、クライアント関連パラメータを収集するように、および暗号化技術と暗号化キーとを選択するように構成される。図4のプロセス400などのプロセスによって説明されるように、サーバは、選択された暗号化技術と暗号化キーとを実現するコンピュータコードをスクリプトリソースデータセットに含め、随意として、(例えば、図2のプロセス200などのプロセスにおいて説明された難読化技術を使用して)スクリプトリソースデータセットを難読化し、該(難読化された)スクリプトリソースデータセットをクライアントデバイスに送信する。上記のように、クライアントデバイスにおいて実行される(難読化された)スクリプトリソース・ソースデータセットは、クライアント関連パラメータを収集するように、および該収集されたパラメータを、(難読化された)スクリプトリソース・ソースデータセットに含まれる暗号化技術と暗号化キーとを使用して暗号化するように構成される。クライアントデバイスにおいて実行される(難読化された)スクリプトリソース・ソースデータセットは、次いで、検証リクエストをサーバに送信するように構成される。様々な実施形態において、検証リクエストは、暗号化トークンパラメータと、1つ以上の暗号化されたクライアント関連パラメータとを含む。検証リクエストの暗号化トークンパラメータの値は、前もってサーバに送信されたウェブページデータに含まれていた暗号化トークンである。
一部の実施形態では、暗号化されたデータが存在するかどうか(例えば、空白値は、暗号化されたデータが存在しないことを示す)、暗号化されたデータが復号化可能であるかどうか、およびデータの置き換えがあったかどうかを判断するために、サーバにおいて、暗号化されたパラメータに対してデータ完全性検証プロセスが実施される。図5においてさらに詳しく後述されるように、もし、暗号化されたデータが存在する、暗号化されたデータが復号化可能でない、および/またはデータの置き換えが検出されたならば、データの完全性の検証は失敗したと判断され、少なくともクライアントデバイスに格納されているデータは損なわれたと想定される。
一部の実施形態では、検証リクエストのなかの暗号化されたデータに含まれるパラメータとして、暗号化トークンパラメータ、クライアント環境パラメータ、ユーザ行為パラメータ、およびブラウザプラグイン呼び出しパラメータが挙げられる。
様々な実施形態において、検証リクエストが関連付けられているオンラインセッションは、図3のプロセス300などのプロセスにおける、サーバによるページリクエストの受信に応えて確立されたオンラインセッションと同じであって、図4のプロセス400などのプロセスにおける、スクリプトリソース・リクエストに関係付けられたオンラインセッションである。
504では、暗号化トークンパラメータに関係付けられた復号化キーおよび復号化技術が決定される。
検証リクエストに含まれる暗号化トークンに対応する暗号化技術の逆操作を実施する復号化技術が、サーバの暗号化技術ライブラリに格納されている。検証リクエストに含まれる暗号化トークンに対応する暗号化キーに対応する復号化キーが、サーバの暗号化キーライブラリに格納されている。したがって、検証リクエストに含まれる暗号化トークンパラメータを使用することによって、サーバにおけるライブラリから、そこに格納されている対応関係に基づいて適切な復号化技術および復号化キーを取り出すことができる。暗号化技術および暗号化キーは、等価難読化を経た後も意味的に変わらないままであるので、暗号化技術ライブラリおよび暗号化キーライブラリでは、難読化前の元の暗号化技術に対応する復号化技術および難読化された暗号化キーに対応する難読化前の元の復号化キーをそれぞれ検索することができる。
506では、検証リクエストに含まれる1つ以上の暗号化されたパラメータに対し、復号化キーおよび復号化技術を使用してデータ検証が実施される。
一部の実施形態では、検証リクエストに含まれる暗号化されたパラメータのデータ検証を実施するために、先ず、暗号化されたパラメータが非ヌル値データを含むかどうかが判断される。もし、暗号化されたパラメータがヌル値を有するならば、これは、暗号化されたパラメータが存在しないことを示しており、ゆえに検証は無効であり、暗号化されたパラメータは疑わしいデータであると判断され、データ検証は失敗に終わる。他方、もし、暗号化されたパラメータが非ヌル値を有するならば、次は、データ復号化検証が実施される。
データ復号化検証の際に、検証リクエストに含まれる非ヌル値の暗号化されたパラメータは、決定された復号化キーおよび復号化技術を使用して復号化される。もし、(例えば、暗号化されたデータのフォーマットが、復号化技術によって求められるフォーマットに適合しないゆえに、および/または復号化技術が、暗号化されたデータを成功裏に復号化することができないゆえに、)暗号化されたパラメータが、決定された復号化キーおよび復号化技術を使用して復号化可能でないならば(例えば、復号化が、無効であると判断されたならば)、暗号化されたパラメータに対して悪意ある操作が生じたかもしれないとの想定がなされ、データ完全性検証は無効結果を出力し、暗号化されたパラメータは疑わしいデータであると判断され、データ検証は失敗に終わる。そうではなく、もし、暗号化されたパラメータが、成功裏に復号化可能であるならば、暗号化されたパラメータに対応する復号化されたパラメータが生成され、これらの復号化されたパラメータに対し、データ置換防止検証(置換防止検証とも呼ばれる)が実施される。
置換防止検証において、復号化されたパラメータに含まれるなかから暗号化トークンパラメータが抽出され、検証リクエストに含まれる暗号化トークンパラメータと比較される。抽出された暗号化トークンパラメータが、検証リクエストに含まれる暗号化トークンパラメータと同一である場合、暗号化されたパラメータは、データ検証に合格したと判断される。
(例えば、図3のプロセス300などのプロセスにおいて説明されたように)クライアントデバイスが最初にサーバにページリクエストを送信して以降における、クライアントデバイスとサーバとの間の通信は、同じオンラインセッションに、およびそれゆえに同じオンライントークンに関係付けられており、したがって、サーバにおける暗号化トークンライブラリでは、このオンラインセッションに対応するセッショントークンを探すことができる。一部の実施形態では、置換防止検証は、さらに、暗号化トークンライブラリにおいて探し出されたセッショントークンに対応する暗号化トークンが、復号化されたパラメータから抽出された暗号化トークンパラメータの値と同一であるかどうかを判断することを含む。もし、暗号化トークンライブラリにおいて探し出されたセッショントークンに対応する暗号化トークンが、復号化されたパラメータから抽出された暗号化トークンパラメータの値と同一でないならば、クライアントデバイスにおけるデータが置換されており、それゆえにこれらの復号化されたパラメータは疑わしいデータであると判断され、データ検証は失敗に終わったと判断される。そうではなく、もし、暗号化トークンライブラリにおいて探し出されたセッショントークンに対応する暗号化トークンが、復号化されたパラメータから抽出された暗号化トークンパラメータの値と同一であるならば、暗号化されたパラメータは、データ検証に合格したと判断される。
もし、検証リクエストを通じてクライアントデバイスによってサブミットされた暗号化されたパラメータが、データ検証に合格したならば、暗号化されたパラメータは、正当なデータであり、クライアント操作行為の解析を実施するのに足る信頼性を有すると判断される。一部の実施形態では、サーバは、データ検証好結果メッセージをクライアントデバイスに送信する。
しかしながら、もし、検証リクエストを通じてクライアントデバイスによってサブミットされた暗号化されたパラメータが、データ検証に合格しなかったならば、暗号化されたパラメータは、疑わしいデータであると判断され、異常な/悪意ある活動を示す警告を含むデータ検証結果メッセージがクライアントデバイスに送信される。
508では、暗号化トークンパラメータに対応する暗号化トークンが、暗号化トークンライブラリから削除され、暗号化トークンパラメータに対応する暗号化キーが、暗号化キーライブラリから削除される。
様々な実施形態において、データ検証プロセスが完了した後、現オンラインセッションにおいて生成された暗号化トークンおよび暗号化キーは、暗号化トークンおよび暗号化キーが再使用されないことを保証するために、暗号化トークンライブラリおよび暗号化キーライブラリから削除される。このようなクリーンアップは、暗号化トークンおよび暗号化キーの一度限りの使用を保証し、これは、ソースデータの解読の難易度を上げることができる。
図6は、ウェブページデータをリクエストする一実施形態を示したフローチャートである。一部の実施形態では、プロセス600は、図1のシステム100において実行される。具体的には、一部の実施形態では、プロセス600は、図1のシステム100のクライアントデバイス102において実行される。
プロセス600は、クライアントデバイスがサーバに対してウェブページデータをリクエストし、最終的に、暗号化されたクライアントパラメータをデータ検証のためにサーバに送信するように促される、プロセスの一例を説明している。
602では、ページリクエストがサーバに送信される。例えば、クライアントデバイスは、ユーザによるウェブアドレスの選択または入力の受信に応えてページリクエストを送信することができる。
604では、サーバからウェブページデータが受信され、該ウェブページデータは、暗号化トークンを含む。サーバは、新しいオンラインセッションを確立し、暗号化トークンを生成し、該暗号化トークンを、リクエストされたウェブページデータに含め、ウェブページデータをクライアントデバイスに送り返す。例えば、サーバは、ページリクエストを処理するために、図3のプロセス300などのプロセスを実施することができる。
606では、サーバにスクリプトリソース・リクエストが送信される。スクリプトリソース・リクエストは、ウェブページデータに含まれる暗号化トークンに対応する暗号化トークンパラメータを含む。様々な実施形態において、ウェブページデータは、提供されたウェブアドレスからリクエストされることになるスクリプトリソース・ソースデータセット(例えばJavaScriptスクリプトリソース)への参照を含む。クライアントデバイスは、ウェブページデータをレンダリングするのに伴って、スクリプトリソース・ソースデータセットへの参照をウェブページデータのなかに検出し、該検出に応えて、ウェブアドレスに基づいてサーバに送信するための暗号化トークンパラメータを含むスクリプトリソース・リクエストを生成する。スクリプトリソース・リクエストに含まれる暗号化トークンパラメータは、ウェブページデータに含まれていた暗号化トークンと同じ値を有する。例えば、サーバは、スクリプトリソース・リクエストを処理するために、図4のプロセス400を実施することができる。一部の実施形態では、クライアントデバイスは、ページリクエストに応えて確立されたオンラインセッションと同じオンラインセッションの一環として、スクリプトリソース・リクエストを送信する。
608では、サーバから、難読化されたスクリプトリソース・ソースデータセットが受信され、該難読化されたスクリプトリソース・ソースデータセットは、暗号化技術および暗号化キーを含む。例えば、スクリプトリソース・ソースデータセットは、図2のプロセス200などのプロセスを使用して難読化されたものである。
610では、難読化されたスクリプトリソース・ソースデータセットが実行され、該難読化されたスクリプトリソース・ソースデータセットの実行は、1つ以上のクライアント関連パラメータを収集するように、および暗号化技術と暗号化キーとを使用して1つ以上のクライアント関連パラメータを暗号化するように、および1つ以上の暗号化されたクライアント関連パラメータをサーバに送信するように構成される。一部の実施形態では、難読化されたスクリプトリソース・ソースデータセットは、クライアントデバイスに格納されているデータを、クライアントデバイスにおいて悪意ある活動が起きた可能性があるかどうかを判断するサーバによる検証のために収集することができる。
612では、サーバに検証リクエストが送信され、該検証リクエストは、暗号化トークンパラメータと、1つ以上の暗号化されたクライアント関連パラメータとを含む。例えば、サーバは、受信された検証リクエストのなかの暗号化されたクライアント関連パラメータに対し、図5のプロセス500などのプロセスを使用してデータ検証を実施するように構成される。一部の実施形態では、クライアントデバイスは、ページリクエストに応えて確立されたオンラインセッションと同じオンラインセッションの一環として、検証リクエストを送信する。
614では、サーバからデータ検証結果が受信される。検証リクエストのなかの暗号化されたクライアント関連パラメータが検証に合格したかまたは合格しなかったかを示すメッセージが、クライアントデバイスに送信される。暗号化されたクライアント関連パラメータが検証に合格しなかった場合、メッセージは、クライアントデバイスに格納されたデータが損なわれたかもしれないという警告を含んでいてよい。暗号化されたクライアント関連パラメータが検証に合格した場合、メッセージは、クライアント関連パラメータが成功裏に受信されたという確証を含んでいてよい。一部の実施形態では、暗号化されたクライアント関連パラメータが検証に合格した場合にクライアントデバイスにメッセージは一切送信されない。
図7は、データを保護するように構成されたサーバの一実施形態を示した図である。この例では、システム700は、解析モジュール701と、形成モジュール703と、選択モジュール705と、難読化モジュール707と、逆コンパイルモジュール709とを含む。
モジュールおよびエレメントは、1つ以上のプロセッサ上で実行されるソフトウェアコンポーネントとして、またはプログラマブルロジックデバイスおよび/もしくは特定の機能を実施するように設計された特殊用途向け集積回路などのハードウェアとして、またはそれらの組み合わせとして実装されることが可能である。一部の実施形態では、モジュールおよびエレメントは、本発明の実施形態で説明される方法を(パソコン、サーバ、ネットワーク機器などの)計算装置に実行させるための幾つかの命令を含み尚且つ(光ディスク、フラッシュストレージデバイス、モバイルハードディスクなどの)不揮発性のストレージ媒体に記憶させることができるソフトウェア製品の形で具現化されることが可能である。モジュールおよびエレメントは、1つのデバイス上に実装されてよい、または複数のデバイスに分散されてよい。
解析モジュール701は、複数の意味単位を決定するために、スクリプトリソース・ソースデータセットを解析するように構成される。
形成モジュール703は、少なくとも一部には、複数の意味単位の値を複数の意味構造のそれぞれにマッピングすることに基づいて、ツリー構造化ソースデータを決定するように構成される。
選択モジュール705は、ツリー構造化ソースデータに適用するための難読化手順を選択するように構成され、該選択された難読化手順は、1つ以上の難読化技術を含む。選択された難読化手順は、変数名置換、関数名置換、数値置換、文順序置換、空白排除、無効コード挿入、およびコード暗号化のうちの少なくとも1つ以上の難読化技術の組み合わせを含んでいてよい。
難読化モジュール707は、少なくとも一部には、選択された難読化手順をツリー構造化ソースデータに適用することに基づいて、難読化されたツリー構造化ソースデータを決定するように構成される。
難読化モジュール707は、さらに、生成エレメント7071と、難読化エレメント7073とを含む。生成エレメント7071は、選択された難読化手順に含まれる各難読化技術に対応する0のまたは1つ以上の難読化パラメータを生成するように構成される。難読化エレメント7073は、1つ以上の難読化技術と、生成エレメント7071によって生成された対応する難読化パラメータとに基づいて、ツリー構造化ソースデータの難読化を実施するように構成される。
逆コンパイルモジュール709は、難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセットに変換するように構成される。逆コンパイルモジュール709は、さらに、解体エレメント7091と、構築エレメント7093とを含む。解体エレメント7091は、難読化されたツリー構造化ソースデータを解体することによって、難読化された意味構造を得るように構成される。構築エレメント7093は、難読化された意味構造に対応する難読化された意味単位を使用して、難読化されたスクリプトリソースソースデータを構築するように構成される。
本説明における様々な実施形態は、総じて進行順に説明されている。各実施形態の説明は、その他の実施形態との相違箇所に焦点を当てており、その説明は、各実施形態の同一のまたは類似の部分を相互に参照可能である。
本出願は、プログラムモジュールまたはプログラムユニットのように、コンピュータによって実行されるコンピュータ実行可能コマンドを一般的な背景として説明することができる。総じて、プログラムモジュールまたはプログラムユニットは、特定のタスクを実行するためのまたは特定の抽象データ型を実現するための、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むことができる。通常、プログラムモジュールまたはプログラムユニットは、ソフトウェア、ハードウェア、または両者の組み合わせによって実現することができる。本出願は、分散コンピューティング環境のなかで行うこともできる。このような分散コンピューティング環境では、タスクは、通信ネットワークを通じて接続された遠隔処理機器によって実行される。分散コンピューティング環境では、プログラムモジュールまたはプログラムユニットは、ストレージ機器を含むローカルコンピュータまたはリモートコンピュータにおけるストレージ媒体上に位置付けることができる。
当業者ならば、本出願の実施形態が、方法、システム、またはコンピュータプログラム製品として提供可能であることがわかるはずである。したがって、本出願は、完全にハードウェアで構成される実施形態、完全にソフトウェアで構成される実施形態、またはハードウェアとソフトウェアとを組み合わせた実施形態の形態をとることができる。また、本出願は、コンピュータ操作可能なプログラムコードを含む1つ以上のコンピュータ操作可能なストレージ媒体(磁気ディスクストレージデバイス、CD−ROM、および光ストレージデバイスを含むがこれらに限定はされない)に実装されたコンピュータプログラム製品の形態をとることができる。
本文書は、本出願の原理および実装形態を解説するために、具体的な実施形態を用いてきた。上記の実施形態の説明は、本開示の方法およびその核となる概念の理解を助けるためのものにすぎない。さらに、当業者ならば、本開示の概念をもとにして、実装の具体的形態および適用の範囲に対して変更を加えることができる。以上をまとめると、本説明の内容は、本出願を制限するものと理解されてはならない。
以上の実施形態は、理解を明瞭にする目的で幾らか詳細に説明されてきたが、本発明は、提供された詳細に限定されない。本発明を実現するには、数々の代替的手法がある。開示された実施形態は、例示的なものであり、限定的なものではない。
本発明は、たとえば、以下のような態様で実現することもできる。
[適用例1]
システムであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサに結合され、前記1つ以上のプロセッサに命令を提供するように構成された1つ以上のメモリと、を備え、
前記1つ以上のプロセッサは、
複数の意味単位を決定するために、スクリプトリソース・ソースデータセットを解析することと、
少なくとも一部には、前記複数の意味単位の値を複数の意味構造のそれぞれにマッピングすることに基づいて、ツリー構造化ソースデータを決定することと、
前記ツリー構造化ソースデータに適用するための難読化手順を選択することであって、前記選択された難読化手順は、1つ以上の難読化技術を含む、難読化手順の選択と、
少なくとも一部には、前記選択された難読化手順を前記ツリー構造化ソースデータに適用することによって、難読化されたツリー構造化ソースデータを決定することと、
前記難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセットに変換することと、を行うように構成される、システム。
[適用例2]
適用例1のシステムであって、
前記1つ以上のプロセッサは、さらに、前記複数の意味単位のそれぞれに対応する複数の意味構造を、所定のツリー構造化意味構造定義ライブラリから決定するように構成される、システム。
[適用例3]
適用例1のシステムであって、
前記複数の意味単位を決定するために、スクリプトリソース・ソースデータセットを解析することは、コンパイルプロセスの一環として実施される、システム。
[適用例4]
適用例1のシステムであって、
前記選択された難読化手順は、前記1つ以上の難読化技術が実施される順序を含む、システム。
[適用例5]
適用例1のシステムであって、
前記1つ以上の難読化技術は、変数名置換、関数名置換、数値置換、文順序置換、空白排除、無効コード挿入、およびコード暗号化のうちの1つ以上の難読化技術を含む、システム。
[適用例6]
適用例1のシステムであって、
前記難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセットに変換することは、逆コンパイルプロセスの一環として実施される、システム。
[適用例7]
適用例1のシステムであって、
前記難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセットに変換することは、
前記難読化されたツリー構造化ソースデータをトラバースすることと、
少なくとも一部には、所定のツリー構造化意味構造定義ライブラリに含まれる意味構造に基づいて、前記難読化されたツリー構造化ソースデータに含まれる複数の意味構造を抽出することと、
前記複数の意味構造から、難読化された複数の意味単位を決定することと、を含む、システム。
[適用例8]
適用例1のシステムであって、
前記1つ以上のプロセッサは、さらに、
クライアントデバイスからページリクエストを受信することと、
前記ページリクエストの受信に応えて、暗号化トークンを生成することと、
前記ページリクエストに関係付けられたウェブページデータに、前記暗号化トークンを含めることと、
前記暗号化トークンを含む前記ウェブページデータを送信することと、を行うように構成される、システム。
[適用例9]
適用例8のシステムであって、
前記1つ以上のプロセッサは、さらに、
スクリプトリソース・リクエストを受信することであって、前記スクリプトリソース・リクエストは、前記暗号化トークンを含む、スクリプトリソース・リクエストの受信と、
暗号化キーおよび復号化キーを生成することと、
暗号化技術を選択することであって、前記暗号化キーは、前記選択された暗号化技術に追加される、暗号化技術の選択と、
前記暗号化キーを含む前記選択された暗号化技術を実現するコンピュータコードを、前記スクリプトリソース・ソースデータセットに含めることと、を行うように構成される、システム。
[適用例10]
適用例9のシステムであって、
前記難読化されたスクリプトリソース・ソースデータセットは、前記クライアントデバイスにおいて1つ以上のクライアント関連パラメータを収集するように、および前記収集された1つ以上のクライアント関連パラメータを、前記選択された暗号化技術と、前記暗号化キーとを使用して暗号化するように構成される、システム。
[適用例11]
適用例10のシステムであって、
前記1つ以上のプロセッサは、さらに、
検証リクエストを受信することであって、前記検証リクエストは、前記暗号化トークンと、前記暗号化された1つ以上のクライアント関連パラメータとを含む、検証リクエストの受信と、
前記暗号化トークンに関係付けられた前記復号化キーおよび復号化技術を決定することと、
前記復号化キーおよび前記復号化技術を使用して、前記暗号化された1つ以上のクライアント関連パラメータに対してデータ検証を実施することと、
前記データ検証の実施に続いて、前記暗号化トークンを暗号化トークンライブラリから削除し、前記暗号化キーに対応する暗号化キーを暗号化キーライブラリから削除することと、を行うように構成される、システム。
[適用例12]
適用例11のシステムであって、
前記復号化キーおよび前記復号化技術を使用して、前記暗号化された1つ以上のクライアント関連パラメータに対してデータ検証を実施することは、
前記暗号化された1つ以上のクライアント関連パラメータのいずれかがヌル値を含むかどうかを判断することと、
前記暗号化された1つ以上のクライアント関連パラメータのいずれもヌル値を含まない場合に、前記暗号化された1つ以上のクライアント関連パラメータが、前記復号化技術および前記復号化キーを使用して複数の復号化されたパラメータに復号化可能であるかどうかを判断することと、
前記暗号化された1つ以上のクライアント関連パラメータが、前記複数の復号化されたパラメータに復号化可能である場合に、前記複数の復号化されたパラメータに前記暗号化トークンが含まれるかどうかを判断することと、を含む、システム。
[適用例13]
適用例12のシステムであって、
前記暗号化された1つ以上のクライアント関連パラメータの少なくとも1つがヌル値を含む場合に、前記1つ以上のプロセッサは、さらに、前記データ検証が失敗に終わったと判断して前記クライアントデバイスに警告を送信するように構成される、システム。
[適用例14]
適用例12のシステムであって、
前記暗号化された1つ以上のクライアント関連パラメータが、複数の復号化されたパラメータに復号化可能でない場合に、前記1つ以上のプロセッサは、さらに、前記データ検証が失敗に終わったと判断して前記クライアントデバイスに警告を送信するように構成される、システム。
[適用例15]
適用例12のシステムであって、
前記複数の復号化されたパラメータに前記暗号化トークンが含まれない場合に、前記1つ以上のプロセッサは、さらに、前記データ検証が失敗に終わったと判断して前記クライアントデバイスに警告を送信するように構成される、システム。
[適用例16]
適用例12のシステムであって、
前記複数の復号化されたパラメータに前記暗号化トークンが含まれる場合に、前記1つ以上のプロセッサは、さらに、データ検証好結果メッセージを前記クライアントデバイスに送信するように構成される、システム。
[適用例17]
方法であって、
1つ以上のプロセッサを使用し、複数の意味単位を決定するためにスクリプトリソース・ソースデータセットを解析することと、
少なくとも一部には、前記複数の意味単位の値を複数の意味構造のそれぞれにマッピングすることに基づいて、ツリー構造化ソースデータを決定することと、
前記ツリー構造化ソースデータに適用するための難読化手順を選択することであって、前記選択された難読化手順は、1つ以上の難読化技術を含む、難読化手順の選択と、
少なくとも一部には、前記選択された難読化手順を前記ツリー構造化ソースデータに適用することによって、難読化されたツリー構造化ソースデータを決定することと、
前記難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセットに変換することと、
を備える方法。
[適用例18]
適用例17の方法であって、
前記選択された難読化手順は、前記1つ以上の難読化技術が実施される順序を含む、方法。
[適用例19]
適用例17の方法であって、
前記1つ以上の難読化技術は、変数名置換、関数名置換、数値置換、文順序置換、空白排除、無効コード挿入、およびコード暗号化のうちの1つ以上の難読化技術を含む、方法。
[適用例20]
適用例17の方法であって、
前記難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセットに変換することは、
前記難読化されたツリー構造化ソースデータをトラバースすることと、
少なくとも一部には、所定のツリー構造化意味構造定義ライブラリに含まれる意味構造に基づいて、前記難読化されたツリー構造化ソースデータに含まれる複数の意味構造を抽出することと、
前記複数の意味構造から、難読化された複数の意味単位を決定することと、を含む、方法。
[適用例21]
適用例17の方法であって、さらに、
クライアントデバイスからページリクエストを受信することと、
前記ページリクエストの受信に応えて、暗号化トークンを生成することと、
前記ページリクエストに関係付けられたウェブページデータに、前記暗号化トークンを含めることと、
前記暗号化トークンを含む前記ウェブページデータを送信することと、を備える方法。
[適用例22]
適用例21の方法であって、さらに、
スクリプトリソース・リクエストを受信することであって、前記スクリプトリソース・リクエストは、前記暗号化トークンを含む、スクリプトリソース・リクエストの受信と、
暗号化キーおよび復号化キーを生成することと、
暗号化技術を選択することであって、前記暗号化キーは、前記選択された暗号化技術に追加される、暗号化技術の選択と、
前記暗号化キーを含む前記選択された暗号化技術を実現するコンピュータコードを、前記スクリプトリソース・ソースデータセットに含めることと、を備える方法。
[適用例23]
適用例22の方法であって、
前記難読化されたスクリプトリソース・ソースデータセットは、前記クライアントデバイスにおいて1つ以上のクライアント関連パラメータを収集するように、および前記収集された1つ以上のクライアント関連パラメータを、前記選択された暗号化技術と、前記暗号化キーとを使用して暗号化するように構成される、方法。
[適用例24]
適用例23の方法であって、さらに、
検証リクエストを受信することであって、前記検証リクエストは、前記暗号化トークンと、前記暗号化された1つ以上のクライアント関連パラメータとを含む、検証リクエストの受信と、
前記暗号化トークンに関係付けられた前記復号化キーおよび復号化技術を決定することと、
前記復号化キーおよび前記復号化技術を使用して、前記暗号化された1つ以上のクライアント関連パラメータに対してデータ検証を実施することと、
前記データ検証の実施に続いて、前記暗号化トークンを暗号化トークンライブラリから削除し、前記暗号化キーに対応する暗号化キーを暗号化キーライブラリから削除することと、を備える方法。
[適用例25]
クライアントデバイスであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサに結合され、前記1つ以上のプロセッサに命令を提供するように構成された1つ以上のメモリと、を備え、
前記1つ以上のプロセッサは、
ページリクエストをサーバに送信することと、
前記サーバからウェブページデータを受信することであって、前記ウェブページデータは、暗号化トークンを含む、ウェブページデータの受信と、
スクリプトリソース・リクエストを前記サーバに送信することであって、前記ウェブページデータは、暗号化トークンを含む、スクリプトリソース・リクエストの送信と、
難読化されたスクリプトリソース・ソースデータセットを前記サーバから受信することであって、前記難読化されたスクリプトリソース・ソースデータセットは、暗号化技術および暗号化キーを含む、難読化されたスクリプトリソース・ソースデータセットの受信と、
前記難読化されたスクリプトリソース・ソースデータセットを実行することであって、前記難読化されたスクリプトリソース・ソースデータセットの実行は、1つ以上のクライアント関連パラメータを収集するように、前記暗号化技術と前記暗号化キーとを使用して前記1つ以上のクライアント関連パラメータを暗号化するように、および前記1つ以上の暗号化されたクライアント関連パラメータを前記サーバに送信するように構成される、前記難読化されたスクリプトリソース・ソースデータセットの実行と、
検証リクエストを前記サーバに送信することであって、前記検証リクエストは、前記暗号化トークンと、前記1つ以上の暗号化されたクライアント関連パラメータとを含む、検証リクエストの送信と、
データ検証結果を前記サーバから受信することと、を行うように構成される、クライアントデバイス。

Claims (16)

  1. システムであって、
    1つ以上のプロセッサと、
    前記1つ以上のプロセッサに結合され、前記1つ以上のプロセッサに命令を提供するように構成された1つ以上のメモリと、を備え、
    前記1つ以上のプロセッサは、
    クライアントデバイスからページリクエストを受信することと、
    前記ページリクエストの受信に応えて、暗号化トークンを生成することと、
    前記ページリクエストに関係付けられたウェブページデータに、前記暗号化トークンを含めることと、
    暗号化トークンを含む前記ウェブページデータを送信することと、
    スクリプトリソース・リクエストを受信することであって、前記スクリプトリソース・リクエストは、前記暗号化トークンを含む、スクリプトリソース・リクエストの受信と、
    暗号化キーおよび復号化キーを生成することと、
    暗号化技術を選択することであって、前記暗号化キーは、前記選択された暗号化技術に追加される、暗号化技術の選択と、
    前記暗号化キーを含む前記選択された暗号化技術を実現するコンピュータコードを、前記スクリプトリソース・ソースデータセットに含めることと、
    複数の意味単位を決定するために、前記スクリプトリソース・ソースデータセットを解析することと、
    少なくとも一部には、前記複数の意味単位の値を複数の意味構造のそれぞれにマッピングすることに基づいて、ツリー構造化ソースデータを決定することと、
    前記ツリー構造化ソースデータに適用するための難読化手順を選択することであって、前記選択された難読化手順は、1つ以上の難読化技術を含む、難読化手順の選択と、
    少なくとも一部には、前記選択された難読化手順を前記ツリー構造化ソースデータに適用することによって、難読化されたツリー構造化ソースデータを決定することと、
    前記難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセットに変換することであって、前記難読化されたスクリプトリソース・ソースデータセットは、前記クライアントデバイスにおいて1つ以上のクライアント関連パラメータを収集するように、および前記収集された1つ以上のクライアント関連パラメータを、前記選択された暗号化技術と、前記暗号化キーとを使用して暗号化するように構成される、前記難読化されたツリー構造化ソースデータの変換と、
    検証リクエストを受信することであって、前記検証リクエストは、前記暗号化トークンと、前記暗号化された1つ以上のクライアント関連パラメータとを含む、検証リクエストの受信と、
    前記暗号化トークンに関係付けられた前記復号化キーおよび復号化技術を決定することと、
    前記復号化キーおよび前記復号化技術を使用して、前記暗号化された1つ以上のクライアント関連パラメータに対してデータ検証を実施することと、
    前記データ検証の実施に続いて、前記暗号化トークンを暗号化トークンライブラリから削除し、前記暗号化キーに対応する暗号化キーを暗号化キーライブラリから削除することと、
    を行うように構成される、システム。
  2. 請求項1に記載のシステムであって、
    前記1つ以上のプロセッサは、さらに、前記複数の意味単位のそれぞれに対応する複数の意味構造を、所定のツリー構造化意味構造定義ライブラリから決定するように構成される、システム。
  3. 請求項1に記載のシステムであって、
    前記複数の意味単位を決定するために、スクリプトリソース・ソースデータセットを解析することは、コンパイルプロセスの一環として実施される、システム。
  4. 請求項1に記載のシステムであって、
    前記選択された難読化手順は、前記1つ以上の難読化技術が実施される順序を含む、システム。
  5. 請求項1に記載のシステムであって、
    前記1つ以上の難読化技術は、変数名置換、関数名置換、数値置換、文順序置換、空白排除、無効コード挿入、およびコード暗号化のうちの1つ以上の難読化技術を含む、システム。
  6. 請求項1に記載のシステムであって、
    前記難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセットに変換することは、逆コンパイルプロセスの一環として実施される、システム。
  7. 請求項1に記載のシステムであって、
    前記難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセットに変換することは、
    前記難読化されたツリー構造化ソースデータをトラバースすることと、
    少なくとも一部には、所定のツリー構造化意味構造定義ライブラリに含まれる意味構造に基づいて、前記難読化されたツリー構造化ソースデータに含まれる複数の意味構造を抽出することと、
    前記複数の意味構造から、難読化された複数の意味単位を決定することと、を含む、システム。
  8. 請求項に記載のシステムであって、
    前記復号化キーおよび前記復号化技術を使用して、前記暗号化された1つ以上のクライアント関連パラメータに対してデータ検証を実施することは、
    前記暗号化された1つ以上のクライアント関連パラメータのいずれかがヌル値を含むかどうかを判断することと、
    前記暗号化された1つ以上のクライアント関連パラメータのいずれもヌル値を含まない場合に、前記暗号化された1つ以上のクライアント関連パラメータが、前記復号化技術および前記復号化キーを使用して複数の復号化されたパラメータに復号化可能であるかどうかを判断することと、
    前記暗号化された1つ以上のクライアント関連パラメータが、前記複数の復号化されたパラメータに復号化可能である場合に、前記複数の復号化されたパラメータに前記暗号化トークンが含まれるかどうかを判断することと、を含む、システム。
  9. 請求項8に記載のシステムであって、
    前記暗号化された1つ以上のクライアント関連パラメータの少なくとも1つがヌル値を含む場合に、前記1つ以上のプロセッサは、さらに、前記データ検証が失敗に終わったと判断して前記クライアントデバイスに警告を送信するように構成される、システム。
  10. 請求項8に記載のシステムであって、
    前記暗号化された1つ以上のクライアント関連パラメータが、複数の復号化されたパラメータに復号化可能でない場合に、前記1つ以上のプロセッサは、さらに、前記データ検証が失敗に終わったと判断して前記クライアントデバイスに警告を送信するように構成される、システム。
  11. 請求項8に記載のシステムであって、
    前記複数の復号化されたパラメータに前記暗号化トークンが含まれない場合に、前記1つ以上のプロセッサは、さらに、前記データ検証が失敗に終わったと判断して前記クライアントデバイスに警告を送信するように構成される、システム。
  12. 請求項8に記載のシステムであって、
    前記複数の復号化されたパラメータに前記暗号化トークンが含まれる場合に、前記1つ以上のプロセッサは、さらに、データ検証好結果メッセージを前記クライアントデバイスに送信するように構成される、システム。
  13. 方法であって、
    クライアントデバイスからページリクエストを受信することと、
    前記ページリクエストの受信に応えて、暗号化トークンを生成することと、
    前記ページリクエストに関係付けられたウェブページデータに、前記暗号化トークンを含めることと、
    暗号化トークンを含む前記ウェブページデータを送信することと、
    スクリプトリソース・リクエストを受信することであって、前記スクリプトリソース・リクエストは、前記暗号化トークンを含む、スクリプトリソース・リクエストの受信と、
    暗号化キーおよび復号化キーを生成することと、
    暗号化技術を選択することであって、前記暗号化キーは、前記選択された暗号化技術に追加される、暗号化技術の選択と、
    前記暗号化キーを含む前記選択された暗号化技術を、コンピュータに実現させるためのコンピュータコードを、前記スクリプトリソース・ソースデータセットに含めることと、
    1つ以上のプロセッサを使用し、複数の意味単位を決定するために前記スクリプトリソース・ソースデータセットを解析することと、
    少なくとも一部には、前記複数の意味単位の値を複数の意味構造のそれぞれにマッピングすることに基づいて、ツリー構造化ソースデータを決定することと、
    前記ツリー構造化ソースデータに適用するための難読化手順を選択することであって、前記選択された難読化手順は、1つ以上の難読化技術を含む、難読化手順の選択と、
    複数の難読化手順を格納しているメモリから前記選択された難読化手順を読み出し、少なくとも一部には、前記選択された難読化手順を前記ツリー構造化ソースデータに適用することによって、難読化されたツリー構造化ソースデータを決定することと、
    前記難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセットに変換することであって、前記難読化されたスクリプトリソース・ソースデータセットは、前記クライアントデバイスにおいて1つ以上のクライアント関連パラメータを収集するように、および前記収集された1つ以上のクライアント関連パラメータを、前記選択された暗号化技術と、前記暗号化キーとを使用して暗号化するように構成される、前記難読化されたツリー構造化ソースデータの変換と、
    前記難読化されたスクリプトリソース・ソースデータセットを、通信手段を使用して、他のデバイスに送信することと、
    検証リクエストを受信することであって、前記検証リクエストは、前記暗号化トークンと、前記暗号化された1つ以上のクライアント関連パラメータとを含む、検証リクエストの受信と、
    前記暗号化トークンに関係付けられた前記復号化キーおよび復号化技術を決定することと、
    前記復号化キーおよび前記復号化技術を使用して、前記暗号化された1つ以上のクライアント関連パラメータに対してデータ検証を実施することと、
    前記データ検証の実施に続いて、前記暗号化トークンを暗号化トークンライブラリから削除し、前記暗号化キーに対応する暗号化キーを暗号化キーライブラリから削除することと、
    を備える方法。
  14. 請求項13に記載の方法であって、
    前記選択された難読化手順は、前記1つ以上の難読化技術が実施される順序を含む、方法。
  15. 請求項13に記載の方法であって、
    前記1つ以上の難読化技術は、変数名置換、関数名置換、数値置換、文順序置換、空白排除、無効コード挿入、およびコード暗号化のうちの1つ以上の難読化技術を含む、方法。
  16. 請求項13に記載の方法であって、
    前記難読化されたツリー構造化ソースデータを、難読化されたスクリプトリソース・ソースデータセットに変換することは、
    前記難読化されたツリー構造化ソースデータをトラバースすることと、
    少なくとも一部には、所定のツリー構造化意味構造定義ライブラリに含まれる意味構造に基づいて、前記難読化されたツリー構造化ソースデータに含まれる複数の意味構造を抽出することと、
    前記複数の意味構造から、難読化された複数の意味単位を決定することと、を含む、方法。
JP2016515006A 2013-05-20 2014-05-20 データの保護 Active JP6257754B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN201310186287.7 2013-05-20
CN201310186287.7A CN104166822B (zh) 2013-05-20 2013-05-20 一种数据保护的方法和装置
US14/280,145 US9836612B2 (en) 2013-05-20 2014-05-16 Protecting data
US14/280,145 2014-05-16
PCT/US2014/038746 WO2014189900A1 (en) 2013-05-20 2014-05-20 Protecting data

Publications (2)

Publication Number Publication Date
JP2016521875A JP2016521875A (ja) 2016-07-25
JP6257754B2 true JP6257754B2 (ja) 2018-01-10

Family

ID=51896782

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016515006A Active JP6257754B2 (ja) 2013-05-20 2014-05-20 データの保護

Country Status (7)

Country Link
US (1) US9836612B2 (ja)
EP (1) EP3000068B1 (ja)
JP (1) JP6257754B2 (ja)
CN (1) CN104166822B (ja)
HK (1) HK1202666A1 (ja)
TW (1) TWI598765B (ja)
WO (1) WO2014189900A1 (ja)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014191968A1 (en) * 2013-05-30 2014-12-04 Auditmark S.A. Web application protection
EP3213457A4 (en) * 2014-10-27 2018-06-13 Hewlett-Packard Enterprise Development LP Key splitting
US10503909B2 (en) 2014-10-31 2019-12-10 Hewlett Packard Enterprise Development Lp System and method for vulnerability remediation verification
JP6121981B2 (ja) * 2014-12-18 2017-04-26 ファナック株式会社 加工時に使用した変数値を埋め込んだ変数確認用ncプログラムの作成機能を備えた数値制御装置
WO2016108902A1 (en) * 2014-12-31 2016-07-07 Hewlett Packard Enterprise Development Lp Enterprise service bus logging
US20160328539A1 (en) * 2015-05-05 2016-11-10 Nxp B.V. Obscuring Software Code With Split Variables
JP6481515B2 (ja) * 2015-05-29 2019-03-13 富士通株式会社 情報処理装置、コンパイル方法、及びコンパイラプログラム
EP3274902B1 (en) * 2015-08-14 2021-03-24 Hewlett-Packard Enterprise Development LP Modification of data elements using a semantic relationship
TWI603276B (zh) * 2015-11-18 2017-10-21 財團法人資訊工業策進會 網頁內容顯示系統及方法
CN106897211A (zh) * 2015-12-21 2017-06-27 阿里巴巴集团控股有限公司 针对混淆脚本语言的定位方法和系统
US20170187690A1 (en) * 2015-12-24 2017-06-29 Mcafee, Inc. Mitigating bot scans of sensitive communications
CN107180168A (zh) * 2016-03-10 2017-09-19 阿里巴巴集团控股有限公司 文件加载、生成方法和装置,以及智能终端
CN105897415B (zh) * 2016-06-06 2018-11-09 腾讯科技(深圳)有限公司 一种提升兼容性的数字签名生成方法及系统
CN106331752A (zh) * 2016-08-31 2017-01-11 杭州当虹科技有限公司 一种流媒体视频文件的保护方法
US10380355B2 (en) * 2017-03-23 2019-08-13 Microsoft Technology Licensing, Llc Obfuscation of user content in structured user data files
US10671753B2 (en) 2017-03-23 2020-06-02 Microsoft Technology Licensing, Llc Sensitive data loss protection for structured user content viewed in user applications
US10410014B2 (en) 2017-03-23 2019-09-10 Microsoft Technology Licensing, Llc Configurable annotations for privacy-sensitive user content
CN107085677A (zh) * 2017-03-29 2017-08-22 武汉斗鱼网络科技有限公司 一种Flash中防止代码被破解的方法及系统
CN109033764B (zh) * 2017-06-09 2023-04-11 腾讯科技(深圳)有限公司 反混淆处理方法及终端、计算机设备
US10977221B2 (en) * 2017-10-20 2021-04-13 Hewlett Packard Enterprise Development Lp Encoding of data formatted in human-readable text according to schema into binary
CN107908392B (zh) * 2017-11-13 2020-12-22 平安科技(深圳)有限公司 数据采集工具包定制方法、装置、终端和存储介质
CN109861944A (zh) * 2017-11-22 2019-06-07 浙江智贝信息科技有限公司 一种分布式信息安全处理及交互方法及其交互系统
CN109858241B (zh) * 2017-11-22 2021-12-17 浙江智贝信息科技有限公司 一种单设备代码安全执行和交互方法及其交互系统
CN109861945A (zh) * 2017-11-22 2019-06-07 浙江智贝信息科技有限公司 一种分布式代码运行及交互安全方法及其系统
CN108363911B (zh) * 2018-02-11 2021-10-29 西安四叶草信息技术有限公司 一种Python脚本混淆、水印的方法及装置
KR102109864B1 (ko) * 2018-02-22 2020-05-12 주식회사 알파비트 문서객체모델 레벨의 키 입력 암호화 장치 및 방법
CN108268178B (zh) * 2018-02-27 2021-07-13 Tcl移动通信科技(宁波)有限公司 移动终端触摸屏坐标输出控制、移动终端及存储介质
CN108683627B (zh) * 2018-03-23 2020-12-29 深圳市超算科技开发有限公司 一种物联网节点间通信加密方法及系统
CN108471423B (zh) * 2018-04-02 2021-03-09 北京奇艺世纪科技有限公司 一种私钥的获取方法及系统
CN108846265B (zh) * 2018-04-18 2021-07-30 北京奇虎科技有限公司 一种程序加固方法及装置
CN110196718B (zh) * 2018-05-10 2023-07-25 腾讯科技(深圳)有限公司 脚本混淆方法
CN108829396B (zh) * 2018-06-15 2022-02-01 腾讯科技(深圳)有限公司 脚本编译的方法、脚本执行的方法、相关装置及系统
CN109145535A (zh) * 2018-08-13 2019-01-04 阿里巴巴集团控股有限公司 一种前端页面提供方法及装置
CN109344575B (zh) * 2018-08-17 2022-08-26 北京奇虎科技有限公司 Lua脚本文件处理方法、装置及计算设备
CN109450906A (zh) * 2018-11-20 2019-03-08 杭州安恒信息技术股份有限公司 基于动态字符集混淆数据的方法和装置
CN109711118A (zh) * 2018-12-29 2019-05-03 上海上讯信息技术股份有限公司 一种基于插件化的iOS安全编译器及安全编译方法
US11095667B2 (en) 2019-02-14 2021-08-17 Forcepoint Llc Session-based recording of association of activities
CN109918917B (zh) * 2019-03-19 2021-06-08 北京智游网安科技有限公司 防止h5源码泄漏的方法、计算机设备和存储介质
US11250169B2 (en) 2019-05-02 2022-02-15 Bank Of America Corporation System for real-time authenticated obfuscation of electronic data
CN110300121B (zh) * 2019-07-23 2021-12-07 上海易点时空网络有限公司 基于全双工通讯的数据处理方法及装置
CN110555291B (zh) * 2019-08-06 2021-08-27 苏宁云计算有限公司 网页脚本代码保护方法及装置
US11086991B2 (en) * 2019-08-07 2021-08-10 Advanced New Technologies Co., Ltd. Method and system for active risk control based on intelligent interaction
CN112804184B (zh) * 2019-11-13 2023-10-10 阿里巴巴集团控股有限公司 数据混淆方法、装置及设备
US11550548B2 (en) 2020-03-31 2023-01-10 Arm Limited Autonomous pseudo-random seed generator for computing devices
US11610039B2 (en) * 2020-03-31 2023-03-21 Arm Limited Creating and/or enhancing hardware obscurity via randomization points
US11748460B2 (en) * 2020-04-27 2023-09-05 Imperva, Inc. Procedural code generation for challenge code
CN112035857B (zh) * 2020-08-26 2024-03-19 深圳市百富智能新技术有限公司 数据保护方法、装置、设备及介质
CN113268736A (zh) * 2021-06-24 2021-08-17 深圳平安智汇企业信息管理有限公司 一种信息处理方法、装置及电子设备
CN115085974A (zh) * 2022-05-20 2022-09-20 武汉虹旭信息技术有限责任公司 流量混淆方法及装置
US20240192870A1 (en) * 2022-12-12 2024-06-13 Maxlinear, Inc. Data transform acceleration
CN115935302B (zh) * 2022-12-13 2023-09-15 深圳市探鸽智能科技有限公司 安卓安装包的生成方法和装置
WO2024158426A1 (en) * 2023-01-24 2024-08-02 Siemens Industry Software Inc. Circuit design data obfuscation
CN116305131B (zh) * 2023-05-20 2023-08-11 北京长亭科技有限公司 脚本静态去混淆方法及系统
CN116405210B (zh) * 2023-05-29 2023-08-15 中国科学院大学 网络报文标签混淆方法、装置和电子设备
CN117235814B (zh) * 2023-11-16 2024-01-26 贵州华谊联盛科技有限公司 一种含有时间序列关联混淆数据的数据处理方法及装置

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999001815A1 (en) * 1997-06-09 1999-01-14 Intertrust, Incorporated Obfuscation techniques for enhancing software security
US6829614B2 (en) 1999-09-30 2004-12-07 Nec Corporation Scrambling method of the data files
US7065652B1 (en) 2000-06-21 2006-06-20 Aladdin Knowledge Systems, Ltd. System for obfuscating computer code upon disassembly
JP3766367B2 (ja) 2002-10-18 2006-04-12 株式会社エヌ・ティ・ティ・ドコモ 情報配信方法
DE10316951A1 (de) * 2003-04-12 2004-10-21 Daimlerchrysler Ag Verfahren zur Überprüfung der Datenintegrität von Software in Steuergeräten
KR100568228B1 (ko) * 2003-05-20 2006-04-07 삼성전자주식회사 고유번호를 이용한 프로그램 탬퍼 방지 방법과 난독처리된 프로그램 업그레이드 방법, 상기 방법을 위한 장치
US7587616B2 (en) * 2005-02-25 2009-09-08 Microsoft Corporation System and method of iterative code obfuscation
US7620987B2 (en) * 2005-08-12 2009-11-17 Microsoft Corporation Obfuscating computer code to prevent an attack
US20070299928A1 (en) * 2006-06-22 2007-12-27 Pooja Kohli Maintaining sessions using cookie updation
US7805608B2 (en) * 2006-11-03 2010-09-28 Yahoo! Inc. User privacy through one-sided cookies
US20090132419A1 (en) 2007-11-15 2009-05-21 Garland Grammer Obfuscating sensitive data while preserving data usability
JP5395372B2 (ja) * 2008-06-19 2014-01-22 株式会社東芝 通信装置、鍵サーバ及びデータ
KR101555083B1 (ko) * 2008-11-11 2015-09-22 인터내셔널 비지네스 머신즈 코포레이션 제공 장치, 시스템, 서버 장치, 프로그램 및 방법
CN101807239A (zh) * 2010-03-29 2010-08-18 山东高效能服务器和存储研究院 一种防止源代码反编译的方法
CN101986326A (zh) * 2010-12-01 2011-03-16 浙江核新同花顺网络信息股份有限公司 保护软件安全的方法及装置
US8806223B2 (en) 2011-05-03 2014-08-12 Douglas Norman Crowe System and method for management of encrypted data
CA2840094C (en) 2011-06-21 2016-10-18 The Nielsen Company (Us), Llc Methods and apparatus to measure exposure to streaming media
JP2013061843A (ja) 2011-09-14 2013-04-04 Fujifilm Corp コンピュータ・ソフトウエア解析システムならびにクライアント・コンピュータ,その動作制御方法およびその動作プログラム
CN104040933B (zh) * 2011-09-30 2017-06-13 贝宝公司 源自客户端的信息的差异客户端侧加密
JP5882683B2 (ja) * 2011-11-02 2016-03-09 キヤノン株式会社 情報処理装置およびその方法
US8914859B2 (en) 2011-11-07 2014-12-16 International Business Machines Corporation Managing the progressive legible obfuscation and de-obfuscation of public and quasi-public broadcast messages
WO2013091709A1 (en) 2011-12-22 2013-06-27 Fundació Privada Barcelona Digital Centre Tecnologic Method and apparatus for real-time dynamic transformation of the code of a web document
US8910297B2 (en) 2012-01-05 2014-12-09 Vmware, Inc. Securing user data in cloud computing environments
US9100382B2 (en) * 2012-03-20 2015-08-04 Qualcomm Incorporated Network security configuration using short-range wireless communication
JP2014186905A (ja) 2013-03-25 2014-10-02 Honda Motor Co Ltd 燃料電池スタック

Also Published As

Publication number Publication date
CN104166822A (zh) 2014-11-26
TWI598765B (zh) 2017-09-11
EP3000068B1 (en) 2019-11-20
CN104166822B (zh) 2017-10-13
US9836612B2 (en) 2017-12-05
US20140344569A1 (en) 2014-11-20
WO2014189900A1 (en) 2014-11-27
HK1202666A1 (en) 2015-10-02
JP2016521875A (ja) 2016-07-25
EP3000068A1 (en) 2016-03-30
TW201445355A (zh) 2014-12-01

Similar Documents

Publication Publication Date Title
JP6257754B2 (ja) データの保護
CN108595989B (zh) 一种iOS下移动APP安全防护系统及方法
US10409966B2 (en) Optimizing and protecting software
US20170116410A1 (en) Software protection
CN112131564B (zh) 加密数据通信方法、装置、设备以及介质
CN113010856A (zh) 一种动态非对称加解密的JavaScript代码混淆方法与系统
CN103227786A (zh) 一种网站登录信息填入方法及装置
CN108319822B (zh) 一种保护网页代码的方法、存储介质、电子设备和系统
CN114547558B (zh) 授权方法、授权控制方法及装置、设备和介质
KR101452299B1 (ko) 무결성이 보장되는 프로그램 코드를 이용한 보안 방법 및 서버
CN109543366A (zh) 一种源代码加密方法及其装置和系统
CN117093964A (zh) 一种源代码的加密方法、装置、存储介质及电子设备
CN112597453B (zh) 程序代码加密解密方法和装置
CN115883078A (zh) 文件加密方法、文件解密方法、装置、设备及存储介质
Gautam et al. A novel software protection approach for code obfuscation to enhance software security
EP3876119A1 (en) Method for protecting a data in a software application
CN108427559B (zh) 一种脚本文件生成和调用方法以及装置
JP3970856B2 (ja) プログラム難読化装置、プログラム配布システム、コンピュータプログラム
Shin et al. An Investigation of PSA Certified
CN111291333A (zh) 一种Java应用程序加密方法及装置
CN115378601A (zh) 网页url加密、解密方法和装置、以及存储介质和电子设备
CN118627090A (zh) 可执行文件的文件生成方法和文件运行方法
CN115221478A (zh) 接口签名加密方法、装置、可读存储介质及电子设备
Knöchel et al. Text Steganography Methods and their Influence in Malware: A Comprehensive Overview and Evaluation
CN118656855A (zh) 数据处理方法、装置、电子设备、存储介质和程序产品

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171027

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20171107

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171205

R150 Certificate of patent or registration of utility model

Ref document number: 6257754

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250