JP2003140758A - プログラム暗号化方法、復号化方法および実行方法 - Google Patents
プログラム暗号化方法、復号化方法および実行方法Info
- Publication number
- JP2003140758A JP2003140758A JP2001341368A JP2001341368A JP2003140758A JP 2003140758 A JP2003140758 A JP 2003140758A JP 2001341368 A JP2001341368 A JP 2001341368A JP 2001341368 A JP2001341368 A JP 2001341368A JP 2003140758 A JP2003140758 A JP 2003140758A
- Authority
- JP
- Japan
- Prior art keywords
- program
- instruction
- code
- intermediate code
- regular
- 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
Abstract
(57)【要約】
【課題】ネットワークを通じてプログラムを配信する時
などに、従来の暗号化手法を用いると配信プログラムの
復号に長い時間がかかり、なおかつ復号のための記憶領
域を必要とした。 【解決手段】プログラムの暗号化方法として、プログラ
ムの保持する「命令コード」と「命令内容」の対応付け
を入れ換える方法を用いる。これにより復号と同時にプ
ログラムを解釈・実行することが可能となり、復号時間
を短縮でき、しかも復号のための記憶領域が不要とな
る。
などに、従来の暗号化手法を用いると配信プログラムの
復号に長い時間がかかり、なおかつ復号のための記憶領
域を必要とした。 【解決手段】プログラムの暗号化方法として、プログラ
ムの保持する「命令コード」と「命令内容」の対応付け
を入れ換える方法を用いる。これにより復号と同時にプ
ログラムを解釈・実行することが可能となり、復号時間
を短縮でき、しかも復号のための記憶領域が不要とな
る。
Description
【0001】
【発明の属する技術分野】本発明は、暗号化されたプロ
グラムを実行する技術に関し、特にネットワークなどを
通じて配布される、暗号化されたプログラムを実行する
技術に関する。
グラムを実行する技術に関し、特にネットワークなどを
通じて配布される、暗号化されたプログラムを実行する
技術に関する。
【0002】
【従来の技術】インターネットを初めとするネットワー
ク技術の進歩に伴い、ネットワークに接続された中間コ
ード実行装置にプログラムを配信するサービスが実現さ
れている。特に最近ではSun microsystems社のJava技術
などの出現によって中間コードを用いてプログラムが記
述されるようになり、複数種類の中間コード実行装置に
対して同一のプログラムを配信できるようになった。
ク技術の進歩に伴い、ネットワークに接続された中間コ
ード実行装置にプログラムを配信するサービスが実現さ
れている。特に最近ではSun microsystems社のJava技術
などの出現によって中間コードを用いてプログラムが記
述されるようになり、複数種類の中間コード実行装置に
対して同一のプログラムを配信できるようになった。
【0003】これらのプログラム配布においては、配布
対象を特定の利用者に限定したい場合が多い。しかし、
配布にはインターネットのような公共ネットワークが用
いられることから、配布ミスや盗聴によって第三者の手
にプログラムが渡ってしまう可能性があり、なんらかの
対策が必要である。
対象を特定の利用者に限定したい場合が多い。しかし、
配布にはインターネットのような公共ネットワークが用
いられることから、配布ミスや盗聴によって第三者の手
にプログラムが渡ってしまう可能性があり、なんらかの
対策が必要である。
【0004】対策の一つとしてプログラムを暗号化して
送信する方法がある。特開平10-161864では、プログラ
ムの一部を暗号化することで、プログラム利用者による
コピーを含む違法コピーを防ぐ方法が示されている。プ
ログラムを受信した中間コード実行装置は、まず暗号鍵
を用いてプログラムを復号し、復号したプログラムを実
行する。暗号鍵を持たない中間コード実行装置はプログ
ラムを復号することができない。よって、プログラム実
行は暗号鍵を持つ中間コード実行装置に限定される。
送信する方法がある。特開平10-161864では、プログラ
ムの一部を暗号化することで、プログラム利用者による
コピーを含む違法コピーを防ぐ方法が示されている。プ
ログラムを受信した中間コード実行装置は、まず暗号鍵
を用いてプログラムを復号し、復号したプログラムを実
行する。暗号鍵を持たない中間コード実行装置はプログ
ラムを復号することができない。よって、プログラム実
行は暗号鍵を持つ中間コード実行装置に限定される。
【0005】
【発明が解決しようとする課題】上記従来技術は、暗号
化されたプログラムを「復号」してから「実行」すると
いう二段階のステップを踏んでいるため、復号処理のた
めにプログラム起動時間が長くなるという問題と、復号
処理のための記憶領域を必要とするという問題があっ
た。
化されたプログラムを「復号」してから「実行」すると
いう二段階のステップを踏んでいるため、復号処理のた
めにプログラム起動時間が長くなるという問題と、復号
処理のための記憶領域を必要とするという問題があっ
た。
【0006】特に、中間コードによるプログラム配信サ
ービスにおいては、中間コードに対する事前処理も必要
であるため、プログラム受信から起動までにかかる時間
が長いものになっていた。
ービスにおいては、中間コードに対する事前処理も必要
であるため、プログラム受信から起動までにかかる時間
が長いものになっていた。
【0007】また、記憶領域の少ない中間コード実行装
置においては、復号処理のための記憶領域の確保が難し
いという問題があった。
置においては、復号処理のための記憶領域の確保が難し
いという問題があった。
【0008】
【課題を解決するための手段】上記の問題点を解決する
ために、中間コードの命令対応付けに従って処理ルーチ
ンへのジャンプ先アドレステーブルを変更する「命令処
理ルーチンジャンプテーブル変更手段」と、中間コード
を一つずつ取得し、ジャンプテーブルを用いて処理ルー
チンを呼び出す「中間コード解釈実行手段」を備えた中
間コード実行装置を設ける。これにより、プログラム起
動時の復号処理にかかる時間が省略され、復号のための
記憶領域が不要となる。
ために、中間コードの命令対応付けに従って処理ルーチ
ンへのジャンプ先アドレステーブルを変更する「命令処
理ルーチンジャンプテーブル変更手段」と、中間コード
を一つずつ取得し、ジャンプテーブルを用いて処理ルー
チンを呼び出す「中間コード解釈実行手段」を備えた中
間コード実行装置を設ける。これにより、プログラム起
動時の復号処理にかかる時間が省略され、復号のための
記憶領域が不要となる。
【0009】
【発明の実施の形態】以下、本発明についての実施例の
一つを、図1から図17を用いて説明する。
一つを、図1から図17を用いて説明する。
【0010】図1により、本発明を実現するシステムの
全体構成を示す。
全体構成を示す。
【0011】本システムは、ネットワークにより接続さ
れた配布サーバ装置100と、複数の中間コード実行装置1
20(120a〜120c...)などから構成される。
れた配布サーバ装置100と、複数の中間コード実行装置1
20(120a〜120c...)などから構成される。
【0012】配布サーバ装置100はネットワークを通じ
て中間コード実行装置120にプログラムを配布し、サー
ビスを提供する。
て中間コード実行装置120にプログラムを配布し、サー
ビスを提供する。
【0013】このシステムの応用例として、携帯電話へ
のプログラム配布サービスが挙げられる。携帯電話が中
間コード実行装置120に相当し、携帯電話用のプログラ
ムを格納したウェブサーバなどが配布サーバ装置100に
相当する。
のプログラム配布サービスが挙げられる。携帯電話が中
間コード実行装置120に相当し、携帯電話用のプログラ
ムを格納したウェブサーバなどが配布サーバ装置100に
相当する。
【0014】配布サーバ装置100は主記憶装置101と二次
記憶装置102と中央処理装置103と通信装置104などから
成る。主記憶装置101は、命令コード対応管理モジュー
ル105とプログラム管理モジュール106などを保持する。
中央処理装置103は主記憶装置101上のモジュール群を動
作させる。通信装置104は、ネットワークと通じて中間
コード実行装置120と通信する機能を提供する。
記憶装置102と中央処理装置103と通信装置104などから
成る。主記憶装置101は、命令コード対応管理モジュー
ル105とプログラム管理モジュール106などを保持する。
中央処理装置103は主記憶装置101上のモジュール群を動
作させる。通信装置104は、ネットワークと通じて中間
コード実行装置120と通信する機能を提供する。
【0015】二次記憶装置102上には、利用者リスト10
7、命令コード対応リスト108、正規プログラムデータ10
9などが格納されており、主記憶装置101上のモジュール
から読み書きされる。
7、命令コード対応リスト108、正規プログラムデータ10
9などが格納されており、主記憶装置101上のモジュール
から読み書きされる。
【0016】命令コード対応管理モジュール105は、利
用者リスト107からサービス利用者の情報を取得し、利
用者毎に一意の「命令コード対応150」を生成する機能
と、生成された命令コード対応150を当該利用者が利用
している中間コード実行装置120に送信する機能を実現
する。
用者リスト107からサービス利用者の情報を取得し、利
用者毎に一意の「命令コード対応150」を生成する機能
と、生成された命令コード対応150を当該利用者が利用
している中間コード実行装置120に送信する機能を実現
する。
【0017】プログラム管理モジュール106は、中間コ
ード実行装置120からプログラム配布要求151を受信する
機能と、配布するプログラムを暗号化する機能と、中間
コード実行装置120に暗号化済プログラム152を送信する
機能を実現する。
ード実行装置120からプログラム配布要求151を受信する
機能と、配布するプログラムを暗号化する機能と、中間
コード実行装置120に暗号化済プログラム152を送信する
機能を実現する。
【0018】中間コード実行装置120は、主記憶装置12
1、通信装置122、中央処理装置123などから構成され
る。主記憶装置121には、プログラム管理モジュール12
4、命令コード対応受信モジュール125、プログラム復号
・実行モジュール126、正規ジャンプテーブル127、利用
者固有ジャンプテーブル128などが配置される。中央処
理装置123は主記憶装置121上の各モジュールを実行す
る。通信装置122は、ネットワークを通じて配布サーバ
装置100と通信する機能を提供する。
1、通信装置122、中央処理装置123などから構成され
る。主記憶装置121には、プログラム管理モジュール12
4、命令コード対応受信モジュール125、プログラム復号
・実行モジュール126、正規ジャンプテーブル127、利用
者固有ジャンプテーブル128などが配置される。中央処
理装置123は主記憶装置121上の各モジュールを実行す
る。通信装置122は、ネットワークを通じて配布サーバ
装置100と通信する機能を提供する。
【0019】プログラム管理モジュール124は、配布サ
ーバ100に対してプログラムの配布を要求する機能と、
暗号化済みプログラム152を配布サーバ100から受信する
機能と、受信したプログラムを保持する機能を実現す
る。
ーバ100に対してプログラムの配布を要求する機能と、
暗号化済みプログラム152を配布サーバ100から受信する
機能と、受信したプログラムを保持する機能を実現す
る。
【0020】命令コード対応受信モジュール125は配布
サーバ装置100から命令コード対応150を受信する機能
と、その命令コード対応150を用いて利用者固有ジャン
プテーブル128を書き換える機能を実現する。
サーバ装置100から命令コード対応150を受信する機能
と、その命令コード対応150を用いて利用者固有ジャン
プテーブル128を書き換える機能を実現する。
【0021】プログラム復号・実行モジュール126は、
利用者固有ジャンプテーブル128を用いて、暗号化済み
プログラム150の復号と実行を同時に行なう機能を実現
する。正規命令処理ジャンプテーブル127は、プログラ
ム復号・実行モジュール126が暗号化されていない正規
プログラムを実行する時に参照される。各ジャンプテー
ブルは、各中間コード命令の処理ルーチンアドレスを保
持している。詳細は図7・図8を用いて後述する。
利用者固有ジャンプテーブル128を用いて、暗号化済み
プログラム150の復号と実行を同時に行なう機能を実現
する。正規命令処理ジャンプテーブル127は、プログラ
ム復号・実行モジュール126が暗号化されていない正規
プログラムを実行する時に参照される。各ジャンプテー
ブルは、各中間コード命令の処理ルーチンアドレスを保
持している。詳細は図7・図8を用いて後述する。
【0022】以下、図2から図9を用いてシステム構成
の詳細を示す。
の詳細を示す。
【0023】図2を用いて利用者リスト107の一例を示
す。利用者リストは、利用者ID202、氏名、中間コー
ド実行装置ネットワークアドレスからなる利用者データ
を複数保持する。中間コード実行装置ネットワークアド
レスは、当該利用者が利用する中間コード実行装置120
を、ネットワーク上で一意に識別できるアドレスであ
る。
す。利用者リストは、利用者ID202、氏名、中間コー
ド実行装置ネットワークアドレスからなる利用者データ
を複数保持する。中間コード実行装置ネットワークアド
レスは、当該利用者が利用する中間コード実行装置120
を、ネットワーク上で一意に識別できるアドレスであ
る。
【0024】図3を用いて、中間コードの正規命令コー
ド対応について説明する。
ド対応について説明する。
【0025】一つのプログラムを異なるハードウェア上
で動作させるために、ハードウェアに依存しない中立的
な命令群を用いてプログラムを記述する。このための中
立的な命令列が中間コードである。各ハードウェア上で
は、中間コードを解釈・実行する仮想機械を動作させ
る。図3に示したように、整数加算、整数引き算などの
各命令に、1、2などの数値を対応づけることで、正規
命令のコードが定まる。この対応付けの個数は、定義さ
れた中間コードの命令数Nとなる。
で動作させるために、ハードウェアに依存しない中立的
な命令群を用いてプログラムを記述する。このための中
立的な命令列が中間コードである。各ハードウェア上で
は、中間コードを解釈・実行する仮想機械を動作させ
る。図3に示したように、整数加算、整数引き算などの
各命令に、1、2などの数値を対応づけることで、正規
命令のコードが定まる。この対応付けの個数は、定義さ
れた中間コードの命令数Nとなる。
【0026】図4を用いて、命令コード対応リスト108
の一例を示す。命令コード対応リスト108は、利用者I
D202と命令コード対応150のリストを保持する。命令コ
ード対応150は、中間コードの正規命令数値と、それに
対応づけられた数値のペアである利用者固有命令コード
を保持する。
の一例を示す。命令コード対応リスト108は、利用者I
D202と命令コード対応150のリストを保持する。命令コ
ード対応150は、中間コードの正規命令数値と、それに
対応づけられた数値のペアである利用者固有命令コード
を保持する。
【0027】図5に、正規プログラムデータ109のデー
タ構成の一例を示す。
タ構成の一例を示す。
【0028】正規プログラムデータ109は、複数の正規
プログラム501から構成される。正規プログラム501はプ
ログラムID502、プログラム長などと一緒に保持され
る。正規プログラム501は、開発元情報、プログラム
名、関数リストなどから構成される。関数リストは複数
の関数データから構成される。関数データは、関数名、
返り値型、引数型リスト、正規命令コード列503などか
ら構成される。引数型リストは複数の引数名と引数型か
ら構成される。正規命令コード列503は、図3に示した
正規命令コード対応に従った、正規命令コードの列であ
り、当該関数の処理内容を記述するものである。従来の
中間コード実行装置は、この正規命令コード列を解釈・
実行する。
プログラム501から構成される。正規プログラム501はプ
ログラムID502、プログラム長などと一緒に保持され
る。正規プログラム501は、開発元情報、プログラム
名、関数リストなどから構成される。関数リストは複数
の関数データから構成される。関数データは、関数名、
返り値型、引数型リスト、正規命令コード列503などか
ら構成される。引数型リストは複数の引数名と引数型か
ら構成される。正規命令コード列503は、図3に示した
正規命令コード対応に従った、正規命令コードの列であ
り、当該関数の処理内容を記述するものである。従来の
中間コード実行装置は、この正規命令コード列を解釈・
実行する。
【0029】図6に、暗号化済プログラム152のデータ
構成の一例を示す。
構成の一例を示す。
【0030】暗号化済プログラム152は図5に示した正規
プログラム501とほぼ同様のデータ構成を持つ。正規プ
ログラム501は、関数データ中に正規プログラム命令コ
ード列503を保持していたのに対し、暗号化済プログラ
ム152は、利用者独自命令コード列601を保持している点
が異なる。
プログラム501とほぼ同様のデータ構成を持つ。正規プ
ログラム501は、関数データ中に正規プログラム命令コ
ード列503を保持していたのに対し、暗号化済プログラ
ム152は、利用者独自命令コード列601を保持している点
が異なる。
【0031】正規プログラムから、暗号化済プログラム
を生成する手順は後述する。
を生成する手順は後述する。
【0032】図7に、中間コード実行装置120上の、正
規ジャンプテーブル127のデータ構造の一例を示す。
規ジャンプテーブル127のデータ構造の一例を示す。
【0033】正規ジャンプテーブル127は、正規命令コ
ードの順番に、正規該当命令コードを処理するルーチン
のメモリアドレスをN個並べたものである。図7は、整
数加算を示す正規命令コード「1」に対応するメモリア
ドレスに、整数加算のルーチンが配置されている状況を
示す。
ードの順番に、正規該当命令コードを処理するルーチン
のメモリアドレスをN個並べたものである。図7は、整
数加算を示す正規命令コード「1」に対応するメモリア
ドレスに、整数加算のルーチンが配置されている状況を
示す。
【0034】図8に、利用者固有ジャンプテーブル128
のデータ構造の一例を示す。
のデータ構造の一例を示す。
【0035】利用者固有ジャンプテーブル128は、正規
ジャンプテーブル127と同様の構造を持っているが、正
規命令コードの順番ではなく、利用者固有命令コードの
順番に処理ルーチンアドレスを並べたものである。図8
は整数加算を示す利用者固有命令コード「3」に対応す
るメモリアドレスに、整数加算のルーチンが配置されて
いる状況を示す。
ジャンプテーブル127と同様の構造を持っているが、正
規命令コードの順番ではなく、利用者固有命令コードの
順番に処理ルーチンアドレスを並べたものである。図8
は整数加算を示す利用者固有命令コード「3」に対応す
るメモリアドレスに、整数加算のルーチンが配置されて
いる状況を示す。
【0036】図9に、プログラム配布要求151のデータ
構造の一例を示す。
構造の一例を示す。
【0037】プログラム配布要求151は、要求元を示
す、中間コード実行装置ネットワークアドレスと、利用
者ID202を保持し、配布を要求するプログラムを示す
プログラムID 502を保持する。
す、中間コード実行装置ネットワークアドレスと、利用
者ID202を保持し、配布を要求するプログラムを示す
プログラムID 502を保持する。
【0038】図10を用いて、本発明の中心となるプロ
グラムの暗号化処理と解釈実行処理の流れを説明する。
グラムの暗号化処理と解釈実行処理の流れを説明する。
【0039】最初に、正規命令コード列503に対し、命
令コード対応150に従って命令を表す数値を置換するこ
とによりプログラムが暗号化される。図10では、正規
命令コードでは「1」であった命令が、置換によって
「3」になっている。暗号化されたコード列は利用者固
有コード列601となる。
令コード対応150に従って命令を表す数値を置換するこ
とによりプログラムが暗号化される。図10では、正規
命令コードでは「1」であった命令が、置換によって
「3」になっている。暗号化されたコード列は利用者固
有コード列601となる。
【0040】次に正規ジャンプテーブル127と命令コー
ド対応150から、利用者固有ジャンプテーブル128を設定
する。図7に示したように、正規ジャンプテーブルには
正規命令コード順に各命令処理ルーチンのアドレスが並
べられている。これを図8に示したように利用者固有命
令コードの順番に並べなおす。正規ジャンプテーブル12
7では1番目に配置されていたアドレス「0x00343702」
は、利用者固有ジャンプテーブルでは3番目に配置され
ている。
ド対応150から、利用者固有ジャンプテーブル128を設定
する。図7に示したように、正規ジャンプテーブルには
正規命令コード順に各命令処理ルーチンのアドレスが並
べられている。これを図8に示したように利用者固有命
令コードの順番に並べなおす。正規ジャンプテーブル12
7では1番目に配置されていたアドレス「0x00343702」
は、利用者固有ジャンプテーブルでは3番目に配置され
ている。
【0041】利用者固有コードの実行は、以下の3つの
手順を繰り返すことで実現される。 (1)利用者固有コードを一つ利用者固有コード列601
から取得。 (2)取得したコードを処理する処理ルーチンのアドレ
スを、利用者固有ジャンプテーブルから取得。 (3)取得した処理ルーチンを呼び出す。
手順を繰り返すことで実現される。 (1)利用者固有コードを一つ利用者固有コード列601
から取得。 (2)取得したコードを処理する処理ルーチンのアドレ
スを、利用者固有ジャンプテーブルから取得。 (3)取得した処理ルーチンを呼び出す。
【0042】上記手順は、正規ジャンプテーブル127の
代わりに利用者固有ジャンプテーブル128を用いている
点を除き、通常の中間コード解釈実行処理と同じ処理で
ある。よって特別な命令コードの復号処理は不要であ
り、復号処理のための記憶領域も必要としない。
代わりに利用者固有ジャンプテーブル128を用いている
点を除き、通常の中間コード解釈実行処理と同じ処理で
ある。よって特別な命令コードの復号処理は不要であ
り、復号処理のための記憶領域も必要としない。
【0043】以下、図11と図12を用いて、システム
全体の処理手順を示す。本実施例の手順は、大きく「命
令コード対応の生成・配布」と「プログラム配布・実
行」に分かれる。「命令コード対応の生成・配布」処理
は、「プログラム配布・実行」処理の事前に行なわれ
る。
全体の処理手順を示す。本実施例の手順は、大きく「命
令コード対応の生成・配布」と「プログラム配布・実
行」に分かれる。「命令コード対応の生成・配布」処理
は、「プログラム配布・実行」処理の事前に行なわれ
る。
【0044】図11に「命令コード対応の生成・配布」
の手順を示す。 処理1101: 配布サーバ装置100上の、命令コード対応
管理モジュール105により、各利用者固有の命令コード
対応150が生成され、命令コード対応リスト108に格納さ
れる。処理1101の詳細は図13を用いて後述する。 処理1102: 配布サーバ装置100上の命令コード対応管
理モジュール105により、命令コード対応リスト108に格
納された各利用者固有の命令コード対応150が、各中間
コード実行装置120に送信される。
の手順を示す。 処理1101: 配布サーバ装置100上の、命令コード対応
管理モジュール105により、各利用者固有の命令コード
対応150が生成され、命令コード対応リスト108に格納さ
れる。処理1101の詳細は図13を用いて後述する。 処理1102: 配布サーバ装置100上の命令コード対応管
理モジュール105により、命令コード対応リスト108に格
納された各利用者固有の命令コード対応150が、各中間
コード実行装置120に送信される。
【0045】命令コード対応150は、「プログラム配布
・実行」処理時に暗号鍵の役割を果たすデータであり、
配信時に他者に盗聴されてはならない。このことから、
配信にあたっては十分信頼できる暗号処理を適用するこ
とが望ましい。本処理および処理1103は、「プログラム
配布・実行」処理の事前に行なわれる処理であり、ここ
での暗号化処理、復号処理に処理時間がかかっても「プ
ログラム配布・実行」時の処理時間には影響が無い。よ
ってここで用いる暗号・復号処理は既存の処理時間が長
い処理を用いてもよい。 処理1103: 中間コード実行装置120上の、命令コード
対応受信モジュール125により、命令コード対応150が受
信される。命令コード対応150が暗号化されている場合
には復号される。
・実行」処理時に暗号鍵の役割を果たすデータであり、
配信時に他者に盗聴されてはならない。このことから、
配信にあたっては十分信頼できる暗号処理を適用するこ
とが望ましい。本処理および処理1103は、「プログラム
配布・実行」処理の事前に行なわれる処理であり、ここ
での暗号化処理、復号処理に処理時間がかかっても「プ
ログラム配布・実行」時の処理時間には影響が無い。よ
ってここで用いる暗号・復号処理は既存の処理時間が長
い処理を用いてもよい。 処理1103: 中間コード実行装置120上の、命令コード
対応受信モジュール125により、命令コード対応150が受
信される。命令コード対応150が暗号化されている場合
には復号される。
【0046】さらに受信した命令コード対応150を元
に、利用者固有ジャンプテーブル128が変更される。処
理1103の詳細は図15を用いて後述する。
に、利用者固有ジャンプテーブル128が変更される。処
理1103の詳細は図15を用いて後述する。
【0047】本実施例ではネットワーク通信による命令
コード対応の配布処理を示したが、配布処理形態に制限
はない。電子メールによる配布、CD−ROMやフロッ
ピー(登録商標)ディスクの郵送による配布なども考え
られる。
コード対応の配布処理を示したが、配布処理形態に制限
はない。電子メールによる配布、CD−ROMやフロッ
ピー(登録商標)ディスクの郵送による配布なども考え
られる。
【0048】図12に「プログラム配布・実行」の手順
を示す。 処理1201: 中間コード実行装置120上のプログラム管
理モジュール124により、プログラム配布要求151が配布
サーバ装置100に送信される。 処理1202: 配布サーバ装置100上のプログラム管理モ
ジュール106により、プログラム配布要求151が受信され
る。 処理1203: 配布サーバ装置100上のプログラム管理モ
ジュール106により、プログラム配布要求151に従って配
布するプログラム正規プログラムデータ109から取得さ
れ、暗号化される。詳細は図16を用いて後述する。 処理1204: 配布サーバ装置100上のプログラム管理モ
ジュール106により、暗号化済みプログラム152が中間コ
ード実行装置120に送信される。 処理1205: 中間コード実行装置120上のプログラム管
理モジュール124により、暗号化済みプログラム152が受
信される。 処理1206: 中間コード実行装置120上のプログラム復
号・実行モジュール126により、暗号化済みプログラム1
52が復号と同時に実行される。詳細は図17を用いて後
述する。
を示す。 処理1201: 中間コード実行装置120上のプログラム管
理モジュール124により、プログラム配布要求151が配布
サーバ装置100に送信される。 処理1202: 配布サーバ装置100上のプログラム管理モ
ジュール106により、プログラム配布要求151が受信され
る。 処理1203: 配布サーバ装置100上のプログラム管理モ
ジュール106により、プログラム配布要求151に従って配
布するプログラム正規プログラムデータ109から取得さ
れ、暗号化される。詳細は図16を用いて後述する。 処理1204: 配布サーバ装置100上のプログラム管理モ
ジュール106により、暗号化済みプログラム152が中間コ
ード実行装置120に送信される。 処理1205: 中間コード実行装置120上のプログラム管
理モジュール124により、暗号化済みプログラム152が受
信される。 処理1206: 中間コード実行装置120上のプログラム復
号・実行モジュール126により、暗号化済みプログラム1
52が復号と同時に実行される。詳細は図17を用いて後
述する。
【0049】以下、図13から図17を用いて、処理手
順の詳細を示す。
順の詳細を示す。
【0050】図13に「命令コード対応生成」処理1101
の手順詳細を示す。 処理1301: 利用者リスト107を参照し、格納されてい
る利用者データ201を一つ選択する。 処理1302: 選択した利用者に固有の命令コード対応15
0を生成する。手順の詳細は図14を用いて後述する。 処理1303: 生成した命令コード対応150を、命令コー
ド対応リスト108に格納する。 処理1305: 利用者リスト107に格納されている全ての
利用者データ201について、命令コード対応150を生成し
たかどうか判定する。まだ生成していない利用者データ
201がある場合には、処理1301に戻り、全利用者につい
て生成を完了した場合には「命令コード対応生成」処理
を終了する。
の手順詳細を示す。 処理1301: 利用者リスト107を参照し、格納されてい
る利用者データ201を一つ選択する。 処理1302: 選択した利用者に固有の命令コード対応15
0を生成する。手順の詳細は図14を用いて後述する。 処理1303: 生成した命令コード対応150を、命令コー
ド対応リスト108に格納する。 処理1305: 利用者リスト107に格納されている全ての
利用者データ201について、命令コード対応150を生成し
たかどうか判定する。まだ生成していない利用者データ
201がある場合には、処理1301に戻り、全利用者につい
て生成を完了した場合には「命令コード対応生成」処理
を終了する。
【0051】図14に「利用者固有命令コード対応生
成」処理1302の手順詳細を示す。 処理1401: 中間コードの正規命令N個の中から、対応
付けを定めていない正規命令を一つ選択する。 処理1402: 前記処理1401において選択した正規命令に
対応付ける数値を、適切な乱数アルゴリズムを用いて生
成し、対応付けるコードとする。 処理1403:生成したコードが、他の正規命令に対応付け
るコードとして使われているかどうかを判定する。もし
使われている場合には処理1402に戻る。使われていなけ
れば処理1404に進む。 処理1404: 全ての正規命令に対してコードを対応付け
たかどうかを判定する。まだ対応付けていない正規命令
がある場合には処理1401に戻る。全てに対応付けを終え
た場合は処理1405に進む。 処理1405: 上記処理1401から処理1404によって生成し
た「利用者固有命令コード対応」について、他利用者に
固有の命令コード対応150と同じ対応付けになっていな
いかどうかを判定する。
成」処理1302の手順詳細を示す。 処理1401: 中間コードの正規命令N個の中から、対応
付けを定めていない正規命令を一つ選択する。 処理1402: 前記処理1401において選択した正規命令に
対応付ける数値を、適切な乱数アルゴリズムを用いて生
成し、対応付けるコードとする。 処理1403:生成したコードが、他の正規命令に対応付け
るコードとして使われているかどうかを判定する。もし
使われている場合には処理1402に戻る。使われていなけ
れば処理1404に進む。 処理1404: 全ての正規命令に対してコードを対応付け
たかどうかを判定する。まだ対応付けていない正規命令
がある場合には処理1401に戻る。全てに対応付けを終え
た場合は処理1405に進む。 処理1405: 上記処理1401から処理1404によって生成し
た「利用者固有命令コード対応」について、他利用者に
固有の命令コード対応150と同じ対応付けになっていな
いかどうかを判定する。
【0052】他利用者の命令コード対応150は、命令コ
ード対応リスト108に格納されている。もし同じ対応付
けが見つかれば処理1406に進み、見つからなければ生成
した対応付けを「利用者固有命令コード対応」処理1303
に引き渡して終了する。 処理1406: 各正規命令に処理1402によって生成されて
対応付けられたコードを無効化する。これにより、スタ
ート時点と同じ状態となる。
ード対応リスト108に格納されている。もし同じ対応付
けが見つかれば処理1406に進み、見つからなければ生成
した対応付けを「利用者固有命令コード対応」処理1303
に引き渡して終了する。 処理1406: 各正規命令に処理1402によって生成されて
対応付けられたコードを無効化する。これにより、スタ
ート時点と同じ状態となる。
【0053】図15に「命令コード対応受信」処理1103
の処理詳細を示す。 処理1501: 配布サーバ100から、命令コード対応150を
受信する。命令コード対応150が暗号化されている場合
には復号する。 処理1502: 受信した命令コード対応150から、利用者
固有命令コードをひとつ選択する。 処理1503: 上記処理1502において選択した利用者固有
命令コードに対応する正規命令コードを、受信した命令
コード対応150から取得する。 処理1504: 上記処理1503により取得した正規命令コー
ドが指定する命令を処理するルーチンのメモリアドレス
を、正規ジャンプテーブル127から取得する。 処理1505: 上記処理1504により取得した命令処理ルー
チンのアドレスを、利用者固有ジャンプテーブル128に
格納する。格納する場所は、処理1502において選択した
利用者固有命令コードから定める。 処理1506: 上記処理1502から処理1505を、全利用者固
有命令コードについて行なったかどうかを判定する。ま
だ全てについて行なっていない場合は処理1502に戻る。
完了した場合は処理を終了する。
の処理詳細を示す。 処理1501: 配布サーバ100から、命令コード対応150を
受信する。命令コード対応150が暗号化されている場合
には復号する。 処理1502: 受信した命令コード対応150から、利用者
固有命令コードをひとつ選択する。 処理1503: 上記処理1502において選択した利用者固有
命令コードに対応する正規命令コードを、受信した命令
コード対応150から取得する。 処理1504: 上記処理1503により取得した正規命令コー
ドが指定する命令を処理するルーチンのメモリアドレス
を、正規ジャンプテーブル127から取得する。 処理1505: 上記処理1504により取得した命令処理ルー
チンのアドレスを、利用者固有ジャンプテーブル128に
格納する。格納する場所は、処理1502において選択した
利用者固有命令コードから定める。 処理1506: 上記処理1502から処理1505を、全利用者固
有命令コードについて行なったかどうかを判定する。ま
だ全てについて行なっていない場合は処理1502に戻る。
完了した場合は処理を終了する。
【0054】図16に「プログラム暗号化」処理の手順
詳細を示す。 処理1601: プログラム配布を要求した利用者の利用者
ID202を調べ、当該利用者の利用者固有命令コード対
応150を命令コード対応リスト108から取得する。 処理1602: 配布要求されたプログラムのプログラムI
D 502を用いて、正規プログラムデータ109から正規プ
ログラム501を取得する。 処理1603: 正規プログラム501の保持する正規コード
列503から、正規命令コードを一つ取得する。 処理1604: 上記処理1601において取得した利用者固有
命令コード対応を用いて、上記処理1603において取得し
た正規命令コードに対応する利用者命令コードを取得す
る。 処理1605: 上記処理1604において取得した利用者命令
コードを用いて、正規命令コード列503の該当コードを
置換し、上書きする。 処理1606: 正規命令コード503の、全命令を置換した
かどうか判定する。置換が完了していない場合には処理
1603に戻り、完了している場合には処理1607に進む。 処理1607: 上記置換作業により正規プログラム501か
ら変換された暗号化済みプログラム152を、処理1204に
引き渡して処理を終了する。
詳細を示す。 処理1601: プログラム配布を要求した利用者の利用者
ID202を調べ、当該利用者の利用者固有命令コード対
応150を命令コード対応リスト108から取得する。 処理1602: 配布要求されたプログラムのプログラムI
D 502を用いて、正規プログラムデータ109から正規プ
ログラム501を取得する。 処理1603: 正規プログラム501の保持する正規コード
列503から、正規命令コードを一つ取得する。 処理1604: 上記処理1601において取得した利用者固有
命令コード対応を用いて、上記処理1603において取得し
た正規命令コードに対応する利用者命令コードを取得す
る。 処理1605: 上記処理1604において取得した利用者命令
コードを用いて、正規命令コード列503の該当コードを
置換し、上書きする。 処理1606: 正規命令コード503の、全命令を置換した
かどうか判定する。置換が完了していない場合には処理
1603に戻り、完了している場合には処理1607に進む。 処理1607: 上記置換作業により正規プログラム501か
ら変換された暗号化済みプログラム152を、処理1204に
引き渡して処理を終了する。
【0055】図17に「プログラム復号・実行」処理12
06の手順詳細を示す。 処理1701: 暗号化済みプログラム152から、実行する
利用者固有命令コード列601を取得する。 処理1702: 上記処理1701において取得した利用者固有
命令コード列601から、次に実行する命令コードを取得
する。 処理1703: 取得した命令コードを処理するルーチンの
メモリアドレスを、利用者固有ジャンプテーブル128を
参照して取得する。この処理が、利用者固有命令を正規
命令に戻す処理と、該当する処理ルーチンを取得する処
理を、同時に行なっている。受信した暗号化済みプログ
ラムの暗号化に用いられた、「命令コード対応150」を
事前に受信していない中間コード実行装置120は、本処
理に用いる利用者固有ジャンプテーブル128が適切でな
い。このため適切な処理ルーチンのメモリアドレスを取
得することができず、中間コードを正しく実行できな
い。 処理1704: 上記処理1703において取得したメモリアド
レスにある命令処理ルーチンを呼び出す。 処理1705: 上記処理1704におけるルーチン呼び出しの
結果からプログラム実行を終了すべきかどうか判定す
る。実行を継続する場合は処理1702に戻る。
06の手順詳細を示す。 処理1701: 暗号化済みプログラム152から、実行する
利用者固有命令コード列601を取得する。 処理1702: 上記処理1701において取得した利用者固有
命令コード列601から、次に実行する命令コードを取得
する。 処理1703: 取得した命令コードを処理するルーチンの
メモリアドレスを、利用者固有ジャンプテーブル128を
参照して取得する。この処理が、利用者固有命令を正規
命令に戻す処理と、該当する処理ルーチンを取得する処
理を、同時に行なっている。受信した暗号化済みプログ
ラムの暗号化に用いられた、「命令コード対応150」を
事前に受信していない中間コード実行装置120は、本処
理に用いる利用者固有ジャンプテーブル128が適切でな
い。このため適切な処理ルーチンのメモリアドレスを取
得することができず、中間コードを正しく実行できな
い。 処理1704: 上記処理1703において取得したメモリアド
レスにある命令処理ルーチンを呼び出す。 処理1705: 上記処理1704におけるルーチン呼び出しの
結果からプログラム実行を終了すべきかどうか判定す
る。実行を継続する場合は処理1702に戻る。
【0056】次に、本発明を実現するもう一つの実施例
を、図1から図16、図18から図20を用いて説明す
る。
を、図1から図16、図18から図20を用いて説明す
る。
【0057】配布サーバ装置100は、前述の実施例と同
様の構成を持つ。中間コード実行装置120も前述の実施
例とほぼ同様の構成であるが、図18に示すように基本
プログラムデータ1801が主記憶装置121上に追加されて
いる点が異なる。
様の構成を持つ。中間コード実行装置120も前述の実施
例とほぼ同様の構成であるが、図18に示すように基本
プログラムデータ1801が主記憶装置121上に追加されて
いる点が異なる。
【0058】図18に、中間コード実行装置120のもう
一つの構成例を示す。基本プログラム1801には、頻繁に
利用される基本的な正規プログラムが予め格納されてい
る。本実施例では、中間コード実行装置120は受信した
暗号化済プログラム152のみではなく、基本プログラム
データ1801に格納されている正規プログラム501をも実
行する。このとき、これらのプログラムは互いに関数呼
びだしなどの方式により、混在した形で実行される。
一つの構成例を示す。基本プログラム1801には、頻繁に
利用される基本的な正規プログラムが予め格納されてい
る。本実施例では、中間コード実行装置120は受信した
暗号化済プログラム152のみではなく、基本プログラム
データ1801に格納されている正規プログラム501をも実
行する。このとき、これらのプログラムは互いに関数呼
びだしなどの方式により、混在した形で実行される。
【0059】上記のように、暗号化済プログラム152と
正規プログラム501を混在させて実行するために、各命
令処理ルーチンへのジャンプテーブルとして、利用者固
有ジャンプテーブル128、および正規ジャンプテーブル1
27のふたつを切り替えながら解釈・実行を遂行する手段
を取る。この手段により、上記二種類のプログラムを混
在させて実行することが可能になる。実行処理の詳細は
図20を用いて後述する。
正規プログラム501を混在させて実行するために、各命
令処理ルーチンへのジャンプテーブルとして、利用者固
有ジャンプテーブル128、および正規ジャンプテーブル1
27のふたつを切り替えながら解釈・実行を遂行する手段
を取る。この手段により、上記二種類のプログラムを混
在させて実行することが可能になる。実行処理の詳細は
図20を用いて後述する。
【0060】図19に、基本プログラムデータ1801のデ
ータ構造例を示す。複数の正規プログラム501が、プロ
グラムID、プログラム長などと共に保持されている。
ータ構造例を示す。複数の正規プログラム501が、プロ
グラムID、プログラム長などと共に保持されている。
【0061】図20に二つ目の実施例における「プログ
ラム復号・実行」処理1206の手順詳細を示す。 処理2001: 配布サーバ100から受信した暗号化済みプ
ログラム152、もしくは基本プログラムデータ1801から
取得した正規プログラム501のいずれかから、利用者固
有命令コード列601、もしくは正規命令コード列503を取
得する。取得した命令コード列を、以後の処理により実
行していく。 処理2002: これから実行する命令コード列が利用者固
有命令コード列601であれば、処理2003に進む。正規命
令コード列503であれば、処理2004に進む。 処理2003: 後述の処理2006において利用するテーブル
として、利用者固有ジャンプテーブル128を指定する。 処理2004: 後述の処理2006において利用するテーブル
として、正規ジャンプテーブル127を指定する。 処理2005: 処理2001もしくは処理2008によって取得し
た命令コード列から、次に実行する命令コードを取得す
る。 処理2006: 取得した命令コードを処理するルーチンの
メモリアドレスを、各命令処理ルーチンへのジャンプテ
ーブルから取得する。このときに参照するジャンプテー
ブルは、処理2003もしくは処理2004において指定され
た、正規ジャンプテーブル127もしくは利用者固有ジャ
ンプテーブル128のいずれかである。前述の実施例と同
様に、利用者固有命令を正規命令に戻す処理と、該当す
る処理ルーチンを取得する処理を、同時に行なってい
る。 処理2007: 取得したメモリアドレスを用いて、処理ル
ーチンを呼び出す。もし、処理対象命令が他のプログラ
ムに対する関数呼びだし、もしくは関数呼びだしからの
リターンなど、他の命令コード列に移動する処理であれ
ば、処理2008を呼び出す。 処理2008: 関数呼びだしなどの命令コード列変更の処
理を行なう。もし必要であれば正規プログラム501、暗
号化済みプログラム152から命令コード列を取得する。
その後処理2002に進む。 処理2009: 処理2005において取得した命令コードがプ
ログラム実行終了を示すものであれば、プログラム実行
終了処理ルーチンが呼び出され、処理が終了する。 処理2010: 処理2005において取得した命令コードが他
の命令コード列へ移動する命令、プログラム実行終了命
令のいずれでもないときは、当該命令の処理を行なった
後に処理2005に進む。
ラム復号・実行」処理1206の手順詳細を示す。 処理2001: 配布サーバ100から受信した暗号化済みプ
ログラム152、もしくは基本プログラムデータ1801から
取得した正規プログラム501のいずれかから、利用者固
有命令コード列601、もしくは正規命令コード列503を取
得する。取得した命令コード列を、以後の処理により実
行していく。 処理2002: これから実行する命令コード列が利用者固
有命令コード列601であれば、処理2003に進む。正規命
令コード列503であれば、処理2004に進む。 処理2003: 後述の処理2006において利用するテーブル
として、利用者固有ジャンプテーブル128を指定する。 処理2004: 後述の処理2006において利用するテーブル
として、正規ジャンプテーブル127を指定する。 処理2005: 処理2001もしくは処理2008によって取得し
た命令コード列から、次に実行する命令コードを取得す
る。 処理2006: 取得した命令コードを処理するルーチンの
メモリアドレスを、各命令処理ルーチンへのジャンプテ
ーブルから取得する。このときに参照するジャンプテー
ブルは、処理2003もしくは処理2004において指定され
た、正規ジャンプテーブル127もしくは利用者固有ジャ
ンプテーブル128のいずれかである。前述の実施例と同
様に、利用者固有命令を正規命令に戻す処理と、該当す
る処理ルーチンを取得する処理を、同時に行なってい
る。 処理2007: 取得したメモリアドレスを用いて、処理ル
ーチンを呼び出す。もし、処理対象命令が他のプログラ
ムに対する関数呼びだし、もしくは関数呼びだしからの
リターンなど、他の命令コード列に移動する処理であれ
ば、処理2008を呼び出す。 処理2008: 関数呼びだしなどの命令コード列変更の処
理を行なう。もし必要であれば正規プログラム501、暗
号化済みプログラム152から命令コード列を取得する。
その後処理2002に進む。 処理2009: 処理2005において取得した命令コードがプ
ログラム実行終了を示すものであれば、プログラム実行
終了処理ルーチンが呼び出され、処理が終了する。 処理2010: 処理2005において取得した命令コードが他
の命令コード列へ移動する命令、プログラム実行終了命
令のいずれでもないときは、当該命令の処理を行なった
後に処理2005に進む。
【0062】上記に示したように、二つ目の実施例で
は、暗号化されたプログラムと暗号化されていないプロ
グラムを混在させて実行することが可能である。
は、暗号化されたプログラムと暗号化されていないプロ
グラムを混在させて実行することが可能である。
【0063】
【発明の効果】以上に述べたように、本発明による暗号
化されたプログラム実行方法によって以下の効果が得ら
れる。 (1)第三者がプログラムを入手したときに、プログラ
ムの実行を防ぐことができる。 (2)プログラム復号に必要な時間を大きく短縮可能で
ある。 (3)復号のための記憶領域を必要としない。 (4)暗号化されたプログラムと、暗号化されていない
プログラムを同時に実行可能である。
化されたプログラム実行方法によって以下の効果が得ら
れる。 (1)第三者がプログラムを入手したときに、プログラ
ムの実行を防ぐことができる。 (2)プログラム復号に必要な時間を大きく短縮可能で
ある。 (3)復号のための記憶領域を必要としない。 (4)暗号化されたプログラムと、暗号化されていない
プログラムを同時に実行可能である。
【図1】本発明を実現する実施例における、システム構
成を示す図である。
成を示す図である。
【図2】利用者リストのデータ構成を示す図である。
【図3】中間コードの正規命令コード対応を示す図であ
る。
る。
【図4】命令コード対応リストのデータ構成を示す図で
ある。
ある。
【図5】正規プログラムデータのデータ構成を示す図で
ある。
ある。
【図6】暗号化済みプログラムのデータ構成を示す図で
ある。
ある。
【図7】正規ジャンプテーブルのデータ構成を示す図で
ある。
ある。
【図8】利用者固有ジャンプテーブルのデータ構成を示
す図である。
す図である。
【図9】プログラム配布要求のデータ構成を示す図であ
る。
る。
【図10】本発明の中心となる、プログラム暗号化処理
とプログラム解釈実行処理を示す図である。
とプログラム解釈実行処理を示す図である。
【図11】命令コード対応の生成・配布の処理手順を示
す図である。
す図である。
【図12】プログラム配布・実行の処理手順を示す図で
ある。
ある。
【図13】命令コード対応生成の処理手順を示す図であ
る。
る。
【図14】利用者固有命令コード対応生成の処理手順を
示す図である。
示す図である。
【図15】命令コード対応受信の処理手順を示す図であ
る。
る。
【図16】プログラム暗号化の処理手順を示す図であ
る。
る。
【図17】本発明を実現する一つ目の実施例における、
プログラム復号・実行の処理手順を示す図である。
プログラム復号・実行の処理手順を示す図である。
【図18】本発明を実現する二つ目の実施例における、
中間コード実行装置の構成を示す図である。
中間コード実行装置の構成を示す図である。
【図19】基本プログラムデータのデータ構成を示す図
である。
である。
【図20】本発明を実現する二つ目の実施例における、
暗号化プログラム復号・実行の処理手順を示す図であ
る。
暗号化プログラム復号・実行の処理手順を示す図であ
る。
100…配布サーバ装置、101…主記憶装置、102…二次記
憶装置、103…中央処理装置、104…通信装置、105…命
令コード対応管理モジュール、106…プログラム管理モ
ジュール、107…利用者リスト、108…命令コード対応リ
スト、109…正規プログラムデータ、120…中間コード実
行装置、121…主記憶装置、122…通信装置、123…中央
処理装置、124…プログラム管理モジュール、125…命令
コード対応受信モジュール、126…プログラム復号・実
行モジュール、127…正規ジャンプテーブル、128…利用
者固有ジャンプテーブル、150…命令コード対応、151…
暗号化済プログラム、152…プログラム配布要求
憶装置、103…中央処理装置、104…通信装置、105…命
令コード対応管理モジュール、106…プログラム管理モ
ジュール、107…利用者リスト、108…命令コード対応リ
スト、109…正規プログラムデータ、120…中間コード実
行装置、121…主記憶装置、122…通信装置、123…中央
処理装置、124…プログラム管理モジュール、125…命令
コード対応受信モジュール、126…プログラム復号・実
行モジュール、127…正規ジャンプテーブル、128…利用
者固有ジャンプテーブル、150…命令コード対応、151…
暗号化済プログラム、152…プログラム配布要求
─────────────────────────────────────────────────────
フロントページの続き
(72)発明者 横山 泰子
神奈川県川崎市麻生区王禅寺1099番地 株
式会社日立製作所システム開発研究所内
(72)発明者 森本 義章
神奈川県川崎市麻生区王禅寺1099番地 株
式会社日立製作所システム開発研究所内
(72)発明者 北川 健二
神奈川県川崎市麻生区王禅寺1099番地 株
式会社日立製作所システム開発研究所内
Fターム(参考) 5B076 FA08 FA11
Claims (4)
- 【請求項1】命令を表す数値の列として表現されたプロ
グラムを暗号化する方法であって、 置換前の命令数値を置換後の数値に対応付ける対応表を
用いて、命令数値を置換することを特徴とするプログラ
ム暗号化方法。 - 【請求項2】請求項1記載の暗号化方法により暗号化さ
れたプログラムを復号化すると同時に解釈実行する方法
であって、 各命令を実行するルーチン各々のメモリアドレスを、置
換後の命令数値の並びに従って整列させたアドレス表
を、前記対応表に従って作成し、 上記アドレス表を参照することにより各命令の復号化と
解釈実行を同時に行なうことを特徴とするプログラム復
号化方法。 - 【請求項3】ネットワーク接続された配布サーバと中間
コード実行装置において、配布サーバから中間コード実
行装置に配布されたプログラムを実行するプログラム実
行方法であって、 配布サーバが請求項1記載の暗号化方法によってプログ
ラムを暗号化してから中間コード実行装置に配布し、 中間コード実行装置は請求項2記載の方法に従って復号
化・実行することを特徴とし、 配布サーバ装置上にて請求項1記載の対応表を生成し、 配布サーバ装置から中間コード実行装置に上記対応表を
配布し、 中間コード実行装置は上記対応表を参照して請求項2記
載のアドレス表を設定することを特徴とするプログラム
実行方法。 - 【請求項4】請求項2記載のプログラム実行方法におい
て、請求項2記載のアドレス表を複数備え、暗号化され
たプログラムと、暗号化されていないプログラムを単一
の中間コード実行環境において同時に実行するために、
実行中のプログラムが切替わる時に使用するアドレス表
を切替えることを特徴とするプログラム実行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001341368A JP2003140758A (ja) | 2001-11-07 | 2001-11-07 | プログラム暗号化方法、復号化方法および実行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001341368A JP2003140758A (ja) | 2001-11-07 | 2001-11-07 | プログラム暗号化方法、復号化方法および実行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2003140758A true JP2003140758A (ja) | 2003-05-16 |
Family
ID=19155398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001341368A Pending JP2003140758A (ja) | 2001-11-07 | 2001-11-07 | プログラム暗号化方法、復号化方法および実行方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2003140758A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008523480A (ja) * | 2004-12-06 | 2008-07-03 | ギーゼッケ ウント デフリエント ゲーエムベーハー | ロードフォーマットのプログラムコードの生成および実行可能プログラムコードの提供 |
JP2015072520A (ja) * | 2013-10-01 | 2015-04-16 | 大日本印刷株式会社 | 情報記憶媒体、情報書き込み方法、及び書き込み処理プログラム |
JP2015114964A (ja) * | 2013-12-13 | 2015-06-22 | Kddi株式会社 | 疑似乱数生成装置及び方法、並びにプログラム難読化装置及び方法 |
-
2001
- 2001-11-07 JP JP2001341368A patent/JP2003140758A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008523480A (ja) * | 2004-12-06 | 2008-07-03 | ギーゼッケ ウント デフリエント ゲーエムベーハー | ロードフォーマットのプログラムコードの生成および実行可能プログラムコードの提供 |
US8332834B2 (en) | 2004-12-06 | 2012-12-11 | Giesecke & Devrient Gmbh | Generation of a program code in a load format and provision of an executable program code |
JP2013041598A (ja) * | 2004-12-06 | 2013-02-28 | Giesecke & Devrient Gmbh | プログラムコードの生成方法、プログラム開発システム、携帯用データキャリア、及びプログラム |
JP2015072520A (ja) * | 2013-10-01 | 2015-04-16 | 大日本印刷株式会社 | 情報記憶媒体、情報書き込み方法、及び書き込み処理プログラム |
JP2015114964A (ja) * | 2013-12-13 | 2015-06-22 | Kddi株式会社 | 疑似乱数生成装置及び方法、並びにプログラム難読化装置及び方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3657396B2 (ja) | 鍵管理システム、鍵管理装置、情報暗号化装置、情報復号化装置、およびプログラムを記憶した記憶媒体 | |
US8875299B2 (en) | User based content key encryption for a DRM system | |
JP4816161B2 (ja) | 無線通信装置、macアドレス管理システム、無線通信方法及び無線通信プログラム | |
US20030191946A1 (en) | System and method controlling access to digital works using a network | |
JP2009010470A (ja) | 端末装置、グループ管理サーバ、ネットワーク通信システム、並びに暗号化鍵生成方法 | |
JP6072806B2 (ja) | グループメンバによるグループ秘密の管理 | |
EP1548614B1 (en) | Storage service | |
JP2010004269A (ja) | 通信装置、鍵サーバ及びデータ | |
ATE542325T1 (de) | Verfahren und vorrichtungen zur sicheren verteilung von programminhalt | |
JPH08320847A (ja) | パスワード管理システム | |
CN105653902B (zh) | 软件注册方法和装置,注册码生成方法和装置 | |
KR20080027198A (ko) | 서버와 클라이언트 시스템 간의 통신 세션에서 상태 추적메커니즘을 수행하는 방법 | |
US8930703B2 (en) | Methods, systems and computer program products for controlling the disclosure time of information | |
WO2017126571A1 (ja) | 暗号文管理方法、暗号文管理装置及びプログラム | |
JP2006279269A (ja) | 情報管理装置、情報管理システム、ネットワークシステム、ユーザ端末、及びこれらのプログラム | |
JP2003140758A (ja) | プログラム暗号化方法、復号化方法および実行方法 | |
JP2005209118A (ja) | 情報分散ストレージシステムとこのシステムに用いられる全体認証サーバ装置、認証サーバ装置及び分散ストレージサーバ装置及び情報分散ストレージ方法 | |
JP2009055402A (ja) | 鍵生成装置、端末装置、ストレージサーバおよびコンピュータプログラム | |
Robles et al. | Implementation of secure architectures for mobile agents in marism-a | |
JP2005032184A (ja) | ソフトウェア提供方法及びシステム | |
JP2011193161A (ja) | 暗号管理システム及び暗号管理方法 | |
CN112131597A (zh) | 一种生成加密信息的方法、装置和智能设备 | |
Cincilla et al. | Light blind: Why encrypt if you can share? | |
CN116150793B (zh) | 基于DOA的handle标识解析技术的数据保护方法及系统 | |
JP4945265B2 (ja) | サービス利用識別情報生成装置、サービス利用識別情報生成システム、サービス利用識別情報生成方法およびプログラム |