JP2019186848A - 情報処理システムおよびプログラム実行制御方法 - Google Patents
情報処理システムおよびプログラム実行制御方法 Download PDFInfo
- Publication number
- JP2019186848A JP2019186848A JP2018078429A JP2018078429A JP2019186848A JP 2019186848 A JP2019186848 A JP 2019186848A JP 2018078429 A JP2018078429 A JP 2018078429A JP 2018078429 A JP2018078429 A JP 2018078429A JP 2019186848 A JP2019186848 A JP 2019186848A
- Authority
- JP
- Japan
- Prior art keywords
- program
- information processing
- creator
- distributed
- execution
- 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.)
- Pending
Links
Images
Abstract
【課題】署名技術を使って、プログラムの作成時点からの正当性検証を可能とする。【解決手段】プログラムを作成する側では、プログラムから特定の値を算出し、算出した特定の値を含む作成者秘匿情報を、プログラムの内部に埋め込む。配布されたプログラムを実行する側では、配布されたプログラムから、作成者秘匿情報を分離し、分離された作成者秘匿情報に含まれる特定の値を取得する。そして、配布されたプログラムから特定の値を算出し、作成者秘匿情報から取得した特定の値と比較して、配布されたプログラムの検証を行う。【選択図】図1
Description
本発明は、情報処理システムおよびプログラム実行制御方法に関する。
情報処理装置において、不正なプログラムの実行を阻止するためには、実行されたプログラムの正当性を検証する必要がある。従来、情報処理装置が取り扱うデータやプログラムの正当性検証では、ハッシュ値を利用した署名技術が利用されている。
署名技術を利用したデータやプログラムの正当性検証では、データ参照やプログラム実行に先立ち、データやプログラムに対して署名情報の付加(署名)を行う必要がある。
例えば、ある情報処理装置で作成されたプログラムを、他の情報処理装置に配布したとき、プログラムが配布された情報処理装置にてプログラムを実行する前に、プログラム実行者が配布されたプログラムに対して署名情報を付加(署名)する。
例えば、ある情報処理装置で作成されたプログラムを、他の情報処理装置に配布したとき、プログラムが配布された情報処理装置にてプログラムを実行する前に、プログラム実行者が配布されたプログラムに対して署名情報を付加(署名)する。
例えば特許文献1には、プログラムの作成元で、固有の秘密データを、署名対象となるデータである契約内容識別データIDに付加し、これらを16進数に置き換えて数値化して、この数値にハッシュ関数を作用させたハッシュ値を得ることが記載されている。
上述したように、従来から署名技術を使ってプログラムの正当性を検証することが行われている。
しかしながら、署名技術を使ったプログラムの正当性の検証を行っても、改竄を検知できない場合がある。すなわち、プログラムの配布過程ですでにプログラムが改竄されてしまった場合には、改竄された不正なプログラムに対して署名情報を付加(署名)してしまうことになり、不正なプログラムを正当なものであると判断してしまうという問題が発生する。
しかしながら、署名技術を使ったプログラムの正当性の検証を行っても、改竄を検知できない場合がある。すなわち、プログラムの配布過程ですでにプログラムが改竄されてしまった場合には、改竄された不正なプログラムに対して署名情報を付加(署名)してしまうことになり、不正なプログラムを正当なものであると判断してしまうという問題が発生する。
本発明の目的は、署名技術を使って、プログラムの作成時点からの正当性検証を可能とする情報処理システムおよびプログラム実行制御方法を提供することにある。
上記課題を解決するために、例えば特許請求の範囲に記載の構成を採用する。
本願は、上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、プログラムを作成する作成側情報処理装置と、作成側情報処理装置で作成され配布されたプログラムを実行する実行側情報処理装置とを備えた情報処理システムである。
作成側情報処理装置は、プログラムに暗号化された作成者秘匿情報を埋め込み、作成者秘匿情報埋め込み済みプログラムを生成するプログラム作成部を備える。
実行側情報処理装置は、配布されたプログラムから取り出した作成者秘匿情報に含まれる特定の値と、配布されたプログラムから算出した特定の値とを比較して、配布されたプログラムの正当性を検証する比較部を備える。
本願は、上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、プログラムを作成する作成側情報処理装置と、作成側情報処理装置で作成され配布されたプログラムを実行する実行側情報処理装置とを備えた情報処理システムである。
作成側情報処理装置は、プログラムに暗号化された作成者秘匿情報を埋め込み、作成者秘匿情報埋め込み済みプログラムを生成するプログラム作成部を備える。
実行側情報処理装置は、配布されたプログラムから取り出した作成者秘匿情報に含まれる特定の値と、配布されたプログラムから算出した特定の値とを比較して、配布されたプログラムの正当性を検証する比較部を備える。
本発明によると、配布されたプログラムが万一改竄されたプログラムである場合、作成者秘匿情報から取得した特定の値と、プログラムから算出した特定の値が一致しなくなる。このため、プログラム作成時に付加された作成者秘匿情報を使って、配布されたプログラムの正当性を的確に検証することができる。
上記した以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。
上記した以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。
以下、本発明を実施するための一実施の形態例(以下「本例」と称する)を、添付図面を参照して詳細に説明する。
[1.システム全体の概要]
図1は、本例の情報処理システムの一例を示したブロック図である。本例の情報処理システムは、プログラムを作成する作成側情報処理装置100と、情報処理装置100で作成されたプログラムが配布され、配布されたプログラムを実行する実行側情報処理装置110とを備える。図1では、作成側情報処理装置を情報処理装置(作成側)、実行側情報処理装置を情報処理装置(実行側)と記載している。
また、以下の説明では、作成側情報処理装置100を作成側装置100、実行側情報処理装置110を実行側装置110と略記する。作成側装置100および実行側装置110は、例えば図2で後述するコンピュータ装置で構成される。
図1は、本例の情報処理システムの一例を示したブロック図である。本例の情報処理システムは、プログラムを作成する作成側情報処理装置100と、情報処理装置100で作成されたプログラムが配布され、配布されたプログラムを実行する実行側情報処理装置110とを備える。図1では、作成側情報処理装置を情報処理装置(作成側)、実行側情報処理装置を情報処理装置(実行側)と記載している。
また、以下の説明では、作成側情報処理装置100を作成側装置100、実行側情報処理装置110を実行側装置110と略記する。作成側装置100および実行側装置110は、例えば図2で後述するコンピュータ装置で構成される。
ここでは、作成側装置100は、プログラム作成者aの操作に基づいてプログラムを作成する処理を行う。実行側装置110は、プログラム実行者bの操作に基づいてプログラムを実行する。
プログラム作成者aは、作成側装置100を使って、プログラム(A)101を作成する。このとき、作成側装置100は、プログラム(A)101から算出するハッシュ値を、プログラム作成者aが管理する秘密鍵(A)103を使用して暗号化する。そして、作成側装置100は、暗号化したハッシュ値を含む作成者秘匿情報104を生成し、作成者秘匿情報104をプログラム(A)101に埋め込む。
プログラム(A)101は、作成者秘匿情報104が埋め込まれることでプログラム(A´)102となり、このプログラム(A´)102が、作成側装置100から実行側装置110に配布される。
また、作成側装置100は、プログラム(A´)102とは別に、プログラム認証カーネルモジュール106を、実行側装置110に配布する。プログラム認証カーネルモジュール106には、プログラム作成者aが管理する公開鍵(A)105が含まれる。このプログラム認証カーネルモジュール106は、作成側装置100から配布されたプログラム(A´)102の正当性を検証する検証用プログラムに相当する。
また、作成側装置100は、プログラム(A´)102とは別に、プログラム認証カーネルモジュール106を、実行側装置110に配布する。プログラム認証カーネルモジュール106には、プログラム作成者aが管理する公開鍵(A)105が含まれる。このプログラム認証カーネルモジュール106は、作成側装置100から配布されたプログラム(A´)102の正当性を検証する検証用プログラムに相当する。
プログラム(A´)102およびプログラム認証カーネルモジュール106は、ネットワークを経由した配布、メモリやディスクなどの媒体を使った配布など、いずれの形態で配布してもよい。すなわち、プログラム(A´)102およびプログラム認証カーネルモジュール106は、ネットワークあるいは各種媒体を介して配布される。媒体としては、DVD(Digital Versatile Disc)などの光学記録媒体や、USB(Universal Serial Bus)メモリなどの半導体記録媒体、HDD(Hard Disk Drive)などの磁気記録媒体が適用可能である。したがって、実行側装置110と作成側装置100とは、必ずしもネットワークで接続されている必要はない。
なお、プログラム(A´)102の配布とプログラム認証カーネルモジュール106の配布は、別のネットワークや媒体を使って配布してもよい。
なお、プログラム(A´)102の配布とプログラム認証カーネルモジュール106の配布は、別のネットワークや媒体を使って配布してもよい。
作成側装置100から実行側装置110にプログラム(A´)を配布する際には、プログラム(A)101のハッシュ値を基にした正当性確認を行うプログラム認証カーネルモジュール106も、同時に配布される。プログラム認証カーネルモジュール106には、プログラム作成者aが管理する作成者秘匿情報104の復号化に使用する公開鍵(A)105が含まれている。
実行側装置110に配布されたプログラム認証カーネルモジュール106は、実行側装置110のカーネル本体115に組み込まれる。
プログラム実行者bは、配布されたプログラム(A´)102に対して、実行側装置110での実行を許可するために、プログラム(A´)102に署名情報111を付加(署名)する。署名情報111には、配布されたプログラム(A´)102から算出するハッシュ値を、プログラム実行者bが管理する秘密鍵(B)112を使用して暗号化した実行者秘匿情報113が含まれている。
さらに、プログラム実行者bは、プログラム実行者bが管理する実行者秘匿情報113の復号化に使用する公開鍵(B)114を、実行側装置110のカーネル本体115に登録する。
なお、本明細書で述べるハッシュ値は、対象となるプログラム(A)101またはプログラム(A´)102から予め決められた演算で算出できる値であり、プログラムの一部に変更がある場合は、ハッシュ値が異なる値になる。
プログラム実行者bは、配布されたプログラム(A´)102に対して、実行側装置110での実行を許可するために、プログラム(A´)102に署名情報111を付加(署名)する。署名情報111には、配布されたプログラム(A´)102から算出するハッシュ値を、プログラム実行者bが管理する秘密鍵(B)112を使用して暗号化した実行者秘匿情報113が含まれている。
さらに、プログラム実行者bは、プログラム実行者bが管理する実行者秘匿情報113の復号化に使用する公開鍵(B)114を、実行側装置110のカーネル本体115に登録する。
なお、本明細書で述べるハッシュ値は、対象となるプログラム(A)101またはプログラム(A´)102から予め決められた演算で算出できる値であり、プログラムの一部に変更がある場合は、ハッシュ値が異なる値になる。
[2.ハードウェア構成例]
図2は、作成側装置100および実行側装置110として使用されるコンピュータ装置のハードウェア構成例を示す。
図2に示すコンピュータは、バス8にそれぞれ接続されたCPU(Control Processing Unit:中央処理装置)1、ROM(Read Only Memory)2、およびRAM(Random Access Memory3)を備える。さらに、コンピュータは、記憶装置4、操作部5、表示部6、および通信インターフェース7を備える。
図2は、作成側装置100および実行側装置110として使用されるコンピュータ装置のハードウェア構成例を示す。
図2に示すコンピュータは、バス8にそれぞれ接続されたCPU(Control Processing Unit:中央処理装置)1、ROM(Read Only Memory)2、およびRAM(Random Access Memory3)を備える。さらに、コンピュータは、記憶装置4、操作部5、表示部6、および通信インターフェース7を備える。
CPU1は、本実施の形態例に係る各機能を実現するソフトウェアのプログラムコードをROM2から読み出して実行する。
RAM3には、演算処理の途中に発生した変数やパラメータ等が一時的に書き込まれる。本実施の形態例に係る各システムおよび装置における処理の実行は、主にCPU1がプログラムコードを実行することにより実現される。図1に示すプログラム認証カーネルモジュール106やカーネル本体115についても、CPU1がプログラムコードを実行することで実現される。さらに、後述する図3〜図6に示すプログラム作成部100a、実行者秘匿情報付加部110a、第1比較部110b、復号化部110c、ハッシュ値算出部110d、および第2比較部110eについても、CPU1がプログラムコードを実行することで実現される。
RAM3には、演算処理の途中に発生した変数やパラメータ等が一時的に書き込まれる。本実施の形態例に係る各システムおよび装置における処理の実行は、主にCPU1がプログラムコードを実行することにより実現される。図1に示すプログラム認証カーネルモジュール106やカーネル本体115についても、CPU1がプログラムコードを実行することで実現される。さらに、後述する図3〜図6に示すプログラム作成部100a、実行者秘匿情報付加部110a、第1比較部110b、復号化部110c、ハッシュ値算出部110d、および第2比較部110eについても、CPU1がプログラムコードを実行することで実現される。
表示部6は、例えば、液晶ディスプレイモニタであり、この表示部6によりコンピュータで実行される処理の結果が利用者であるプログラム作成者aおよびプログラム実行者bに表示される。
操作部5には、例えば、キーボード、マウスなどが用いられ、利用者は操作部5を用いて所定の入力を行う。
記憶装置4には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)などの大容量データ記憶媒体が用いられる。記憶装置4には、作成したプログラム(A)101または配布されたプログラム(A´)102や、このコンピュータ装置を作成側装置100または実行側装置110として機能させるためのプログラムが記録される。
通信インターフェース7には、例えば、NIC(Network Interface Card)などが用いられる。通信インターフェース7は、端子が接続されたLAN(Local Area Network)、専用線などを介して外部と各種データの送受信を行う。
操作部5には、例えば、キーボード、マウスなどが用いられ、利用者は操作部5を用いて所定の入力を行う。
記憶装置4には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)などの大容量データ記憶媒体が用いられる。記憶装置4には、作成したプログラム(A)101または配布されたプログラム(A´)102や、このコンピュータ装置を作成側装置100または実行側装置110として機能させるためのプログラムが記録される。
通信インターフェース7には、例えば、NIC(Network Interface Card)などが用いられる。通信インターフェース7は、端子が接続されたLAN(Local Area Network)、専用線などを介して外部と各種データの送受信を行う。
[3.プログラム作成時の作成者秘匿情報の埋め込み処理]
図3は、作成側装置100に用意されるプログラム作成部100aで行われる、プログラム(A)101に作成者秘匿情報104を埋め込むための処理を行う手順および装置の構成を示している。
作成側装置100では、プログラム(A)101からハッシュ値(A)200を算出する処理が行われる。このハッシュ値(A)200は、プログラム作成者aが管理する秘密鍵(A)103を使用して暗号化され、作成者秘匿情報104が作成される。
図3は、作成側装置100に用意されるプログラム作成部100aで行われる、プログラム(A)101に作成者秘匿情報104を埋め込むための処理を行う手順および装置の構成を示している。
作成側装置100では、プログラム(A)101からハッシュ値(A)200を算出する処理が行われる。このハッシュ値(A)200は、プログラム作成者aが管理する秘密鍵(A)103を使用して暗号化され、作成者秘匿情報104が作成される。
作成者秘匿情報104は、プログラム(A)101の内部に埋め込まれる。このように作成者秘匿情報104が埋め込まれることで、作成者秘匿情報104を内包するプログラム(A´)102が形成される。
そして、プログラム作成部100aで得られた、作成者秘匿情報104を内包するプログラム(A´)102が、実行側装置110に配布される。
そして、プログラム作成部100aで得られた、作成者秘匿情報104を内包するプログラム(A´)102が、実行側装置110に配布される。
[4.プログラム実行時の正当性確認処理]
図4〜図6は、実行側装置110が、配布されたプログラム(A´)102を実行する際における、プログラムの正当性を確認する処理を行う手順および装置の構成を示す。
図4は、実行側装置110に配布されたプログラム(A´)102を復号して、実行者秘匿情報を付加する処理を行う実行者秘匿情報付加部110aの構成を示している。
まず、実行者秘匿情報付加部110aは、プログラム(A´)102からハッシュ値(A´)300を算出する。ここでハッシュ値(A´)300を算出するプログラム(A´)102は、作成者秘匿情報104を内包するプログラム(A´)102である。
図4〜図6は、実行側装置110が、配布されたプログラム(A´)102を実行する際における、プログラムの正当性を確認する処理を行う手順および装置の構成を示す。
図4は、実行側装置110に配布されたプログラム(A´)102を復号して、実行者秘匿情報を付加する処理を行う実行者秘匿情報付加部110aの構成を示している。
まず、実行者秘匿情報付加部110aは、プログラム(A´)102からハッシュ値(A´)300を算出する。ここでハッシュ値(A´)300を算出するプログラム(A´)102は、作成者秘匿情報104を内包するプログラム(A´)102である。
そして、実行者秘匿情報付加部110aは、算出したハッシュ値(A´)300をプログラム実行者bの秘密鍵(B)112により暗号化し、暗号化されたハッシュ値(A´)300を含む実行者秘匿情報113を作成する。
さらに、実行者秘匿情報付加部110aは、実行者秘匿情報113を内包する署名情報111を、プログラム(A´)102に付加(署名)する。
さらに、実行者秘匿情報付加部110aは、実行者秘匿情報113を内包する署名情報111を、プログラム(A´)102に付加(署名)する。
図5は、実行側装置110において、実行者秘匿情報113に含まれるハッシュ値(A´)300を使って、プログラム(A´)102の正当性を確認するための処理とこれを実行するための第1比較部110bの構成を示す。この第1比較部110bは、図1に示すカーネル本体115およびプログラム認証カーネルモジュール106内に設けられる構成である。
第1比較部110bは、プログラム(A´)102に付加(署名)された署名情報111から、実行者秘匿情報113を取り出す。取り出された実行者秘匿情報113は、プログラム実行者bが管理する公開鍵(B)114を使用して復号化され、実行者秘匿情報113に含まれるハッシュ値(A´)300が得られる。
第1比較部110bは、プログラム(A´)102に付加(署名)された署名情報111から、実行者秘匿情報113を取り出す。取り出された実行者秘匿情報113は、プログラム実行者bが管理する公開鍵(B)114を使用して復号化され、実行者秘匿情報113に含まれるハッシュ値(A´)300が得られる。
さらに、第1比較部110bは、作成者秘匿情報104を内包するプログラム(A´)102からハッシュ値(a´)400を算出する。そして、第1比較部110bは、プログラム(A´)102から算出したハッシュ値(a´)400と、実行者秘匿情報113に含まれるハッシュ値(A´)300とを比較する。そして、この比較結果に基づいて、第1比較部110bは、プログラム(A´)102の正当性を確認する。
図6は、実行側装置110において、作成者秘匿情報104に含まれるハッシュ値(A)200を使って、プログラム(A´)102の正当性を確認する処理を行う手順とそれを実行するための構成を示す。実行側装置110は、作成者秘匿情報104から正当性を確認する構成として、復号化部110c、ハッシュ値算出部110d、および第2比較部110eを備える。これらの復号化部110c、ハッシュ値算出部110d、および第2比較部110eは、図1に示すカーネル本体115およびプログラム認証カーネルモジュール106内に設けられている。
復号化部110cは、プログラム(A´)102から作成者秘匿情報104を分離し、分離した作成者秘匿情報104を、プログラム作成者aの公開鍵(A)105を使って復号化する。作成者秘匿情報104の復号化により、作成者秘匿情報104に含まれるハッシュ値(A)200が得られる。復号化に使用するプログラム作成者aの公開鍵(A)105は、作成側装置100から配布されたプログラム認証カーネルモジュール106(図1)から取得される。
また、プログラム(A´)102から作成者秘匿情報104を分離することで、プログラム(A)101が復元される。ハッシュ値算出部110dは、このプログラム(A)101からハッシュ値(a)500を算出する。
そして、第2比較部110eは、復号化部110cで得られた作成者秘匿情報104に含まれるハッシュ値(A)200と、ハッシュ値算出部110dで算出されたプログラム(A)101のハッシュ値(a)500とを比較する。この比較結果に基づいて、第2比較部110eは、プログラム(A)101の正当性を確認する。
[5.プログラム実行時の正当性確認処理の流れ]
図7は、実行側装置110において、配布されたプログラムを実行する際の正当性の確認処理の流れを示すフローチャートである。この正当性の確認処理は、カーネル本体115およびプログラム認証カーネルモジュール106にて行われる。
正当性の確認処理は、プログラム実行者bが、署名情報111を付加(署名)済みのプログラム(A´)102の実行を指示することで開始される。
図7は、実行側装置110において、配布されたプログラムを実行する際の正当性の確認処理の流れを示すフローチャートである。この正当性の確認処理は、カーネル本体115およびプログラム認証カーネルモジュール106にて行われる。
正当性の確認処理は、プログラム実行者bが、署名情報111を付加(署名)済みのプログラム(A´)102の実行を指示することで開始される。
正当性の確認処理が開始されると、カーネル本体115がプログラム(A´)102をメモリに読込む(ステップS11)。そして、カーネル本体115は、プログラム(A´)102に署名情報111が付加(署名)しているか否かを判断する(ステップS12)。ここで、署名情報111が付加(署名)されていないと判断した場合(ステップS12のNO)、カーネル本体115は、ステップS22のプログラム(A)の実行抑止処理へ移る。
また、ステップS12において、署名情報111が付加(署名)されていると判断したとき(ステップS12のYES)、カーネル本体115は、署名情報111をメモリに読込み、署名情報111から実行者秘匿情報113を取り出す。そして、公開鍵(B)114を使用して実行者秘匿情報113を復号化する復号化処理を行い、プログラム(A´)102のハッシュ値(A´)300を得る(ステップS13)。
その後、カーネル本体115は、ステップ1001で読込んだプログラム(A´)102のハッシュ値(a´)400を算出する(ステップS14)。
そして、カーネル本体115は、ステップ1003で得たハッシュ値(A´)300と、ステップ1004で算出したハッシュ値(a´)400を比較し、一致しているか否かを判断する(ステップS15)。ここで、一致していないと判断した場合(ステップS15のNO)、カーネル本体115は、ステップS22のプログラム(A)の実行抑止処理へ移る。
そして、カーネル本体115は、ステップ1003で得たハッシュ値(A´)300と、ステップ1004で算出したハッシュ値(a´)400を比較し、一致しているか否かを判断する(ステップS15)。ここで、一致していないと判断した場合(ステップS15のNO)、カーネル本体115は、ステップS22のプログラム(A)の実行抑止処理へ移る。
また、ステップS15において、ハッシュ値が一致していると判断した場合には(ステップS15のYES)、プログラム認証カーネルモジュール106は、ステップS11で読込んだプログラム(A´)102に、作成者秘匿情報104が埋め込まれているか否かを判断する(ステップS16)。ここで、埋め込まれていないと判断した場合(ステップS16のNO)、カーネル本体115は、ステップS22のプログラム(A)の実行抑止処理へ移る。
また、ステップS16において、作成者秘匿情報104が埋め込まれていると判断した場合には(ステップS16のYES)、プログラム認証カーネルモジュール106は、ステップS11で読込んだプログラム(A´)102の分離処理を行う(ステップS17)。この分離処理では、プログラム(A´)102を、プログラム(A)101と作成者秘匿情報104とに分離する。
そして、プログラム認証カーネルモジュール106は、ステップS17で分離した作成者秘匿情報104を、公開鍵(A)105を使用して復号化する復号化処理を行い、プログラム(A)101のハッシュ値(A)200を得る(ステップS18)。
さらに、プログラム認証カーネルモジュール106は、ステップS17で分離したプログラム(A)101のハッシュ値(a)500を算出する(ステップS19)。
さらに、プログラム認証カーネルモジュール106は、ステップS17で分離したプログラム(A)101のハッシュ値(a)500を算出する(ステップS19)。
その後、プログラム認証カーネルモジュール106は、ステップS18で得たハッシュ値(A)200と、ステップS19で算出したハッシュ値(a)500を比較し、一致しているか否かを判断する(ステップS20)。ここで、ハッシュ値が一致していないと判断した場合(ステップS20のNO)、カーネル本体115は、ステップS22のプログラム(A)の実行抑止処理へ移る。
また、ステップS20において、ハッシュ値が一致していると判断した場合には(ステップS20のYES)、カーネル本体115は、プログラム(A)101を実行する(ステップS21)。
また、ステップS20において、ハッシュ値が一致していると判断した場合には(ステップS20のYES)、カーネル本体115は、プログラム(A)101を実行する(ステップS21)。
このように、実行側装置110は、実行者秘匿情報113に含まれるハッシュ値(A´)300が算出値と一致し、かつ、作成者秘匿情報104に含まれるハッシュ値(A)200が算出値と一致した場合にのみ、プログラム(A)101を実行する。したがって、作成側装置100で作成されてから、実行側装置110で実行するまでの間に、プログラム(A)101に何らかの変更があった場合には、該当するプログラムの実行が阻止されるので、不正なプログラムの実行を確実に阻止することができる。
[6.不正プログラムの場合の動作例]
ここで、正規のプログラム作成者aではないプログラム作成者が作成した不正プログラム(X)が配布された場合(不正プログラムが混入した場合)の動作を、図7のフローチャートに基づいて説明する。
ここで、正規のプログラム作成者aではないプログラム作成者が作成した不正プログラム(X)が配布された場合(不正プログラムが混入した場合)の動作を、図7のフローチャートに基づいて説明する。
実行側装置110に不正プログラム(X)が配布された場合、不正プログラム(X)には、プログラム実行者bが実行側装置110での実行を許可していないために、署名情報が付加(署名)されていない。したがって、ステップS12において、不正プログラム(X)には署名情報が付加(署名)されていないと判断され、ステップS22に移り、カーネル本体115が不正プログラム(X)の実行を抑止する。
また、実行側装置110に不正プログラム(X)が配布された場合において、プログラム実行者bが不正プログラムであることに気付かず、不正プログラム(X)に署名情報を付加(署名)して、実行側装置110での実行を許可した場合には、以下に示す動作が行われる。
すなわち、プログラム実行者bは、配布された不正プログラム(X)に対して、実行側装置110での実行を許可するために、署名情報を付加(署名)する。この署名情報は、不正プログラム(X)から算出するハッシュ値(X)を、プログラム実行者bが管理する秘密鍵(B)112を使用して暗号化した実行者秘匿情報を内包する。
すなわち、プログラム実行者bは、配布された不正プログラム(X)に対して、実行側装置110での実行を許可するために、署名情報を付加(署名)する。この署名情報は、不正プログラム(X)から算出するハッシュ値(X)を、プログラム実行者bが管理する秘密鍵(B)112を使用して暗号化した実行者秘匿情報を内包する。
この場合には、図7のフローチャートに示す処理手順の内で、ステップS15では、ステップS13で得たハッシュ値(X)と、ステップS14で算出したハッシュ値(x)との比較により、両者が一致していると判断される。しかしながら、次のステップS16での作成者秘匿情報が埋め込まれているか否かの判断で、不正プログラム(X)には作成者秘匿情報が埋め込まれていないため、ステップS22に移り、カーネル本体115により不正プログラム(X)の実行が抑止される。
このように、実行側装置110に不正プログラム(X)が配布されてしまい、かつ、プログラム実行者bがそれに気付かず、不正プログラム(X)に署名情報を付加(署名)してしまった場合であっても、不正プログラム(X)の実行は抑止される。
次に、実行側装置110に配布されたプログラム(A´)102が、プログラム実行者bによって署名情報111を付加(署名)される前に、改竄されてしまった場合の動作について説明する。
この場合、実行側装置110に配布されたプログラム(A´)102は、改竄されて不正プログラム(M´)となる。不正プログラム(M´)は、プログラム作成者aが生成したプログラム(A)101に基づいて生成された作成者秘匿情報104が埋め込まれたままであるが、プログラム(A)101そのものは改竄された不正プログラム(M´)となっている。
プログラム実行者bは、プログラム(A´)102が改竄され不正プログラム(M´)になっていることに気付かず、不正プログラム(M´)に対して、実行側装置110での実行を許可するために、不正プログラム(M´)に署名情報を付加(署名)する。この署名情報は、不正プログラム(M´)から算出するハッシュ値(M´)を、プログラム実行者bが管理する秘密鍵(B)112を使用して暗号化した実行者秘匿情報を内包している。
この場合には、図7のフローチャートに示す処理手順の内で、ステップS12では、不正プログラム(M´)に署名情報が付加(署名)されているため、カーネル本体115は、ステップS13に移行し、不正プログラム(M´)のハッシュ値(M´)を得る。そして、ステップS14において、カーネル本体115は、ステップS11で読込んだ不正プログラム(M´)のハッシュ値(m´)を算出し、ステップS15において、ハッシュ値(M´)とハッシュ値(m´)とが一致しているか否かを判断する。さらに、ステップS16において、プログラム認証カーネルモジュール106は、ステップS11で読込んだ不正プログラム(M´)に作成者秘匿情報が埋め込まれていると判断し、ステップS17〜S20の処理を実行する。
ステップS20において、プログラム認証カーネルモジュール106が、ステップS18で得たハッシュ値(A)200と、ステップS19で算出したハッシュ値(m)とを比較する処理が行われる。このとき、不正プログラム(M)はプログラム(A)が改竄されたものであり、ハッシュ値(A)200とハッシュ値(m)とが一致せず、ステップS22に移って、カーネル本体115が不正プログラム(M)の実行を抑止する。
このように、実行側装置110に配布されたプログラム(A´)102が、署名情報111が付加(署名)される前に改竄されて、不正プログラム(M´)となった場合であっても、不正プログラム(M´)の実行は確実に抑止される。
[7.変形例]
なお、上述した実施の形態例では、実行側装置110が、正当性の検証用プログラムであるプログラム認証カーネルモジュール106を使って、プログラムからハッシュ値を算出し、そのハッシュ値を比較するようにした。検証用としてハッシュ値を使用するのは一例であり、プログラムを使った演算で算出可能な特定の値であれば、ハッシュ値以外の値を使用してもよい。
なお、上述した実施の形態例では、実行側装置110が、正当性の検証用プログラムであるプログラム認証カーネルモジュール106を使って、プログラムからハッシュ値を算出し、そのハッシュ値を比較するようにした。検証用としてハッシュ値を使用するのは一例であり、プログラムを使った演算で算出可能な特定の値であれば、ハッシュ値以外の値を使用してもよい。
また、本発明は、上述した実施の形態例に限定されるものではなく、様々な変形例が含まれる。また、上述した実施の形態例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
また、構成図や機能ブロック図では、制御線や情報線は説明上必要と考えられるものだけを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
なお、機能ブロック図として示した処理部については、ソフトウェアで実現する場合の他、それらの一部または全部を、例えば集積回路で設計するなどによってハードウェアで実現してもよい。
さらに、図7のフローチャートにおいて、実施の形態例の処理結果に影響がない範囲で、一部の処理ステップの実行順序を入れ替えたり、一部の処理ステップを同時に実行するようにしてもよい。
また、構成図や機能ブロック図では、制御線や情報線は説明上必要と考えられるものだけを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
なお、機能ブロック図として示した処理部については、ソフトウェアで実現する場合の他、それらの一部または全部を、例えば集積回路で設計するなどによってハードウェアで実現してもよい。
さらに、図7のフローチャートにおいて、実施の形態例の処理結果に影響がない範囲で、一部の処理ステップの実行順序を入れ替えたり、一部の処理ステップを同時に実行するようにしてもよい。
1…中央制御ユニット(CPU)、2…ROM、3…RAM、4…記憶装置、5…操作部、6…表示部、7…通信インターフェース、8…バスライン、100…作成側情報処理装置(作成側装置)、100a…プログラム作成部、101…プログラム、102…プログラム(作成者秘匿情報埋め込み済)、103…秘密鍵、104…作成者秘匿情報、105…公開鍵、106…プログラム認証カーネルモジュール、110…実行側情報処理装置(実行側装置)、110a…実行者秘匿情報付加部、110b…第1比較部、110c…復号化部、110d…ハッシュ値算出部、110e…第2比較部、111…署名情報、112…秘密鍵、113…作成者秘匿情報、114…公開鍵
Claims (6)
- プログラムを作成する作成側情報処理装置と、前記作成側情報処理装置で作成され配布されたプログラムを実行する実行側情報処理装置とを備えた情報処理システムであって、
前記作成側情報処理装置は、
前記プログラムに暗号化された作成者秘匿情報を埋め込み、作成者秘匿情報埋め込み済みプログラムを生成するプログラム作成部を備え、
前記実行側情報処理装置は、
配布された前記プログラムから取り出した前記作成者秘匿情報を復号化する復号化部と、
前記復号化部が取り出した前記作成者秘匿情報に含まれる特定の値と、配布された前記プログラムから算出した特定の値とを比較して、配布された前記プログラムの正当性を検証する比較部と、を備える
情報処理システム。 - 前記作成側情報処理装置の前記プログラム作成部は、前記プログラムのハッシュ値を算出し、算出したハッシュ値を含む前記作成者秘匿情報を、プログラム作成者の秘密鍵を用いて暗号化して前記プログラムの内部に埋め込み、
前記実行側情報処理装置の前記復号化部は、前記作成側情報処理装置から配布された検証用プログラムに含まれる前記プログラム作成者の公開鍵を用いて、作成者秘匿情報を復号化して、作成者秘匿情報に含まれるハッシュ値を得、
前記実行側情報処理装置の前記比較部は、配布された前記プログラムのハッシュ値を算出し、前記復号化部で得たハッシュ値と比較する
請求項1に記載の情報処理システム。 - 前記プログラム作成者の公開鍵は、前記プログラムとは別に、前記作成側情報処理装置から配布された検証用プログラムを使って、前記実行側情報処理装置が取得する
請求項2に記載の情報処理システム。 - 前記実行側情報処理装置は、
前記比較部でハッシュ値が一致したとき、配布された前記プログラムを実行し、前記比較部でハッシュ値が一致しないとき、配布された前記プログラムの実行を抑止する
請求項3に記載の情報処理システム。 - さらに、前記実行側情報処理装置は、前記作成側情報処理装置から配布された前記作成者秘匿情報埋め込み済みプログラムのハッシュ値を算出し、算出したハッシュ値を含む実行者秘匿情報を、プログラム実行者の秘密鍵を用いて暗号化して前記作成者秘匿情報埋め込み済みプログラムの内部に埋め込み、
埋め込まれた実行者秘匿情報を取り出して、前記プログラム実行者の公開鍵を用いて復号化して得たハッシュ値と、前記作成者秘匿情報埋め込み済みプログラムから算出したハッシュ値とを比較し、その比較でハッシュ値が一致したとき、配布された前記プログラムを実行し、ハッシュ値が一致しないとき、配布された前記プログラムの実行を抑止する
請求項4に記載の情報処理システム。 - 作成側情報処理装置で作成され配布されたプログラムを、実行側情報処理装置で実行するプログラム実行制御方法において、
配布された前記プログラムから、作成者秘匿情報を分離し、分離した作成者秘匿情報を、プログラム作成者の公開鍵を用いて復号化して、作成者秘匿情報に含まれる特定の値を取り出す復号化処理と、
配布された前記プログラムの特定の値を算出し、前記復号化処理で取り出した特定の値と比較する比較処理と、を含む
プログラム実行制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018078429A JP2019186848A (ja) | 2018-04-16 | 2018-04-16 | 情報処理システムおよびプログラム実行制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018078429A JP2019186848A (ja) | 2018-04-16 | 2018-04-16 | 情報処理システムおよびプログラム実行制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019186848A true JP2019186848A (ja) | 2019-10-24 |
Family
ID=68337723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018078429A Pending JP2019186848A (ja) | 2018-04-16 | 2018-04-16 | 情報処理システムおよびプログラム実行制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2019186848A (ja) |
-
2018
- 2018-04-16 JP JP2018078429A patent/JP2019186848A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210294879A1 (en) | Securing executable code integrity using auto-derivative key | |
TWI557589B (zh) | 用於產品驗證和啟動的安全軟體產品識別器 | |
JP4702957B2 (ja) | 耐タンパ・トラステッド仮想マシン | |
Dunn et al. | Cloaking malware with the trusted platform module | |
JP5281074B2 (ja) | 情報セキュリティ装置および情報セキュリティシステム | |
EP2988238B1 (en) | Optimized integrity verification procedures | |
EP1168141A2 (en) | A secure and open computer platform | |
JPH11511576A (ja) | アクセス制御用のパラメータ付きハッシュ関数 | |
US7325126B2 (en) | System and method for distributed module authentication | |
EP2264640B1 (en) | Feature specific keys for executable code | |
JP2005536951A (ja) | デジタル機器においてデジタル文書にセキュリティ保護を施す装置、システムおよび方法 | |
WO2017000648A1 (zh) | 一种被加固软件的认证方法及装置 | |
KR20140051350A (ko) | 디지털 서명 권한자 의존형 플랫폼 기밀 생성 기법 | |
CN106599729A (zh) | 一种驱动程序安全验证方法及系统 | |
KR20200099041A (ko) | 블록체인 기반 콘텐츠 이용 권한 관리 장치 및 방법 | |
US20060015860A1 (en) | System and method for storing attributes in a file for processing an operating system | |
US20110225634A1 (en) | CAPTCHA (Completely Automated Public Test to Tell Computers and Humans Apart) Data Generation Methods and Related Data Management Systems and Computer Program Products Thereof | |
CN107257282A (zh) | 一种基于rc4算法的代码全包加密方法 | |
CN112948771B (zh) | 权限校验方法、装置、可读存储介质及电子设备 | |
TW200414734A (en) | Software protection method and device | |
US8756433B2 (en) | Associating policy with unencrypted digital content | |
KR20100106110A (ko) | 시큐어 부트 데이터(Secure Boot Data) 통합 관리 시스템, 시큐어 부트 데이터 통합 관리를 위한 메타데이터 생성 및 검증 방법, 이를 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는기록매체. | |
KR101711024B1 (ko) | 부정조작방지 장치 접근 방법 및 그 방법을 채용한 단말 장치 | |
CN110674525A (zh) | 一种电子设备及其文件处理方法 | |
JP2019186848A (ja) | 情報処理システムおよびプログラム実行制御方法 |