JP6146247B2 - 難読化プログラム、難読化装置、端末装置 - Google Patents

難読化プログラム、難読化装置、端末装置 Download PDF

Info

Publication number
JP6146247B2
JP6146247B2 JP2013206366A JP2013206366A JP6146247B2 JP 6146247 B2 JP6146247 B2 JP 6146247B2 JP 2013206366 A JP2013206366 A JP 2013206366A JP 2013206366 A JP2013206366 A JP 2013206366A JP 6146247 B2 JP6146247 B2 JP 6146247B2
Authority
JP
Japan
Prior art keywords
information
area
program
obfuscation
erasure
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.)
Expired - Fee Related
Application number
JP2013206366A
Other languages
English (en)
Other versions
JP2015069624A (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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
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 Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2013206366A priority Critical patent/JP6146247B2/ja
Publication of JP2015069624A publication Critical patent/JP2015069624A/ja
Application granted granted Critical
Publication of JP6146247B2 publication Critical patent/JP6146247B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Description

本発明は、難読化プログラム、難読化装置、端末装置に関する。
コンピュータにおけるメモリに格納された情報の保護技術として、タスクがアクセス可能な論理アドレス空間を制限し、当該論理アドレス空間から外れた領域の情報を取得できなくする技術(下記特許文献1参照)や、基準キーと所有者キーから生成される変換キーによって、メモリ上のデータを暗号化して保護する技術(下記特許文献2参照)が知られている。
特開2010−267077号公報 特開2009−253490号公報
本発明は、メモリに格納された特定の情報のメモリダンプによる取得を困難にする難読化プログラム等を実現する。
請求項1に記載の難読化プログラムは、第1の領域と第2の領域を有し、オブジェクトが生成される毎に該オブジェクトを順次前記第1の領域に格納するメモリを含み、予め設定された期間毎に、前記オブジェクトのそれぞれについて、オブジェクトの使用頻度に応じて、前記第1の領域から前記第2の領域に移動させるとともに、不使用のオブジェクトについては消去する移動消去処理を行うコンピュータで用いられるプログラムであって、あらかじめ設定された情報を保持する第1のオブジェクトを生成する第1のオブジェクト生成手段、第2のオブジェクトを生成する第2のオブジェクト生成手段、前記第2のオブジェクトに前記情報を格納させる格納手段、及び、前記第1のオブジェクトに前記移動消去処理において前記第1のオブジェクトを消去するための消去識別情報を保持させる消去指示手段、としてコンピュータを機能させるための難読化プログラムであることを特徴とする。
請求項2に記載の難読化プログラムは、請求項1に記載の難読化プログラムにおいて、前記移動消去処理は、世代別ガーベージコレクション手法であることを特徴とする。
請求項3に記載の難読化プログラムは、請求項1または2に記載の難読化プログラムにおいて、更に、あらかじめ設定された期間毎にタイミング情報を生成するタイマ手段としてコンピュータを機能させ、前記第1及び第2のオブジェクト生成手段は、前記タイミング情報に応じて、第1及び第2のオブジェクトを生成することを特徴とする。
請求項4に記載の難読化プログラムは、請求項1乃至3のいずれかに記載の難読化プログラムにおいて、前記あらかじめ設定された情報は、暗号化されたデータを復号化するための鍵情報を含むことを特徴とする。
請求項5に記載の情報処理装置は、第1の領域と第2の領域を有し、オブジェクトが生成される毎に該オブジェクトを順次前記第1の領域に格納するメモリと、予め設定された期間毎に、前記オブジェクトのそれぞれについて、オブジェクトの使用頻度に応じて、前記第1の領域から前記第2の領域に移動させるとともに、不使用のオブジェクトについては消去する移動消去処理手段と、あらかじめ設定された情報を保持する第1のオブジェクトを生成する第1のオブジェクト生成手段と、第2のオブジェクトを生成する第2のオブジェクト生成手段と、前記第2のオブジェクトに前記情報を格納させる格納手段と、前記第1のオブジェクトに、前記移動消去処理において前記第1のオブジェクトを消去するための消去識別情報を格納させる消去識別情報を格納させる消去指示手段と、を含むことを特徴とする。
請求項6に記載の難読化装置は、オブジェクトが作成される毎に該オブジェクトを順次第1の領域に格納するメモリであって、予め設定された期間毎に、前記オブジェクトのそれぞれについて、オブジェクトの使用頻度に応じて、前記第1の領域から前記第2の領域に移動させるとともに、不使用のオブジェクトについては消去する移動消去処理を行うコンピュータで用いられるプログラムを取得するプログラム取得手段と、前記プログラムに、更に、あらかじめ設定された情報を保持する第1のオブジェクトを生成する第1のオブジェクト生成手段、第2のオブジェクトを生成する第2のオブジェクト生成手段、前記第2のオブジェクトに前記情報を格納させる格納手段、及び、前記第1のオブジェクトに前記移動消去処理において前記第1のオブジェクトを消去するための消去識別情報を保持させる消去指示手段、として前記コンピュータを機能させるための機能を追加する機能追加手段と、を含むことを特徴とする。
請求項7に記載の難読化プログラムは、予め設定された期間毎に、前記オブジェクトのそれぞれについて、オブジェクトの使用頻度に応じて、前記第1の領域から前記第2の領域に移動させるとともに、不使用のオブジェクトについては消去する移動消去処理を行う第1のコンピュータで用いられるプログラムを取得するプログラム取得手段、及び、前記プログラムに、更に、あらかじめ設定された情報を保持する第1のオブジェクトを生成する第1のオブジェクト生成手段、第2のオブジェクトを生成する第2のオブジェクト生成手段、前記第2のオブジェクトに前記情報を格納させる格納手段、及び、前記第1のオブジェクトに前記移動消去処理において前記第1のオブジェクトを消去するための消去識別情報を格納させる消去指示手段、として前記第1のコンピュータを機能させるための機能を追加する機能追加手段、として第2のコンピュータを機能させるための難読化プログラムであることを特徴とする。
請求項1、2、5に記載の発明によれば、メモリに格納された特定の情報のメモリダンプによる取得が困難となる。
請求項3に記載の発明によれば、あらかじめ設定された期間毎に特定の情報を格納するオブジェクトが生成される。
請求項4に記載の発明によれば、鍵情報のメモリダンプによる取得が困難となる。
請求項6、7に記載の発明によれば、取得したプログラムに、メモリに格納された特定の情報のメモリダンプによる取得が困難とする難読化機能が追加される。
難読化システムのハードウェア構成の一例について説明するための図である。 難読化システムの使用態様の一例について説明するための図である。 世代別ガーベージコレクションの概要について説明するための図である。 世代別ガーベージコレクションの概要について説明するための図である。 世代別ガーベージコレクションの概要について説明するための図である。 世代別ガーベージコレクションの概要について説明するための図である。 世代別ガーベージコレクションの概要について説明するための図である。 世代別ガーベージコレクションの概要について説明するための図である。 鍵情報を保持するオブジェクトのヒープメモリ上の状態の一例を説明するための図である。 鍵情報を保持するオブジェクトのヒープメモリ上の状態の一例を説明するための図である。 鍵情報を保持するオブジェクトのヒープメモリ上の状態の一例を説明するための図である。 鍵情報を保持するオブジェクトのヒープメモリ上の状態の一例を説明するための図である。 鍵情報を保持するオブジェクトのヒープメモリ上の状態の一例を説明するための図である。 鍵情報を保持するオブジェクトのヒープメモリ上の状態の一例を説明するための図である。 難読化プログラムが端末装置にインストールされた場合の機能的構成の一例について説明するための図である。 難読化プログラムの処理のフローの一例について説明するための図である。 難読化装置における処理のフローの一例について説明するための図である。
以下、本発明の実施形態について、図面を参照しつつ説明する。なお、図面については、同一又は同等の要素には同一の符号を付し、重複する説明は省略する。
図1は、本発明の実施形態に係る難読化システムのハードウェア構成の一例について説明するための図である。図1に示すように、難読化システム100は、例えば、ネットワーク140を介して接続されたサーバ110、難読化装置120、及び端末装置130を有する。なお、図1においては、難読化システム100は、1の端末装置130のみを有しているが、複数の端末装置130を有してもよい。
サーバ110は、制御部111、記憶部112、通信部113を含む。制御部111は、例えば、CPU等であって、記憶部112に格納されたプログラムに従って動作する。記憶部112は、例えば、ハードディスクやROMやRAM等の情報記録媒体で構成され、制御部111によって実行されるプログラムを保持する情報記録媒体である。また、記憶部112は、制御部111のワークメモリとしても動作する。
通信部113は、ネットワークインターフェースであって、制御部111からの指示に応じて、ネットワーク140を介して、情報を送受信する。なお、制御部111、記憶部112、通信部113は、それぞれ、バス114を介して接続される。
難読化装置120は制御部111、記憶部112、通信部113を含む。その他の点についてはサーバ110と同様であるので説明を省略する。
また、端末装置130は、制御部121、通信部122、記憶部123、表示部124、操作部125を含む。同様に、各部120乃至125は、バス126を介して接続される。上述したサーバ110と同様に、制御部121は、例えば、CPUであって、記憶部112に格納されたプログラムに従って動作する。記憶部123は、例えば、ハードディスクやROMやRAM等の情報記録媒体で構成され、制御部121によって実行されるプログラムを保持する情報記録媒体である。また、記憶部123は、制御部121のワークメモリとしても動作する。
操作部125は、例えば、キーボード、マウス、ボタン等のインターフェースで構成され、ユーザの指示操作に応じて、当該指示操作の内容を制御部121に出力する。表示部124は、例えば、液晶ディスプレイ、CRTディスプレイ、または有機ELディスプレイ等であって、制御部121からの指示に従い、情報を表示する。
なお、上記制御部111及び121で処理されるプログラムは、例えば、ネットワークを介して、ダウンロードされて提供されてもよいし、または、CD−ROMやDVD−ROM等のコンピュータで読み取り可能な各種の情報記録媒体によって提供されてもよい。なお、上記難読化システム100の構成は、一例であって本実施の形態は上記に限定されるものではない。
次に、まず、理解の容易化のため、図2を用いて本実施の形態における難読化システム100の使用態様の一例について説明する。当該使用態様においては、ユーザの料金支払い中は、配布者210から鍵情報が提供されることにより、ユーザ230の有するプログラムの一部の処理が正規に使用可能であるが、料金支払い後は鍵情報が提供されなくなり、使用できなくなるように構成する場合を想定する。具体的には、当該プログラムは、画像を閲覧するためのプログラムであって、プログラムが端末装置130において起動されると、鍵情報をサーバ110から取得し、当該鍵情報を端末装置130のメモリに保持する。そして、画像閲覧指示に応じて、端末装置130に記憶された暗号化された画像ファイルを当該鍵情報に応じて復号し、表示部124に表示するように構成する場合を想定する。
なお、当該プログラムは一例であって、動画情報の提供や音楽情報の提供するプログラム等、その他のプログラムであってもよい。また、図2における配布者210及びユーザ230は、例えば、上記難読化システム100におけるサーバ110及び端末装置130に相当する。また、図2に示すように、プログラムの難読化装置120への提供等については、配布者210自身が難読化装置120に直接入力する等、種々の変形が可能である。
図2に示すように、まず、難読化装置120は、配布者210から、上記プログラムや鍵情報を取得する(S101)。具体的には、例えば、配布者210がインターネット140を介して難読化装置120に送信し、難読化装置120は当該プログラム等を取得する。
そして、難読化装置120は、当該プログラムに上記鍵情報をメモリから取得することを困難にする機能を追加した難読化プログラムを生成する。なお、プログラムを難読化する難読化装置120や、当該難読化されたプログラムである難読化プログラムの詳細については後述する。
次に、配布者210は、当該難読化装置120から当該難読化プログラムを取得する(S102)。具体的には、例えば、配布者210は、インターネット140を介して難読化装置12から難読化プログラムを取得する。
配布者210は、難読化プログラムをユーザ230に提供する(S103)。具体的には、例えば、配布者210がインターネット140を介してユーザ230の使用する端末装置130に難読化プログラムを送信する。当該難読化プログラム230は、暗号化された画像情報を含む。また、難読化プログラムの端末装置130における起動時に、配布者210は、暗号化された画像情報を復号化するための鍵情報をユーザに提供する。
ここで、当該プログラムは、上記のように例えば、ユーザ230から配布者210へ使用料金の支払いが行われている期間(料金支払い期間)に限り、当該鍵情報を、ユーザ230の使用する端末装置130に提供する。これにより、ユーザ230は、料金支払い期間中は、難読化プログラムの起動時に暗号化された画像情報を復号化するための鍵情報を配布者210から取得し、当該鍵情報を用いて当該画像情報を復号化することにより画像情報を閲覧する。
一方、料金支払い期間経過後は、配布者210から鍵情報が提供されなくなるため、暗号化された画像情報を復号化することができない。よって、画像情報の閲覧ができなくなる。ここで、当該鍵情報を、ユーザ230の端末装置130のメモリから、メモリダンプにより不正に取得して、当該画像情報の復号化を行う場合が想定される。しかしながら、本実施の形態によれば、難読化装置120により当該プログラムが難読化されているため、上記のような鍵情報の不正取得を行うことが困難となる。以下具体的に説明する。
端末装置120におけるメモリ領域の管理に対し、いわゆる世代別ガーベージコレクション(以下「ガーベージコレクション」という)を採用する場合、例えば、メモリは新しいオブジェクトを格納する第1の領域と、古いオブジェクトを格納する第2の領域を有する。
そして、当該ガーベージコレクションが採用される場合、上記のような鍵情報を保持するオブジェクトなど、頻繁に使用されるオブジェクトについては、上記当該プログラムが難読化されていない場合には、時間の経過に応じて、第1の領域から第2の領域に移動して、その後第2の領域の特定の位置に滞留する。したがって、当該メモリをダンプすることにより、鍵情報が容易に発見され、当該鍵情報を用いて、当該画像情報の閲覧等を行う場合が想定される。
一方、難読化されている場合には、後述するように鍵情報を保持するオブジェクトが第1の領域を時間の経過に伴い移動するとともに、予め設定された期間を超えて存在しない。よって、上記のような鍵情報の発見が困難となり、ユーザ230の端末装置130のメモリからの鍵の不正取得が効果的に防止される。この点につき、Java(登録商標)におけるメモリ(ヒープ・メモリ)の世代別ガーベージコレクションの例を用いて下記により具体的に説明する。
まず、当該世代別ガーベージコレクションの概要について説明する。図3Aに示すように、ヒープメモリは、新しいオブジェクトを格納する第1の領域(New Generation領域)と、古いオブジェクトを格納する第2の領域(Old Generation領域)を含む。そして、生成された後短期間で不要となる短命なオブジェクトは第1の領域のみで過ごし、長期間存在するオブジェクトは第2の領域に留まる。
第1の領域は、更に、Eden、From、Toの3つの領域に分割される。ここで、新しいオブジェクトが生成された際に最初に配置される領域がEden領域である。そして、順次新しいオブジェクトが生成され、Eden領域が飽和すると、第1の領域のみを対象とするガーベージコレクションが実施される。この際、例えば、図3Bに示すように、使用中のオブジェクト(例えば、図3Aに示したKey)については、Eden領域からFrom領域へと移動され、不使用の不要なオブジェクトについては破棄され、Eden領域に空き領域が生じる。
その後、更に、順次新しいオブジェクトが生成され、再度Eden領域が飽和すると、再度上記ガーベージコレクションが実施される。この際、From領域とTo領域が互いに入れ替えられる。そして、図3Cに示すように、From領域とTo領域とにある使用中のオブジェクトが再度To領域に移動される。上記のように第1の領域のガーベージコレクションでは、オブジェクトが不要になるまでの間、オブジェクトはFrom領域とTo領域の移動を繰り返し、当該移動回数があらかじめ設定された閾値以上となると、図3Dに示すようにOld領域に移動する。そして、更に時間が経過するにつれて、図3E及び図3Fに示すように、例えば、鍵情報を含むオブジェクトのように頻繁に使用されるオブジェクトについてはOld領域の特定の箇所に滞留する。
なお、ガーベージコレクションには、上記のように第1の領域のみを対象とするガーベージコレクションと、第1及び第2の領域を対象とするガーベージコレクションがあり、前者が頻繁に実施されるのに対し、後者は低い頻度で実施される。また、上記ガーベージコレクションは一例であって、本実施の形態は上記に限定されるものではない。
次に、上記ガーベージコレクションが実施されるメモリを前提として、本実施の形態における鍵情報(Key)を保持するオブジェクト(object)のメモリ上の状態の一例について、説明する。
まず、図4Aに示すように、オブジェクト0が生成されると、Eden領域に格納される。
次に、図4Bに示すように、オブジェクト1が生成され、オブジェクト0の鍵情報がオブジェクト1に保持させられる。そして、例えば、上記第1の領域を対象とするガーベージコレクションのタイミングでオブジェクト0が消去され、図4C、図4Dに示すように鍵情報を有するオブジェクト1がメモリ上に存在することとなる。
次に、予め設定された期間経過後、図4Eに示すように、今度はオブジェクト0が生成され、オブジェクト1の鍵情報がオブジェクト0に保持させられる。そして、次の第1の領域を対象とするガーベージコレクションのタイミングで、オブジェクト1が削除され、その後、図4Fに示すように鍵情報を有するオブジェクト0がメモリ上に存在することとなる。
本実施の形態においては、上記図4A乃至図4Fの処理が繰り返し行われる。これにより、鍵情報を有するオブジェクトが時間の経過に伴い第1の領域内をランダムに移動するとともに、オブジェクト0及び1は予め設定された期間を超えては存在しない。結果として、ユーザ230がメモリダンプを用いた攻撃を試みても、鍵情報を発見することが困難となる。なお、上記のような処理を行わない場合には、上記図3に示すように、時間の経過につれて鍵情報は、第1の領域から第2の領域に移動し第2の領域の特定の領域にとどまることとなり、例えば、メモリダンプにより容易に発見されることは上述のとおりである。
次に、上記のように難読化装置120によって難読化された難読化プログラムが端末装置130にインストールされた場合に難読化装置120で実現される機能的構成の一例について説明する。図5に示すように、端末装置130は、例えば、機能的に、鍵情報取得部501、ポインタ部502、タイマ部503、生成制御部504、第1のオブジェクト生成部505、第2のオブジェクト生成部506、メモリ507、格納部508、消去指示部509、ガーベージコレクション部510を含む。
鍵情報取得部501は、例えば、端末装置130における難読化プログラムの起動に応じて、サーバ110から鍵情報を取得する。また、鍵情報取得部501は、後述するポインタ部502に格納されている識別情報に応じて、第1または第2のオブジェクトに格納された鍵情報を取得する。具体的には、例えば、ポインタ部502が識別情報:0を格納している場合には、第1のオブジェクトから鍵情報を取得し、識別情報:1を格納している場合には、第2のオブジェクトから鍵情報を取得する。
タイマ部503は、時間を計数し、予め設定された期間毎に、後述する生成制御部504に第1または第2のオブジェクトを生成するタイミングを表すタイミング情報を送信する。
生成制御部504は、鍵情報取得部501がサーバ110から鍵情報を取得した際及びタイマ部503からのタイミング情報を取得した際に、ポインタ部502に格納されている識別情報に応じて、第1のオブジェクト生成部505または第2のオブジェクト生成部506に第1または第2のオブジェクトを生成するよう指示する。
例えば、生成制御部504は、ポインタ部502に格納されている識別情報が0の場合には、第2のオブジェクト生成部506に第2のオブジェクトを生成するよう指示し、ポインタ部502に格納されている識別情報が1の場合には、第1のオブジェクト生成部505に第1のオブジェクトを生成するよう指示する。
第1のオブジェクト生成部505及び第2のオブジェクト生成部506は、生成制御部504からの指示に応じて、鍵情報を格納するための第1のオブジェクトまたは第2のオブジェクトをメモリ507に生成する。なお、当該メモリ507は、例えば、記憶部123に含まれる。
ポインタ部502は、サーバ110から取得された鍵情報の第1のオブジェクトへの格納に応じて、識別情報0を格納する。また、後述する消去識別子の格納に応じて、識別情報1を格納する。
格納部508は、第1のオブジェクト生成部505により生成された第1オブジェクトに、鍵情報取得部501によりサーバ110から取得された鍵情報を格納する。また、格納部508は、ポインタ部502に格納されている識別情報に応じて、第1または第2のオブジェクトに、第2または第1のオブジェクトから取得した鍵情報を格納する。例えば、ポインタ部502に識別情報:0が格納されている場合には、第1のオブジェクトから鍵情報を取得して第2のオブジェクトに当該鍵情報を格納する。一方、ポインタ部502に識別情報:1が格納されている場合には、第2のオブジェクトから鍵情報を取得して第1のオブジェクトに当該鍵情報を格納する。
消去指示部509は、格納部508の第1または第2のオブジェクトに第2または第1のオブジェクトから取得した鍵情報を格納に応じて、第2または第1のオブジェクトにオブジェクトが消去されることを示す消去識別子を格納する。具体的には、例えば、ポインタ部502に識別情報0が格納されている場合には、第1のオブジェクトに消去を表す消去識別子を格納し、ポインタ部502に識別情報1が格納されている場合には、第2のオブジェクトに消去を表す消去識別子を格納する。
メモリ507は、上記のように、第1の領域及び第2の領域を有し、第1のオブジェクトや第2のオブジェクト等を格納する。
ガーベージコレクション部510(GC部)は、予め設定された期間毎にガーベージコレクションを行う。例えば、GC部510は、不要なオブジェクトを消去し、また、消去識別子を含む第1または第2のオブジェクトを消去する。なお、ガーベージコレクションの具体的処理については、上述のとおりであるので説明を省略する。
なお、上記難読化プログラムにより端末装置130で実現される機能的構成は、一例にすぎず、本実施の形態は上記に限定されるものではない。
次に、図6を用いて、難読化プログラムの処理のフローについて説明する。なお、下記フローにおいては、難読化プログラムがユーザ230に提供され、当該ユーザ230が用いる端末装置130にインストールされているものとする。
例えば、端末装置130において難読化プログラムが起動されると、鍵情報取得部501は、鍵情報を取得する(S201)。第1のオブジェクト生成部505は、当該鍵情報を格納するための第1のオブジェクトをメモリ507に生成する(S202)。格納部508は、第1のオブジェクト生成部505により生成された第1オブジェクトに、鍵情報取得部501により取得された鍵情報を格納する(S203)。当該格納に応じて、ポインタ部502に識別情報として0を代入する(S204)。
生成制御部504はタイマ部503からタイミング情報を取得する。当該タイミング情報及び上記識別情報に応じて、第2オブジェクト生成部は第2のオブジェクトをメモリ507に生成する(S206)。鍵情報取得部501は、第1のオブジェクトから鍵情報を取得する(S207)。格納部508は、第1のオブジェクトから取得された鍵情報を第2のオブジェクトに格納する(S208)。消去指示部509は、第1のオブジェクトにガーベージコレクションのタイミングで消去される消去識別子を格納する(S209)。当該格納に応じて、ポインタ部502に、識別情報として1を代入する(S210)。
生成制御部504は、タイマ部503からのタイミング情報を取得する(S211)。当該タイミング情報の取得及びポインタ部502に格納された識別情報に応じて、第1のオブジェクト生成部505は、メモリ507に第1のオブジェクトを生成する(S212)。鍵情報取得部501は、第2のオブジェクトから鍵情報を取得する(S213)。格納部508は、第1のオブジェクトからの鍵情報を第2のオブジェクトに格納する(S214)。消去指示部509は、第1のオブジェクトにガーベージコレクションのタイミングで消去される識別子を格納する(S215)。そして、S204に戻る。
上記フローにより、図4を用いて説明したように、鍵情報を有するオブジェクトが時間の経過に伴い第1の領域内をランダムに移動するとともに、第1のオブジェクト及び第2のオブジェクトは予め設定された期間を超えて存在しないこととなる。なお、上記フローは一例であって、本実施の形態は上記に限定されるものではない。例えば、上記においては、難読化プログラムを起動した際に鍵情報が取得される場合について説明したがこれに限られるものではない。
次に、難読化装置120の機能的構成について説明する。難読化装置120は、機能的に、例えば、サーバ110から配布者210が難読化を希望するプログラムを取得するプログラム取得手段と、上記難読化プログラムを実現するための機能的構成を当該プログラムに追加する機能追加手段とを有する。以下、図7を用いて難読化前のプログラムPがJava言語を用いて記述されている場合を例として、難読化装置120において実施されるプログラムPから難読化プログラムPobを生成するフローの概要について説明する。なお、下記においては、暗号化指定部位として、プログラムPに付属しユーザ230のプログラムPの使用において重要な役割を担う画像ファイルPhを対象とする。また、画像ファイルPhはプログラムPに付属しており、プログラムPと同一のフォルダに格納される形で配布者210から難読化装置120に入力される。また、例えば、暗号鍵Keyは256bitの多倍長整数とする。
まず、難読化装置120は、上記プログラムP、暗号鍵Key、暗号化指定部位情報、および配布者210により指定される鍵情報参照変数名を入力情報として取得する。そして、画像ファイルPhを、暗号鍵Keyを用いて暗号化し、暗号化画像ファイルPh_encを作成する。また、プログラムPに付属する画像ファイルPhを消去し、代わりに暗号化画像ファイルPh_encを付属させる(S301)。
プログラムPから画像ファイルPhを読み込むコード部位を全て抽出する(S302)。そして、暗号鍵Keyを格納するための変数v_keyをメンバ変数とし、v_keyを返値とするメソッドget_keyを有するクラスC_keyの記述コードをプログラムPに追加する。
次に、メモリを難読化するためのクラス(メモリ難読化クラス)を追加する(S303)。具体的には、例えば、クラスC_keyのオブジェクトobject0, object 1をメンバとし、0または1の値を持つ変数pointをメンバとし、メンバ変数pointが0の場合にobject0、pointが1の場合にobject1を返値とするメソッドget_object、後述の手順を実行することによりメンバ変数pointを更新するパブリックメソッドset_point、更に、クラスC_keyのオブジェクトobject0を生成しpointに0を代入するコンストラクタを保持するクラスC_getKeyを記述するコードをプログラムPに追加する。ここで、メソッドset_pointは、呼び出しを受けた際にメンバ変数pointが0の場合には、object1を生成し、object0のメンバ変数v_keyの値をobject1のメンバ変数v_keyに代入し、object0にnullを代入し、pointの値を1に設定する。更にメンバ変数pointが1の場合には、object0を生成し、object1のメンバ変数v_keyの値をobject0のメンバ変数v_keyに代入し、object1にnullを代入し、pointの値を0に設定する。
次に、タイマ機能を追加する(S304)。具体的には、例えば、タイマにより予め設定された期間毎にset_pointを呼び出すクラスC_timerのコードをプログラムPに追加する。
次にS302において抽出された画像ファイルPhを読み込む部位を、メモリ難読化クラス・オブジェクトを呼び出すコードに置きかえる(S305)。具体的には、例えば、S302において抽出された画像ファイルPhを読み込む部位全てにおいて、画像ファイルPhを読み込むコードを削除し、代わりにget_objectによって取得されたクラスC_keyのオブジェクトからget_keyメソッドを用いて暗号鍵Keyを取得し、更に暗号鍵Keyを用いて暗号化画像ファイルPh_encを復号し、当該復号結果を画像ファイルPhの代わりに読み込ませるコードを追加する。
最後に、メモリ難読化クラス・オブジェクトへ鍵情報設定用のコードを追加する(S306)。具体的には、例えば、プログラムPの起動直後に通信により配布者210のサーバから暗号鍵Keyを取得し、クラスC_getKey、およびクラスC_timerのオブジェクトを生成し、取得した暗号鍵Keyの値をクラスC_getKey のget_objectメソッドの返値として与えられるC_Keyのオブジェクトの変数v_keyに設定するコードを追加する。
上記フローにより、プログラムPから難読化プログラムPobが生成される。そして、配布者210は、難読化装置120の出力した難読化プログラムPobをネットワーク140経由でユーザ230に配布する点等は上記のとおりである。なお、上記難読化装置120のフローについては、主に、Java言語を用いて実現する場合について説明したが、本実施の形態はこれに限定されるものではない。
本発明は、上記実施の形態に限定されるものではなく、上記実施の形態で示した構成と実質的に同一の構成、同一の作用効果を奏する構成又は同一の目的を達成することができる構成で置き換えてもよい。例えば、上記においては、主に、世代別ガーベージコレクションが行われるメモリ507において、鍵情報を含むオブジェクトを時間の経過とともにメモリ507の第1の領域を移動させる場合について説明したが、当該オブジェクトに含まれる情報は鍵情報に限られず、その他の情報であってもよいことはいうまでもない。
100 難読化システム、110 サーバ、120 難読化装置、130 端末装置111、121 制御部、112、123 記憶部、113、122 通信部124 表示部、125 操作部、501 鍵情報取得部、502 ポインタ部、503 タイマ部、504 生成制御部、505 第1のオブジェクト生成部506、第2のオブジェクト生成部、507 メモリ、508 格納部、509 消去指示部、510 ガーベージコレクション部。

Claims (7)

  1. 第1の領域と第2の領域を有し、オブジェクトが生成される毎に該オブジェクトを順次前記第1の領域に格納するメモリを含み、予め設定された期間毎に、前記オブジェクトのそれぞれについて、オブジェクトの使用頻度に応じて、前記第1の領域から前記第2の領域に移動させるとともに、不使用のオブジェクトについては消去する移動消去処理を行うコンピュータで用いられるプログラムであって、
    あらかじめ設定された情報を保持する第1のオブジェクトを生成する第1のオブジェクト生成手段、
    第2のオブジェクトを生成する第2のオブジェクト生成手段、
    前記第2のオブジェクトに前記情報を格納させる格納手段、及び、
    前記第1のオブジェクトに前記移動消去処理において前記第1のオブジェクトを消去するための消去識別情報を格納させる消去指示手段、
    としてコンピュータを機能させるための難読化プログラム。
  2. 前記移動消去処理は、世代別ガーベージコレクション手法であることを特徴とする請求項1記載の難読化プログラム。
  3. 前記難読化プログラムは、更に、
    あらかじめ設定された期間毎にタイミング情報を生成するタイマ手段としてコンピュータを機能させ、
    前記第1及び第2のオブジェクト生成手段は、前記タイミング情報に応じて、第1及び第2のオブジェクトを生成することを特徴とする請求項1または2に記載の難読化プログラム。
  4. 前記あらかじめ設定された情報は、暗号化されたデータを復号化するための鍵情報を含むことを特徴とする請求項1乃至3のいずれかに記載の難読化プログラム。
  5. 第1の領域と第2の領域を有し、オブジェクトが生成される毎に該オブジェクトを順次前記第1の領域に格納するメモリと、
    予め設定された期間毎に、前記オブジェクトのそれぞれについて、オブジェクトの使用頻度に応じて、前記第1の領域から前記第2の領域に移動させるとともに、不使用のオブジェクトについては消去する移動消去処理手段と、
    あらかじめ設定された情報を保持する第1のオブジェクトを生成する第1のオブジェクト生成手段と、
    第2のオブジェクトを生成する第2のオブジェクト生成手段と、
    前記第2のオブジェクトに前記情報を格納させる格納手段と、
    前記第1のオブジェクトに、前記移動消去処理において前記第1のオブジェクトを消去するための消去識別情報を格納させる消去識別情報を格納させる消去指示手段と、
    を含むことを特徴とする情報処理装置。
  6. オブジェクトが作成される毎に該オブジェクトを順次第1の領域に格納するメモリであって、予め設定された期間毎に、前記オブジェクトのそれぞれについて、オブジェクトの使用頻度に応じて、前記第1の領域から前記第2の領域に移動させるとともに、不使用のオブジェクトについては消去する移動消去処理を行うコンピュータで用いられるプログラムを取得するプログラム取得手段と、
    前記プログラムに、更に、あらかじめ設定された情報を保持する第1のオブジェクトを生成する第1のオブジェクト生成手段、第2のオブジェクトを生成する第2のオブジェクト生成手段、前記第2のオブジェクトに前記情報を格納させる格納手段、及び、前記第1のオブジェクトに前記移動消去処理において前記第1のオブジェクトを消去するための消去識別情報を格納させる消去指示手段、として前記コンピュータを機能させるための機能を追加する機能追加手段と、
    を含むことを特徴とする難読化装置。
  7. 予め設定された期間毎に、前記オブジェクトのそれぞれについて、オブジェクトの使用頻度に応じて、前記第1の領域から前記第2の領域に移動させるとともに、不使用のオブジェクトについては消去する移動消去処理を行う第1のコンピュータで用いられるプログラムを取得するプログラム取得手段、
    前記プログラムに、更に、あらかじめ設定された情報を保持する第1のオブジェクトを生成する第1のオブジェクト生成手段、第2のオブジェクトを生成する第2のオブジェクト生成手段、前記第2のオブジェクトに前記情報を格納させる格納手段、及び、前記第1のオブジェクトに前記移動消去処理において前記第1のオブジェクトを消去するための消去識別情報を格納させる消去指示手段、として前記第1のコンピュータを機能させるための機能を追加する機能追加手段、
    として第2のコンピュータを機能させるための難読化プログラム。
JP2013206366A 2013-10-01 2013-10-01 難読化プログラム、難読化装置、端末装置 Expired - Fee Related JP6146247B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013206366A JP6146247B2 (ja) 2013-10-01 2013-10-01 難読化プログラム、難読化装置、端末装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013206366A JP6146247B2 (ja) 2013-10-01 2013-10-01 難読化プログラム、難読化装置、端末装置

Publications (2)

Publication Number Publication Date
JP2015069624A JP2015069624A (ja) 2015-04-13
JP6146247B2 true JP6146247B2 (ja) 2017-06-14

Family

ID=52836159

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013206366A Expired - Fee Related JP6146247B2 (ja) 2013-10-01 2013-10-01 難読化プログラム、難読化装置、端末装置

Country Status (1)

Country Link
JP (1) JP6146247B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853628B1 (en) * 2004-04-09 2010-12-14 Oracle America, Inc. Selective promotion policy for generational garbage collectors
JP2006293853A (ja) * 2005-04-13 2006-10-26 Ntt Docomo Inc 秘密情報保護システム、ダンプイメージ管理サーバ及び秘密情報保護方法
EP2341123A1 (en) * 2009-12-18 2011-07-06 The Procter & Gamble Company A spray-drying process
US8516019B2 (en) * 2011-10-03 2013-08-20 Oracle America, Inc. Time-based object aging for generational garbage collectors

Also Published As

Publication number Publication date
JP2015069624A (ja) 2015-04-13

Similar Documents

Publication Publication Date Title
US8762431B2 (en) System and method for secure erase in copy-on-write file systems
JP2012150803A (ja) 効率的なボリューム暗号化
CN103617399A (zh) 一种数据文件保护方法及装置
CN106845167A (zh) 一种apk的加固方法和装置,及动态加载方法和装置
KR20090051107A (ko) 프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체
JP2010237480A (ja) コンテンツ保護装置およびコンテンツ保護方法
WO2007091652A1 (ja) 割符情報の管理方法および管理装置
US20070143630A1 (en) Method and device for protecting a program comprising a functional block
US20100275154A1 (en) System and Method For Securely Presenting Data
JP2015141603A (ja) 画像処理装置およびその制御方法、並びにプログラム
JP2007316944A (ja) データ処理装置、データ処理方法、およびデータ処理プログラム
Chen et al. A cross-layer plausibly deniable encryption system for mobile devices
CN103544443A (zh) 一种ntfs文件系统下应用层文件隐藏方法
JP2010217975A (ja) 情報処理装置、アプリケーションプログラム、及びアプリケーションプログラムの実行方法
JP4992109B2 (ja) ファイル保護システム、ファイル保護方法及びコンピュータプログラム
JP6146247B2 (ja) 難読化プログラム、難読化装置、端末装置
Chen et al. The block-based mobile pde systems are not secure-experimental attacks
KR20140044961A (ko) 파일 관리 장치 및 방법
JP6083348B2 (ja) プログラム実行方法および復号装置
JP5282879B2 (ja) プライバシ情報保護システムとその方法
JP2017204173A (ja) データ保護プログラム、データ保護方法及びデータ保護装置
JP2010244261A (ja) 情報処理装置、情報処理方法
EP2674892A1 (en) A method, a device and a computer program support for execution of encrypted computer code
JP2009253490A (ja) メモリシステムの暗号化方式
JP6215468B2 (ja) プログラム保護装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170321

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170501

R150 Certificate of patent or registration of utility model

Ref document number: 6146247

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees