JP2005266887A - プログラム難読化装置、プログラム配布システム、コンピュータプログラム - Google Patents
プログラム難読化装置、プログラム配布システム、コンピュータプログラム Download PDFInfo
- Publication number
- JP2005266887A JP2005266887A JP2004074249A JP2004074249A JP2005266887A JP 2005266887 A JP2005266887 A JP 2005266887A JP 2004074249 A JP2004074249 A JP 2004074249A JP 2004074249 A JP2004074249 A JP 2004074249A JP 2005266887 A JP2005266887 A JP 2005266887A
- Authority
- JP
- Japan
- Prior art keywords
- program
- obfuscation
- random number
- custom
- input
- 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.)
- Granted
Links
Images
Abstract
【解決手段】乱数を生成する乱数生成部13と、該生成された乱数に基づいて、入力プログラムを変形するカスタム難読化処理部14とを備え、入力プログラムのプログラムサイズに応じて調整される冗長的な処理が入力プログラムに追加される。難読化はプログラム配布毎に行われ、難読化されたプログラムは通信回線より送信される。
【選択図】図1
Description
これにより、前述のプログラム難読化装置がコンピュータを利用して実現できるようになる。
図1は、本発明の一実施形態に係るプログラム難読化装置1の構成を示すブロック図である。図1において、プログラム100は、難読化前のオリジナルプログラムである。このプログラム100が難読化対象のプログラムとしてプログラム難読化装置1に入力される。
先ず、プログラム100が入力されると、基本難読化処理部12が、該入力プログラム100に対して変数名の変更等の基本難読化を行う。この基本難読化後のプログラム110はカスタム難読化処理部14に入力される。また、乱数生成部13が、乱数生成関数13aを使用して、今回のカスタム難読化処理用の乱数を発生する。そして、この乱数をハッシュ関数13bに入力してハッシュ関数13bのNビットの出力値(以下、Nビットの乱数初期値と称する)を得る。
この例は、冗長度の導入関数1を使用するカスタム難読化処理である。冗長度の導入関数1は、Nビットの乱数データを、「N=n+l+m」を満足する3つの乱数ビット列(nビット、lビット及びmビットの各ビット列)に分割する。そして、nビットの変数名(ダミーの変数名)を新たに生成し、このダミー変数名を宣言する宣言文を、基本難読化後プログラム110内の値mで指定される位置にl行追加する。
基本難読化後プログラム110内の例えば値mで指定される位置は、プログラム解析モジュール14aが基本難読化後プログラム110内を検索する。これは以下の例でも同様である。
この例は、冗長度の導入関数2を使用するカスタム難読化処理である。冗長度の導入関数2は、Nビットの乱数データを、「N=n+l+m+p」を満足する4つの乱数ビット列(nビット、lビット、mビット及びpビットの各乱数ビット列)に分割する。そして、nビットの変数名(ダミーの変数名)を新たに生成し、このダミー変数名を宣言する宣言文を、基本難読化後プログラム110内の値mで指定される部分にl行追加する。また、pビットの乱数ビット列を使用して、上記宣言したnビットの変数名のダミー変数を用いたダミー処理を新たに生成し、基本難読化後プログラム110内に追加する。このダミー処理の生成方法は、後述する処理手順の変更例と同様である。
この例は、冗長度の導入関数3を使用するカスタム難読化処理である。冗長度の導入関数3は、Nビットの乱数データを、「N=a+b」を満足する2つの乱数ビット列(aビット及びbビットの各乱数ビット列)に分割する。そして、事前に作成されているa個のダミーコードサンプルを有するサンプルテーブルから、値aに基づいてダミーコードサンプルを選択する。そして、この選択したダミーコードサンプルを、基本難読化後プログラム110内の値bで指定される位置に追加する。
この例は、処理手順の変更関数1を使用するカスタム難読化処理である。処理手順の変更関数1は、Nビットの乱数データを、「N=s+t+u+v」を満足する4つの乱数ビット列(sビット、tビット、uビット及びvビットの各乱数ビット列)に分割する。そして、擬似的な処理を基本難読化後プログラム110内の値vで指定される位置に追加する。処理手順の変更関数1はその擬似的な処理を次に示す方法で新たに作成する。
基本難読化後プログラム110内の例えば値sで指定される変数は、プログラム解析モジュール14aが基本難読化後プログラム110内を検索する。また、例えば値tで指定される演算は、プログラム解析モジュール14aが基本難読化後プログラム110内を検索する。これらは以下の例でも同様である。
この例は、処理手順の変更関数2を使用するカスタム難読化処理である。処理手順の変更関数2は、Nビットの乱数データを、「N=e+f+g+h+i」を満足する5つの乱数ビット列(eビット、fビット、gビット、hビット及びiビットの各乱数ビット列)に分割する。そして、擬似的な処理を基本難読化後プログラム110内の値iで指定される位置に追加する。処理手順の変更関数2はその擬似的な処理を次に示す方法で新たに作成する。
また、上記周辺機器については、プログラム難読化装置に直接接続するものであってもよく、あるいは通信回線を介して接続するようにしてもよい。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
図2において、プログラム提供サイト1aは、インターネット等の通信ネットワークに接続された例えばウェブサーバであり、クライアント端末(PC;パーソナルコンピュータ)30からアクセス可能となっている。プログラム提供サイト1aは、カスタム難読化処理プログラム20を有しており、上記図1のプログラム難読化装置1が有する機能のうち、少なくとも上記図1の乱数生成部13に係る機能と、カスタム難読化処理部14に係る機能とを実現する。
先ず、ユーザは、クライアントPC30を使用してプログラム提供サイト1aにアクセスし、コンテンツプログラム取得の対価を支払うと共にコンテンツプログラムのダウンロードを要求する。この要求により、プログラム提供サイト1aは、オリジナルプログラム100を入力として、カスタム難読化処理プログラム20を起動し、少なくともカスタム難読化処理を実行する。このカスタム難読化処理では、オリジナルプログラム100内の少なくとも有効期限日情報を難読化対象とする。これにより、有効期限日情報が難読化された当該ユーザ向けの難読化プログラム200(例えば図2の難読化プログラム200a)が得られる。次いで、プログラム提供サイト1aは、当該ダウンロード要求に対する応答として、その得られた難読化プログラム200を返信する。ユーザは、この難読化プログラム200を受信して使用することができる。但し、難読化プログラム200に付加された有効期限が過ぎると、使用不能となる。
Claims (7)
- 乱数を生成する乱数生成手段と、
前記生成された乱数に基づいて、入力プログラムを変形するカスタム難読化処理手段と、
を備えたことを特徴とするプログラム難読化装置。 - 前記カスタム難読化処理手段は、入力プログラムに冗長的な処理を追加することを特徴とする請求項1に記載のプログラム難読化装置。
- 前記追加される処理量は、入力プログラムのプログラムサイズに応じて調節されることを特徴とする請求項2に記載のプログラム難読化装置。
- 請求項1から3のいずれかの項に記載のプログラム難読化装置と、
前記プログラム難読化装置によって難読化されたプログラムを通信回線を介して送信する送信手段と、
プログラム配布毎に、前記プログラム難読化装置によってオリジナルプログラムを難読化する配布制御手段と、
を備えたことを特徴とするプログラム配布システム。 - 乱数を生成する機能と、
前記生成された乱数に基づいて、入力プログラムを変形する機能と、
をコンピュータに実現させることを特徴とするコンピュータプログラム。 - 前記入力プログラムの変形は、入力プログラムに冗長的な処理を追加することを特徴とする請求項5に記載のコンピュータプログラム。
- 前記追加される処理量は、入力プログラムのプログラムサイズに応じて調節されることを特徴とする請求項6に記載のコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004074249A JP3970856B2 (ja) | 2004-03-16 | 2004-03-16 | プログラム難読化装置、プログラム配布システム、コンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004074249A JP3970856B2 (ja) | 2004-03-16 | 2004-03-16 | プログラム難読化装置、プログラム配布システム、コンピュータプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005266887A true JP2005266887A (ja) | 2005-09-29 |
JP3970856B2 JP3970856B2 (ja) | 2007-09-05 |
Family
ID=35091413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004074249A Expired - Fee Related JP3970856B2 (ja) | 2004-03-16 | 2004-03-16 | プログラム難読化装置、プログラム配布システム、コンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3970856B2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006235688A (ja) * | 2005-02-22 | 2006-09-07 | Kddi Corp | プログラム難読化装置およびその方法ならびにプログラム |
JP2010508583A (ja) * | 2006-10-27 | 2010-03-18 | マイクロソフト コーポレーション | 多様化された不正操作耐性のための仮想化 |
JP2011227897A (ja) * | 2010-04-16 | 2011-11-10 | Thomson Licensing | 自己修正計算機コードのチェックサム検証のための方法、装置およびコンピュータ・プログラム担体 |
KR101265099B1 (ko) | 2011-06-15 | 2013-05-20 | 주식회사 터보테크 | 소프트웨어 보안 처리방법 및 기록매체 |
JP2014509029A (ja) * | 2011-03-24 | 2014-04-10 | イルデト ビー ヴイ | 攻撃耐性のためにアプリケーション全体に依存関係ネットワークを提供するシステムおよび方法 |
-
2004
- 2004-03-16 JP JP2004074249A patent/JP3970856B2/ja not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006235688A (ja) * | 2005-02-22 | 2006-09-07 | Kddi Corp | プログラム難読化装置およびその方法ならびにプログラム |
JP4675642B2 (ja) * | 2005-02-22 | 2011-04-27 | Kddi株式会社 | プログラム難読化装置およびその方法ならびにプログラム |
JP2010508583A (ja) * | 2006-10-27 | 2010-03-18 | マイクロソフト コーポレーション | 多様化された不正操作耐性のための仮想化 |
US8584109B2 (en) | 2006-10-27 | 2013-11-12 | Microsoft Corporation | Virtualization for diversified tamper resistance |
US9459893B2 (en) | 2006-10-27 | 2016-10-04 | Microsoft Technology Licensing, Llc | Virtualization for diversified tamper resistance |
JP2011227897A (ja) * | 2010-04-16 | 2011-11-10 | Thomson Licensing | 自己修正計算機コードのチェックサム検証のための方法、装置およびコンピュータ・プログラム担体 |
US9471758B2 (en) | 2010-04-16 | 2016-10-18 | Thomson Licensing | Method, a device and a computer program support for verification of checksums for self-modified computer code |
JP2014509029A (ja) * | 2011-03-24 | 2014-04-10 | イルデト ビー ヴイ | 攻撃耐性のためにアプリケーション全体に依存関係ネットワークを提供するシステムおよび方法 |
US9811666B2 (en) | 2011-03-24 | 2017-11-07 | Irdeto B.V. | System and method providing dependency networks throughout applications for attack resistance |
KR101265099B1 (ko) | 2011-06-15 | 2013-05-20 | 주식회사 터보테크 | 소프트웨어 보안 처리방법 및 기록매체 |
Also Published As
Publication number | Publication date |
---|---|
JP3970856B2 (ja) | 2007-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5331920B2 (ja) | コンピュータ可読記憶媒体 | |
JP6257754B2 (ja) | データの保護 | |
US7464269B2 (en) | Secure method and system for handling and distributing digital media | |
US20170116410A1 (en) | Software protection | |
JP5113169B2 (ja) | 暗号関数を難読化する方法およびシステム | |
CN105681039A (zh) | 用于生成密钥及对应解密的方法和设备 | |
JP2002077137A (ja) | 電子著作物の保護方法及び保護システム | |
JP2002077136A (ja) | 電子著作物の保護方法及び保護システム | |
JP2016505891A (ja) | テーブルネットワークを有する計算装置 | |
CN110210211B (zh) | 一种数据保护的方法和计算设备 | |
JP7089303B2 (ja) | 推論装置、処理システム、推論方法及び推論プログラム | |
JP4470982B2 (ja) | 情報処理装置及び情報処理プログラム | |
US20080320601A1 (en) | Providing access rights to portions of a software application | |
CN106209346B (zh) | 白盒密码技术交错查找表 | |
US20020094083A1 (en) | Encryption scheme for limiting the maximum number of accesses to a digital file of predetermined content | |
JP2014081613A (ja) | セッション状態情報の暗号化および復号化方法 | |
JP2007515723A (ja) | アクティブなエンティティを使用するソフトウェア実行保護 | |
JP3970856B2 (ja) | プログラム難読化装置、プログラム配布システム、コンピュータプログラム | |
US7508938B1 (en) | Method and apparatus for generating and using a tamper-resistant encryption key | |
JP4675642B2 (ja) | プログラム難読化装置およびその方法ならびにプログラム | |
JP2001356952A (ja) | データ暗号化方法及びシステム | |
EP3876119A1 (en) | Method for protecting a data in a software application | |
US20060224894A1 (en) | Methods, devices and computer programs for creating ciphertext, plaintext and a cryptographic key | |
Nützel et al. | How to increase the security of Digital Rights Management systems without affecting consumer’s security | |
JP6215468B2 (ja) | プログラム保護装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050909 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050912 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070306 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070501 |
|
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: 20070529 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070606 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100615 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110615 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130615 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |