(57)【要約】  【課題】本発明の課題は、第三者が、ソフトウェアのリバースエンジニアリングを容易には行えないデータ復号方法を提供することである。  【解決手段】本発明では、この課題を解決するために、前記実行プログラムを、電子装置のメモリ上に復号して展開するにあたり、メモリ上の位置につき、ユーザーからは容易には分からず、かつ、展開する電子装置によって、又は展開する時刻等の状況によって異なる位置となるよう工夫をした。結果として、復号後の前記プログラムのリバースエンジニアリングを容易には行えないようにすることができる。【選択図】図１
2010176697.tif 000002
【特許請求の範囲】
【請求項１】
暗号化したプログラムを電子装置に復号させるプログラムであって、
その内部に暗号化した前記プログラムと、
前記復号のための暗号鍵を含み、
前記暗号化したプログラムを前記電子装置のメモリ上において復号するにあたり、前記プログラムが復号する前記電子装置のメモリ上での位置は、実行プログラムの一部に対して物理メモリを割り当てるために、復号の時刻を用いてアドレスを計算して、少なくとも実行プログラムを復号したときのサイズ分の物理メモリを割り当てることを特徴とする暗号化プログラム復号プログラム。
【請求項２】
前記暗号化したプログラムは、映像、音声、文字の一又は一以上の組合せでなるデータを再生することをその機能に含むことを特徴とする請求項１に記載の暗号化プログラム復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第三者がリバースエンジニアリングを容易には行うことができない暗号化プログラム復号方法又は暗号化プログラム復号プログラムに関する。
【背景技術】
【０００２】
近年、コンピュータの急速な普及に伴い、様々なソフトウェアが使用されるようになっている。そして、ソフトウェアを実行する端末としては、サーバ、パーソナルコンピュータ、ワークステーションのほか、ＰＤＡ、携帯電話、ビデオゲーム機等、あらゆる電子機器が利用可能となっている。
【０００３】
そして、ソフトウェア実行プログラムにおいては、デバッガ（例えば非特許文献１参照。）などを用いて、いわゆるリバースエンジニアリングによって違法又は不正な目的で当該ソフトウェアを解析することを防止する必要性は高い。
【０００４】
また、ここ数年、電子的な形で記録された音楽、映画、写真等いわゆるデジタルコンテンツが流通又は配布され、前記のような端末を通して再生可能となってきている。一般的に、デジタルコンテンツは、複製が容易であるため、著作権その他知的財産権の保護などの目的から、デジタルコンテンツを容易に複製、剽窃、解読できないようにすることが要求されるようになってきている。
【０００５】
そのため、ソフトウェア及びデジタルコンテンツの暗号化及びリバースエンジニアリング防止の方法は、様々な形のものが考案されてきたが、本発明は、新規な方法によってその一をなすものである。
【先行技術文献】
【非特許文献】
【０００６】
リチャードＭストールマン他著、「ＧＤＢデバッギング入門」、日本国、株式会社アスキー発行
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の課題は、第三者が、ソフトウェアのリバースエンジニアリングを容易には行えないデータ復号方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明では、この課題を解決するために、前記実行プログラムを、電子装置のメモリ上に復号して展開するにあたり、メモリ上の位置につき、ユーザーからは容易には分からず、かつ、展開する電子装置によって、又は展開する時刻等の状況によって異なる位置となるよう工夫をした。結果として、復号後の前記プログラムのリバースエンジニアリングを容易には行えないようにすることができる。
【発明の効果】
【０００９】
本発明によれば、ソフトウェアが暗号化され、ソフトウェアの実行の際にはメモリに展開される開始アドレスが実行のたびに異なるので、第三者が容易にリバースエンジニアリングを行なえないソフトウェアを提供することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】実施形態１を説明するための概念図。
【図２】実施形態１を説明するためのフローチャート。
【図３】プログラムの製造と配布の概要を示す一例図。
【図４】実施形態の具体例を説明するための図。
【発明を実施するための形態】
【００１１】
以下に、本発明の実施の形態を説明する。なお、本発明はこれら実施の形態に何ら限定されるものではなく、その要旨を逸脱しない範囲において、種々なる態様で実施しうる。
【００１２】
実施形態１は、主に請求項１などについて説明する。
【００１３】
実施形態２は、主に請求項１などについて説明する。
【００１４】
実施形態３は、主に請求項１などについて説明する。
【００１５】
実施形態４は、主に請求項１などについて説明する。
【００１６】
実施形態５は、主に請求項２などについて説明する。
<<実施形態１>>
【００１７】
<実施形態１：概要>
【００１８】
実施形態１は、暗号化したプログラムを電子装置に復号する方法であって、前記プログラムが復号する前記電子装置のメモリ上での位置を取得する復号位置取得ステップと、前記プログラムを前記復号位置に復号する復号ステップとを含み、前記復号位置取得ステップで取得される復号位置は、前記電子装置ごとに、又は毎回の復号の度に変化することを特徴とする暗号化プログラム復号方法である。
【００１９】
図１は、本実施形態の一例の概念を示すものである。また、図２は、実施形態１を説明するフローチャートである。
【００２０】
まず、図１を用いて、本実施形態の概略を説明する。
【００２１】
復号プログラム１０１は、メモリ１０４のアドレス１上にロードされ、暗号化した実行プログラム１０２を復号し、電子装置１０３のメモリ１０４のアドレス２上に展開するものである。
【００２２】
なお、実行プログラム１０２を暗号化する暗号化技術については、任意のものを用いることができる。例えば、アメリカ政府標準になっているＤＥＳ、ＦＥＡＬ、ＭＩＳＴＹ、ＩＤＥＡといった秘密鍵方式を用いることもでき、また、ＲＳＡ暗号、楕円曲線暗号、ＥｌＧａｍａｌ暗号などのいわゆる公開鍵方式を用いることもできる。後者（公開鍵方式）の場合には、プログラムの製作者等が、実行プログラム１０２を、自身の秘密鍵を用いて暗号化する。そして、製作者等が、前記暗号化された実行プログラム１０２に加え、復号プログラム１０１に、前記秘密鍵に対応する公開鍵を含めてユーザーに配布したり、別の方法を用いたりして、前記公開鍵をユーザーに配布することになる。
【００２３】
復号プログラム１０１と、実行プログラム１０２は一体として動作するが、必ずしも復号プログラム１０１と実行プログラム１０２が同一ファイルとなっている必要はない。
【００２４】
なお、実行プログラム１０２が展開し実行される電子装置は、ＰＣ（パーソナルコンピュータ）のみならず、サーバ、パーソナルコンピュータ、ワークステーションのほか、ＰＤＡ、携帯電話、ビデオゲーム機等、ＣＰＵ及びメモリ（これらの機能を含むチップを含む）を搭載するあらゆる電子機器が使用可能である。また、前記電子装置は、単独でもよく、複数の装置がネットワーク接続されたシステム等でもよい。
【００２５】
<実施形態１：構成及び処理の流れ>
【００２６】
次に、実施形態１の構成を説明する。図２は、実施形態１での処理の流れの一例を示したものである。本実施形態における方法は、以下に示すステップよりなる。以下に示すステップには、本実施形態に必須の構成である、プログラムが復号する電子装置のメモリ上での位置を取得する復号位置取得ステップと、前記プログラムを前記復号位置に復号する復号ステップが含まれている。
【００２７】
また、以下の各ステップは、電子装置で動作するプログラムで実行することができる。また、このプログラムを計算機によって読み取り可能な記録媒体に記録することができ、前記記憶媒体は、電子装置から独立した媒体に限らず、ＬＡＮやインターネット等により送信されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。さらに、以下の各ステップは、電子装置上のＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のミドルウェア等によって、本実施形態を実現するための各処理の一部を実行する形でもよい。（本明細書の全体を通して同様である。）
【００２８】
<ステップＳ２０１>
【００２９】
ステップＳ２０１は、復号プログラム１０１を実行するステップである。復号プログラム１０１を、これを実行する電子装置１０３のメモリ１０４にロードし、起動し、実行する。
【００３０】
前記復号プログラムがロードされるメモリ上のアドレスは、前記電子装置のオペレーティングシステム（以下、「ＯＳ」と記す。）が決めることが多い。
【００３１】
<ステップＳ２０２>
【００３２】
ステップＳ２０２は、復号プログラム１０１が、暗号化した実行プログラム１０２が復号する電子装置のメモリ上での位置を取得する復号位置取得ステップである。
【００３３】
ステップＳ２０２によって取得される復号位置は、前記電子装置ごとに、又は毎回の復号の度に変化することが特徴となっている。すなわち、復号位置を、電子装置ごとに、又は毎回の復号の度に変化する値を基礎に、これに何らかの演算を加え、又は演算を加えずに、復号位置たるメモリ上のアドレスの数値とすることを特徴とする。
【００３４】
例えば、電子装置によって異なる値を持つものとして、当該電子装置のＩＰアドレス、当該電子装置の製造番号、当該電子装置のＯＳ等特定ソフトウェアのライセンス番号等があり、また、復号の度に変化する値として、復号時のＨＤの空容量、メモリの空容量等があるが、使用可能なものはどれでも用いることができる。また、上記各値を複数組み合わせることも可能である。
【００３５】
<ステップＳ２０３>
【００３６】
ステップＳ２０３は、ステップＳ２０２によって取得された復号位置をもとに、復号プログラム１０１が、実行プログラム１０２を、前記復号位置に復号するステップである。
【００３７】
すなわち、ステップＳ２０２によって算定されたメモリ上のアドレスに、実行プログラム１０２を復号し、展開するステップである。
【００３８】
なお、仮想メモリを使用しているシステムでは、論理的なアドレススペースの全てに対して物理メモリが割り当てられているとは限らないので、ステップＳ２０２によって取得された復号位置から、少なくとも実行プログラム１０２を復号したときのサイズ分の物理メモリを割り当てる作業が必要となる。このためには、メモリを割り当てる関数やシステムコール（例えば、ｍａｌｌｏｃ（）、ｓｂｒｋ（）など）を用いる。より具体的には、ｓｂｒｋ（）は指定されたサイズのメモリ領域を、データセグメントを拡張して確保するシステムコールであるので、まず現在のデータセグメントの終わりのアドレスを取得し、この値と、ステップＳ２０２で算定されたメモリ上のアドレスとの差を求め、これに実行プログラム１０２を復号したときのサイズを加えた値をｓｂｒｋ（）の引数として渡してメモリを確保する。
【００３９】
また、実行プログラム１０２の中のジャンプ命令のジャンプ先のアドレスや変数のアドレスを変更するために、実行プログラム１０２を復号したものに、コンパイラの一部を構成するリンカやローダを実行するようにしてもよい。
【００４０】
<実施形態１：具体例>
【００４１】
以下、図３を用いて一具体例を説明する。あるソフトウェアメーカーが、Ｐｌａｙｅｒ．ｅｘｅという実行プログラム３０２を作成し、これを暗号化して配布することとする。
【００４２】
前記ソフトメーカーは、秘密鍵方式を採用することとし、まず、前記ｐｌａｙｅｒ．ｅｘｅ３０２を、秘密鍵で暗号化する。
【００４３】
次に、前記ソフトメーカーは、暗号化した前記Ｐｌａｙｅｒ．ｅｘｅ３０２を、前記秘密鍵に対応する公開鍵とともに、Ｄｅｃｏｄｅｒ．ｅｘｅという復号プログラム３０１に組み込み、ＣＤ−ＲＯＭ３０３などの媒体に記録した上で、ユーザーに配布する。なお、ＣＤ−ＲＯＭなどの媒体を使って配布せず、インターネットなどを用いてダウンロード可能として配布してもよい。
【００４４】
ユーザーは、自己のパーソナルコンピュータ３０４上で、同パーソナルコンピュータに接続されたＣＤ−ＲＯＭドライブから読み込んだＤｅｃｏｄｅｒ．ｅｘｅ３０１を実行した。図４のＸＸＸＸＸＸＸＸは、Ｄｅｃｏｄｅｒ．ｅｘｅ３０１が、パーソナルコンピュータ３０４のメモリ３０５にロードされた際のアドレスを表している。前記アドレスは、前記パーソナルコンピュータのＯＳが決めることが多い。
【００４５】
Ｄｅｃｏｄｅｒ．ｅｘｅ３０１は、組み込まれた復号用鍵を用いて、Ｐｌａｙｅｒ．ｅｘｅ３０２を復号し、電子装置のメモリ３０５に展開する。
【００４６】
まず、Ｄｅｃｏｄｅｒ．ｅｘｅ３０１は、Ｐｌａｙｅｒ．ｅｘｅ３０２を復号するメモリ上のアドレスYYYYYYYYを取得する。具体的には、Ｐｌａｙｅｒ．ｅｘｅ３０２は、まず、前記パーソナルコンピュータ３０４のＩＰアドレスを取得した。さらに、Ｄｅｃｏｄｅｒ．ｅｘｅ３０１は、前記ＰＣのハードディスクの空容量を取得する。
【００４７】
そして、Ｄｅｃｏｄｅｒ．ｅｘｅ３０１は、前記ＩＰアドレス及びＨＤ空容量に、一定の演算を加え、Ｐｌａｙｅｒ．ｅｘｅ３０２を展開するアドレスをＹＹＹＹＹＹＹＹと算定する。
【００４８】
そして、Ｄｅｃｏｄｅｒ．ｅｘｅ３０１は、前記復号にあたり、算定されたアドレスＹＹＹＹＹＹＹＹに、Ｐｌａｙｅｒ．ｅｘｅ３０２を展開する。
【００４９】
<実施形態１：効果>
【００５０】
以上のとおり、本実施形態によれば、暗号化した実行プログラムを復号する際、復号化するプログラムのメモリ上において展開するアドレスを、復号する電子装置によって異なる値、又は、復号の時によって異なる値に基づいて計算するため、結果として、復号後の前記プログラムのメモリ上の位置を容易に探索することができず、結果、リバースエンジニアリングを容易には行えないようにすることができる。
<<実施形態２>>
【００５１】
<実施形態２：概要>
【００５２】
実施形態２は、前記復号位置取得ステップは、前記復号位置を、前記復号位置取得ステップが実行される時刻及び／又は前記電子装置の演算装置のシリアルナンバーと関連して取得することを特徴とする実施形態１のデータ復号方法である。
【００５３】
実施形態２は、以下に説明するところを除けば、概要、構成、具体例及び効果については、いずれも実施形態１と同様である。
【００５４】
実施形態２の特徴は、前記復号位置を、実施形態１と同様、復号化するプログラムのメモリ上において展開するアドレスを、復号する電子装置によって異なる値、又は、復号の時によって異なる値に基づいて計算するため、前者については、前記電子装置の演算装置のシリアルナンバーを、後者については、前記復号位置取得ステップが実行される時刻を使用する点にある。
【００５５】
前記シリアルナンバー又は時刻をそれぞれ単独で用いてもよく、両者を組み合わせて用いてもよい。
【００５６】
<実施形態２：特徴>
【００５７】
時刻情報に基づいてアドレスを計算する方法は様々考えられ、どんな方法でもよいが、一例としては以下の方法が考えられる。
【００５８】
ある時点、例えば、１９００年１月１日午前０時０分０秒と、復号開始時点の間の秒数を計算し、当該秒数に相当する数値又はこれを適当な数で除した数値を、実行プログラムの先頭アドレスとすることが考えられる。
【００５９】
すなわち、前記復号開始時点での時刻が、２００３年４月１日午前１０時０分０秒であるとすると、１９００年１月１日午前０時０分０秒との間の秒数は、３，２５８，２６６，４００となる。これを１６進数に変換すると、Ｃ２３５３３２０となる。これを、実行プログラムの先頭アドレスとすることができる。または、復号する電子装置のシステムによって、復号位置のアドレスに制約がある場合には、前記数値に適当な演算を加え、前記システムが許容するアドレスを算定することができる。
【００６０】
前記電子装置の演算装置のシリアルナンバーを用いてアドレスを計算するには、復号プログラムが、前記演算装置のシリアルナンバーを取得し、復号する電子装置のシステムが許容するアドレスの範囲内となるよう前記シリアルナンバーに適当な演算を加え、復号位置を取得することができる。
<<実施形態３>>
【００６１】
<実施形態３：概要>
【００６２】
実施形態３は、暗号化したプログラムを電子装置に復号プログラムであって、その内部に暗号化した前記プログラムと、前記復号のための暗号鍵を含み、前記暗号化したプログラムを前記電子装置のメモリ上において復号するにあたり、前記プログラムが復号する前記電子装置のメモリ上での位置は、前記電子装置ごとに、又は毎回の復号の度に変化することを特徴とするデータ復号プログラムである。
【００６３】
<実施形態３：構成>
【００６４】
実施形態３の発明は、実施形態１の各ステップを実行するためのプログラムであるが、その内部に、暗号化したプログラムと、復号のための暗号鍵を含むことを特徴とする。その他の概要、構成、具体例及び効果については、いずれも実施形態１と同様である。
【００６５】
本実施形態のプログラムは、コンピュータなどの電子装置上によって実行される。例えば、その一例として、コンピュータを利用する場合には、本実施形態のプログラムは、ＣＰＵ、メモリ、バス、インターフェイス、周辺装置などから構成されるハードウエアと、これらのハードウエア上にて実行可能なＯＳ、ミドルウェア等のソフトウエアと協働して実行される。
<<実施形態４>>
【００６６】
<実施形態４：概要>
【００６７】
実施形態４は、前記暗号化したプログラムを前記電子装置のメモリ上において復号するにあたり、前記プログラムが復号する前記電子装置のメモリ上での位置を、前記復号プログラムが復号を実行する時刻及び／又は前記電子装置の演算装置のシリアルナンバーと関連して取得することを特徴とする実施形態３のデータ復号プログラムである。
【００６８】
実施形態４の概要、構成、具体例及び効果については、いずれも実施形態２及び３と同様である。
<<実施形態５>>
【００６９】
<実施形態５：概要>
【００７０】
実施形態５は、前記暗号化したプログラムが、映像、音声、文字の一又は一以上の組合せでなるデータを再生することをその機能に含むことを特徴とする請求項１の暗号化プログラム復号プログラムである。
【００７１】
すなわち、前記暗号化したプログラムは、映像、音声、文字の一又は一以上の組合せでなるデータ、すなわち、いわゆるマルチメディアコンテンツ再生をその機能とするプログラムであることが、本実施形態の特徴である。
【００７２】
<実施形態５：具体例>
【００７３】
ある映画配信会社が、映像と音声を、映像音声データとして配布する。そして、前記映像音声データは、専用の再生プログラムを使用しないと再生できないよう、特殊なデータ形式を取る。
【００７４】
この場合、前記映画配信会社は、前記映像音声データと、専用の再生プログラムを合わせてユーザーに配布する。または、前記専用の再生プログラムをあらかじめ保有しているユーザーに、前記映像音声データを配布する。
【００７５】
前記専用の再生プログラムは、実施形態３のように、暗号化され、さらに、符号プログラムと復号のための暗号鍵が含まれている。
【００７６】
ユーザーは、前記映像音声データ及び専用の再生プログラムを受け取り、前記専用の再生プログラムを用いて、前記映像音声データを再生することができる。
【００７７】
<実施形態５：効果>
【００７８】
以上のとおり、本実施形態によれば、実施形態１〜４と同様、リバースエンジニアリングを容易には行えないようにすることができ、再生プログラムを容易には解析できないようにする結果、権限のない者が、再生プログラムが再生するマルチメディアコンテンツを、閲覧したり、複製、改変等を行ったりすることを、容易には行えないようにすることができる。
【産業上の利用可能性】
【００７９】
本発明は、第三者が容易にリバースエンジニアリングを行なうことができないプログラムを提供するという効果を有し、暗号化プログラム復号方法及び暗号化プログラム復号プログラムとして有用である。
【符号の説明】
【００８０】
０１０１    復号プログラム
０１０２    暗号化したプログラム
０１０３    電子装置
０１０４    電子装置上のメモリ
【図１】
2010176697.tif 000003
【図２】
2010176697.tif 000004
【図３】
2010176697.tif 000005
【図４】
2010176697.tif 000006