図面 (/)

技術 暗号化プログラム復号方法及び暗号化プログラム復号プログラム

出願人 株式会社DNPハイパーテック
発明者 小川秀明
出願日 2010年3月29日 (10年9ヶ月経過) 出願番号 2010-074250
公開日 2010年8月12日 (10年4ヶ月経過) 公開番号 2010-176697
状態 特許登録済
技術分野 ストアードプログラムにおける機密保護
主要キーワード 特定ソフトウェア 復号位置 ソフトウェアメーカー 復号用鍵 空容量 ライセンス番号 知的財産権 デバッギング
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2010年8月12日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (5)

課題

本発明の課題は、第三者が、ソフトウェアリバースエンジニアリングを容易には行えないデータ復号方法を提供することである。

解決手段

本発明では、この課題を解決するために、前記実行プログラムを、電子装置メモリ上に復号して展開するにあたり、メモリ上の位置につき、ユーザーからは容易には分からず、かつ、展開する電子装置によって、又は展開する時刻等の状況によって異なる位置となるよう工夫をした。結果として、復号後の前記プログラムのリバースエンジニアリングを容易には行えないようにすることができる。

概要

背景

近年、コンピュータの急速な普及に伴い、様々なソフトウェアが使用されるようになっている。そして、ソフトウェアを実行する端末としては、サーバパーソナルコンピュータワークステーションのほか、PDA、携帯電話ビデオゲーム機等、あらゆる電子機器利用可能となっている。

そして、ソフトウェア実行プログラムにおいては、デバッガ(例えば非特許文献1参照。)などを用いて、いわゆるリバースエンジニアリングによって違法又は不正な目的で当該ソフトウェアを解析することを防止する必要性は高い。

また、ここ数年、電子的な形で記録された音楽映画写真等いわゆるデジタルコンテンツ流通又は配布され、前記のような端末を通して再生可能となってきている。一般的に、デジタルコンテンツは、複製が容易であるため、著作権その他知的財産権の保護などの目的から、デジタルコンテンツを容易に複製、剽窃、解読できないようにすることが要求されるようになってきている。

そのため、ソフトウェア及びデジタルコンテンツの暗号化及びリバースエンジニアリング防止の方法は、様々な形のものが考案されてきたが、本発明は、新規な方法によってその一をなすものである。

概要

本発明の課題は、第三者が、ソフトウェアのリバースエンジニアリングを容易には行えないデータ復号方法を提供することである。 本発明では、この課題を解決するために、前記実行プログラムを、電子装置メモリ上に復号して展開するにあたり、メモリ上の位置につき、ユーザーからは容易には分からず、かつ、展開する電子装置によって、又は展開する時刻等の状況によって異なる位置となるよう工夫をした。結果として、復号後の前記プログラムのリバースエンジニアリングを容易には行えないようにすることができる。

目的

本発明の課題は、第三者が、ソフトウェアのリバースエンジニアリングを容易には行えないデータ復号方法を提供する

効果

実績

技術文献被引用数
0件
牽制数
2件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

暗号化したプログラム電子装置復号させるプログラムであって、その内部に暗号化した前記プログラムと、前記復号のための暗号鍵を含み、前記暗号化したプログラムを前記電子装置のメモリ上において復号するにあたり、前記プログラムが復号する前記電子装置のメモリ上での位置は、実行プログラムの一部に対して物理メモリ割り当てるために、復号の時刻を用いてアドレスを計算して、少なくとも実行プログラムを復号したときのサイズ分の物理メモリを割り当てることを特徴とする暗号化プログラム復号プログラム

請求項2

前記暗号化したプログラムは、映像音声文字の一又は一以上の組合せでなるデータを再生することをその機能に含むことを特徴とする請求項1に記載の暗号化プログラム復号プログラム。

技術分野

0001

本発明は、第三者リバースエンジニアリングを容易には行うことができない暗号化プログラム復号方法又は暗号化プログラム復号プログラムに関する。

背景技術

0002

近年、コンピュータの急速な普及に伴い、様々なソフトウェアが使用されるようになっている。そして、ソフトウェアを実行する端末としては、サーバパーソナルコンピュータワークステーションのほか、PDA、携帯電話ビデオゲーム機等、あらゆる電子機器利用可能となっている。

