JP2001230770A - マイクロプロセッサ - Google Patents
マイクロプロセッサInfo
- Publication number
- JP2001230770A JP2001230770A JP2000035898A JP2000035898A JP2001230770A JP 2001230770 A JP2001230770 A JP 2001230770A JP 2000035898 A JP2000035898 A JP 2000035898A JP 2000035898 A JP2000035898 A JP 2000035898A JP 2001230770 A JP2001230770 A JP 2001230770A
- Authority
- JP
- Japan
- Prior art keywords
- program
- microprocessor
- key
- encryption
- encrypted
- 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.)
- Granted
Links
Landscapes
- Storage Device Security (AREA)
Abstract
止することのできるマイクロプロセッサを提供する。 【解決手段】 マイクロプロセッサは、外部へ読み出し
不可能な固有の秘密鍵を内部に保持し、この秘密鍵に対
応する固有の公開鍵であらかじめ暗号化された内容を復
号化する。マイクロプロセッサのバスインターフェイス
ユニットは、仮想アドレスを物理アドレスに変換するア
ドレス変換手段と、マイクロプロセッサ外部のメモリか
ら指定された物理アドレスに対応する内容を読み出すメ
モリ読み出し手段とを含む。命令TLBは、アドレス変
換規則と、各々が仮想アドレスで指定された範囲の暗号
化属性情報を有する1以上のエントリとを含むテーブル
を格納する。復号化処理部は、暗号化属性情報が、仮想
アドレスで指定された範囲が暗号化されていることを示
す場合に、対応する内容をメモリ読み出し手段を介して
外部メモリから読み出し、復号化する。
Description
ュータなどのハードウエアに組み込まれて暗号化された
プログラムを実行するマイクロプロセッサ、このマイク
ロプロセッサを組み込んだハードウエア装置にインター
ネット等の公衆ネットワークを通じて暗号化された実行
プログラムを配布するプログラム配布システムと配布方
法、および配布された実行プログラムをハードウエア内
の既存のオペレーティングシステムと整合してロードす
ることのできる暗号化ファイルロード方法に関する。
著しく、従来の機能である計算やグラフィックだけでは
なく、動画像や音声の再生、編集加工が可能になってい
る。このようなマイクロプロセッサをエンドユーザ向け
システム(以下、「PC」と呼ぶ。)に組み込むことに
よって、ユーザはモニタ上でさまざまな動画像や音声を
楽しめるようになった。また、動画像や音声の再生機能
を、PC本来の計算能力と組み合わせることによって、
ゲームなどへの応用を高めることができる。このような
マイクロプロセッサは固有のハードウエアを必要とする
わけではなく、さまざまなハードウエアに組み込まれ得
るので、すでにPCを持っているユーザは、プログラム
を実行するマイクロプロセッサを取り代えるだけで、安
価に動画像や音声の再生、編集が楽しめるという利点も
ある。
のが、オリジナルの画像や音楽の著作権の保護である。
MDやディジタルビデオデッキでは、これらの装置に不
正なコピーを防ぐための機構をあらかじめ組み込むこと
によって、無制限なコピーを防止することができる。こ
れらの装置を分解、改造してまでも不正コピーを行うこ
とは極めて稀であり、仮にそのような装置があったとし
ても、世界的にみて、不正コピーを目的として改造され
た装置の製造、販売を法律によって禁じられる方向にあ
る。したがって、ハードウエアの面での不正コピーによ
る被害は、それほどの問題とはなっていない。
を扱うのは、ハードウエアではなく、ソフトウエアその
ものである。そして、エンドユーザはPC上でソフトウ
エアの改変を自由に行うことができる。すなわち、ユー
ザにある程度の知識があれば、プログラムを解析するこ
とにより、実行ソフトウエアを書き換えて、不正コピー
を行い得る可能性は充分にある。さらに、このようにし
て作られた不正コピー用のソフトウエアは、ハードウエ
アと異なり、ネットワークなどの媒体を通じて、またた
く間に広がってしまうという問題がある。
が問題となる商業映画や音楽の再生に使われるPCソフ
トウエアには、ソフトウエア自体を暗号化するなどの手
法により、解読、改竄されることを防止する技術が用い
られている。この技術は、耐タンパソフトウエア技術と
呼ばれている(David Aucsimith, et al.;"Tamper Resi
stant Software: An Implementation", Proceeding of
the 1996 Intel Software Developer's Conference)。
耐タンパソフトウエア技術は、動画像や音声を始めとし
てPCを通じてユーザに提供される著作物や、ノウハウ
として価値のある情報が不正にコピーされるのを防止す
るだけではなく、PCソフトウエア自体に含まれるノウ
ハウなどを解析から守るのにも有効である。
パソフトウエア技術の根本原理は、プログラムの中で保
護を要する部分を実行前は暗号化しておき、実行する直
前に復号し、実行終了時に再び暗号化することにより、
逆アセンブラ、デバッガなどの解析ツールによる解析を
困難にするものである。したがって、プログラムがプロ
セッサによって実行可能である以上、プログラム開始時
から順を追って解析していけば必ず解析することが可能
である。換言すれば、耐タンパソフトウエア技術を用い
ても、プログラムコードを逐次的に解析することによっ
て、プログラムの動作が解読可能となる。
を再生するシステムに、著作権者が著作物を供給する際
の妨げとなる。また、PCを通じて高度な情報サービス
や企業、個人のノウハウを含んだプログラムをPCに適
用しようにも、不正コピーの可能性が依然存在する以
上、適用が見合わせられ、PCソフトウエアの応用範囲
が著しく狭められるという問題もある。
ラムの書き換えを確実に防止することができ、PCソフ
トウエアの広範囲な適用を可能にするマイクロプロセッ
サの提供にある。
路、復号化回路、メモリのコストを削減し、安価かつ高
性能なマイクロプロセッサの提供にある。
して、クライアント側装置に安全にプログラムを配布す
ることのできるプログラム配布装置の提供にある。
して配布されたプログラムを安全に受信することのでき
るクライアント側装置の提供にある。
して安全にプログラムを配布することのできるプログラ
ム配布システムの提供にある。
を介した安全なプログラムの配布方法の提供にある。
グラムを、オペレーティングシステムとの不整合なくロ
ードすることのできるプログラムロード方法の提供にあ
る。
な解析から保護することを可能にした、実行ファイルを
記録したコンピュータ読み取り可能な記録媒体の提供に
ある。
するために、本発明のマイクロプロセッサは、外部へ読
み出すことのできない固有の秘密鍵を内部に保持し、こ
の秘密鍵に対応する公開鍵であらかじめ暗号化された内
容を復号化する1チップまたは1パッケージのマイクロ
プロセッサを提供する。このマイクロプロセッサは、仮
想アドレスを物理アドレスに変換するアドレス変換手段
と、このアドレス変換手段の変換規則と各々が前記仮想
アドレスで指定された範囲の暗号化属性情報を有する1
以上のエントリとを含むテーブルを格納する第1の記憶
手段(たとえば変換索引バッファ)と、マイクロプロセ
ッサ外部のメモリから指定された物理アドレスに対応す
る内容を読み出すメモリ読み出し手段と、前記テーブル
のエントリに含まれる暗号化属性情報が、仮想アドレス
で指定された範囲が暗号化されていることを示す場合
に、外部メモリに記録された内容をメモリ読み出し手段
を介して読み出し、前記固有の秘密鍵によって復号化す
る復号化手段と、復号化手段で復号された内容を一時的
に記憶する第2の記憶手段と(たとえば一次キャッシ
ュ)、第2の記憶手段に記憶された内容を逐次解釈する
命令デコード手段とを備える。アドレス変換手段と、メ
モリ読み出し手段は、たとえばバスインターフェイスと
して実現され得る。
内容は、命令デコード手段以外からは読み出し禁止とさ
れる。また、仮想アドレスで使用している外部メモリの
対応する物理アドレスに対して読み出しが行われた場合
には、この読み出しに対して例外処理を発生させるか、
または物理アドレスに記録されている値とは異なる値を
返す。このように、暗号化された内容の復号化処理は、
マイクロプロセッサに固有の秘密鍵によって、完全にマ
イクロプロセッサ内部で行われ、かつ復号化されたデー
タの外部からの読み出しが防止される。すなわち、PC
の所有者によるプログラムの解析、改変が効果的に防止
される。また、暗号化属性を示す情報、たとえば暗号化
フラグをエントリに設定することにより、既存のプログ
ラムにソース変更や再コンパイルなどの変更を加えるこ
となく、暗号化フラグの状態を見ることによって、暗号
化されたプログラムを滞りなく実行することが可能にな
る。
みの発生を考慮して、マイクロプロセッサは、復号化さ
れた内容の実行状態を表わす値を保持するレジスタと、
暗号化された内容の実行中に割り込みが発生した場合
に、レジスタに記憶されている値を、ランダムな値を持
つ任意の暗号化鍵で暗号化するレジスタ暗号化/復号化
処理部とをさらに有する。暗号化に用いた任意の暗号化
鍵自体を、マイクロプロセッサに固有の秘密鍵でさらに
暗号化して、レジスタに保存する。割り込みが終了し
て、暗号化プログラムを続行する場合は、レジスタ値暗
号化/復号化処理部は、レジスタの内容を復号化する。
この構成により、不正な解析をより困難にし、安全性を
高めている。
チップまたは1パッケージのマイクロプロセッサは固有
の秘密鍵とこれに対応する公開鍵を有し、公開鍵に代え
て、任意の共通鍵を用いて暗号化された暗号化プログラ
ムを実行する。暗号化に用いられた任意の共通鍵は、マ
イクロプロセッサに固有の公開鍵によってあらかじめ外
部で暗号化され、マイクロプロセッサに保持される。こ
のマイクロプロセッサは、仮想アドレスを物理アドレス
に変換するアドレス変換手段と、アドレス変換手段の変
換規則と公開鍵によって暗号化された共通鍵についての
キー情報とを含むキーテーブルを格納する第1の記憶手
段(たとえば命令TLB)と、マイクロプロセッサ外部
のメモリに対して、指定した物理アドレスに対応する内
容を読み出すメモリ読み出し手段と、暗号化された共通
鍵を秘密鍵で復号する第1の復号化処理手段と、暗号化
されたプログラム内容を、復号化された共通鍵で復号す
る第2の復号化処理手段と、復号化されたプログラム内
容を一時的に記憶する第2の記憶手段(たとえば一次命
令キャッシュ)と、第2の記憶手段に記憶された内容を
逐次解釈する命令デコード手段とを備える。
鍵(対象鍵)によってあらかじめ暗号化されたプログラ
ムを復号化するには、まず、マイクロプロセッサに固有
の公開鍵で暗号化された共通鍵を、対応する秘密鍵で復
号化しなければならない。したがって、固有の秘密鍵を
有するユーザでないと、暗号化プログラムを復号化する
ことができない。一方、プログラム自体は、非対称鍵ア
ルゴリズムよりもずっと簡単な対象鍵(共通鍵)アルゴ
リズムで暗号化されているので、共通鍵さえ復号できれ
ば、プログラムの復号化は簡単にできる。これによりハ
ードウエアのコストが低減され、復号化の速度が向上す
る。
数のエントリで共有される。これにより、鍵の保持に必
要な高速メモリの量を低減することができる。
および第2の目的と関連して説明したマイクロプロセッ
サが内蔵されたクライアント装置に、ネットワークを介
して実行プログラムを配布するプログラム配布装置を提
供する。上述したように、マイクロプロセッサはあらか
じめ固有の公開鍵と秘密鍵とを有する。このプログラム
配置装置は、クライアント装置との間に第1の通信路を
設定する第1通信路設定部と、前記第1の通信路を介し
て前記クライアント装置を使用するユーザの認証を行う
ユーザ認証部と、前記第1の通信路上に、クライアント
装置が内蔵するマイクロプロセッサに直接連絡する第2
の通信路をさらに設定する第2通信路設定部と、クライ
アント装置に配布すべき実行プログラムを暗号化して暗
号化プログラムを作成する暗号化処理部と、暗号化した
プログラムを前記第2の通信路を介してクライアント装
置のマイクロプロセッサに送信する配布送信部とを備え
る。
ライアント装置のマイクロプロセッサから送られてくる
固有の公開鍵を用いてプログラムを暗号化する。あるい
は、任意の暗号化鍵でプログラムを暗号化し、この暗号
化鍵を、クライアント装置のマイクロプロセッサから送
られてくる公開鍵で暗号化する。暗号化された暗号化鍵
は、暗号化されたプログラムと共にクライアント装置に
配布される。
クを介してプログラム配布装置からプログラムの配布を
受けるクライアント装置は、上述のあらかじめ固有の秘
密鍵と公開鍵とを有するマイクロプロセッサと、前記プ
ログラム配布装置との間に第1の通信路を設定する第1
クライアント側通信路設定部と、第1の通信路を介し
て、前記クライアント装置を使用するユーザのユーザI
Dを前記プログラム配布装置に送信するユーザ認証部
と、第1の通信路上に、前記マイクロプロセッサから直
接プログラム配布装置に連絡する第2の通信路をさらに
設定する第2クライアント側通信路設定部と、前記第2
の通信路を介してプログラム配布装置に、マイクロプロ
セッサが固有の秘密鍵と公開鍵とを確かに保持すること
を証明する証明を送信する証明部と、第2の通信路を介
して前記プログラム配布装置から、暗号化された実行プ
ログラムを受信する受信部とを有する。
ログラム配布システムは、ネットワークと、このネット
ワークに接続された上述したプログラム配布装置と、ネ
ットワークに接続された上述したクライアント装置とを
含む。
ログラム配布方法は、固有の秘密鍵と、この秘密鍵に対
応する固有の公開鍵とをあらかじめ有するマイクロプロ
セッサを内蔵するコンピュータから、プログラム配布装
置に、ネットワークを介して第1の通信路を設定する。
この第1の通信路上に、前記マイクロプロセッサからプ
ログラム配布装置に直接連絡する第2の通信路をさらに
設定する。第2の通信路を介して、前記マイクロプロセ
ッサから前記プログラム配布装置に、前記固有の公開鍵
を送信する。そして、ネットワークを介して送信された
公開鍵を、プログラム配布装置で受信し、プログラム配
布装置でプログラムを暗号化する。暗号化したプログラ
ムを、第2の通信路を介して、コンピュータのマイクロ
プロセッサに直接送信する。
コンピュータが内蔵するマイクロプロセッサに固有の公
開鍵で暗号化されているか、あるいは共通鍵で暗号化さ
れ、この共通鍵をマイクロプロセッサに固有の公開鍵で
暗号化してある。プログラムは、コンピュータを介さず
に、直接マイクロプロセッサに送信され、この公開鍵と
対応する固有の秘密鍵を有するマイクロプロセッサでな
ければ復号することができない。このような配布方法に
より、第三者による不正な復号を効果的に防止すること
ができる。
ログラムロード方法は、暗号化されたプログラムに対し
て1以上のページからなる仮想記憶領域を割り当て、前
記暗号化されたプログラムを前記1以上のページに書き
込んでから、前記1以上のページのそれぞれに対応する
ページテーブルエントリの暗号化フラグをセットする。
これにより、既存のオペレーティングシステムとの不整
合を生じさせることなく、暗号化されたプログラムを実
装することができる。また、このようなロード方法を実
行させるプログラムをあらかじめコンピュータ読み取り
可能な記録媒体に記録してもよい。ここでいう記録媒体
とは、たとえばフロッピーディスク、CD−ROM、M
Oディスクなどのコンピュータ外部のメモリ装置、半導
体メモリ、磁気ディスク、光ディスク、磁気テープなど
を含む。
号化されたプログラムファイルを記録するコンピュータ
読み取り可能な記録媒体を提供する。このプログラムフ
ァイルは、外部のプログラムへの直接の参照を含まない
1以上の第1のプログラム領域と、外部のプログラムへ
の直接の参照を含む1以上の第2のプログラム領域を有
する。第1プログラム領域は、あらかじめ定められた暗
号化鍵で暗号化された実行ファイルを記録し、第2プロ
グラム領域は、外部のプログラムモジュールへのジャン
プ命令を並べたアドレス変換用のテーブルを平文の状態
で記録する。このプログラムファイルがプログラムロー
ダによりコンピュータのメモリ上に読み込まれるとき、
外部への参照を含む第2領域は、そのコンピュータの外
部プログラムの配置に基づいて適切なアドレスを参照す
るようにプログラムローダによって書き換えられる。こ
のとき、第2領域が平文の状態でアドレス変換テーブル
を格納しているので、暗号化された実行プログラムをロ
ードするときにリロケーションで不整合が生じない。ま
た、ロード時の不整合を防止すると同時に、暗号化され
てデータを格納する第1領域により、プログラムの大部
分を不正な解析から保護することが可能になる。本発明
のその他の特徴、効果は、以下に述べる実施の形態によ
って、より明確になるものである。
細に説明する。
第1実施形態に係るマイクロプロセッサ10を説明する
ための図である。図1の概略ブロック図に示すように、
マイクロプロセッサ10は、このマイクロプロセッサに
固有の秘密鍵112と、この秘密鍵とペアをなす公開鍵
114と、この公開鍵によりあらかじめ暗号化された実
行プログラムを実行する際に秘密鍵112で復号化する
復号化処理部116と、復号化されたプログラムを一時
的に格納する一次命令キャッシュ118と、一次命令キ
ャッシュ118に格納された内容を逐次解釈する命令フ
ェッチ/デコード手段230と、バスインターフェイス
ユニット122と、命令TLB120とを、1チップ上
または1パッケージ135内に備える。
仮想アドレスを物理アドレスに変換するアドレス変換手
段(不図示)と、マイクロプロセッサ外部のメインメモ
リ203から、指定された物理アドレスの内容を読み出
すメモリ読み出し手段(不図示)とを有する。また、命
令TLB120は、アドレス変換手段の変換規則と、各
々が仮想アドレスで指定された範囲が暗号化されている
かどうかを示す暗号化フラグを有する1以上のエントリ
とを含むページテーブルを読み込む。
に組み込まれると、システムバス107を介して外部記
憶装置101、PCのメインメモリ103、2次キャッ
シュ105に接続される。ユーザは、所望のプログラム
を暗号化された状態で購入したい場合に、このマイクロ
プロセッサ10に固有の公開鍵を、PCを介してプログ
ラムベンダに送信する。プログラムベンダは、送られて
きた公開鍵でプログラムを暗号化して、暗号化された実
行プログラムをユーザのPCに送り返す。暗号化された
実行プログラムは、たとえばPCのメインメモリ103
に図2に示すファイル形式でロードされ、実行する場合
にだけマイクロプロセッサ10の復号化処理部116で
復号化され、実行される。このとき、マイクロプロセッ
サ10に固有の秘密鍵112を用いなければプログラム
の復号化はできない。
能を有する。したがって、図3に示すように、メインメ
モリ103の所定の範囲を指定する物理アドレスによっ
て区切られたページ38−1〜38−kと、これらに対
応するエントリを有するページテーブル37が設定され
る。命令TLB120は、マイクロプロセッサが実行し
ようとする範囲のプログラムが書き込まれた物理ページ
に対応するページテーブルエントリを取り込む。各エン
トリには、上述したように暗号化フラグが設けられてお
り、対応するページの内容が暗号化されている場合に暗
号化フラグがセットされる。復号化処理部116は、エ
ントリに暗号化フラグがセットされている場合にのみ、
このエントリに対応するページの内容を復号化する。ペ
ージテーブルと暗号化フラグの詳細については、後述す
る。
て一次命令キャッシュ118に格納されていたプログラ
ムの命令は、順次、命令フェッチ/デコード部130に
よってデコードされ、命令プール131に供給される。
命令実行切り替え部132は、一次データキャッシュ1
34から順次データをロードする。命令の実行が終了す
ると、命令実行完了部133を介して、メモリに書き込
まれるべきデータは一次データキャッシュ134に書き
戻される。
割り込みによって復号化が中断されることがあり得る。
中断が起きると、従来のマイクロプロセッサでは、別の
タスク(コンテキスト)への切り替えが発生するとき
に、プロセッサの内部状態をメインメモリ103のスタ
ック上に書き出す。割り込み中のタスクの処理が終了し
たら、メインメモリ103に書かれた内容が復元され、
実行が再開される。しかし、プロセッサの実行コンテキ
スト情報を調べれば、そこにはマイクロプロセッサの実
行アドレスと内部状態に関する情報が含まれるため、プ
ログラムがどのような動作をしていたかがわかってしま
う。
プロセッサ10は、レジスタ値暗号化/福号化処理部1
26を有する。レジスタ値暗号化/福号化処理部126
は、暗号化プログラムの実行中に割り込みや例外が発生
した場合に、実行済みの命令の状態を保持しているレジ
スタ124の内容を、一旦暗号化する。このときの暗号
化の鍵は、マイクロプロセッサ10がランダムな値を割
り当てたものである。この暗号化鍵をさらにマイクロプ
ロセッサ10の固有の秘密鍵112で暗号化して、暗号
化されたコンテキスト情報と共にスタック上に保存す
る。ただし、コンテキスト情報のうち、オペレーティン
グシステムがそのプロセスを再開するのに必要な次レジ
スタ情報は暗号化されない。また、プログラムの再開ア
ドレス、スタックポインタなどのシステムレジスタと、
例外発生ページアドレスは暗号化されない。これら以外
の汎用レジスタが暗号化される。
もとの暗号化プログラムに戻る場合は、マイクロプロセ
ッサ10はスタック上の暗号化されたレジスタ値を一度
レジスタ124に読み込む。レジスタ値暗号化/福号化
処理部126は、レジスタ124上に読みこまれた暗号
化値を復号化し、実行を再開する。より具体的には、マ
イクロプロセッサ10は、保存されたコンテキストの再
開アドレスを調べる。再開アドレスが暗号化されたペー
ジであれば、レジスタ値暗号化/復号化処理部126
は、秘密鍵112を用いてコンテキスト情報を復号化す
る。このような割り込み時、および復帰時のレジスタの
暗号化、復号化は、いかなるプログラムからも知ること
はできない。
フトウエアインタラプトの場合は、パラメータの受け渡
しに汎用レジスタが使われるため、この汎用レジスタに
ついては暗号化を行わない。すなわち、実行中の暗号化
プログラム自体が発生させる割り込み(ソフトウエアイ
ンタラプトと呼ばれ、ユーザモードからOSのカーネル
モードに制御を移すときに使われる割り込み処理)で
は、レジスタ124の暗号化は行わない。ソフトウエア
インタラプトはシステムコール発行に伴って実行される
ので、暗号化プログラムの作成者はあらかじめこの点に
留意したうえで、セキュリティが守られるようにプログ
ラムを作成する。
令TLB120に読み込まれたエントリにセットされて
いた暗号化フラグがクリアされ、一次命令キャッシュ1
18に格納された平文状態のプログラムデータは破棄さ
れる。このとき、復号化された内容がメインメモリ10
3に書き戻されることはない。これにより、完全にマイ
クロプロセッサ10の内部だけで、暗号化された実行プ
ログラムの復号が行われ、他のソフトウエアもユーザ
も、復号化を知ることができない。
ラムのファイル形式を示し、図3は、第1実施形態のマ
イクロプロセッサ10における論理アドレス31と、仮
想メモリを管理するページテーブル37との関係を示
す。図4は、図3に示すページテーブルのうち、エント
リ37−jの構成を示す。
ラムファイルは、このプログラムの外部のプログラムへ
の直接の参照を含まない第1のプログラム領域(すなわ
ち、.textセクション、.bssセクション、.rdataセクシ
ョンなど)と、このプログラムの外部のプログラムへの
直接の参照を含む第2のプログラム領域(すなわちIA
Tセクション)とを有する。第1のプログラム領域に
は、データはあらかじめ暗号化鍵で暗号化された状態で
記録され、第2のプログラム領域には、平文の状態でジ
ャンプテーブルが記録される。
11およびCOFFファイルヘッダ12があり、プログ
ラム全体の属性などを定義する。プログラムは、.text
セクション13、.bssセクション14など、いくつかの
セクションに分かれており、各セクションごとに、属性
を定義するセクションヘッダと、内容が含まれるセクシ
ョン本体がある。通常、プログラムのコード領域は.tex
tセクションに格納される。ただし、図2に示すよう
に、IAT(Import Address table)と呼ばれる外部プ
ログラムへのジャンプ命令が格納される領域は、コード
領域ではあっても、プログラム本体とは別の.IATセクシ
ョンに格納される。セクションヘッダにはいくつかのフ
ィールドがあり、その中の特性フィールド13−1が、
セクションのメモリ上の配置境界や読み書き属性などを
指定している。
1上の1ビット、たとえば0x00000400でマス
クされる1ビットが、暗号化属性を指定する暗号化フラ
グとして用いられる。このビットが1であれば、対応の
セクションが暗号化されていることを示し、0であれば
暗号化されていないことを示す。図2の例では、このビ
ットが値1を有するので、対応のセクションは暗号化さ
れていることになる。たとえば、.textセクション17
の内容は、本来平文であったプログラムをマイクロプロ
セッサ10の固有の公開鍵114で暗号化されたもので
ある。一方、ジャンプテーブルが格納される.IATセクシ
ョンヘッダ16の暗号化フラグは値0を持ち、このセク
ションにはジャンプテーブルが暗号化されず、平文のま
ま格納されることを示す。
スは、システム構成や、そのメモリの利用状況によって
異なる。そのようなとき、プログラムに含まれる参照ア
ドレスをプログラムローダが状況に合わせて変更する必
要が生じる。これをリロケーションと呼ぶ。あるプログ
ラム内部に閉じた関数呼出しは、プログラム内部の相対
的なアドレスに基づいてアクセスを行うリロケータブル
なコードを生成することによって、リロケーション処理
を不要にすることができる。しかし、プログラム外部の
モジュールの呼出し、たとえばシステムコール呼出し
や、その逆に外部のモジュールからプログラム内部の関
数が呼び出される場合には、モジュールの絶対アドレス
も相対的な位置関係も、プログラムがロードされるまで
わからないことが多い。システムのハードウエア構成や
ソフトウエアのバージョンによってプログラムや作業領
域のサイズが変わることがその理由である。
を用いる。外部関数への呼出しを含むプログラムファイ
ルに、IAT(Import Address Table)と呼ばれる、読
み出される外部関数へのジャンプ命令を並べたテーブル
をあらかじめ作成しておき、暗号化されたプログラム本
体(ここでは.textセクション17)から外部モジュー
ルへの呼出しは、このテーブルへのコール命令として間
接的に行う。ジャンプテーブルには、呼出し先の関数を
識別する名前が付加されており、プログラムローダはプ
ログラムのロード時に名前に基づいて外部関数のアドレ
スを検索し、上記テーブルの対応する命令のジャンプ先
をその関数のアドレスに書き換える。この状態でプログ
ラムから外部関数への呼出しが行われると、制御は一度
IATのジャンプ命令に移り、次にジャンプ命令の飛び
先の目的とする関数に制御が移る。第1実施形態で
は、.IATセクション20にこのジャンプテーブルが格納
されている。
換えが行われるので、この領域が暗号化されていると、
書き換えが正常に行われなくなり、正しい外部関数が呼
び出されないことになる。そこで本発明では、図2に示
すように、IATをプログラム本体(.textセクション
17)とは別のセクションに設け、.IATセクション20
を平文のまま維持することにより、リロケーション処理
が正しく行われる。IATに含まれる情報は、外部関数
への呼出しだけなので、プログラム自体の秘密が損なわ
れることはない。
ジャンプ命令が格納されていることとしたが、プログラ
ム本体からの呼出し命令が、IATの内容で指定される
ような間接呼出し命令を使っている場合には、IATの
内容はジャンプ命令ではなく、単なるとび先のアドレス
が格納されたデータ列であってもよい。もちろんこの場
合も、IATは暗号化されない。
た暗号化フラグについて説明する。暗号化された実行プ
ログラムは、ローダプログラムによってメインメモリ1
03上に読み込まれる。このとき、ローダは、ロードす
るプログラムのために1以上のページから成る仮想メモ
リ空間を割り当て、これらのページにプログラムのすべ
てのセクションを書き込んで配置する。配置が終わる
と、ローダは.textセクション17が配置されたページ
テーブルエントリ37-jの暗号化フラグ37-j-E(図4)を
1にセットする。このページテーブルエントリ37-jが、
マイクロプロセッサ10の命令TLB120にキャッシ
ュされているときに暗号化フラグがセットされている
と、バスインターフェイスユニット121がそれを監視
していて、一次命令キャッシュ118と二次命令キャッ
シュ105の、このページエントリに対応するキャッシ
ュエントリを無効化して、復号化された内容を記憶する
ためのスペースをあける。このとき、平文状態の.IATセ
クションが配置されたページテーブルエントリの暗号化
フラグは0のままである。
化フラグがセットされると、以後このページテーブルに
対応する物理メモリのページ38-kへの他プログラムから
のアクセスは禁止される。すなわち、このページへの読
み出し、書き込みは一切できなくなる。この保護は、実
行がユーザモード、カーネルモードのどちらの場合にも
適用される。
部から読み書きの要求があった場合は、保護例外が発生
する。あるいは、読み出しに対しては、常に所定の値
(たとえば0)もしくは乱数が読み出され、書き込みに
対しては無効とするようにしてもよい。例外の扱いにつ
いては後述する。暗号化フラグがセットされた物理ペー
ジ310-k が平文状態で一次データキャッシュ134にキ
ャッシュされることはない。以下、ページテーブルの暗
号化フラグがセットされたページに対応するメモリ領域
を暗号化ページまたは暗号化領域と呼ぶ。暗号化領域の
実行では、プロセッサのデバッグ機能、たとえばステッ
プ実行機能などは無効化される。
テーブルを設定すると、プログラムのエントリポイント
に制御を移し、プログラムの実行が開始される。マイク
ロプロセッサ10が命令として暗号化領域にアクセスす
ると、キャッシュのミスヒットが生じ、メインメモリ1
03から一次命令キャッシュ118への読み込みが始ま
る。このとき、暗号化領域については、復号化処理部1
16が秘密鍵112を使用して内容を復号化し、一次命
令キャッシュ118上には、実行可能な命令列が読み込
まれ、マイクロプロセッサ10はそれを実行する。暗号
化領域以外をキャッシュする場合には、復号化処理部1
16はなにもせずに、メインメモリ103の内容はその
まま一次命令キャッシュ118にコピーされる。
クロプロセッサ10内部のハードウエアである一次命令
キャッシュ118の動作の一部として行われる。したが
って、前述したページテーブルの扱いを除けば、ソフト
ウエアは復号化操作を意識することはまったくない。ペ
ージテーブルの設定についても、通常はオペレーティン
グシステムによって設定が行われるので、アプリケーシ
ョンからはまったく見ることができない。さらに、これ
も上述したように、マイクロプロセッサ10に固有の秘
密鍵112は、マイクロプロセッサ10の内部に隠さ
れ、プログラムからはその値を読み出すことはできな
い。したがって、暗号化された実行プログラムの内容
は、マイクロプロセッサ10が組み込まれたPCのアプ
リケーションプログラムはもちろん、オペレーティング
システムからも復号化された形で読み出すことは不可能
である。
了すると、オペテーティングシステムは他のプログラム
を動作させるために、そのプログラムの.textセクショ
ンが読みこまれていた暗号化領域のメモリページを開放
して、別の内容の書き込みを認める必要がある。ページ
テーブルエントリに暗号化フラグがセットされたままで
は、対応するページへの読み書きはできないので、ペー
ジテーブル上の暗号化フラグをリセットして、読み書き
を許可する。仮想記憶を採用している場合は、プログラ
ムの実行中にも、ページの一部がページアウトされて、
ページの内容を二次メモリに書き出して、物理メモリを
他の目的に使う必要が生じることがある。この場合も、
ページの内容を読み出す前に、暗号化フラグはリセット
される。暗号化フラグがリセットされると、それを監視
するバスインターフェイスユニット122は一次命令キ
ャッシュ118の内容を無効化する。一次データキャッ
シュ134については、暗号化フラグがセットされた状
態で一次データキャッシュ134への暗号化領域の読み
込みが禁止されていれば、無効化の必要は特にない。
ングシステムの仮想記憶の実装によっては、プログラム
の開始時にすべてのイメージを実際の物理メモリが読み
込まれない場合もある。すなわち、プログラムの実行開
始時にプログラムのイメージが仮想アドレスに割り付け
られるだけで、物理メモリにロードされない場合もあ
る。この仮想アドレスへの割付は、メモリマップトファ
イルと呼ばれる。通常、ページテーブルには、そのペー
ジが物理メモリに存在するかどうかを示すフラグがあ
る。図4では、右下の37-j-Pがこのフラグに相当する。
されたとき、その仮想ページに物理メモリが割り当てら
れていない場合、オペレーティングシステムは例外原因
を調べて、仮想ページに対応する物理ページを確保して
からページテーブルを更新する。そして、ページ内容を
二次メモリから読み出して、確保した物理メモリに書き
込んでから、実行を再開する。対応のページが物理メモ
リに存在せず、かつ暗号化フラグがセットされている場
合には、オペレーティングシステムは、まず物理メモリ
のスペースを確保してページテーブルを更新した後、ペ
ージ内容を書き戻すために、一度暗号化フラグをクリア
してから、通常の場合と同様に、二次メモリの内容を物
理メモリに書き込み、その後再度暗号化フラグをセット
して暗号化プログラムの実行を再開する。
グラムの動作を検証するときには、そのプログラムが実
行される実際の環境にできる限り近いことが望ましい。
その意味では、暗号化プログラムのデバッグは、暗号化
状態で行うべきである。しかし、プログラムが暗号化さ
れた保護状態では、ステップ実行などのデバッグ機能が
使えず、コードを逆アセンブリすることもできないた
め、デバッグは事実上不可能に近い。このため、暗号化
プログラムのデバッグは、どうしても平文状態で行う必
要があると考えられる。
て考えると、マイクロプロセッサ10でのコードの実行
については、マイクロプロセッサ10の内部では、プロ
グラムが復号化された状態で実行されるため、暗号化さ
れた状態と平文の状態とで、動作に本質的な違いはな
い。しかし、メモリ保護については、暗号化されたプロ
グラムを実行する場合、復号化されたプログラムを保護
するため暗号化されたページへの読み出しを禁止してい
る点で動作が異なっている。
デバッグ作業の容易な平文状態で行い、平文状態で行
い、かつデバッグ動作を暗号化状態と一致させるため、
ページテーブルにデバッグフラグを設けている。図4に
示すページエントリでは、37-j-Dがデバッグフラグに相
当する。デバッグフラグがセットされているときに、そ
のページに対して暗号化プログラムの実行以外の読み書
きが行われると、暗号化プログラムの保護例外が発生す
る。しかし、デバッグ作業は平文状態で行われているの
で、実行コンテキストは平文のままセーブされ、ステッ
プ実行も可能となる。すなわち、プログラム実行におい
ては、デバッグは平文のプログラムであっても、振る舞
いは暗号化された状態と一致する。かつ、ステップ実行
による実行トレースが可能になる。また、保護による例
外が発生した場合も、セーブされた実行コンテキストを
解析することにより、例外の発生原因を調べた上で、実
行を再開することもできる。
ラムと平文のプログラムの間で暗号化フラグの値の相違
は残るが、一般にアプリケーションプログラムはページ
テーブルの内容を意識することはないので、アプリケー
ションプログラムのデバッグの妨げにはならない。
め、暗号化フラグがセットされた状態では、デバッグフ
ラグをセットしても、ステップ実行などは禁止されたま
まにする。または、暗号化フラグがセットされた状態で
は、デバッグフラグをセットできないようにしてもよ
い。なお、暗号化フラグがセットされている限り、デバ
ッグフラグの状態に関わらず、暗号化領域からのデータ
読み出しは禁止される。
第2実施形態に係るマイクロプロセッサ20を説明する
ための図である。第1実施形態では、マイクロプロセッ
サに固有の公開鍵を用いて暗号化されたプログラムを実
行していた。しかし、公開鍵方式の暗号化/福号化アル
ゴリズムは、共通鍵方式に比較して一般に複雑で、回路
規模が大きくなり、コストが高くなる上に、処理の高速
化が困難である。そこで、第2実施形態のマイクロプロ
セッサは、共通鍵で暗号化されたプログラムを復号し実
行するとともに、共通鍵を安全かつ効率的に管理する。
れる実行プログラムは、プログラムベンダが選択した任
意の暗号化鍵(すなわち共通鍵)で暗号化される。暗号
化に用いた共通鍵は、マイクロプロセッサに固有の公開
鍵で暗号化される。共通鍵で暗号化された暗号化プログ
ラムと、公開鍵によって暗号化された共通鍵とがマイク
ロプロセッサに送られてくるので、マイクロプロセッサ
は、固有の秘密鍵で共通鍵を復号化し、復号化された共
通鍵で、暗号化プログラムの内容を復号化する。これに
より、セキュリティを維持したまま、復号化のためのハ
ードウエアコストを低減することができる。
0は、プログラムから読み出すことのできない秘密鍵と
212、この秘密鍵に対応する公開鍵214と、この公
開鍵であらかじめ暗号化された状態で外部のメモリに格
納されている第3の暗号化鍵EKp[Kx]を前記秘密
鍵212を使用して復号化する復号化鍵TLB(第1の
復号化処理手段)236と、外部のメモリに格納されて
いる暗号化されたプログラムを、前記復号化された第3
の暗号化鍵EKp[Kx]によって復号化する復号化処
理部216(第2の復号化処理手段)と、復号化された
プログラムを格納する一次命令キャッシュ218と、バ
スインターフェイスユニット222と、命令TLB22
0とを、1つのチップまたはパッケージ内に備える。
仮想アドレスを物理アドレスに変換するアドレス変換手
段(不図示)と、マイクロプロセッサ外部のメインメモ
リ203から、指定された物理アドレスに対応する内容
を読み出すメモリ読み出し手段(不図示)とを有する。
命令TLB220は、アドレス変換手段による仮想アド
レスから物理アドレスへの変換規則と、公開鍵によって
あらかじめ外部で暗号化された第3の暗号化鍵E[K
x](共通鍵)についてのキー情報とを含むテーブルを
取り込む。より具体的には、命令TLB220は、まず
メインメモリ203のアドレスによって区切られたペー
ジ領域の各ページに対応するエントリを含むページテー
ブルを取り込む。各エントリは、対応するページの暗号
化属性を示す暗号化フラグと、このページの内容を復号
するための鍵情報が記憶されているキーテーブル上の位
置を指定する識別子(キーエントリID)とを有する。
この識別子を参照することによって、対応するキーテー
ブルのエントリを取り込む。
サ20で実行する暗号化プログラムを格納するファイル
形式を示す。.textセクションヘッダ63のフィールド
には、暗号化アルゴリズム63−2のフィールドと、暗
号化鍵値63−3のフィールドが追加されている。暗号
アルゴリズム63−2のフィールドには、コード領域を
暗号化するための暗号化アルゴリズムが符号化されて格
納される。暗号化鍵値63−3のフィールドには、マイ
クロプロセッサ20が暗号化プログラムを解読するため
に使う共通鍵Kxが、マイクロプロセッサ20に固有の
公開鍵214で暗号化された値EKp[Kx]が格納さ
れている。共通鍵Kxの長さは、たとえば、暗号にトリ
プルDESを使った場合には192ビットが必要にな
る。そして、EKp[Kx]は、マイクロプロセッサ2
0の公開鍵214によって暗号化される際のブロック長
の整数倍のサイズとなる。
い、暗号化アルゴリズム63−2のフィールドで指定さ
れたアルゴリズムによって暗号化されている。ここで
は、暗号化アルゴリズムには共通鍵方式のトリプルDE
Sが指定されているものとする。特性フィールド63−
1には、プログラムが暗号化されていることを示すた
め、暗号化フラグが1にセットされていることは第1実
施形態と同様である。
化ファイルを作成するには、まず、コード領域の暗号化
鍵を共通鍵Kxとしてランダムに選び、.textセクショ
ン66を、64ビット(8バイト)ごとのブロック単位
でトリプルDESアルゴリズムで暗号化する。暗号化鍵
値63−3には、解読用共通鍵Kxをターゲットである
マイクロプロセッサ20の公開鍵214で暗号化した値
EKp[Kx]を格納し、暗号化アルゴリズムフィール
ド63−2にはトリプルDESの符号表現を入れ、特性
フィールドの暗号化フラグを1にセットする。
ション66に限らず複数のセクションとすることによ
り、同一プログラムのコードを複数の暗号化鍵もしくは
暗号化アルゴリズムで暗号化してもよい。ただし、それ
ぞれのセクションはプロセッサの仮想記憶(図7)のペ
ージ境界ごとに配置されなければならない。
域の一部に、プログラムの動作と関係のない部分を設
け、コード領域を暗号化する前に、その部分にプログラ
ムを使用するターゲットのマイクロプロセッサ20の公
開鍵214やプログラムの配布先ユーザIDを直接、あ
るいは暗号化した形式で格納してもよい。こうすること
によって,プログラムが不正解読され、不正コピーが配
布された場合に、その経路を追跡することが可能にな
る。経路追跡のための情報は、プログラムの1サブルー
チンとして実行可能な機械語命令列に符号化され、発見
を困難にすることも可能である。
プロセッサ20で実行する際には、実施形態1と同様
に、まず、マイクロプロセッサ20が組み込まれたPC
のメインメモリ203に、暗号化プログラムをローダに
よって読み込むことから始まる。ローダは、暗号化プロ
グラムのための仮想メモリ空間を含むプロセスコンテキ
ストを設定し、すべてのセクションを通常のプログラム
を同様にメモリ上に配置し、必要に応じてリロケーショ
ンなどを行う。
セッサ20で暗号化プログラムを実行する際のページテ
ーブルを示す。図7に示す第2実施形態のページテーブ
ルはキーテーブル79を有する拡張テーブルである。論
理アドレス71は、ディレクトリ72、テーブル73、
オフセット74の3つのフィールドに分割されている。
論理アドレス71を構成するこれら3つのフィールド
は、次のようにして物理アドレスを計算する。
は、ディレクトリテーブル76のエントリ76-iを指定す
る。ディレクトリテーブル76の先頭は、マイクロプロ
セッサ20のレジスタ75によって指定される。ディレ
クトリエントリ76-iは、ページテーブル77の先頭への
ポインタを持つ。論理アドレス71のテーブル73によ
って、ページテーブル77での位置が計算され、対応す
るページエントリ77-iにそのアドレスが示す実際の物理
アドレス80-kが記述されている。ここまでは、第1実施
形態と同様である。
のエントリと、対応するキーテーブル79のエントリを
示す。第2実施形態では、ページテーブル77の各エン
トリに、対応するページを復号化するための鍵情報を指
定する番号(識別子またはキーエントリID)を格納す
るフィールド77-j-Kが設けられる。この番号は、キーテ
ーブル79上の、復号化鍵が格納されているエントリの
番号を指定する。キーテーブル79の先頭はマイクロプ
ロセッサ20の制御レジスタのひとつであるキーテーブ
ル制御レジスタ78によって指定される。なお、各エン
トリは、第1実施例と同様に、対応するページの属性を
示す暗号化フラグ77-j-Eと、デバッグフラグ77-j-Dも有
する。
復号化するための共通鍵Kxをマイクロプロセッサ20
に固有の公開鍵214で暗号化した値EKp[Kx]を
格納するためのエントリ79-mを、キーテーブル79の上
に確保する。キーテーブル79には、鍵情報と暗号化ア
ルゴリズムのフィールドに加えて、参照カウンタのフィ
ールド79-m-1があり、そのテーブルを参照するテーブル
の個数が書き込まれる。すなわち、参照数が0であれ
ば、そのテーブルは使用可能となる。ローダは使用する
テーブルを決定して、キーテーブルの参照カウンタを0
から1に書き換えてから、鍵情報と暗号化アルゴリズム
情報をキーテーブルのフィールド79-m-3と79-m-4のそれ
ぞれに書き込み、そのキーエントリの番号を対応するペ
ージテーブル77のエントリ77-jに書き込む。同じキー
エントリを参照するページが複数あれば、キーテーブル
79の参照カウンタを増やしてからページテーブル77
のエントリにキーエントリの番号を書き込む。
などの理由により、同一の鍵がキーテーブル79に格納
されている場合は、テーブルの確保は行わず、キーテー
ブルの参照カウンタを増やしてから、ページエントリに
キーエントリの番号を書き込む。このようにして、暗号
化鍵E[Kx]を複数ページで参照できるようにする。
設けて複数のページで共通の復号鍵情報を共有できるよ
うにした理由は、ページテーブルに必要なメモリの量を
減らして命令TLB220の効率を改善するためであ
る。すなわち、第1実施形態では、暗号化プログラムの
中のすべてのプログラムについて同一の公開鍵114が
用いられていたため、各ページテーブルごとに鍵情報を
格納する必要はなかったが、第2実施形態ではプログラ
ムごとに必要な共通鍵の鍵情報が異なるため、ページご
とに別々の鍵を格納する必要が生じる。しかし、比較的
長いビット長を要する鍵情報を、直接ページテーブルの
フィールドに割り付けると、ページテーブルの大きさが
増大してメモリ203の利用効率が低下する。たとえ
ば、ページが4Kバイトのときに、キャッシュラインサ
イズと同一の32バイトの鍵をページテーブルの各ペー
ジに割り当てると、ページサイズの1%弱のメモリがペ
ージテーブルのために必要となってしまう。そこで、ペ
ージテーブルの大きさを増大させたとしても、命令TL
B220のサイズが以前と同じであれば、命令参照に対
する命令TLB220のヒット数が低下し、プログラム
の実行速度が低下する。命令TLB220のサイズも同
時に大きくすることも考えられるが、高速な論理−物理
アドレス変換が要求される命令TLB220の性質上、
コスト高になってしまう。
もページごとに変更する必要はなく、プログラムの秘密
保護のためには、たかだか数種類の鍵が使い分けられれ
ば十分であることが多い。そこで、第2実施形態では、
複数のページが同一の復号化鍵情報を共有できるように
独立のキーテーブル79を設け、ページテーブル77に
はキーテーブル79への番号を格納することにより、ペ
ージテーブルにル77に必要なメモリ量を低減させたの
である。
の鍵情報の設定が終わると、ローダは.textセクション
ヘッダ63が配置されたページテーブルの暗号化フラグ
を1にセットする。そのページテーブルが命令TLB2
20にキャッシュされている場合にページテーブルの暗
号化フラグが1にセットされると、バスインターフェイ
スユニット222がそれを監視していて、一次命令キャ
ッシュ218および二次命令キャッシュ205の対応す
るエントリを無効化する。
LB26にも格納される。キーテーブル79が書きかえ
られた場合は、対応する復号化鍵TLB236のエント
リも書き換えられる。ここで、復号化鍵TLB220に
は、メモリ上の復号化鍵情報E[Kx]が、マイクロプ
ロセッサ20に固有の公開鍵214で復号化されて格納
される。このとき、メモリ203上の復号化鍵情報E
[Kx]の長さを、復号化鍵TLB220上の復号化さ
れた鍵情報Kxより長く取ることにより、鍵の安全性と
TLB220の利用効率を両立させることができる。マ
イクロプロセッサ20内部の復号化鍵TLB220に格
納された鍵情報は、ユーザプログラムからは見ることが
できないからである。もちろん、ユーザプログラムによ
るキーテーブルの明示的なメモリ参照に対しては、復号
化された値Kxではなく、もとの暗号化されたままの値
E[Kx]が返される。
1実施形態と同様に、ローダはプログラムのエントリポ
イントに制御を移し、プログラムの実行が開始される。
プロセッサが命令として暗号化領域にアクセスすると、
キャッシュのミスヒットが生じ、メインメモリ203か
ら一次命令キャッシュ218への読み込みが始まる。こ
のとき、ページテーブル77からキーテーブル79への
参照で指定されたキーテーブル79のエントリが、マイ
クロプロセッサ20の秘密鍵212で復号化されて、復
号化TLB236に読み込まれる。復号化された鍵情報
Kxを使って、メインメモリ203に格納されていた暗
号化データが復号化処理部216によって復号化され、
一次命令キャッシュ218へと読み込まれ、実行され
る。
無効化、割り込み処理などは第1実施形態と同様であ
る。
の復号化に共通鍵方式を採用することができる。共通鍵
のアルゴリズムは一般に同一鍵長さの公開鍵アルゴリズ
ムと比較してハードウエア化が容易であり、復号化機能
のコストを低減することができる。さらに、共通鍵をマ
イクロプロセッサに固有の公開鍵で暗号化し、その復号
はマイクロプロセッサ20に固有の秘密鍵でないとでき
ないので、安全性も確保される。
施形態にかかるプログラム配布システム90の図であ
る。このプログラム配布システムは、基本的に、第1ま
たは第2の実施形態で説明したマイクロプロセッサを内
蔵したコンピュータシステムにプログラムを配布するよ
うに設計されている。したがって、配布される実行プロ
グラムは、マイクロプロセッサ固有の鍵で直接暗号化さ
れるか、あるいは任意の共通鍵で暗号化され、共通鍵そ
のものををマイクロプロセッサ固有の鍵で暗号化して実
行プログラムに添付する。このため、同一のプログラム
媒体のコピー、たとえば大量にプレスされるCD−RO
Mなどによってプログラムを配布することができない。
そこで、ネットワークを介してプログラムを配布する。
は、ネットワーク95と、ネットワーク95に接続さ
れ、実行プログラムをネットワーク95を介して配布す
るプログラム配布装置93と、同じくネットワーク95
に接続され、ネットワークを介してプログラム配布装置
93から実行プログラムの配布を受けるクライアント装
置91とを含む。
装置91との間に第1の通信路を設定する第1通信路設
定部931と、記第1の通信路を介してクライアント装
置91を使用するユーザのユーザ認証を行うユーザ認証
部933と、第1の通信路上に、クライアント装置が内
蔵するマイクロプロセッサに直接連絡する第2の通信路
を設定する第2通信路設定部934と、第2の通信路を
介して、クライアント装置91のマイクロプロセッサ9
01が正当であることを認証するプロセッサ認証部93
5と、実行プログラムをプロセッサ901と対応付けら
れた暗号化鍵で暗号化して暗号化プログラムを作成する
プログラム暗号化処理部936と、暗号化したプログラ
ムを第2の通信路を介してクライアント装置に配布する
ネットワークインターフェイス931とを備える。
の秘密鍵と公開鍵とを有するマイクロプロセッサ901
と、プログラム配布装置93との間に第1の通信路を設
定する第1クライアント側通信路設定部905と、第1
の通信路を介してこのクライアント装置を使用するユー
ザのユーザIDを送信するユーザ認証部910と、第1
の通信路上に、マイクロプロセッサから直接プログラム
配布装置に連絡する第2の通信路を設定する第2クライ
アント側通信路設定部906と、第2の通信路を介し
て、このマイクロプロセッサが確かにこのマイクロプロ
セッサだけに固有の公開鍵と秘密鍵を有することを証明
する証明をプログラム配布装置に送信する証明部907
と、暗号化された実行プログラムを第2の通信路を介し
て受信するプログラム受信部908とを備える。
の異なるチャネル上に設定されてもよいし、第1の通信
路と異なる回線上に設定されてもよい。暗号化されたプ
ログラムは、マイクロプロセッサの認証が行われた上
で、マイクロプロセッサに直接接続された第2の通信路
を介してマイクロプロセッサに送信されるので、プログ
ラム配布の安全性が確保されるとともに、ユーザによる
不正を防止することができる。
90におけるプログラム配布のシーケンス図である。
世界一意となるような公開鍵と秘密鍵のペアK'p、K's
と、配布プログラムの原型である暗号化されていないプ
ログラムファイルを有する。一方、クライアント装置9
1はマイクロプロセッサ901を有し、マイクロプロセ
ッサ901には、ネットワークを介してプログラムをダ
ウンロードするための専用プログラムが添付されてい
る。ダウンロードプログラムは、マイクロプロセッサ9
01の購入時、あるいはマイクロプロセッサ901を内
蔵するシステムの購入時に添付されるか、あるいは郵送
などのユーザ個別に配布が可能な任意の手段でよい。
ロセッサ901ごとに異なる固有の公開鍵Kp、証明書
などの情報が埋め込まれている。具体的には、マイクロ
プロセッサ901の公開鍵Kpが実在するマイクロプロ
セッサに対応するものであることを示す証明書Certが、
ダウンロードプログラムに格納されている。証明書を持
つ目的は、ユーザが実際のマイクロプロセッサ901と
対応しない既知の公開鍵と秘密鍵の組み合わせを使って
暗号化されたプログラムを取得し、既知の秘密鍵で復号
化することで平文プログラム内容を取得することを防ぐ
ためである。証明書には、公開鍵Kpと、Kpを証明機関
の鍵Kcertで署名した値SKcert[Kp]があらか
じめ計算され、含まれている。Kcertの値は認証機関に
よって秘密に管理され、ダウンロードプログラムには含
まれない。証明書に含まれる公開鍵Kpと署名S
Kcert[Kp]を、認証用の公開鍵Kvalで検証する
ことにより、Kpが認証機関により正しく割り当てられ
たものであることが証明され、既知の鍵の組み合わせを
使用できないようにしてある。
にあらかじめ組み込まれていてもよい。しかし、証明書
に有効期限を設けた上でダウンロードプログラムに格納
し、マイクロプロセッサに添付して販売するほうが、安
全性がより高められる。この場合、定期的に更新された
証明書を格納したダウンロードプログラムが、マイクロ
プロセッサの購買者に配布されることになる。
は、ダウンロードプログラムのデータ領域に暗号化され
て格納されている。暗号化された秘密鍵Ksの復号に必
要な鍵は、定数としてダウンロードプログラムのコード
中に分散して埋め込まれている。ダウンロードプログラ
ムが証明の過程で使用する秘密鍵Ksは、マイクロプロ
セッサ901が固有に有する秘密鍵Ksと同じ値ではあ
るが、マイクロプロセッサ901から読み出して得られ
るのではない。マイクロプロセッサが固有に有する秘密
鍵Ksがプログラムによって読み出されることは決して
ないのである。
ことを証明するには、認証局CA(Certificate Author
ity)が使われることが多い。本システムにCAを使う
場合は、マイクロプロセッサ901の購入時に、マイク
ロプロセッサ901の公開鍵とユーザ(購入者)との組
み合わせをCAに登録するか、オンラインでマクロプロ
セッサ901の公開鍵と利用者の組み合わせを登録す
る。この場合は、図10に示すプログラム配布装置(以
下、「サーバ」とする)93により証明書の確認を省略
することができる。
ザが購入したマイクロプロセッサ901を認証局に登録
しなければならないという不便がある。そこで、第3実
施形態では、サーバ93とクライアント装置91との間
だけで認証が行えるように、暗号化された証明書をダウ
ンロードプログラムに格納することとしている。なお、
第3実施形態では、サーバ93は証明書を盗用するなど
の不正がいっさいない信用できるものであると仮定し、
サーバ93が全世界一意の鍵のペアK'pとK'sを持つこ
とは、認証局などによってあらかじめ確認されているも
のとする。
ンス1001において、クライアント装置91とサーバ
93との間に、それぞれの装置の第1通信路設定部によ
り、安全な第1の通信路を設定する。具体的には、クラ
イアント装置91から、ネットワーク95を介してサー
バ93に通信開始要求を送り、通信路の秘密を守るため
の鍵共有を行う。これは周知の鍵共有プロトコル、DH
方式などでよい。以後のクライアント装置91とサーバ
93との間の通信は、こうしてネットワーク95に設定
された、盗聴に対して安全な通信路を通じて行う。
002で、クライアント装置91はサーバ93に対して
ダウンロードしたいファイル(プログラム)を要求し、
サーバ93はクライアント装置91とユーザレベルの認
証や課金処理などを行う。ダウンロードの過程で、処理
の秘密をユーザから守るため、以下に説明するクライア
ント装置91でのダウンロードシーケンスの少なくとも
一部は、暗号化コードとして実行される。ここでは、暗
号化コードによって実行される部分を、マイクロプロセ
ッサ901の動作として表現する。
に、クライアント装置91のマイクロプロセッサ901
とサーバ93とを直接接続する、安全な第2の通信路を
設定する。
処理されるデータの一部を不正に取得することを防止す
るため、ダウンロードプログラムでは、コード自身はも
ちろんのこと、処理過程でメモリ上に置かれるデータに
ついても、ユーザが読み取り理解することが困難となる
ように記述されている。この目的をさらに強化するた
め、シーケンス1003では、サーバ93とマイクロプ
ロセッサ901との間でも秘密鍵による通信の暗号化を
行う。
る不正、たとえば、サーバ93とマイクロプロセッサ9
01との間の通信メッセージで、マイクロプロセッサ9
01の持つ公開鍵Kpを偽の公開鍵にすりかえて暗号化
されたプログラムを取得し、偽の公開鍵に対応する既知
の秘密鍵で復号化することによって平文のプログラムが
ユーザの手にわたるおそれがあるからである。サーバ9
3とマイクロプロセッサ901との間の通信を秘密鍵で
暗号化することにより、上述のようなユーザの不正を防
ぐことができる。以後、「マイクロプロセッサ901と
サーバ93との間の通信」という場合、マイクロプロセ
ッサ901上の耐タンパなプログラムとサーバ93とが
共有する暗号鍵によって暗号化され、保護された通信を
意味する。
セッサ901とサーバ93は相互認証を行う。すなわ
ち、シーケンス1004で、マイクロプロセッサ901
はサーバ93に対するチャレンジのための乱数Rcを生
成し、マイクロプロセッサ901に固有の公開鍵Kpと
ともに、第2通信路を介してサーバ93に送信する。チ
ャレンジを受け取ったサーバ93は、シーケンス100
5で、サーバ93の秘密鍵K'sで乱数Rcを暗号化した
署名SK’s[Rc]を、サーバ93からのチャレンジ
Rsおよびサーバ側公開鍵K'pとともに、マイクロプロ
セッサ901に送信する。(図10では、署名SK’s
[Rc]をS[Rc](K's)と表記し、類似の表現も同様
の表記とする。) マイクロプロセッサ901は、サーバ93から送られて
きた署名SK’s[Rc]が、サーバの公開鍵K'pでハ
ッシュ化されたVK’p[Rc]と一致するかどうかを
確認する。不一致の場合は、サーバ93の認証に失敗し
て、以後の処理を中止する。認証に成功すれば、シーケ
ンス1006でサーバ93のチャレンジに対してSKs
[Rs]を計算し、証明書Certをサーバ93に送る。サ
ーバ93は、レスポンスSKs[Rs]をVKp[Rs]
と比較して、一致しなければ処理を中止する。一致した
場合は、マイクロプロセッサ901の公開鍵Kpと認証
機関の公開鍵Kvalとから、VKval[Kp]を計算
し、証明書Certから公開鍵に対する署名S
Kcert[Kp]と照合し、検証に失敗すれば処理を
中止する。
号化してCertを取り出し、検証する。ここでも検証に失
敗すれば処理を中止する。検証に成功して、証明書によ
りマイクロプロセッサ901が公開鍵Kpを持つことを
確認すると、サーバ93は実行プログラムをマイクロプ
ロセッサ901の公開鍵Kpで暗号化した暗号化プログ
ラムEKp[Prog]を作成する。このとき、第1実
施形態で説明したように、プログラムのコード部分をマ
イクロプロセッサ901の公開鍵Kpで暗号化する。こ
のとき、第1実施形態で説明したように、プログラムの
コード部分をマイクロプロセッサ901の公開鍵Kpで
暗号化する。暗号化にあたっては、第1実施形態で説明
したように、プログラム本体の.textセクションは暗号
化するが、ジャンプテーブルの.IATセクションは平文の
ままとしておく。
化プログラムEKp[Prog]と、サーバ93自身の
秘密鍵K'sによる署名SK’s[EKp[Prog]]とを、
第2通信路を介してマイクロプロセッサ901に送る。
この暗号化プログラムと署名は、直接マイクロプロセッ
サ901とサーバ91との間に確立された第2通信路を
介して送られるため、クライアント装置91はこれを傍
受することはできない。
受信を完了すると、シーケンス1008でクライアント
装置91にダウンロード終了を通知する。シーケンス1
009で、クライアント装置91はサーバ93に課金処
理を要求し、サーバ93は領収書Rcptと、領収書のサー
バ93の秘密鍵による署名SK’s[Rcpt]およびプロ
グラムの署名SK’s[EKp[Prog]]とをクライアン
ト装置91に送信する。クライアント装置91は受信し
た領収書と署名を保存するとともに、シーケンス101
0で、サーバ93によるプログラムの署名SK’s[E
Kp[Prog]]をマイクロプロセッサ901に送る。
ト装置91から受け取ったプログラムの書名S
K’s[EKp[Prog]]をサーバ93の公開鍵K'pで検
証し、正当であれば、シーケンス1011で暗合された
実行プログラムEKp[Prog]をクライアント装置91に
渡す。クライアント装置91はEKp[Prog]を受け取る
と、シーケンス1012でサーバ93との間の回線の終
了処理を行う。
暗号化プログラムの実行は、第1実施形態と同様であ
る。
置91の処理フローをしめすフローチャートである。こ
の処理フローは図10のシーケンスで説明したとおりで
あるが、確認のため簡単に説明する。
の間に第1の通信路を設定する。ステップS1103
で、サーバ93に対してプログラムのダウンロードの要
求を行い、上述した認証処理を行う。ステップS110
5でマイクロプロセッサ901とサーバ93との間の認
証を行い、プログラムをマイクロプロセッサ901に転
送する。ステップS1107で、マイクロプロセッサ9
01から受信終了を受け取る。ステップS1109で、
サーバ93との間の課金処理を行い、ステップS111
1で、サーバ93から領収書と署名を受信する。ステッ
プS1113で、マイクロプロセッサ901に領収書と
署名を渡し、ステップS115で、マイクロプロセッサ
901から暗号化されたプログラムを受け取る。ステッ
プS1117で、サーバ93との間の回線を終了する。
理フローを示すフローチャートである。まず、ステップ
S1201で、クライアント装置91からの要求による
第1通信路を設定する。ステップS1203で、クライ
アント装置91からのプログラムのダウンロード要求を
受信し、課金などの目的でクライアントとの認証を行
う。ステップS1205で、マイクロプロセッサ901
との間に第2の通信路を設定する。ステップS1207
で、マイクロプロセッサ901からのチャレンジRcと
公開鍵Kpを受信する。ステップS1209で、サーバ
側のチャレンジRsとレスポンスS[Rc]を生成し、
サーバ93の公開鍵K'pとともにRc、S[Rc]をマ
イクロプロセッサ901に送信する。ステップS121
1で、マイクロプロセッサ901からのレスポンスS
[Rc]と、証明書E[Cert]を受信する。ステップS1
213で、マイクロプロセッサ901から受信したS
[Rc]とE[Cert]が正当かどうか検証する。検証に失
敗した場合は、処理を中止する。検証に成功した場合
は、ステップS1215でマイクロプロセッサ901に
対応した暗号化プログラムと署名を生成して、それらを
マイクロプロセッサ901に送信する。ステップS12
17で、マイクロプロセッサ901との間のプログラム
転送を終了する。ステップS1219で、クライアント
装置91との間で課金処理を行い、領収書、署名を送信
する。ステップS1221で、クライアント装置91と
の間の回線を終了する。
ッサ901の処理フローを示すフローチャートである。
まず、ステップS1301で、サーバ93との間に第2
の通信路を設定する。ステップS1303で、チャレン
ジRcを生成し、マイクロプロセッサ901に固有の公
開鍵Kpとともに、サーバ93に送信する。送信が成功
したなら、ステップS1305で、サーバ93からレス
ポンスS[Rc]と、チャレンジRsおよび公開鍵K'p
を受信する。ステップS1307で、レスポンスが正当
かどうかを判断する。正当でないとされた場合は、処理
を中止する。正当な場合は、ステップS1309で、サ
ーバ93に対するレスポンスと、サーバに対応した証明
書を生成し、送信する。ステップS1311で、サーバ
93から暗号化されたプログラムを受信する。受信が終
了すると、ステップS1313で、クライアント装置9
1にダウンロードの終了を通知する。ステップS131
5で、クライアント装置91から署名を受信し、ステッ
プS1317で、署名を検証する。検証が失敗すれば処
理は中止する。検証に成功すれば、ステップS1319
で、暗号化されたプログラムをクライアント装置91に
転送する。
完了した後のダウンロードプログラムの異常終了によっ
て、暗号化されたプログラムE[Prog]が入手できなかっ
た場合は、クライアントは保存した領収書をもとに、再
度サーバ93からプログラムをダウンロードする権利を
保持する。この場合、当然課金は行われず、このマイク
ロプロセッサ901をターゲットとした暗号化プログラ
ム以外のプログラムを得ることもない。
において、サーバ93が、プログラムの暗号化に、マイ
クロプロセッサ901の公開鍵を使用せず、共通鍵を使
用してもよい。この場合は、サーバ93が共通鍵Kxと
暗号化アルゴリズムを選択し、共通鍵Kxでプログラム
を暗号化した上で、この共通鍵をプロセッサに固有の公
開鍵で暗号化し、サーバ93とマイクロプロセッサ90
1との間の暗号化を行ってから、プログラムをマイクロ
プロセッサ901に送信する。このとき、第2通信路設
定後に、マイクロプロセッサ901に備えられている暗
号復号化能力をサーバ側からマイクロプロセッサ901
に問い合わせるシーケンスを追加して、マイクロプロセ
ッサ901に処理可能な暗号化アルゴリズムの中からサ
ーバ93が暗号化アルゴリズムを選択してもよい。
い捨ての共通鍵を使うので、鍵の長さを短くし、クライ
アント装置91のメモリあるいはマイクロプロセッサ9
01のキャッシュの中に構築されるページテーブルのサ
イズを小さくできる。
ータベースや顧客情報などの秘密情報の取り扱いにも適
用できる。また、プログラムをターゲットのマイクロプ
ロセッサだけで実行できるように暗号化することを除け
ば、実行プログラム以外の任意の音楽、映像データにも
拡張して適用可能である。
マイクロプロセッサが組み込まれたPCの所有者に解析
されることなく、暗号化されたプログラムを安全に実行
することができる。また、既存のプログラムにソース変
更や再コンパイルすることなく、完全にプロセッサ内部
で復号化を行うことができる。
よれば、プログラムの暗号化に共通鍵を用い、共通鍵自
体をマイクロプロセッサの公開鍵で暗号化した。これに
より暗号化プログラムのセキュリティが補償されるとと
もに、マイクロプロセッサのハードウエアサイズを大幅
に縮小することができる。
ットワークを介して、プログラム配布装置からクライア
ント装置へ、安全かつ確実に暗号化プログラムを配布す
ることができる。また、マイクロプロセッサで実行され
る耐タンパなダウンロードプログラムの存在を前提とす
ることにより、第三者を介さず、直接プログラム配布装
置とマイクロプロセッサとの間で、プログラムのダウン
ロードを安全かつ効率良く行うことができる。
体に、プログラム本体部分を暗号化して記録し、外部の
プログラムへの直接の参照を行うIAT領域は暗号化せ
ずに平文の状態で格納することにより、プログラム実行
時のリロケーションが正しく行われることを可能にす
る。
サの概略ブロック図である。
サで実行される暗号化プログラムのファイル形式の一例
を示す図である。
サの物理アドレスと、仮想記憶を管理するページテーブ
ルと、論理アドレスとの対応関係を示す図である。
トリの一例を示す図である。
サの概略ブロック図である。
サで実行される暗号化プログラムのファイル形式の一例
を示す図である。
サの物理アドレスと、仮想記憶を管理するページテーブ
ルと、キーテーブルとの対応関係を示す図である。
関係を詳細に示す図である。
システムの図である。
のシーケンス図である。
け取り手順を示すフローチャートである。
配布手順を示すフローチャートである。
プロセッサの動作を示すフローチャートである。
段) 120、220 命令TLB(第1の記憶手段) 122、222 バスインターフェイスユニット 124、224 レジスタ 126、226 レジスタ値暗号化/復号化処理部 236 復号化鍵TLB 905、932 第1通信設定部 906、934 第2通信設定部 910、933 ユーザ認証部 908、914 プログラム受信部 935 プログラム認証部 936 プログラム暗号化処理部
Claims (20)
- 【請求項1】 外部へ読み出すことのできない固有の秘
密鍵を内部に保持し、この秘密鍵に対応する公開鍵によ
ってあらかじめ暗号化された内容を復号化する1チップ
または1パッケージのマイクロプロセッサであって、 仮想アドレスを物理アドレスに変換するアドレス変換手
段と、 前記アドレス変換手段による仮想アドレスから物理アド
レスへの変換規則と、各々が前記仮想アドレスで指定さ
れた範囲の暗号化属性情報を有する1以上のエントリと
を含むテーブルを格納する第1の記憶手段と、 マイクロプロセッサ外部のメモリから、変換された物理
アドレスに対応する内容を読み出すメモリ読み出し手段
と、 前記テーブルのエントリに含まれる前記暗号化属性情報
が、当該仮想アドレスで指定された範囲が暗号化されて
いることを示す場合に、前記外部のメモリに記録された
前記内容を、前記メモリ読み出し手段を介して読み出
し、読み出した内容を前記秘密鍵によって復号化する復
号化手段と、 前記復号化された内容を一時的に記憶する第2の記憶手
段と、 前記第2の記憶手段に記憶された内容を逐次解釈する命
令デコード手段とを具備したことを特徴とするマイクロ
プロセッサ。 - 【請求項2】 前記第2の記憶手段に格納された内容
は、前記命令デコード手段以外からは読み出し禁止とす
ることを特徴とする請求項1に記載のマイクロプロセッ
サ。 - 【請求項3】 前記仮想アドレスで指定されている前記
外部のメモリの対応する物理アドレスに対して読み出し
があった場合に、この読み出しに対して例外処理を発生
させるか、前記対応する物理アドレスに記録されている
値とは異なる値を回答するかの、いずれかの処理を行う
ことを特徴とする請求項1に記載のマイクロプロセッ
サ。 - 【請求項4】 前記各エントリは、前記仮想アドレスで
指定された範囲のデバッグ属性情報を含み、当該デバッ
グ属性情報が、指定された範囲でデバッグ作業が行われ
ていることを示しているときに、前記外部のメモリの対
応する物理アドレスに対して読み出しまたは書き込みが
あった場合に、前記読み出しまたは書き込みに対して、
例外処理を発生させることを特徴とする請求項1に記載
のマイクロプロセッサ。 - 【請求項5】 前記暗号化属性情報が、前記仮想アドレ
スで指定された範囲が暗号化されていないことを示した
場合に、前記第2の記憶手段に格納した復号化された内
容を破棄するすることを特徴とする請求項1に記載のマ
イクロプロセッサ。 - 【請求項6】 前記復号化手段によって復号化された前
記プログラムの実行状態の値を記憶するレジスタと、 前記暗号化プログラムの実行中に割り込みが発生した場
合に、前記レジスタに記憶されている値を、ランダムな
値を持つ任意の暗号化鍵で暗号化するレジスタ暗号化/
復号化処理部とをさらに具備することを特徴とする請求
項1〜5のいずれかに記載のマイクロプロセッサ。 - 【請求項7】 前記レジスタ値復号化/暗号化処理部
は、前記レジスタ値の暗号化に用いた任意の暗号化鍵
を、前記固有の秘密鍵でさらに暗号化し、暗号化された
任意の暗号化鍵を前記マイクロプロセッサ外部のメモリ
に格納させることを特徴とする請求項6に記載のマイク
ロプロセッサ。 - 【請求項8】 前記レジスタ値暗号化/復号化処理部
は、前記割り込みにより中断された暗号化プログラムの
実行が再開される場合に、前記暗号化された実行状態の
値を復号化することを特徴とする請求項6に記載のマイ
クロプロセッサ。 - 【請求項9】 前記レジスタ値暗号化/復号化処理部
は、前記割り込みが実行中の暗号化プログラム自体によ
って発生されたシステムコールである場合には、前記レ
ジスタに記憶されている実行状態の値の暗号化は行わな
いことを特徴とする請求項6に記載のマイクロプロセッ
サ。 - 【請求項10】 外部へ読み出すことのできない固有の
秘密鍵と、この秘密鍵に対応する公開鍵とを内部に保持
し、任意の共通鍵によって暗号化された内容を復号化す
る1チップまたは1パッケージのマイクロプロセッサで
あって、 仮想アドレスを物理アドレスに変換するアドレス変換手
段と、 前記アドレス変換手段による仮想アドレスから物理アド
レスへの変換規則と、前記公開鍵によってあらかじめ外
部で暗号化された前記共通鍵についての情報とを含むテ
ーブルを格納する第1の記憶手段と、 マイクロプロセッサ外部のメモリから、指定された物理
アドレスに対応する内容を読み出すメモリ読み出し手段
と、 前記暗号化された共通鍵を、前記秘密鍵で復号する第1
の復号化処理手段と、 前記暗号化された内容を、前記復号化された共通鍵で復
号化する第2の復号化処理手段と、 前記復号化された内容を一時的に記憶する第2の記憶手
段と、 前記第2の記憶手段に記憶された内容を逐次解釈する命
令デコード手段とを具備することを特徴とするマイクロ
プロセッサ。 - 【請求項11】 外部へ読み出すことのできない固有の
秘密鍵とこの秘密鍵に対応する固有の公開鍵とをあらか
じめ有するマイクロプロセッサが内蔵されたクライアン
ト装置に、ネットワークを介して実行プログラムを配布
するプログラム配布装置であって、 前記クライアント装置との間に第1の通信路を設定する
第1通信路設定部と、 前記第1の通信路を介して前記クライアント装置を使用
するユーザの認証を行うユーザ認証部と、 前記第1の通信路上に、クライアント装置が内蔵するマ
イクロプロセッサに直接連絡する第2の通信路をさらに
設定する第2通信路設定部と、 前記クライアント装置に配布すべき実行プログラムを暗
号化して暗号化プログラムを作成する暗号化処理部と、 前記暗号化したプログラムを前記第2の通信路を介して
クライアント装置のマイクロプロセッサに送信する配布
送信部とを備えたプログラム配布装置。 - 【請求項12】 前記第2の通信路を介して、クライア
ント装置のマイクロプロセッサが正当であることを認証
するプロセッサ認証部をさらに有し、前記プロセッサ認
証部は、前記第2の通信路を介して、クライアント装置
のマイクロプロセッサが、該マイクロプロセッサに固有
の公開鍵と秘密鍵とを確かに保持することを認証するこ
とを特徴とする請求項11に記載のプログラム配布装
置。 - 【請求項13】 前記暗号化処理部は、前記第2の通信
路を介して前記クライアント装置のマイクロプロセッサ
から固有の公開鍵を受け取り、該公開鍵を用いて前記実
行プログラムを暗号化することを特徴とする請求項11
または12に記載のプログラム配布装置。 - 【請求項14】 前記暗号化処理部は、任意の暗号化鍵
で前記実行プログラムを暗号化し、前記第2の通信路を
介してクライアント装置のマイクロプロセッサから固有
の公開鍵を受け取り、前記任意の暗号化鍵を前記公開鍵
で暗号化し、 前記配布送信部は、前記暗号化した実行プログラムと、
暗号化された暗号化鍵とを、前記第2の通信路を介して
クライアント装置のマイクロプロセッサに送信すること
を特徴とする請求項11または12に記載のプログラム
配布装置。 - 【請求項15】 ネットワークを介してプログラム配布
装置からプログラムの配布を受けるクライアント装置で
あって、 あらかじめ固有の秘密鍵と公開鍵とを有するマイクロプ
ロセッサと、 前記プログラム配布装置との間に第1の通信路を設定す
る第1クライアント側通信路設定部と、 前記第1の通信路を介して、前記クライアント装置を使
用するユーザのユーザIDを前記プログラム配布装置に
送信するユーザ認証部と、 前記第1の通信路上に、前記マイクロプロセッサから直
接プログラム配布装置に連絡する第2の通信路をさらに
設定する第2クライアント側通信路設定部と、 前記第2の通信路を介してプログラム配布装置に、前記
マイクロプロセッサが該マイクロプロセッサに固有の秘
密鍵と公開鍵とを確かに保持することを証明する証明を
送信する証明部と、 前記第2の通信路を介して前記プログラム配布装置か
ら、暗号化された実行プログラムを受信する受信部とを
有することを特徴とするクライアント装置。 - 【請求項16】 ネットワークと、 前記ネットワークに接続され、実行プログラムを前記ネ
ットワークを介して配布するプログラム配布装置と、 前記ネットワークに接続され、ネットワークを介して前
記プログラム配布装置から実行プログラムの配布を受け
るクライアント装置とを含み、 前記クライアント装置は、 あらかじめ固有の秘密鍵と公開鍵とを有するマイクロプ
ロセッサと、 前記プログラム配布装置との間に第1の通信路を設定す
る第1クライアント側通信路設定部と、 前記第1の通信路上に、前記マイクロプロセッサから直
接プログラム配布装置に連絡する第2の通信路をさらに
設定する第2クライアント側通信路設定部と、前記第2
の通信路を介してプログラム配布装置に、公開鍵および
該公開鍵が確か前記マイクロプロセッサに固有のもので
あることを証明する証明を送信する証明部と、前記第2
の通信路を介して前記プログラム配布装置から、実行プ
ログラムを受信する受信部とを備え、 前記プログラム配置装置は、 前記クライアント装置との間に第1の通信路を設定する
第1通信路設定部と、 前記第1の通信路を介して前記クライアント装置を使用
するユーザの認証を行うユーザ認証部と、 前記第1の通信路上に、クライアント装置が内蔵するマ
イクロプロセッサに直接連絡する第2の通信路をさらに
設定する第2通信路設定部と、 前記クライアント装置に配布すべき実行プログラムを暗
号化して暗号化プログラムを作成する暗号化処理部と、 前記暗号化したプログラムを前記第2の通信路を介して
クライアント装置のマイクロプロセッサに直接送信する
配布送信部とを備えることを特徴とするプログラム配布
システム。 - 【請求項17】 固有の秘密鍵と、この秘密鍵に対応す
る固有の公開鍵とをあらかじめ有するマイクロプロセッ
サを内蔵するコンピュータから、プログラム配布装置
に、ネットワークを介して第1の通信路を設定するステ
ップと、 前記第1の通信路上に、前記マイクロプロセ
ッサからプログラム配布装置に直接連絡する第2の通信
路をさらに設定するステップと、 前記第2の通信路を介して、前記マイクロプロセッサか
ら前記プログラム配布装置に、前記固有の公開鍵を送信
するステップと、 前記ネットワークを介して送信された公開鍵を、プログ
ラム配布装置で受信し、プログラム配布装置で配布すべ
きプログラムを暗号化するステップと、 前記暗号化したプログラムを、前記第2の通信路を介し
て、前記コンピュータのマイクロプロセッサに直接送信
するステップと、 を含むプログラム配布方法。 - 【請求項18】 あらかじめ固有の秘密鍵と、この秘密
鍵に対応する固有の公開鍵とを有するマイクロプロセッ
サで実行される暗号化プログラムのロード方法であっ
て、 前記暗号化プログラムに対して1以上のページからなる
仮想記憶領域を割り当てるステップと、 前記1以上のページに前記暗号化プログラムを暗号化さ
れたままの状態で書き込むステップと、 前記書き込んだページに対応するページテーブルエント
リの暗号化フラグをセットするステップとを含む暗号化
プログラムのロード方法。 - 【請求項19】 前記1以上のページのいずれかのペー
ジに書き込まれた暗号化プログラムが前記マイクロプロ
セッサに読み込まれ、前記秘密鍵で復号化されて実行さ
れた場合に、前記読み込まれたページに対応するページ
テープルエントリの暗号化フラグをリセットするステッ
プと、 前記暗号化フラグのリセットに応じて、前記読み込まれ
たページの内容をクリアして、このページを開放するス
テップとをさらに含むことを特徴とする請求項18に記
載のプログラムロード方法。 - 【請求項20】 コンピュータシステムのメモリに読み
込まれて、前記コンピュータシステムが内蔵するマイク
ロプロセッサによって実行されるファイルを記録したコ
ンピュータ読み取り可能な記録媒体であって、 あらかじめ所定の暗号化鍵で暗号化された実行ファイル
を記録し、外部のプログラムへの直接の参照を含まない
1以上の第1プログラム領域と、 外部のプログラムへの直接の参照を含む1以上の第2プ
ログラム領域とを有しうそ、前記第2プログラム領域
は、外部のプログラムモジュールへのジャンプ命令を並
べたテーブルを平文の状態で記録し、これにより参照先
のアドレスに応じてジャンプ先の書き換えを可能にする
ことを特徴とする実行ファイルを記録したコンピュータ
読み取り可能な記録媒体。
Priority Applications (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000035898A JP3801833B2 (ja) | 2000-02-14 | 2000-02-14 | マイクロプロセッサ |
US09/781,158 US6983374B2 (en) | 2000-02-14 | 2001-02-13 | Tamper resistant microprocessor |
US09/781,284 US7270193B2 (en) | 2000-02-14 | 2001-02-13 | Method and system for distributing programs using tamper resistant processor |
KR1020010007301A KR100362219B1 (ko) | 2000-02-14 | 2001-02-14 | 변조방지 프로세서를 이용하여 프로그램을 분배하기 위한방법 및 시스템 |
DE60135695T DE60135695D1 (de) | 2000-02-14 | 2001-02-14 | Betrugssicherer Mikroprozessor |
CNB011030003A CN1189819C (zh) | 2000-02-14 | 2001-02-14 | 抗干预微处理器 |
EP01301240A EP1126355A1 (en) | 2000-02-14 | 2001-02-14 | Method and system for distributing programs using tamper resistant processor |
CNB011045124A CN1220121C (zh) | 2000-02-14 | 2001-02-14 | 程序分发设备、客户设备、程序分发系统和程序分发方法 |
KR10-2001-0007300A KR100375158B1 (ko) | 2000-02-14 | 2001-02-14 | 변조방지 마이크로프로세서 |
EP01301241A EP1126356B1 (en) | 2000-02-14 | 2001-02-14 | Tamper resistant microprocessor |
US11/071,327 US7353404B2 (en) | 2000-02-14 | 2005-03-04 | Tamper resistant microprocessor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000035898A JP3801833B2 (ja) | 2000-02-14 | 2000-02-14 | マイクロプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001230770A true JP2001230770A (ja) | 2001-08-24 |
JP3801833B2 JP3801833B2 (ja) | 2006-07-26 |
Family
ID=18560027
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000035898A Expired - Fee Related JP3801833B2 (ja) | 2000-02-14 | 2000-02-14 | マイクロプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3801833B2 (ja) |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003051819A (ja) * | 2001-08-08 | 2003-02-21 | Toshiba Corp | マイクロプロセッサ |
WO2003104948A1 (ja) * | 2002-06-05 | 2003-12-18 | 富士通株式会社 | メモリ管理ユニット、コード検証装置およびコード復号装置 |
WO2004006075A1 (ja) * | 2002-07-09 | 2004-01-15 | Fujitsu Limited | 開放型汎用耐攻撃cpu及びその応用システム |
JP2005504373A (ja) * | 2001-09-28 | 2005-02-10 | ハイ デンスィティ デバイスィズ アクシエセルスカプ | 大容量記憶装置におけるデータの暗号化/復号化の方法及び装置 |
JP2005519375A (ja) * | 2002-02-28 | 2005-06-30 | マスターカード・ヨーロッパ・エス・ピィ・アール・エル | 金融取引で使用するための認証の仕組みおよび方法 |
US7130955B2 (en) | 2003-09-02 | 2006-10-31 | Kabushiki Kaisha Toshiba | Microprocessor and video/sound processing system |
JP2007515709A (ja) * | 2003-11-26 | 2007-06-14 | インテル コーポレイション | 公的にアクセス可能なストレージからデータ処理マシンの状態に関するプライベートデータへのアクセス |
JP2008512909A (ja) * | 2004-09-10 | 2008-04-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | オン・チップ・ハードウェアをプログラミングするためのセキュアな機構を有する暗号化および復号化のための集積回路チップ |
JP2009112015A (ja) * | 2003-05-23 | 2009-05-21 | Ind Technol Res Inst | 個人認証デバイスとこのシステムおよび方法 |
JP2009124520A (ja) * | 2007-11-16 | 2009-06-04 | Fujitsu Ltd | データ送付方法および電子機器 |
US7603703B2 (en) | 2001-04-12 | 2009-10-13 | International Business Machines Corporation | Method and system for controlled distribution of application code and content data within a computer network |
US7849296B2 (en) | 2002-11-18 | 2010-12-07 | Arm Limited | Monitoring control for monitoring at least two domains of multi-domain processors |
US7853954B2 (en) | 2004-07-07 | 2010-12-14 | Kabushiki Kaisha Toshiba | Method and apparatus for preserving the context of tasks during task switching in a pipeline architecture |
WO2011096073A1 (ja) * | 2010-02-08 | 2011-08-11 | Ogawa Mutsumi | メモリ管理方法 |
US8170205B2 (en) | 2007-12-28 | 2012-05-01 | Lapis Semiconductor Co., Ltd. | Processor apparatus |
JP2012531663A (ja) * | 2009-06-26 | 2012-12-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ・システム中の安全オブジェクトに対するサポート |
JP2013179453A (ja) * | 2012-02-28 | 2013-09-09 | Nippon Telegr & Teleph Corp <Ntt> | 計算機システムおよび計算方法 |
US8713371B2 (en) | 2011-01-28 | 2014-04-29 | Arm Limited | Controlling generation of debug exceptions |
US8954752B2 (en) | 2011-02-23 | 2015-02-10 | International Business Machines Corporation | Building and distributing secure object software |
US9098442B2 (en) | 2009-06-26 | 2015-08-04 | International Business Machines Corporation | Secure object having protected region, integrity tree, and unprotected region |
JP2015170952A (ja) * | 2014-03-06 | 2015-09-28 | キヤノン株式会社 | 暗号化/復号化システム及びその制御方法、並びにプログラム |
US9298894B2 (en) | 2009-06-26 | 2016-03-29 | International Business Machines Corporation | Cache structure for a computer system providing support for secure objects |
US9846789B2 (en) | 2011-09-06 | 2017-12-19 | International Business Machines Corporation | Protecting application programs from malicious software or malware |
US9864853B2 (en) | 2011-02-23 | 2018-01-09 | International Business Machines Corporation | Enhanced security mechanism for authentication of users of a system |
US9954875B2 (en) | 2009-06-26 | 2018-04-24 | International Business Machines Corporation | Protecting from unintentional malware download |
JP2018078610A (ja) * | 2017-12-15 | 2018-05-17 | キヤノン株式会社 | 暗号化/復号化システム及びその制御方法、並びにプログラム |
-
2000
- 2000-02-14 JP JP2000035898A patent/JP3801833B2/ja not_active Expired - Fee Related
Cited By (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7650491B2 (en) | 2001-04-12 | 2010-01-19 | International Business Machines Corporation | Method and system for controlled distribution of application code and content data within a computer network |
US7603703B2 (en) | 2001-04-12 | 2009-10-13 | International Business Machines Corporation | Method and system for controlled distribution of application code and content data within a computer network |
JP2003051819A (ja) * | 2001-08-08 | 2003-02-21 | Toshiba Corp | マイクロプロセッサ |
JP2011141883A (ja) * | 2001-09-28 | 2011-07-21 | High Density Devices As | 大容量記憶装置におけるデータの暗号化/復号化の方法 |
JP2005504373A (ja) * | 2001-09-28 | 2005-02-10 | ハイ デンスィティ デバイスィズ アクシエセルスカプ | 大容量記憶装置におけるデータの暗号化/復号化の方法及び装置 |
JP4734585B2 (ja) * | 2001-09-28 | 2011-07-27 | ハイ デンスィティ デバイスィズ アクシエセルスカプ | 大容量記憶装置におけるデータの暗号化/復号化の方法及び装置 |
JP2005519375A (ja) * | 2002-02-28 | 2005-06-30 | マスターカード・ヨーロッパ・エス・ピィ・アール・エル | 金融取引で使用するための認証の仕組みおよび方法 |
CN1296790C (zh) * | 2002-06-05 | 2007-01-24 | 富士通株式会社 | 存储器管理单元、代码验证装置以及代码译码装置 |
US7908450B2 (en) | 2002-06-05 | 2011-03-15 | Fujitsu Limited | Memory management unit, code verifying apparatus, and code decrypting apparatus |
WO2003104948A1 (ja) * | 2002-06-05 | 2003-12-18 | 富士通株式会社 | メモリ管理ユニット、コード検証装置およびコード復号装置 |
CN100354786C (zh) * | 2002-07-09 | 2007-12-12 | 富士通株式会社 | 开放型通用抗攻击cpu及其应用系统 |
WO2004006075A1 (ja) * | 2002-07-09 | 2004-01-15 | Fujitsu Limited | 開放型汎用耐攻撃cpu及びその応用システム |
US7849296B2 (en) | 2002-11-18 | 2010-12-07 | Arm Limited | Monitoring control for monitoring at least two domains of multi-domain processors |
JP2009112015A (ja) * | 2003-05-23 | 2009-05-21 | Ind Technol Res Inst | 個人認証デバイスとこのシステムおよび方法 |
US7130955B2 (en) | 2003-09-02 | 2006-10-31 | Kabushiki Kaisha Toshiba | Microprocessor and video/sound processing system |
JP2011076632A (ja) * | 2003-11-26 | 2011-04-14 | Intel Corp | 公的にアクセス可能なストレージからデータ処理マシンの状態に関するプライベートデータへのアクセス |
JP2007515709A (ja) * | 2003-11-26 | 2007-06-14 | インテル コーポレイション | 公的にアクセス可能なストレージからデータ処理マシンの状態に関するプライベートデータへのアクセス |
US9348767B2 (en) | 2003-11-26 | 2016-05-24 | Intel Corporation | Accessing private data about the state of a data processing machine from storage that is publicly accessible |
US9087000B2 (en) | 2003-11-26 | 2015-07-21 | Intel Corporation | Accessing private data about the state of a data processing machine from storage that is publicly accessible |
US7853954B2 (en) | 2004-07-07 | 2010-12-14 | Kabushiki Kaisha Toshiba | Method and apparatus for preserving the context of tasks during task switching in a pipeline architecture |
US8499306B2 (en) | 2004-07-07 | 2013-07-30 | Kabushiki Kaisha Toshiba | Microprocessor configured to control a process in accordance with a request based on task identification information and the register information identifier |
JP2008512909A (ja) * | 2004-09-10 | 2008-04-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | オン・チップ・ハードウェアをプログラミングするためのセキュアな機構を有する暗号化および復号化のための集積回路チップ |
JP2009124520A (ja) * | 2007-11-16 | 2009-06-04 | Fujitsu Ltd | データ送付方法および電子機器 |
US8170205B2 (en) | 2007-12-28 | 2012-05-01 | Lapis Semiconductor Co., Ltd. | Processor apparatus |
US9471513B2 (en) | 2009-06-26 | 2016-10-18 | International Business Machines Corporation | Cache structure for a computer system providing support for secure objects |
US10785240B2 (en) | 2009-06-26 | 2020-09-22 | International Business Machines Corporation | Protecting from unintentional malware download |
US9372967B2 (en) | 2009-06-26 | 2016-06-21 | International Business Machines Corporation | Support for secure objects in a computer system |
US8819446B2 (en) | 2009-06-26 | 2014-08-26 | International Business Machines Corporation | Support for secure objects in a computer system |
JP2012531663A (ja) * | 2009-06-26 | 2012-12-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ・システム中の安全オブジェクトに対するサポート |
US10362045B2 (en) | 2009-06-26 | 2019-07-23 | International Business Machines Corporation | Protecting from unintentional malware download |
US9098442B2 (en) | 2009-06-26 | 2015-08-04 | International Business Machines Corporation | Secure object having protected region, integrity tree, and unprotected region |
US10007793B2 (en) | 2009-06-26 | 2018-06-26 | International Business Machines Corporation | Secure object having protected region, integrity tree, and unprotected region |
US9298894B2 (en) | 2009-06-26 | 2016-03-29 | International Business Machines Corporation | Cache structure for a computer system providing support for secure objects |
US9690717B2 (en) | 2009-06-26 | 2017-06-27 | International Business Machines Corporation | Secure object having protected region, integrity tree, and unprotected region |
US9954875B2 (en) | 2009-06-26 | 2018-04-24 | International Business Machines Corporation | Protecting from unintentional malware download |
US9875193B2 (en) | 2009-06-26 | 2018-01-23 | International Business Machines Corporation | Cache structure for a computer system providing support for secure objects |
US9727709B2 (en) | 2009-06-26 | 2017-08-08 | International Business Machines Corporation | Support for secure objects in a computer system |
WO2011096073A1 (ja) * | 2010-02-08 | 2011-08-11 | Ogawa Mutsumi | メモリ管理方法 |
US8812872B2 (en) | 2010-02-08 | 2014-08-19 | Hypertech Co., Ltd. | Memory managment method |
US8713371B2 (en) | 2011-01-28 | 2014-04-29 | Arm Limited | Controlling generation of debug exceptions |
US9864853B2 (en) | 2011-02-23 | 2018-01-09 | International Business Machines Corporation | Enhanced security mechanism for authentication of users of a system |
US8954752B2 (en) | 2011-02-23 | 2015-02-10 | International Business Machines Corporation | Building and distributing secure object software |
US9846789B2 (en) | 2011-09-06 | 2017-12-19 | International Business Machines Corporation | Protecting application programs from malicious software or malware |
US10007808B2 (en) | 2011-09-06 | 2018-06-26 | International Business Machines Corporation | Protecting application programs from malicious software or malware |
JP2013179453A (ja) * | 2012-02-28 | 2013-09-09 | Nippon Telegr & Teleph Corp <Ntt> | 計算機システムおよび計算方法 |
JP2015170952A (ja) * | 2014-03-06 | 2015-09-28 | キヤノン株式会社 | 暗号化/復号化システム及びその制御方法、並びにプログラム |
JP2018078610A (ja) * | 2017-12-15 | 2018-05-17 | キヤノン株式会社 | 暗号化/復号化システム及びその制御方法、並びにプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP3801833B2 (ja) | 2006-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3801833B2 (ja) | マイクロプロセッサ | |
US10303901B2 (en) | Secure processor and a program for a secure processor | |
JP3741357B2 (ja) | データの保存方法およびシステム並びにデータ保存処理用記録媒体 | |
JP4226760B2 (ja) | マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法 | |
US8452988B2 (en) | Secure data storage for protecting digital content | |
US7657760B2 (en) | Method for sharing encrypted data region among processes in tamper resistant processor | |
KR101457355B1 (ko) | 보안 애플리케이션 실행을 제공하는 방법 및 장치 | |
US7805375B2 (en) | Digital license migration from first platform to second platform | |
US8788840B2 (en) | Secure processor | |
JP4235691B2 (ja) | 自己保護文書システム | |
JP4680564B2 (ja) | 携帯用メディア上のコンテンツの暗号化およびデータ保護 | |
JP4073913B2 (ja) | 開放型汎用耐攻撃cpu及びその応用システム | |
US7353404B2 (en) | Tamper resistant microprocessor | |
US7107459B2 (en) | Secure CPU and memory management unit with cryptographic extensions | |
KR100188505B1 (ko) | 화일 액세스 보호방법 및 컴퓨터 액세스 가능 메모리 매체 | |
US20050060568A1 (en) | Controlling access to data | |
US20020083318A1 (en) | Method and system for software integrity control using secure hardware assist | |
JP2000293439A (ja) | コンテンツ利用制御システム、コンテンツ利用装置およびその利用方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
US20130283396A1 (en) | System and method for limiting execution of software to authorized users | |
JP2001209726A (ja) | ライセンスサーバ、著作権者システム、利用者システム、システム、記録媒体およびコンテンツ利用制御方法 | |
US8479014B1 (en) | Symmetric key based secure microprocessor and its applications | |
JP2007310601A (ja) | マイクロコンピュータおよびそのソフトウェア保護方法 | |
KR20040058278A (ko) | 비인가된 사용에 대한 정보의 보호방법 및 보호장치 | |
KR100716719B1 (ko) | 디.알.엠 기반의 패키지 컨텐츠 제공 방법 및 그 장치 | |
KR20060117771A (ko) | Drm 기반의 컨텐츠 재생 서비스 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050420 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050510 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050711 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060124 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060324 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060418 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060426 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090512 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100512 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110512 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110512 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120512 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120512 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130512 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |