JPH10301772A - 情報処理装置および情報処理方法、並びに記録媒体 - Google Patents

情報処理装置および情報処理方法、並びに記録媒体

Info

Publication number
JPH10301772A
JPH10301772A JP9112179A JP11217997A JPH10301772A JP H10301772 A JPH10301772 A JP H10301772A JP 9112179 A JP9112179 A JP 9112179A JP 11217997 A JP11217997 A JP 11217997A JP H10301772 A JPH10301772 A JP H10301772A
Authority
JP
Japan
Prior art keywords
program
information processing
java
virtual machine
processing apparatus
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.)
Abandoned
Application number
JP9112179A
Other languages
English (en)
Inventor
Shoichi Takeuchi
彰一 竹内
Shinji Nanba
慎二 難波
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP9112179A priority Critical patent/JPH10301772A/ja
Priority to TW087106081A priority patent/TW385411B/zh
Priority to US09/065,432 priority patent/US6820200B2/en
Priority to KR1019980014792A priority patent/KR19980081730A/ko
Priority to EP98303328A priority patent/EP0875815A3/en
Publication of JPH10301772A publication Critical patent/JPH10301772A/ja
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • G06F2211/008Public Key, Asymmetric Key, Asymmetric Encryption

Abstract

(57)【要約】 【課題】 あるプログラム実行環境において、正当なソ
フトウェア開発者が開発したプログラムのみが実行され
るようにし、その他のプログラムの実行を制限する。 【解決手段】 プログラム実行システムを構成する入力
部81には、所定の秘密キーを用いて暗号化されたアプ
リケーションプログラムが入力され、その暗号化された
アプリケーションプログラムとしての暗号文は、そのま
ま、復号部82に供給される。復号部82には、入力部
81から暗号文が供給される他、その暗号文を作成する
のに用いた秘密キーに対応する公開キーも供給されるよ
うになされており、そこでは、公開キーを用いて、暗号
文が復号化され、その復号結果としてのJavaバイト
コードが、Java仮想マシン83に供給される。Ja
va仮想マシン83では、復号部82からのJavaバ
イトコードが解釈、実行される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報処理装置およ
び情報処理方法、並びに記録媒体に関し、特に、例え
ば、あるプログラム実行環境において、正当なソフトウ
ェア開発者が開発したプログラムのみが実行されるよう
にする情報処理装置および情報処理方法、並びに記録媒
体に関する。
【0002】
【従来の技術】最近急速に普及してきたインターネット
に適していることから、Java(米国Sun Microsyste
ms社の商標)が注目されている。Javaは、オブジェ
クト指向言語であるJava言語や、そのJava言語
で記述されたプログラム(以下、適宜、Javaプログ
ラムという)の実行に適したプロセッサのアーキテクチ
ャを定義した仮想マシン(以下、適宜、Java仮想マ
シンという)、その他のJavaと関連する要素を呼ぶ
のに、あるいは、それらの総称として用いられる。な
お、ここでいう仮想マシンとは、ユーザに対して1台の
コンピュータを複数のコンピュータに仮想的に見せる場
合の仮想マシンではなく、言語処理系を実装する場合に
想定する仮想的なマシンを意味する。
【0003】Java仮想マシンは、種々のソフトウェ
アやOS(Operating System)、ハードウェアで動作す
るように実装される。一方、Javaプログラムは、J
ava仮想マシンの命令セットからなるバイナリコード
にコンパイルされる。このバイナリコードは、Java
仮想マシンが動作するどのようなハードウェアでも実行
することができる。従って、Java仮想マシンさせ動
作すれば、コンパイル済みのJavaプログラムは、種
々のプラットフォームで実行することができる。
【0004】
【発明が解決しようとする課題】上述したように、Ja
va仮想マシンを実装すれば、どのようなマシン上で
も、Javaプログラムを実行することができること等
から、Java仮想マシンが、多数のユーザに普及する
ことが予想され、さらに、そのような多数のユーザ向け
に、多くのアプリケーションプログラムが開発、配布
(有償、無償を問わない)されることが予想される。
【0005】このような状況の下、Java仮想マシン
その他のプログラム実行環境を開発または配布した者か
らすれば、自身が開発等したプログラム実行環境下にお
いて実行される、第三者により開発されたアプリケーシ
ョンプログラムの配布を制限したい場合がある。即ち、
例えば、ライセンス契約を結んだ者だけに、アプリケー
ションプログラムの配布を許可したい場合がある。
【0006】一方、Java仮想マシンでは、Java
コンパイラでJavaプログラムを、バイトコード(J
avaバイトコード)と呼ばれる中間コードにコンパイ
ルしたものが解釈されて実行されるが、Javaバイト
コードは、それを逆コンパイルすることにより、比較的
容易に理解することができるため、リバースエンジニア
リングを簡単にすることができる。従って、アプリケー
ションプログラムの、他人による模倣や改竄を防止する
必要がある。
【0007】本発明は、このような状況に鑑みてなされ
たものであり、あるプログラム実行環境下におけるプロ
グラムの実行を制限することができるようにし、さら
に、プログラムの模倣や改竄を防止することができるよ
うにもするものである。
【0008】
【課題を解決するための手段】請求項1に記載の情報処
理装置は、暗号化されたプログラムを復号化する復号化
手段と、復号化手段が出力するプログラムを実行する実
行手段とを備えることを特徴とする。
【0009】請求項2に記載の情報処理方法は、暗号化
されたプログラムを復号化し、その復号化されたプログ
ラムを実行することを特徴とする。
【0010】請求項3に記載の記録媒体は、コンピュー
タに、暗号化されたプログラムを復号化させ、その復号
化されたプログラムを実行させるためのプログラムが記
録されていることを特徴とする。
【0011】請求項5に記載の情報処理装置は、請求項
1に記載の情報処理装置で実行可能なコードに復号化さ
れる暗号文に、プログラムを暗号化する暗号化手段を備
えることを特徴とする。
【0012】請求項6に記載の情報処理方法は、請求項
1に記載の情報処理装置で実行可能なコードに復号化さ
れる暗号文に、プログラムを暗号化することを特徴とす
る。
【0013】請求項7に記載の記録媒体は、請求項1に
記載の情報処理装置で実行可能なコードに復号化される
暗号文に、プログラムを暗号化したものが記録されてい
ることを特徴とする。
【0014】請求項8に記載の情報処理装置は、プログ
ラムが正当なものかどうかを確認する確認手段と、確認
手段により正当なものであることが確認されたプログラ
ムを、そのプログラムを実行する実行手段に供給する供
給手段とを備えることを特徴とする。
【0015】請求項10に記載の情報処理方法は、プロ
グラムが正当なものかどうかを確認し、正当なものであ
ることが確認された場合のみ、プログラムを実行するこ
とを特徴とする。
【0016】請求項11に記載の記録媒体は、コンピュ
ータに、プログラムが正当なものかどうかを確認させ、
正当なものであることが確認された場合のみ、プログラ
ムを実行させるためのプログラムが記録されていること
を特徴とする。
【0017】請求項12に記載の情報処理装置は、請求
項8に記載の情報処理装置において正当なものであると
確認されるように、プログラムを処理する処理手段を備
えることを特徴とする。
【0018】請求項13に記載の情報処理方法は、請求
項8に記載の情報処理装置において正当なものであると
確認されるように、プログラムを処理することを特徴と
する。
【0019】請求項14に記載の記録媒体は、請求項8
に記載の情報処理装置において正当なものであると確認
されるように処理されたプログラムが記録されているこ
とを特徴とする。
【0020】請求項1に記載の情報処理装置において
は、復号化手段は、暗号化されたプログラムを復号化
し、実行手段は、復号化手段が出力するプログラムを実
行するようになされている。
【0021】請求項2に記載の情報処理方法において
は、暗号化されたプログラムを復号化し、その復号化さ
れたプログラムを実行するようになされている。
【0022】請求項3に記載の記録媒体には、コンピュ
ータに、暗号化されたプログラムを復号化させ、その復
号化されたプログラムを実行させるためのプログラムが
記録されている。
【0023】請求項5に記載の情報処理装置において
は、暗号化手段が、請求項1に記載の情報処理装置で実
行可能なコードに復号化される暗号文に、プログラムを
暗号化するようになされている。
【0024】請求項6に記載の情報処理方法において
は、請求項1に記載の情報処理装置で実行可能なコード
に復号化される暗号文に、プログラムを暗号化するよう
になされている。
【0025】請求項7に記載の記録媒体には、請求項1
に記載の情報処理装置で実行可能なコードに復号化され
る暗号文に、プログラムを暗号化したものが記録されて
いる。
【0026】請求項8に記載の情報処理装置において
は、確認手段は、プログラムが正当なものかどうかを確
認し、供給手段は、確認手段により正当なものであるこ
とが確認されたプログラムを、そのプログラムを実行す
る実行手段に供給するようになされている。
【0027】請求項10に記載の情報処理方法において
は、プログラムが正当なものかどうかを確認し、正当な
ものであることが確認された場合のみ、プログラムを実
行するようになされている。
【0028】請求項11に記載の記録媒体には、コンピ
ュータに、プログラムが正当なものかどうかを確認さ
せ、正当なものであることが確認された場合のみ、プロ
グラムを実行させるためのプログラムが記録されてい
る。
【0029】請求項12に記載の情報処理装置において
は、処理手段が、請求項8に記載の情報処理装置におい
て正当なものであると確認されるように、プログラムを
処理するようになされている。
【0030】請求項13に記載の情報処理方法において
は、請求項8に記載の情報処理装置において正当なもの
であると確認されるように、プログラムを処理するよう
になされている。
【0031】請求項14に記載の記録媒体には、請求項
8に記載の情報処理装置において正当なものであると確
認されるように処理されたプログラムが記録されてい
る。
【0032】
【発明の実施の形態】以下に、本発明の実施の形態を説
明するが、その前に、特許請求の範囲に記載の発明の各
手段と以下の実施の形態との対応関係を明らかにするた
めに、各手段の後の括弧内に、対応する実施の形態(但
し、一例)を付加して、本発明の特徴を記述すると、次
のようになる。
【0033】即ち、請求項1に記載の情報処理装置は、
プログラムを実行するための処理を行う情報処理装置で
あって、暗号化されたプログラムを復号化する復号化手
段(例えば、図12に示す復号部82など)と、復号化
手段が出力するプログラムを実行する実行手段(例え
ば、図12に示すJava仮想マシン83など)とを備
えることを特徴とする。
【0034】請求項5に記載の情報処理装置は、プログ
ラムを処理する情報処理装置であって、請求項1に記載
の情報処理装置で実行可能なコードに復号化される暗号
文に、プログラムを暗号化する暗号化手段(例えば、図
10に示すプログラムの処理ステップS14など)を備
えることを特徴とする。
【0035】請求項8に記載の情報処理装置は、プログ
ラムを実行するための処理を行う情報処理装置であっ
て、プログラムを実行する実行手段(例えば、図16に
示すJava仮想マシン83など)と、プログラムが正
当なものかどうかを確認する確認手段(例えば、図16
に示す署名確認部103など)と、確認手段により正当
なものであることが確認されたプログラムを、実行手段
に供給する供給手段(例えば、図16に示す仮想マシン
入力制御部104など)とを備えることを特徴とする。
【0036】請求項12に記載の情報処理装置は、プロ
グラムを処理する情報処理装置であって、請求項8に記
載の情報処理装置において正当なものであると確認され
るように、プログラムを処理する処理手段(例えば、図
14に示すプログラムの処理ステップS24およびS2
5など)を備えることを特徴とする。
【0037】なお、勿論この記載は、各手段を上記した
ものに限定することを意味するものではない。
【0038】次に、本発明は、Javaのような仮想マ
シンの他、現実のマシンそのものについても適用可能で
あるが、ここでは、本発明を、Java仮想マシンに適
用した場合を例に説明する。
【0039】なお、Javaについては、例えば、日経
BP社発行の日経エレクトロニクスの1996.3.2
5(no.658)、同1996.6.17(no.6
64)などに、その詳細が記載されている。そこで、こ
こでは、簡単に説明する。
【0040】Java仮想マシンは、抽象化された実行
機械であり、その実態は、実際の計算機で実行されるプ
ログラムである。そして、Java仮想マシンは、実際
の計算機と同様に、プログラムカウンタや、スタックレ
ジスタ、汎用レジスタ、スタックやヒープとしてのメモ
リ、その他の資源を有するが、これらの資源は、実際の
計算機の資源にマッピングされている。
【0041】即ち、図1に示すように、いま実際の計算
機1が、中央演算処理装置2、その中央演算処理装置2
が内蔵するレジスタ3、メモリ4などの資源を有すると
して、この計算機1に、Java仮想マシン11を実装
すると、そのJava仮想マシン11の資源として、実
際の計算機1の資源がマッピングされる。図1の実施の
形態では、Java仮想マシン11は、資源として、レ
ジスタ13や、メモリ14などを有しており、レジスタ
13はレジスタ3に、メモリ14の200番地は、メモ
リ4の100番地に、それぞれマッピングされている。
【0042】実際の計算機1では、中央演算処理装置2
に対する命令は、その資源に対する操作として実行され
るが、Java仮想マシン11においても、その資源に
対する操作として実行される命令が定義されている。こ
のJava仮想マシン11に対する命令を記述するため
の言語がJava言語であり、Java仮想マシン11
では、このJava言語で記述されたソースプログラム
を、Javaコンパイラで、Javaバイトコードにコ
ンパイルしたものが、解釈、実行される。
【0043】即ち、図2に示すように、Java言語で
記述されたソースプログラムであるJava言語プログ
ラムは、Javaコンパイラ21でコンパイルされ、J
avaバイトコードとされる。このJavaバイトコー
ドが、Java仮想マシン11に入力され、Java仮
想マシン11では、Javaバイトコードが、実際の計
算機1(中央演算処理装置2)が解釈することのできる
機械語コード(マシン語)に変換される。具体的には、
例えば、図3に示すように、「move #125、レ
ジスタ13」というJavaバイトコードで記述された
「数字の125を、レジスタ13にセット」という命令
(Javaバイトコード命令)が、Java仮想マシン
11に入力された場合、Java仮想マシン11では、
このJavaバイトコードが、「move #125,
レジスタ3」という機械語コードで記述された命令(マ
シン語命令)に変換される。
【0044】そして、計算機1では、この機械語コード
で記述された命令が実行されることにより、図4(A)
に示すように、計算機1のレジスタ3に、数字の125
がセットされる。
【0045】上述したように、計算機1のレジスタ3に
は、Java仮想マシン11のレジスタ13がマッピン
グされており、従って、図4(A)に示したように、計
算機1のレジスタ3に、数字の125をセットすること
は、Java仮想マシン11から見れば、図4(B)に
示すように、そのレジスタ13に数字の125をセット
することになる。
【0046】以上のように、Java仮想マシン11へ
のJavaバイトコードによる命令は、計算機1用の機
械語コードに変換され、Java仮想マシン11の資源
にマッピングされている計算機1の資源に対する操作と
して実行される。この操作は、Java仮想マシン11
から見れば、その資源(Java仮想マシン11の資
源)に対する操作となり、Javaバイトコードによる
命令が実行されたことになる。
【0047】従って、前述したように、Java仮想マ
シンを、実際の計算機(コンピュータ)に実装すること
で、その計算機が使用しているCPU(Central Proces
singUnit)やOSに無関係に、コンパイル済みのJav
aプログラムを実行することができる。
【0048】ここで、Javaバイトコードを機械語コ
ードに変換して実行する手法としては、例えば、Bas
ic言語によるプログラムを実行する場合に採用されて
いる、各命令を機械語コードに逐次翻訳して実行するイ
ンタープリタ形式と、命令を一括して機械語コードに翻
訳して実行するJIT(Just In Time)コンパイラ形式
などがある。
【0049】なお、Basic言語によるプログラムを
実行する場合に採用されているインタープリタ形式は、
そのソースコードを翻訳する点で、中間コードであるJ
avaバイトコードを翻訳する場合と異なるが、ここで
は、これらを特に区別しない(区別する必要もない)。
【0050】次に、図5は、本発明を適用したプログラ
ム提供システム(システムとは、複数の装置が論理的に
集合したものをいい、各構成の装置が同一筐体中にある
か否かは問わない)の一実施の形態の構成例を示してい
る。
【0051】このプログラム提供システムにおいては、
ソフトウェア開発者が、プログラム認証機関により認証
されていないアプリケーションプログラムをユーザに配
布した場合に、そのユーザ端末33上での、そのアプリ
ケーションプログラムの実行を制限するようになされて
いる。
【0052】即ち、ソフトウェア開発者は、例えば、J
ava仮想マシン上で動作するアプリケーションプログ
ラムを開発すると、それをコンパイルしてJavaバイ
トコードとしたものを、そのソフトウェア開発者サーバ
31から、例えば、インターネットや、公衆回線、CA
TV網、地上波、衛星回線、その他でなるネットワーク
34を介して、プログラム認証機関サーバ32に送信す
る。
【0053】プログラム認証機関サーバ32では、ソフ
トウェア開発者サーバ31からJavaバイトコードを
受信すると、それを認証し、その認証したJavaバイ
トコードを、ネットワーク34を介して、ソフトウェア
開発者サーバ31に送信する。ソフトウェア開発者サー
バ31では、プログラム認証機関サーバ32からの認証
されたJavaバイトコードであるアプリケーションプ
ログラムが受信され、記憶される。
【0054】そして、ソフトウェア開発者サーバ31に
おいては、ユーザ端末33からアプリケーションプログ
ラムの要求があると、そのアプリケーションプログラム
を、ネットワーク34を介して、ユーザ端末33に送信
する。ユーザ端末33には、プログラム認証機関、また
はプログラム認証機関にプログラムの認証を依頼してい
る者が開発または配布したプログラム実行環境として
の、例えば、Java仮想マシンが実装されている。そ
して、Java仮想マシンとしてのユーザ端末33で
は、ソフトウェア開発者サーバ31から受信したアプリ
ケーションプログラムが、プログラム認証機関によって
認証されているものであるときのみ、そのアプリケーシ
ョンプログラムが、正常に実行される。
【0055】即ち、ソフトウェア開発者サーバ31から
受信したアプリケーションプログラムが、プログラム認
証機関によって認証されていない場合には、Java仮
想マシンとしてのユーザ端末33では、そのアプリケー
ションプログラムは実行されない(実行されても、正常
には実行されない)。
【0056】従って、結果として、プログラム実行環境
としてのJava仮想マシンを開発等した者は、そのJ
ava仮想マシンにおいて実行される、第三者により開
発されたアプリケーションプログラムの、いわば勝手な
配布を制限し、例えば、ライセンス契約を結んだソフト
ウェア開発者だけに、アプリケーションプログラムの配
布を許可することができる。
【0057】なお、ソフトウェア開発者が、アプリケー
ションプログラムを、例えば、CD(Compact Disc)−
ROM、磁気ディスク、その他でなる記録媒体35に記
録して、郵送、店頭における販売、その他の手段で、ユ
ーザに配布する場合においても、上述の場合と同様に、
そのアプリケーションプログラムが、プログラム認証機
関によって認証されていないときには、Java仮想マ
シンとしてのユーザ端末33では、そのアプリケーショ
ンプログラムは実行されない。
【0058】また、上述の場合においては、ソフトウェ
ア開発者とプログラム認証機関との間で、ネットワーク
34を介して、データのやりとりを行うようにしたが、
これらの間でのデータのやりとりは、そのデータを記録
した記録媒体を郵送などすることによって行うことも可
能である。
【0059】さらに、図5の実施の形態では、ソフトウ
ェア開発者サーバ31、プログラム認証機関サーバ3
2、またはユーザ端末33を、それぞれ1つしか設けて
いないが、これらは、複数設けることが可能である。
【0060】次に、図6は、図5のソフトウェア開発者
サーバ31の構成例を示している。
【0061】CPU41は、補助記憶装置46に記憶
(記録)されたオペレーティングシステムの制御の下、
同じく補助記憶装置46に記憶されたプログラムを実行
することで、各種の処理を行う。ROM(Read Only Me
mory)42は、例えば、IPL(Initial Program Load
ing)のプログラムなどを記憶している。RAM(Rando
m Access Memory)43は、CPU41が実行するプロ
グラムや、CPU1の動作上必要なデータを記憶する。
入力部44は、例えば、キーボードやマウスなどで構成
され、所定のデータやコマンドを入力するときなどに操
作される。出力部45は、ディスプレイやプリンタなど
で構成され、所定の情報を表示、印刷する。補助記憶装
置46は、例えば、ハードディスクなどで構成され、オ
ペレーティングシステム、その他のCPU41が実行す
るプログラムなどを記憶している。さらに、補助記憶装
置46は、CPU41の処理結果その他の必要なデータ
なども記憶する。通信制御部47は、ネットワーク34
を介して行われる通信を制御する。
【0062】次に、図7は、図5のプログラム認証機関
サーバ32の構成例を、図8は、図5のユーザ端末33
の構成例を、それぞれ示している。
【0063】プログラム認証機関サーバ32は、CPU
51乃至通信制御部57で構成され、また、ユーザ端末
33は、CPU61乃至通信制御部67で構成され、こ
れらは、図6におけるCPU41乃至通信制御部47と
それぞれ同様に構成されるので、その説明は省略する。
【0064】次に、図9のフローチャートを参照して、
ソフトウェア開発者サーバ31の処理について説明す
る。
【0065】ソフトウェア開発者が開発した、Java
仮想マシン上で実行されるアプリケーションプログラム
は、例えば、補助記憶装置46に記録(記憶)される。
そして、ソフトウェア開発者サーバ31では、まず最初
に、ステップS1において、CPU41が、補助記憶装
置46に記憶されたアプリケーションプログラムを、J
avaコンパイラのプログラムにしたがってコンパイル
し、Javaバイトコードとする。このJavaバイト
コードは、再び、補助記憶装置46に供給されて記憶さ
れる。
【0066】そして、ステップS2に進み、通信制御部
47は、補助記憶装置46に記憶されたアプリケーショ
ンプログラムとしてのJavaバイトコードを読み出
し、ネットワーク34を介して、プログラム認証機関サ
ーバ32に送信し、ステップS3に進む。ステップS3
では、CPU41において、認証されたアプリケーショ
ンプログラム(Javaバイトコード)としての、その
アプリケーションプログラムを暗号化した暗号文が、プ
ログラム認証機関サーバ32から送信されてきたかどう
かが判定され、まだ、送信されてきていないと判定され
た場合、ステップS3に戻る。
【0067】また、ステップS3において、暗号文が送
信されてきたと判定された場合、ステップS4に進み、
通信制御部47において、その暗号文が受信され、ステ
ップS5に進む。ステップS5では、通信制御部47で
受信された暗号文が、補助記憶装置46に転送されて記
憶され、処理を終了する。
【0068】次に、図10のフローチャートを参照し
て、プログラム認証機関サーバ32の処理について説明
する。
【0069】プログラム認証機関は、例えば、プログラ
ム実行環境としてのJava仮想マシンを開発または配
布した者、あるいは、その者の依頼を受けた機関で、プ
ログラム認証機関サーバ32では、例えば、ライセンス
契約を結んだ者からのアプリケーションプログラムを認
証するプログラム認証処理を行うようになされている。
【0070】即ち、プログラム認証機関サーバ32のC
PU51では、まず最初に、ステップS11において、
例えば、ソフトウェア開発者サーバ31などから、認証
対象のアプリケーションプログラムとしてのJavaバ
イトコードが、ネットワーク34を介して送信されてき
たかどうかが判定され、送信されてきていないと判定さ
れた場合、ステップS11に戻る。また、ステップS1
1において、Javaバイトコードが送信されてきたと
判定された場合、ステップS12に進み、そのJava
バイトコードが、例えば、ライセンス契約を結んだソフ
トウェア開発者(以下、適宜、正規のソフトウェア開発
者という)からのものであるかどうかが、CPU51に
よって判定される。
【0071】即ち、プログラム認証機関は、Java仮
想マシン上で実行されるアプリケーションプログラムの
開発、販売等を許可することについてのライセンス契約
を、ソフトウェア開発者との間で結ぶと、そのソフトウ
ェア開発者に対して、例えば、IDおよびパスワードを
発行する。そして、このようなライセンス契約を結んだ
正規のソフトウェア開発者からは、認証対象のJava
バイトコードとともに、ライセンス契約時に発行された
IDおよびパスワードが送信されるようになされてお
り、ステップS12では、このIDおよびパスワードに
基づいて、Javaバイトコードが、正規のソフトウェ
ア開発者からのものであるかどうかが判定される。
【0072】ステップS12において、Javaバイト
コードが、正規のソフトウェア開発者からのものでない
と判定された場合、即ち、ライセンス契約を結んでいな
いソフトウェア開発者からJavaバイトコードが送信
されてきた場合、ステップS13に進み、通信制御部5
7において、そのソフトウェア開発者に対して、ライセ
ンス契約を結ばなければ、Javaバイトコードを認証
することができない旨のメッセージが送信され、処理を
終了する。
【0073】一方、ステップS12において、Java
バイトコードが、正規のソフトウェア開発者からのもの
であると判定された場合、ステップS14に進み、CP
U51において、そのJavaバイトコードが暗号化さ
れ、これにより暗号文とされることで、その認証が行わ
れる。
【0074】そして、ステップS15に進み、通信制御
部57において、Javaバイトコードの認証結果とし
ての、その暗号文が、Javaバイトコードを送信して
きたソフトウェア開発者、即ち、ここでは、例えば、ソ
フトウェア開発者サーバ31に、ネットワーク34を介
して送信され、処理を終了する。
【0075】次に、プログラム認証機関サーバ32にお
いて行われる、ステップS14の暗号化の方法について
説明する。
【0076】プログラム認証機関サーバ32では、Ja
vaバイトコードの暗号化が、例えば、RSA方式(M
ITの3人の研究者により考案されたもので、RSA
は、その3人の研究者の頭文字をとったものである)な
どに代表される公開鍵暗号化方式によって行われるよう
になされている。
【0077】即ち、図11は、公開鍵暗号化方式による
暗号化/復号化システムの構成例を示している。
【0078】暗号化器71には、暗号化対象である平文
が入力される。そして、暗号化器71では、秘密キーと
呼ばれる各個人に特有の暗号キーを用いて、平文が暗号
化され、暗号文とされる。
【0079】一方、復号化器72には、暗号化器71で
暗号化された暗号文が入力される。そして、復号化器7
2では、公開キーと呼ばれる広く一般に公開されている
復号キーを用いて、暗号文が復号化され、元の平文とさ
れる。
【0080】プログラム認証機関サーバ32では、ソフ
トウェア開発者サーバ31からのJavaバイトコード
が、それに特有の秘密キーを用いて暗号化されて、暗号
文とされる。
【0081】なお、暗号化の手法は、公開鍵暗号化方式
に限定されるものではなく、その他、例えば、DES
(Data Encryption Standard)方式(IBM社により開
発され、米国連邦政府の標準として実用化されたもの)
などに代表される秘密鍵暗号方式その他の方式を採用す
ることが可能である。
【0082】次に、図12は、ユーザ端末33において
アプリケーションプログラムを実行するプログラム実行
環境としてのプログラム実行システムの機能的構成例を
示している。
【0083】入力部81は、暗号文(暗号化されたJa
vaバイトコード)を受け付け、復号部82に供給する
ようになされている。復号部82は、例えば、図11の
復号化器72としての処理を行うもので、入力部81の
出力を、公開キーを用いて復号化し、元のJavaバイ
トコードとするようになされている。復号部82で得ら
れたJavaバイトコードは、Java仮想マシン83
に供給されるようになされており、Java仮想マシン
83は、復号部82からのJavaバイトコードにした
がった処理を実行するようになされている。
【0084】以上のように構成されるプログラム実行シ
ステムでは、まず最初に、入力部81において、アプリ
ケーションプログラムとしての暗号文が取得される。即
ち、例えば、あらかじめ、ソフトウェア開発者サーバ3
1から、ネットワーク34を介して、アプリケーション
プログラムとしての暗号文を受信し、その暗号文が、フ
ァイルとして、ユーザ端末33の補助記憶装置67に記
憶されている場合や、アプリケーションプログラムとし
ての暗号文がファイルとして記録された記録媒体35が
ユーザ端末33にセットされる場合などには、入力部8
1は、そのファイルをオープンし、暗号文を読み出す。
【0085】また、例えば、ソフトウェア開発者サーバ
31が、インターネットとしてのネットワーク34に接
続されており、そのようなソフトウェア開発者サーバ3
1において、アプリケーションプログラムとしての暗号
文が、URL(Uniform Resource Locator)と対応付け
られている場合に、ユーザが、入力部64を操作して、
そのURLを指定したときには、入力部81は、ソフト
ウェア開発者サーバ31からネットワーク34を介して
送信されてくるアプリケーションプログラムとしての暗
号文を受信する。
【0086】さらに、例えば、ソフトウェア開発者サー
バ31が、地上波や衛星回線としてのネットワーク34
を介して、アプリケーションプログラムとしての暗号文
をディジタル放送などしている場合には、入力部81
は、その放送されてくる暗号文を受信する。
【0087】入力部81は、以上のようにして取得した
アプリケーションプログラムとしての暗号文を、そのま
ま、復号部82に供給する。
【0088】復号部82には、入力部81から暗号文が
供給される他、その暗号文を作成するのに用いた秘密キ
ーに対応する公開キーも供給されるようになされてい
る。
【0089】ここで、公開キーは、例えば、プログラム
認証機関が管理しており、ユーザからの要求に応じて、
ネットワーク34を介して、ユーザ端末33に送信され
る。あるいは、公開キーは、郵送などによって、ユーザ
に配送される。また、プログラムとしての暗号文がファ
イルとして記録された記録媒体35がユーザに配布され
る場合には、公開キーは、記録媒体35に、暗号文とと
もに記録しておくようにすることもできる。さらに、公
開キーは、プログラム認証機関サーバ32におけるJa
vaバイトコードの認証の後に、その認証結果としての
暗号文とともに、ソフトウェア開発者サーバ31に送信
するようにし、ソフトウェア開発者から、ユーザに配布
するようにすることなども可能である。
【0090】復号部82では、公開キーを用いて、入力
部81からの暗号文が復号化され、その復号結果として
のJavaバイトコードが、Java仮想マシン83に
供給される。Java仮想マシン83では、復号部82
からのJavaバイトコードが解釈、実行される。
【0091】以上のように、復号部82において、プロ
グラム認証機関サーバ32での暗号化に用いられた秘密
キーに対応する公開キー(秘密キーと対になる公開キ
ー)を用いて、暗号文の復号化が行われ、その復号結果
が、Java仮想マシン83に入力される。従って、復
号部82に対して、プログラム認証機関で認証されてい
ないJavaバイトコード、即ち、例えば、暗号化され
ていないJavaバイトコードや、プログラム認証機関
サーバ32における暗号化アルゴリズムと異なるアルゴ
リズムで暗号化されたJavaバイトコード、あるいは
それと同一のアルゴリズムで暗号化されていたとして
も、本来使用すべき秘密キーを用いずに暗号化されたJ
avaバイトコードなどが入力された場合においては、
復号部82からは、Java仮想マシン83が正常に実
行可能なJavaバイトコードは出力されないから(J
ava仮想マシン83が正常に実行可能なJavaバイ
トコードが、偶然に出力されることは有り得ないことで
はないが、ほとんどないに等しい)、結果として、Ja
va仮想マシン83上で動作するJavaバイトコード
であって、プログラム認証機関で認証されていないもの
の、Java仮想マシン83が実装されたユーザ端末3
3を有するユーザへの配布を制限することができる。
【0092】即ち、Java仮想マシン83上で動作す
るJavaバイトコードの、そのJava仮想マシン8
3が実装されたユーザ端末33を有するユーザへの配布
は、プログラム認証機関とライセンス契約を結んだソフ
トウェア開発者にのみ許可することができ、Java仮
想マシン83の開発者や配布者は、Java仮想マシン
83上で動作するJavaバイトコードの配布を希望す
るソフトウェア開発者から、いわば、Java仮想マシ
ン83を使用したアプリケーションプログラムを配布す
るためのライセンス料を得ることが可能となる。
【0093】なお、Java仮想マシン83に対するJ
avaバイトコードの入力は、復号部82からのみ行う
ことができるようにしておく必要がある。
【0094】ここで、図12における復号部82では、
何らかの入力があると、その入力に対して復号化処理が
施され、その処理結果が出力される。従って、プログラ
ム認証機関で認証されていないJavaバイトコードが
復号部82に入力され、その処理結果が、Java仮想
マシン83に供給されると、Java仮想マシン83
は、通常暴走する。そこで、復号部82の出力が、正当
(正常)なJavaバイトコードかどうかを確認し、正
当なJavaバイトコードである場合にのみ、そのJa
vaバイトコードを、Java仮想マシン83に解釈、
実行させるようにすることが可能である。即ち、Jav
aバイトコードには、その先頭に、マジック(magi
c)と呼ばれる32ビットのデータが配置されており、
これが本来の値(16進数で、CAFEBABE)であ
る場合にのみ、復号部82の出力が正当なJavaバイ
トコードであるとして、Java仮想マシン83に解
釈、実行させるようにすることができる。この場合、J
ava仮想マシン83の暴走を防止することができる。
【0095】なお、プログラム認証認証機関サーバ32
において、Javaバイトコード全体ではなく、例え
ば、上述のマジックなどの、Javaバイトコードの一
部分を暗号化することにより、Javaバイトコードの
認証を行うことも可能であるが、マジックは32ビット
という少ないビット数で構成されるため、復号部82に
おいて本来の値が出力されるような改竄を、Javaバ
イトコード全体を暗号化する場合に比較して容易に行う
ことができることが予想される。従って、暗号化は、J
avaバイトコード全体に対して施すのが望ましい。
【0096】ところで、図12の復号部82における復
号化アルゴリズムや、そこで用いるべき公開キーが、第
三者に知られても、Java仮想マシン83上における
アプリケーションプログラムの実行の制限の観点から
は、暗号化アルゴリズムやその暗号化に用いる秘密キー
さえ知られなければ、特に問題はない。即ち、暗号文の
復号化方法が知られても、正常に実行可能なJavaバ
イトコードをJava仮想マシン83に供給するために
復号部82に与えるべき暗号文の作成方法を知られなけ
れば、仮想マシン83上におけるアプリケーションプロ
グラムの実行を制限することができる。
【0097】しかしながら、暗号文の復号化方法が知ら
れた場合、その暗号文(プログラム認証機関においてJ
avaバイトコードを認証した結果としての暗号文)か
ら、Javaバイトコードを得ることができる。Jav
aバイトコードは、前述したように、それを逆コンパイ
ルすることにより、その内容を比較的容易に理解するこ
とができるため、リバースエンジニアリングを簡単にす
ることができる。
【0098】そこで、このようなリバースエンジニアリ
ングを防止すべく、暗号文の復号化方法は秘密にするこ
とができる。即ち、例えば、暗号文の復号化に用いられ
る公開キーは、上述したように、一般に公開されるもの
であるが、これを秘密にすることなどができる。
【0099】図13は、公開キーを秘密にするようにし
たプログラム実行システムの構成例を示している。な
お、図中、図12における場合と対応する部分について
は、同一の符号を付してあり、以下では、その説明は、
適宜省略する。
【0100】この実施の形態においては、例えば、Ja
va仮想マシン83を含むプログラム実行システムを構
成するプログラムの中の1カ所に、または複数箇所に分
散して、公開キーが配置されており、復号部82では、
その公開キーを用いて、暗号文の復号化が行われる。従
って、この場合、公開キーは、プログラム実行システム
の外部に漏れることがなく、その結果、暗号文が、不正
に復号され、リバースエンジニアリングされることを防
止すること(リバースエンジニアリングされる確率を低
減すること)が可能となる。
【0101】次に、以上においては、ユーザ端末33に
おいて、基本的には、復号部82における復号化結果
を、そのままJava仮想マシン83に入力するように
したが、ユーザ端末33においては、Javaバイトコ
ードが、プログラム認証機関で認証されたものであり、
かつ改竄などが行われていない、いわば正当なものであ
るかどうかを確認し、その確認がなされたJavaバイ
トコードのみを、Java仮想マシン83に入力するよ
うにすることなども可能である。
【0102】この場合、プログラム認証機関サーバ32
では、ソフトウェア開発者サーバ31から送信されてく
るアプリケーションプログラムとしてのJavaバイト
コードに対して、例えば、図14に示すフローチャート
にしたがったプログラム認証処理が行われる。
【0103】即ち、ステップS21乃至S23において
は、図10のステップS11乃至S13における場合と
それぞれ同様の処理が行われる。
【0104】そして、ステップS22において、送信さ
れてきたJavaバイトコードが、正規のソフトウェア
開発者からのものであると判定された場合、ステップS
24乃至S26に順次進み、そのJavaバイトコード
に対して、それが正当なものであることを証明する署名
(ディジタルサイン)が付される。
【0105】即ち、ステップS24では、CPU51に
おいて、Javaバイトコードのダイジェストが作成さ
れ、ステップS25に進む。ステップS25では、CP
U51において、ステップS24で作成されたダイジェ
ストから、ディジタルサインが作成される。そして、ス
テップS26に進み、通信制御部47において、そのデ
ィジタルサインが、Javaバイトコードに付され(こ
のようにディジタルサイン(署名)が付されたJava
バイトコードを、以下、適宜、署名付きバイトコードと
いう)、ソフトウェア開発者サーバ32に送信されて、
処理を終了する。
【0106】次に、プログラム認証機関サーバ32にお
いて行われる、ステップS24乃至26の署名付きバイ
トコードの作成方法について説明する。
【0107】プログラム認証機関サーバ32では、署名
付きバイトコードの作成が、例えば、RSA方式などに
代表される公開鍵暗号化方式によって行われるようにな
されている。
【0108】即ち、図15は、公開鍵暗号化方式によ
る、ディジタルサイン(署名)を用いた暗号化/復号化
システムの構成例を示している。
【0109】ダイジェスト作成器91には、認証対象で
ある平文が入力される。そして、ダイジェスト作成器9
1では、入力された平文のダイジェストが、例えば、M
D5やSHA−1などのアルゴリズムにしたがって作成
される。
【0110】ここで、ダイジェストは、平文の機械的な
凝縮文に相当し、入力としての平文が異なれば、そのダ
イジェストも異なるものが作成される。ダイジェストの
作成は、平文を、例えば、ハッシュ関数を用いて変換す
ることで行われる。
【0111】なお、データベースの検索を行うのに用い
るキーワードがとり得る範囲の集合を、ある限られた数
値範囲(レコード番号や配列の添字などに対応する)に
写像する方法はハッシング(hashing)と呼ばれるが、
この写像を行う変換関数がハッシュ関数である。
【0112】ダイジェスト作成器91で作成されたダイ
ジェストは、暗号化器92に供給される。暗号化器92
では、例えば、図11の暗号化器71における場合と同
様にして、ダイジェストが、秘密キーを用いて暗号化さ
れ、この暗号化されたダイジェストがディジタルサイン
として出力される。そして、ディジタルサインが、元の
平文に付加され、署名付き平文として出力される。
【0113】一方、復号化器93には、署名付き平文を
構成するディジタルサインが、また、ダイジェスト作成
器94には、その残りの平文が、それぞれ入力される。
復号化器93では、例えば、図11の復号化器72にお
ける場合と同様にして、ディジタルサインが、公開キー
を用いて復号化され、ダイジェストとされる。このダイ
ジェストは、署名確認器95に供給される。
【0114】ダイジェスト作成器94では、ダイジェス
ト作成器91における場合と同様にして、そこに入力さ
れる平文のダイジェストが作成され、署名確認器95に
供給される。
【0115】署名確認器95では、署名(ディジタルサ
イン)の正当性が判断される(署名の確認が行われ
る)。即ち、署名確認器95では、復号化器93が出力
するダイジェストが、ダイジェスト作成器94が出力す
るダイジェストと一致するかどうかが確認される。復号
化器93が出力するダイジェストが、ダイジェスト作成
器94が出力するダイジェストと一致しない場合、例え
ば、平文の改竄が行われたとして、あるいは、復号化器
93で用いられた公開キーが正しくないとして、署名の
正当性が否定される。
【0116】一方、復号化器93が出力するダイジェス
トが、ダイジェスト作成器94が出力するダイジェスト
と一致する場合、平文の改竄が行われておらず、かつ復
号化器93で用いられた公開キーが正しいとして、署名
の正当性が確認される。
【0117】署名確認器95には、署名付き平文を構成
する平文も供給されるようになされており、そこでは、
署名の正当性が確認されると、その平文が出力される。
【0118】プログラム認証機関サーバ32では、ソフ
トウェア開発者サーバ31からのJavaバイトコード
が、上述の署名付き平文に相当する署名付きバイトコー
ドとされることにより、そのJavaバイトコードが認
証される。
【0119】なお、署名の手法は、上述した公開鍵暗号
化方式に限定されるものではない。
【0120】次に、図16は、ユーザ端末33において
アプリケーションプログラムの正当性を確認し、正当な
もののみを実行するプログラム実行環境としてのプログ
ラム実行システムの機能的構成例を示している。なお、
図中、図12おける場合と対応する部分については、同
一の符号を付してあり、以下では、その説明は、適宜省
略する。
【0121】入力部101は、基本的には、図12にお
ける入力部81と同様に、そこへの入力を受け付けるよ
うになされている。但し、入力部101には、署名付き
バイトコード(署名(ディジタルサイン)が付されたJ
avaバイトコード)が入力されるようになされてお
り、そこでは、署名付きバイトコードが、署名とJav
aバイトコードとに分離されて出力されるようになされ
ている。署名は、署名確認部103に、Javaバイト
コードは、メッセージダイジェストシステム102およ
び仮想マシン入力制御部104に、それぞれ供給される
ようになされている。
【0122】メッセージダイジェストシステム102
は、図15のダイジェスト作成器94と同様の処理を行
うもので、入力部101からのJavaバイトコードか
らダイジェストを作成し、署名確認部103に供給する
ようになされている。署名確認部103は、図15の復
号化器93および署名確認器95に相当するもので、入
力部101からの署名の正当性を確認するようになされ
ている。
【0123】即ち、署名確認部103には、入力部10
1から署名が、メッセージダイジェストシステム102
からダイジェストが、それぞれ供給される他、例えば、
図12の復号部82に公開キーが供給されるのと同様に
して、署名を作成するときに用いた秘密キーに対応する
公開キーが供給されるようになされている。そして、署
名確認部103は、その公開キーを用いて、署名を復号
化することにより、ダイジェストとし、そのダイジェス
トと、メッセージダイジェストシステム102からのダ
イジェストとを比較することで、署名の正当性を確認す
るようになされている。さらに、署名確認部103は、
その確認結果に対応して、仮想マシン入力制御部104
を制御するようになされている。
【0124】仮想マシン入力制御部104は、署名確認
部103の制御にしたがって、入力部101からのJa
vaバイトコードの、Java仮想マシン83への供給
を制御するようになされている。
【0125】以上のように構成されるプログラム実行シ
ステムでは、まず最初に、入力部101において、図1
2の入力部81における場合と同様にして、アプリケー
ションプログラムとしての署名付きバイトコードが取得
される。そして、入力部101は、その署名付きバイト
コードを、署名とJavaバイトコードとに分離し、署
名を、署名確認部103に、Javaバイトコードを、
メッセージダイジェストシステム102および仮想マシ
ン入力制御部104に、それぞれ供給する。
【0126】メッセージダイジェストシステム102で
は、入力部101からのJavaバイトコードからダイ
ジェストが作成され、署名確認部103に供給される。
署名確認部103では、公開キーを用いて、入力部10
1からの署名が復号化されてダイジェストとされる。さ
らに、署名確認部103では、その復号化したダイジェ
ストが、メッセージダイジェストシステム102からの
ダイジェストと比較され、それが一致するかどうかで、
入力部101からの署名の正当性が確認される。
【0127】署名の正当性が確認された場合、即ち、署
名を復号化したダイジェストが、メッセージダイジェス
トシステム102からのダイジェストと一致する場合、
署名確認部103は、入力部101からのJavaバイ
トコードを、Java仮想マシン83に出力するよう
に、仮想マシン入力制御部104を制御する。この場
合、仮想マシン入力制御部104は、署名確認部103
の制御にしたがい、入力部101からのJavaバイト
コードを、Java仮想マシン83に供給する。
【0128】従って、この場合、Java仮想マシン8
3では、入力部101から仮想マシン入力制御部104
を介して供給されるJavaバイトコードが解釈、実行
される。
【0129】一方、署名の正当性が確認されなかった場
合、即ち、署名を復号化したダイジェストが、メッセー
ジダイジェストシステム102からのダイジェストと一
致しない場合、署名確認部103は、入力部101から
のJavaバイトコードを、Java仮想マシン83に
出力しないように、仮想マシン入力制御部104を制御
する。
【0130】この場合、仮想マシン入力制御部104か
らJava仮想マシン83に対しては、入力部101か
らのJavaバイトコードは出力されず、従って、Ja
va仮想マシン83では、特に処理は行われない。
【0131】以上から、アプリケーションプログラムの
認証として署名を付す場合も、Java仮想マシン83
上で動作するJavaバイトコードであって、プログラ
ム認証機関で認証されていないものの、Java仮想マ
シン83が実装されたユーザ端末33を有するユーザへ
の配布を制限することができる。即ち、Java仮想マ
シン83上で動作するJavaバイトコードの、そのJ
ava仮想マシン83が実装されたユーザ端末33を有
するユーザへの配布は、プログラム認証機関とライセン
ス契約を結んだソフトウェア開発者にのみ許可すること
ができ、Java仮想マシン83の開発者等は、Jav
a仮想マシン83上で動作するJavaバイトコードの
配布を希望するソフトウェア開発者から、ライセンス料
を得ることが可能となる。
【0132】また、署名を付す場合においては、その署
名を付したJavaバイトコードを改竄したものの、仮
想マシン83上での実行も制限することができる。
【0133】なお、図16の実施の形態では、Java
仮想マシン83に対するJavaバイトコードの入力
は、仮想マシン入力制御部104からのみ行うことがで
きるようにしておく必要がある。
【0134】ここで、Javaバイトコードに署名を付
す場合においては、Javaバイトコードを暗号化する
場合と異なり、Javaバイトコードそのものが存在す
る。従って、プログラム実行システムが署名の正当性を
確認しないもの(例えば、入力部101の出力であるJ
avaバイトコードが、Java仮想マシン83に直接
入力されるような構成のもの)であれば、そのプログラ
ム実行システムでは、何の制限もなく、Javaバイト
コードを解釈して実行することができる。
【0135】即ち、逆にいえば、Javaバイトコード
に署名を付す場合においては、その実行を制限したいJ
ava仮想マシンの開発者や販売者、さらには、ユーザ
端末33にJava仮想マシンを実装して販売する者な
どは、そのプログラム実行システムを、図16に示した
ように構成すれば良いし、その実行の制限を特に希望し
ない者は、プログラム実行システムを署名の正当性を確
認しないような構成とすれば良い。
【0136】なお、本発明は、上述したインタープリタ
形式およびJITコンパイラ形式のいずれのJava仮
想マシンにも適用可能であるし、また、Java仮想マ
シン以外の仮想マシン、さらには、例えば、C言語や、
C++言語などの処理系のようにプログラム実行システ
ムへの入力が機械語コードの場合や、Basic言語の
処理系のようにプログラム実行システムへの入力がソー
スコードの場合などについても適用可能である。
【0137】また、図12や図13、図16の実施の形
態においては、プログラム実行システムを1つしか設け
ていないが、ユーザ端末33には、このプログラム実行
システムを複数設けることも可能である。例えば、入力
部81や101を複数設けた場合においては、複数経路
からの暗号文や署名付きバイトコードの入力が可能とな
る。さらに、例えば、復号部82を複数設けた場合にお
いては、複数の復号アルゴリズムにしたがって暗号文を
復号することが可能となる。また、例えば、Java仮
想マシン83を複数設けた場合には、複数のJavaバ
イトコード形式をサポートすることが可能となる。さら
に、例えば、メッセージダイジェストシステム102お
よび署名確認部103を複数設けた場合には、複数の手
法それぞれで付された複数の署名の確認を行うことが可
能となる。
【0138】なお、本実施の形態におけるJavaバイ
トコードとは、例えば、Java Application, Java Apple
t, Java Benas, Java Class Libraryその他の多数の形
態のJavaバイトコードをすべて含むものである。
【0139】
【発明の効果】請求項1に記載の情報処理装置および請
求項2に記載の情報処理方法によれば、暗号化されたプ
ログラムが復号化され、その復号化されたプログラムが
実行される。また、請求項3に記載の記録媒体には、コ
ンピュータに、暗号化されたプログラムを復号化させ、
その復号化されたプログラムを実行させるためのプログ
ラムが記録されている。従って、暗号化されたプログラ
ムのみが実行されるようにすることが可能となる。
【0140】請求項5に記載の情報処理装置および請求
項6に記載の情報処理方法によれば、請求項1に記載の
情報処理装置で実行可能なコードに復号化される暗号文
に、プログラムが暗号化される。また、請求項7に記載
の記録媒体には、請求項1に記載の情報処理装置で実行
可能なコードに復号化される暗号文に、プログラムを暗
号化したものが記録されている。従って、請求項1に記
載の情報処理装置で実行可能な、暗号化されたプログラ
ムの提供が可能となる。
【0141】請求項8に記載の情報処理装置および請求
項10に記載の情報処理方法によれば、プログラムが正
当なものかどうかが確認され、正当なものであることが
確認された場合のみ、プログラムが実行される。また、
請求項11に記載の記録媒体には、コンピュータに、プ
ログラムが正当なものかどうかを確認させ、正当なもの
であることが確認された場合のみ、プログラムを実行さ
せるためのプログラムが記録されている。従って、正当
なプログラムのみが実行されるようにすることが可能と
なる。
【0142】請求項12に記載の情報処理装置および請
求項13に記載の情報処理方法によれば、請求項8に記
載の情報処理装置において正当なものであると確認され
るように、プログラムが処理される。また、請求項14
に記載の記録媒体には、請求項8に記載の情報処理装置
において正当なものであると確認されるように処理され
たプログラムが記録されている。従って、請求項8に記
載の情報処理装置で実行可能なように処理されたプログ
ラムの提供が可能となる。
【図面の簡単な説明】
【図1】計算機1の資源と、そこに実装されたJava
仮想マシン11の資源との対応関係を示す図である。
【図2】Java仮想マシン11の処理を説明するため
の図である。
【図3】Java仮想マシン11の処理を説明するため
の図である。
【図4】Java仮想マシン11の処理を説明するため
の図である。
【図5】本発明を適用したプログラム提供システムの一
実施の構成例を示すブロック図である。
【図6】図5のソフトウェア開発者サーバ31の構成例
を示すブロック図である。
【図7】図5のプログラム認証機関サーバ32の構成例
を示すブロック図である。
【図8】図5のユーザ端末33の構成例を示すブロック
図である。
【図9】ソフトウェア開発者サーバ31の処理を説明す
るためのフローチャートである。
【図10】プログラム認証機関サーバ32の処理を説明
するためのフローチャートである。
【図11】暗号化/復号化システムの構成例を示すブロ
ック図である。
【図12】プログラム実行システムの第1の機能的構成
例を示すブロック図である。
【図13】プログラム実行システムの第2の機能的構成
例を示すブロック図である。
【図14】プログラム認証機関サーバ32の処理を説明
するためのフローチャートである。
【図15】ディジタルサインを用いた暗号化/復号化シ
ステムの構成例を示すブロック図である。
【図16】プログラム実行システムの第3の機能的構成
例を示すブロック図である。
【符号の説明】
1 計算機, 2 中央演算処理装置, 3 レジス
タ, 4 メモリ, 11 Java仮想マシン, 1
3 レジスタ, 14 メモリ, 21 Javaコン
パイラ, 31 ソフトウェア開発者サーバ, 32
プログラム認証機関サーバ, 33 ユーザ端末, 3
4 ネットワーク, 35 記録媒体,41 CPU,
42 ROM, 43 RAM, 44 入力部,
45 出力部, 46 補助記憶装置, 47 通信制
御部, 51 CPU, 52ROM, 53 RA
M, 54 入力部, 55 出力部, 56 補助記
憶装置, 57 通信制御部, 61 CPU, 62
ROM, 63 RAM, 64 入力部, 65
出力部, 66 補助記憶装置, 67 通信制御部,
71 暗号化器, 72 復号化器, 81 入力
部, 82 復号部,83 Java仮想マシン, 9
1 ダイジェスト作成器, 92 暗号化器, 93
復号化器, 94 ダイジェスト作成器, 95 署名
確認器, 101 入力部, 102 メッセージダイ
ジェストシステム, 103 署名確認部, 104
仮想マシン入力制御部

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 プログラムを実行するための処理を行う
    情報処理装置であって、 暗号化された前記プログラムを復号化する復号化手段
    と、 前記復号化手段が出力する前記プログラムを実行する実
    行手段とを備えることを特徴とする情報処理装置。
  2. 【請求項2】 プログラムを実行するための処理を行う
    情報処理方法であって、 暗号化された前記プログラムを復号化し、 その復号化されたプログラムを実行することを特徴とす
    る情報処理方法。
  3. 【請求項3】 コンピュータに、暗号化されたプログラ
    ムを復号化させ、その復号化されたプログラムを実行さ
    せるためのプログラムが記録されていることを特徴とす
    る記録媒体。
  4. 【請求項4】 暗号化されたプログラムの復号化が所定
    のキーを用いて行われる場合において、 前記所定のキーも記録されていることを特徴とする請求
    項3に記載の記録媒体。
  5. 【請求項5】 プログラムを処理する情報処理装置であ
    って、 請求項1に記載の情報処理装置で実行可能なコードに復
    号化される暗号文に、プログラムを暗号化する暗号化手
    段を備えることを特徴とする情報処理装置。
  6. 【請求項6】 プログラムを処理する情報処理方法であ
    って、 請求項1に記載の情報処理装置で実行可能なコードに復
    号化される暗号文に、プログラムを暗号化することを特
    徴とする情報処理方法。
  7. 【請求項7】 請求項1に記載の情報処理装置で実行可
    能なコードに復号化される暗号文に、プログラムを暗号
    化したものが記録されていることを特徴とする記録媒
    体。
  8. 【請求項8】 プログラムを実行するための処理を行う
    情報処理装置であって、 前記プログラムを実行する実行手段と、 前記プログラムが正当なものかどうかを確認する確認手
    段と、 前記確認手段により正当なものであることが確認された
    前記プログラムを、前記実行手段に供給する供給手段と
    を備えることを特徴とする情報処理装置。
  9. 【請求項9】 前記プログラムには、署名が付加されて
    おり、 前記確認手段は、前記署名に基づいて、前記プログラム
    が正当なものかどうかを確認することを特徴とする請求
    項8に記載の情報処理装置。
  10. 【請求項10】 プログラムを実行するための処理を行
    う情報処理方法であって、 前記プログラムが正当なものかどうかを確認し、 正当なものであることが確認された場合のみ、前記プロ
    グラムを実行することを特徴とする情報処理方法。
  11. 【請求項11】 コンピュータに、プログラムが正当な
    ものかどうかを確認させ、正当なものであることが確認
    された場合のみ、前記プログラムを実行させるためのプ
    ログラムが記録されていることを特徴とする記録媒体。
  12. 【請求項12】 プログラムを処理する情報処理装置で
    あって、 請求項8に記載の情報処理装置において正当なものであ
    ると確認されるように、プログラムを処理する処理手段
    を備えることを特徴とする情報処理装置。
  13. 【請求項13】 プログラムを処理する情報処理方法で
    あって、 請求項8に記載の情報処理装置において正当なものであ
    ると確認されるように、プログラムを処理することを特
    徴とする情報処理方法。
  14. 【請求項14】 請求項8に記載の情報処理装置におい
    て正当なものであると確認されるように処理されたプロ
    グラムが記録されていることを特徴とする記録媒体。