0003

そして、ソフトウェア実行プログラムにおいては、デバッガ(例えば非特許文献1参照。)などを用いて、いわゆるリバースエンジニアリングによって違法又は不正な目的で当該ソフトウェアを解析することを防止する必要性は高い。

0004

また、ここ数年、電子的な形で記録された音楽映画写真等いわゆるデジタルコンテンツ流通又は配布され、前記のような端末を通して再生可能となってきている。一般的に、デジタルコンテンツは、複製が容易であるため、著作権その他知的財産権の保護などの目的から、デジタルコンテンツを容易に複製、剽窃、解読できないようにすることが要求されるようになってきている。

0005

そのため、ソフトウェア及びデジタルコンテンツの暗号化及びリバースエンジニアリング防止の方法は、様々な形のものが考案されてきたが、本発明は、新規な方法によってその一をなすものである。

先行技術

0006

チャードストールマン他著、「GDデバッギング入門」、日本国、株式会社アスキー発行

発明が解決しようとする課題

0007

本発明の課題は、第三者が、ソフトウェアのリバースエンジニアリングを容易には行えないデータ復号方法を提供することである。

課題を解決するための手段

0008

本発明では、この課題を解決するために、前記実行プログラムを、電子装置メモリ上に復号して展開するにあたり、メモリ上の位置につき、ユーザーからは容易には分からず、かつ、展開する電子装置によって、又は展開する時刻等の状況によって異なる位置となるよう工夫をした。結果として、復号後の前記プログラムのリバースエンジニアリングを容易には行えないようにすることができる。

発明の効果

0009

本発明によれば、ソフトウェアが暗号化され、ソフトウェアの実行の際にはメモリに展開される開始アドレスが実行のたびに異なるので、第三者が容易にリバースエンジニアリングを行なえないソフトウェアを提供することが可能となる。

図面の簡単な説明

0010

実施形態1を説明するための概念図。
実施形態1を説明するためのフローチャート
プログラムの製造と配布の概要を示す一例図。
実施形態の具体例を説明するための図。

実施例

0011

以下に、本発明の実施の形態を説明する。なお、本発明はこれら実施の形態に何ら限定されるものではなく、その要旨を逸脱しない範囲において、種々なる態様で実施しうる。

0012

実施形態1は、主に請求項1などについて説明する。

0013

実施形態2は、主に請求項1などについて説明する。

0014

実施形態3は、主に請求項1などについて説明する。

0015

実施形態4は、主に請求項1などについて説明する。

0016

実施形態5は、主に請求項2などについて説明する。
<<実施形態1>>

0017

<実施形態1:概要>

0018

実施形態1は、暗号化したプログラムを電子装置に復号する方法であって、前記プログラムが復号する前記電子装置のメモリ上での位置を取得する復号位置取得ステップと、前記プログラムを前記復号位置に復号する復号ステップとを含み、前記復号位置取得ステップで取得される復号位置は、前記電子装置ごとに、又は毎回の復号の度に変化することを特徴とする暗号化プログラム復号方法である。

0019

図1は、本実施形態の一例の概念を示すものである。また、図2は、実施形態1を説明するフローチャートである。

0020

まず、図1を用いて、本実施形態の概略を説明する。

0021

復号プログラム101は、メモリ104のアドレス1上にロードされ、暗号化した実行プログラム102を復号し、電子装置103のメモリ104のアドレス2上に展開するものである。

0022

なお、実行プログラム102を暗号化する暗号化技術については、任意のものを用いることができる。例えば、アメリカ政府標準になっているDES、FEAL、MISTY、IDEAといった秘密鍵方式を用いることもでき、また、RSA暗号楕円曲線暗号、ElGamal暗号などのいわゆる公開鍵方式を用いることもできる。後者(公開鍵方式)の場合には、プログラムの製作者等が、実行プログラム102を、自身の秘密鍵を用いて暗号化する。そして、製作者等が、前記暗号化された実行プログラム102に加え、復号プログラム101に、前記秘密鍵に対応する公開鍵を含めてユーザーに配布したり、別の方法を用いたりして、前記公開鍵をユーザーに配布することになる。

