(57)【特許請求の範囲】
【請求項１】
メモリ装置に与えるアドレスデータを出力するアドレスバスと、
該アドレスバスが出力するアドレスデータで特定される該メモリ装置の記憶位置に対する書き込みデータをスクランブルして秘匿データを得るスクランブル部と、
該スクランブル部が得た秘匿データを出力するデータバスと、
を有し、
該スクランブル部は、
該アドレスデータと第１スクランブル鍵データとのビット毎の排他的論理和を換字変換して第１マスクデータを求め、該第１マスクデータと該書き込みデータとのビット毎の排他的論理和を求めることによって、該書き込みデータをスクランブルして第１スクランブルデータを得る第１スクランブル手段と、
該第１スクランブルデータを一対一で換字変換する第１変換手段と、
該アドレスデータと第２スクランブル鍵データとのビット毎の排他的論理和を換字変換して第２マスクデータを求め、該第２マスクデータと該第１変換手段による該第１スクランブルデータの変換後のデータとのビット毎の排他的論理和を求めることによって、該第１変換手段による該第１スクランブルデータの変換後のデータをスクランブルして第２スクランブルデータを得る第２スクランブル手段と、
を有しており、該第２スクランブルデータを該秘匿データとする、
ことを特徴とするデータ処理装置。
【請求項２】
該アドレスデータで特定される該メモリ装置の記憶位置から読み出される該秘匿データを、該第２マスクデータとのビット毎の排他的論理和を求めることによってデスクランブルして中間デスクランブルデータを得る第１デスクランブル手段と、
該中間デスクランブルデータに対し、該第１変換手段による換字変換の逆変換を行う逆変換手段と、
該第１マスクデータとのビット毎の排他的論理和を求めることによって、該逆変換手段による該中間デスクランブルデータの逆変換後のデータをデスクランブルして該書き込みデータを得る第２デスクランブル手段と、
を更に有することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
入力されたデータを一対一で換字変換し、該換字変換の順変換と逆変換とが同型である同型換字変換を、該第１変換手段での換字変換と該逆変換手段での逆変換とに共用することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
該スクランブル部は、対象データをスクランブルする少なくとも１つの拡張スクランブル部を更に有しており、
該拡張スクランブル部は、
該対象データを一対一で換字変換する追加変換手段と、
該アドレスデータに対応する追加マスクデータとのビット毎の排他的論理和を求めることによって、該追加変換手段による該対象データの変換後のデータをスクランブルして追加スクランブルデータを得る追加スクランブル手段と、
をそれぞれ有し、
該拡張スクランブル部には、対象データとして、該第２スクランブルデータが入力され、
該スクランブル部は、該第２スクランブルデータに代えて、該拡張スクランブル部が得た追加スクランブルデータを該秘匿データとする、
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
請求項１に記載のデータ処理装置によって該メモリ装置に記憶された該秘匿データをデスクランブルして該書き込みデータを得るデスクランブル装置であって、
メモリ装置に与えるアドレスデータを出力するアドレスバスと、
該アドレスデータで特定される該メモリ装置の記憶位置から読み出される該秘匿データを、該第２マスクデータとのビット毎の排他的論理和を求めることによってデスクランブルして中間デスクランブルデータを得る第１デスクランブル手段と、
該中間デスクランブルデータに対し、該第１変換手段による換字変換の逆変換を行う逆変換手段と、
該第１マスクデータとのビット毎の排他的論理和を求めることによって、該逆変換手段による該中間デスクランブルデータの逆変換後のデータをデスクランブルして該書き込みデータを得る第２デスクランブル手段と、
を有することを特徴とするデスクランブル装置。
【請求項６】
アドレスバスが、メモリ装置に与えるアドレスデータを出力するアドレスデータ出力ステップと、
スクランブル部が、該アドレスバスが出力するアドレスデータで特定される該メモリ装置の記憶位置に対する書き込みデータをスクランブルして秘匿データを得るスクランブルステップと、
データバスが、該スクランブル部による該スクランブルステップにより得た秘匿データを出力する秘匿データ出力ステップと、
を有し、
該スクランブルステップは、
第１スクランブル手段が、該アドレスデータと第１スクランブル鍵データとのビット毎の排他的論理和を換字変換して第１マスクデータを求め、該第１マスクデータと該書き込みデータとのビット毎の排他的論理和を求めることによって、該書き込みデータをスクランブルして第１スクランブルデータを得る第１スクランブルステップと、
第１変換手段が、該第１スクランブルデータを一対一で換字変換する第１変換ステップと、
第２スクランブル手段が、該アドレスデータと第２スクランブル鍵データとのビット毎の排他的論理和を換字変換して第２マスクデータを求め、該第２マスクデータと該第１変換ステップによる該第１スクランブルデータの変換後のデータとのビット毎の排他的論理和を求めることによって、該第１変換ステップによる該第１スクランブルデータの変換後のデータをスクランブルして第２スクランブルデータを得る第２スクランブルステップと、を有しており、該第２スクランブルデータを該秘匿データとする、
ことを特徴とするデータ処理装置によるデータ処理方法。
【請求項７】
請求項６に記載のデータ処理方法によって該メモリ装置に記憶された該秘匿データをデスクランブルして該書き込みデータを得るデスクランブル方法であって、
アドレスバスが、メモリ装置に与えるアドレスデータを出力するアドレスデータ出力ステップと、
第１デスクランブル手段が、該アドレスデータで特定される該メモリ装置の記憶位置から読み出される該秘匿データを、該第２マスクデータとのビット毎の排他的論理和を求めることによってデスクランブルして中間デスクランブルデータを得る第１デスクランブルステップと、
逆変換手段が、該中間デスクランブルデータに対し、該第１変換ステップによる換字変換の逆変換を行う逆変換ステップと、
第２デスクランブル手段が、該第１マスクデータとのビット毎の排他的論理和を求めることによって、該逆変換ステップによる該中間デスクランブルデータの逆変換後のデータをデスクランブルして該書き込みデータを得る第２デスクランブルステップと、
を有することを特徴とするデスクランブル装置によるデスクランブル方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ装置に格納されるデータを保護する技術に関する。
【背景技術】
【０００２】
携帯電話などの組込機器は、有料コンテンツなどの価値のある資産を備えているため、これを不正に入手する攻撃の対象となっている。その攻撃のひとつに、データプロービングがある。データプロービングは、ＭＰＵ（Micro Processor Unit）チップと外部ＲＡＭ（Random Access Memory）との間の露出したデータバス配線から電気的にデータを読み出すという攻撃である。【０００３】
このデータプロービングによる情報漏洩を防ぐ手法として、データスクランブルがある。データスクランブルは、データを、ＭＰＵチップから外に出る前にスクランブルデータに変換することで、当該データの内容を攻撃者から秘匿するというものである。【０００４】
ここで図１について説明する。図１には、従来のデータスクランブルの一例が図解されている。
図１において、データ処理装置であるＭＰＵチップ１はどちらもｗ−ｂｉｔのビット幅であるアドレスバス１１とデータバス１２とを有しており、メモリ装置である外部ＲＡＭ２にそれぞれ接続されている。更に、ＭＰＵチップ１は、プロセッサ１００とスクランブル部２００とを内部に有している。【０００５】
アドレスバス１１は、プロセッサ１００が出力する、外部ＲＡＭ２に与えるアドレスデータを出力する。
スクランブル部２００は、プロセッサ１００が出力する書き込みデータであって、アドレスバス１１が出力するアドレスデータで特定される外部ＲＡＭ２の記憶位置に対する当該書き込みデータをスクランブルして秘匿データを得る。【０００６】
データバス１２は、スクランブル部２００が得た秘匿データを出力する。
図１に提示したスクランブル部２００の構成について更に説明する。
スクランブル部２００は、鍵レジスタ２０１、排他的論理和演算回路（以下、「ＸＯＲ回路」と称することとする）２０２、換字関数処理部２０３、及びＸＯＲ回路２０４を備えて構成されている。【０００７】
鍵レジスタ２０１は、ｗ−ｂｉｔのスクランブル鍵データＫが格納されているレジスタである。
ＸＯＲ回路２０２は、アドレスバス１１が出力するものと同一のアドレスデータと、鍵レジスタ２０１に格納されているスクランブル鍵データとのビット毎の排他的論理和を求める。【０００８】
換字関数処理部２０３は、ＸＯＲ回路２０２から出力されるｗ−ｂｉｔのデータの入力を、ｗ−ｂｉｔのビットで表現されるいずれかのデータに一意に対応付けて出力する換字変換処理を行う。【０００９】
ＸＯＲ回路２０４は、スクランブル動作時には、プロセッサ１００が出力する書き込みデータと、換字関数処理部２０３から出力される、アドレスデータに対応するデータ（マスク値）とのビット毎の排他的論理和を求める。このＸＯＲ回路２０４から出力されるデータが、書き込みデータをスクランブルした秘匿データであり、データバス１２から外部ＲＡＭ２へと出力される。この秘匿データは、外部ＲＡＭ２における、アドレスバス１１が出力するアドレスデータで特定される記憶位置に記憶される。【００１０】
ＭＰＵチップ１がこの秘匿データを外部ＲＡＭ２から読み出す場合には、スクランブル部２００はデスクランブル動作を行う。
ＭＰＵチップ１が秘匿データを外部ＲＡＭ２から読み出したときにアドレスバス１１が出力しているアドレスデータは、この秘匿データを書き込んだときのものと同一である。従って、鍵レジスタ２０１のスクランブル鍵データＫと換字関数処理部２０３での換字変換Ｆとの両者がスクランブル動作時のものと同一であれば、秘匿データ読み出し時に換字関数処理部２０３から出力されるマスク値は、秘匿データ書き込み時のものと同一となる。【００１１】
ＸＯＲ回路２０４は、デスクランブル動作時には、外部ＲＡＭ２から読み出した秘匿データと、換字関数処理部２０３から出力されるマスク値とのビット毎の排他的論理和を求める。ここで、秘匿データの書き込み時と読み出し時とでマスク値が同一であるので、秘匿データとマスク値との排他的論理和は元の書き込みデータとなる。こうして秘匿データのデスクランブルが完了し、得られた元の書き込みデータはプロセッサ１００に読み込まれる。【００１２】
このように、図１に提示した構成においては、ＭＰＵチップ１内部のスクランブル部２００が外部ＲＡＭ２への書き込みデータのスクランブルを行う。つまり、プロセッサ１００とスクランブル部２００との配線はＭＰＵチップ１外部に露出していないので、スクランブルが施される前の書き込みデータをデータプロービングにより読み出すことはできない。【００１３】
また、この図１に提示した構成では、一般に、データ処理を行うプロセッサ１００は、書き込みデータを用意する前に、アドレスバス１１にアドレスデータを用意することができるという特性を利用して、マスク値の事前計算を行っている。このようにして書き込みデータに対する処理をなるべく少なくすることで、プロセッサ１００と外部ＲＡＭ２との間で許容される遅延時間内にスクランブル処理を完了するという、高速応答性能を実現している。【００１４】
一般に、メモリ装置への書き込みデータのスクランブルにおいて、マスク値を共通鍵ブロック暗号などで生成すれば安全性を向上させることができ、処理方式が公開されたとしても安全性が保たれる。しかしながら、共通鍵ブロック暗号は一般に処理が複雑であるため、共通鍵ブロック暗号を用いると、書き込みデータを伝送するデータバス１２に求められる条件である、高速応答性能を満たすことが困難になる。【００１５】
一方、図１に提示した構成を採用するスクランブルは、スクランブル部２００をＭＰＵチップ１内に埋め込んだことで、攻撃者がマスク値を生成するアルゴリズムを知ることが困難であることを安全性の担保としている。この構成を採用するスクランブルは、スクランブルのアルゴリズムが公開されてもなお安全である暗号処理を採り入れる場合よりも計算量が少ないので、高速に処理することができるという特徴を有している。【００１６】
また、図１に提示した構成におけるデータスクランブル部２００は、プロセッサ１００から出力される書き込みデータとアドレスデータとの両方の情報を使ってスクランブルデータ（秘匿データ）を生成する。このように、アドレスデータにも依存したデータスクランブルアルゴリズムとすることで、例え書き込みデータが同一の場合であっても、外部ＲＡＭ２に書き込まれるスクランブルデータがアドレスデータにより異なるものとなるので、解析耐性が向上する。【００１７】
なお、この他の背景技術として、メモリユニット側でもデータのスクランブルを行う技術や、暗号化したデータを更に暗号化する二重暗号化の技術が知られている。
【特許文献１】特開２００１−１０９６６７号公報
【特許文献２】特開２００２−３２８８４４号公報
【特許文献３】特開２００４−１１０４０８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
前述したように、スクランブル部２００をＭＰＵチップ１内に備えることにより、データプロービングからデータを秘匿することが可能となった。しかしながら、攻撃者がスクランブルアルゴリズムを解析するという危険性は依然として残っている。スクランブルの安全性を確保するには、スクランブルアルゴリズムの安全性を評価する必要がある。【００１９】
図１のスクランブル部２００で採用されているような、スクランブル鍵データを使用してデータスクランブルを行うアルゴリズムである、鍵付きスクランブルアルゴリズムの安全性を評価する項目のひとつに、既知平文攻撃に基づく鍵全数探索攻撃への耐性がある。【００２０】
この鍵全数探索攻撃では、スクランブル鍵データ、書き込みデータ、スクランブルデータ、及びアドレスデータと、スクランブルアルゴリズムを実装したハードウェアとの組のうち、スクランブル鍵データ以外のものが攻撃者に与えられる。攻撃者は、この場合に、スクランブル鍵データを任意に設定してスクランブルを実行する。そして、この実行を、与えられた組で使われたスクランブル鍵データを特定するまで繰り返すというものである。【００２１】
この鍵全数探索攻撃への耐性は、スクランブル鍵データの鍵長が長いほど高くなる。また、この鍵全数探索攻撃に要する計算量が現実的な時間内では計算不可能となる値とすることで安全性が確保される。【００２２】
図１のスクランブル部２００で採用されている鍵付きスクランブルアルゴリズムは、スクランブル鍵データの鍵長（ビット長）を、プロセッサ１００のワード長以上に長くすることができない。【００２３】
例えば、現在の多くの組込機器向けプロセッサのワード長は３２ｂｉｔ以下である。ここで、ワード長を３２ｂｉｔとした場合における、図１のスクランブル部２００への鍵全数探索攻撃を考える。仮に、１秒間当たり１０００回のスクランブルの実行が可能であるとすると、５０日でスクランブル鍵データを探索できることになる。【００２４】
また、鍵付きスクランブルアルゴリズムへの攻撃手法として、選択平文攻撃というものが知られている。この攻撃では、攻撃者は、スクランブル鍵データを知ることはできないものの、データとアドレスデータとを自由に設定してスクランブルデータを手に入れることができる場合を想定する。つまり、この攻撃は、攻撃者の能力を、鍵全数探索攻撃よりも高く仮定したものである。【００２５】
図１のスクランブル部２００では、攻撃者が、まず、全てのアドレスデータに対して書き込みデータとスクランブルデータとの対を作成する。そして、スクランブルデータと書き込みデータとの排他的論理和を計算すると、全てのスクランブルデータに対するマスク値を知ることができる。すると、攻撃者は、スクランブル鍵データを知らないまま、得られたマスク値を使用して任意のアドレスのスクランブルデータをデータへとデスクランブルすることができるようになってしまう。【００２６】
本発明は上述した問題に鑑みてなされたものであり、その解決しようとする課題は、選択平文攻撃に耐性を有するデータスクランブル方式を提供することである。
【課題を解決するための手段】
【００２７】
本明細書で開示するデータ処理装置は、アドレスバスと、スクランブル部と、データバスとを有するものである。このうちで、アドレスバスは、メモリ装置に与えるアドレスデータを出力するものである。スクランブル部は、アドレスバスが出力するアドレスデータで特定されるメモリ装置の記憶位置に対する書き込みデータをスクランブルして秘匿データを得るものである。データバスは、スクランブル部が得た秘匿データを出力するものである。【００２８】
なお、スクランブル部は、第１スクランブル手段と、第１変換手段と、第２スクランブル手段と、を有している。このうちで、第１スクランブル手段は、アドレスデータに対応する第１マスクデータとのビット毎の排他的論理和を求めることによって、書き込みデータをスクランブルして第１スクランブルデータを得るものである。第１変換手段は、この第１スクランブルデータを一対一で換字変換するものである。第２スクランブル手段は、アドレスデータに対応する第２マスクデータとのビット毎の排他的論理和を求めることによって、第１変換手段による第１マスクデータの変換後のデータをスクランブルして第２スクランブルデータを得るものである。なお、スクランブル部は、この第２スクランブルデータを秘匿データとする。【００２９】
この装置では、第１スクランブル手段がスクランブルした書き込みデータを第１変換手段が換字変換した上で、第２スクランブル手段が更にスクランブルを行う。この第１変換手段により、書き込みデータに対する処理が、マスク値との単純な排他的論理和になってしまうことを防止する。つまり、この装置の構成によれば、スクランブル部の入出力における書き込みデータと秘匿データとの関係が、アドレスデータのみならず、書き込みデータにも依存する。従って、この装置で行うデータスクランブルは、選択平文攻撃に耐性を有している。【００３０】
また、この装置では、書き込みデータに対するマスク値を求めるための手段として、第１スクランブル手段と第２スクランブル手段との２つのスクランブル手段を有している。ここで、アドレスデータと第１スクランブル鍵データとから第１マスクデータを求めるようにし、アドレスデータと第２スクランブル鍵データとから第２マスクデータを求めるようにすることで、スクランブル鍵データ全体としての鍵長を従来のものよりも長くすることができる。このようにすれば、鍵全数探索攻撃への耐性が、前述した従来のものよりも向上する。【００３１】
また、この装置における第１スクランブル手段及び第２スクランブル手段では、アドレスデータからマスク値を得るための計算を事前に行っておくことができる。従って、この装置は、変換手段を高速とすれば、スクランブル動作に高速応答性能を実現させることが可能である。【００３２】
なお、本明細書では、このデータ処理装置によってメモリ装置に記憶された秘匿データをデスクランブルして元の書き込みデータを得るデスクランブル装置についても開示している。このデスクランブル装置は、アドレスバスと、第１デスクランブル手段と、逆変換手段と、第２デスクランブル手段とを有するものである。【００３３】
このうちで、アドレスバスは、メモリ装置に与えるアドレスデータを出力するものである。第１デスクランブル手段は、アドレスデータで特定されるメモリ装置の記憶位置から読み出される秘匿データを、前述した第２マスクデータとのビット毎の排他的論理和を求めることによってデスクランブルして中間デスクランブルデータを得るものである。逆変換手段は、この中間デスクランブルデータに対し、前述した第１変換手段による換字変換の逆変換を行うものである。第２デスクランブル手段は、第１マスクデータとのビット毎の排他的論理和を求めることによって、逆変換手段による中間デスクランブルデータの逆変換後のデータをデスクランブルして、元の書き込みデータを得るものである。【００３４】
このデスクランブル装置によれば、前述したデータ処理装置がメモリ装置に記憶させた秘匿データを読み出しデスクランブルして、元の書き込みデータを得ることができる。また、このデスクランブル装置の構成要素を、前述したデータ処理装置が有するように構成して、データ処理装置自身で秘匿データから元の書き込みデータを得られるようにすることは、もちろん可能である。【００３５】
また、本明細書では、上述したデータ処理装置が行うデータ処理方法、及び、上述したデスクランブル装置が行うデスクランブル方法についても開示している。
【発明の効果】
【００３６】
本明細書で開示する装置及び方法によれば、選択平文攻撃に耐性を有するデータスクランブル方式を提供することができるという効果を奏する。
【図面の簡単な説明】
【００３７】
【図１】従来のデータスクランブルの一例が図解されている図である。
【図２】データ処理装置の全体構成図である。
【図３】図２に提示したスクランブル部の構成の第１の例が図解されている図である。
【図４】図２に提示したスクランブル部の構成の第２の例が図解されている図である。
【図５】デスクランブル部の構成図である。
【図６Ａ】換字関数及びその逆関数の第１の例である。
【図６Ｂ】換字関数及びその逆関数の第２の例である。
【図７】図２に提示したスクランブル部の構成の第３の例が図解されている図である。
【図８】図２に提示したスクランブル部の構成の第４の例が図解されている図である。
【図９】図２に提示したスクランブル部の構成の第５の例が図解されている図である。
【符号の説明】
【００３８】
１  ＭＰＵチップ
２  外部ＲＡＭ
１１  アドレスバス
１２  データバス
１００  プロセッサ
２００  スクランブル部
２０１、２１１、２２１−１、２２１−２、２２１−ｎ  鍵レジスタ
２０２、２０４、２１２、２１４、
２２１−１、２２１−２、２２４−１、２２４−２、
２２２−ｎ、２２４−ｎ  排他的論理和演算回路
２０３、２１３、２２０、
２２３−１、２２３−２、２３０−１、２３０−２、
３２０、２２３−ｎ、２３０−ｎ  換字関数処理部
２０５、２１５  レジスタ
２０６  基本部
２０６−１  第１基本部
２０６−２  第２基本部
２１６  拡張部
２１６−１  第１拡張部
２１６−２  第２拡張部
３００  デスクランブル部
【発明を実施するための最良の形態】
【００３９】
以下、本発明の実施の形態を図面に基づいて説明する。
図２には、データ処理装置であるＭＰＵチップ１の全体構成が図解されている。
図２において、ＭＰＵチップ１はどちらもｗ−ｂｉｔのビット幅であるアドレスバス１１とデータバス１２とを有しており、メモリ装置である外部ＲＡＭ２にそれぞれ接続されている。更に、ＭＰＵチップ１は、プロセッサ１００とスクランブル部２００とを内部に有している。【００４０】
アドレスバス１１は、プロセッサ１００が出力する、外部ＲＡＭ２に与えるアドレスデータを出力する。
スクランブル部２００は、プロセッサ１００が出力する書き込みデータであって、アドレスバス１１が出力するアドレスデータで特定される外部ＲＡＭ２の記憶位置に対する当該書き込みデータをスクランブルして秘匿データを得る。【００４１】
データバス１２は、スクランブル部２００が得た秘匿データを出力する。
図２に提示したスクランブル部２００の構成について更に説明する。図３には、このスクランブル部２００の構成の第１の例が図解されている。【００４２】
図３において、スクランブル部２００は、鍵レジスタ２０１及び２１１、ＸＯＲ回路２０２、２０４、２１２、及び２１４、並びに換字関数処理部２０３及び２１３を備えて構成されている。【００４３】
鍵レジスタ２０１は、ｗ−ｂｉｔのスクランブル鍵データＫ０が格納されているレジスタである。この鍵レジスタ２０１に格納しておくスクランブル鍵データＫ０（以降の説明では、この鍵データＫ０を「第１スクランブル鍵データ」と称する場合もある）は変更可能である。【００４４】
ＸＯＲ回路２０２は、アドレスバス１１が出力するものと同一のアドレスデータと、鍵レジスタ２０１に格納されている第１スクランブル鍵データとのビット毎の排他的論理和を求める。【００４５】
換字関数処理部２０３は、ＸＯＲ回路２０２から出力されるｗ−ｂｉｔのデータの入力を、ｗ−ｂｉｔのビットで表現されるいずれかのデータに一意に対応付けて出力する換字変換処理を行う。この換字関数処理部２０３で行われる換字変換Ｆ０は、入出力の関係を非線形にするのが一般的である。なお、換字関数処理部２０３は、基本論理素子（論理積回路、論理和回路、否定回路等）を組み合わせて構成する。但し、処理速度が許容されるのであれば、例えば、記憶装置に記憶させておいた、入出力の対応関係を予め定義しておいたテーブルを参照して換字変換を行うようにすることもできる。なお、以降の説明では、この換字関数処理部２０３から出力されるデータである、アドレスデータに対応する当該データを、「第１マスクデータ」と称することとする。【００４６】
ＸＯＲ回路２０４は、プロセッサ１００が出力する書き込みデータと、換字関数処理部２０３から出力される第１マスクデータとのビット毎の排他的論理和を求めることによって、当該書き込みデータのスクランブルを行う。【００４７】
以降の説明では、鍵レジスタ２０１、ＸＯＲ回路２０２及び２０４、並びに換字関数処理部２０３により行われるスクランブルを「第１スクランブル」と称することとする。また、この第１スクランブルによって得られるデータを「第１スクランブルデータ」と称することとする。【００４８】
鍵レジスタ２１１は、ｗ−ｂｉｔのスクランブル鍵データＫ１が格納されているレジスタである。この鍵レジスタ２１１に格納しておくスクランブル鍵データＫ１（以降の説明では、この鍵データＫ１を「第２クランブル鍵データ」と称する場合もある）も変更可能である。【００４９】
ＸＯＲ回路２１２は、アドレスバス１１が出力するものと同一のアドレスデータと、鍵レジスタ２１１に格納されている第２スクランブル鍵データとのビット毎の排他的論理和を求める。【００５０】
換字関数処理部２１３は、ＸＯＲ回路２１２から出力されるｗ−ｂｉｔのデータの入力を、ｗ−ｂｉｔのビットで表現されるいずれかのデータに一意に対応付けて出力する換字変換処理を行う。この換字関数処理部２１３で行われる換字変換Ｆ１も、換字変換Ｆ０と同様、入出力の関係を非線形にするのが一般的である。この換字関数処理部２１３も、基本論理素子を組み合わせて構成するが、処理速度が許容されるのであれば、例えば、記憶装置に記憶させておいた、入出力の対応関係を予め定義しておいたテーブルを参照して換字変換を行うようにすることもできる。なお、以降の説明では、この換字関数処理部２１３から出力されるデータである、アドレスデータに対応する当該データを、「第２マスクデータ」と称することとする。【００５１】
ＸＯＲ回路２１４は、第１スクランブルによって得られた第１スクランブルデータと、換字関数処理部２１３から出力される第２マスクデータとのビット毎の排他的論理和を求めることによって、当該第１スクランブルデータのスクランブルを行う。【００５２】
以降の説明では、鍵レジスタ２１１、ＸＯＲ回路２１２及び２１４、並びに換字関数処理部２１３により行われるスクランブルを「第２スクランブル」と称することとする。また、この第２スクランブルによって得られるデータを「第２スクランブルデータ」と称することとする。【００５３】
図３の構成では、この第２スクランブルによって得られる第２スクランブルデータが、プロセッサ１００が出力する書き込みデータをスクランブルした秘匿データであり、データバス１２から外部ＲＡＭ２へと出力される。この秘匿データは、外部ＲＡＭ２における、アドレスバス１１が出力するアドレスデータで特定される記憶位置に記憶される。【００５４】
このように、図３に提示したスクランブル部２００の構成は、図１に提示した従来構成を縦列に２段接続したものである。従って、この構成により得られた秘匿データをデスクランブルして元の書き込みデータを得るには、図１に提示した従来構成でのデスクランブルを、図３とは逆の順序で行えばよい。【００５５】
図３の構成では、どちらもｗ−ｂｉｔの鍵長である第１スクランブル鍵データ及び第２スクランブル鍵データを用いて書き込みデータのスクランブルが行われる。よって、スクランブル部２００全体としては、書き込みデータのスクランブルに使用されるスクランブル鍵データの鍵長は見かけ上２倍（２ｗ−ｂｉｔ）となるが、図３の構成はそれと等価な図１の構成へ変換が可能であるため、図１と安全性は変わらない。【００５６】
次に図４について説明する。図４は、図２に提示したスクランブル部２００の構成の第２の例が図解されている。
図４において、図３に提示したものと同一の構成要素には同一の符号を付している。これらの構成要素については説明を一部省略する。【００５７】
この図４に提示した構成は、図３に提示した構成の第１の例とは、第１スクランブルによって得られた第１スクランブルデータを一対一で換字変換する換字関数処理部２２０が追加されている点が異なっている。また、この図４に提示した構成における第２スクランブルでは、換字関数処理部２２０による第１スクランブルデータの変換後のデータを、第２マスクデータとのビット毎の排他的論理和をＸＯＲ回路２１４が求めることによってスクランブルして第２スクランブルデータを得る。そして、この第２スクランブルデータが、プロセッサ１００が出力する書き込みデータをスクランブルした秘匿データとなる。【００５８】
換字関数処理部２２０は、ｗ−ｂｉｔの第１スクランブルデータの入力を、ｗ−ｂｉｔのビットで表現されるいずれかのデータに一対一に対応付けて出力する換字変換処理を行う。この換字関数処理部２２０で行われる換字変換Ｇも、換字変換Ｆ０やＦ１と同様、入出力の関係を非線形にするのが一般的である。この換字関数処理部２２０は、基本論理素子を組み合わせて構成するが、処理速度が許容されるのであれば、例えば、記憶装置に記憶させておいた、入出力の対応関係を予め定義しておいたテーブルを参照して換字変換を行うようにすることもできる。但し、この換字関数処理部２２０は、外部ＲＡＭ２へ書き込むデータの換字変換を行うので、変換処理が高速であることが好ましい。【００５９】
この図４に提示した構成では、第１スクランブルでスクランブルした書き込みデータ（すなわち第１スクランブルデータ）を換字関数処理部２２０が換字変換した上で、第２スクランブルが更にスクランブルを行う。こうすることで、書き込みデータに対する処理がマスク値との単純な排他的論理和になってしまうことが防止される。つまり、この図４に提示した構成によれば、スクランブル部２００の入出力における書き込みデータと秘匿データとの関係が、アドレスデータのみならず、書き込みデータにも依存する。従って、図４に提示した構成を有するスクランブル部２００が行うデータスクランブルは、選択平文攻撃に耐性を有している。また、換字関数処理部２２０の入出力がスクランブル部から外に露出しないことで、換字関数処理部２２０に対する攻撃が防止される。つまり、換字関数処理部２２０を２０４の左側もしくは２１４の右側に設置した場合には、換字関数処理部２２０に対する単純な差分攻撃に脆弱な構成となる。よって、図４に提示した構成では、換字関数処理部２２０を、２０４と２１４の間に設置する必要がある。【００６０】
更に、この図４に提示した構成では、スクランブル部２００全体として、書き込みデータのスクランブルに使用されるスクランブル鍵データの鍵長が２倍（２ｗ−ｂｉｔ）となっている。従って、鍵全数探索攻撃への耐性が、図１の従来構成よりも向上している。【００６１】
次に、この図４に提示した構成のスクランブル部２００を有するＭＰＵチップ１によって外部ＲＡＭ２に記憶された秘匿データのデスクランブルについて説明する。図５は、この秘匿データをデスクランブルするデスクランブル部の構成図である。【００６２】
図５の構成では、データ処理装置である図２のＭＰＵチップ１内部に、デスクランブル部３００が備えられている。このように構成する代わりに、ＭＰＵチップ１とは別体であるデスクランブル装置に、デスクランブル部３００を備えるように構成することも勿論可能である。【００６３】
図５において、図４に提示したものと同一の構成要素には同一の符号を付している。これらの構成要素については説明を一部省略する。
図５に提示したデスクランブル部３００は、鍵レジスタ２０１及び２１１、ＸＯＲ回路２０２、２０４、２１２、及び２１４、並びに換字関数処理部２０３、２１３、及び３２０を備えて構成されている。なお、アドレスバス１１は、図４に提示したものと同様、プロセッサ１００が出力する、外部ＲＡＭ２に与えるアドレスデータを出力する。【００６４】
ＸＯＲ回路２１４は、アドレスデータで特定される外部ＲＡＭ２の記憶位置から読み出される秘匿データ（すなわち、前述の第２スクランブルデータ）を、前述した第２マスクデータとのビット毎の排他的論理和を求めることによってデスクランブルする。すると、前述した、換字関数処理部２２０による変換後の第１スクランブルデータが得られる。ここでは、このデスクランブルを「第１デスクランブル」と称することとし、この第１デスクランブルにより得られるデータを、「中間デスクランブルデータ」と称することとする。【００６５】
換字関数処理部３２０は、ＸＯＲ回路２１４が得た中間デスクランブルデータに対し、換字関数処理部２２０による換字変換Ｇの逆変換Ｇ-1を行う。すると、前述した第１スクランブルデータが得られる。【００６６】
ここで図６Ａについて説明する。図６Ａは、換字関数Ｇ及びその逆関数Ｇ-1の第１の例である。なお、この図６Ａの換字関数Ｇの例は、入出力のワード長が４−ｂｉｔ（“０”（２進数で「００００」）〜“ｆ”（２進数で「１１１１」）の１６値）のものである。【００６７】
図６Ａには、換字関数Ｇに例えば“８”が入力されると“０”が出力されることが表現されている。また、この換字関数Ｇの出力である“０”が逆関数Ｇ-1に入力されると、換字関数Ｇへの入力であった“８”が出力されることが表現されている。図６Ａにおいて、この換字関数Ｇとその逆関数Ｇ-1との入出力の関係が“０”〜“ｆ”の全ての値で成立していることは、明らかである。また、この換字関数Ｇの入出力関係が一対一対応であることも明らかである。【００６８】
なお、換字関数処理部３２０も、換字関数処理部２２０と同様、基本論理素子を組み合わせて構成する。ここで、処理速度が許容されるのであれば、例えば、記憶装置に記憶させておいた、入出力の対応関係を予め定義しておいたテーブルを参照して換字変換を行うようにすることもできる。但し、この換字関数処理部３２０は、外部ＲＡＭ２から読み出すデータの換字変換を行うので、変換処理が高速であることが好ましいことも、換字関数処理部２２０と同様である。【００６９】
図５の説明に戻る。
ＸＯＲ回路２０４は、前述した第１マスクデータとのビット毎の排他的論理和を求めることによって、換字関数処理部３２０による中間デスクランブルデータの逆変換後のデータをデスクランブルする。すると、スクランブル部２００によるスクランブル動作時にプロセッサ１００が出力していた、元の書き込みデータが得られる。ここでは、このデスクランブルを「第２デスクランブル」と称することとする。【００７０】
図５に構成を提示したデスクランブル部３００によるデスクランブル動作は、以上のようにして行われる。
ここで、図４のスクランブル部２００の構成と図５のデスクランブル部３００の構成とを対比する。すると、ＸＯＲ回路２０４は、どちらの構成においても、入力されたデータ（スクランブル部２００では書き込みデータ、デスクランブル部３００では、中間デスクランブルデータの逆変換後のデータ）と前述した第１マスクデータとの排他的論理和を求めている。従って、スクランブル部２００における第１スクランブルとデスクランブル部３００における第２デスクランブルとでＸＯＲ回路２０４を共用するようにしてもよい。また、ＸＯＲ回路２１４は、どちらの構成においても、入力されたデータ（スクランブル部２００では第１スクランブルデータ、デスクランブル部３００では、外部ＲＡＭ２から読み出された秘匿データ）と前述した第２マスクデータとの排他的論理和を求めている。従って、スクランブル部２００における第２スクランブルとデスクランブル部３００における第１デスクランブルとでＸＯＲ回路２０４を共用するようにしてもよい。このようにしてＸＯＲ回路２０４及び２１４をスクランブル部２００によるスクランブル動作とデスクランブル部３００によるデスクランブル動作とで共用することで、ＭＰＵチップ１の回路規模を削減することができる。【００７１】
更に、鍵レジスタ２０１、ＸＯＲ回路２０２、及び換字関数処理部２０３からなる第１マスクデータを得るための構成は、スクランブル部２００とデスクランブル部３００とで同一である。また、鍵レジスタ２１１、ＸＯＲ回路２１２、及び換字関数処理部２１３からなる第２マスクデータを得るための構成も、スクランブル部２００とデスクランブル部３００とで同一である。従って、スクランブル部２００とデスクランブル部３００とを単一のＭＰＵチップ１内部に共存させる場合には、鍵レジスタ２０１及び２１１、ＸＯＲ回路２０２及び２１２、並びに換字関数処理部２０３及び２１３を共用することができる。これらの構成要素をスクランブル部２００によるスクランブル動作とデスクランブル部３００によるデスクランブル動作とで共用することでも、ＭＰＵチップ１の回路規模を削減することができる。【００７２】
また、換字関数処理部２２０と換字関数処理部３２０とにおいて、入力されたデータを一対一で換字変換し、その換字変換の順変換とその逆変換とが同型であるもの（ここでは「同型換字変換」と称することとする）を共用するようにしてもよい。【００７３】
ここで図６Ｂについて説明する。図６Ｂは、換字関数Ｇ及びその逆関数Ｇ-1の第２の例である。なお、この図６Ｂの換字関数Ｇの例も、図６Ａに提示した第１の例と同様、入出力のワード長が４−ｂｉｔ（“０”（２進数で「００００」）〜“ｆ”（２進数で「１１１１」）の１６値）のものである。【００７４】
図６Ｂには、換字関数Ｇに例えば“０”が入力されると“３”が出力されることが表現されている。また、この換字関数Ｇの出力である“３”が逆関数Ｇ-1に入力されると、換字関数Ｇへの入力であった“０”が出力されることが表現されている。図６Ｂにおいて、この換字関数Ｇとその逆関数Ｇ-1との入出力の関係が“０”〜“ｆ”の全ての値で成立していることは、明らかである。また、この換字関数Ｇの入出力関係が一対一対応であることも明らかである。【００７５】
更に、図６Ｂの例では、換字関数Ｇにおける入力と出力との対応関係が、その逆関数Ｇ-1における対応関係と同一であることも明らかである。従って、この図６Ｂの換字関数は、順変換Ｇとその逆変換Ｇ-1とが同型である。【００７６】
このような同型換字変換を行う関数処理部を構成すれば、これを換字関数処理部２２０と換字関数処理部３２０とで共用することができる。つまり、同型換字変換を行う関数処理部をスクランブル部２００における換字関数処理部２２０とデスクランブル部３００における換字関数処理部３２０とで共用することで、ＭＰＵチップ１の回路規模を削減することができる。【００７７】
次に、図４に提示したスクランブル部２００によるスクランブルの安全性について検討する。
例えば、プロセッサのワード長（すなわち、アドレスデータ及び書き込みデータのビット幅）を３２−ｂｉｔとした場合を考える。このとき、第１スクランブル鍵データ及び第２スクランブル鍵データはどちらも３２−ｂｉｔとすることができる。このとき、スクランブル鍵データ全体の鍵長は６４−ｂｉｔとなる。この場合、前述した鍵付きスクランブルアルゴリズムに対する鍵全数探索攻撃は、仮に、１秒間に１０００回のスクランブル動作が可能であるとすると、５８４，９４２，４１７年を要することになる。また、１秒間に１，０００，０００，０００回のスクランブル動作が可能であるとしても、５８４年を要することとなる。従って、スクランブル鍵データを現実的な時間内に見つけ出すことは非常に困難である。【００７８】
なお、プロセッサ１００にとって、外部ＲＡＭ２へのアクセスは高速である方が好ましい。従って、スクランブル部２００によるスクランブル動作及びデスクランブル部３００によるデスクランブル動作に要する時間は少ない方が好ましい。ここで、換字変換若しくはその逆変換を行う換字関数処理部２０３、２１３、２２０、及び３２０を、例えば以下のように構成すると、この時間の短縮が可能である。【００７９】
すなわち、ワード長を３２−ｂｉｔとする場合に、換字関数処理部２０３、２１３、２２０、及び３２０を、単純に３２−ｂｉｔの換字関数として構成する代わりに、例えば、３２−ｂｉｔの置換関数と８個の４−ｂｉｔ換字関数との組合せで代替する。一般に、換字関数は、ワード長が長くなるほど構成の複雑さが指数的に増し、変換に要する時間も長くなる。従って、ビットの並び替えを行うのみであるため構成が極めて容易であり変換時間が短い置換関数と、ワード長の短い換字関数とを組み合わせてワード長の長い換字関数の代用とすることで、換字変換に要する時間を短縮することができる。なお、代替として用いる換字関数は４−ｂｉｔのワード長のものに限定されるものではなく、例えば、２個の６−ｂｉｔ換字関数と４個の５−ｂｉｔ換字関数とを用いるようにし、あるいは４個の８−bit置換関数を用いるようにしてもよい。【００８０】
また、換字関数処理部２０３及び２１３は、同型換字変換を行うものである必要はなく、非同型のものでよい。非同型の換字変換を行う回路は、同型のものよりも処理が高速の場合がある。【００８１】
次に図７について説明する。図７には、図２に提示したスクランブル部２００の構成の第３の例が図解されている。
図７において、図４に提示したものと同一の構成要素には同一の符号を付している。これらの構成要素については説明を一部省略する。【００８２】
図７に提示したスクランブル部２００の構成は、スクランブル部２００を同期動作させる場合に好適なものであり、図３に提示した構成の第１の例とは、レジスタ２０５及び２１５が追加されている点において異なっている。【００８３】
レジスタ２０５には、換字関数処理部２０３から出力される第１マスクデータが格納されて保持される。また、レジスタ２１５には、換字関数処理部２１３から出力される第２マスクデータが格納されて保持される。【００８４】
図７に提示した構成では、データ処理を行うプロセッサ１００は、書き込みデータを用意する前に、アドレスバス１１にアドレスデータを用意することができるという一般的な特性を利用するものである。【００８５】
すなわち、まず、ＸＯＲ回路２０２及び２０４によるアドレスデータと第１スクランブル鍵データ及び第２スクランブル鍵データとの排他的論理和演算と、その演算結果の換字関数処理部２０３及び２１３による換字変換とを行う。そして得られた第１マスクデータ及び第２マスクデータを、レジスタ２０５及び２１５にそれぞれ格納しておく。その後、プロセッサ１００から書き込みデータが出力されたときに、ＸＯＲ回路２０４による排他的論理和演算、その演算結果の換字関数処理部２２０による換字変換、及び、ＸＯＲ回路２１４による排他的論理和演算を実行する。そして、その実行結果として得られる秘匿データをＲＡＭ２へ出力する。【００８６】
なお、図７に提示した構成のスクランブル部２００によるスクランブルにより得られた秘匿データのデスクランブルは、例えば、図５に提示した構成のデスクランブル部３００を用いて行うことができる。【００８７】
次に図８について説明する。図８には、図２に提示したスクランブル部２００の構成の第４の例が図解されている。
図８において、図４に提示したものと同一の構成要素には同一の符号を付している。これらの構成要素については説明を一部省略する。なお、図４に示したスクランブル部２００の構成、すなわち、鍵レジスタ２０１及び２１１、ＸＯＲ回路２０２、２０４、２１２、及び２１４、並びに換字関数処理部２０３、２１３、及び２２０からなる構成を、ここでは基本部と称することとする。すなわち、図８に提示したスクランブル部２００の構成において、鍵レジスタ２０１、ＸＯＲ回路２０２及び２０４、並びに換字関数処理部２０３からなる構成を、第１基本部２０６−１と称することとする。また、図８において、鍵レジスタ２１１、ＸＯＲ回路２１２及び２１４、並びに換字関数処理部２１３及び２２０からなる構成を、第２基本部２０６−２と称することとする。【００８８】
一方、図８において、鍵レジスタ２２１−１、ＸＯＲ回路２２２−１及び２２４−１、並びに換字関数処理部２２３−１及び２３０−１からなる構成を、第１拡張部２１６−１と称することとする。そして、図８において、鍵レジスタ２２１−２、ＸＯＲ回路２２２−２及び２２４−２、並びに換字関数処理部２２３−２及び２３０−２からなる、第１拡張部２１６−１と同一の構成を、第２拡張部２１６−２と称することとする。【００８９】
つまり、図８に提示したスクランブル部２００は、第１基本部２０６−１及び第２基本部２０６−２と、どちらも対象データをスクランブルしてスクランブルデータを出力する第１拡張部２１６−１及び第２拡張部２１６−２とを備えて構成されている。【００９０】
ここで、第２基本部２０６−２には、第１基本部２０６−１により行われる前述した第１スクランブルによって得られるデータ（すなわち、第１スクランブルデータ）が、対象データとして入力される。そして、第２基本部２０６−２は、前述した第２スクランブルを行い、前述した第２スクランブルデータを出力する。【００９１】
第１拡張部２１６−１には、対象データとして、第２基本部２０６−２が出力するスクランブルデータ（第２スクランブルデータ）が入力される。第１拡張部２１６−１では、この対象データを換字関数処理部２３０−１が一対一で換字変換すると共に、鍵レジスタ２２１−１、ＸＯＲ回路２２２−１、及び換字関数処理部２２３−１が、アドレスデータに対応するマスクデータを生成する。そして、ＸＯＲ回路２２４−１が、換字関数処理部２３０−１による換字変換後のデータと、このマスクデータとのビット毎の排他的論理和を求める。第１拡張部２１６−１は、第２基本部２０６−２が出力するスクランブルデータの更なるスクランブルを、このようにして行う。【００９２】
第２拡張部２１６−２には、対象データとして、第１拡張部２１６−１が出力するスクランブルデータが入力される。第２拡張部２１６−２では、この対象データを換字関数処理部２３０−２が一対一で換字変換すると共に、鍵レジスタ２２１−２、ＸＯＲ回路２２２−２、及び換字関数処理部２２３−２が、アドレスデータに対応するマスクデータを生成する。そして、ＸＯＲ回路２２４−２が、換字関数処理部２３０−２による換字変換後のデータと、このマスクデータとのビット毎の排他的論理和を求める。第２拡張部２１６−２は、第１拡張部２１６−１が出力するスクランブルデータの更なるスクランブルを、このようにして行う。【００９３】
図８に提示したスクランブル部２００は、第２拡張部２１６−２が出力するスクランブルデータを、秘匿データとして、データバス１２から外部ＲＡＭ２へと出力する。
このように、図８に提示したスクランブル部２００の構成は、図４に提示した第２の構成において、基本部に続く拡張部を縦列に２段接続したものである。従って、この構成により得られた秘匿データをデスクランブルして元の書き込みデータを得るには、拡張部についてのデスクランブルを逆順に２回行い、その後に基本部についてのデスクランブルを行えばよい。【００９４】
図８に提示したスクランブル部２００は、４つの鍵レジスタ２０１及び２１１並びに２２１−１及び２２１−２に格納される４つのスクランブル鍵データを用いて書き込みデータのスクランブルが行われる。よって、スクランブル部２００全体としては、書き込みデータのスクランブルに使用されるスクランブル鍵データの鍵長は４倍（４ｗ−ｂｉｔ）となる。従って、図８の構成を採用することにより、鍵全数探索攻撃への耐性が、図４の構成よりも更に向上する。【００９５】
次に図９について説明する。図９は、図２に提示したスクランブル部２００の構成の第５の例が図解されている。この第５の例は、図８に提示した第４の例における拡張部の縦列接続の数をｎ段に拡張したものである。【００９６】
図９において、スクランブル部２００は、基本部２０６と、対象データをスクランブルしてスクランブルデータを出力するｎ個（但し、ｎは少なくとも１以上の整数）の拡張スクランブル部を備える拡張部２１６とを有している。【００９７】
ここで、第ｎ拡張スクランブル部は、鍵レジスタ２２１−ｎ、ＸＯＲ回路２２２−ｎ及び２２４−ｎ、並びに換字関数処理部２２３−ｎ及び２３０−ｎを備えて構成されている。ここで、換字関数処理部２３０−ｎは、この第ｎ拡張スクランブル部でのスクランブルの対象とする対象データを一対一で換字変換する。一方、鍵レジスタ２２１−ｎ、ＸＯＲ回路２２２−ｎ、及び換字関数処理部２２３−ｎは、プロセッサ１００が出力するアドレスデータに対応するマスクデータ（追加マスクデータ）を求める。そして、ＸＯＲ回路２２４−ｎは、この追加マスクデータとのビット毎の排他的論理和を求めることによって、換字関数処理部２３０−ｎによる対象データの換字変換後のデータをスクランブルしてスクランブルデータ（追加スクランブルデータ）を出力する。なお、このときの対象データは、第（ｎ−１）の拡張スクランブル部が出力する追加スクランブルデータ（但し、ｎ＝１のときは基本部２０６が出力するスクランブルデータ）である。【００９８】
図９のスクランブル部２００は以上のように構成されており、第ｎ拡張スクランブル部が得た追加スクランブルデータを、秘匿データとして、データバス１２から外部ＲＡＭ２へと出力する。【００９９】
このように、図９に提示したスクランブル部２００の構成は、図４に提示した第２の構成において、基本部に続く拡張部を縦列にｎ段接続したものである。従って、この構成により得られた秘匿データをデスクランブルして元の書き込みデータを得るには、拡張部についてのデスクランブルを逆順にｎ回行い、その後に基本部についてのデスクランブルを行えばよい。【０１００】
図９に提示したスクランブル部２００は、ｎ＋２個の鍵レジスタ２０１、２１１、、２２１−１、…、２２１−ｎに格納されるｎ＋２個のスクランブル鍵データを用いて書き込みデータのスクランブルが行われる。よって、スクランブル部２００全体としては、書き込みデータのスクランブルに使用されるスクランブル鍵データの鍵長は（ｎ＋２）倍（（ｎ＋２）ｗ−ｂｉｔ）となる。従って、図９の構成を採用することにより、鍵全数探索攻撃への耐性が、図４の構成よりも更に向上する。【０１０１】
なお、図９の構成において、許容される安全性の範囲内で、高速化のために、換字関数処理部２３０−ｎをｎ個未満まで省いてもよい。
また、本発明は、これまでに説明した実施の形態に限定されるものではなく、実施段階では、その要旨を変更しない範囲で種々変形することが可能である。
【図１】
0005541277.tif 000002
【図２】
0005541277.tif 000003
【図３】
0005541277.tif 000004
【図４】
0005541277.tif 000005
【図５】
0005541277.tif 000006
【図６Ａ】
0005541277.tif 000007
【図６Ｂ】
0005541277.tif 000008
【図７】
0005541277.tif 000009
【図８】
0005541277.tif 000010
【図９】
0005541277.tif 000011