(57)【要約】      （修正有）【課題】第三者に解読されるおそれが殆どなく、平文と暗号文の間でデータ量が全く変化せず、処理速度も高速な暗号化方式を提供する。【解決手段】暗号化すべき平文を任意のビット数ごとに分割し、対象の処理順番を決めるレジスタの値に従い複数のブロックを順次選定し、鍵スケジュラーにより、与えられた鍵データを上記平文の分割ビット数と同じビット数ごとに分割した鍵ブロックデータと上記選定された平文ブロックの着目した位置情報から乱数を生成し、その値を行き先ブロック番号として上記平分ブロックと行き先ブロックを交換する暗号化方式で、さらに、乱数の算定結果を次回の計算に用いる機能、平文ブロックの着目したブロックの値そのものも加味して交換先ブロック番号を選定する機能、生成した乱数と排他的論理和演算して得られた結果を暗号文の同じ位置のデータブロックにセットして暗号化処理する機能、などを用いることもできる。【選択図】      図３
2004302378.tif 000002
【特許請求の範囲】
【請求項１】
平文からなる暗号文を得る暗号化方法において、暗号化すべき平文を任意のビット数ごとに分割してなる複数のブロックを、処理対象ブロックの処理順番を決めるレジスターの値に従い順次選定し、一方与えられた鍵データを上記平文の分割ビット数と同じビット数ごとに分割した一つの鍵ブロック・データと上記選定された平文ブロックの着目した平文ブロックの位置情報とから乱数を生成し、その値を行き先ブロック番号と選定して、上記平文ブロックと行き先ブロックを交換することを特徴とする暗号化方式。
【請求項２】
平文中の着目した平文ブロックの値そのものも、前記交換先ブロック番号選定に加味することを特徴とする請求項１記載の暗号化方式。
【請求項３】
ブロックの処理順番を決めるレジスターに正にセットすると、平文を上り方向に順に１ブロックづつ暗号処理し、ブロックの処理順番を決めるレジスターを負に切替えることにより、平文を下り方向に１ブロック単位で順次暗号化するレジスター機能を具備し、平文を上り方向と下り方向との往復処理することにより暗号化することを特徴とする請求項１記載の暗号化方式。
【請求項４】
平文中の着目した平文ブロックと、上記鍵データのブロック情報から算出される乱数の算出結果とを排他的論理和処理して得られた結果を暗号文の同じ位置のデータ・ブロックとする請求項１記載の暗号化方式。
【請求項５】
請求項１又は請求項４において、鍵データのブロックを要求する際、先頭から順次鍵データの１ブロックを渡し、該鍵データの終端に至った場合、もう一度先頭に戻って、鍵ブロック・データを用意する鍵スケジュラーを使用する暗号化方式。
【請求項６】
請求項１において、乱数を生成する際に、前回の乱数の算定結果を次回の乱数計算にフィードフォワードする乱数生成器を使用する暗号化方式。
【請求項７】
請求項１の暗号化方式において、着目したブロックの次のブロックとその交換先を、上記ブロックの処理順番を決めるレジスターの値に応じて、正であれば上り方向に、負であれば下り方向に限定することを特徴とする暗号化方式。
【請求項８】
請求項１の暗号化方式において、着目したブロックの次のブロックとその交換先を、上記ブロックの処理順番を決めるレジスターの値に応じて、正であれば下り方向に、負であれば上り方向に限定して処理することを特徴とする暗号化方式。
【請求項９】
請求項７の暗号化方式により生成された暗号文に対して、着目したブロックの次のブロックとその交換先を、ブロックの処理順番を決めるレジスターの値に応じて正であれば下り方向に、負であれば上り方向に限定して処理することにより復号化することを特徴とする復号化方式。
【請求項１０】
請求項８の暗号化方式により生成された暗号文に対して、着目したブロックの次のブロックとその交換先を、上記ブロックの処理順番を決めるレジスターの値に応じて、正であれば上り方向に、負であれば下り方向に限定することを特徴とする復号化方式。
【請求項１１】
暗号化すべき平文を任意のビット数ごとに分割して、処理対象ブロックの処理順番を決めるレジスターを設け、そこに書かれた値に従い順次平文ブロックを暗号化処理する手段と、
与えられた鍵データを上記の平文ブロックと同じ長さのビット数ごとに分割し、その鍵ブロックデータを順に上記暗号処理に供給する鍵スケジュラー手段と、上記平文ブロックの着目されたデータ・ブロックの位置情報と、鍵スケジュラーから適宜渡される鍵ブロック・データから乱数を生成すると共に、乱数の算定結果を次回の乱数計算にフィードフォワードする機能を具備した乱数生成手段と、
上記平文ブロックの着目したデータ・ブロックの値そのものも算定に加味して交換先ブロック番号を選定し、着目ブロックと交換先ブロックの交換を指示する交換先指示手段と、
上記平文ブロックの着目したデータ・ブロックと、鍵スケジューラーから適宜渡された鍵ブロック・データから算出される上記乱数生成器の結果とを排他的論理和演算処理して得られた結果を暗号文の同じ位置のデータ・ブロックにセットする手段とを備えた暗号化システム。
【請求項１２】
平文ブロックの処理順番を決めるレジスターに＋１をセットし、上り方向に１ブロックづつ上記排他的論理和演算処理し、また平文の着目したブロックの次のブロックと、上り方向に限定して乱数計算により算定して得られた交換先を、交換し上り方向の暗号化を実施し、更に平文ブロックの処理順番を決めるレジスターを−１に切替え、暗号化処理の先頭ポインターを出来上がった上りの暗号処理結果のデータ終端ブロックに置き、下り方向に１ブロック単位で順次上記排他的論理和演算処理し、また平文の着目したブロックの次の下りのブロックと、下り方向に限定して乱数計算により算定して得られた交換先を、交換して暗号化する手段を備えた請求項１１記載の暗号化システム。
【請求項１３】
平文ブロックの処理順番を決めるレジスターに＋１をセットし、上り方向の順に１ブロックづつ排他的論理和演算処理し、また平文の着目したブロックの手前のブロックと、下り方向に限定して乱数計算により算定して得られた交換先を、交換し上り方向の暗号化を実施し、更に平文ブロックの処理順番を決めるレジスターを−１に切替え、暗号化処理の先頭ポインターを出来上がった上りの暗号結果のデータ終端のブロックに置き、下り方向に１ブロック単位で順次上記排他的論理和演算処理し、また平文の着目したブロックの上り側の次のブロックと、上り方向に限定して乱数計算により算定して得られた交換先を、交換して暗号化する手段を備えた請求項１１記載の暗号化システム。
【請求項１４】
請求項１２の暗号化システムにより生成された暗号文に対して、暗号文ブロックの処理順番を決めるレジスターに＋１をセットし、上り方向の順に１ブロックづつ排他的論理和演算処理し、また暗号文の着目したブロックの手前のブロックと、下り方向に限定して乱数計算により算定して得られた交換先を、交換し上り方向の復号化を実施し、更に暗号文ブロックの処理順番を決めるレジスターを−１に切替え、復号化処理の先頭ポインターを出来上がった上りの復号結果のデータ終端のブロックに置き、下り方向に１ブロック単位で順次上記排他的論理和演算処理し、また復号化文の着目したブロックの上り側の次のブロックと、上り方向に限定して乱数計算により算定して得られた交換先を、交換して復号化する手段を備えたことを特徴とする復号化システム。
【請求項１５】
請求項１３の暗号化システムにより生成された暗号文に対して、暗号文ブロックの処理順番を決めるレジスターに＋１をセットし、上り方向に１ブロックづつ上記排他的論理和演算処理し、また暗号文の着目したブロックの次のブロックと、上り方向に限定して乱数計算により算定して得られた交換先を、交換し上り方向の復号化を実施し、更に暗号文ブロックの処理順番を決めるレジスターを−１に切替え、復号化処理の先頭ポインターを出来上がった上りの復号処理結果のデータ終端ブロックに置き、下り方向に１ブロック単位で順次上記排他的論理和演算処理し、また復号化文の着目したブロックの次の下りのブロックと、下り方向に限定して乱数計算により算定して得られた交換先を、交換して復号化する手段を備えたことを特徴とする復号化システム。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
この発明は、例えば暗号通信を行うシステムに用いられるデータの暗号化・復号化する共通鍵方式に関するものである。
【０００２】
【従来の技術】
高度情報化社会と呼ばれる現代社会では、コンピュータネットワークを基盤として、重要な文書・画像情報が電子的な情報と言う形で伝送通信されて処理されているが、このような伝送通信においては伝送文の秘密保持の面から暗号化が極めて重要な意味を有する。
【０００３】
暗号化方式は、大別すると共通鍵暗号系（対称鍵暗号系）と公開鍵暗号系（非対称鍵暗号系）との二つに分類でき、この中共通鍵暗号系では、暗号化鍵と復号鍵とが等しく、送信者と受信者とが共通鍵を持つことによって暗号通信を行う。即ち、送信者が平文を秘密の共通鍵に基づいて暗号化して受信者に送り、受信者はこの共通鍵を用いて暗号文を平文に復号化するものであり、現在最も広く利用されている共通鍵暗号系としてＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）と呼ばれる方式がある。
【０００４】
これに対して公開鍵暗号系では、暗号化鍵と復号鍵とが異なっており、公開されている受信者の公開鍵で送信者が平文を暗号化し、受信者が自身の秘密鍵でその暗号文を復号することによって暗号通信を行うが、この場合公開鍵は暗号化のための鍵、秘密鍵は公開鍵によって変換された暗号文を復号するための鍵であり、公開鍵によって変換された暗号文は秘密鍵でのみ復号することができる等の利点があり、これに属するものとしてＲＳＡ（Ｒｉｒｅｓｔ−Ｓｈａｍｉｒ−Ａｄｌｅｍａｎ）と称される方式が各方面で利用されている。
【０００５】
【発明が解決しようとする課題】
前述したＤＥＳ暗号系は、既に第三者により不当解読されると言う事態が発生しており、このため現在では、同様の暗号方式を３段階重複するトリプルＤＥＳ暗号系が採用され始めているが、これは平文を複数のブロックに区切りそれに対して転置と組み合わせを繰り返す変換を基本にする方式であるため、反復計算攻撃により何れは解読されると言うリスクを抱えており、また通信転送路上でのノイズ等の影響によるデータの僅かな「化け」により、復号が不可能になると言った問題点も抱えている。
【０００６】
一方、ＲＳＡ法の信頼性は、暗号鍵としてのデータのビット長が十分である場合には、かなり高いものとなることが保証されているが、この信頼性を確保するために、現在では２５６ビット長の暗号鍵データを使うのが主流となっているが、ときとして、これでは短すぎ、最近では更に５１２ビットや１０２４ビットのデータ長の暗号鍵が必要とされている。
【０００７】
しかしながら、やたらにビット長を長くすることは、実用上演算時間が長くなり、必ずしも実用的とは言えないし、逆にビット長を短くした場合には、信頼性がかなり低下する。
【０００８】
この発明は上記のような従来の暗号方式に比べて、第三者に解読されるおそれが殆どなく、また平文と暗号文の間でデータ量が全く変化せず、暗号化及び復号化の処理速度は従来のどの方式よりも速く、しかも暗号文の転送中にデータの「化け」が発生したとしても、その影響が復号化した結果に伝播し難い暗号化方式を提供することを目的とする。
【０００９】
【課題を解決するための手段】
この発明は、上記実情に鑑み、
平文からなる暗号文を得る暗号化方法において、暗号化すべき平文を任意のビット数ごとに分割してなる複数のブロックを、処理対象ブロックの処理順番を決めるレジスターの値に従い順次選定し、一方与えられた鍵データを上記平文の分割ビット数と同じビット数ごとに分割した一つの鍵ブロック・データと上記選定された平文ブロックの着目した平文ブロックの位置情報とから乱数を生成し、その値を行き先ブロック番号と選定して、上記平文ブロックと行き先ブロックを交換する暗号化方式を提案するものである。
【００１０】
なお、この発明においては、平文中の着目した平文ブロックの値そのものも、前記交換先ブロック番号選定に加味してもよく、また平文中の着目した平文ブロックと、上記鍵データのブロック情報から算出される乱数の算出結果とを排他的論理和処理して得られた結果を暗号文の同じ位置のデータ・ブロックとすることもできる。
【００１１】
また、この発明において鍵データのブロックを要求する際、先頭から順次鍵データの１ブロックを渡し、該鍵データの終端に至った場合、もう一度先頭に戻って、鍵ブロック・データを用意する鍵スケジュラーを使用することができ、乱数を生成する際に、前回の乱数の算定結果を次回の乱数計算にフィードフォワードする乱数生成器を使用することができる。
【００１２】
更に、この発明においてはブロックの処理順番を決めるレジスターに正にセットすると、平文を上り方向に順に１ブロックづつ暗号処理し、ブロックの処理順番を決めるレジスターを負に切替えることにより、平文を下り方向に１ブロック単位で順次暗号化するレジスター機能を具備し、平文を上り方向と下り方向との往復処理することにより暗号化するができる。
【００１３】
なお、この発明に係る暗号化方式において、着目したブロックの次のブロックとその交換先を、上記ブロックの処理順番を決めるレジスターの値に応じて、正であれば上り方向に、負であれば下り方向に限定して処理してもよい。
【００１４】
この処理は、ブロック単位での処理の進む方向のブロックと交換するものであり、以下「前方処理」と記す（図３、図４参照）。
【００１５】
また、この発明に係る暗号化方式において、着目したブロックの次のブロックとその交換先を、上記ブロックの処理順番を決めるレジスターの値に応じて、正であれば下り方向に、負であれば上り方向に限定して処理してもよい。
【００１６】
この処理は、ブロック単位での処理の進む方向とは反対の方向のブロックと交換するものであり、以下「後方処理」と記す（図３、図４参照）、この発明においては「前方処理」と「後方処理」の両方を行ってもよい。
【００１７】
なお、「前方処理」で暗号化された文は「後方処理」で復号化し、逆に「後方処理」で暗号化された文は「前方処理」で復号化される。
【００１８】
更に、この発明においては暗号化すべき平文を任意のビット数ごとに分割して、処理対象ブロックの処理順番を決めるレジスターを設け、そこに書かれた値に従い順次平文ブロックを暗号化処理する手段と、
与えられた鍵データを上記の平文ブロックと同じ長さのビット数ごとに分割し、その鍵ブロックデータを順に上記暗号処理に供給する鍵スケジュラー手段と、
上記平文ブロックの着目されたデータ・ブロックの位置情報と、鍵スケジュラーから適宜渡される鍵ブロック・データから乱数を生成すると共に、乱数の算定結果を次回の乱数計算にフィードフォワードする機能を具備した乱数生成手段と、
上記平文ブロックの着目したデータ・ブロックの値そのものも算定に加味して交換先ブロック番号を選定し、着目ブロックと交換先ブロックの交換を指示する交換先指示手段と、
上記平文ブロックの着目したデータ・ブロックと、鍵スケジューラーから適宜渡された鍵ブロック・データから算出される上記乱数生成器の結果とを排他的論理和演算処理して得られた結果を暗号文の同じ位置のデータ・ブロックにセットする手段とを備えた暗号化システムを提案するものである。
【００１９】
なお、この発明においては平文ブロックの処理順番を決めるレジスターに＋１をセットし、上り方向の順に１ブロックづつ排他的論理和演算処理し、また平文の着目したブロックの手前のブロックと、下り方向に限定して乱数計算により算定して得られた交換先を、交換し上り方向の暗号化を実施し、更に平文ブロックの処理順番を決めるレジスターを−１に切替え、暗号化処理の先頭ポインターを出来上がった上りの暗号結果のデータ終端のブロックに置き、下り方向に１ブロック単位で順次上記排他的論理和演算処理し、また平文の着目したブロックの上り側の次のブロックと、上り方向に限定して乱数計算により算定して得られた交換先を、交換して暗号化する「前方処理」による暗号化手段を備えてもよい。
【００２０】
また、平文ブロックの処理順番を決めるレジスターに＋１をセットし、上り方向の順に１ブロックづつ排他的論理和演算処理し、また平文の着目したブロックの手前のブロックと、下り方向に限定して乱数計算により算定して得られた交換先を、交換し上り方向の暗号化を実施し、更に平文ブロックの処理順番を決めるレジスターを−１に切替え、暗号化処理の先頭ポインターを出来上がった上りの暗号結果のデータ終端のブロックに置き、下り方向に１ブロック単位で順次上記排他的論理和演算処理し、また平文の着目したブロックの上り側の次のブロックと、上り方向に限定して乱数計算により算定して得られた交換先を、交換して暗号化する「後方処理」による暗号化手段を備えてもよい。
【００２１】
なお、「前方処理」による暗号化手段を備えた暗号化システムにより生成した暗号文に対しては、「後方処理」による復号化手段を備えた復号化システムにより復号化され、逆に「後方処理」による暗号化手段を備えた暗号化システムにより生成した暗号文に対しては、「前方処理」による復号化手段を備えた復号化システムにより復号化される。
【００２２】
【実施例】
以下、この発明を図示の実施例に基づいて詳細に説明すると、暗号化しようとする平文（Ｐ）を図１に示す。図中、数字の０番からＮ番までのがブロック番号を表す。
【００２３】
この実施例ではブロック番号を順に右から暗号化処理するのを「上り方向」として、「上り２」の符号を付し、逆に終端Ｎ番から左に０番迄を暗号化処理するのを「下り方向」として、「下り３」の符号を付している。
【００２４】
また図３、図４は「前方処理」、「後方処理」の一例を図示したものであり、「前方処理」では、今ｉ番目のブロックを暗号化しようとする場合、「前方処理」上り暗号化（往路）（図３）では、ｉ＋１番目のブロックと更に右のデータ・ブロックとを交換し、「前方処理」下り暗号化（復路）（図４）では、ｉ−１番目のブロックと更に左のデータ・ブロックとを交換する。
【００２５】
一方、「後方処理」では、「後方処理」上り暗号化（往路）（図４）では、ｉ−１番目のブロックと更に左のデータ・ブロックとを交換し、「後方処理」下り暗号化（復路）（図３）では、ｉ＋１番目のブロックと更に右のデータ・ブロックとを交換する。
【００２６】
また図２において、暗号化に際して任意に与えられる「鍵」データ（長さＫ＋１ブロック）の例を図示するものであり、この「鍵」データは平文データと同一のビット長さで、先頭の０番から最終のＫ番までのブロックに区切られるが、この実施例では簡単のために、鍵データのブロックは小さい番号から順に大きい番号のブロックへと暗号処理に渡されるものとする。
【００２７】
なお、この発明で使用される鍵スケジュラーは、例えば平文データより短い場合、終端のＫ番目のブロックの次は、先頭の０番に戻るものとして周期的に出力するものとする。
【００２８】
以上のことを踏まえて暗号処理のシステムの構成例を図５に基づいて説明すると、１０は鍵データＫ、１１は鍵データＫ１０のブロックを要求される際、先頭から順次鍵データの１ブロックを渡し、鍵データＫ１０の終端に至った場合、もう一度先頭に戻って、鍵ブロック・データを用意する鍵スケジュラー、１５は交換先指示器、１７は乱数発生器、１８は排他的論理和演算（ＸＯＲ）器、２６はレジスター、２７はブロックの処理順番を決めるレジスターの加算・減算器である。
【００２９】
暗号化すべき平文２４と鍵データＫ１０は同じビット長さに分割してあり、１４は平文２４を分割した複数のブロックのうち着目したブロックＰｉであり、この実施例では１ブロックの長さを８ビット（１バイト）とした場合を説明する。
【００３０】
まず、与えられた鍵データＫ１０は鍵スケジュラー１１を経由して１ブロックＫｊ１２が乱数生成器１３に渡される。
【００３１】
この図の実施例では、平文データのブロックの長さも８ビット長なので、排他的論理和演算（ＸＯＲ）器１８で乱数発生器の出力１３と着目ブロックＰｉとの演算が実施され、その出力が暗号処理後のＣｉ１９に送られる。
【００３２】
次に、鍵スケジュラー１１から次の１ブロック分の鍵データＫｊ１６を取り出し、乱数発生器１７に送る。
【００３３】
乱数発生器１７には、今処理している平文データ・ブロックＰｉ１４の情報も、次のデータ・ブロックＰｉ＋１２０の交換先の範囲として計算に加味するために渡される。なお、図の例では、Ｎ−ｉ＋１が交換先の範囲を示す。
【００３４】
乱数発生器１７から出力ｒを算出し、それを交換先指示器１５に送り、次式によりｉ’を求める。
【００３５】
【数１】
2004302378.tif 000003
【００３６】
ここで、ｍｏｄは剰余算を表す。
このｉ’の値に従い、Ｐｉ＋１２０とＰｉ’２１とを交換し、暗号結果Ｃｉ＋１２２とＣｉ’２３にセットする。
【００３７】
次に処理するデータ・ブロックがｉ＋１（上り）か又はｉ−１（下り）かは、レジスター２６の値に従って、加算（＋１）・減算（−１）器２７が決定する。
【００３８】
次に、図６に従って乱数ｒの生成器Ｒ（Ｋｊ、Ｗ）の処理の詳細を説明する。なお、図中記号Ｌは、この実施例の暗号化システムを塔載する計算機の能力で扱い得る最大の値を意味する。例えばメモリー容量の都合で処理し得る値から決まるが、一方で処理し得る最大の平文データ長と定義してもよい。
【００３９】
次に、記号Ｗは乱数計算の結果得られる値の範囲の上限値を与える。即ち、
【００４０】
【数２】
2004302378.tif 000004
を表す。
【００４１】
次に記号Ｓは乱数の核（種）を表し、記号ＳＬはその核の上限値を表す。
【００４２】
図中のステップ３３からも明らかなように、ＳとＳＬの値は乱数生成器Ｒを呼ぶたびに、次の呼ばれる際の値が演繹的に定まる。
【００４３】
これを図６のフローチャートに沿って説明すると、前回の乱数生成器によって定められた値ＳＬは、ステップ３１により最大値Ｌを超えない値一杯まで拡大されて、それと同時に乱数の種Ｓは、鍵のブロック・データを鍵スケジュラー１１から受け取り下位ビットに加える形で拡大される（ステップ３２）。
【００４４】
次に、ステップ３３に従い、ＳＬを与えられた乱数計算の範囲Ｗに合わせて、ステップ３４により目的のｒを求め、更に前回の乱数計算結果ＳＬを次回の乱数計算にフィードフォワードして核Ｓをセットし直す（ステップ３５）。
【００４５】
【発明の効果】
この発明により、従来の共通鍵方式に比べて、鍵の長さに依存することなく、平文と暗号文の間でデータ量が全く変化しないこととプログラム・サイズが小さくて済むことから、電子回路上への搭載に適していて、高速での暗号化及び復号化の処理を実現できる。
【００４６】
しかも、暗号文の転送中にデータの「化け」が発生したとしても、復号側で「後方処理」を採用する場合、処理の後方にしか復号結果が出現しないため、その影響が伝播し難い暗号化方式を実現することができる。
【図面の簡単な説明】
【図１】Ｎ＋１バイト長さの平文（Ｐ）のディジタル・データ例
【図２】Ｋ＋１バイト長さの鍵（Ｋ）のディジタル・データ例
【図３】平文ブロックの「上りの前方処理」又は「下りの後方処理」例を示す図
【図４】平文ブロックの「上りの後方処理」又は「下りの前方処理」例を示す図
【図５】平文ブロックの「上りの前方処理」又は「下りの後方処理」による暗号化システム構成図
【図６】乱数生成器Ｒ（Ｋｊ、Ｗ）→ｔの処理を示すフローチャート
【図１】
2004302378.tif 000005
【図２】
2004302378.tif 000006
【図３】
2004302378.tif 000007
【図４】
2004302378.tif 000008
【図５】
2004302378.tif 000009
【図６】
2004302378.tif 000010