0023

復号プログラム101と、実行プログラム102は一体として動作するが、必ずしも復号プログラム101と実行プログラム102が同一ファイルとなっている必要はない。

0024

なお、実行プログラム102が展開し実行される電子装置は、PC(パーソナルコンピュータ)のみならず、サーバ、パーソナルコンピュータ、ワークステーションのほか、PDA、携帯電話、ビデオゲーム機等、CPU及びメモリ(これらの機能を含むチップを含む)を搭載するあらゆる電子機器が使用可能である。また、前記電子装置は、単独でもよく、複数の装置がネットワーク接続されたシステム等でもよい。

0025

<実施形態1:構成及び処理の流れ>

0026

次に、実施形態1の構成を説明する。図2は、実施形態1での処理の流れの一例を示したものである。本実施形態における方法は、以下に示すステップよりなる。以下に示すステップには、本実施形態に必須の構成である、プログラムが復号する電子装置のメモリ上での位置を取得する復号位置取得ステップと、前記プログラムを前記復号位置に復号する復号ステップが含まれている。

0027

また、以下の各ステップは、電子装置で動作するプログラムで実行することができる。また、このプログラムを計算機によって読み取り可能な記録媒体に記録することができ、前記記憶媒体は、電子装置から独立した媒体に限らず、LANやインターネット等により送信されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。さらに、以下の各ステップは、電子装置上のOS(オペレーティングシステム)や、データベース管理ソフトネットワークソフト等のミドルウェア等によって、本実施形態を実現するための各処理の一部を実行する形でもよい。(本明細書の全体を通して同様である。)

0028

<ステップS201>

0029

ステップS201は、復号プログラム101を実行するステップである。復号プログラム101を、これを実行する電子装置103のメモリ104にロードし、起動し、実行する。

0030

前記復号プログラムがロードされるメモリ上のアドレスは、前記電子装置のオペレーティングシステム(以下、「OS」と記す。)が決めることが多い。

0031

<ステップS202>

0032

ステップS202は、復号プログラム101が、暗号化した実行プログラム102が復号する電子装置のメモリ上での位置を取得する復号位置取得ステップである。

0033

ステップS202によって取得される復号位置は、前記電子装置ごとに、又は毎回の復号の度に変化することが特徴となっている。すなわち、復号位置を、電子装置ごとに、又は毎回の復号の度に変化する値を基礎に、これに何らかの演算を加え、又は演算を加えずに、復号位置たるメモリ上のアドレスの数値とすることを特徴とする。

0034

例えば、電子装置によって異なる値を持つものとして、当該電子装置のIPアドレス、当該電子装置の製造番号、当該電子装置のOS等特定ソフトウェアライセンス番号等があり、また、復号の度に変化する値として、復号時のHDの空容量、メモリの空容量等があるが、使用可能なものはどれでも用いることができる。また、上記各値を複数組み合わせることも可能である。

0035

<ステップS203>

0036

ステップS203は、ステップS202によって取得された復号位置をもとに、復号プログラム101が、実行プログラム102を、前記復号位置に復号するステップである。

0037

すなわち、ステップS202によって算定されたメモリ上のアドレスに、実行プログラム102を復号し、展開するステップである。

0038

なお、仮想メモリを使用しているシステムでは、論理的なアドレススペースの全てに対して物理メモリ割り当てられているとは限らないので、ステップS202によって取得された復号位置から、少なくとも実行プログラム102を復号したときのサイズ分の物理メモリを割り当てる作業が必要となる。このためには、メモリを割り当てる関数システムコール(例えば、malloc()、sbrk()など)を用いる。より具体的には、sbrk()は指定されたサイズのメモリ領域を、データセグメント拡張して確保するシステムコールであるので、まず現在のデータセグメントの終わりのアドレスを取得し、この値と、ステップS202で算定されたメモリ上のアドレスとの差を求め、これに実行プログラム102を復号したときのサイズを加えた値をsbrk()の引数として渡してメモリを確保する。

0039

また、実行プログラム102の中のジャンプ命令ジャンプ先のアドレスや変数のアドレスを変更するために、実行プログラム102を復号したものに、コンパイラの一部を構成するリンカローダを実行するようにしてもよい。

