(57)【要約】  【課題】  画暗号化処理または復号化処理を行う際の計算量を低減させつつ、高いビット変化率および暗号強度を実現する暗号化・復号化システムを提供する。  【解決手段】  暗号化処理部１１０は、平文データ１０を受け取ると、暗号鍵テーブル２１０を参照して、受け取った平文データ１０を所定の平文文字単位で暗号化し、この処理を必要に応じて繰り返し、暗号文データを生成する。一方、復号化処理部１２０は、暗号文データ２０を受け取ると、復号鍵テーブル２２０を参照して、受け取った暗号文データを暗号文字単位で復号化し、平文データを生成する。ここで、復号鍵テーブル２２０は、データの格納位置を示すエントリー値と、当該エントリーに格納されている値との関係が、暗号鍵テーブル２１０とは逆になるような関係を有している。また、２のｎ乗数のサイズのデータについては、除算を用いることなく、当該データの暗号化等が実現される。【選択図】  図１
2010246055.tif 000002
【特許請求の範囲】
【請求項１】
各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルと、
平文データを、平文文字単位で暗号化し暗号文データを生成する暗号化手段と、
前記暗号文データを復号化する復号化手段とを備え、
前記暗号化手段は、
前記平文データから、順次平文文字を抽出し、
前記平文文字の内容に基づいて、暗号鍵テーブルのエントリーを決定し、
決定された前記暗号鍵テーブルのエントリーに記憶される値に基づいて、前記平文文字に対応する暗号鍵を決定し、
決定された前記暗号鍵を、第１インデックスで指定される暗号文データの位置にセットし、
前記復号化手段は、
前記暗号文データから、前記平文文字と同じ単位で順次暗号文字を抽出し、
前記暗号文字の内容に基づいて、復号鍵テーブルのエントリーを決定し、
決定された前記復号鍵テーブルのエントリーに記憶される値に基づいて、前記暗号文字に対応する復号鍵を決定し、
決定された前記復号鍵を、第２インデックスで指定される平文データの位置にセットし、
前記第１インデックスは、前記平文データにおける前記平文文字の位置に基づいて決定され、前記第２インデックスは、前記暗号文データにおける前記暗号文字の位置に基づいて決定されることを特徴とする暗号化・復号化システム。
【請求項２】
請求項１に記載の暗号化・復号化システムにおいて、
前記復号鍵テーブルは、エントリーを表す値と当該エントリーに格納されている値との関係が、前記暗号鍵テーブルとは逆になるように設定されていることを特徴とする暗号化・復号化システム。
【請求項３】
各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルと、
平文データを、平文文字単位で暗号化し暗号文データを生成する暗号化手段とを備え、
前記暗号化手段は、
前記平文データから、順次平文文字を抽出し、
前記平文文字の内容に基づいて、暗号鍵テーブルのエントリーを決定し、
決定された前記暗号鍵テーブルのエントリーに記憶される値に基づいて、前記平文文字に対応する暗号鍵を決定し、
決定された前記暗号鍵を、インデックスで指定される暗号文データの位置にセットし、
前記インデックスは、前記平文データにおける前記平文文字の位置に基づいて決定されることを特徴とする暗号化装置。
【請求項４】
請求項３に記載の暗号化装置において、
前記インデックスを、前記平文データにおける前記平文文字の位置、および前記平文データのサイズを用いて計算し、
前記サイズが２のｎ乗数である場合に、除算を用いない方法で前記計算が行われることを特徴とする暗号化装置。
【請求項５】
請求項３に記載の暗号化装置において、
前記暗号化手段は、生成された前記暗号文データを同じ手順でさらに暗号化することにより、前記平文データに対して暗号化を複数回行うよう制御することを特徴とする暗号化装置。
【請求項６】
請求項３に記載の暗号化装置において、
前記暗号化手段は、
前記平文文字に対応する暗号鍵を、決定された前記暗号鍵テーブルのエントリーに記憶される値と、以前に決定された暗号鍵とを用いて決定することを特徴とする暗号化装置。
【請求項７】
各エントリーに、それぞれ異なる復号鍵を格納する復号鍵テーブルと、
暗号文を、暗号文字単位で復号化し平文データを生成する復号化手段とを備え、
前記復号化手段は、
前記暗号文データから、順次暗号文字を抽出し、
前記暗号文字の内容に基づいて、復号鍵テーブルのエントリーを決定し、
決定された前記復号鍵テーブルのエントリーに記憶される値に基づいて、前記暗号文字に対応する復号鍵を決定し、
決定された前記復号鍵を、インデックスで指定される平文データの位置にセットし、
前記インデックスは、前記暗号文データにおける前記暗号文字の位置に基づいて決定されることを特徴とする復号化装置。
【請求項８】
平文データから、順次、所定単位の平文文字を抽出するステップと、
各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルのエントリーを、前記平文文字の内容に基づいて決定するステップと、
決定された前記暗号鍵テーブルのエントリーに記憶される値に基づいて、前記平文文字に対応する暗号鍵を決定するステップと、
決定された前記暗号鍵を、インデックスで指定される暗号文データの位置にセットすることにより、暗号文データを生成するステップとを有し、
前記インデックスは、前記平文データにおける前記平文文字の位置に基づいて決定されることを特徴とする暗号化方法。
【請求項９】
暗号文データから、順次、所定単位の暗号文字を抽出するステップと、
各エントリーに、それぞれ異なる復号鍵を格納する復号鍵テーブルのエントリーを、前記暗号文字の内容に基づいて決定するステップと、
決定された前記復号鍵テーブルのエントリーに記憶される値に基づいて、前記暗号文字に対応する復号鍵を決定するステップと、
決定された前記復号鍵を、インデックスで指定される平文データの位置にセットすることにより、平文データを生成するステップとを有し、
前記インデックスは、前記暗号文データにおける前記暗号文字の位置に基づいて決定されることを特徴とする復号化方法。
【請求項１０】
コンピュータに暗号化手段として機能させるプログラムであって、
前記暗号化手段は、
前記平文データから、順次平文文字を抽出し、
各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルのエントリーを、前記平文文字の内容に基づいて決定し、
決定された前記暗号鍵テーブルのエントリーに記憶される値に基づいて、前記平文文字に対応する暗号鍵を決定し、
決定された前記暗号鍵を、インデックスで指定される暗号文データの位置にセットすることによって、暗号文データを生成し、
前記インデックスは、前記平文データにおける前記平文文字の位置に基づいて決定されることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、平文データを暗号化し、暗号化されたデータを平文データに復号化する暗号化・復号化システムに関する。
【背景技術】
【０００２】
近年、インターネットを利用して、音楽データのダウンロードや、ビジネスデータのやりとりなどが盛んに行われるようになってきており、同時に、こうした、ネットワーク上で送受信されるデータの機密性を保持する必要性も高まってきている。
【０００３】
一般的に、ネットワークを介してデータを送信するユーザは、そのデータについて暗号化を行い、復号キーを有さない第三者には当該データの内容が開示されないようにする。従来の暗号化方法で代表的なものには、公開鍵暗号方式であるＲＳＡ、共通鍵暗号方式であるＤＥＳ（Data Encryption Standard）がある。
【０００４】
この他にも、たとえば、特許文献１では、暗号化関数として、平文データの文字列の内容、およびその文字列の位置に依存する関数が採用され、暗号化処理に用いられる乱数が、平文の文字列の内容に応じて選択される暗号化方法が提案されている。
【特許文献１】特開２００１−２０３６８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来の暗号化方式では、ＸＯＲ、乗算、除算等のビット演算を多く用いて複雑にデータを変化させ、高いビット変化率と暗号強度を獲得しようとするものであるが、そのような複雑な演算のために全体の計算量が増大し、暗号化処理を行う処理速度が遅くなってしまうという問題点がある。また、上述の特許文献１のような方法では、平文データの文字ごとに、対応する乱数表を切り替えて暗号化するという単純なものであり、多くのパターンの乱数表を用意しなければならないという仕組みの複雑さや、暗号強度の面で十分とは言えない。
【０００６】
したがって、本発明の目的は、暗号化処理または復号化処理を行う際の計算量を低減させつつ、高いビット変化率および暗号強度を実現する暗号化・復号化システムを提供することにある。
【０００７】
また、本発明の目的は、平文データの内容を、暗号鍵テーブルをアクセスする際のインデックスとして用いるなどして、暗号化処理を、よりシンプルなロジックで実現実現する暗号化・復号化システムを提供することにある。また、復号化処理についても、どうようにシンプルなロジックで実現される。
【課題を解決するための手段】
【０００８】
本発明の第１実施態様は、各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルと、平文データを、平文文字単位で暗号化し暗号文データを生成する暗号化手段と、暗号文データを復号化する復号化手段とを備える暗号化・復号化システムである。ここで、暗号化手段は、平文データから、順次平文文字を抽出し、平文文字の内容に基づいて、暗号鍵テーブルのエントリーを決定し、決定された暗号鍵テーブルのエントリーに記憶される値に基づいて、平文文字に対応する暗号鍵を決定し、決定された暗号鍵を、第１インデックスで指定される暗号文データの位置にセットするよう構成され、一方、復号化手段は、暗号文データから、平文文字と同じ単位で順次暗号文字を抽出し、暗号文字の内容に基づいて、復号鍵テーブルのエントリーを決定し、決定された復号鍵テーブルのエントリーに記憶される値に基づいて、暗号文字に対応する復号鍵を決定し、決定された復号鍵を、第２インデックスで指定される平文データの位置にセットするように構成される。また、第１インデックスは、平文データにおける平文文字の位置に基づいて決定され、第２インデックスは、暗号文データにおける暗号文字の位置に基づいて決定される。
【０００９】
本発明の第２実施態様は、上述の第１実施態様において、復号鍵テーブルが、エントリーを表す値と当該エントリーに格納されている値との関係に関し、暗号鍵テーブルとは逆になるように構成される。
【００１０】
本発明の第３実施態様は、各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルと、平文データを、平文文字単位で暗号化し暗号文データを生成する暗号化手段とを備える暗号化装置である。ここで、暗号化手段は、平文データから、順次平文文字を抽出し、平文文字の内容に基づいて、暗号鍵テーブルのエントリーを決定し、決定された暗号鍵テーブルのエントリーに記憶される値に基づいて、平文文字に対応する暗号鍵を決定し、決定された暗号鍵を、インデックスで指定される暗号文データの位置にセットするように構成され、インデックスは、平文データにおける平文文字の位置に基づいて決定される。
【００１１】
本発明の第４実施態様は、上述の第３実施態様において、インデックスを、平文データにおける平文文字の位置、および平文データのサイズを用いて計算し、サイズが２のｎ乗数である場合に、除算を用いない方法で計算が行われるように構成される。
【００１２】
本発明の第５実施態様は、上述の第３実施態様において、暗号化手段は、生成された暗号文データを同じ手順でさらに暗号化することにより、平文データに対して暗号化を複数回行うよう制御するように構成される。また、これらの複数回の暗号化処理のそれぞれにおいて、決定された暗号鍵をセットする暗号文データ内の位置を変化させるように制御することができる。
【００１３】
本発明の第６実施態様は、上述の第３実施態様において、暗号化手段は、平文文字に対応する暗号鍵を、決定された暗号鍵テーブルのエントリーに記憶される値と、以前に決定された暗号鍵とを用いて決定するように構成される。
【００１４】
本発明の第７実施態様は、各エントリーに、それぞれ異なる復号鍵を格納する復号鍵テーブルと、暗号文を、暗号文字単位で復号化し平文データを生成する復号化手段とを備える復号化装置である。ここで、復号化手段は、暗号文データから、順次暗号文字を抽出し、暗号文字の内容に基づいて、復号鍵テーブルのエントリーを決定し、決定された復号鍵テーブルのエントリーに記憶される値に基づいて、暗号文字に対応する復号鍵を決定し、決定された復号鍵を、インデックスで指定される平文データの位置にセットする。また、インデックスは、暗号文データにおける暗号文字の位置に基づいて決定される。
【００１５】
本発明の第８実施態様は、平文データから、順次、所定単位の平文文字を抽出するステップと、各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルのエントリーを、平文文字の内容に基づいて決定するステップと、決定された暗号鍵テーブルのエントリーに記憶される値に基づいて、平文文字に対応する暗号鍵を決定するステップと、決定された暗号鍵を、インデックスで指定される暗号文データの位置にセットすることにより、暗号文データを生成するステップとを有する暗号化方法である。ここで、インデックスは、平文データにおける平文文字の位置に基づいて決定される。
【００１６】
本発明の第９実施態様は、暗号文データから、順次、所定単位の暗号文字を抽出するステップと、各エントリーに、それぞれ異なる復号鍵を格納する復号鍵テーブルのエントリーを、暗号文字の内容に基づいて決定するステップと、決定された復号鍵テーブルのエントリーに記憶される値に基づいて、暗号文字に対応する復号鍵を決定するステップと、決定された復号鍵を、インデックスで指定される平文データの位置にセットすることにより、平文データを生成するステップとを有する復号化方法である。ここで、インデックスは、暗号文データにおける暗号文字の位置に基づいて決定される。
【００１７】
本発明の第１０実施態様は、コンピュータに暗号化手段として機能させるプログラムであり、この暗号化手段は、平文データから、順次平文文字を抽出し、各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルのエントリーを、平文文字の内容に基づいて決定し、決定された暗号鍵テーブルのエントリーに記憶される値に基づいて、平文文字に対応する暗号鍵を決定し、決定された暗号鍵を、インデックスで指定される暗号文データの位置にセットすることによって、暗号文データを生成するように構成される。また、インデックスは、平文データにおける平文文字の位置に基づいて決定される。
【発明の効果】
【００１８】
本発明に係る暗号化・復号化システムによって、暗号化処理または復号化処理を行う際の計算量が低減され、それと同時に、高いビット変化率および暗号強度が実現される。また、本発明に係る暗号化・復号化システムによって、暗号化処理や復号化処理が、よりシンプルなロジックで実現される。これは、たとえば、平文データの内容を、暗号鍵テーブルをアクセスする際のインデックスとして用いたり、暗号化の計算において、乗算および除算等の、負荷の高い演算を効果的に排除するといった、処理方式上の様々な工夫により達成される。
【発明を実施するための最良の形態】
【００１９】
最初に、本発明の一実施形態に係る暗号化・復号化システムの概要を、図１の機能ブロック図を参照して説明する。本発明の暗号化・復号化システム１は、制御部１００、暗号化処理部１１０、および復号化処理部１２０を含むように構成される。
【００２０】
制御部１００は、暗号化を行う場合に、平文データ１０を暗号化処理部１１０に提供するとともに、暗号化処理部１１０から出力されたデータを暗号文データ２０として記録したり、外部に提供したりする。また、制御部１００は、復号化を行う場合に、暗号文データ２０を復号化処理部１２０に提供するとともに、復号化処理部１２０から出力されたデータを平文データ１０として記録したり、外部に提供したりする。
【００２１】
本発明の暗号化および復号化においては、平文データ１０および暗号文データ２０が、２のｎ乗数のサイズでそれぞれ、暗号化処理部１１０、復号化処理部１２０に提供されることにより、乗算はもちろん除算をも用いない方法で計算が行われ、結果的に計算量の大幅な低減が図られるため、制御部１００は、平文データ１０を暗号化処理部１１０に提供する際、または暗号文データ２０を復号化処理部１２０に提供する際に、これらのデータを、所定の「２のｎ乗数」のサイズのデータにブロック化する。また、制御部１００は、暗号化処理部１１０から、ブロック化された平文データを暗号化した暗号文データを受け取った場合、これらの暗号文データを結合して、元の平文データ１０に対応する暗号文データ２０とする。復号化処理部１２０から、ブロック化された暗号文データを復号した平文データを受け取った場合も同様である。
【００２２】
また、平文データ１０や暗号文データ２０が、上記所定の「２のｎ乗数」で割りきれない場合は、少なくとも１回、「２のｎ乗数」でないサイズのデータを、暗号化処理部１１０または復号化処理部１２０に提供する必要がある。しかしながら、制御部１００は、平文データ１０や暗号文データ２０の最後にダミーデータを加えて各データを「２のｎ乗数」の倍数になるようにし、暗号化処理部１１０または復号化処理部１２０に、「２のｎ乗数」でないサイズのデータが１回も提供されないようコントロールすることもできる。
【００２３】
暗号化処理部１１０は、平文データ１０の全部または一部を受け取ると、暗号鍵テーブル２１０を参照して、受け取った平文データ１０を所定の平文文字単位で暗号化し、この処理を必要に応じて繰り返し、最終的に暗号化されたデータ（暗号文データ）を生成する。
【００２４】
ここで、平文データを、１バイト（８ビット）といったサイズの平文文字を暗号化単位として暗号化するものとすると、８ビットで表現されるビットパターンの数は２５６であるため、この１バイトのすべてのパターンに対して暗号文字を対応付けることができるように、暗号鍵テーブル２１０は、２５６のエントリーを有する。また、暗号鍵テーブル２１０の各エントリーは、平文データを暗号化する暗号化単位と同じ１バイト（８ビット）で構成され、そこで、各エントリーに格納される値（暗号鍵）は、他のエントリーと重複しない必要があるため、０から２５５の数（すなわち、８ビットのすべて（２５６通り）のビットパターン）となる。なお、本明細書では、平文文字や暗号文字などのように、「文字」という用語を便宜上用いているが、これらのデータはどのようなサイズのデータであってもよい。
【００２５】
また、本明細書では、最初の配列（エントリー）に格納されたデータを０番目のエントリーのデータ（または単に０番目のデータ）といった表現で表し、最後の配列（エントリー）を、たとえば２５６個の配列がある場合は、２５５番目のエントリーのデータ（または単に２５５番目のデータ）といった表現で表す。こうした表現は、暗号鍵テーブル２１０、復号鍵テーブル２２０、平文データ、および暗号文データで共通である。
【００２６】
復号化処理部１２０は、暗号文データ２０の全部または一部を受け取ると、復号鍵テーブル２２０を参照して、受け取った暗号文データを、上述の平文文字と同じサイズの暗号文字単位で復号化し、この処理を必要に応じて繰り返し、最終的に復号化されたデータ（平文データ）を生成する。復号鍵テーブル２２０は、暗号鍵テーブル２１０と同様、所定の「２のｎ乗数」と同じ数の要素（エントリー）を備える配列であり、各エントリーには、他のエントリーと重複しない値（復号鍵）が格納される。各エントリーに格納される値は、暗号鍵テーブル２１０の各エントリーに格納された値に対して所定の関係を有したものとなっているが、詳細については後述する。
【００２７】
上述のように、本発明の暗号化・復号化システム１は、制御部１００、暗号化処理部１１０、および復号化処理部１２０を含むスタンドアロンコンピュータシステムとして構成することができるが、このような構成に限られるわけではない。たとえば、制御部１００、および暗号化処理部１１０を備えた暗号化装置として、または、制御部１００、および復号化処理部１２０を備えた復号化装置として個々に構成されうる。
【００２８】
また、図１の暗号化・復号化システム１は、制御部１００、暗号化処理部１１０、および復号化処理部１２０を、コンピュータプログラムによって実現する例を示したものであるが、制御部１００、暗号化処理部１１０、復号化処理部１２０の所定の処理部分を回路により構成することもできる。
【００２９】
さらに、図１の暗号化・復号化システム１は、制御部１００によって平文データ１０や暗号文データ２０の各処理部への提供等を制御しているが、当該制御処理を暗号化処理部１１０や復号化処理部１２０が行うように構成することもできる。また、図１に示す各処理部を１つの処理部が行うように構成することも可能である。
【００３０】
次に、図２のフローチャートを参照して、本発明の一実施形態に係る暗号化・復号化システム１の暗号化処理部１１０で実行される暗号化方法の基本的な例を説明する。まず、ステップＳ１０において、受け取った平文データのサイズ（バイト数）が２のｎ乗数であるかどうかを判定する。サイズが２のｎ乗数であるかどうかは、たとえば、サイズと、当該サイズを負の数にしたもの（一般的には、２の補数表現）との論理積（ＡＮＤ演算）の結果が、サイズと同じかどうかを判定することによって把握される。この例では、１バイト（８ビット）単位、すなわち、１文字単位で暗号化が行われ、受け取った平文データは、サイズ（バイト数）と同じ数の要素（エントリー）を備える配列として扱われる。各要素には、１バイト（８ビット）のデータが格納されていることになる。
【００３１】
ステップＳ１０で、サイズが２のｎ乗数である場合、ステップＳ２０に進み、ステップＳ２０からステップＳ２５までのループ１Ａが実行される。図１に関して説明したように、制御部１００によって平文データ１０が２のｎ乗数のサイズでブロック化されて暗号化処理部１１０に提供されるので、ほとんどの平文データのブロックに関して、ループ１Ａが実行されることになる。ループ１Ａでは、１ずつ増加するカウンタｃが、０から始まって、サイズから１を減じた数になるまで繰り返される。すなわち、カウンタｃは、ループ１Ａのそれぞれにおいて、２のｎ乗数のサイズの平文データを、最初のエントリーから最後のエントリーまで、順に１文字（１バイト文字）ずつ指し示すことになり、こうして指示された文字が１つずつ、当該ループにおいて暗号化の対象となる。
【００３２】
次に、ステップＳ２１において、インデックスｉを決定する。インデックスｉは、暗号化された平文データの１文字を格納する暗号文データのエントリーであり、これによって、平文データのｃ番目にある文字が暗号化され、暗号文データのｉ番目に格納されることが決定される。ここで、インデックスｉは、平文データの各文字を、暗号文データの異なるエントリーにそれぞれ振り分けることができるように求められる必要があり、ここでは、カウンタｃを平文データのサイズ（ｓｉｚｅ）で割った余り（すなわち、ｃ  ｍｏｄ  ｓｉｚｅ）をインデックスｉとしている。そして、これを求める計算式は、たとえば、カウンタｃと、平文データのサイズから１を減じた数との論理積（ＡＮＤ演算）となる（すなわち、ｉ＝ｃ＆（ｓｉｚｅ−１））。サイズが２のｎ乗数のときには、こうした計算式により、剰余を、除算を用いることなく求めることができるのであり、暗号化処理において、大きな負荷となる除算を使わないようにすることができる。
【００３３】
その後、ステップＳ２２において、平文データのｃ番目にある文字を平文文字ｈとして、ブロック化された平文データから抽出し、ステップＳ２３において、その平文文字ｈに対応する暗号文字（暗号鍵）ｅを算出する。ここで、暗号文字ｅは、暗号鍵テーブルのｈ番目のエントリーに格納されているデータである。たとえば、平文文字ｈは、１バイト（８ビット）なので、ビット列のパターンとしては、０ｘ００（「０ｘ」は、その後の数が１６進数であることを意味する）から０ｘＦＦまでの２５６通りが考えられる。これを、暗号鍵テーブルの０から２５５までの２５６個のエントリーのインデックスに対応付けるのである。平文データが、半角英数からなる英文データであるような場合は、平文文字ｈをＡＳＣＩＩコードのような１バイト系文字コードと考えることができるが、２バイト系文字コードが格納されていてもよいし、その他のどのようなデータであってもよい。
【００３４】
したがって、平文文字ｈのビット列が０ｘ４２（１０進数では６６）であった場合、暗号鍵テーブルの６６番目のエントリーに格納された文字が、平文文字ｈを暗合した結果として求められる。次に、ステップＳ２４において、ステップＳ２３で求められた暗号文字ｅが、暗号文データのｉ番目のエントリーに格納される。同様に、他の平文データの各文字についてステップＳ２１からステップＳ２４までの処理が繰り返される（ループ１Ａ）。
【００３５】
一方、ステップＳ１０で、サイズが２のｎ乗数でない場合、ステップＳ３０に進み、ステップＳ３０からステップＳ３５までのループ１Ｂが実行される。図１に関して説明したように、制御部１００によって平文データ１０が２のｎ乗数のサイズでブロック化されて暗号化処理部１１０に送られてくるので、そのような制御により平文データが提供される場合は、平文データ１０の暗号化処理において、多くても１回、ステップＳ１０の判定がＮＯとなる。
【００３６】
ループ１ＢのステップＳ３１では、ループ１ＡのステップＳ２１とは異なる計算式が用いられる。すなわち、ステップＳ３１では、インデックスｉを求める計算式が、（ｉ＝ｃ％ｓｉｚｅ）といったものとなり（「％」はｃをｓｉｚｅで割った余りを返す）、この場合は、除算が用いられることになる。
【００３７】
ループ１Ｂの他の部分は、ループ１Ａと同じであるため、説明は省略する。図２のフローチャートに示すような処理手順により、暗号化処理において、計算量（処理時間）の観点から負荷の高い乗算や除算（とりわけ、除算について）の実行回数を大幅に減らすことができる。また、平文データ１０が２のｎ乗数の倍数であったり、制御部１００によって平文データ１０が２のｎ乗数の倍数に調整されたりする場合は、ステップＳ３１の処理は行われず、その場合、この暗号化処理では除算が全く使われないことになる。
【００３８】
上述のように、本明細書の例では、平文データは、２のｎ乗数である２５６（バイト）のサイズにブロック化され、暗号化処理部１１０に提供されるが、他の２のｎ乗数（たとえば、１０２４や２０４８など）のサイズでブロック化されてもよい。また、この例では、平文データを１バイト（８ビット）といった暗号化単位で暗号化しているが、その他の暗号化単位（たとえば、４ビットや２バイトなど）で、暗号化を行うようにもできる。ただし、４ビット単位に暗号化を行う場合、暗号鍵テーブル２１０は、４ビットのビットパターンすべてに対応するように、１６のエントリーを備え、各エントリーは４ビットで構成されることが好ましい。また、２バイト単位に暗号化を行う場合、暗号鍵テーブル２１０は、２バイトのビットパターンすべてに対応するように、６５５３６のエントリーを備え、各エントリーは２バイトで構成されることが好ましい。また、この例では、２のｎ乗数のサイズの平文データが提供されたときに、乗算や除算を回避するような方法で演算が行われるが、本発明の暗号化・復号化システム１では、他にもいくつかの特徴を有しており、このような、乗算や除算を回避するための演算を必須とするものではない。
【００３９】
次に、図３の例を参照して、図２のフローチャートに示した暗号化処理をより具体的に説明する。図３には、上から、平文データ、暗号鍵テーブル、暗号文データの順で、データの内容が表示され、最下部には、まとめとして、平文データと、その平文データを暗号化処理した結果得られた暗号文データが示されている。図中の矢印は、データの対応付けや操作対象等を表している。
【００４０】
この例では、平文データが２５６バイト単位でブロック化された後に提供され、平文データが２５６バイトである場合にループ１Ａの処理が行われる。２５６バイトの平文データは、エントリー０からエントリー２５５までの２５６個のエントリーからなる配列である。その平文データには、ＡＳＣＩＩコードが格納され、所定のプログラムで表示または印刷を行うと、エントリー０から順に、「ＣＢＡＤＦＧ・・・ＧＦＢＡ」といった文字が出力される。平文データを１６進数で表現すると、エントリー０から順に、０ｘ４３４２４１４４４６４７・・・４７４６４２４１となる。ここでは、暗号化単位は１バイトであり、平文データが１バイトごとに暗号化される。
【００４１】
この平文データについて、図２のフローチャートに示した暗号化処理を実行する。まず、ループ１Ａの第１ループでカウンタｃが０の場合の暗号化処理が行われる。最初に、インデックスｉが計算され（ｉ＝０  ｍｏｄ  ２５６）、ｉ＝０が求められる（ステップＳ２１）。次に、平文データのエントリー０が抽出される（ステップＳ２２）。エントリー０には、０ｘ４３（文字「Ｃ」）のデータが格納されており、これは１０進数にすると６７である。ここで、暗号鍵テーブルの６７番目のエントリーに格納されている文字「Ｆ」を暗号文字ｅとして決定する（ステップＳ２３）。最後に、インデックスｉ＝０により、「Ｆ」を暗号文データのエントリー０に格納する（ステップＳ２４）。
【００４２】
次に、ループ１Ａの第２ループでカウンタｃが１の場合の暗号化処理が行われる。最初に、インデックスｉが計算され（ｉ＝１  ｍｏｄ  ２５６）、ｉ＝１が求められる（ステップＳ２１）。次に、平文データのエントリー１が抽出される（ステップＳ２２）。エントリー１には、０ｘ４２（文字「Ｂ」）のデータが格納されており、これは１０進数にすると６６である。ここで、暗号鍵テーブルの６６番目のエントリーに格納されている文字「Ｃ」を暗号文字ｅとして決定する（ステップＳ２３）。最後に、インデックスｉ＝１により、「Ｃ」を暗号文データのエントリー１に格納する（ステップＳ２４）。
【００４３】
以下、同様にループ１Ａ内の処理を合計で２５６回繰り返すことにより、提供された２５６バイトの平文データのそれぞれの文字（バイトデータ）が、暗号鍵テーブルの対応する文字（バイトデータ）に置き換えられる（暗号化される）。平文データ内の各文字は、その文字のコードをインデックスとして暗号鍵テーブルにアクセスした場合に、対応する暗号鍵テーブルのエントリーに格納されている文字によって置き換えられる。この結果、平文データ「ＣＢＡＤＦＧ・・・ＧＦＢＡ」は、図３の最下部に示すように、暗号文データ「ＦＣＢＡＥＨ・・・ＨＥＣＢ」に暗号化される。また、提供された平文データが２５６バイトでない場合は、ループ１Ｂが実行されるが、上述のように、インデックスｉを求める計算方法以外に異なるところはない。
【００４４】
次に、図４を参照して、本発明で用いられる２つのビット演算の例について説明する。第１の演算例は、暗号化処理部１１０で、提供された平文データのサイズが２のｎ乗数であるかどうかを判定するための演算についてである。図２のステップＳ１０では、平文データのサイズと、当該サイズを負の数にしたものとの論理積（ＡＮＤ演算）の結果が、平文データのサイズと同じであれば、そのサイズが２のｎ乗であると判断する。
【００４５】
図４Ａは、ビット列Ａとして示されているサイズが、２５６の値を有する場合のビット演算を示している。ビット列Ｂは、ビット列Ａを負の数として表現している（２の補数表現）。ここで、ビット列Ａとビット列Ｂの論理積（ＡＮＤ演算）を行うと、演算結果は、ビット列Ａと同じであり、値２５６が２のｎ乗であることが分かる。
【００４６】
図４Ｂは、ビット列Ａとして示されているサイズが、２５８の値を有する場合のビット演算を示している。ビット列Ｂは、ビット列Ａを負の数として表現している（２の補数表現）。ここで、ビット列Ａとビット列Ｂの論理積（ＡＮＤ演算）を行うと、演算結果は、ビット列Ａと同じにはならない。よって、値２５８が２のｎ乗でないことが分かる。
【００４７】
図４Ｃは、ビット列Ａとして示されているサイズが、１２８の値を有する場合のビット演算を示している。ビット列Ｂは、ビット列Ａを負の数として表現している（２の補数表現）。ここで、ビット列Ａとビット列Ｂの論理積（ＡＮＤ演算）を行うと、演算結果は、ビット列Ａと同じであり、値１２８が２のｎ乗であることが分かる。
【００４８】
第２の演算例は、暗号化処理部１１０で、カウンタｃを平文データのサイズで割った余りを求めるための演算についてである。図２のステップＳ２１では、カウンタｃと、平文データのサイズから１を減じた数との論理積（ＡＮＤ演算）の結果が、剰余（カウンタｃを平文データのサイズで割った余り）であると判断する。
【００４９】
図４Ｄは、ビット列Ａとして示されているカウンタｃが、２の値を有する場合のビット演算を示している。ビット列Ｂは、平文データのサイズから１を減じた数２５５を表している。ここで、ビット列Ａとビット列Ｂの論理積（ＡＮＤ演算）を行うと、演算結果は、２となり、２を２５６で割った余りとなっている。
【００５０】
図４Ｅは、ビット列Ａとして示されているカウンタｃが、２５６の値を有する場合のビット演算を示している。ビット列Ｂは、平文データのサイズから１を減じた数２５５を表している。ここで、ビット列Ａとビット列Ｂの論理積（ＡＮＤ演算）を行うと、演算結果は、０となり、２５６を２５６で割った余りとなっている。
【００５１】
次に、図５のフローチャートを参照して、本発明の一実施形態に係る暗号化・復号化システム１の暗号化処理部１１０で実行される別の暗号化方法の例を説明する。この例では、図２のフローチャートで示された暗号化方法が、パスの値の制御により、複数回繰り返されるようになっている。また、ここでも、暗号化単位は１バイトであり、平文データが１バイトごとに暗号化される。
【００５２】
まず、ステップＳ４０において、パスｐが０から３になるまで、４回繰り返される（ループ２Ａ）。次に、ループ２Ａにおける第２回目のループ以降で、暗号文データを平文データにコピーする。これは、ループ２Ａにおける第１回目のループで、暗号化された平文データが暗号文データに格納されるので、第２回目以降のループでは、その暗号化されたデータをさらに暗号化するために、暗号文データを平文データとしてコピーし、この平文データに対してさらに暗号化処理を行うものである。
【００５３】
その後、図２のフローチャートで示された暗号化方法と同じ処理が行われる。ただし、インデックスｉの計算（ステップＳ５１、ステップＳ６１）においては、カウンタｃとパスｐとの和を、平文データのサイズで割った余りがインデックスｉとして求められる。そして、ステップＳ５１においては、上述のように、除算を用いずにインデックスｉが求められる。
【００５４】
次に、図６の例を参照して、図５のフローチャートに示した暗号化処理をより具体的に説明する。図６には、上から、平文データ、暗号鍵テーブル、暗号文データの順で、データの内容が表示され、最下部には、まとめとして、平文データと、その平文データをパス０で暗号化処理した結果得られた暗号文データ、さらにその暗号文データをパス１で暗号化処理した結果得られた暗号文データが示されている。図中の矢印は、データの対応付けや置き換え等を表している。
【００５５】
この例では、図５のループ２Ａにおける第２回目のループの様子が示されており、提供された平文データは、すでに１回暗号化処理が行われた暗号文データ（図３に示された暗号文データと同じ）であり、エントリー０から順に、「ＦＣＢＡＥＨ・・・ＨＥＣＢ」の文字が格納されている。また、この平文データを１６進数で表現すると、エントリー０から順に、０ｘ４６４３４２４１４５４８・・・４８４５４３４２となる。
【００５６】
この平文データについて、図５のフローチャートに示した暗号化処理のループ２Ａ（第２ループ）におけるループ２Ｂを実行する。まず、ループ２Ｂの第１ループで、カウンタｃが０でパスｐが１の場合の暗号化処理が行われる。最初に、インデックスｉが計算され（ｉ＝１  ｍｏｄ  ２５６）、ｉ＝１が求められる（ステップＳ５１）。次に、平文データのエントリー０が抽出される（ステップＳ５２）。エントリー０には、０ｘ４６（文字「Ｆ」）のデータが格納されており、これは１０進数にすると７０である。ここで、暗号鍵テーブルの７０番目のエントリーに格納されている文字「Ｅ」を暗号文字（暗号鍵）ｅとして決定する（ステップＳ５３）。最後に、インデックスｉ＝１により、「Ｅ」を暗号文データのエントリー１に格納する（ステップＳ５４）。
【００５７】
以下、同様に処理を繰り返し、ループ２Ａ（第２ループ）におけるループ２Ｂの最終ループで、カウンタｃが２５５でパスｐが１の場合の暗号化処理が行われる。最初に、インデックスｉが計算され（ｉ＝２５６  ｍｏｄ  ２５６）、ｉ＝０が求められる（ステップＳ５１）。次に、平文データのエントリー２５５が抽出される（ステップＳ５２）。エントリー２５５には、０ｘ４２（文字「Ｂ」）のデータが格納されており、これは１０進数にすると６６である。ここで、暗号鍵テーブルの６６番目のエントリーに格納されている文字「Ｃ」を暗号文字ｅとして決定する（ステップＳ５３）。最後に、インデックスｉ＝０により、「Ｃ」を暗号文データのエントリー０に格納する（ステップＳ５４）。また、提供された平文データが２５６バイトでない場合は、ループ２Ｃが実行されるが、インデックスｉを求める計算方法以外に異なるところはない。
【００５８】
この結果、平文データ「ＣＢＡＤＦＧ・・・ＧＦＢＡ」は、図６の最下部に示すように、パスｐ＝０の暗号化処理では、暗号文データ「ＦＣＢＡＥＨ・・・ＨＥＣＢ」に暗号化され、パスｐ＝１の暗号化処理では、さらに暗号文データ「ＣＥＦＣＢＤＧ・・・ＧＤＦ」に暗号化される。最終的に、図５に示すフローチャートの暗号化処理では、図２に示すフローチャートの暗号化処理が、パスｐ＝０〜３まで４回繰り返して行われ、その都度、パスｐによって、暗号化された平文データを暗号文データに格納する位置がシフトされる。
【００５９】
このような暗号化処理を複数回繰り返すことによって、ビット変化率および強度の高い暗号が生成される。この例では、パスｐ＝０から３として、暗号化処理を４回繰り返すようにしたが、当該回数は任意に設定することができる。ただし、当該回数を多くすると、好適なビット変化率が期待できる一方で、処理時間が長くなってしまうので注意が必要である。
【００６０】
次に、図７のフローチャートを参照して、本発明の一実施形態に係る暗号化・復号化システム１の暗号化処理部１１０で実行される、さらに別の暗号化方法の例を説明する。この例では、図５のフローチャートで示された暗号化方法と同様に、パスの値の制御により、図２のフローチャートで示された暗号化方法を繰り返すとともに、前のループで求められた暗号文字（暗号鍵）に依存する値（ベースＢ）を用いて暗号文字を計算するようにした。また、ここでも、暗号化単位は１バイトであり、平文データが１バイトごとに暗号化される。
【００６１】
ベースＢに関して、まず、ステップＳ８４において、ベースＢ＝パスｐとして、ループ３Ｂ、ループ３Ｃを開始する前の初期設定を行う。そして、ベースＢは、ループ３ＢのステップＳ９３（または、ループ３ＣのステップＳ１０３）において、暗号文字ｅを求めるのに用いられる。すなわち、暗号文字ｅ＝暗号鍵テーブル［ｈ］＋Ｂにより求められる。さらに、ステップＳ９３（またはステップＳ１０３）で求められたｅが、ステップＳ９４（またはステップＳ１０４）でベースＢに代入され、次のループで、暗号文字ｅを求めるのに用いられる。このように、ベースＢを用いることによって、暗号強度をさらに高めることが出来る。また、ここで、暗号文字ｅは、８ビットの格納領域であり、ベースＢの加算によって値が２５５を越えた場合（桁あふれが生じた場合）は、再び０に戻ってラップアラウンドする。
【００６２】
次に、図８の例を参照して、図７のフローチャートに示した暗号化処理をより具体的に説明する。図８には、上から、平文データ、暗号鍵テーブル、暗号文データの順で、データの内容が表示され、最下部には、まとめとして、平文データと、その平文データを暗号化処理した結果得られた暗号文データが示されている。図中の矢印は、データの対応付けや置き換え等を表したものである。
【００６３】
この例では、平文データが２５６バイトでブロック化されて提供され、ループ３Ｂの処理が行われる。２５６バイトの平文データは、エントリー０からエントリー２５５までの２５６個のエントリーからなる配列である。その平文データには、ＡＳＣＩＩコードが格納され、所定のプログラムで表示または印刷を行うと、エントリー０から順に、「ＣＢＡＤＦＧ・・・ＧＦＢＡ」といった文字が出力される。平文データを１６進数で表現すると、エントリー０から順に、０ｘ４３４２４１４４４６４７・・・４７４６４２４１となる。
【００６４】
この平文データについて、図７のフローチャートに示した暗号化処理を実行する。まず、ループ３Ａの第１ループで、カウンタｃが０、パスＰが０、ベースＢが０の場合の暗号化処理が開始される。その後、ループ３Ｂに進み、インデックスｉが計算され（ｉ＝０  ｍｏｄ  ２５６）、ｉ＝０が求められる（ステップＳ９１）。次に、平文データのエントリー０が抽出される（ステップＳ９２）。エントリー０には、０ｘ４３（文字「Ｃ」）のデータが格納されており、これは１０進数にすると６７である。ここで、暗号鍵テーブルの６７番目のエントリーに格納されているデータ０ｘ４６（文字「Ｆ」）とベースＢを加算した値を暗号文字ｅとして決定する（ステップＳ９３）。この場合、ｅ＝０ｘ４６＋０ｘ００＝０ｘ４６（１０進数で７０）となる。次に、ベースＢに０ｘ４６をセットする。そして最後に、インデックスｉ＝０により、０ｘ４６（文字「Ｆ」）を暗号文データのエントリー０に格納する（ステップＳ９５）。
【００６５】
次に、ループ３Ｂの第２ループで、カウンタｃが１、パスＰが０、ベースＢが０ｘ７０の場合の暗号化処理が行われる。最初に、インデックスｉが計算され（ｉ＝１  ｍｏｄ  ２５６）、ｉ＝１が求められる（ステップＳ９１）。次に、平文データのエントリー１が抽出される（ステップＳ９２）。エントリー１には、０ｘ４２（文字「Ｂ」）のデータが格納されており、これは１０進数にすると６６であり、ここで、暗号鍵テーブルの６６番目のエントリーに格納されているデータ０ｘ４３（文字「Ｃ」）とベースＢを加算した値を暗号文字ｅとして決定する（ステップＳ９３）。この場合、ｅ＝０ｘ４３＋０ｘ４６＝０ｘ８９（１０進数で１３７）となる。次に、ベースＢに０ｘ８９をセットする。そして最後に、インデックスｉ＝１により、０ｘ８９（文字「あ」）を暗号文データのエントリー１に格納する（ステップＳ９５）。
【００６６】
以下、同様に処理を繰り返し、平文データ「ＣＢＡＤＦＧ・・・ＧＦＢＡ」は、図８の最下部に示すように、パスｐ＝０の暗号化処理では、暗号文データ「ＦあいうＱえ・・・」に暗号化される（パスｐ＝１以降の暗号化処理の結果は省略する）。このように、図５に示す暗号化処理と同様、暗号化処理がパスｐ＝０〜３まで４回繰り返して行われ、その都度、パスｐによって、暗号文データの格納位置がシフトされるとともに、ベースＢによって、暗号文字が以前に求められた暗号文字に関連付けて求められる。このような暗号化処理を行うことによって、より強度の高い暗号が生成される。なお、図８では、暗号文データに格納された文字として「あ」「い」「う」「え」を例示しているが、これは便宜上の表示であり、実際のＡＳＣＩＩコードによる表示とは異なるものである。
【００６７】
次に、図９のフローチャートを参照して、本発明の一実施形態に係る暗号化・復号化システム１の復号化処理について説明する。図９に示す復号化処理は、図７のフローチャートに示す暗号化処理によって生成された暗号文データを復号するものであり、提供された暗号文データを平文データに復号する。この復号化処理は、図７のフローチャートに示す暗号化処理と逆の手順を実行するものである。図２のフローチャートに示す暗号化処理に対応する復号化処理、図５のフローチャートに示す暗号化処理に対応する復号化処理は、いずれも、図９の復号化処理を一部省略することにより実現され、容易に類推可能であることから、ここでは詳細な説明を省略する。また、ここでは、上述した暗号化処理と同様に、復号化単位は１バイトであり、暗号文データが１バイトごとに復号化される。
【００６８】
復号化処理は、ループ４Ａで、パスｐ＝３から０まで４回ループする（ステップＳ１２０〜ステップＳ１５０）。ループ４Ａが開始されると、ステップＳ１２２で、最初のループのとき以外、すなわち、パスｐ＜３のときに、平文データを暗号文データにコピーする。これは、図７のステップＳ８２で、暗号文データを平文データにコピーした理由と同じである。次に、ステップＳ１２４において、ベースＢにパスｐがセットされる。
【００６９】
その後、ステップＳ１２６において、提供された暗号文データのサイズが２のｎ乗数かどうかが判定される。ステップＳ１２６で、暗号文データのサイズが２のｎ乗数である場合、ステップＳ１３０に進み、ステップＳ１３０からステップＳ１３６までのループ４Ｂが実行される。図１に関して説明したように、制御部１００によって暗号文データ２０が２のｎ乗数のサイズでブロック化されて復号化処理部１２０に提供されるので、ほとんどの暗号文データのブロックに関して、ループ４Ｂが実行されることになる。ループ４Ｂでは、１ずつ増加するカウンタｃが、０から始まって、暗号文データのサイズから１を減じた数になるまで繰り返される。すなわち、カウンタｃは、各ループにおいて、２のｎ乗数のサイズの暗号文データを、最初のエントリーから最後のエントリーまで、順に１文字ずつ指し示すことになり、こうして指示された文字が１つずつ、当該ループにおいて復号化の対象となる。
【００７０】
次に、ステップＳ１３１において、インデックスｉを決定する。これによって、暗号文データのｉ番目にある文字が復号化され、平文データのｃ番目に格納されることが決定される。ここで、インデックスｉは、カウンタｃとパスｐとの和を暗号文データのサイズ（ｓｉｚｅ）で割った余り（すなわち、（ｃ＋ｐ）  ｍｏｄ  ｓｉｚｅ）である。そして、これを求める計算式は、暗号化処理と同様、ｉ＝（ｃ＋ｐ）＆（ｓｉｚｅ−１）となり、除算を用いることなくこうした剰余を求めることができる。
【００７１】
その後、ステップＳ１３２において、暗号文データのｉ番目にある文字を暗号文字（暗号鍵）ｅとして抽出し、ステップＳ１３３において、その暗号文字ｅに対応する平文文字ｈを算出する。ここで、平文文字ｈは、復号鍵テーブルの（ｅ−Ｂ）番目のエントリーに格納されているデータである。次に、ステップＳ１３４において、ベースＢに暗号文字ｅがセットされる。
【００７２】
次に、ステップＳ１３５において、ステップＳ１３３で求められた平文文字ｈが、平文データのｃ番目のエントリーに格納される。同様に、他の暗号文データの各文字についてステップＳ１３０からステップＳ１３６までの処理が繰り返される（ループ４Ｂ）。さらに、こうして復号化された平文データを暗号文データとして、次のパス（ｐ＝２，１，０）の復号化処理が行われる。
【００７３】
一方、ステップＳ１２６で、暗号文データのサイズが２のｎ乗数でない場合、ステップＳ１４０に進み、ステップＳ１４０からステップＳ１４６までのループ４Ｃが実行される。図１に関して説明したように、制御部１００によって暗号文データ２０が２のｎ乗数のサイズでブロック化されて復号化処理部１２０に送られてくるので、そのような制御により暗号文データが提供される場合は、暗号文データ２０の復号化処理において、多くても１回、ステップＳ１２６における判定がＮＯとなる。
【００７４】
ループ４Ｂの処理とループ４Ｃの処理はほとんど同じであるが、ループ４ＢのステップＳ１３１では、インデックスｉを求めるのに除算を用いないのに対し、ループ４ＣのステップＳ１４１では、インデックスｉを求める計算式が、（ｉ＝ｃ％ｓｉｚｅ）といったものとなり（「％」はｃをｓｉｚｅで割った余りを返す）、除算が用いられる。
【００７５】
また、暗号文データ２０が２のｎ乗数の倍数であったり、制御部１００によって暗号文データ２０が２のｎ乗数の倍数に調整されたりする場合は、ステップＳ１４１の処理は行われず、この復号化処理において除算が全く使われないことになる。
【００７６】
次に、図１０を参照して、図９のフローチャートに示した復号化処理を、より具体的に説明する。図１０には、上から、暗号文データ、復号鍵テーブル、平文データの順で、データの内容が表示され、最下部には、まとめとして、暗号文データと、その暗号文データを復号化処理した結果得られた平文データが示されている。図中の矢印は、データの対応付けや置き換え等を表したものである。
【００７７】
この例では、暗号文データが２５６バイトでブロック化されて提供され、ループ４Ｂの処理が行われる。２５６バイトの暗号文データは、エントリー０からエントリー２５５までの２５６個のエントリーからなる配列である。その暗号文データには、ＡＳＣＩＩコードが格納され、所定のプログラムで表示または印刷を行うと、エントリー０から順に、「ＦあいうＱえ・・・」といった文字が出力される。
【００７８】
この暗号文データについて、図９のフローチャートに示した復号化処理を実行する。また、図１０では、図９のループ４Ａの第４ループで、カウンタｃが０、パスＰが０、ベースＢが０の場合の復号化処理を示している。ループ４Ａの第４ループが開始されると、処理はループ４Ｂに進み、そこでインデックスｉが計算され（ｉ＝（０＋０）  ｍｏｄ  ２５６）、ｉ＝０が求められる（ステップＳ１３１）。次に、暗号文データのエントリー０が暗号文字ｅとして抽出される（ステップＳ１３２）。エントリー０には、文字「Ｆ」のデータが格納されており、これは１０進数にすると７０である。ここで、この７０からベースＢが減算され（このとき、ベースＢは０であるため、結果は７０）、復号鍵テーブルの７０番目のエントリーに格納されているデータ（文字「Ｃ」）が平文文字ｈとして決定される（ステップＳ１３３）。次に、ステップＳ１３４で、ベースＢに暗号文字ｅ（１０進数の７０）をセットする。そして最後に、インデックスｃ＝０により、平文文字ｈ（文字「Ｃ」）を平文データのエントリー０に格納する（ステップＳ１３５）。
【００７９】
次に、ループ４Ｂの第２ループで、カウンタｃが１、パスＰが０、ベースＢが７０の場合の復号化処理が行われる。最初に、インデックスｉが計算され（ｉ＝（１＋０）  ｍｏｄ  ２５６）、ｉ＝１が求められる（ステップＳ１３１）。次に、暗号文データのエントリー１が暗号文字ｅとして抽出される（ステップＳ１３２）。エントリー１には、（文字「あ」）のデータが格納されており、これは１０進数にすると１３７である。ここで、この１３７からベースＢ（７０）が減算され（結果は６７）、復号鍵テーブルの６７番目のエントリーに格納されているデータ（文字「Ｂ」）が平文文字ｈとして決定される（ステップＳ１３３）。次に、ステップＳ１３４で、ベースＢに暗号文字ｅ（１０進数の１３７）をセットする。そして最後に、インデックスｃ＝１により、平文文字ｈ（文字「Ｂ」）を平文データのエントリー１に格納する（ステップＳ１３５）。
【００８０】
以下、同様に処理を繰り返し、暗号文データ（パスｐ＝１で得られた平文データ）「ＦあいうＱえ・・・」は、図１０の最下部に示すように、パスｐ＝０の復号化処理で、平文データ「ＣＢＡＤＦＧ・・・ＧＦＢＡ」に復号化される。この復号化処理は、ちょうど、図８で示した暗号化と逆のデータ変換になっている。なお、図１０では、図８と同様、暗号文データに格納された文字として「あ」「い」「う」「え」を例示しているが、これは便宜上の表示であり、実際のＡＳＣＩＩコードによる表示とは異なるものである。
【００８１】
次に、図１１を参照して、暗号鍵テーブル２１０を作成する処理の一例について説明する。暗号鍵テーブル２１０の各エントリーには、他のエントリーとは異なるユニークな値が格納されていればよく、この図に示すようなシャッフルによって暗号鍵テーブル２１０を作成する方法は一例に過ぎない。たとえば、ランダムな値をエントリーごとに生成し、値が重複した場合には、値の生成をやり直すようにしても同様のテーブルを作成できるし、エントリー順に１ずつ増加する（あるいは１ずつ減少する）数字を単純に格納していくようにして生成することもできる。
【００８２】
図１１Ａのフローチャートは、暗号鍵テーブル２１０を作成する処理手順を示すものである。この例では、暗号鍵テーブル２１０が、エントリー０からエントリー２５５までの２５６のエントリーを有し、初期状態では、０から２５５までの数字が、エントリー順に格納されているものとする。また、共通鍵テーブルは、暗号鍵テーブル２１０と同様、２５６のエントリーを有し、各エントリーには、他のエントリーとは異なるユニークな値（ここでは、０から２５５までの整数）が不規則に格納されている。
【００８３】
この状態で、ステップＳ１６０からステップＳ１６４までの処理が、インデックスｉ＝０から２５５まで、２５６回繰り返される（ループ５）。ループ５に入ると、ステップＳ１６２で、暗号鍵のシャッフルが行われる。すなわち、ここで、暗号鍵テーブル２１０のｉ番目のエントリーに格納された値と、暗号鍵テーブル２１０のｊ番目のエントリーに格納された値が交換される。ここで、ｊは、共通鍵テーブルのｉ番目のエントリーに格納された値である。
【００８４】
次に、図１１Ｂを参照して、暗号鍵テーブル２１０を作成する処理手順の例をより具体的に説明する。ここでは、共通鍵テーブルと暗号鍵テーブル２１０はともに、エントリー０からエントリー４までの５つのエントリーを有する。また、共通鍵テーブルは、エントリー０から順に、３、４、１、２、０の各値を格納し、暗号鍵テーブル２１０は、初期状態、すなわちシャッフル前では、エントリー０から順に、０、１、２、３、４の各値を格納している。
【００８５】
ループ５の第１ループ（シャッフル（１））で、暗号鍵テーブル２１０の０番目のエントリーに格納された値「０」と、暗号鍵テーブル２１０の３番目（３は、共通鍵テーブルの０番目のエントリーに格納された値）のエントリーに格納された値「３」を交換する。次に、ループ５の第２ループ（シャッフル（２））で、暗号鍵テーブル２１０の１番目のエントリーに格納された値「１」と、暗号鍵テーブル２１０の４番目（４は、共通鍵テーブルの１番目のエントリーに格納された値）のエントリーに格納された値「４」を交換する。
【００８６】
次に、ループ５の第３ループ（シャッフル（３））で、暗号鍵テーブル２１０の２番目のエントリーに格納された値「２」と、暗号鍵テーブル２１０の１番目（１は、共通鍵テーブルの２番目のエントリーに格納された値）のエントリーに格納された値「４」を交換する。次に、ループ５の第４ループ（シャッフル（４））で、暗号鍵テーブル２１０の３番目のエントリーに格納された値「０」と、暗号鍵テーブル２１０の２番目（２は、共通鍵テーブルの３番目のエントリーに格納された値）のエントリーに格納された値「４」を交換する。
【００８７】
最後に、ループ５の第５ループ（シャッフル（５））で、暗号鍵テーブル２１０の４番目のエントリーに格納された値「１」と、暗号鍵テーブル２１０の０番目（０は、共通鍵テーブルの４番目のエントリーに格納された値）のエントリーに格納された値「３」を交換する。このシャッフルの結果をまとめると、シャッフル後の暗号鍵テーブル２１０は、エントリー０から順に、１、２、０、４、３となる。
【００８８】
次に、図１２を参照して、復号鍵テーブル２２０を作成する処理の一例について説明する。復号鍵テーブル２２０の各エントリーには、暗号鍵テーブル２１０と同様、他のエントリーとは異なるユニークな値が格納されている必要があり、さらに、対応する暗号鍵テーブル２１０を元に、一定の規則で作成されなければならない。
【００８９】
図１２Ａのフローチャートは、復号鍵テーブル２２０を作成する処理手順を示したものである。この例では、暗号鍵テーブル２１０と復号鍵テーブル２２０がそれぞれ、エントリー０からエントリー２５５までの２５６のエントリーを有しているものとする。そして暗号鍵テーブル２１０の各エントリーには、図１１Ａのフローチャートに示す処理によって、他のエントリーとは異なるユニークな値（ここでは、０から２５５までの整数）が格納されているものとする。その状態で、ステップＳ１７０からステップＳ１７４までの処理が、インデックスｉ＝０から２５５まで、２５６回繰り返される（ループ６）。ループ６に入ると、ステップＳ１７２で、復号鍵のセットが行われる。すなわち、復号鍵テーブル２２０のｊ番目のエントリーに、ｉの値そのものが格納される。ここで、ｊは、暗号鍵テーブル２１０のｉ番目のエントリーに格納されている値（すなわち、０から２５５までのどれかひとつ）である。
【００９０】
次に、図１２Ｂを参照して、復号鍵テーブル２２０を作成する処理手順の例をより具体的に説明する。ここでは、暗号鍵テーブル２１０と復号鍵テーブル２２０はともに、エントリー０からエントリー４までの５つのエントリーを有する。また、暗号鍵テーブル２１０はシャッフルにより、エントリー０から順に、１、２、０、４、３の各値を格納しており、復号鍵テーブル２２０の各エントリーには、なにも格納されていない状態である。
【００９１】
ループ６の第１ループ（セット（１））で、復号鍵テーブル２２０の１番目（１は、暗号鍵テーブル２１０の０番目に格納されている値）のエントリーに、値「０」がセットされる。次に、ループ６の第２ループ（セット（２））で、復号鍵テーブル２２０の２番目（２は、暗号鍵テーブル２１０の１番目に格納されている値）のエントリーに、値「１」がセットされ、ループ６の第３ループ（セット（３））で、復号鍵テーブル２２０の０番目（０は、暗号鍵テーブル２１０の２番目に格納されている値）のエントリーに、値「２」がセットされる。
【００９２】
その後、ループ６の第４ループ（セット（４））で、復号鍵テーブル２２０の４番目（４は、暗号鍵テーブル２１０の３番目に格納されている値）のエントリーに、値「３」がセットされ、次に、ループ６の第５ループ（セット（５））で、復号鍵テーブル２２０の３番目（３は、暗号鍵テーブル２１０の４番目に格納されている値）のエントリーに、値「４」がセットされる。この処理の結果をまとめると、最終的な復号鍵テーブル２２０は、エントリー０から順に、２、０、１、４、３となる。
【００９３】
このように、復号鍵テーブル２２０の各エントリーに格納される値は、暗号鍵テーブル２１０の各エントリーに格納された値に対して、上記のような所定の関係をもって求められ、セットされる。すなわち、復号鍵テーブル２２０では、データの格納位置を示す値（エントリーを表す値）数と、当該エントリーに格納されている値との関係が、暗号鍵テーブル２１０とは逆になっている。たとえば、図１２Ｂの例では、復号鍵テーブル２２０のエントリー「０」には値「２」が格納され、暗号鍵テーブル２１０のエントリー「２」には値「０」が格納される。
【００９４】
そして、暗号鍵テーブル２１０と復号鍵テーブル２２０をこのような関係で準備しておくことにより、図１０に示すように、暗号鍵テーブル２１０を用いて暗号化した暗号文データ２０を、復号鍵テーブル２２０を用いて平文データ１０に復号化することができる。
【００９５】
次に、図１３を参照して、本発明の暗号化・復号化システム１を実現するコンピュータのハードウエア構成の例について説明する。ただし、図１３のコンピュータ３００は、暗号化・復号化システム１を実現するためのコンピュータとして代表的な構成を例示したにすぎない。また、暗号化・復号化システム１を、暗号化装置および復号化装置といった、処理ごとの個別のコンピュータで構成することもできるが、これらのコンピュータも同様の構成要素により構成される。また、本発明の暗号化・復号化システム１は、パーソナルコンピュータ（デスクトップタイプ、ノートタイプ）、携帯電話機、ＰＤＡ、メモリーカード、ＩＣカードなど、ＣＰＵを備えた様々なタイプのコンピュータによって実現可能である。
【００９６】
コンピュータ３００は、ＣＰＵ（Central Processing Unit）３０１、メモリ３０２、音声出力装置３０３、ネットワークインタフェース３０４、ディスプレイコントローラ３０５、ディスプレイ３０６、入力機器インタフェース３０７、キーボード３０８、マウス３０９、外部記憶装置３１０、外部記録媒体駆動装置３１１、およびこれらの構成要素を互いに接続するバス３１２を含んでいる。
【００９７】
ＣＰＵ３０１は、コンピュータ３００の各構成要素の動作を制御し、ＯＳの制御下で、本発明に係る暗号化・復号化システム１の機能を実行する。たとえば、制御部１００における平文データ１０や暗号文データ２０のハンドリング、暗号化処理部１１０における暗号化処理、および復号化処理部１２０における復号化処理を制御する。
【００９８】
メモリ３０２は通常、不揮発性メモリであるＲＯＭ（Read Only Memory）、および揮発性メモリであるＲＡＭ（Random Access Memory）から構成される。ＲＯＭには、コンピュータ３００の起動時に実行されるプログラム等が格納される。ＲＡＭには、ＣＰＵ３０１で実行される各機能を実現するためのプログラムや、それらのプログラムが実行中に使用するデータが一時的に格納される。
【００９９】
音声出力装置３０３は、たとえば、スピーカ等の機器であり、動画プレイヤー等から音声データを受け取り、音声を出力する。ネットワークインタフェース３０４は、ネットワーク３２０に接続するためのインタフェースである。ネットワーク３２０は、たとえば、ＬＡＮやインターネットといったネットワークである。
【０１００】
ディスプレイコントローラ３０５は、ＣＰＵ３０１が発行する描画命令を実際に処理するための専用コントローラである。ディスプレイコントローラ３０５で処理された描画データは、一旦グラフィックメモリに書き込まれ、その後、ディスプレイ３０６に出力される。ディスプレイ３０６は、たとえば、ＬＣＤ（Liquid Crystal Display）やＣＲＴ（Cathode Ray Tube）で構成される表示装置である。
【０１０１】
入力機器インタフェース３０７は、キーボード３０８やマウス３０９から入力された信号を受信して、その信号パターンに応じて所定の指令をＣＰＵ３０１に送信する。
【０１０２】
外部記憶装置３１０は、たとえば、ハードディスクドライブ（ＨＤＤ）のような記憶装置であり、この装置内には上述したプログラムやデータが記録され、実行時に、必要に応じてそこからメモリ３０２のＲＡＭにロードされる。たとえば、暗号鍵テーブル２１０や復号鍵テーブル２２０がこの記憶装置に格納される。
【０１０３】
外部記録媒体駆動装置３１１は、ＣＤ（Compact Disc）、ＭＯ（Magneto-Optical Disc）、ＤＶＤ（Digital Versatile Disc）などの可搬型の外部記録媒体３３０の記録面にアクセスして、そこに記録されているデータを読み取る装置である。外部記録媒体３３０には、本発明に係る暗号化・復号化システム１を実現するための暗号化プログラムや復号化プログラムを記録することも可能である。外部記録媒体３３０に記録されているデータは、外部記録媒体駆動装置３１１を介して外部記憶装置３１０に格納され、プログラムであれば、実行時にメモリ３０２のＲＡＭにロードされる。
【０１０４】
本発明に係る暗号化・復号化システム１を実現するためのプログラムの他の流通形態としては、ネットワーク上の所定のサーバから、ネットワーク３２０およびネットワークインタフェース３０４を介して外部記憶装置３１０に格納されるというルート等も考えられる。こうして格納されたプログラムは、上記と同様に、実行時にメモリ３０２のＲＡＭにロードされ、実行される。
【０１０５】
たとえば、コンピュータ３００のユーザは、キーボード３０８等を用いて平文データ１０を入力することにより、当該データを暗号化処理部１１０に提供することができる。他方、復号化処理部１２０は、ユーザの指示に基づき、出力した平文データ１０をディスプレイ３０６に表示したり、外部記憶装置３１０に記憶したりする。
【０１０６】
また、前述のように、本発明に係る暗号化・復号化システム１を、こうしたプログラムベースのコンピュータシステムを用いずに、回路によって構成することもできる。
【図面の簡単な説明】
【０１０７】
【図１】本発明の一実施形態に係る暗号化・復号化システムの概要を示す機能ブロック図である。
【図２】本発明の一実施形態に係る暗号化・復号化システムにおいて実行される暗号化処理の一例を示すフローチャートである。
【図３】図２のフローチャートに示す暗号化処理によって、平文データが暗号化されていく過程を示した略線図である。
【図４】本発明の一実施形態に係る暗号化・復号化システムで用いられるビット演算の例を示す略線図である。
【図５】本発明の一実施形態に係る暗号化・復号化システムにおいて実行される暗号化処理の別の例を示すフローチャートである。
【図６】図５のフローチャートに示す暗号化処理によって、平文データが暗号化されていく過程を示した略線図である。
【図７】本発明の一実施形態に係る暗号化・復号化システムにおいて実行される暗号化処理のさらに別の例を示すフローチャートである。
【図８】図７のフローチャートに示す暗号化処理によって、平文データが暗号化されていく過程を示した略線図である。
【図９】本発明の一実施形態に係る暗号化・復号化システムにおいて実行される復号化処理の例を示すフローチャートである。
【図１０】図９のフローチャートに示す暗号化処理によって、暗号文データが復号化されていく過程を示した略線図である。
【図１１】本発明の一実施形態に係る暗号化・復号化システムで用いられる暗号鍵テーブルを作成するためのフローチャートと、暗号鍵テーブルが作成される過程を示した略線図である。
【図１２】本発明の一実施形態に係る暗号化・復号化システムで用いられる復号鍵テーブルを作成するためのフローチャートと、復号鍵テーブルが作成される過程を示した略線図である。
【図１３】本発明の一実施形態に係る暗号化・復号化システムを構成するコンピュータのハードウエア構成の例を示す略線図である。
【符号の説明】
【０１０８】
１・・・暗号化・復号化システム、１０・・・平文データ、２０・・・暗号文データ、１００・・・制御部、１１０・・・暗号化処理部、１２０・・・復号化処理部、２１０・・・暗号鍵テーブル、２２０・・・復号鍵テーブル、３００・・・コンピュータ、３０１・・・ＣＰＵ、３０２・・・メモリ、３０３・・・音声出力装置、３０４・・・ネットワークインタフェース、３０５・・・ディスプレイコントローラ、３０６・・・ディスプレイ、３０７・・・入力機器インタフェース、３０８・・・キーボード、３０９・・・マウス、３１０・・・外部記憶装置、３１１・・・外部記録媒体駆動装置、３１２・・・バス、３２０・・・ネットワーク、３３０・・・外部記録媒体
【図１】
2010246055.tif 000003
【図２】
2010246055.tif 000004
【図３】
2010246055.tif 000005
【図４】
2010246055.tif 000006
【図５】
2010246055.tif 000007
【図６】
2010246055.tif 000008
【図７】
2010246055.tif 000009
【図８】
2010246055.tif 000010
【図９】
2010246055.tif 000011
【図１０】
2010246055.tif 000012
【図１１】
2010246055.tif 000013
【図１２】
2010246055.tif 000014
【図１３】
2010246055.tif 000015
【手続補正書】
【提出日】平成21年7月14日(2009.7.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルと、  平文データを、平文文字単位で暗号化し暗号文データを生成する暗号化手段と、  前記暗号文データを復号化する復号化手段とを備え、  前記暗号化手段は、    前記平文データから、順次平文文字を抽出し、    前記平文文字の内容に基づいて、暗号鍵テーブルのエントリーの順番を決定し、    決定された前記順番のエントリーに記憶される前記暗号鍵テーブルの値に基づいて、前記平文文字に対応する暗号鍵を決定し、    決定された前記暗号鍵を、第１インデックスで指定される暗号文データの位置にセットし、  前記復号化手段は、    前記暗号文データから、前記平文文字と同じ単位で順次暗号文字を抽出し、    前記暗号文字の内容に基づいて、復号鍵テーブルのエントリーの順番を決定し、    決定された前記順番のエントリーに記憶される前記復号鍵テーブルの値に基づいて、前記暗号文字に対応する復号鍵を決定し、    決定された前記復号鍵を、第２インデックスで指定される平文データの位置にセットし、  前記第１インデックスは、前記平文データにおける前記平文文字の位置に基づいて決定され、前記第２インデックスは、前記暗号文データにおける前記暗号文字の位置に基づいて決定されることを特徴とする暗号化・復号化システム。    
【請求項２】
請求項１に記載の暗号化・復号化システムにおいて、  前記復号鍵テーブルは、エントリーの順番を表す値と当該エントリーに格納されている値との関係が、前記暗号鍵テーブルとは逆になるように設定されていることを特徴とする暗号化・復号化システム。    
【請求項３】
各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルと、  平文データを、平文文字単位で暗号化し暗号文データを生成する暗号化手段とを備え、  前記暗号化手段は、    前記平文データから、順次平文文字を抽出し、    前記平文文字の内容に基づいて、暗号鍵テーブルのエントリーの順番を決定し、    決定された前記順番のエントリーに記憶される前記暗号鍵テーブルの値に基づいて、前記平文文字に対応する暗号鍵を決定し、    決定された前記暗号鍵を、インデックスで指定される暗号文データの位置にセットし、  前記インデックスは、前記平文データにおける前記平文文字の位置に基づいて決定されることを特徴とする暗号化装置。    
【請求項４】
請求項３に記載の暗号化装置において、  前記インデックスを、前記平文データにおける前記平文文字の位置、および前記平文データのサイズを用いて計算し、  前記サイズが２のｎ乗数である場合に、除算を用いない方法で前記計算が行われることを特徴とする暗号化装置。    
【請求項５】
請求項３に記載の暗号化装置において、  前記暗号化手段は、生成された前記暗号文データを同じ手順でさらに暗号化することにより、前記平文データに対して暗号化を複数回行うよう制御することを特徴とする暗号化装置。    
【請求項６】
請求項３に記載の暗号化装置において、  前記暗号化手段は、  前記平文文字に対応する暗号鍵を、前記順番のエントリーに記憶される前記暗号鍵テーブルの値と、以前に決定された暗号鍵とを用いて決定することを特徴とする暗号化装置。    
【請求項７】
各エントリーに、それぞれ異なる復号鍵を格納する復号鍵テーブルと、  暗号文を、暗号文字単位で復号化し平文データを生成する復号化手段とを備え、  前記復号化手段は、    前記暗号文データから、順次暗号文字を抽出し、    前記暗号文字の内容に基づいて、復号鍵テーブルのエントリーの順番を決定し、    決定された前記順番のエントリーに記憶される前記復号鍵テーブルの値に基づいて、前記暗号文字に対応する復号鍵を決定し、    決定された前記復号鍵を、インデックスで指定される平文データの位置にセットし、  前記インデックスは、前記暗号文データにおける前記暗号文字の位置に基づいて決定されることを特徴とする復号化装置。    
【請求項８】
平文データを暗号化する暗号化装置で用いられる暗号化方法であって、 前記暗号化装置は、各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルを有し、 前記暗号化方法は、 前記平文データから、順次、所定単位の平文文字を抽出するステップと、  前記暗号鍵テーブルのエントリーの順番を、前記平文文字の内容に基づいて決定するステップと、  決定された前記順番のエントリーに記憶される前記暗号鍵テーブルの値に基づいて、前記平文文字に対応する暗号鍵を決定するステップと、  決定された前記暗号鍵を、インデックスで指定される暗号文データの位置にセットすることにより、暗号文データを生成するステップとを有し、  前記インデックスは、前記平文データにおける前記平文文字の位置に基づいて決定されることを特徴とする暗号化方法。    
【請求項９】
暗号文データを復号化する復号化装置で用いられる復号化方法であって、 前記復号化装置は、各エントリーに、それぞれ異なる復号鍵を格納する復号鍵テーブルを有し、 前記復号化方法は、 前記暗号文データから、順次、所定単位の暗号文字を抽出するステップと、  前記復号鍵テーブルのエントリーの順番を、前記暗号文字の内容に基づいて決定するステップと、  決定された前記順番のエントリーに記憶される前記復号鍵テーブルの値に基づいて、前記暗号文字に対応する復号鍵を決定するステップと、  決定された前記復号鍵を、インデックスで指定される平文データの位置にセットすることにより、平文データを生成するステップとを有し、  前記インデックスは、前記暗号文データにおける前記暗号文字の位置に基づいて決定されることを特徴とする復号化方法。    
【請求項１０】
平文データを暗号化する暗号化装置のためのプログラムであって、 前記暗号化装置は、各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルを有し、 前記プログラムは、 前記暗号化装置のコンピュータに対して、  前記平文データから、順次平文文字を抽出するステップと、 前記暗号鍵テーブルのエントリーの順番を、前記平文文字の内容に基づいて決定するステップと、  決定された前記順番のエントリーに記憶される前記暗号鍵テーブルの値に基づいて、前記平文文字に対応する暗号鍵を決定するステップと、  決定された前記暗号鍵を、インデックスで指定される暗号文データの位置にセットすることによって、暗号文データを生成するステップとを実行させ、  前記インデックスは、前記平文データにおける前記平文文字の位置に基づいて決定されることを特徴とするプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
本発明の第１実施態様は、各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルと、平文データを、平文文字単位で暗号化し暗号文データを生成する暗号化手段と、暗号文データを復号化する復号化手段とを備える暗号化・復号化システムである。ここで、暗号化手段は、平文データから、順次平文文字を抽出し、平文文字の内容に基づいて、暗号鍵テーブルのエントリーの順番を決定し、決定された順番のエントリーに記憶される暗号鍵テーブルの値に基づいて、平文文字に対応する暗号鍵を決定し、決定された暗号鍵を、第１インデックスで指定される暗号文データの位置にセットするよう構成され、一方、復号化手段は、暗号文データから、平文文字と同じ単位で順次暗号文字を抽出し、暗号文字の内容に基づいて、復号鍵テーブルのエントリーの順番を決定し、決定された順番のエントリーに記憶される復号鍵テーブルの値に基づいて、暗号文字に対応する復号鍵を決定し、決定された復号鍵を、第２インデックスで指定される平文データの位置にセットするように構成される。また、第１インデックスは、平文データにおける平文文字の位置に基づいて決定され、第２インデックスは、暗号文データにおける暗号文字の位置に基づいて決定される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
本発明の第２実施態様は、上述の第１実施態様において、復号鍵テーブルが、エントリーの順番を表す値と当該エントリーに格納されている値との関係に関し、暗号鍵テーブルとは逆になるように構成される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
本発明の第３実施態様は、各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルと、平文データを、平文文字単位で暗号化し暗号文データを生成する暗号化手段とを備える暗号化装置である。ここで、暗号化手段は、平文データから、順次平文文字を抽出し、平文文字の内容に基づいて、暗号鍵テーブルのエントリーの順番を決定し、決定された順番のエントリーに記憶される暗号鍵テーブルの値に基づいて、平文文字に対応する暗号鍵を決定し、決定された暗号鍵を、インデックスで指定される暗号文データの位置にセットするように構成され、インデックスは、平文データにおける平文文字の位置に基づいて決定される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
本発明の第６実施態様は、上述の第３実施態様において、暗号化手段は、平文文字に対応する暗号鍵を、順番のエントリーに記憶される暗号鍵テーブルの値と、以前に決定された暗号鍵とを用いて決定するように構成される。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
本発明の第７実施態様は、各エントリーに、それぞれ異なる復号鍵を格納する復号鍵テーブルと、暗号文を、暗号文字単位で復号化し平文データを生成する復号化手段とを備える復号化装置である。ここで、復号化手段は、暗号文データから、順次暗号文字を抽出し、暗号文字の内容に基づいて、復号鍵テーブルのエントリーの順番を決定し、決定された順番のエントリーに記憶される復号鍵テーブルの値に基づいて、暗号文字に対応する復号鍵を決定し、決定された復号鍵を、インデックスで指定される平文データの位置にセットする。また、インデックスは、暗号文データにおける暗号文字の位置に基づいて決定される。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
本発明の第８実施態様は、平文データを暗号化する暗号化装置で用いられる暗号化方法である。この暗号化装置は、各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルを有し、暗号化方法は、平文データから、順次、所定単位の平文文字を抽出するステップと、暗号鍵テーブルのエントリーの順番を、平文文字の内容に基づいて決定するステップと、決定された順番のエントリーに記憶される暗号鍵テーブルの値に基づいて、平文文字に対応する暗号鍵を決定するステップと、決定された暗号鍵を、インデックスで指定される暗号文データの位置にセットすることにより、暗号文データを生成するステップとを有する。ここで、インデックスは、平文データにおける平文文字の位置に基づいて決定される。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
本発明の第９実施態様は、暗号文データを復号化する復号化装置で用いられる復号化方法である。この復号化装置は、各エントリーに、それぞれ異なる復号鍵を格納する復号鍵テーブルを有し、復号化方法は、暗号文データから、順次、所定単位の暗号文字を抽出するステップと、復号鍵テーブルのエントリーの順番を、暗号文字の内容に基づいて決定するステップと、決定された順番のエントリーに記憶される復号鍵テーブルの値に基づいて、暗号文字に対応する復号鍵を決定するステップと、決定された復号鍵を、インデックスで指定される平文データの位置にセットすることにより、平文データを生成するステップとを有する。ここで、インデックスは、暗号文データにおける暗号文字の位置に基づいて決定される。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
本発明の第１０実施態様は、平文データを暗号化する暗号化装置のためのプログラムである。この暗号化装置は、各エントリーに、それぞれ異なる暗号鍵を格納する暗号鍵テーブルを有し、プログラムは、暗号化装置のコンピュータに対して、平文データから、順次平文文字を抽出するステップと、暗号鍵テーブルのエントリーの順番を、平文文字の内容に基づいて決定するステップと、決定された順番のエントリーに記憶される暗号鍵テーブルの値に基づいて、平文文字に対応する暗号鍵を決定するステップと、決定された暗号鍵を、インデックスで指定される暗号文データの位置にセットすることによって、暗号文データを生成するステップとを実行させる。また、インデックスは、平文データにおける平文文字の位置に基づいて決定される。