(57)【要約】【課題】複数の鍵を用いて暗号化処理を行なう場合に、鍵を秘匿にしつつ、暗号化処理あるいは復号化処理に必要なデータ記憶容量を削減する。【解決手段】暗号化処理選択部７００は、暗号化の際に使用するテーブルの使用順序を示した暗号化テーブル使用順序リスト７１０の中から、暗号化に使用する暗号化処理の番号を示した鍵番号７２０に対応したリストを読み込み、暗号化部７０２に与える。暗号化部７０２は、暗号化処理選択部７００により与えられたリストに基づき、鍵ごとに使用される個別テーブル７１２およびすべての鍵に共通して使用される共通テーブル７１４を参照して、暗号化対象である平文データ７２２を暗号化する。そして、暗号化データ７２４とその暗号化に用いた鍵番号７２０とを関連付けて出力する。【選択図】図７
2008098690.tif 000002
【特許請求の範囲】
【請求項１】
入力データについて暗号化処理を行なう暗号化装置であって、
複数の鍵データのそれぞれに対応する複数の前記暗号化処理の各々において、前記鍵データのうちの前記暗号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次前記入力データに対して行なうための暗号化処理手段を備え、
前記暗号化処理手段は、
前記ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するための記憶手段を含み、
前記複数の関数テーブルは、引き続いて実行される前記ラウンド処理の対で行なわれる演算に対応し、前記複数の暗号化処理に共通して利用される共通関数テーブルと、前記複数の暗号化処理ごとに利用される個別関数テーブルとの対を含む、暗号化装置。
【請求項２】
前記共通関数テーブルは、ランダムな第１のデータと前記所定の関数とに基づいて作成され、
前記個別関数テーブルは、前記第１のデータとの前記加算が前記対となるラウンド処理のうちの一方で用いられる第１のラウンド鍵データとなるような第２のデータと、他方のラウンド処理で用いられる第２のラウンド鍵データと、前記所定の関数とに基づいて作成される、請求項１記載の暗号化装置。
【請求項３】
前記加算は、排他的論理和演算であり、
前記所定の関数は、換字変換と転置変換とを含む、請求項２記載の暗号化装置。
【請求項４】
前記対となる関数テーブルにおいて、一方の前記関数テーブルで、全単射により符号化された出力データは、他方の前記関数テーブルで、前記全単射の逆変換により復号される、請求項３記載の暗号化装置。
【請求項５】
複数の鍵データのそれぞれに対応する複数の前記暗号化処理の各々において、前記鍵データのうちの前記暗号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次実行して暗号化する際に利用される、前記ラウンド処理の演算にそれぞれ対応する複数の関数テーブルの作成方法であって、
引き続いて実行される前記ラウンド処理の対で行なわれる演算は、前記関数テーブルの対で行なわれる演算と対応し、
前記複数の暗号化処理に共通して利用されるランダムな第１のデータを生成するステップと、
前記第１のデータとの前記加算が前記対となるラウンド処理のうちの一方で用いられる第１のラウンド鍵データとなるような第２のデータを計算するステップと、
前記第１のデータと前記所定の関数とに基づいて、前記複数の暗号化処理に共通して利用される共通関数テーブルを作成するステップと、
他方のラウンド処理で用いられる第２のラウンド鍵データと前記第２のデータと前記所定の関数とに基づいて、前記複数の暗号化処理ごとに個別関数テーブルを作成するステップとを備える、テーブル作成方法。
【請求項６】
暗号化されたデータについて復号化処理を行なう復号化装置であって、
複数の鍵データのそれぞれに対応する複数の前記復号化処理の各々において、前記鍵データのうちの前記復号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次前記暗号化されたデータに対して行なうための復号化処理手段を備え、
前記復号化処理手段は、
前記ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するための記憶手段を含み、
前記複数の関数テーブルは、引き続いて実行される前記ラウンド処理の対で行なわれる演算に対応し、前記複数の復号化処理に共通して利用される共通関数テーブルと、前記複数の復号化処理ごとに利用される個別関数テーブルとの対を含む、復号化装置。
【請求項７】
演算処理部および記憶部を有するコンピュータに、入力データについての暗号化処理を実行させるための暗号化プログラムであって、
前記演算処理部は、複数の鍵データのそれぞれに対応する複数の前記暗号化処理の各々において、前記鍵データのうちの前記暗号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次前記入力データに対して行なうステップを備え、
前記記憶部は、前記ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶し、
前記複数の関数テーブルは、引き続いて実行される前記ラウンド処理の対で行なわれる演算に対応し、前記複数の暗号化処理に共通して利用される共通関数テーブルと、前記複数の暗号化処理ごとに利用される個別関数テーブルとの対を含む、暗号化プログラム。
【請求項８】
請求項７記載の暗号化プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項９】
演算処理部および記憶部を有するコンピュータに、暗号化されたデータについての復号化処理を実行させるための復号化プログラムであって、
前記演算処理部は、複数の鍵データのそれぞれに対応する複数の前記復号化処理の各々において、前記鍵データのうちの前記復号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次前記入力データに対して行なうステップを備え、
前記記憶部は、前記ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶し、
前記複数の関数テーブルは、引き続いて実行される前記ラウンド処理の対で行なわれる演算に対応し、前記複数の復号化処理に共通して利用される共通関数テーブルと、前記複数の復号化処理ごとに利用される個別関数テーブルとの対を含む、復号化プログラム。
【請求項１０】
請求項９記載の復号化プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項１１】
複数の鍵データのそれぞれに対応する複数の暗号化処理の各々において、前記鍵データのうちの前記暗号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうステップと、
前記ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するステップとを備え、
前記複数の関数テーブルは、引き続いて実行される前記ラウンド処理の対で行なわれる演算に対応し、前記複数の暗号化処理に共通して利用される共通関数テーブルと、前記複数の暗号化処理ごとに利用される個別関数テーブルとの対を含む、暗号化方法。
【請求項１２】
複数の鍵データのそれぞれに対応する複数の復号化処理の各々において、前記鍵データのうちの前記復号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうステップと、
前記ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するステップとを備え、
前記複数の関数テーブルは、引き続いて実行される前記ラウンド処理の対で行なわれる演算に対応し、前記複数の復号化処理に共通して利用される共通関数テーブルと、前記複数の復号化処理ごとに利用される個別関数テーブルとの対を含む、復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化装置および復号化装置に関する。特に、暗号化および復号化処理を行なう際に必要なデータ容量を削減する技術に関する。
【背景技術】
【０００２】
一般に、ソフトウェア、文書データその他のデジタルデータは、特別の処理が施されていない限り、デジタルデータを入手した者は誰でも、そのデジタルデータを使用（たとえば、実行、表示等）できる。そのため、デジタルデータを扱う際には、データの不正な複製、データに含まれる機密情報の漏洩等の問題がある。
【０００３】
そのような問題の発生を防ぐため、デジタルデータを、暗号化鍵（共通鍵）を用いて暗号化した状態で蓄積、転送などする方法がある。蓄積、転送などされたデジタルデータを使用する際には、そのデジタルデータを、鍵を用いて復号化してから使用する。
【０００４】
しかしながら、上記のようなデジタルデータの暗号化では、暗号化・復号化処理で用いる鍵を安全に配送した後、暗号化処理を行なう側と復号化処理を行なう側の双方で安全に蓄積し、秘匿する必要がある。
【０００５】
そこで、鍵を安全に蓄積し秘匿するため、非特許文献１では、たとえば、ブロック暗号とよばれる共通鍵暗号方式において、暗号化処理あるいは復号化処理を、入出力の対応表である複数の関数テーブル（以下、「テーブル」と呼ぶ。）で構成し、それらのテーブルを参照することで暗号化あるいは復号化を行なう方法が提案されている。なお、共通鍵暗号方式とは、暗号化処理を行なう際に用いる鍵と、復号化処理を行なう際に用いる鍵とが同一である暗号方式である。また、ブロック暗号とは、暗号化するデータを１２８ビットなど一定の長さのブロックに区切り、ブロック単位で暗号化あるいは復号化を行なうというものである。ブロック暗号の一般的なものとして、たとえば、ＡＥＳ（Advanced Encryption Standard）などがある。
【０００６】
ここで、非特許文献１で開示されている方法を説明する前に、まず、ＡＥＳで行なわれる暗号化処理について示す。ＡＥＳでは、暗号化対象の平文データの１ブロックごとにラウンド処理と呼ばれる処理を所定の回数だけ実行して暗号化を行なう。
【０００７】
図１８は、ＡＥＳにおける暗号化処理の概略を示す図である。
図１８を参照して、ＡＥＳにおける暗号化処理について説明する。なお、図１８では、例として、平文データの１ブロックが１２８ビット、ラウンド処理の実行回数ｒが１０の場合を示す。
【０００８】
図１８（Ａ）に示すように、ＡＥＳにおける暗号化処理では、入力データは８ビットごとに１６個のデータｘｉｊ（１≦ｉ≦９、１≦ｊ≦１６、以下、ｉ，ｊは整数とする。）に区切られる。そして、第ｉ番目のラウンド（以下、「ラウンドｉ」と呼ぶ。）の変換Ｒｉによって、データｘｉｊに対し、後述するＡｄｄＲｏｕｎｄＫｅｙ処理に相当する排他的論理和演算、ＳｕｂＢｙｔｅｓ処理に相当する非線形変換Ｓ、ＳｈｉｆｔＲｏｗｓ処理に相当するビット入れ替えＣ、ＭｉｘＣｏｌｕｍｎｓ処理に相当する線形変換Ｍが順に行なわれ、データｙｉｊ（１≦ｉ≦１０）に変換される。そして、データｙｉｊは、次のラウンドの入力データｘｉ＋１ｊとなる。たとえば、ラウンド１によって得られたデータｙ１ｊは、次のラウンド２の入力データｘ２ｊとなり、同様のラウンド処理が実行される。このようにして、ラウンド処理が１０回実行され、暗号化データｙ１０ｊが生成される。
【０００９】
なお、図１８（Ｂ）に示すように、最終のラウンド処理のときは、ＭｉｘＣｏｌｕｍｎｓ処理に代わってＡｄｄＲｏｕｎｄＫｅｙ処理が行なわれる。
【００１０】
また、ＡＥＳのようなブロック暗号では、鍵そのものではなく、非特許文献２で示されるような「鍵拡張アルゴリズム」にしたがって生成されたラウンド鍵を用いるのが一般的である。なお、図１８では、ラウンド処理の実行回数が１０回の場合を示したが、ラウンド処理の実行回数ｒは、平文データ１ブロックの長さと鍵長によって決定される。
【００１１】
次に、上記の各処理について説明する。
ＡｄｄＲｏｕｎｄＫｅｙ処理では、入力データｘｉｊとラウンド鍵ｋijとの排他的論理和をとる。なお、図１８において、ラウンド鍵ｋijは、鍵拡張アルゴリズムにしたがって生成された１２８ビットのラウンド鍵を８ビットごとに区切ったものである。
【００１２】
ＳｕｂＢｙｔｅｓ処理では、非特許文献３で示されるように、あるデータｘｉｊに対し、１バイト入出力の換字テーブルＳ−ｂｏｘによって１対１変換を行なう。なお、換字テーブルＳ−ｂｏｘとは、入力値のガロア体ＧＦ（２８）上で次式（１）の逆数をとり、さらに、所定の行列でアフィン変換をした結果を予め計算しておいたものである。
【００１３】
ｍ（ｘ）＝ｘ８＋ｘ４＋ｘ３＋ｘ＋１…（１）
ＳｈｉｆｔＲｏｗｓ処理では、ビット入れ替えＣを行なう。
【００１４】
図１９は、ビット入れ替えＣを示す図である。
図１９（Ａ）に示すように、８ビットのデータａｊ（１≦ｊ≦１６）は入れ替えられる。このビット入れ替えは、図１９（Ｂ）に示すような処理となる。まず、ビット入れ替えＣに与えられたデータａｊは、データ（ａｄ，ａｄ＋１，ａｄ＋２，ａｄ＋３）（ｄ∈｛１，５，９，１３｝）を１列として、配列１９００のように４列並べられる。そして、第１行目のデータ（ａ１，ａ５，ａ９，ａ１３）はそのままとし、第２行目のデータ（ａ２，ａ６，ａ１０，ａ１４）を左方向に１列分回転、第３行目のデータ（ａ３，ａ７，ａ１１，ａ１５）を左方向に２列分回転、第４行目のデータ（ａ４，ａ８，ａ１２，ａ１６）を左方向に３列分回転させ配列１９１０のようになる。配列１９１０において、第１列第１行目から順に、各列において列方向へ出力したものが、ビット入れ替え後のデータとなる。
【００１５】
ＭｉｘＣｏｌｕｍｎｓ処理では、データ（ｂｄ，ｂｄ＋１，ｂｄ＋２，ｂｄ＋３）（ｄ∈｛１，５，９，１３｝）を１列として、各列ごとに、次のような式（２）に示す演算を実行し、データ（ｙｄ，ｙｄ＋１，ｙｄ＋２，ｙｄ＋３）を出力する。
【００１６】
【数１】
2008098690.tif 000003
【００１７】
ラウンド処理は、以上のような処理から構成される。なお、図１８で示したような処理によって暗号化されたデータを復号化するには、ラウンド鍵を復号化処理で用いるラウンド鍵に変更する。また、非線形変換ＳをＳの逆変換に、線形変換ＭをＭの逆変換に、ビット入れ替えＣをＣの逆変換に変更することで、復号化におけるラウンド処理が構成される。
【００１８】
次に、上記のようなＡＥＳにおける暗号化の実装について説明する。ＡＥＳのラウンドｉ（１≦ｉ≦９）での変換Ｒｉを実装する場合、一般的には、非特許文献３の５．２．１節に示すような処理の流れとなる。
【００１９】
図２０は、変換Ｒｉを実装する際の流れを示す図である。
図２０を参照して、非特許文献３で示される実装の流れについて、図１８で示したＡＥＳでの処理を実装する場合を例に挙げて説明する。
【００２０】
変換Ｒｉを実装する際は、図２０（Ａ）に示すように、ＡｄｄＲｏｕｎｄＫｅｙ処理、ＳｕｂＢｙｔｅｓ処理に相当する非線形変換Ｓ、ＭｉｘＣｏｌｕｍｎｓ処理に相当する線形変換Ｍｕ（１≦ｕ≦４、以下、ｕは整数とする。）、ＳｈｉｆｔＲｏｗｓ処理に相当するビット入れ替えＣ’、さらにビット入れ替えＣ’後のデータ同士の排他的論理和演算を行なう。８ビットのデータは、線形変換Ｍｕにより３２ビットに拡大される。ここで、図１９でのビット入れ替えＣと、ビット入れ替えＣ’は入れ替えの単位が８ビットと３２ビットで異なるが、図２０（Ｂ）に示すように、入れ替えの順序は同じである。
【００２１】
図２１は、線形変換Ｍと線形変換Ｍｕとの関係を示す図である。
図２１に示すように、線形変換Ｍは、線形変換Ｍｕと３２ビットデータの排他的論理和とから構成することができる。ここで、ＭｉｘＣｏｌｕｍｎｓ処理に相当する線形変換ＭおよびＭｕは、上述したような行列演算である。また、ＳｈｉｆｔＲｏｗｓ処理に相当するビット入れ替えＣおよびＣ’は、図１９（Ｂ）で示したように各行において回転処理がなされる。このため、図１８で示した変換Ｒｉ（１≦ｉ≦９）と、図２０で示した変換Ｒｉ（１≦ｉ≦９）とは等価であるといえる。
【００２２】
続いて、非特許文献１で提案されている方法について説明する。
非特許文献１では、鍵を安全に蓄積し秘匿するため、ＡｄｄＲｏｕｎｄＫｅｙ処理、ＳｕｂＢｙｔｅｓ処理、ＭｉｘＣｏｌｕｍｎｓ処理を予め計算したテーブルを作成する。また、このテーブルの入出力では、ランダムな全単射により符号化する。このようなテーブルを参照することで暗号化処理あるいは復号化処理を実行する。
【００２３】
このテーブルは、上記のように、予め処理を計算し、ランダムな全単射により符号化されているため、一見するとランダムなデータである。このため、このようなデータからラウンド鍵を導出することは難しい。さらに、入出力データはランダムな全単射により符号化されているため、入出力データをもとにラウンド鍵を導出することも困難である。
【００２４】
したがって、テーブルを作成することにより、鍵は秘匿されることとなる。また、この場合、このようなテーブルはラウンドごとに多数存在し、どのテーブルをどのような順序で使用するかを理解することは困難である。このため、悪意のある人がテーブルを取得したとしても、暗号化されたデータを復号することは難しい。
【００２５】
上記のように、非特許文献１で提案されている方法を用いることで、暗号化・復号化処理で用いる鍵を安全に蓄積し、秘匿することができる。
【００２６】
また、扱うデジタルデータごとに異なる鍵を用いて暗号化・復号化を行なうことで安全性は更に向上する。そのため、たとえば、デジタルコンテンツの販売においては、コンテンツをコンテンツごとに異なる鍵で暗号化することが多い。
【００２７】
しかしながら、デジタルデータの暗号化で異なる鍵を用いる場合、安全性は向上するが、秘匿すべき鍵のデータ量は増えてしまう。これに対し、たとえば、特許文献１には、デジタルデータごとに異なる鍵で暗号化し、それらをマスタ鍵と呼ばれる１つの鍵で暗号化し、マスタ鍵だけを安全な場所に蓄積する方法が開示されている。これにより、秘匿しなければならないデータ量はマスタ鍵のデータ量だけですむ。
【特許文献１】特開昭６１−１７７４７９号公報
【非特許文献１】Kaisa Nyberg、Howard M. Heys : "Selected Areas in Cryptography : 9th Annual International Workshop, SAC 2002, St. John's, Newfoundland, Canada, August 15-16, 2002, Revised Papers", Lecture Notes of in Computer Science 2595、Springer, pp.250−270 (2003).
【非特許文献２】"Federal Information Processing Standards Publication 197、 Announcing the ADVANCED ENCRYPTION STANDARD (AES)", National Institute of Standards and Technology, http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf, (2001).
【非特許文献３】Joan Daeman、Vincent Rijmen : "AES Proposal: Rijndael", http://csrc.nist.gov/CryptoToolkit/aes/rijndael/Rijndael.pdf, (1999).
【発明の開示】
【発明が解決しようとする課題】
【００２８】
複数の鍵を用いて暗号化処理を行なう場合、非特許文献１で提案されている方法では、デジタルデータごとに異なる鍵で暗号化あるいは復号化を行なう場合、暗号化処理あるいは復号化処理を構成するテーブルの量が増大してしまう。
【００２９】
また、特許文献１に開示された方法では、マスタ鍵により暗号化された鍵は、暗号化処理あるいは復号化処理を行なう際に復号化されるため、暗号化処理あるいは復号化処理の際に鍵を秘匿にできない。
【００３０】
本発明は、上記のような問題を解決するためになされたものであって、その目的は、複数の鍵を用いて暗号化処理を行なう場合に、鍵を秘匿にしつつ、暗号化処理あるいは復号化処理に必要なデータ記憶容量を削減することである。
【課題を解決するための手段】
【００３１】
本発明の１つの局面に従うと、入力データについて暗号化処理を行なう暗号化装置であって、複数の鍵データのそれぞれに対応する複数の暗号化処理の各々において、鍵データのうちの暗号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうための暗号化処理手段を備え、暗号化処理手段は、ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するための記憶手段を含み、複数の関数テーブルは、引き続いて実行されるラウンド処理の対で行なわれる演算に対応し、複数の暗号化処理に共通して利用される共通関数テーブルと、複数の暗号化処理ごとに利用される個別関数テーブルとの対を含む。
【００３２】
好ましくは、共通関数テーブルは、ランダムな第１のデータと所定の関数とに基づいて作成され、個別関数テーブルは、第１のデータとの加算が対となるラウンド処理のうちの一方で用いられる第１のラウンド鍵データとなるような第２のデータと、他方のラウンド処理で用いられる第２のラウンド鍵データと、所定の関数とに基づいて作成される。
【００３３】
好ましくは、加算は、排他的論理和演算であり、所定の関数は、換字変換と転置変換とを含む。
【００３４】
好ましくは、対となる関数テーブルにおいて、一方の関数テーブルで、全単射により符号化された出力データは、他方の関数テーブルで、全単射の逆変換により復号される。
【００３５】
本発明の他の局面に従うと、複数の鍵データのそれぞれに対応する複数の暗号化処理の各々において、鍵データのうちの暗号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次実行して暗号化する際に利用される、ラウンド処理の演算にそれぞれ対応する複数の関数テーブルの作成方法であって、引き続いて実行されるラウンド処理の対で行なわれる演算は、関数テーブルの対で行なわれる演算と対応し、複数の暗号化処理に共通して利用されるランダムな第１のデータを生成するステップと、第１のデータとの加算が対となるラウンド処理のうちの一方で用いられる第１のラウンド鍵データとなるような第２のデータを計算するステップと、第１のデータと所定の関数とに基づいて、複数の暗号化処理に共通して利用される共通関数テーブルを作成するステップと、他方のラウンド処理で用いられる第２のラウンド鍵データと第２のデータと所定の関数とに基づいて、複数の暗号化処理ごとに個別関数テーブルを作成するステップとを備える。
【００３６】
本発明のさらに他の局面に従うと、暗号化されたデータについて復号化処理を行なう復号化装置であって、複数の鍵データのそれぞれに対応する複数の復号化処理の各々において、鍵データのうちの復号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次暗号化されたデータに対して行なうための復号化処理手段を備え、復号化処理手段は、ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するための記憶手段を含み、複数の関数テーブルは、引き続いて実行されるラウンド処理の対で行なわれる演算に対応し、複数の復号化処理に共通して利用される共通関数テーブルと、複数の復号化処理ごとに利用される個別関数テーブルとの対を含む。
【００３７】
本発明のさらに他の局面に従うと、演算処理部および記憶部を有するコンピュータに、入力データについての暗号化処理を実行させるための暗号化プログラムであって、演算処理部は、複数の鍵データのそれぞれに対応する複数の暗号化処理の各々において、鍵データのうちの暗号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうステップを備え、記憶部は、ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶し、複数の関数テーブルは、引き続いて実行されるラウンド処理の対で行なわれる演算に対応し、複数の暗号化処理に共通して利用される共通関数テーブルと、複数の暗号化処理ごとに利用される個別関数テーブルとの対を含む。
【００３８】
本発明のさらに他の局面に従うと、上記暗号化プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
【００３９】
本発明のさらに他の局面に従うと、演算処理部および記憶部を有するコンピュータに、暗号化されたデータについての復号化処理を実行させるための復号化プログラムであって、演算処理部は、複数の鍵データのそれぞれに対応する複数の復号化処理の各々において、鍵データのうちの復号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうステップを備え、記憶部は、ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶し、複数の関数テーブルは、引き続いて実行されるラウンド処理の対で行なわれる演算に対応し、複数の復号化処理に共通して利用される共通関数テーブルと、複数の復号化処理ごとに利用される個別関数テーブルとの対を含む。
【００４０】
本発明のさらに他の局面に従うと、上記復号化プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
【００４１】
本発明のさらに他の局面に従うと、複数の鍵データのそれぞれに対応する複数の暗号化処理の各々において、鍵データのうちの暗号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうステップと、ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するステップとを備え、複数の関数テーブルは、引き続いて実行されるラウンド処理の対で行なわれる演算に対応し、複数の暗号化処理に共通して利用される共通関数テーブルと、複数の暗号化処理ごとに利用される個別関数テーブルとの対を含む、暗号化方法を提供する。
【００４２】
本発明のさらに他の局面に従うと、複数の鍵データのそれぞれに対応する複数の復号化処理の各々において、鍵データのうちの復号化処理に対応した１つを変換して得られる複数のラウンド鍵データのうちの１つとの加算と所定の関数とを含むラウンド処理を順次入力データに対して行なうステップと、ラウンド処理の演算にそれぞれに対応する複数の関数テーブルを記憶するステップとを備え、複数の関数テーブルは、引き続いて実行されるラウンド処理の対で行なわれる演算に対応し、複数の復号化処理に共通して利用される共通関数テーブルと、複数の復号化処理ごとに利用される個別関数テーブルとの対を含む、復号化方法を提供する。
【発明の効果】
【００４３】
本発明によれば、鍵を秘匿にしつつ、暗号化処理あるいは復号化処理に必要なデータ記憶容量を削減することができる。
【発明を実施するための最良の形態】
【００４４】
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについては詳細な説明は繰り返さない。
【００４５】
まず、本発明で利用する、関数テーブル（以下、「テーブル」と呼ぶ。）の構成およびそれを用いた暗号化・復号化を説明する前提として、非特許文献１で提案されている方法について説明する。上述したように、非特許文献１では、ＡＥＳの暗号方式において、暗号化処理あるいは復号化処理を複数のテーブルで構成し、それらのテーブルを参照することで暗号化あるいは復号化を行なう方法が提案されている。
【００４６】
図１は、非特許文献１で提案されている暗号化処理の概略を示す図である。
図１では、例として、平文データの１ブロックが１２８ビット、鍵長が１２８ビット（ラウンド処理の実行回数ｒが１０）の場合を示す。なお、以下の説明では特に記載がない限り、１≦ｊ≦１６とする。
【００４７】
図１（Ａ）に示すように、変換Ｒｉ（１≦ｉ≦９）では、８ビットの入力データｘｉｊを、テーブルＴｉｊ、ビット入れ替えＣ’および複数の排他的論理和テーブルＸにより変換し、出力データｙｉｊとする。出力データｙｉｊ（１≦ｉ≦９）は、次の変換Ｒｉ＋１の入力データｘｉ＋１ｊとなる。
【００４８】
テーブルＴｉｊでは、入力データに対して、ＡｄｄＲｏｕｎｄＫｅｙ処理に相当する排他的論理和演算、ＳｕｂＢｙｔｅｓ処理に相当する非線形変換Ｓ、ＭｉｘＣｏｌｕｍｎｓ処理に相当する線形変換Ｍｕを順に行なう。
【００４９】
図２は、複数の排他的論理和テーブルＸの論理的な処理の流れを示した図である。
図２に示すように、テーブルＸは、３２ビットデータ同士の排他的論理和を複数並べたものである。
【００５０】
図３は、３２ビットデータ同士の排他的論理和のテーブル化を示した図である。
図３に示すように、３２ビットデータ同士の排他的論理和は４ビットデータ同士の排他的論理和テーブル８個を用いて構成される。このような構成をとるのは以下の理由による。
【００５１】
３２ビットデータの演算をテーブル１個で構成すると、テーブルサイズは非常に大きいものとなる。しかし、排他的論理和演算では、繰り上がりが起こらないため、各ビットを独立に演算できる。このことを利用し、３２ビットデータ同士の排他的論理和を実行するテーブル１個を用いるのではなく、４ビットデータ同士の排他的論理和を実行するテーブル８個を用いることで、テーブルサイズを抑えることができる。
【００５２】
図１に戻って、図１（Ｂ）に示すように、変換Ｒ１０では、入力データｘ１０ｊを、テーブルＴ１０ｊおよび複数の排他的論理和テーブルＹにより変換し、出力データｙｉｊとする。
【００５３】
テーブルＴ１０ｊでは、入力データに対して、ＡｄｄＲｏｕｎｄＫｅｙ処理に相当する、ｋ１０ｊ、ｋ’１１ｊとの排他的論理和演算、ＳｕｂＢｙｔｅｓ処理に相当する非線形変換Ｓ、ランダムな線形変換Ｎｊを行なう。なお、８ビットのデータｋ’１１１，…，ｋ’１１１６は、鍵拡張アルゴリズムにしたがって生成したラウンド鍵ｋ１１１‖…‖ｋ１１１６（ただし、「‖」はデータの隣接を表わす）をビット入れ替えＣの逆変換により変換した結果がｋ’１１１‖…‖ｋ’１１１６となるようなデータである。
【００５４】
図４は、複数の排他的論理和テーブルＹの論理的な処理の流れを示した図である。
図４に示すように、テーブルＹは、１２８ビットデータ同士の排他的論理和を複数並べたものとなる。なお、１２８ビットデータ同士の排他的論理和は、図３で示したような４ビットデータ同士の排他的論理和テーブルを複数用いて構成される。
【００５５】
さらに、上記の各テーブルにおける入出力ではランダムな全単射が行なわれる。図１および図３において、斜線部はランダムな全単射を示している。
【００５６】
図５は、各テーブル間の関係を示した図である。
図５に示すように、各テーブルの入出力は４ビットごとにランダムな全単射により符号化される。これにより、テーブルは、一見するとランダムなデータとなる。さらに、入出力データも、ランダムなデータとなり、入出力データを利用してラウンド鍵を導出することは困難となる。また、各テーブルにおいてランダムな全単射Ａにより符号化された出力は、その出力を入力とするテーブルにおいて、Ａの逆変換となる、入力側の全単射Ａ−１により復号される。
【００５７】
図１に戻って、さらに、非特許文献１で提案されている方法では、ラウンド鍵の導出が一層困難になるように、図１（Ｃ）に示すような変換Ｒ０が作成される。
【００５８】
まず、平文データは、変換Ｒ０に入力される。変換Ｒ０では、８ビットずつに区切られた入力データｘ０ｊを、テーブルＴ０ｊおよび複数の排他的論理和テーブルＹにより変換し、出力データｙ０ｊとする。テーブルＴ０ｊでは、入力データに対して、ランダムな線形変換Ｌｊを行なう。８ビットデータは、線形変換Ｌｊにより１２８ビットに拡大される。
【００５９】
また、変換Ｒ１０における線形変換Ｎｊおよび複数の排他的論理和テーブルＹも、ラウンド鍵の導出を困難にするための変換である。これらの他にも、ラウンド鍵の導出を困難にするためのテーブルが複数用いられているが、図が複雑になるため、図１には示していない。
【００６０】
以上の説明から分かるように、非特許文献１に記載の方法では、各ラウンド処理についてテーブルを作成することで、鍵を秘匿することができる。しかし、非特許文献１に記載の方法によって、複数の鍵を用いて暗号化処理を行なう場合、鍵ごとにすべてのラウンド処理についてのテーブルを作成する必要があるため、保持すべきテーブルのデータ量が多くなってしまう。
【００６１】
そこで、複数の鍵を用いて暗号化処理を行なう場合に、本発明では、引き続いて実行されるラウンド処理で行なわれる演算に対応するような、テーブルの対を用いる。このテーブルの対は、各暗号化処理で共通して使用する共通テーブルと、暗号化処理ごとに個別に使用する個別テーブルとから構成される。共通テーブルを作成することにより、保持すべきテーブルのデータ量を少なくすることができる。
【００６２】
また、本発明は上記で説明したＡＥＳだけでなく、ラウンド鍵と所定の関数を用いたデータ変換を繰り返し適用して暗号化するような手法を用いる暗号化方法において有効である。この場合、ラウンド鍵と所定の関数を用いたデータ変換は、次のような条件１〜３を満たす必要がある。
【００６３】
（条件１）所定の関数が、換字変換と転置変換により構成されるＳＰＮ（Substitution-Permutation Network）構造であること。なお、ＡＥＳでは、換字変換はＳｕｂＢｙｔｅｓ処理に、転置変換はＳｈｉｆｔＲｏｗｓ処理とＭｉｘＣｏｌｕｍｎｓ処理に相当する。
【００６４】
（条件２）転置変換がガロア体上の演算で表現されること。
（条件３）ラウンド鍵とデータとの演算が条件２のガロア体における加算であること。
【００６５】
なお、ＡＥＳでは、転置変換でＭｉｘＣｏｌｕｍｎｓ処理とＳｈｉｆｔＲｏｗｓ処理が行なわれるが、それぞれガロア体ＧＦ（２８）上とＧＦ（２）上の演算で表現される。ＧＦ（２８）とＧＦ（２）における加算は共にビットごとの排他的論理和であり、ＡＥＳにおけるラウンド鍵とデータとの演算もビットごとの排他的論理和である。また、ガロア体における加算の表現は、排他的論理和にかかわらず、転置変換を表現するガロア体によって異なる。たとえば、｛０，１，２，…，ｐ−１｝（ただし、ｐは素数）というガロア体ＧＦ（ｐ）での加算は「（ａ＋ｂ）  ｍｏｄ  ｐ（ａ，ｂ∈ＧＦ（ｐ））」という演算（一般的な加算を行なった結果に対する剰余）で表現できる。
【００６６】
上記のような条件を満たす暗号方式として、ＡＥＳ以外に、たとえば、Ｓｅｒｐｅｎｔ、Ｈｉｅｒｏｃｒｙｐｔ−Ｌ１、Ｈｉｅｒｏｃｒｙｐｔ−３などがある。
【００６７】
以下では、平文データの１ブロックを１２８ビット、鍵長を１２８ビットとするＡＥＳにおける処理を例にあげて、本発明に係る実施の形態を説明する。
【００６８】
［実施の形態１］
（１．  本発明のシステム構成）
本発明に係る暗号化・復号化装置は、コンピュータ１００により実装される。
【００６９】
図６は、コンピュータ１００のハードウェア構成を示すブロック図である。
図６を参照して、コンピュータ１００の構成について説明する。
【００７０】
コンピュータ１００は、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）１１８等の光ディスク上の情報を読み込むための光ディスクドライブ１０８と、フレキシブルディスク（Flexible Disk、以下ＦＤ）１１６に情報を読み書きするためのＦＤドライブ１０６と、表示装置としてのモニタ１０４と、入力装置としてのキーボード１１０およびマウス１１２と、ＣＰＵ（Central Processing Unit）１２０と、ＲＯＭ（Read Only Memory）およびＲＡＭ（Random Access Memory）を含むメモリ１２２と、直接アクセスメモリ装置、たとえば、ハードディスク１２４と、外部とデータの授受を行なうための通信インターフェイス１２８とを備える。
【００７１】
ＣＤ−ＲＯＭ１１８は、コンピュータ本体に対してインストールされるプログラム等の情報を記録可能な媒体であれば、他の媒体、たとえば、ＤＶＤ−ＲＯＭ（Digital Versatile Disc）やメモリーカードなどでもよく、その場合は、コンピュータ１００には、これらの媒体を読み取ることが可能なドライブ装置が設けられる。
【００７２】
ハードディスク１２４内には、暗号化処理および復号化処理のプログラム、各処理において利用されるテーブル、テーブルの使用順序を示すリスト等が格納される。なお、各プログラムは、ＦＤ１１６、またはＣＤ−ＲＯＭ１１８等の記録媒体によって供給されてもよいし、他のコンピュータにより通信回線を経由して供給されてもよい。
【００７３】
演算処理装置として機能するＣＰＵ１２０は、メモリ１２２をワーキングメモリとして、暗号化・復号化処理のプログラムに対応した処理を実行する。
【００７４】
図７は、暗号化処理を行なう場合のＣＰＵ１２０の機能的構成を示した機能ブロック図である。
【００７５】
図７を参照して、暗号化処理を行なう場合のＣＰＵ１２０の機能的構成について説明する。
【００７６】
ＣＰＵ１２０は、平文データ７２２の暗号化に使用する暗号化処理の番号を選択するための暗号化処理選択部７００と、暗号化処理を実行するための暗号化部７０２とを含む。また、ハードディスク１２４は、鍵ごとに、暗号化の際に使用するテーブルの使用順序を示した暗号化テーブル使用順序リスト７１０と、暗号化する際に用いる、鍵ごとの個別テーブル７１２と共通テーブル７１４とを含む。なお、暗号化テーブル使用順序リスト７１０およびこれらのテーブルの作成方法については、後の（２）節において説明する。
【００７７】
暗号化処理選択部７００には、複数の鍵を用いた複数の暗号化処理の中から、特定の暗号化処理を示す鍵番号７２０が与えられる。鍵番号７２０は、たとえば、ユーザがキーボード１１０を介して入力してもよいし、暗号化するデータの種類に応じて予め定められていてもよい。
【００７８】
暗号化処理選択部７００は、暗号化テーブル使用順序リスト７１０の中から、鍵番号７２０に対応したリストを読み込み、暗号化部７０２に与える。
【００７９】
暗号化部７０２は、暗号化処理選択部７００により与えられたリストに基づき、鍵ごとの個別テーブル７１２および共通テーブル７１４を参照して、暗号化対象である平文データ７２２を暗号化する。そして、暗号化部７０２は、暗号化データ７２４とその暗号化に用いた鍵番号７２０とを関連付けて出力する。
【００８０】
図８は、復号化処理を行なう場合のＣＰＵ１２０の機能的構成を示した機能ブロック図である。
【００８１】
図８を参照して、復号化処理を行なう場合のＣＰＵ１２０の機能的構成について説明する。
【００８２】
ＣＰＵ１２０は、暗号化データ７２４の復号化に使用する復号化処理の番号を選択するための復号化処理選択部８００と、復号化処理を実行するための復号化部８０２とを含む。また、ハードディスク１２４は、鍵ごとに、復号化の際に使用するテーブルの使用順序を示した復号化テーブル使用順序リスト８１０と、復号化する際に用いる、鍵ごとの個別テーブル８１２と共通テーブル８１４とを含む。なお、復号化テーブル使用順序リスト８１０およびこれらのテーブルの作成方法については、後の（２）節において説明する。
【００８３】
復号化処理選択部８００は、暗号化に用いられた鍵番号７２０を読み込む。
復号化処理選択部８００は、復号化テーブル使用順序リスト８１０の中から、鍵番号７２０に対応したリストを読み込み、復号化部８０２に与える。
【００８４】
復号化部８０２は、復号化処理選択部８００により与えられたリストに基づき、鍵ごとの個別テーブル８１２および共通テーブル８１４を参照して、復号化対象である暗号化データ７２４を復号する。そして、復号化部８０２は、復号化された平文データ７２２を出力する。
【００８５】
暗号化・復号化処理のプログラムは、上述の通り、ＣＰＵ１２０により実行されるソフトウェアである。一般的に、こうしたソフトウェアは、ＣＤ−ＲＯＭ１１８、ＦＤ１１６等の記録媒体に格納されて流通し、光ディスクドライブ１０８またはＦＤドライブ１０６等により記録媒体から読み取られてハードディスク１２４に一旦格納される。または、コンピュータ１００が通信インターフェイス１２８を介してネットワークに接続されている場合には、ネットワーク上のサーバから一旦ハードディスク１２４にコピーされる。そうしてさらにハードディスク１２４からメモリ１２２中のＲＡＭに読み出されてＣＰＵ１２０により実行される。なお、ネットワーク接続されている場合には、ハードディスク１２４に格納することなくＲＡＭに直接ロードして実行するようにしてもよい。
【００８６】
図６に示したコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の機能を実現するに当り本質的な部分は、ＦＤ１１６、ＣＤ−ＲＯＭ１１８、ハードディスク１２４等の記録媒体に記憶されたソフトウェアである。
【００８７】
なお、一般的傾向として、コンピュータのオペレーティングシステムの一部として様々なプログラムモジュールを用意しておき、アプリケーションプログラムはこれらモジュールを所定の配列で必要なときに呼び出して処理を進める方式が一般的である。そうした場合、当該ソフトウェア自体にはそうしたモジュールは含まれず、当該コンピュータでオペレーティングシステムと協働してはじめて暗号化・復号化処理が可能になる。しかし、一般的なプラットフォームを使用する限り、そうしたモジュールを含ませたソフトウェアを流通させる必要はなく、それらモジュールを含まないソフトウェア自体およびそれらソフトウェアを記録した記録媒体（およびそれらソフトウェアがネットワーク上を流通する場合のデータ信号）が実施の形態を構成すると考えることができる。
【００８８】
（２．  本発明に係る暗号化・復号化方法）
本節では、本発明に係る暗号化・復号化方法について述べる。以下の説明で明らかになるように、本発明に係る暗号化・復号化方法では、引き続いて実行されるラウンド処理で行なわれる演算に対応するような、テーブルの対を用いる。このテーブルの対は、各暗号化処理で共通して使用する共通テーブルと、暗号化処理ごとに個別に使用する個別テーブルとから構成される。共通テーブルを作成することにより、保持すべきテーブルのデータ量を少なくすることができる。
【００８９】
（２．１  本発明に係る暗号化処理の概略）
図９は、鍵ｋａを用いた場合の本発明に係る暗号化処理を示す図である。
【００９０】
図９を参照して、鍵ｋａを用いた場合の本発明に係る暗号化処理の概略について説明する。なお、以下の説明では特に記載がない限り、１≦ｕ≦４とする。また、鍵ｋａから鍵拡張アルゴリズムにしたがって導出されるラウンド鍵をｋａｉｊ（１≦ｉ≦１１）とする。
【００９１】
図９（Ａ）に示すように、変換Ｒ０では、８ビットずつに区切られた入力データｘ０ｊを、テーブルＴａ０ｊおよび複数の排他的論理和テーブルＹにより変換し、出力データｙ０ｊとする。なお、出力データｙｉｊ（０≦ｉ≦９）は、次の変換Ｒｉ＋１の入力データｘｉ＋１ｊとなる。
【００９２】
テーブルＴａ０ｊでは、入力データに対して、ランダムな線形変換Ｌｊおよび１２８ビットのデータｓａ０ｊとの排他的論理和演算を順に行なう。データｓａ０ｊについては後述する。
【００９３】
また、図９（Ｂ）に示すように、変換Ｒｉ（ｉ∈｛１，３，５，７，９｝）では、入力データｘｉｊを、テーブルＴａｉｊ、ビット入れ替えＣ’および複数の排他的論理和テーブルＸにより変換し、出力データｙｉｊとする。
【００９４】
テーブルＴａｉｊ（ｉ∈｛１，３，５，７，９｝）では、入力データに対して、８ビットのランダムなデータｒａｉｊとの排他的論理和、非線形変換Ｓおよび線形変換Ｍｕを順に行なう。なお、データｒａｉｊについては後述する。また、テーブルＴａｉｊ（ｉ∈｛１，３，５，７，９｝）は共通テーブルとして、複数の暗号化処理において使用される。
【００９５】
さらに、図９（Ｃ）に示すように、変換Ｒｉ（ｉ∈｛２，４，６，８｝）では、入力データｘｉｊを、テーブルＴａｉｊ、ビット入れ替えＣ’および複数の排他的論理和テーブルＸにより変換し、出力データｙｉｊとする。
【００９６】
テーブルＴａｉｊ（ｉ∈｛２，４，６，８｝）では、入力データに対して、ラウンド鍵ｋａｉｊとの排他的論理和演算、非線形変換Ｓ、線形変換Ｍｕおよび３２ビットのデータｓａｉｊとの排他的論理和演算を順に行なう。なお、データｓａｉｊについては後述する。
【００９７】
また、図９（Ｄ）に示すように、変換Ｒ１０では、入力データｘ１０ｊを、テーブルＴａ１０ｊおよび複数の排他的論理和テーブルＹにより変換し、出力データｙ１０ｊとする。
【００９８】
テーブルＴａ１０ｊでは、入力データに対して、ラウンド鍵ｋａ１０ｊとの排他的論理和演算、非線形変換Ｓ、ｋａ’１１ｊとの排他的論理和演算、ランダムな線形変換Ｎｊを順に行なう。なお、ｋａ’１１１，…，ｋａ’１１１６は、鍵拡張アルゴリズムにしたがって生成したラウンド鍵ｋａ１１１‖…‖ｋａ１１１６をビット入れ替えＣの逆変換により変換した結果がｋａ’１１１‖…‖ｋａ’１１１６となるようなデータである。
【００９９】
上述の８ビットのデータｒａｉｊ（ｉ∈｛１，３，５，７，９｝）は、ｓａ０１‖…‖ｓａ０１６を複数の排他的論理和テーブルＹにより変換した結果が、（ｒａ１１‖…‖ｒａ１１６）と（ｋａ１１‖…‖ｋａ１１６）との排他的論理和となり、かつ、（ｓａｉ−１１‖…‖ｓａｉ−１１６）（ｉ∈｛３，５，７，９｝）をビット入れ替えＣ’と複数の排他的論理和テーブルＸにより変換した結果が、（ｒａｉ１‖…‖ｒａｉ１６）と（ｋａｉ１‖…‖ｋａｉ１６）との排他的論理和となるようなデータである。
【０１００】
言い換えると、データｒａｉｊは、次式（３）および（４）を満たす。
【０１０１】
【数２】
2008098690.tif 000004
【０１０２】
このようなデータｓａｉｊ，ｒａｉｊを用いたテーブルの対による演算は、引き続いて実行されるラウンド処理の対で行なわれる演算に対応する。
【０１０３】
（２．２  本発明に係るテーブル作成方法）
ここでは、上記（２．１）節のテーブルの作成方法について説明する。その後、このようなテーブルによって、非特許文献１と同様の暗号化データを生成できることを示す。なお、テーブルＸおよびテーブルＹについては、図２〜４を用いて説明した通りであるため説明は省略する。
【０１０４】
テーブルＴａｉｊ（ｉ∈｛１，３，５，７，９｝）における８ビットのデータｒａｉｊは、ランダムに生成される。そして、テーブルＴａｉｊ（ｉ∈｛１，３，５，７，９｝）は、ランダムな全単射Ａのテーブルと、８ビットのデータｒａｉｊと、非線形変換Ｓを予め計算したテーブルと、線形変換Ｍｕを予め計算したテーブルと、全単射Ａの逆変換Ａ−１のテーブルとに基づいて作成される。このテーブルは、共通テーブルとして、複数の暗号化処理で共通して使用される。
【０１０５】
テーブルＴａ０ｊにおける１２８ビットのデータｓａ０ｊ（１≦ｊ≦１５）は、ランダムに生成される。ｓａ０１６は、次式（５）を計算することで生成される。
【０１０６】
【数３】
2008098690.tif 000005
【０１０７】
そして、テーブルＴａ０ｊは、ランダムな全単射Ａのテーブルと、線形変換Ｌｊを予め計算したテーブルと、１２８ビットのデータｓａ０ｊと、全単射Ａの逆変換Ａ−１のテーブルとに基づいて作成される。
【０１０８】
また、テーブルＴａｉ−１ｊ（ｉ∈｛３，５，７，９｝）における３２ビットのデータｓａｉ−１ｊのうち、ｓａｉ−１ｊ（ｊ∈｛４，８，１２，１６｝）以外は、ランダムに生成される。ｓａｉ−１ｊ（ｊ∈｛４，８，１２，１６｝）については、次式（６）を満たすように生成される。
【０１０９】
【数４】
2008098690.tif 000006
【０１１０】
そして、テーブルＴａｉｊ（ｉ∈｛２，４，６，８｝）は、ランダムな全単射Ａのテーブルと、ラウンド鍵ｋａｉｊと、非線形変換Ｓを予め計算したテーブルと、線形変換Ｍｕを予め計算したテーブルと、３２ビットのデータｓａｉｊと、全単射Ａの逆変換Ａ−１のテーブルとに基づいて作成される。
【０１１１】
さらに、テーブルＴａ１０ｊは、ランダムな全単射Ａのテーブルと、ラウンド鍵ｋａ１０ｊ，ｋａ’１１ｊと、非線形変換Ｓを予め計算したテーブルと、線形変換Ｎｊを予め計算したテーブルと、全単射Ａの逆変換Ａ−１のテーブルとに基づいて作成される。
【０１１２】
続いて、上記のようにして作成したテーブルを用いることで、非特許文献１で提案される暗号化方法によって生成された暗号化データと同様の暗号化データが生成されることについて述べる。
【０１１３】
図１０は、非特許文献１と本発明との暗号化方法を説明するための図である。
図１０を参照して、鍵ｋａを用いた場合の非特許文献１と本発明との暗号化方法について説明する。なお、図１０では、入力データ（ｘ０１‖…‖ｘ０１６）をｘ０と表記する。出力データｙｉ、ラウンド鍵ｋａｉ、データｒａｉ，ｓａｉについても同様に表記する。また、ランダムな全単射、ビット入れ替えＣ’、複数の排他的論理和テーブルＸ，Ｙは、図を簡略化するため図示しない。なお、各テーブルの入出力における全単射は逆変換の関係にあることにより、以下の説明では、ランダムな全単射による符号化は無視して考える。
【０１１４】
図１０（Ａ）は、非特許文献１に係るデータ変換を示す図であり、図１０（Ｂ）は、本発明に係るデータ変換を示す図である。図１０では、変換ＲｉでのテーブルをＴｉＡ、Ｔｉａとする。
【０１１５】
図１０（Ａ）において、非特許文献１における変換Ｒ０の出力データ（Ｄ１００）を（ｙ０１‖…‖ｙ０１６）とする。ここで、変換Ｒ１の非線形変換Ｓへの入力データ（Ｄ１０２）は、次式（７）のようになる。
【０１１６】
【数５】
2008098690.tif 000007
【０１１７】
また、非特許文献１における変換Ｒｉ−１（ｉ∈｛３，５，７，９｝）の出力データ（Ｄ１０４）を（ｙｉ−１１‖…‖ｙｉ−１１６）とする。ここで、変換Ｒｉの非線形変換Ｓへの入力データ（Ｄ１０６）は、次式（８）のようになる。
【０１１８】
【数６】
2008098690.tif 000008
【０１１９】
一方、図１０（Ｂ）において、本発明における変換Ｒａ０の出力データ（Ｄ１２０）を（ｙａ０１‖…‖ｙａ０１６）とする。ここで、変換Ｒａ１の非線形変換Ｓへの入力データ（Ｄ１２２）は、次式（９）のようになる。なお、入力データとデータｓａ０ｊとの演算は排他的論理和演算（つまり、ガロア体における加算）であるため、（ｙａ０１‖…‖ｙａ０１６）は、（ｙ０１‖…‖ｙ０１６）と（ｓａ０１（＋）…（＋）ｓａ０１６）との排他的論理和となっている（ただし、（＋）は排他的論理和を求める演算子を表わす）。
【０１２０】
【数７】
2008098690.tif 000009
【０１２１】
また、変換Ｒａｉ−１（ｉ∈｛３，５，７，９｝）の出力データ（Ｄ１２４）を（ｙａｉ−１１‖…‖ｙａｉ−１１６）とする。ここで、変換Ｒａｉの非線形変換Ｓへの入力データ（Ｄ１２６）は、次式（１０）のようになる。
【０１２２】
【数８】
2008098690.tif 000010
【０１２３】
以上のように、式（７）（８）で示した非特許文献１の変換Ｒｉ（ｉ∈｛１，３，５，７，９｝）の非線形変換Ｓへの入力と、式（９）（１０）で示した本発明の変換Ｒａｉ（ｉ∈｛１，３，５，７，９｝）の非線形変換Ｓへの入力とは一致する。
【０１２４】
また、変換Ｒ９の非線形変換Ｓへの入力以降の処理は非特許文献１と本発明とでは同様である。
【０１２５】
したがって、鍵ｋａについて暗号化する場合、本発明の暗号化処理による暗号化データは非特許文献１の暗号化処理による暗号化データと同じになる。
【０１２６】
（２．３  他の鍵を用いる場合のテーブル利用方法）
上述したように、非特許文献１で提案される方法では、ラウンド処理ごとにテーブルを作成する。このため、複数の鍵を用いて暗号化する場合は、鍵ごとにラウンド処理に対応するテーブルを作成する必要がある。しかしながら、本発明に係る暗号化処理では、共通テーブルを使用するため、すべてのラウンド処理に対応するテーブルを作成する必要はない。以下では、上記の鍵ｋａとは異なる、鍵ｋｂについて暗号化する場合を例にとって、本発明に係る暗号化処理について、さらに説明する。
【０１２７】
図１１は、鍵ｋｂを用いた場合の本発明に係る暗号化処理を示す図である。
図１１を参照して、鍵ｋｂを用いた場合の本発明に係る暗号化処理の概略について説明する。なお、鍵ｋｂから鍵拡張アルゴリズムにしたがって導出されるラウンド鍵をｋｂｉｊ（１≦ｉ≦１１）とする。
【０１２８】
鍵ｋｂを用いた場合、変換Ｒｉ（ｉ∈｛１，３，５，７，９｝）は、図９（Ｂ）で示した、鍵ｋａを用いた場合の変換と同じである。このため、図１１において、変換Ｒｉ（ｉ∈｛１，３，５，７，９｝）については省略する。
【０１２９】
鍵ｋａの場合、変換Ｒ０では図９（Ａ）で示すようにデータｓａ０ｊを用いたが、鍵ｋｂの場合は、図１１（Ａ）で示すようにデータｓｂ０ｊを用いる。
【０１３０】
また、鍵ｋａの場合、変換Ｒｉ（ｉ∈｛２，４，６，８｝）では図９（Ｃ）で示すようにラウンド鍵ｋａｉｊ、データｓａｉｊを用いたが、鍵ｋｂの場合は、図１１（Ｂ）で示すように、ラウンド鍵ｋｂｉｊ、データｓｂｉｊを用いる。
【０１３１】
さらに、鍵ｋａの場合、変換Ｒ１０では図９（Ｄ）で示すように、ラウンド鍵ｋａ１０ｊ、データｋａ’１１ｊを用いたが、鍵ｋｂの場合は、図１１（Ｃ）で示すように、ラウンド鍵ｋｂ１０ｊ、データｋｂ’１１ｊを用いる。なお、ｋｂ’１１１，…，ｋｂ’１１１６は、鍵拡張アルゴリズムにしたがって生成したラウンド鍵ｋｂ１１１‖…‖ｋｂ１１１６をビット入れ替えＣの逆変換により変換した結果がｋｂ’１１１‖…‖ｋｂ’１１１６となるようなデータである。
【０１３２】
ここで、データｓｂ０ｊは、ｓｂ０１‖…‖ｓｂ０１６を複数の排他的論理和テーブルＹにより変換した結果が、（ｒａ１１‖…‖ｒａ１１６）と（ｋｂ１１‖…‖ｋｂ１１６）との排他的論理和となるようなデータである。
【０１３３】
また、データｓｂｉｊ（ｉ∈｛２，４，６，８｝）は、（ｓｂｉ１‖…‖ｓｂｉ１６）を複数の排他的論理和テーブルＸにより変換した結果が、（ｒａｉ＋１１‖…‖ｒａｉ＋１１６）と（ｋｂｉ＋１１‖…‖ｋｂｉ＋１１６）との排他的論理和となるようなデータである。
【０１３４】
言い換えると、データｓｂｉｊは、次式（１１）および（１２）を満たす。
【０１３５】
【数９】
2008098690.tif 000011
【０１３６】
したがって、データｓｂｉｊは、式（５）（６）を用いてデータｓａｉｊを生成したのと同様に生成することができる。これにより、テーブルＴｂｉｊ（ｉ∈｛０，２，４，６，８，１０｝）も、テーブルＴａｉｊと同様に作成することができる。
【０１３７】
図１２は、複数の鍵を用いた暗号化処理を示した概略図である。
図１２を参照して、複数の鍵ｋ（ｐ）（ｐ＝１，…，ｎ）を用いた際に利用するテーブルについて説明する。なお、図１２では、入力データ（ｘ０１‖…‖ｘ０１６）のある８ビットデータｘ０ｊに対するラウンド処理を示している。以下では、簡単のため添字ｊは省略する。ラウンド鍵ｋｉ、データｒｉ，ｓｉについても同様に省略する。また、鍵ｋ（ｐ）についてのテーブルＴｉ、ラウンド鍵ｋｉ、データｒｉ，ｓｉを、テーブルＴｉ（ｐ）、ラウンド鍵ｋｉ（ｐ）、データｒｉ（ｐ），ｓｉ（ｐ）と表記する。さらに、ランダムな全単射、ビット入れ替えＣ’、複数の排他的論理和テーブルＸ，Ｙは、図を簡略化するため図示しない。
【０１３８】
図１２に示すように、変換Ｒｉ（ｉ∈｛１，３，５，７，９｝）では、鍵ｋ（１）による暗号化処理と、その他の鍵ｋ（ｐ）（ｐ＝２，…，ｎ）による暗号化処理で同じテーブルを用いることができる。本発明では、上述のように、データｓｉ−１（ｐ）をデータｒｉ（ｐ）とラウンド鍵ｋｉ（ｐ）との排他的論理和となるように生成しているため、対となるテーブルでの処理に対応する演算は、非特許文献１で提案の方法において、引き続いて実行されるラウンド処理の演算に対応する。ただし、本発明における変換Ｒ０および変換Ｒ１で引き続いて行なわれた処理は、非特許文献１で提案の方法における最初のラウンド処理に対応する。
【０１３９】
これは、排他的論理和演算は、ガロア体ＧＦ（２）における加算であるため、実数の四則演算と同様に考えることにより、ラウンド鍵を、データｓｉ−１（ｐ）とデータｒｉ（ｐ）との加算として扱うことができるからである。
【０１４０】
したがって、複数の鍵に対応した暗号化処理を構成する際には、テーブルＴｉ（ｐ）（ｉ∈｛０，２，４，６，８，１０｝）だけを鍵ごとに用意すればよい。そして、鍵ごとにラウンド処理を実行する際に参照するテーブルの使用順序を示したリストを作成する。これにより、複数の鍵を用いて、複数の鍵それぞれに対応した暗号化処理を行なう場合、選択された鍵に応じて暗号化処理を行なうことができる。
【０１４１】
以上で説明したように、ｎ個の鍵を用いてｍ回のラウンド処理を行なうような暗号化処理の場合、非特許文献１で提案されている方法では、所定の関数と排他的論理和演算に基づいたテーブルを（ｍ×ｎ）個作成する必要がある。一方、本発明では、このようなテーブルを、ｍ＋｛（ｍ＋１）／２｝×（ｎ−１）個作成するだけで十分である。
【０１４２】
また、同様の方法により、たとえば、図１２で、変換Ｒｉ（ｉ∈｛０，２，４，６，８｝）において共通するテーブルを構成し、変換Ｒｉ（ｉ∈｛１，３，５，７，９，１０｝）において個別に使用するテーブルを構成することもできる。
【０１４３】
つまり、最終ラウンドでの変換Ｒは鍵ごとに異なるテーブルで構成する必要があるが、それ以外の変換については、変換Ｒｉ（ｉは奇数）を共通するテーブルとして構成する方法と、変換Ｒｉ（ｉは偶数）を共通するテーブルとして構成する方法とがある。
【０１４４】
ＡＥＳでは、図１８で示したようなラウンド鍵を復号化処理で用いるラウンド鍵に変更し、非線形変換ＳをＳの逆変換に変更し、線形変換ＭをＭの逆変換に変更し、ビット入れ替えＣをＣの逆変換に変更することで復号化処理が構成される。したがって、暗号化処理と同様の方法により、複数の鍵を用いた複数の復号化処理でのテーブルを作成できる。
【０１４５】
（３．  コンピュータ１００への実装）
以上の発明である暗号化・復号化処理は、以下の手続きによってコンピュータソフトウェアとして実装できる。
【０１４６】
以下、その手続きについてまとめる。まず、暗号化・復号化処理で用いるテーブルの作成手順について述べた後、暗号化・復号化処理の手順について説明する。
【０１４７】
図１３は、テーブル作成の処理の流れを具体的に示したフローチャートである。
図１３を参照して、テーブル作成の処理の流れを説明する。なお、図１３では、図１２と同様に、あるデータを所定のビットで区切ったときのビットデータを示すための添字ｊは省略する。また、鍵ｋ（ｐ）についてのテーブルＴｉ、ラウンド鍵ｋｉ、データｒｉ，ｓｉを、テーブルＴｉ（ｐ）、ラウンド鍵ｋｉ（ｐ）、データｒｉ（ｐ），ｓｉ（ｐ）と表記する。
【０１４８】
ステップＳ１３００において、ＣＰＵ１２０は、与えられたｎ個の鍵を読み込み、鍵番号を示すインデックスｐを１に設定する。
【０１４９】
ステップＳ１３０２において、ＣＰＵ１２０は、鍵ｋ（ｐ）について、鍵拡張アルゴリズムにしたがって、ラウンド鍵ｋｉ（ｐ）（１≦ｉ≦ｒ（ただし、ｒはラウンド処理の実行回数））を生成する。そして、ＣＰＵ１２０は、生成したラウンド鍵ｋｉ（ｐ）をハードディスク１２４に書き込む。
【０１５０】
ステップＳ１３０４において、ＣＰＵ１２０は、鍵番号ｐが１かどうかを判定する。
鍵番号ｐが１と判断した場合（ステップＳ１３０４にて、ＹＥＳ）、ステップＳ１３０６において、ＣＰＵ１２０は、上記の（２．２）節で説明したように、データｓｉ（１），ｒｉ（１）（１≦ｉ≦ｒ）を生成する。そして、ＣＰＵ１２０は、生成したデータｓｉ（１），ｒｉ（１）をハードディスク１２４に書き込む。
【０１５１】
続いて、ステップＳ１３０８において、ＣＰＵ１２０は、インデックスｉとｃをゼロに設定する。
【０１５２】
さらに、ステップＳ１３１０において、ＣＰＵ１２０は、ハードディスク１２４に書き込まれたラウンド鍵ｋｉ（ｐ）およびデータｓｉ（１），ｒｉ（１）を読み込んで、上記の（２．２）節で説明したように、テーブルＴｉ（１）を作成する。そして、ＣＰＵ１２０は、テーブルＴｉ（１）をハードディスク１２４に書き込む。
【０１５３】
次いで、ステップＳ１３１２において、ＣＰＵ１２０は、テーブル使用順序リストのｃ番目をＴｉ（１）とする。
【０１５４】
続いて、ステップＳ１３１４において、ＣＰＵ１２０は、ｉとｃを１づつ更新する。
そして、ステップＳ１３１６において、ＣＰＵ１２０は、ｃがｒ＋１であるかどうか判定する。つまり、鍵ｋ（１）についてのテーブル使用順序リストが完成しているかどうかを判定する。
【０１５５】
テーブル使用順序リストが完成していなければ（ステップＳ１３１６にて、ＮＯ）、ステップＳ１３１０の処理に戻る。
【０１５６】
一方、鍵番号ｐが１でないと判断した場合（ステップＳ１３０４にて、ＮＯ）、ステップＳ１３１８において、ＣＰＵ１２０は、上記の（２．２）節で説明したように、データｓｉ（ｐ）（１≦ｉ≦ｒ）を生成する。そして、ＣＰＵ１２０は、生成したデータｓｉ（ｐ）をハードディスク１２４に書き込む。
【０１５７】
続いて、ステップＳ１３２０において、ＣＰＵ１２０は、インデックスｈを１に、インデックスｉとｃをゼロに設定する。
【０１５８】
さらに、ステップＳ１３２２において、ＣＰＵ１２０は、ハードディスク１２４に書き込まれたラウンド鍵ｋｉ（ｐ）およびデータｓｉ（ｐ）を読み込んで上記の（２．２）節で説明したように、テーブルＴｉ（ｐ）を作成する。そして、ＣＰＵ１２０は、テーブルＴｉ（ｐ）をハードディスク１２４に書き込む。
【０１５９】
次いで、ステップＳ１３２４において、ＣＰＵ１２０は、テーブル使用順序リストのｃ番目をＴｉ（ｐ）、（ｃ＋１）番目をＴｈ（１）とする。
【０１６０】
続いて、ステップＳ１３２６において、ＣＰＵ１２０は、ｈ，ｉ，ｃを２づつ更新する。
【０１６１】
そして、ステップＳ１３２８において、ＣＰＵ１２０は、ｃがｒ＋１であるかどうか判定する。つまり、鍵ｋ（ｐ）についてのテーブル使用順序リストが完成しているかどうかを判定する。
【０１６２】
テーブル使用順序リストが完成していなければ（ステップＳ１３２８にて、ＮＯ）、ステップＳ１３２２の処理に戻る。
【０１６３】
テーブル使用順序リストが完成していれば（ステップＳ１３１６およびステップＳ１３２８にて、ＹＥＳ）、ステップＳ１３３０において、ＣＰＵ１２０は、テーブル使用順序リストと鍵番号とを関連付けて、ハードディスク１２４に書き込む。
【０１６４】
続いて、ステップＳ１３３２において、ＣＰＵ１２０は、ｐがｎかどうか判定する。つまり、すべての鍵についてテーブルを作成したかどうかを判定する。
【０１６５】
すべての鍵についてテーブルを作成していないと判断すれば（ステップＳ１３３２にて、ＮＯ）、ステップＳ１３３４において、ｐを１更新する。
【０１６６】
一方、すべての鍵についてテーブルを作成したと判断すれば（ステップＳ１３３２にて、ＹＥＳ）、テーブル作成の処理を終了する。
【０１６７】
図１４は、テーブル使用順序リストを示した図である。
図１４を参照して、テーブル使用順序リストについて説明する。なお、図１４は、ｎ個の鍵を用いて、変換Ｒｉ（０≦ｉ≦１０）を実行して暗号化処理を行なう場合のテーブル使用順序リストを示している。
【０１６８】
複数の鍵を示す鍵リスト１４０２における各鍵と、その鍵を用いて暗号化処理を行なう際に順次使用するテーブルを示したテーブル使用順序リスト１４０４とが関連付けられている。
【０１６９】
テーブル使用順序リスト１４０４は、鍵ごとに個別に作成されるテーブル（白抜き部分）と共通テーブル（網掛け部分）とから構成される。なお、図１４では、左から順に、暗号化処理で使用するテーブルが示されている。テーブル使用順序リストは、たとえば、配列によってリストを構成する場合、ＣＰＵが、各セルにハードディスク中におけるテーブルのアドレスを書き込むことで実現することができる。
【０１７０】
また、図１３，１４で示したのと同様の手順で、復号化処理で使用するテーブルおよび復号化処理でのテーブル使用順序リストを作成し、ハードディスク１２４に書き込む。さらに、テーブルＸ，Ｙについても共通して使用するテーブルとして予め作成しておき、ハードディスク１２４に書き込んでおく。
【０１７１】
続いて、暗号化・復号化処理の手順について説明する。
図１５は、暗号化処理の流れを示したフローチャートである。
【０１７２】
図１５を参照して、ＣＰＵ１２０が暗号化処理を行なう手順について説明する。
まず、ステップＳ１５００において、ＣＰＵ１２０は、暗号化対象データを取得する。暗号化対象データは、ハードディスク１２４に予め与えられていてもよいし、通信インタフェース１２８を介して外部から与えられてもよい。また、ＣＤ−ＲＯＭ１１８等の記録媒体によって与えられてもよい。
【０１７３】
続いて、ステップＳ１５０２において、ＣＰＵ１２０は、暗号化処理に用いる鍵番号を取得する。なお、鍵番号は、複数の暗号化処理のそれぞれに対応付けられている。
【０１７４】
そして、ステップＳ１５０４において、ＣＰＵ１２０は、鍵番号と関連付けられたテーブル使用順序リストにしたがって、ハードディスク１２４からテーブルを読み込み、暗号化処理を実行する。暗号化データは、ハードディスク１２４に書き込まれる。この際、暗号化データと暗号化処理で使用した鍵とを対応付けておく。
【０１７５】
ＣＰＵ１２０は、以上のようにして暗号化処理を実行する。
図１６は、復号化処理の流れを示したフローチャートである。
【０１７６】
図１６を参照して、ＣＰＵ１２０が復号化処理を行なう手順について説明する。
まず、ステップＳ１６００において、ＣＰＵ１２０は、暗号化データを読み込む。暗号化データは、ハードディスク１２４に与えられていてもよいし、通信インタフェース１２８を介して外部から与えられてもよい。また、ＣＤ−ＲＯＭ１１８等の記録媒体によって与えられてもよい。
【０１７７】
続いて、ステップＳ１６０２において、ＣＰＵ１２０は、復号化処理に用いる鍵番号を読み込む。これは、暗号化処理で用いられた鍵であり、暗号化データと共に与えられる。
【０１７８】
そして、ステップＳ１６０４において、ＣＰＵ１２０は、鍵番号と対応付けられたテーブル使用順序リストにしたがって、ハードディスク１２４からテーブルを読み込み、復号化処理を実行し、もとの平文データを出力する。
【０１７９】
ＣＰＵ１２０は、以上のようにして復号化処理を実行する。
以上で説明したように、本実施の形態に係る暗号化・復号化装置によれば、複数の鍵を用いた複数の暗号化処理において、各暗号化処理を別々に構成するのではなく、暗号化処理を構成するテーブルの一部を共有する。これにより、暗号化処理を構成するテーブルのサイズの増加を抑制することができる。復号化処理についても同様に、復号化処理を構成するテーブルのサイズの増加を抑制することができる。
【０１８０】
また、本実施の形態に係る暗号化・復号化装置によれば、暗号化処理においてラウンド鍵を用いたデータ変換を、入出力がスクランブルされたテーブルで構成しているため、鍵を秘匿することができる。復号化処理についても同様に鍵を秘匿することができる。
【０１８１】
［実施の形態２］
本実施の形態では、実施の形態１に係る暗号化・復号化処理の具体的な利用シーンについて説明する。
【０１８２】
図１７は、本実施の形態に係るコンテンツの配信システムを説明するための図である。
図１７を参照して、コンテンツの配信システム１７００について説明する。ここで、図１７（Ａ）は、配信システム１７００の構成図であり、図１７（Ｂ）は、配信用暗号化コンテンツの構成図である。なお「コンテンツ」とは、あらゆる種類のデータを対象とすることができる。対象となる主なデータとしては、不正利用を防ぎたいデータ、たとえば、著作権などがあるデジタルデータ、課金情報その他のデータである。より具体的には、たとえば、音楽や画像、動画、電子書籍などのデータ、あるいは、携帯電話、パーソナルコンピュータ等のデータを利用することができる装置内で実行可能なプログラムなどである。
【０１８３】
図１７（Ａ）に示すように、配信システム１７００は、コンテンツを作成するためのコンテンツ作成装置１７０１と、サーバ処理装置１７１０と、コンテンツを実行するためのコンテンツ実行装置１７２０とから構成される。
【０１８４】
コンテンツ作成装置１７０１は、コンテンツ作成者がコンテンツを入力するためのコンテンツ入力部１７０２と、コンテンツ作成者がコンテンツの暗号化に使用する暗号化処理の番号を選択するための暗号化処理選択部１７０３と、選択された番号の暗号化処理を用いてコンテンツを暗号化するため暗号化部１７０５と、データを送受信するための送受信部１７０７とを備える。コンテンツ作成装置１７０１は、たとえば、汎用的なパーソナルコンピュータで構成される。
【０１８５】
暗号化部１７０５は、図１７（Ｂ）に示すような、暗号化コンテンツ１７５２に対し、選択された番号の暗号化処理を示す暗号化処理番号１７５０を付加した配信用暗号化コンテンツ１７５４を出力する。なお、暗号化部１７０５が暗号化する際は、実施の形態１で説明したようなテーブルを利用する。
【０１８６】
図１７（Ａ）に戻って、送受信部１７０７は、ネットワーク回線１７３０を介してサーバ処理装置１７１０へ配信用暗号化コンテンツを送信する。
【０１８７】
サーバ処理装置１７１０は、コンテンツ作成装置１７０１およびコンテンツ実行装置１７２０とデータを送受信するための送受信部１７１１と、コンテンツ作成装置１７０１から送信されてきた配信用暗号化コンテンツを保存するためのコンテンツデータベース１７１３とを備える。サーバ処理装置１７１０は、たとえば、汎用的なパーソナルコンピュータで構成される。
【０１８８】
サーバ処理装置１７１０は、コンテンツ実行装置１７２０から送信要求があれば、要求を受けた配信用暗号化コンテンツを送受信部１７１１からネットワーク回線１７４０を介してコンテンツ実行装置１７２０に送信する。
【０１８９】
コンテンツ実行装置１７２０は、データを送受信するための送受信部１７２１と、ユーザからの指示を処理するためのユーザ指示処理部１７２２と、コンテンツを保存しておくための記憶装置１７２３と、暗号化コンテンツを復号するための復号化部１７２４と、コンテンツを実行するためのコンテンツ実行部１７２５とを備える。コンテンツ実行装置１７２０は、たとえば、汎用的なパーソナルコンピュータで構成される。
【０１９０】
ユーザは、たとえば、コンテンツ実行装置１７２０のモニタ（図示しない）上に表示されているコンテンツの中から所望のコンテンツを、ユーザ指示処理部１７２２を介して選択する。送受信部１７２１は、サーバ処理装置１７１０にコンテンツの送信要求を送信する。その後、サーバ処理装置１７１０から送られてくる配信用暗号化コンテンツを送受信部１７２１で受信し、記憶装置１７２３に保存する。保存された配信用暗号化コンテンツは、復号化部１７２４において読み出される。さらに復号化部１７２４において、配信用暗号化コンテンツは暗号化処理番号と暗号化コンテンツに分離され、暗号化コンテンツは暗号化処理番号と同一の番号の復号化処理を用いて復号される。復号されたコンテンツはコンテンツ実行部１７２５で実行される。なお、復号化部１７２４が復号化する際は、実施の形態１で示したようなテーブルを利用する。
【０１９１】
たとえば、コンテンツが電子書籍である場合には、モニタに電子書籍のページを表示する。また、たとえば、コンテンツが音楽である場合には、音声出力装置から音声を出力する。また、ユーザが、所望の実行制御データを、ユーザ指示処理部１７２２を介して入力すると、コンテンツ実行部１７２５では、入力に応じた実行制御が行なわれる。たとえば、コンテンツが電子書籍である場合には、ユーザからページめくりなどの指示を受けると、表示されているページとは異なるページを表示する。たとえば、コンテンツが音楽である場合には、ユーザから再生停止の指示を受けると、音声の出力を停止する。
【０１９２】
以上で説明したように、本実施の形態に係るコンテンツ配信システムは、実施の形態１の効果に加え、コンテンツ作成装置とコンテンツ実行装置間で安全にコンテンツの送受信ができる。
【０１９３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１９４】
【図１】非特許文献１で提案されている暗号化処理の概略を示す図である。
【図２】複数の排他的論理和テーブルＸの論理的な処理の流れを示した図である。
【図３】３２ビットデータ同士の排他的論理和のテーブル化を示した図である。
【図４】複数の排他的論理和テーブルＹの論理的な処理の流れを示した図である。
【図５】各テーブル間の関係を示した図である。
【図６】コンピュータ１００のハードウェア構成を示すブロック図である。
【図７】暗号化処理を行なう場合のＣＰＵ１２０の機能的構成を示した機能ブロック図である。
【図８】復号化処理を行なう場合のＣＰＵ１２０の機能的構成を示した機能ブロック図である。
【図９】鍵ｋａを用いた場合の本発明に係る暗号化処理を示す図である。
【図１０】非特許文献１と本発明との暗号化方法を説明するための図である。
【図１１】鍵ｋｂを用いた場合の本発明に係る暗号化処理を示す図である。
【図１２】複数の鍵を用いた暗号化処理を示した概略図である。
【図１３】テーブル作成の処理の流れを具体的に示したフローチャートである。
【図１４】テーブル使用順序リストを示した図である。
【図１５】暗号化処理の流れを示したフローチャートである。
【図１６】復号化処理の流れを示したフローチャートである。
【図１７】本実施の形態に係るコンテンツの配信システムを説明するための図である。
【図１８】ＡＥＳにおける暗号化処理の概略を示す図である。
【図１９】ビット入れ替えＣを示す図である。
【図２０】変換Ｒｉを実装する際の流れを示す図である。
【図２１】線形変換Ｍと線形変換Ｍｕとの関係を示す図である。
【符号の説明】
【０１９５】
１００  コンピュータ、１０４  モニタ、１０６  ＦＤドライブ、１０８  光ディスクドライブ、１１０  キーボード、１１２  マウス、１１６  ＦＤ、１１８  ＣＤ−ＲＯＭ、１２０  ＣＰＵ、１２２  メモリ、１２４  ハードディスク、１２８  通信インターフェイス、７００  暗号化処理選択部、７０２  暗号化部、７１０  暗号化テーブル使用順序リスト、７１２，８１２  鍵ごとの個別テーブル、７１４，８１４  共通テーブル、７２０  鍵番号、７２２  平文データ、７２４  暗号化データ、８００  復号化処理選択部、８０２  復号化部、８１０  復号化テーブル使用順序リスト、１７００  配信システム、１７０１  コンテンツ作成装置、１７０２  コンテンツ入力部、１７０３  暗号化処理選択部、１７０５  暗号化部、１７０７，１７１１，１７２１  送受信部、１７１０  サーバ処理装置、１７１３  コンテンツデータベース、１７２０  コンテンツ実行装置、１７２２  ユーザ指示処理部、１７２３  記憶装置、１７２４  復号化部、１７２５  コンテンツ実行部、１７３０，１７４０  ネットワーク回線、１７５０  暗号化処理番号、１７５２  暗号化コンテンツ、１７５４  配信用暗号化コンテンツ。
【図１】
2008098690.tif 000012
【図２】
2008098690.tif 000013
【図３】
2008098690.tif 000014
【図４】
2008098690.tif 000015
【図５】
2008098690.tif 000016
【図６】
2008098690.tif 000017
【図７】
2008098690.tif 000018
【図８】
2008098690.tif 000019
【図９】
2008098690.tif 000020
【図１０】
2008098690.tif 000021
【図１１】
2008098690.tif 000022
【図１２】
2008098690.tif 000023
【図１３】
2008098690.tif 000024
【図１４】
2008098690.tif 000025
【図１５】
2008098690.tif 000026
【図１６】
2008098690.tif 000027
【図１７】
2008098690.tif 000028
【図１８】
2008098690.tif 000029
【図１９】
2008098690.tif 000030
【図２０】
2008098690.tif 000031
【図２１】
2008098690.tif 000032