0040

<実施形態1:具体例>

0041

以下、図3を用いて一具体例を説明する。あるソフトウェアメーカーが、Player.exeという実行プログラム302を作成し、これを暗号化して配布することとする。

0042

前記ソフトメーカーは、秘密鍵方式を採用することとし、まず、前記player.exe302を、秘密鍵で暗号化する。

0043

次に、前記ソフトメーカーは、暗号化した前記Player.exe302を、前記秘密鍵に対応する公開鍵とともに、Decoder.exeという復号プログラム301に組み込み、CD−ROM303などの媒体に記録した上で、ユーザーに配布する。なお、CD−ROMなどの媒体を使って配布せず、インターネットなどを用いてダウンロード可能として配布してもよい。

0044

ユーザーは、自己のパーソナルコンピュータ304上で、同パーソナルコンピュータに接続されたCD−ROMドライブから読み込んだDecoder.exe301を実行した。図4のXXXXXXXXは、Decoder.exe301が、パーソナルコンピュータ304のメモリ305にロードされた際のアドレスを表している。前記アドレスは、前記パーソナルコンピュータのOSが決めることが多い。

0045

Decoder.exe301は、組み込まれた復号用鍵を用いて、Player.exe302を復号し、電子装置のメモリ305に展開する。

0046

まず、Decoder.exe301は、Player.exe302を復号するメモリ上のアドレスYYYYYYYYを取得する。具体的には、Player.exe302は、まず、前記パーソナルコンピュータ304のIPアドレスを取得した。さらに、Decoder.exe301は、前記PCのハードディスクの空容量を取得する。

0047

そして、Decoder.exe301は、前記IPアドレス及びHD空容量に、一定の演算を加え、Player.exe302を展開するアドレスをYYYYYYYYと算定する。

0048

そして、Decoder.exe301は、前記復号にあたり、算定されたアドレスYYYYYYYYに、Player.exe302を展開する。

0049

<実施形態1:効果>

0050

以上のとおり、本実施形態によれば、暗号化した実行プログラムを復号する際、復号化するプログラムのメモリ上において展開するアドレスを、復号する電子装置によって異なる値、又は、復号の時によって異なる値に基づいて計算するため、結果として、復号後の前記プログラムのメモリ上の位置を容易に探索することができず、結果、リバースエンジニアリングを容易には行えないようにすることができる。
<<実施形態2>>

0051

<実施形態2:概要>

0052

実施形態2は、前記復号位置取得ステップは、前記復号位置を、前記復号位置取得ステップが実行される時刻及び/又は前記電子装置の演算装置シリアルナンバーと関連して取得することを特徴とする実施形態1のデータ復号方法である。

0053

実施形態2は、以下に説明するところを除けば、概要、構成、具体例及び効果については、いずれも実施形態1と同様である。

0054

実施形態2の特徴は、前記復号位置を、実施形態1と同様、復号化するプログラムのメモリ上において展開するアドレスを、復号する電子装置によって異なる値、又は、復号の時によって異なる値に基づいて計算するため、前者については、前記電子装置の演算装置のシリアルナンバーを、後者については、前記復号位置取得ステップが実行される時刻を使用する点にある。

0055

前記シリアルナンバー又は時刻をそれぞれ単独で用いてもよく、両者を組み合わせて用いてもよい。

0056

<実施形態2:特徴>

0057

時刻情報に基づいてアドレスを計算する方法は様々考えられ、どんな方法でもよいが、一例としては以下の方法が考えられる。

0058

ある時点、例えば、1900年1月1日午前0時0分0秒と、復号開始時点の間の秒数を計算し、当該秒数に相当する数値又はこれを適当な数で除した数値を、実行プログラムの先頭アドレスとすることが考えられる。

0059

すなわち、前記復号開始時点での時刻が、2003年4月1日午前10時0分0秒であるとすると、1900年1月1日午前0時0分0秒との間の秒数は、3,258,266,400となる。これを16進数に変換すると、C2353320となる。これを、実行プログラムの先頭アドレスとすることができる。または、復号する電子装置のシステムによって、復号位置のアドレスに制約がある場合には、前記数値に適当な演算を加え、前記システムが許容するアドレスを算定することができる。