JP9112179A 1997-04-30 1997-04-30 情報処理装置および情報処理方法、並びに記録媒体 Abandoned JPH10301772A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP9112179A JPH10301772A (ja) 1997-04-30 1997-04-30 情報処理装置および情報処理方法、並びに記録媒体
TW087106081A TW385411B (en) 1997-04-30 1998-04-21 Information processing apparatus and method and recording medium
US09/065,432 US6820200B2 (en) 1997-04-30 1998-04-24 Information processing apparatus and method and recording medium
KR1019980014792A KR19980081730A (ko) 1997-04-30 1998-04-24 정보처리장치 및 방법 및 기록매체
EP98303328A EP0875815A3 (en) 1997-04-30 1998-04-28 Information processing apparatus and method and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9112179A JPH10301772A (ja) 1997-04-30 1997-04-30 情報処理装置および情報処理方法、並びに記録媒体

Publications (1)

Publication Number Publication Date
JPH10301772A true JPH10301772A (ja) 1998-11-13

Family

ID=14580238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9112179A Abandoned JPH10301772A (ja) 1997-04-30 1997-04-30 情報処理装置および情報処理方法、並びに記録媒体

Country Status (5)

Country Link
US (1) US6820200B2 (ja)
EP (1) EP0875815A3 (ja)
JP (1) JPH10301772A (ja)
KR (1) KR19980081730A (ja)
TW (1) TW385411B (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132388A (ja) * 1998-10-19 2000-05-12 Internatl Business Mach Corp <Ibm> ソフトウェア・コンポ―ネントを処理および配布するための方法および装置
JP2003526965A (ja) * 1999-05-17 2003-09-09 ウェイヴ システムズ コーポレイション 公開暗号制御ユニット及びそのシステム
JP2006197127A (ja) * 2005-01-12 2006-07-27 Ntt Docomo Inc 通信装置、デジタル署名検証方法およびデジタル署名生成方法
US7237112B1 (en) 1999-03-30 2007-06-26 Sony Corporation Information processing system
JP2007172526A (ja) * 2005-12-26 2007-07-05 Nippon Computer Co Ltd 情報処理システム、情報処理方法
JP2008523471A (ja) * 2004-12-06 2008-07-03 マイクロソフト コーポレーション ダイナミックトランスレーションによる先取りコンピュータマルウェアの保護
JP2009199147A (ja) * 2008-02-19 2009-09-03 Konica Minolta Holdings Inc 通信制御方法および通信制御プログラム
JP2010177744A (ja) * 2009-01-27 2010-08-12 Softbank Mobile Corp 電子署名装置及び通信端末装置
JP2012249124A (ja) * 2011-05-30 2012-12-13 Mitsubishi Electric Corp 端末装置およびサーバ装置および電子証明書発行システムおよび電子証明書受信方法および電子証明書送信方法およびプログラム
JP2014003717A (ja) * 2013-10-07 2014-01-09 Softbank Mobile Corp 通信端末装置
US8838996B2 (en) 2012-03-26 2014-09-16 Fuji Xerox Co., Ltd. Non-transitory computer readable medium, program protection apparatus, and program protection method
JP2015504279A (ja) * 2012-01-09 2015-02-05 コーニンクレッカ フィリップス エヌ ヴェ 鍵駆動の難読化を用いる仮想マシンデバイス及び方法
US10275592B2 (en) 2013-11-15 2019-04-30 Kabushiki Kaisha Toshiba Information processing device, information processing method, and computer program product
JP2021523494A (ja) * 2018-08-17 2021-09-02 オムロン株式会社 産業用pcデバイスの動作方法及び産業用pcデバイス
US11792182B2 (en) 2015-02-20 2023-10-17 Nec Corporation Virtual network system, virtual network control method, orchestration apparatus, control apparatus, and control method and control program of control apparatus

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
KR100749690B1 (ko) 2001-01-31 2007-08-17 엔티티 도꼬모 인코퍼레이티드 이동 단말의 기억 모듈에 프로그램을 배포하는 시스템
DE10105053A1 (de) * 2001-02-05 2002-08-29 Hmd Software Ag Verfahren und Einrichtung zum Übertragen von Programmcodes im Internet
TWI270270B (en) * 2001-05-14 2007-01-01 Ntt Docomo Inc System for managing program
US7099663B2 (en) 2001-05-31 2006-08-29 Qualcomm Inc. Safe application distribution and execution in a wireless environment
KR100458515B1 (ko) * 2001-12-21 2004-12-03 한국전자통신연구원 무선 인터넷을 통한 이동 단말용 응용프로그램 설치시스템 및 그 방법
EP1546892B1 (en) * 2002-09-04 2017-03-29 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Protecting mobile code against malicious hosts cross references to related applications
US7469346B2 (en) * 2003-06-27 2008-12-23 Disney Enterprises, Inc. Dual virtual machine architecture for media devices
US8838974B2 (en) * 2005-07-15 2014-09-16 The Mathworks, Inc. System and method for verifying the integrity of read-only components in deployed mixed-mode applications
CN101226569A (zh) * 2007-01-19 2008-07-23 国际商业机器公司 在虚拟机中验证代码模块的方法及装置
DE102007045743A1 (de) * 2007-09-25 2009-04-02 Siemens Ag Verfahren und System zum Schutz gegen einen Zugriff auf einen Maschinencode eines Gerätes
US8850211B2 (en) * 2009-04-27 2014-09-30 Qualcomm Incorporated Method and apparatus for improving code and data signing
US9152801B2 (en) * 2012-06-28 2015-10-06 Steven W. Cooke Cryptographic system of symmetric-key encryption using large permutation vector keys

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4120030A (en) * 1977-03-11 1978-10-10 Kearney & Trecker Corporation Computer software security system
US4168396A (en) * 1977-10-31 1979-09-18 Best Robert M Microprocessor for executing enciphered programs
EP0121853A3 (en) * 1983-04-04 1988-01-13 BURROUGHS CORPORATION (a Delaware corporation) Data processing system having public encryption and private decryption keys
CA1238427A (en) * 1984-12-18 1988-06-21 Jonathan Oseas Code protection using cryptography
US5224160A (en) 1987-02-23 1993-06-29 Siemens Nixdorf Informationssysteme Ag Process for securing and for checking the integrity of the secured programs
US4924378A (en) * 1988-06-13 1990-05-08 Prime Computer, Inc. License mangagement system and license storage key
US5050212A (en) 1990-06-20 1991-09-17 Apple Computer, Inc. Method and apparatus for verifying the integrity of a file stored separately from a computer
US5136647A (en) * 1990-08-02 1992-08-04 Bell Communications Research, Inc. Method for secure time-stamping of digital documents
US5412717A (en) 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
US5343527A (en) 1993-10-27 1994-08-30 International Business Machines Corporation Hybrid encryption method and system for protecting reusable software components
JPH07295800A (ja) 1994-04-22 1995-11-10 Advance Co Ltd ソフトウエアプロテクト方式
US5724425A (en) 1994-06-10 1998-03-03 Sun Microsystems, Inc. Method and apparatus for enhancing software security and distributing software

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132388A (ja) * 1998-10-19 2000-05-12 Internatl Business Mach Corp <Ibm> ソフトウェア・コンポ―ネントを処理および配布するための方法および装置
US7958366B2 (en) 1999-03-30 2011-06-07 Sony Corporation Information processing system
US7237112B1 (en) 1999-03-30 2007-06-26 Sony Corporation Information processing system
JP2003526965A (ja) * 1999-05-17 2003-09-09 ウェイヴ システムズ コーポレイション 公開暗号制御ユニット及びそのシステム
JP2008523471A (ja) * 2004-12-06 2008-07-03 マイクロソフト コーポレーション ダイナミックトランスレーションによる先取りコンピュータマルウェアの保護
JP2006197127A (ja) * 2005-01-12 2006-07-27 Ntt Docomo Inc 通信装置、デジタル署名検証方法およびデジタル署名生成方法
JP2007172526A (ja) * 2005-12-26 2007-07-05 Nippon Computer Co Ltd 情報処理システム、情報処理方法
JP2009199147A (ja) * 2008-02-19 2009-09-03 Konica Minolta Holdings Inc 通信制御方法および通信制御プログラム
JP2010177744A (ja) * 2009-01-27 2010-08-12 Softbank Mobile Corp 電子署名装置及び通信端末装置
JP2012249124A (ja) * 2011-05-30 2012-12-13 Mitsubishi Electric Corp 端末装置およびサーバ装置および電子証明書発行システムおよび電子証明書受信方法および電子証明書送信方法およびプログラム
JP2015504279A (ja) * 2012-01-09 2015-02-05 コーニンクレッカ フィリップス エヌ ヴェ 鍵駆動の難読化を用いる仮想マシンデバイス及び方法
US8838996B2 (en) 2012-03-26 2014-09-16 Fuji Xerox Co., Ltd. Non-transitory computer readable medium, program protection apparatus, and program protection method
JP2014003717A (ja) * 2013-10-07 2014-01-09 Softbank Mobile Corp 通信端末装置
US10275592B2 (en) 2013-11-15 2019-04-30 Kabushiki Kaisha Toshiba Information processing device, information processing method, and computer program product
US11792182B2 (en) 2015-02-20 2023-10-17 Nec Corporation Virtual network system, virtual network control method, orchestration apparatus, control apparatus, and control method and control program of control apparatus
JP2021523494A (ja) * 2018-08-17 2021-09-02 オムロン株式会社 産業用pcデバイスの動作方法及び産業用pcデバイス
US11640468B2 (en) 2018-08-17 2023-05-02 Omron Corporation Method for operating an industrial PC device and industrial PC device

Also Published As

Publication number Publication date
US20020046345A1 (en) 2002-04-18
EP0875815A2 (en) 1998-11-04
EP0875815A3 (en) 2003-12-03
US6820200B2 (en) 2004-11-16
TW385411B (en) 2000-03-21
KR19980081730A (ko) 1998-11-25

Similar Documents

Publication Publication Date Title
EP0875814B1 (en) Information processing apparatus and method and recording medium for executing programs having been encrypted using public keys
JPH10301772A (ja) 情報処理装置および情報処理方法、並びに記録媒体
US6389535B1 (en) Cryptographic protection of core data secrets
US8670568B2 (en) Methods and systems for utilizing cryptographic functions of a cryptographic co-processor
US7545931B2 (en) Protection of application secrets
US7313828B2 (en) Method and apparatus for protecting software against unauthorized use
US7624276B2 (en) Secure device authentication system and method
JP4366037B2 (ja) 暗号化された媒体へのアクセス権を制御・行使するシステム及び方法
US7603703B2 (en) Method and system for controlled distribution of application code and content data within a computer network
CN102271124B (zh) 数据处理设备和数据处理方法
JP2017139793A (ja) サーバ
JP4616345B2 (ja) 配布cdを用いて直接証明秘密鍵を装置に配布する方法
US20060288424A1 (en) Device for protecting digital content, device for processing protected digital content, method for protecting digital content, method for processing protected digital content, storage medium storing program for protecting digital content, and storage medium storing program for processing protected digital content
JPH10171648A (ja) アプリケーションを認証する装置
US20080126705A1 (en) Methods Used In A Portable Mass Storage Device With Virtual Machine Activation
CN1863038B (zh) 对终端设备中应用程序实施控制和管理的方法
WO2010139258A1 (zh) 一种软件版权保护方法、设备和系统
US8284942B2 (en) Persisting private/public key pairs in password-encrypted files for transportation to local cryptographic store
JP2010514000A (ja) 電子装置にプログラム状態データをセキュアに記憶するための方法
US9129098B2 (en) Methods of protecting software programs from unauthorized use
US7281132B2 (en) Using token-based signing to install unsigned binaries
JPH1131105A (ja) データカプセル生成装置および方法
US20060224894A1 (en) Methods, devices and computer programs for creating ciphertext, plaintext and a cryptographic key
KR100367094B1 (ko) 컴퓨터 프로그램 온라인 유통 방법
GB2609026A (en) A method and system for permitting one or more features on a computer program

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050314

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20050513