(57)【要約】  本出願は、リパッケージング対策のための方法および装置を提供する。本方法は、インストールパッケージ内のターゲットファイルを実施し、かつインストールパッケージ内の安全な動的ライブラリをロードするステップと、ターゲットファイル内のコードに基づいて、すなわちターゲットファイル内に埋め込まれたデジタル透かし情報および安全な動的ライブラリ内に記憶された検証情報を取得するステップと、デジタル透かし情報および検証情報に基づいてインストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証するステップとを実行するステップとを含む。本出願におけるインストールパッケージは検証コードを含むので、オペレーティングシステムがどれほど改変されようとも、システム内のインストールパッケージを検証するプロセスを回避することはできない。上記によって、インストールパッケージがリパッケージされているかどうかを検証するために、システムがインストールパッケージの自己署名を検証するときに、インストールパッケージがリパッケージされているかどうかを効率的に検証することができないことがあるという既存の問題が緩和される。以下の既存の問題、すなわちインストールパッケージがリパッケージされているかどうかを検証するためにシステムがインストールパッケージのハッシュ値を計算するときに検証効率が低下することがあるという問題もまた緩和される。
2019535087.tif 000002
【特許請求の範囲】
【請求項１】
リパッケージング対策のための方法であって、
インストールパッケージ内のターゲットファイルを実施し、かつ前記インストールパッケージ内の安全な動的ライブラリをロードするステップと、
前記ターゲットファイル内のコードに基づいて、
前記ターゲットファイル内に埋め込まれたデジタル透かし情報および前記安全な動的ライブラリ内に記憶された検証情報を取得するステップと、
前記デジタル透かし情報および前記検証情報に基づいて前記インストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証するステップと
を実行するステップと
を含む、方法。
【請求項２】
前記ターゲットファイルが、所定のコードがコンパイルされた後に取得されたターゲットファイルであり、
前記デジタル透かし情報が、前記コンパイルされたターゲットファイルの終端に埋め込まれる、
請求項1に記載の方法。
【請求項３】
前記ターゲットファイル内に埋め込まれたデジタル透かし情報を取得する前記ステップが、
前記ターゲットファイルのオリジナルの長さに基づいて前記ターゲットファイル内の前記デジタル透かし情報の開始アドレスを決定するステップであって、前記オリジナルの長さが、前記デジタル透かし情報が埋め込まれる前の前記ターゲットファイルの長さである、ステップと、
前記開始アドレスに基づいて前記ターゲットファイルから前記デジタル透かし情報を取得するステップと
を含む、請求項2に記載の方法。
【請求項４】
前記デジタル透かし情報および前記検証情報に基づいて前記インストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証する前記ステップが、
前記デジタル透かし情報が、前記検証情報と一致するかどうかを検証するステップと、
前記デジタル透かし情報が前記検証情報と一致する場合に前記インストールパッケージがオリジナルのインストールパッケージであると判定するステップか、または
前記デジタル透かし情報が前記検証情報と一致しない場合に前記インストールパッケージがリパッケージされたインストールパッケージであると判定するステップと
を含む、請求項1に記載の方法。
【請求項５】
前記デジタル透かし情報および前記検証情報に基づいて前記インストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証する前記ステップが、
前記デジタル透かし情報が命令であるときに動作結果を取得するために前記命令に基づいて動作を実行するステップと、
前記動作結果が前記検証情報と一致するかどうかを検証するステップと、
前記動作結果が前記検証情報と一致する場合に前記インストールパッケージがオリジナルのインストールパッケージであると判定するステップか、または
前記動作結果が前記検証情報と一致しない場合に前記インストールパッケージがリパッケージされたインストールパッケージであると判定するステップと
を含む、請求項1に記載の方法。
【請求項６】
前記デジタル透かし情報および前記検証情報に基づいて前記インストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証する前記ステップが、
前記デジタル透かし情報が命令であるときに動作結果を取得するために前記命令に基づいて動作を実行するステップと、
前記動作結果が前記検証情報内の動作結果と一致するかどうかを検証し、前記命令が前記検証情報内の命令と一致するかどうかを検証するステップと、
前記動作結果が前記検証情報内の前記動作結果と一致しかつ前記命令が前記検証情報内の前記命令と一致する場合に前記インストールパッケージがオリジナルのインストールパッケージであると判定するステップか、または
そうでない場合に前記インストールパッケージがリパッケージされたインストールパッケージであると判定するステップと
を含む、請求項1に記載の方法。
【請求項７】
前記方法がANDROID(登録商標)オペレーティングシステムに適用され、
前記ターゲットファイルがdexファイルであり、
前記安全な動的ライブラリがsoライブラリである、請求項1から6のいずれか一項に記載の方法。
【請求項８】
リパッケージング対策のための装置であって、
実施ユニットと実行ユニットとを備え、
前記実施ユニットが、インストールパッケージ内のターゲットファイルを実施して前記インストールパッケージ内の安全な動的ライブラリをロードするように構成され、
前記実行ユニットが、前記ターゲットファイル内のコードに基づいて、すなわち
前記ターゲットファイル内に埋め込まれたデジタル透かし情報および前記安全な動的ライブラリ内に記憶された検証情報を取得することと、
前記デジタル透かし情報および前記検証情報に基づいて前記インストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証することと
を実行するように構成される、装置。
【請求項９】
前記ターゲットファイルが、所定のコードがコンパイルされた後に取得されたターゲットファイルであり、
前記デジタル透かし情報が、前記コンパイルされたターゲットファイルの終端に埋め込まれる、請求項8に記載の装置。
【請求項１０】
前記ターゲットファイル内に埋め込まれたデジタル透かし情報を前記取得することが、
前記ターゲットファイルのオリジナルの長さに基づいて前記ターゲットファイル内の前記デジタル透かし情報の開始アドレスを決定することであって、前記オリジナルの長さが、前記デジタル透かし情報が埋め込まれる前の前記ターゲットファイルの長さである、決定することと、
前記開始アドレスに基づいて前記ターゲットファイルから前記デジタル透かし情報を取得することと
を含む、請求項9に記載の装置。
【請求項１１】
前記デジタル透かし情報および前記検証情報に基づいて前記インストールパッケージがリパッケージされたインストールパッケージであるかどうかを前記検証することが、
前記デジタル透かし情報が、前記検証情報と一致するかどうかを検証することと、
前記デジタル透かし情報が前記検証情報と一致する場合に前記インストールパッケージがオリジナルのインストールパッケージであると判定することか、または
前記デジタル透かし情報が前記検証情報と一致しない場合に前記インストールパッケージがリパッケージされたインストールパッケージであると判定することと
を含む、請求項8に記載の装置。
【請求項１２】
前記デジタル透かし情報および前記検証情報に基づいて前記インストールパッケージがリパッケージされたインストールパッケージであるかどうかを前記検証することが、
前記デジタル透かし情報が命令であるときに動作結果を取得するために前記命令に基づいて動作を実行することと、
前記動作結果が前記検証情報と一致するかどうかを検証することと、
前記動作結果が前記検証情報と一致する場合に前記インストールパッケージがオリジナルのインストールパッケージであると判定することか、または
前記動作結果が前記検証情報と一致しない場合に前記インストールパッケージがリパッケージされたインストールパッケージであると判定することと
を含む、請求項8に記載の装置。
【請求項１３】
前記デジタル透かし情報および前記検証情報に基づいて前記インストールパッケージがリパッケージされたインストールパッケージであるかどうかを前記検証することが、
前記デジタル透かし情報が命令であるときに動作結果を取得するために前記命令に基づいて動作を実行することと、
前記動作結果が前記検証情報内の動作結果と一致するかどうかを検証し、前記命令が前記検証情報内の命令と一致するかどうかを検証することと、
前記動作結果が前記検証情報内の前記動作結果と一致しかつ前記命令が前記検証情報内の前記命令と一致する場合に前記インストールパッケージがオリジナルのインストールパッケージであると判定することか、または
そうでない場合に前記インストールパッケージがリパッケージされたインストールパッケージであると判定することと
を含む、請求項8に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、コンピュータ技術の分野に関し、詳細には、リパッケージング対策のための方法および装置に関する。
【背景技術】
【０００２】
現在、多くの悪意のあるアプリケーションソフトが、オリジナルのインストールパッケージ内に広告を埋め込み、マルウェアを自動的にダウンロードしてルートプログラムなどを実施するために、リパッケージングを介してオリジナルのインストールパッケージを改変している。
【０００３】
リパッケージングプロセスを図1に示す。最初に、オリジナルのインストールパッケージは、オリジナルのインストールパッケージのソースコードを取得するために逆コンパイルされる。次いで、ユーザは、ソースコードを改変して、たとえば別のコードを追加し、追加されたコードは、広告であってもよいか、またはマルウェアなどを自動的にダウンロードするためのプログラムであってもよい。最終的に、改変されたファイルは、リパッケージされたインストールパッケージを取得するためにリパッケージされる。
【０００４】
ソースコードは、前のリパッケージングプロセスにおいて改変されるので、リパッケージされたインストールパッケージの自己署名(self-signature)は、もはやオリジナルのインストールパッケージの自己署名ではない。したがって、既存の技術において、リパッケージング対策のための方法は、インストールパッケージがリパッケージされているかどうかを判断するために、インストールパッケージの自己署名を検査することであってもよい。特定の検証プロセスを図2に示す。
【０００５】
特定のインストールパッケージがインストールされると、インストールパッケージ内のターゲットファイルが実施され、インストールパッケージ内の安全な動的ライブラリがロードされる。一般に、情報セキュリティを確保するために、いくつかの検証情報が、安全な動的ライブラリ内に記憶される。検証情報は、インストールパッケージに対応するオリジナルのインストールパッケージの自己署名を含む。オペレーティングシステムは、インストールパッケージの自己署名を検証するためのインターフェースを提供するので、インストールパッケージの自己署名をターゲットファイルから取得し、オリジナルのインストールパッケージの自己署名を安全な動的ライブラリから取得した後、オペレーティングシステムは、インストールパッケージの自己署名がオリジナルのインストールパッケージの自己署名と一致するかどうかを検証する。それらが一致する場合、オペレーティングシステムは、インストールパッケージはオリジナルのインストールパッケージであると判定する。それらが一致しない場合、オペレーティングシステムは、インストールパッケージはリパッケージされたインストールパッケージであると判定する。
【０００６】
既存の技術では、リパッケージング対策のための別の方法は、下記であってもよい。オペレーティングシステムが、今回インストールされたインストールパッケージのハッシュ(ハッシュ値)を計算してハッシュ値を検査し、すなわちそのハッシュ値をオリジナルのインストールパッケージのハッシュ値と比較し、それらが一致する場合、インストールパッケージはオリジナルのインストールパッケージであると判定し、それらが一致しない場合、インストールパッケージはリパッケージされたインストールパッケージであると判定する。
【０００７】
既存の技術におけるリパッケージング対策のための上記2つの方法は、リパッケージングを効果的に防止するために、完全に信頼できるオペレーティングシステム内で使用されなければならない。しかしながら、多くの既存のオペレーティングシステムはオープンソースであるので、ユーザはオリジナルのオペレーティングシステムを改変することができ、それによりオペレーティングシステムは、インストールパッケージの自己署名を検査せず、またはインストールパッケージのハッシュ値を検査しない。そのため、ユーザによってダウンロードされたインストールパッケージがリパッケージされたインストールパッケージであるか否かにかかわらず、オペレーティングシステムは、デフォルトで、インストールパッケージはオリジナルのインストールパッケージであるとみなす。
【０００８】
加えて、リパッケージング対策のための第2の方法では、インストールされるべきインストールパッケージが大きいメモリを占有することがある。そのため、オペレーティングシステムがインストールパッケージのハッシュ値を計算するとき、オペレーティングシステムの検証効率が影響を受ける。
【発明の概要】
【課題を解決するための手段】
【０００９】
本出願は、システムがインストールパッケージの自己署名を検査するときに、インストールパッケージがリパッケージされているかどうかを効率的に検証することができないことがあるという既存の問題を緩和するため、およびインストールパッケージがリパッケージされているかどうかを検査するためにシステムがインストールパッケージのハッシュ値を計算するときに、インストールパッケージが大きいメモリを使用しているので検証効率が低いことがあるという既存の問題を緩和するために、リパッケージング対策のための方法および装置を提供する。
【００１０】
本出願はリパッケージング対策のための方法を提供し、本方法は、インストールパッケージ内のターゲットファイルを実施してインストールパッケージ内の安全な動的ライブラリをロードするステップと、ターゲットファイル内のコードに基づいて、ターゲットファイル内に埋め込まれたデジタル透かし情報および安全な動的ライブラリ内に記憶された検証情報を取得するステップと、デジタル透かし情報および検証情報に基づいてインストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証するステップとを実行するステップとを含む。
【００１１】
同様に、本出願はリパッケージング対策のための装置をさらに提供し、装置は実施ユニットと実行ユニットとを含み、実施ユニットは、インストールパッケージ内のターゲットファイルを実施してインストールパッケージ内の安全な動的ライブラリをロードするように構成され、実行ユニットは、ターゲットファイル内のコードに基づいて、ターゲットファイル内に埋め込まれたデジタル透かし情報および安全な動的ライブラリ内に記憶された検証情報を取得することと、デジタル透かし情報および検証情報に基づいてインストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証することを実行するように構成される。
【００１２】
本出願で提供されるリパッケージング対策のための方法では、インストールパッケージは検証コードを含む。インストールパッケージがインストールされると、オペレーティングシステムは、ターゲットファイル内にデジタル透かし情報をコードに基づいて取得し、インストールパッケージ内の安全な動的ライブラリ内の検証情報を取得して、デジタル透かし情報および検証情報に基づいてインストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証する。本出願で提供されるリパッケージング対策のための方法を使用することによって、以下の有益な効果が達成される。
【００１３】
1.本出願では、インストールパッケージは、インストールパッケージがリパッケージされているかどうかを検証するために使用されるコードを含む。したがって、オペレーティングシステムがどれほど改変されようとも、インストールパッケージを検証するプロセスを回避することはできない。上記によって、インストールパッケージがリパッケージされているかどうかを検証するためにインストールパッケージの自己署名を検査するとき、インストールパッケージの自己署名を検証するプロセスをシステムが省略することがあるのでインストールパッケージがリパッケージされているかどうかを効率的に検証することができないという既存の問題が緩和される。
【００１４】
2.本出願では、インストールパッケージがリパッケージされているかどうかが、デジタル透かし情報および検証情報に基づいて検証される。したがって、インストールパッケージのハッシュ値を計算することによってインストールパッケージがリパッケージされているかどうかを検証する既存の技術における方法と比較して、本出願は、インストールパッケージがリパッケージされているかどうかの検証においてより高い効率を有する。
【００１５】
本明細書で説明する添付の図面は、本出願に対してより深い理解を与え、本出願の一部を構成するために使用される。本出願および説明の概略的実装形態は本出願を説明するために使用され、本出願を不適切に制限するものではない。
【図面の簡単な説明】
【００１６】
【図１】既存の技術における、リパッケージング方法を示す概略的フローチャートである。
【図２】既存の技術における、リパッケージング対策のための方法を示す概略的フローチャートである。
【図３】本出願の実装形態による、リパッケージング対策のための方法を示す概略的フローチャートである。
【図４】本出願の実装形態による、デジタル透かし情報をターゲットファイル内に埋め込む概略的フローチャートである。
【図５】本出願の実装形態による、リパッケージング対策のための別の方法を示す概略的フローチャートである。
【図６】本出願の実装形態による、デジタル透かし情報を識別するための方法を示す概略的フローチャートである。
【図７】本出願の実装形態による、リパッケージング対策のためのさらに別の方法を示す概略的フローチャートである。
【図８】本出願の実装形態による、リパッケージング対策のためのさらに別の方法を示す概略的フローチャートである。
【図９】本出願の実装形態による、リパッケージング対策のための装置を示す概略的構造図である。
【発明を実施するための形態】
【００１７】
本出願の目的、技術的解決策、および利点をより明確にするために、以下において本出願の特定の実装形態および対応する添付の図面を参照しながら本出願の技術的解決策を明確にかつ包括的に説明する。明らかに、説明する実装形態は、本出願の実装形態の全部ではなく一部にすぎない。本出願における実装形態に基づいて創造のための労力を伴わずに当業者によって取得されるすべての他の実装形態は、本出願の保護範囲の中に入る。
【００１８】
以下において、添付の図面を参照しながら本出願の実装形態内で提供される技術的解決策を詳細に説明する。
【００１９】
本出願は、システムがインストールパッケージの自己署名を検査するときに、インストールパッケージがリパッケージされているかどうかを効率的に検証することができないことがあるという既存の問題を緩和するため、およびインストールパッケージがリパッケージされているかどうかを検査するためにシステムがインストールパッケージのハッシュ値を計算するときに、インストールパッケージが大きいメモリを占有するので検証効率が低いことがあるという既存の問題を緩和するために、リパッケージング対策のための方法を提供する。本方法のプロセスが図3に示され、以下のステップを含む。
【００２０】
ステップ301:インストールパッケージ内のターゲットファイルを実施し、インストールパッケージ内の安全な動的ライブラリをロードする。
【００２１】
本ステップでは、ユーザが特定のインストールパッケージをダウンロードしてインストールパッケージをインストールすると、オペレーティングシステムはインストールパッケージ内のターゲットファイルを実施し、インストールパッケージ内の安全な動的ライブラリを同時にロードする。ターゲットファイルは所定のコードに基づいてコンパイルされたターゲットファイルであり、デジタル透かし情報はコンパイルされたターゲットファイル内に埋め込まれる。デジタル透かし情報は、文字列、命令などであってもよい。安全な動的ライブラリは、インストールパッケージについての検証情報を記憶し、検証情報は、インストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証するために使用される。
【００２２】
デジタル透かし情報をターゲットファイル内に埋め込む前述の方法では、デジタル透かし情報は、ターゲットファイルの終端に埋め込まれてもよく、またはデジタル透かし情報は、ターゲットファイルの別のロケーションに埋め込まれてもよい。
【００２３】
オペレーティングシステムは、ANDROID(登録商標)システムであってもよく、ターゲットファイルはdexファイルであってもよい。dexファイルは、ANDROIDシステム内の実行ファイルであり、Java(登録商標)コードを使用することによって記述される。安全な動的ライブラリは、共有オブジェクト(so)ライブラリであってもよく、c/c++を使用することによって記述される。一般に、soライブラリは、いくつかのセキュリティ情報、たとえば検証情報を記憶する。実行ファイルがロードまたは実施されると、soライブラリは、オペレーティングシステムによってロードされる。または、オペレーティングシステムはWINDOWS(登録商標)であってもよく、ターゲットファイルはexeファイルであってもよく、安全な動的ライブラリはdllライブラリなどである。オペレーティングシステム、ターゲットファイル、および安全な動的ライブラリは、本明細書では限定されない。
【００２４】
図4に示すように、ターゲットファイルがdexファイルである場合、デジタル透かし情報がターゲットファイル内に埋め込まれているとき、ターゲットファイルのデータの完全性および正確さを確保するために、ターゲットファイルヘッダのチェックサム、署名、ファイルサイズなどの対応する値が、デジタル透かし情報に基づいて再計算される。
【００２５】
インストールパッケージがリパッケージされたインストールパッケージである場合、ユーザがオリジナルのインストールパッケージをリパッケージするとき、ユーザはオリジナルのインストールパッケージ内のオリジナルファイル内のコードを改変することができるとしても、オリジナルのインストールパッケージの安全な動的ライブラリ内の検証情報は容易には改変され得ないことに留意することは価値がある。したがって、インストールパッケージの安全な動的ライブラリは、依然としてオリジナルのインストールパッケージの検証情報を記憶している。デジタル透かし情報もまたオリジナルのインストールパッケージ内に埋め込まれていると仮定すると、安全な動的ライブラリ内に記憶された検証情報は、オリジナルファイル内に埋め込まれたデジタル透かし情報であってもよい。1つの理由を図5に示す。
【００２６】
オリジナルのインストールパッケージがリパッケージされているとき、オリジナルのインストールパッケージに対応するソースコードファイルを取得するために、オリジナルのインストールパッケージが最初に逆コンパイルされる必要がある。デジタル透かし情報は、所定のコードに基づいてオリジナルファイル内にコンパイルされた後にオリジナルファイルに埋め込まれるので、オリジナルのインストールパッケージが逆コンパイルされているときにデジタル透かし情報Aは失われる。次いで、ユーザは、ソースコードファイルを改変することができる。図5に示すように、別のコードが追加されてもよい。加えて、ユーザは、リパッケージされたインストールパッケージを構築するために、デジタル透かし情報Bをソースコードファイル内にさらに埋め込む。最後に、ソースコードファイルがリパッケージされ、リパッケージされたインストールパッケージの安全な動的ライブラリは、依然として検証情報Aを記憶している。したがって、デジタル透かし情報Aは、オリジナルのインストールパッケージの識別子として使用することができ、インストールパッケージがリパッケージされているかどうかを検証するために使用される。
【００２７】
本出願の実装形態を明確に説明するために、本出願の実装形態内のステップは、一例として、デジタル透かし情報をターゲットファイルの終端に埋め込むことによって、以下で説明される。
【００２８】
ステップ302:ターゲットファイル内のコードに基づいて以下のステップ、すなわちターゲットファイル内に埋め込まれたデジタル透かし情報および安全な動的ライブラリ内に記憶された検証情報を取得するステップ、ならびにデジタル透かし情報および検証情報に基づいてインストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証するステップを実行する。
【００２９】
本ステップでは、オペレーティングシステムは、図6に示す方法、すなわちターゲットファイルのオリジナルの長さに基づいてターゲットファイル内のデジタル透かし情報の開始アドレスを決定するステップと、開始アドレスに基づいてターゲットファイルからデジタル透かし情報を取得するステップとを使用することによって、ターゲットファイル内のコードに基づいてターゲットファイル内のデジタル透かし情報を取得する。ターゲットファイルのオリジナルの長さは、本明細書では、デジタル透かし情報が埋め込まれる前のターゲットファイルの長さである。
【００３０】
デジタル透かし情報を取得し、安全な動的ライブラリから検証情報を取得した後、オペレーティングシステムは、デジタル透かし情報および検証情報に基づいてインストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証する。検証方法は、Table 1(表1)
【表１】
2019535087.tif 000003
に示すように、デジタル透かし情報のタイプに基づいて決定されてもよい。
【００３１】
デジタル透かし情報が文字列であるとき、デジタル透かし情報が検証情報と一致するかどうかが検証される。デジタル透かし情報が検証情報と一致する場合、インストールパッケージはオリジナルのインストールパッケージであると判定される。デジタル透かし情報が検証情報と一致しない場合、インストールパッケージはリパッケージされたインストールパッケージであると判定される。
【００３２】
実際の応用例では、デジタル透かし情報が文字列である場合、文字列は固定長の文字列であってもよく、またはランダム長の文字列であってもよい。デジタル透かし情報が固定長の文字列であるとき、文字列が安全な動的ライブラリ内の検証情報と一致するかどうかは、直接検証されるか、または透かし値が安全な動的ライブラリ内の検証情報と一致するかどうかを判定するために、現在ダウンロードされたインストールパッケージに対応する透かし値が計算される。図7は、dexファイル内の透かし値を計算することによって、インストールパッケージがリパッケージされているかどうかを検証するための方法を示す。詳細は以下のとおりである。
【００３３】
dexファイルはdexヘッダとdexボディとを含む。dexヘッダはデータサイズとデータoffとを含み、dexボディはデータを含み、データサイズはデータのサイズを示し、データoffはデータのオフセットを示す。デジタル透かし情報はオリジナルのdexファイル内に埋め込まれたと仮定する。オリジナルのdexファイルがリパッケージされているとき、dexボディ内のデータ部分に対応するコードが改変され、コードが改変された後、オリジナルのdexファイル内に埋め込まれたデジタル透かし情報が失われるばかりでなく、データのサイズも変更される。したがって、dexヘッダ内のデータサイズに対応する値が変化する。オリジナルのdexファイルをリパッケージすることも、以下のとおりであってもよい。dexボディ内のデータ以外の部分に対応するコードが改変され、コードが改変された後、オリジナルのdexファイル内に埋め込まれたデジタル透かし情報もまた失われ、dexボディ内のデータのロケーションがオフセットされる(図7に示す)。そのため、dexヘッダ内のデータoffに対応する値が変化する。
【００３４】
オリジナルのインストールパッケージに対応する透かし値を計算するための方法は、「データサイズ+データoff」である、すなわち透かし値は、データサイズに対応する値とデータoffに対応する値との和である、と仮定する。ユーザがオリジナルのインストールパッケージをリパッケージするとき、データoffまたはデータサイズに対応する値が変化し、リパッケージされたインストールパッケージに対応する透かし値も変化する。この時点において、オペレーティングシステムは、リパッケージされたインストールパッケージに対応する透かし値が安全な動的ライブラリ内の検証情報と一致するかどうかを検証することによって、インストールパッケージがリパッケージされているかどうかを判定することができる。本明細書の透かし値を計算するための方法は、一例にすぎない。実際の応用例では、透かし値を計算するための方法は、実際の状況に基づいて決定することができ、たとえば、「データサイズ-データoff」、「データサイズ/データoff」などであってもよい。
【００３５】
前の方法が、現在ダウンロードされたインストールパッケージがリパッケージされているかどうかを検証するために使用されるとき、オリジナルのインストールパッケージ内のデジタル透かし情報がリパッケージされたインストールパッケージ内に埋め込まれている場合でも、インストールパッケージに対応する透かし値は変化する。したがって、オペレーティングシステムは、インストールパッケージの透かし値に基づいて、インストールパッケージがリパッケージされているかどうかを正確に判断することができる。
【００３６】
デジタル透かし情報がランダム長の文字列であるとき、文字列の長さを最初に計算することができ、次いで文字列の長さが安全な動的ライブラリ内の検証情報の長さと一致するかどうかが検証され、文字列の長さが安全な動的ライブラリ内の検証情報の長さと一致しない場合、インストールパッケージはリパッケージされたインストールパッケージであることが直ちに決定され、または文字列の長さが安全な動的ライブラリ内の検証情報の長さと一致する場合、文字列が安全な動的ライブラリ内の検証情報と一致するかどうかが検証され、文字列が同じく安全な動的ライブラリ内の検証情報と一致する場合、インストールパッケージはオリジナルのインストールパッケージであると判定され、または文字列が安全な動的ライブラリ内の検証情報と一致しない場合、インストールパッケージはリパッケージされたインストールパッケージであると判定される。
【００３７】
デジタル透かし情報が命令であるとき、インストールパッケージを検証するために複数の方法が存在する。例として、3つの検証方法を以下で説明する。
【００３８】
第1の方法は、デジタル透かし情報が文字列であるときにインストールパッケージを検証するための前の方法と同様である。オペレーティングシステムは、命令が安全な動的ライブラリ内の検証情報と一致するかどうかを検証し、命令が安全な動的ライブラリ内の検証情報と一致する場合、オペレーティングシステムは、インストールパッケージはオリジナルのインストールパッケージであると判定し、命令が安全な動的ライブラリ内の検証情報と一致しない場合、オペレーティングシステムは、インストールパッケージはリパッケージされたインストールパッケージであると判定する。
【００３９】
第2の方法では、オペレーティングシステムは、動作結果を取得するために命令に基づいて対応する動作を実行し、次いで動作結果が検証情報と一致するかどうかを検証し、動作結果が検証情報と一致する場合、オペレーティングシステムは、インストールパッケージはオリジナルのインストールパッケージであると判定し、動作結果が検証情報と一致しない場合、オペレーティングシステムは、インストールパッケージはリパッケージされたインストールパッケージであると判定する。
【００４０】
たとえば、命令は、「XXアドレスにおけるコンテンツが安全な動的ライブラリ内の検証情報と一致するかどうかの照会」であってもよい。オペレーティングシステムは、命令に基づいてターゲットファイル内のXXアドレスからのアドレスに対応するコンテンツ(動作結果)を照会し、コンテンツが安全な動的ライブラリ内の検証情報と一致するかどうかを検証する。コンテンツが安全な動的ライブラリ内の検証情報と一致する場合、オペレーティングシステムは、インストールパッケージはオリジナルのインストールパッケージであると判定する。コンテンツが安全な動的ライブラリ内の検証情報と一致しない場合、オペレーティングシステムは、インストールパッケージはリパッケージされたインストールパッケージであると判定する。
【００４１】
第3の方法では、オペレーティングシステムは、動作結果を取得するために命令に基づいて対応する動作を実行し、動作結果が検証情報内の動作結果と一致するかどうかを検証し、かつ命令が検証情報内の命令と一致するかどうかを検証する。2つの検証の結果が両方とも「一致」である場合、オペレーティングシステムは、インストールパッケージはオリジナルのインストールパッケージであると判定する。2つの検証のいずれかの結果が「不一致」であるか、または2つの検証の結果が両方とも「不一致」である場合、オペレーティングシステムは、インストールパッケージはリパッケージされたインストールパッケージであると判定する。
【００４２】
検証方法を明確に説明するために、本明細書で簡単な例を提供する。安全な動的ライブラリ内の検証情報内の動作結果が“2”であると仮定すると、動作命令は“1+1”であり、ターゲットファイル内のデジタル透かし情報に対応する命令は“3-1”であり、オペレーティングシステムが命令に基づいて動作を実行した後に取得された動作結果も“2”である。オペレーティングシステムが、動作結果が検証情報内の動作結果と一致するかどうかを検証するのみである場合、オペレーティングシステムは、誤ってインストールパッケージはオリジナルのインストールパッケージであるものとみなすが、オペレーティングシステムがさらに、命令が検証情報内の命令と一致するかどうかを検証する場合、オペレーティングシステムは、正確にインストールパッケージはリパッケージされているかどうかを判定する。
【００４３】
ターゲットファイル内のデジタル透かし情報に対応する命令は、単純な「リターン」命令であってもよく、またはオペレーティングシステムと相互作用するために使用される別の命令であってもよい。たとえば、命令は、「ターゲットファイルの自己署名が安全な動的ライブラリ内の検証情報と一致するかどうかをオペレーティングシステムに検証させる」であってもよい。別の例として、命令は、「デジタル透かし情報が埋め込まれる前のターゲットファイルの長さが安全な動的ライブラリ内に記憶された検証情報と一致するかどうかをオペレーティングシステムに検証させる」であってもよい。命令は、ユーザのニーズに基づいてセットされてもよい。
【００４４】
加えて、インストールパッケージがリパッケージされたインストールパッケージである場合、以下の場合があってもよい。デジタル透かし情報が、インストールパッケージに対応するオリジナルファイル内に埋め込まれる。オリジナルのインストールパッケージをリパッケージするプロセスにおいて、オリジナルのインストールパッケージ内のデジタル透かし情報が失われることが前のコンテンツから理解されてもよい。ユーザが、オリジナルファイルのコードを改変した後にデジタル透かし情報を追加しない場合、オペレーティングシステムは、インストールパッケージ内のコードに基づいて、インストールパッケージのターゲットファイルがデジタル透かし情報を含むかどうかを照会することができる。
【００４５】
インストールパッケージを検証するための前の方法は一例にすぎない。実際の応用例では、複数のタイプのデジタル透かし情報が存在し、複数の対応する検証方法も存在し、それらは本明細書では限定されない。
【００４６】
本出願で提供されるリパッケージング対策のための方法では、インストールパッケージは検証コードを含む。インストールパッケージがインストールされるとき、図8に示すように、オペレーティングシステムは、コードに基づいてインストールパッケージ内の安全な動的ライブラリ内の検証情報を取得し、ターゲットファイル内に埋め込まれたデジタル透かし情報を取得し、デジタル透かし情報および検証情報に基づいてインストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証する。本出願で提供されるリパッケージング対策のための方法を使用することによって、以下の有益な効果が達成される。
【００４７】
1.本出願では、インストールパッケージは、インストールパッケージがリパッケージされているかどうかを検証するために使用されるコードを含む。したがって、オペレーティングシステムがどれほど改変されようとも、インストールパッケージを検証するプロセスを回避することはできない。上記によって、インストールパッケージがリパッケージされているかどうかを検証するためにインストールパッケージの自己署名を検査するときに、インストールパッケージの自己署名を検証するプロセスをシステムが省略することがあるためインストールパッケージがリパッケージされているかどうかを効率に検証することができないという既存の問題が緩和される。
【００４８】
2.本出願では、インストールパッケージがリパッケージされているかどうかが、デジタル透かし情報および検証情報に基づいて検証される。したがって、インストールパッケージのハッシュ値を計算することによってインストールパッケージがリパッケージされているかどうかを検証する既存の技術における方法と比較して、本出願は、インストールパッケージがリパッケージされているかどうかの検証においてより高い効率を有する。
【００４９】
同様に、本出願は、システムがインストールパッケージの自己署名を検査するときに、インストールパッケージがリパッケージされているかどうかを効率的に検証することができないことがあるという既存の問題を緩和するため、およびインストールパッケージがリパッケージされているかどうかを検査するためにシステムがインストールパッケージのハッシュ値を計算するときに、インストールパッケージが大きいメモリを占有するので検証効率が低いことがあるという既存の問題を緩和するために、リパッケージング対策のための装置をさらに提供する。装置の構造が図9に示され、以下のユニット、すなわち実施ユニット901と実行ユニット902とを含む。
【００５０】
実施ユニット901は、インストールパッケージ内のターゲットファイルを実施し、インストールパッケージ内の安全な動的ライブラリをロードするように構成される。
【００５１】
実行ユニット902は、ターゲットファイル内のコードに基づいて、ターゲットファイル内に埋め込まれたデジタル透かし情報および安全な動的ライブラリ内に記憶された検証情報を取得することと、デジタル透かし情報および検証情報に基づいてインストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証することとを実行するように構成される。
【００５２】
本装置の実装形態の作業フローは以下のとおりである。最初に、実施ユニット901は、インストールパッケージ内のターゲットファイルを実施してインストールパッケージ内の安全な動的ライブラリをロードし、次いで実行ユニット902は、ターゲットファイル内のコードに基づいて、ターゲットファイル内に埋め込まれたデジタル透かし情報および安全な動的ライブラリ内に記憶された検証情報を取得することと、デジタル透かし情報および検証情報に基づいてインストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証することとを実行する。
【００５３】
本装置の実装形態では、リパッケージング対策が多くの方法を使用することによって実装される。たとえば、第1の実装形態では、ターゲットファイルは所定のコードがコンパイルされた後に取得されたターゲットファイルであり、デジタル透かし情報はコンパイルされたターゲットファイルの終端に埋め込まれる。
【００５４】
第2の実装形態では、ターゲットファイル内に埋め込まれたデジタル透かし情報を取得することは、ターゲットファイルのオリジナルの長さに基づいてターゲットファイル内のデジタル透かし情報の開始アドレスを決定することであって、オリジナルの長さはデジタル透かし情報が埋め込まれる前のターゲットファイルの長さである、決定することと、開始アドレスに基づいてターゲットファイルからデジタル透かし情報を取得することとを含む。
【００５５】
第3の実装形態では、デジタル透かし情報および検証情報に基づいてインストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証することは、デジタル透かし情報が検証情報と一致するかどうかを検証することと、デジタル透かし情報が検証情報と一致する場合にインストールパッケージはオリジナルのインストールパッケージであると判定することか、またはデジタル透かし情報が検証情報と一致しない場合にインストールパッケージはリパッケージされたインストールパッケージであると判定することとを含む。
【００５６】
第4の実装形態では、デジタル透かし情報および検証情報に基づいてインストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証することは、デジタル透かし情報が命令であるときに動作結果を取得するために命令に基づいて動作を実行することと、動作結果が検証情報と一致するかどうかを検証することと、動作結果が検証情報と一致する場合にインストールパッケージはオリジナルのインストールパッケージであると判定することか、または動作結果が検証情報と一致しない場合にインストールパッケージはリパッケージされたインストールパッケージであると判定することとを含む。
【００５７】
第5の実装形態では、デジタル透かし情報および検証情報に基づいてインストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証することは、デジタル透かし情報が命令であるときに動作結果を取得するために命令に基づいて動作を実行することと、動作結果が検証情報内の動作結果と一致するかどうかを検証することと、命令が検証情報内の命令と一致するかどうかを検証することと、動作結果が検証情報内の動作結果と一致しかつ命令が検証情報内の命令と一致する場合にインストールパッケージはオリジナルのインストールパッケージであると判定することか、またはそうではない場合にインストールパッケージはリパッケージされたインストールパッケージであると判定することとを含む。
【００５８】
本装置の実装形態において達成される有益な効果は、前の方法の実装形態において達成される有益な効果と同じかまたは同様である。繰り返しを避けて簡明にするために、本明細書では詳細を省略する。
【００５９】
本発明の実装形態が方法、システム、またはコンピュータプログラム製品として提供されてもよいことは、当業者には理解されよう。それゆえ、本発明は、ハードウェアのみの実装形態、ソフトウェアのみの実装形態、またはソフトウェアとハードウェアの組合せの実装形態の形を取ることができる。加えて、本発明は、コンピュータ使用可能プログラムコードを含む1つまたは複数のコンピュータ使用可能記憶媒体(限定はしないが、ディスクメモリ、CD-ROM、光学メモリなどを含む)上で実装されるコンピュータプログラム製品の形を取ることができる。
【００６０】
本発明は、本発明の実装形態による方法、デバイス(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して説明される。コンピュータプログラム命令は、フローチャートおよび/またはブロック図における各プロセスおよび/または各ブロック、ならびにフローチャートおよび/またはブロック図におけるプロセスおよび/またはブロックの組合せを実装するために使用されてもよいことを理解されたい。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、埋め込みプロセッサ、またはマシンを生成するための任意の他のプログラマブルデータ処理デバイスのプロセッサに提供することができ、それによりコンピュータまたは任意の他のプログラマブルデータ処理デバイスのプロセッサによって実行される命令は、フローチャート内の1つもしくは複数のプロセス内、および/またはブロック図の1つもしくは複数のブロック内に特定の機能を実装するためのデバイスを生成する。
【００６１】
コンピュータまたは任意の他のプログラマブルデータ処理デバイスに対して、特定の方法を使用することによって働くように命令することができる、これらのコンピュータプログラム命令をコンピュータ可読メモリ内に記憶することができ、それによりコンピュータ可読メモリ内に記憶された命令は、命令デバイスを含む製造品を生成する。命令デバイスは、フローチャート内の1つもしくは複数のプロセス内、および/またはブロック図の1つもしくは複数のブロック内で特定の機能を実施する。
【００６２】
これらのコンピュータプログラム命令は、コンピュータまたは別のプログラマブルデータ処理デバイスにロードすることができ、それにより一連の動作およびステップがコンピュータまたは別のプログラマブルデバイス上で実行され、それによりコンピュータ実装処理が生成される。それゆえ、コンピュータまたは別のプログラマブルデバイス上で実行される命令は、フローチャート内の1つもしくは複数のプロセス内、および/またはブロック図の1つもしくは複数のブロック内で、特定の機能を実施するためのステップを提供する。
【００６３】
典型的な構成では、コンピューティングデバイスは、1つまたは複数の中央処理装置(CPU)と、1つまたは複数の入力/出力インターフェースと、1つまたは複数のネットワークインターフェースと、1つまたは複数のメモリとを含む。
【００６４】
メモリは、コンピュータ可読媒体内の揮発性メモリ、ランダムアクセスメモリ(RAM)、および/またはリードオンリーメモリ(ROM)もしくはフラッシュメモリ(フラッシュRAM)などの不揮発性メモリなどを含むことができる。メモリは、コンピュータ可読媒体の一例である。
【００６５】
コンピュータ可読媒体は、任意の方法または技術を使用することによって情報を記憶することができる、永久的および非永久的、取り外し可能および取り外し不可能な媒体を含む。情報は、コンピュータ可読命令、データ構造、プログラムのモジュール、または他のデータであってもよい。コンピュータ記憶媒体の例は、限定はしないが、相ランダム変化メモリ(PRAM:phase-random change memory)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、別のタイプのランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)、フラッシュメモリもしくは別のメモリ技術、コンパクトディスクリードオンリーメモリ(CD-ROM)、デジタル多用途ディスク(DVD)もしくは別の光学式記憶、磁気カセットテープ、磁気テープ/ディスク記憶、または別の磁気記憶デバイスもしくは任意の他の非伝送媒体を含み、コンピューティングデバイスによってアクセスされてもよい情報を記憶するために使用することができる。本明細書で定義されるように、コンピュータ可読媒体は、変調されたデータ信号およびキャリアなどの一時的コンピュータ可読媒体(一時的媒体)を含まない。
【００６６】
「含む」、「包含する」という用語、またはそれらの任意の他の変形は、非排他的包含をカバーすることを意図しており、それにより要素のリストを含むプロセス、方法、製品、またはデバイスは、それらの要素を含むばかりでなく、明示的に列挙されていない他の要素をも含むか、またはそのようなプロセス、方法、製品、もしくはデバイスに固有の要素をさらに含むことにさらに留意することは価値がある。「〜を含む」に先行する要素は、その要素を含むプロセス、方法、製品、またはデバイス内に付加的な同等の要素の存在を排除することはなく、より制約することもない。
【００６７】
本明細書の実装形態が方法、システム、またはコンピュータプログラム製品として提供されてもよいことは、当業者には理解されよう。それゆえ、本出願は、ハードウェアのみの実装形態、ソフトウェアのみの実装形態、またはソフトウェアとハードウェアの組合せの実装形態の形を取ることができる。加えて、本出願は、コンピュータ使用可能プログラムコードを含む1つまたは複数のコンピュータ使用可能記憶媒体(限定はしないが、ディスクメモリ、CD-ROM、光学メモリなどを含む)上で実装されるコンピュータプログラム製品の形を取ることができる。
【００６８】
前の説明は、本出願の実装形態にすぎず、本出願を制限することを意図していない。当業者にとって、本出願における様々な変更が存在してもよい。本出願の趣旨および原理内で作成される任意の変更形態、等価な置換、改善などは、本出願の特許請求の範囲内に入るものとする。
【符号の説明】
【００６９】
901  実施ユニット
902  実行ユニット
【図１】
2019535087.tif 000004
【図２】
2019535087.tif 000005
【図３】
2019535087.tif 000006
【図４】
2019535087.tif 000007
【図５】
2019535087.tif 000008
【図６】
2019535087.tif 000009
【図７】
2019535087.tif 000010
【図８】
2019535087.tif 000011
【図９】
2019535087.tif 000012
【手続補正書】
【提出日】令和1年5月27日(2019.5.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
リパッケージング対策のための方法であって、前記方法が、
インストールパッケージ内のターゲットファイルを実施し、かつ前記インストールパッケージ内の安全な動的ライブラリをロードするステップ(301)と、
前記ターゲットファイル内のコードに基づいて、前記ターゲットファイル内に埋め込まれたデジタル透かし情報および前記安全な動的ライブラリ内に記憶された検証情報を取得するステップ(302)と、
前記デジタル透かし情報および前記検証情報に基づいて前記インストールパッケージがリパッケージされたインストールパッケージであるかどうかを検証するステップ(303)と
を含む、方法。
【請求項２】
前記ターゲットファイルが、所定のコードがコンパイルされた後に取得されたターゲットファイルであり、
前記デジタル透かし情報が、前記コンパイルされたターゲットファイルの終端に埋め込まれる、
請求項1に記載の方法。
【請求項３】
前記ターゲットファイル内に埋め込まれた前記デジタル透かし情報を取得するステップが、
前記ターゲットファイルのオリジナルの長さに基づいて前記ターゲットファイル内の前記デジタル透かし情報の開始アドレスを決定するステップであって、前記オリジナルの長さが、前記デジタル透かし情報が埋め込まれる前の前記ターゲットファイルの長さである、ステップと、
前記開始アドレスに基づいて前記ターゲットファイルから前記デジタル透かし情報を取得するステップと
を含む、請求項2に記載の方法。
【請求項４】
前記インストールパッケージが前記リパッケージされたインストールパッケージであるかどうかを検証するステップが、
前記デジタル透かし情報が、前記検証情報と一致するかどうかを検証するステップを含む、
請求項1に記載の方法。
【請求項５】
前記インストールパッケージが前記リパッケージされたインストールパッケージであるかどうかを検証するステップが、
前記デジタル透かし情報が前記検証情報と一致する場合に前記インストールパッケージがオリジナルのインストールパッケージであると判定するステップを含む、
請求項4に記載の方法。
【請求項６】
前記インストールパッケージが前記リパッケージされたインストールパッケージであるかどうかを検証するステップが、
前記デジタル透かし情報が前記検証情報と一致しない場合に前記インストールパッケージがリパッケージされたインストールパッケージであると判定するステップを含む、
請求項4に記載の方法。
【請求項７】
前記デジタル透かし情報および前記検証情報に基づいて前記インストールパッケージが前記リパッケージされたインストールパッケージであるかどうかを検証するステップが、
前記デジタル透かし情報が命令であるときに動作結果を取得するために前記命令に基づいて動作を実行するステップと、
前記動作結果が前記検証情報と一致するかどうかを検証するステップと
を含む、請求項1に記載の方法。
【請求項８】
前記インストールパッケージが前記リパッケージされたインストールパッケージであるかどうかを検証するステップが、
前記動作結果が前記検証情報と一致する場合に前記インストールパッケージがオリジナルのインストールパッケージであると判定するステップを含む、
請求項7に記載の方法。
【請求項９】
前記インストールパッケージが前記リパッケージされたインストールパッケージであるかどうかを検証するステップが、
前記動作結果が前記検証情報と一致しない場合に前記インストールパッケージがリパッケージされたインストールパッケージであると判定するステップを含む、
請求項7に記載の方法。
【請求項１０】
前記デジタル透かし情報および前記検証情報に基づいて前記インストールパッケージが前記リパッケージされたインストールパッケージであるかどうかを検証するステップが、
前記デジタル透かし情報が命令であるときに動作結果を取得するために前記命令に基づいて動作を実行するステップと、
前記動作結果が前記検証情報内の動作結果と一致するかどうかを検証し、かつ前記命令が前記検証情報内の命令と一致するかどうかを検証するステップと
を含む、請求項1に記載の方法。
【請求項１１】
前記インストールパッケージが前記リパッケージされたインストールパッケージであるかどうかを検証するステップが、
前記動作結果が前記検証情報内の前記動作結果と一致しかつ前記命令が前記検証情報内の前記命令と一致する場合に前記インストールパッケージがオリジナルのインストールパッケージであると判定するステップを含む、
請求項10に記載の方法。
【請求項１２】
前記インストールパッケージが前記リパッケージされたインストールパッケージであるかどうかを検証するステップが、
前記動作結果が前記検証情報と一致しない場合に前記インストールパッケージが前記リパッケージされたインストールパッケージであると判定するステップを含む、
請求項10に記載の方法。
【請求項１３】
前記方法がANDROID(登録商標)オペレーティングシステムに適用され、
前記ターゲットファイルが実行ファイルであり、
前記安全な動的ライブラリが共有オブジェクトライブラリである、
請求項1から12のいずれか一項に記載の方法。
【請求項１４】
リパッケージング対策のための装置であって、請求項1から13のいずれか一項に記載の方法を実行するように構成される複数のモジュールを備える、装置。
【国際調査報告】
2019535087.tif 000013
2019535087.tif 000014
2019535087.tif 000015
2019535087.tif 000016