0060

前記電子装置の演算装置のシリアルナンバーを用いてアドレスを計算するには、復号プログラムが、前記演算装置のシリアルナンバーを取得し、復号する電子装置のシステムが許容するアドレスの範囲内となるよう前記シリアルナンバーに適当な演算を加え、復号位置を取得することができる。
<<実施形態3>>

0061

<実施形態3:概要>

0062

実施形態3は、暗号化したプログラムを電子装置に復号プログラムであって、その内部に暗号化した前記プログラムと、前記復号のための暗号鍵を含み、前記暗号化したプログラムを前記電子装置のメモリ上において復号するにあたり、前記プログラムが復号する前記電子装置のメモリ上での位置は、前記電子装置ごとに、又は毎回の復号の度に変化することを特徴とするデータ復号プログラムである。

0063

<実施形態3:構成>

0064

実施形態3の発明は、実施形態1の各ステップを実行するためのプログラムであるが、その内部に、暗号化したプログラムと、復号のための暗号鍵を含むことを特徴とする。その他の概要、構成、具体例及び効果については、いずれも実施形態1と同様である。

0065

本実施形態のプログラムは、コンピュータなどの電子装置上によって実行される。例えば、その一例として、コンピュータを利用する場合には、本実施形態のプログラムは、CPU、メモリ、バスインターフェイス周辺装置などから構成されるハードウエアと、これらのハードウエア上にて実行可能なOS、ミドルウェア等のソフトウエア協働して実行される。
<<実施形態4>>

0066

<実施形態4:概要>

0067

実施形態4は、前記暗号化したプログラムを前記電子装置のメモリ上において復号するにあたり、前記プログラムが復号する前記電子装置のメモリ上での位置を、前記復号プログラムが復号を実行する時刻及び/又は前記電子装置の演算装置のシリアルナンバーと関連して取得することを特徴とする実施形態3のデータ復号プログラムである。

0068

実施形態4の概要、構成、具体例及び効果については、いずれも実施形態2及び3と同様である。
<<実施形態5>>

0069

<実施形態5:概要>

0070

実施形態5は、前記暗号化したプログラムが、映像音声文字の一又は一以上の組合せでなるデータを再生することをその機能に含むことを特徴とする請求項1の暗号化プログラム復号プログラムである。

0071

すなわち、前記暗号化したプログラムは、映像、音声、文字の一又は一以上の組合せでなるデータ、すなわち、いわゆるマルチメディアコンテンツ再生をその機能とするプログラムであることが、本実施形態の特徴である。

0072

<実施形態5:具体例>

0073

ある映画配信会社が、映像と音声を、映像音声データとして配布する。そして、前記映像音声データは、専用の再生プログラムを使用しないと再生できないよう、特殊なデータ形式を取る。

0074

この場合、前記映画配信会社は、前記映像音声データと、専用の再生プログラムを合わせてユーザーに配布する。または、前記専用の再生プログラムをあらかじめ保有しているユーザーに、前記映像音声データを配布する。

0075

前記専用の再生プログラムは、実施形態3のように、暗号化され、さらに、符号プログラムと復号のための暗号鍵が含まれている。

0076

ユーザーは、前記映像音声データ及び専用の再生プログラムを受け取り、前記専用の再生プログラムを用いて、前記映像音声データを再生することができる。

0077

<実施形態5:効果>

0078

以上のとおり、本実施形態によれば、実施形態1〜4と同様、リバースエンジニアリングを容易には行えないようにすることができ、再生プログラムを容易には解析できないようにする結果、権限のない者が、再生プログラムが再生するマルチメディアコンテンツを、閲覧したり、複製、改変等を行ったりすることを、容易には行えないようにすることができる。

0079

本発明は、第三者が容易にリバースエンジニアリングを行なうことができないプログラムを提供するという効果を有し、暗号化プログラム復号方法及び暗号化プログラム復号プログラムとして有用である。

0080

0101復号プログラム
0102 暗号化したプログラム
0103電子装置
0104 電子装置上のメモリ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