(57)【特許請求の範囲】
【請求項１】
入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、前記送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムであって、
前記暗号化手段が、
入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを排他的論理和で作用させる第１の加算器と、前記第１の加算器からの出力に非線形変換を行うＳボックス層と、前記Ｓボックス層からの出力に線形変換処理を行う線形変換層と、前記線形変換層からの出力に前記サブブロックデータのうちの残る一方を排他的論理和で作用させる第２の加算器とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有すると共に、
前記復号化手段が、
入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを前記暗号化手段とは逆の順序で排他的論理和で作用させる第３の加算器と、前記第３の加算器からの出力に非線形変換を行うＳボックス層と、前記Ｓボックス層からの出力に線形変換処理を行う線形変換層と、前記線形変換層からの出力に前記サブブロックデータのうちの残る一方を排他的論理和で作用させる第４の加算器とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有し、
前記暗号化手段および前記復号化手段の前記線形変換層が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力する機能を有し（ｍおよびｎは２以上の自然数）、
前記正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、前記正方小行列の残りは前記基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする暗号化通信システム。
【請求項２】
前記線形変換層が入力データに乗算する前記行列Ｍが２種類もしくは３種類のうちいずれか一方の前記正方小行列を組み合わせて構成されたことを特徴とする、請求項１に記載の暗号化通信システム。
【請求項３】
前記基本行列がＭＤＳ（Maximum Distance Separable）行列であることを特徴とする、請求項１または請求項２に記載の暗号化通信システム。
【請求項４】
入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置であって、
前記暗号化手段が、
入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを排他的論理和で作用させる第１の加算器と、前記第１の加算器からの出力に非線形変換を行うＳボックス層と、前記Ｓボックス層からの出力に線形変換処理を行う線形変換層と、前記線形変換層からの出力に前記サブブロックデータのうちの残る一方を排他的論理和で作用させる第２の加算器とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有すると共に、
前記線形変換層が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力する機能を有し（ｍおよびｎは２以上の自然数）、
前記正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、前記正方小行列の残りは前記基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする送信装置。
【請求項５】
受信した信号をブロック暗号方式の復号化手段によって復号化したデータを出力する受信装置であって、
前記復号化手段が、
入力データを分割して生成した２つのサブブロックデータのうちの一方に前記データを暗号化した時とは逆の順序で鍵スケジュールによって予め生成された鍵データを排他的論理和で作用させる第１の加算器と、前記第１の加算器からの出力に非線形変換を行うＳボックス層と、前記Ｓボックス層からの出力に線形変換処理を行う線形変換層と、前記線形変換層からの出力に前記サブブロックデータのうちの残る一方を排他的論理和で作用させる第２の加算器とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有すると共に、
前記線形変換層が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力する機能を有し（ｍおよびｎは２以上の自然数）、
前記正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、前記正方小行列の残りは前記基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする受信装置。
【請求項６】
入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、前記送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムにあって、
入力データを分割して生成した２つのサブブロックデータのうちの一方に、鍵スケジュールによって予め生成された鍵データを、前記暗号化手段が備えている第１の加算器が排他的論理和で作用させ、
前記排他的論理和からの出力に、前記暗号化手段が備えているＳボックス層が非線形変換処理を行い、
前記非線形変換処理からの出力に、前記暗号化手段が備えている線形変換層が線形変換処理を行い、
前記線形変換処理からの出力に前記サブブロックデータのうちの残る一方を、前記暗号化手段が備えている第２の加算器が排他的論理和で作用させると共に、
これらの各処理内容を含むラウンドを１ラウンドとして、このラウンドを前記暗号化手段が使用する暗号方式に応じて予め特定された複数のラウンド数だけ実行し、
前記線形変換処理が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力し（ｍおよびｎは２以上の自然数）、
前記正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、前記正方小行列の残りは前記基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする暗号化方法。
【請求項７】
入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、前記送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムにあって、
入力データを分割して生成した２つのサブブロックデータのうちの一方に、前記データを暗号化した時とは逆の順序で鍵スケジュールによって予め生成された鍵データを、前記復号化手段が備えている第１の加算器が排他的論理和で作用させ、
前記排他的論理和からの出力に、前記復号化手段が備えているＳボックス層が非線形変換処理を行い、
前記非線形変換処理からの出力に、前記復号化手段が備えている線形変換層が線形変換処理を行い、
前記線形変換処理からの出力に前記サブブロックデータのうちの残る一方を、前記復号化手段が備えている第２の加算器が排他的論理和で作用させると共に、
これらの各処理内容を含むラウンドを１ラウンドとして、このラウンドを前記暗号化手段が使用する暗号方式に応じて予め特定された複数のラウンド数だけ実行し、
前記線形変換処理が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力し（ｍおよびｎは２以上の自然数）、
前記正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、前記正方小行列の残りは前記基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする復号化方法。
【請求項８】
入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、前記送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムにあって、
前記暗号化手段が備えるコンピュータを請求項４に記載の送信装置として機能させるための暗号化プログラム。
【請求項９】
入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、前記送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムにあって、
前記復号化手段が備えるコンピュータを請求項５に記載の受信装置として機能させるための復号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化通信システム、送信装置、受信装置、暗号化／復号化方法およびそれらのプログラムに関し、特にブロック暗号で十分な強度を保ちつつ少ないハードウェアで実装することを可能とする暗号化通信システム等に関する。
【背景技術】
【０００２】
コンピュータや携帯電話端末などによるネットワークが普及するにつれ、個人や企業などの機密情報の漏洩が社会的な問題となることが多くなっている。そのため、これらの機密情報を保護するため、データの通信や蓄積の際にそれらのデータを暗号化によって秘匿することがますます重要になっている。
【０００３】
暗号化には、大きく分けて２種類の方法がある。暗号化鍵と復号化鍵が同一である対称鍵（共通鍵）暗号方式と、互いに異なる一対の暗号化鍵と復号化鍵とを用いる非対称鍵（公開鍵）暗号方式である。共通鍵暗号は公開鍵暗号と比較して暗号化／復号化の処理性能が良好であるというメリットを持つため、様々な環境で利用されている。
【０００４】
共通鍵暗号は、さらにブロック暗号およびストリーム暗号という２種類の方式に分類される。ここではブロック暗号について説明する。ブロック暗号の暗号化は、データＰを暗号の仕様によって決定されるブロック長ｎビットに区切って、これを数１に示すように暗号化関数Ｅで秘密鍵Ｋとの間で攪拌して、ｎビットの暗号文Ｃを生成する。
【０００５】
【数１】
0005578422.tif 000002
【０００６】
ブロック暗号は、数２に示すようにラウンド関数Ｆを複数回繰り返す構造の暗号化関数Ｅを使用する。ここでＫ＿１〜Ｋ＿ｒは拡大鍵（副鍵、ラウンド鍵とも呼ばれる）であり、秘密鍵Ｋを種として鍵スケジュールによって生成される。ブロック暗号の繰り返しの単位をラウンドという。即ち、数２に示す暗号化関数Ｅは、関数Ｆをｒラウンド繰り返す構造である。本明細書では、数式以外の行では「Ａに上付き文字Ｂを付したもの（たとえばＡのＢ乗など）」を「Ａ＾Ｂ」と表記し、また「Ａに下付き文字Ｂを付したもの」を「Ａ＿Ｂ」と表記する。
【０００７】
【数２】
0005578422.tif 000003
【０００８】
ブロック暗号に限らず、共通鍵暗号の秘密鍵Ｋは、ブルート・フォース（brute force）攻撃（または総当たり攻撃）によって全数試行すれば必ず行き当たる。そこで、秘密鍵Ｋを十分長くすることによって、現実的な時間での全数試行を困難にしている。
【０００９】
しかしながら、ブロック暗号には秘密鍵を全数試行するために必要とする計算量を削減するショートカット法と呼ばれる攻撃手法が研究されている。設計された暗号のフルラウンド構成についてショートカット法が適用できることは、より少ない計算量で秘密鍵Ｋに行き当たることが可能であることを意味する。ショートカット法は暗号アルゴリズムの構造に起因する特性を利用するため、暗号アルゴリズムを設計する場合、ショートカット法に対する耐性を有していることを評価する必要がある。
【００１０】
ショートカット法の具体的な手法の一つとして、データの差分の伝播を観測するものがある。差分とは、２つのデータの差のことであり、多くの場合排他的論理和による差分が用いられる。より具体的には、たとえばＰ＿１＝０ｘ２３（０ｘは１６進数を意味する）とＰ＿２＝０ｘＦ５との間の差分値ΔＰは、以下の数３で表されるように０ｘＤ６である。本明細書では、数式以外の行では「丸に＋の字を重ねた」排他的論理和の記号を「（＋）」と表記する。
【００１１】
【数３】
0005578422.tif 000004
【００１２】
このような差分を利用したショートカット法の一つに、不能差分攻撃がある。暗号化関数Ｅに対して入力差分ΔＰを入力したとき、第ｉラウンド（ｉ＜ｒ）のラウンド関数Ｆの出力差分が確率１でΔｘになることがない（即ちΔＰからΔｘが発生する確率はゼロである）ならば、それは不能差分であるという。不能差分攻撃とは、このような特性を利用した攻撃手法であり、その手順を簡単に説明すると以下のようになる。
【００１３】
（１）．まずＰ＿１およびＰ＿２という２つのデータを暗号化した際の暗号文を各々Ｃ＿１およびＣ＿２とする。ここで、Ｐ＿１とＰ＿２の間の差分をΔＰとする。即ちＰ＿２＝Ｐ＿１（＋）ΔＰである。
（２）．Ｋ＿（ｉ＋１）〜Ｋ＿ｒを仮定し、これを数２に適用して第ｉラウンドの出力データｘ＿１、ｘ＿２を計算する。ここで、Ｋ＿（ｉ＋１）〜Ｋ＿ｒとして仮定できるサイズは秘密鍵Ｋのサイズ未満である。
（３）．ｘ＿１とｘ＿２の差分がΔｘであるならば、拡大鍵の仮定は誤っていたことになるので、候補から棄却する。
（４）．この一連の作業を、鍵候補が絞り込まれるまで繰り返す。鍵候補が一つに絞り込まれれば、それが正解の鍵である。
【００１４】
不能差分攻撃の解読可能ラウンド数は、不能差分が存在するラウンド数（不能差分特性ラウンド数と呼ぶ）と鍵仮定を行うラウンド数の合計ラウンド数である。フェイステル（Feistel）構造を採用するブロック暗号において、ラウンド関数Ｆ（以後Ｆ関数という）が全単射であるならば、５ラウンドの不能差分が存在することが知られている。しかしながら、Ｆ関数の構造によっては不能差分特性ラウンド数が６ラウンド以上に延びる場合がある。
【００１５】
フェイステル構造を採用した代表的なブロック暗号の一例として、日本電信電話（株）と三菱電機（株）が共同開発したカメリア（Camellia、登録商標）がある。図１３は、カメリアのラウンド関数（Ｆ関数）の構造を示す説明図である。カメリアのＦ関数は、Ｓ関数とＰ関数の２つのパートで構成されている。このような構成をとっているＦ関数をＳＰ型Ｆ関数という。
【００１６】
Ｓ関数はＳ１〜Ｓ４の４種類のＳボックス(S-Box)９１１〜９１４で構成されている非線形変換処理であり、Ｐ関数は排他的論理和９２１〜９３６によってＳボックス９１１〜９１４の出力データｚ１〜ｚ８を拡散させることを目的とした線形変換処理である。
【００１７】
Ｐ関数の変換処理は以下の数４の式で表現することができ、また数５の行列を用いた写像で表現することができる。また、Ｐ関数の逆関数Ｐ＾−１は数６の式で表現することができ、また数６の行列を用いた写像で表現することができる。
【００１８】
数５で示されるように要素が０と１のみで構成されるバイナリ行列は、数４のように排他的論理和（ＸＯＲ）のみで演算できる。このため、カメリアには非常に実装性に優れている（省リソース、高速処理）というメリットがある。
【００１９】
【数４】
0005578422.tif 000005
【００２０】
【数５】
0005578422.tif 000006
【００２１】
【数６】
0005578422.tif 000007
【００２２】
しかしながら、非特許文献１などで、カメリアには８ラウンドの不能差分が存在することが報告されている。以下にそのカメリアの８ラウンド不能差分の詳細を説明する。図１４は、図１３に示したカメリアの暗号化処理１ラウンドについて示す説明図である。
【００２３】
ＫＳ関数９４１は、図１３に示したｋｉの排他的論理和９０１〜９０８とＳボックス９１１〜９１４に相当する。Ｐ関数９４２は、図１のＰ関数（排他的論理和９２１〜９３６）に相当する。第ｉラウンド（ｉは１以上の整数）の入力差分をΔＬ＿（ｉ−１）およびΔＲ＿（ｉ−１）と表記する。また、差分値を８ビット（１バイト）単位の丸め差分で扱って（ｘｘｘｘｘｘｘｘ）と表記し、左から順にバイト１、バイト２、…、バイト８と番号をつける。即ち、一つのｘが８ビットの差分値を表し、差分値が０の場合は０と表記し、非ゼロの場合は任意のアルファベットで表記する。
【００２４】
また、第ｉラウンドのＫＳ関数の出力差分をΔｙｉ、Ｐ関数の出力差分をＰΔｙｉとする。ＫＳ関数はバイト毎に独立に処理を行うので差分値が非ゼロならば任意の非ゼロの差分値に変化するが、他のバイトへ波及することはない。その一方で、Ｐ関数は数５〜６に示したような演算を行うため、他のバイトへ波及する。
【００２５】
図１５は、図１４に示した暗号化処理で、入力差分（００００００００ａ０００００００）から８ラウンド後の出力差分（ｓ０００００００００００００００）が得られない、つまり不能差分であることを示す説明図である。
【００２６】
入力差分の右側（ａ０００００００）はそのまま第２ラウンドの入力差分となるため、Δｙ２＝（ｂ０００００００）となり、ＰΔｙ２＝（ｂｂｂ０ｂ００ｂ）となる。ＰΔｙ２はそのまま第３ラウンドの入力差分となるため、Δｙ３は（ｃｄｅ０ｆ００ｇ）となる。また、８ラウンド後の出力差分をΔＬ＿８＝（ｓ０００００００）、ΔＲ＿８＝（００００００００）として、ラウンドを遡って考える。
【００２７】
ここで、Δｙ５に注目する。Δｙ５は第５ラウンドのＦ関数の出力差分ＰΔｙ５を用いることで以下の数７、数８に示すように表記される。ここで？はゼロか非ゼロのいずれであるかが確定されない差分値を示す。
【００２８】
【数７】
0005578422.tif 000008
【００２９】
【数８】
0005578422.tif 000009
【００３０】
数７、数８から、以下の数９、数１０が導かれる。また、数９に数１０を代入して、ｖ＝０が得られるが、図１５ではｖ≠０なので、ここで矛盾が生じたことになる。以上より、ΔＬ＿０＝（００００００００）、ΔＲ＿０＝（ａ０００００００）からΔＬ＿８＝（ｓ０００００００）、ΔＲ＿８＝（００００００００）が発生しないことがわかる。即ち、不能差分である。
【００３１】
【数９】
0005578422.tif 000010
【００３２】
【数１０】
0005578422.tif 000011
【００３３】
以上で説明したブロック暗号に関連する技術文献として、次に示す各々の特許文献がある。その中でも特許文献１は、与えられた鍵データに基づいて複数の拡大鍵を生成する鍵生成手段と、これらの拡大鍵を所定の順序で適用する暗号化手段と復号化手段とで構成される秘話通信装置について記載されている。特許文献２には、線形変換処理で異なる複数のＭＤＳ行列を適用するという暗号処理装置について記載されている。
【００３４】
特許文献３には、フェイステル型ブロック暗号で、複数種類の線形変換行列を適用する順序を工夫したという暗号処理装置について記載されている。特許文献４には、拡散行列切り替え機構を備えたという暗号処理装置について記載されている。特許文献５には、第１および第２の中間鍵を利用してラウンド関数を実行する回路のコストを削減するというという暗号処理装置について記載されている。
【先行技術文献】
【特許文献】
【００３５】
【特許文献１】特開２００１−１３４１７４号公報
【特許文献２】特開２００６−０７２０５４号公報
【特許文献３】特開２００７−１９９１５６号公報
【特許文献４】特開２００８−０５１８２９号公報
【特許文献５】特開２００９−００３３１２号公報
【非特許文献】
【００３６】
【非特許文献１】Wenling Wu, Wentao Zhang, and Dengguo Feng,"Impossible Differential Cryptanalysis of ARIA and Camellia," Journal of Computer Science and Technology 22(3), pp. 449-456, 2007.
【発明の概要】
【発明が解決しようとする課題】
【００３７】
前述のように、任意の全単射なラウンド関数をもつフェイステル型のブロック暗号には５ラウンドの不能差分が必ず存在するが、カメリアにはそれよりも長い８ラウンドの不能差分が存在している。これは行列Ｐと行列Ｐ＾−１の要素に共に０が存在し、バイト単位に区切った各データが出力の全バイトに作用しないからである。バイナリ行列の場合、全単射性を保証すると行列Ｐと行列Ｐ＾−１に要素０が存在し、上記のような不能差分の原因となる可能性がある。
【００３８】
解析に利用する特性が長いということは、その解析に対する耐性を持たせるためにラウンド数を増やさねばならない。ラウンド数を増やすと処理性能が低下するため、実装性という観点でいうと望ましいことではない。特に、携帯電話端末やＩＣカードなど、少ない計算能力と記憶容量しか持たないハードウェアでこの暗号化方式を利用する上で、このことは大きな障害となる。
【００３９】
要素に０を持たない行列としてＭＤＳ（Maximum Distance Separable）行列がある。ＭＤＳ行列は、暗号学的に良好な性質を持っているため、いくつかのブロック暗号に採用されている。しかしながら、ＭＤＳ行列は２以上の要素を持つため、有限体上の乗算を行わなければならないので、バイナリ行列よりも計算コストが増加する。このため、サイズの大きなＭＤＳ行列は計算コストの増加がデメリットとなる。
【００４０】
特許文献１〜５は、いずれもこの不能差分特性を短縮することを目的としたものではなく、また不能差分特性を短縮しうる構成は記載されていない。従って、これらの技術の組み合わせによってこの問題を解決することはできない。
【００４１】
本発明の目的は、不能差分特性を短縮して、十分な強度を保ちつつ少ないハードウェアでの利用を可能とする暗号化通信システム、送信装置、受信装置、暗号化／復号化方法およびそれらのプログラムを提供することにある。
【課題を解決するための手段】
【００４２】
上記目的を達成するため、本発明に係る暗号化通信システムは、入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムであって、暗号化手段が、入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを排他的論理和で作用させる第１の加算器と、第１の加算器からの出力に非線形変換を行うＳボックス層と、Ｓボックス層からの出力に線形変換処理を行う線形変換層と、線形変換層からの出力にサブブロックデータのうちの残る一方を排他的論理和で作用させる第２の加算器とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有すると共に、復号化手段が、入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを暗号化手段とは逆の順序で排他的論理和で作用させる第３の加算器と、第３の加算器からの出力に非線形変換を行うＳボックス層と、Ｓボックス層からの出力に線形変換処理を行う線形変換層と、線形変換層からの出力にサブブロックデータのうちの残る一方を排他的論理和で作用させる第４の加算器とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有し、暗号化手段および復号化手段の線形変換層が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力する機能を有し（ｍおよびｎは２以上の自然数）、正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、正方小行列の残りは基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする。
【００４３】
上記目的を達成するため、本発明に係る送信装置は、入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置であって、暗号化手段が、入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを排他的論理和で作用させる第１の加算器と、第１の加算器からの出力に非線形変換を行うＳボックス層と、Ｓボックス層からの出力に線形変換処理を行う線形変換層と、線形変換層からの出力にサブブロックデータのうちの残る一方を排他的論理和で作用させる第２の加算器とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有すると共に、線形変換層が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力する機能を有し（ｍおよびｎは２以上の自然数）、正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、正方小行列の残りは基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする。
【００４４】
上記目的を達成するため、本発明に係る受信装置は、受信した信号をブロック暗号方式の復号化手段によって復号化したデータを出力する受信装置であって、復号化手段が、入力データを分割して生成した２つのサブブロックデータのうちの一方にデータを暗号化した時とは逆の順序で鍵スケジュールによって予め生成された鍵データを排他的論理和で作用させる第１の加算器と、第１の加算器からの出力に非線形変換を行うＳボックス層と、Ｓボックス層からの出力に線形変換処理を行う線形変換層と、線形変換層からの出力にサブブロックデータのうちの残る一方を排他的論理和で作用させる第２の加算器とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有すると共に、線形変換層が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力する機能を有し（ｍおよびｎは２以上の自然数）、正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、正方小行列の残りは基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする。
【００４５】
上記目的を達成するため、本発明に係る暗号化方法は、入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムにあって、
入力データを分割して生成した２つのサブブロックデータのうちの一方に、鍵スケジュールによって予め生成された鍵データを、暗号化手段が備えている第１の加算器が排他的論理和で作用させ、排他的論理和からの出力に、暗号化手段が備えているＳボックス層が非線形変換処理を行い、非線形変換処理からの出力に、暗号化手段が備えている線形変換層が線形変換処理を行い、線形変換処理からの出力にサブブロックデータのうちの残る一方を、暗号化手段が備えている第２の加算器が排他的論理和で作用させると共に、これらの各処理内容を含むラウンドを１ラウンドとして、このラウンドを暗号化手段が使用する暗号方式に応じて予め特定された複数のラウンド数だけ実行し、線形変換処理が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力し（ｍおよびｎは２以上の自然数）、正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、正方小行列の残りは基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする。
【００４６】
上記目的を達成するため、本発明に係る復号化方法は、入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムにあって、入力データを分割して生成した２つのサブブロックデータのうちの一方に、データを暗号化した時とは逆の順序で鍵スケジュールによって予め生成された鍵データを、復号化手段が備えている第１の加算器が排他的論理和で作用させ、排他的論理和からの出力に、復号化手段が備えているＳボックス層が非線形変換処理を行い、非線形変換処理からの出力に、復号化手段が備えている線形変換層が線形変換処理を行い、線形変換処理からの出力にサブブロックデータのうちの残る一方を、復号化手段が備えている第２の加算器が排他的論理和で作用させると共に、これらの各処理内容を含むラウンドを１ラウンドとして、このラウンドを暗号化手段が使用する暗号方式に応じて予め特定された複数のラウンド数だけ実行し、線形変換処理が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力し（ｍおよびｎは２以上の自然数）、正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、正方小行列の残りは基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする。
【００４７】
上記目的を達成するため、本発明に係る暗号化プログラムは、入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムにあって、暗号化手段が備えるコンピュータを請求項４に記載の送信装置として機能させるための暗号化プログラムである。
【００４８】
上記目的を達成するため、本発明に係る復号化プログラムは、装置と、送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムにあって、復号化手段が備えるコンピュータを請求項５に記載の受信装置として機能させるための復号化プログラムである。
【発明の効果】
【００４９】
本発明は、上述したように線形変換処理に使用する行列として、正方小行列とその正方小行列を行巡回シフトさせたものを排他的論理和して得られるものとを組み合わせたものを使用するように構成したので、カメリアに存在する８ラウンドの不能差分を排除することができる。これによって、不能差分特性を短縮して、十分な強度を保ちつつ少ないハードウェアの利用が可能である暗号化通信システム、送信装置、受信装置、暗号化／復号化方法およびそれらのプログラムを提供することができる。
【図面の簡単な説明】
【００５０】
【図１】本発明の第１の実施形態に係る暗号化通信システムの構成について示す説明図である。
【図２】図１に示した暗号化手段および復号化手段の、より詳しい構成について示す説明図である。
【図３】図２に示した暗号化手段（復号化手段）が行う入力データの暗号化の処理について示すフローチャートである。
【図４】図２で示した線形変換層の処理を表す行列Ｍについて示す説明図である。
【図５】図４に示した行列Ｍの構成について示す説明図である。
【図６】図５に示した行列Ｍｂを数１１によって生成した例について示す説明図である。
【図７】本発明の第２の実施形態に係る暗号化通信システムの構成について示す説明図である。
【図８】図７に示した暗号化手段および復号化手段の、より詳しい構成について示す説明図である。
【図９】図８で示した線形変換層の処理を表す行列Ｍの構成について示す説明図である。
【図１０】本発明の第３の実施形態に係る暗号化通信システムの構成について示す説明図である。
【図１１】図１０に示した暗号化手段および復号化手段の、より詳しい構成について示す説明図である。
【図１２】図１１で示した線形変換層の処理を表す行列Ｍの構成について示す説明図である。
【図１３】カメリアのラウンド関数（Ｆ関数）の構造を示す説明図である。
【図１４】図１３に示したカメリアの暗号化処理１ラウンドについて示す説明図である。
【図１５】図１４に示した暗号化処理が不能差分であることを示す説明図である。
【発明を実施するための形態】
【００５１】
（第１の実施形態）
以下、本発明の第１の実施形態の構成について添付図１〜２に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係る暗号化通信システム１は、入力されるデータをブロック暗号方式の暗号化手段１２によって暗号化してから送出する送信装置１０と、送信装置から受信した信号を復号化手段２３によって復号化する受信装置２０とを含む暗号化通信システムである。暗号化手段１２は、入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを排他的論理和で作用させる第１の加算器１０１ａと、第１の加算器からの出力に非線形変換を行うＳボックス層１０１ｂと、Ｓボックス層からの出力に線形変換処理を行う線形変換層１０１ｃと、線形変換層からの出力にサブブロックデータのうちの残る一方を排他的論理和で作用させる第２の加算器１０２とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有する。復号化手段２３は、入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを暗号化手段とは逆の順序で排他的論理和で作用させる第３の加算器２０１ａと、第３の加算器からの出力に非線形変換を行うＳボックス層２０１ｂと、Ｓボックス層からの出力に線形変換処理を行う線形変換層２０１ｃと、線形変換層からの出力にサブブロックデータのうちの残る一方を排他的論理和で作用させる第４の加算器２０２とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有する。そして暗号化手段および復号化手段の線形変換層１０１ｃ（２０１ｃ）が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力し、正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、正方小行列の残りは基本行列に当該基本行列を行巡回シフトさせたもの排他的論理和して得られるものである。
【００５２】
ここで、線形変換層が入力データに乗算する行列Ｍは、２種類の正方小行列を組み合わせて構成されたものである。そして、この基本行列は要素に０を持たないＭＤＳ（Maximum Distance Separable）行列である。
【００５３】
この構成を備えることにより、本実施形態の暗号化通信システム１は、カメリアに存在する８ラウンドの不能差分を排除して、不能差分特性を短縮し、十分な強度を保ちつつ少ないハードウェアの利用が可能である暗号化通信を行うことができる。
以下、これをより詳細に説明する。
【００５４】
図１は、本発明の第１の実施形態に係る暗号化通信システム１の構成について示す説明図である。暗号化通信システム１は、送信装置１０と、受信装置２０とで構成される。送信装置１０は、入力されるデータを圧縮手段１１によってデータ圧縮し、次いで暗号化手段１２によって暗号化し、次いで符号化手段１３によってエラー訂正用のデータを付加した符号化を行い、符号化手段１３から出力される符号語を変調手段１４によって変調して搬送波に載せて、伝送路３０に送出する。そして鍵スケジュール手段１５が、後述の鍵データＥｋ＿ｉを生成してこれを暗号化手段１２に与える。
【００５５】
伝送路３０を介して伝送された信号を受信した受信装置２０は、まずこの受信信号を復調手段２１によって復調して符号語を抽出し、その符号語をエラー訂正手段２２によってエラー訂正などを行い、復号化手段２３によって暗号化を解除し、最後に解凍手段２４によってデータ圧縮を解除する。そして鍵スケジュール手段２５が、後述の鍵データＥｋ＿ｉを生成してこれを復号化手段２３に与える。これによって元の入力データを復元して出力する。
【００５６】
伝送路３０は、たとえば光ケーブルでもメタルケーブルでも無線通信でもよいし、またこの伝送路３０を光ディスク、磁気ディスク、フラッシュメモリなどのような記憶媒体や記憶装置に置換することもできる。
【００５７】
本実施形態に係る暗号化／復号化の手法は、暗号化手段１２および復号化手段２３に関わるものである。この手法は、コンピュータプログラムとして実現されてもよく、またＬＳＩ（Large-scale Integrated Circuit）などの電子回路として実現されてもよい。
【００５８】
図２は、図１に示した暗号化手段１２および復号化手段２３の、より詳しい構成について示す説明図である。また図３は、図２に示した暗号化手段１２（復号化手段２３）が行う入力データの暗号化の処理について示すフローチャートである。暗号化手段１２は、４ｎｍビットのフェイステル型ブロック暗号によって暗号化を行う。入力データを２つのサブブロックデータに分割（ステップＳ５１）し、その各々のサブブロックデータのサイズは２ｎｍビットである。
【００５９】
暗号化手段１２の第ｉラウンドの処理１００は、Ｆ関数１０１および第２の加算器（排他的論理和）１０２で構成されている。これを仕様により決定したラウンド数分繰り返す。図２では、第ｉラウンドの処理についてのみ詳しく示しているが、他のラウンドも同様である。
【００６０】
Ｆ関数１０１はサブブロックデータのうちの一方に鍵スケジュール手段１５によって生成された鍵データＥｋ＿ｉを作用させる第１の加算器（排他的論理和）１０１ａ、２ｎ個のｍビット入出力のＳボックスで構成される非線形変換を行うＳボックス層１０１ｂ、そして後述の線形変換処理を行う線形変換層１０１ｃで構成される。
【００６１】
分割した一方のサブブロックデータに加算器（排他的論理和）１０１ａで鍵データＥｋ＿ｉを作用させ（ステップＳ５２）、その出力にＳボックス層１０１ｂで非線形変換を行い（ステップＳ５３）、そしてその出力に線形変換層１０１ｃで線形変換処理を行う（ステップＳ５４）。以上のＦ関数１０１による処理の出力データを、もう一方のサブブロックデータに第２の加算器（排他的論理和）１０２によって作用させる（ステップＳ５５）。
【００６２】
そして、Ｆ関数１０１に入力された側のサブブロックデータと、第２の加算器（排他的論理和）によって生成されたサブブロックデータとの間で左右入れ替えを行い（ステップＳ５６）、これを第ｉラウンドの出力データとする。以上のステップＳ５２〜５６の処理を、仕様により決定された所定のラウンド数分繰り返す（ステップＳ５７〜５８）。
【００６３】
復号化手段２３も、基本的な構成は鍵スケジュール手段２５が生成した鍵データＥｋ＿ｉを作用させる順番が暗号化手段１２とは逆である点を除いては、図２〜３に示した暗号化手段１２と同様である。１ラウンド分の処理２００は、Ｆ関数２０１および排他的論理和２０２で構成されている。これを仕様により決定された所定のラウンド数分繰り返す。従って、以後は暗号化手段１２の線形変換層１０１ｃの構成についてのみ説明する。
【００６４】
図４は、図２で示した線形変換層１０１ｃの処理を表す行列Ｍについて示す説明図である。この行列Ｍは２ｎ行２ｎ列の行列であり（ｎは２以上の自然数）、要素ａ＿（０，０）〜要素ａ＿（ｎ−１，ｎ−１）で構成される正方小行列Ｍ１、要素ａ＿（０，ｎ）〜要素ａ＿（ｎ−１，２ｎ−１）で構成される正方小行列Ｍ２、要素ａ＿（ｎ，０）〜要素ａ＿（２ｎ−１，ｎ−１）で構成される正方小行列Ｍ３、要素ａ＿（ｎ，ｎ）〜要素ａ＿（２ｎ−１，２ｎ−１）で構成される正方小行列Ｍ４の４つのｎ行ｎ列の正方小行列の組み合わせで表現される。
【００６５】
そして、正方小行列Ｍ１〜Ｍ４は２種類以上の行列であり、そのうちの１つを基本小行列とすると、他の小行列は基本小行列を巡回シフトした行列に基本小行列を排他的論理和することで生成される行列である。
【００６６】
図５は、図４に示した行列Ｍの構成について示す説明図である。本実施形態では、正方小行列Ｍ１〜Ｍ４としてＭａおよびＭｂという２種類の行列を使用し、正方小行列Ｍ２〜Ｍ４をＭａ、正方小行列Ｍ１をＭｂとする。そして、要素として０を含まず、かつ同じ列に同じ値の要素を持たない（たとえばＭＤＳ行列などのような）行列Ｍａを基本小行列とする。このとき、行列Ｍｂは以下の数１１で表現される。ここで「＜＜＜」は行単位の巡回シフトを表し、Ｒは１以上ｎ−１以下の整数である。
【００６７】
【数１１】
0005578422.tif 000012
【００６８】
図６は、図５に示した行列Ｍｂを上記の数１１によって生成した例について示す説明図である。ここで、ｒ（ｊ）＝（Ｒ＋ｊ）ｍｏｄ  ｎであり、ｘ  ｍｏｄ  ｎはｘをｎで除算したときの剰余である。
【００６９】
線形変換層１０１ｃの入力データをｙ＿０、ｙ＿１、…、ｙ＿（２ｎ−２）、ｙ＿（２ｎ−１）とし、出力データをｚ＿０、ｚ＿１、…、ｚ＿（２ｎ−２）、ｚ＿（２ｎ−１）とする。ここでｙｉ、ｚｉ（０≦ｉ≦２ｎ−１）は各々ｍビットのデータである。また、行列Ｍａの第ｉ行ｊ列（０≦ｉ、ｊ≦ｎ−１）の要素をａ＿（ｉ，ｊ）という。線形変換層１０１ｃはまず、以下の数１２〜１３に示す行列演算を行う。ここで「・」はＧＦ（２＾ｍ）上の乗算を表す記号である。数１２は図４で示した正方小行列Ｍ３に相当し、数１３は図４で示した正方小行列Ｍ２およびＭ４に相当する。
【００７０】
【数１２】
0005578422.tif 000013
【００７１】
【数１３】
0005578422.tif 000014
【００７２】
線形変換層１０１ｃはこれに引き続いて以下の数１４に示す演算を行い、ｚ＿（ｎ＋ｉ）（０≦ｉ≦ｎ−１）を得る。
【００７３】
【数１４】
0005578422.tif 000015
【００７４】
線形変換層１０１ｃは最後に、以下の数１５に示す演算を行うことによってｚ＿ｉ（０≦ｉ≦ｎ−１）を得る。
【００７５】
【数１５】
0005578422.tif 000016
【００７６】
なお、図６に示した行列Ｍｂを、図５に示した行列Ｍの正方小行列Ｍ１〜Ｍ４のいずれに配置しても、同じ演算回数で行列Ｍとしての演算結果が得られる。
【００７７】
（第１の実施形態の全体的な動作）
次に、上記の実施形態の全体的な動作について説明する。本実施形態に係る暗号化方法は、入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置１０と、送信装置から受信した信号を復号化手段によって復号化する受信装置２０とを含む暗号化通信システム１にあって、入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを第１の加算器が排他的論理和で作用させ、排他的論理和からの出力にＳボックス層が非線形変換処理を行い、非線形変換処理からの出力に線形変換層が線形変換処理を行い、線形変換処理からの出力にサブブロックデータのうちの残る一方を第２の加算器が排他的論理和で作用させると共に、これらの各処理内容を暗号化手段が予め決定されたラウンド数だけ実行し、線形変換処理が、２ｎ個のｍビットデータである入力データに複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力し、正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、正方小行列の残りは基本行列に当該基本行列を行巡回シフトさせたもの排他的論理和して得られるものである。
【００７８】
また、本実施形態に係る復号化方法は、入力データを分割して生成した２つのサブブロックデータのうちの一方にデータを暗号化した時とは逆の順序で鍵スケジュールによって予め生成された鍵データを第１の加算器が排他的論理和で作用させ、排他的論理和からの出力にＳボックス層が非線形変換処理を行い、非線形変換処理からの出力に線形変換層が線形変換処理を行い、線形変換処理からの出力にサブブロックデータのうちの残る一方を第２の加算器が排他的論理和で作用させると共に、これらの各処理内容を復号化手段が予め決定されたラウンド数だけ実行し、線形変換処理が、２ｎ個のｍビットデータである入力データに複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力し、正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、正方小行列の残りは基本行列に当該基本行列を行巡回シフトさせたもの排他的論理和して得られるものである。
【００７９】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するコンピュータである送信装置１０および受信装置２０とに実行させるようにしてもよい。
この動作により、本実施形態は以下のような効果を奏する。
【００８０】
第１の効果は、本発明による線形変換処理をＳＰ型Ｆ関数に採用することにより、カメリアに存在する８ラウンドの不能差分を排除することができるため、不能差分攻撃の適用可能ラウンド数が削減できることである。ラウンド数が削減できると暗号化処理を高速に行うことができるので、携帯電話端末やＩＣカードなどのような、少ない計算能力と記憶容量しか持たないハードウェアでの利用に適する。
【００８１】
第２の効果は、暗号化および復号化の処理に必要な演算回数を削減（演算時間を短縮）できることである。ランダムな要素を持つ２ｎ行２ｎ列の行列を演算する場合、１行分の演算には２ｎ回のＧＦ（２＾ｍ）上の乗算と２ｎ−１回の排他的論理和を行う必要がある。これを２ｎ行について行うと、４ｎ＾２回のＧＦ（２＾ｍ）上の乗算と２ｎ（２ｎ−１）回の排他的論理和を行うことになる。
【００８２】
一方、本発明で構成される２ｎ行２ｎ列の行列の場合、数１２〜１５で示したように、２ｎ＾２回のＧＦ（２＾ｍ）上の乗算と２ｎ＾２回の排他的論理和で演算できる。即ち、演算回数をほぼ半減したことになる。このことも、少ない計算能力と記憶容量しか持たないハードウェアでの利用に適する要因となる。
【００８３】
（第２の実施形態）
本発明の第２の実施形態は、線形変換層が入力データに乗算する行列Ｍの構成を前述の第１の実施形態と比べて変更している。この構成によっても、第１の実施形態と同一の効果が得られる。
以下、これをより詳細に説明する。
【００８４】
図７は、本発明の第２の実施形態に係る暗号化通信システム３０１の構成について示す説明図である。暗号化通信システム３０１は、送信装置３１０と、受信装置３２０とで構成される。送信装置３１０および受信装置３２０は、第１の実施形態に係る送信装置１０および受信装置２０と比べて、暗号化手段３１２および復号化手段３２３のみが異なるので、その他の要素については同一の呼称および参照番号を付している。
【００８５】
図８は、図７に示した暗号化手段３１２および復号化手段３２３の、より詳しい構成について示す説明図である。暗号化手段３１２の１ラウンド分の処理４００は、Ｆ関数４０１内の線形変換層４０１ｃのみが第１の実施形態と異なるので、その他の要素については同一の呼称および参照番号を付している。また処理の手順も、図３に示したフローチャートと同一である。復号化手段３２３についても同様に、Ｆ関数５０１内の線形変換層５０１ｃのみが第１の実施形態と異なる。
【００８６】
図９は、図８で示した線形変換層４０１ｃの処理を表す行列Ｍの構成について示す説明図である。本実施形態では、行列Ｍを構成する正方小行列Ｍ１〜Ｍ４のうちの２つをＭｂ、残る２つを行列Ｍａとし、それらを対角に配置している点が第１の実施形態との相違点である。ここでは、Ｍ２およびＭ３を基本小行列Ｍａ、Ｍ１およびＭ４を行列Ｍｂとしている。
【００８７】
線形変換層４０１ｃはまず、前述の数１２〜１３に示した行列演算で、図６に示したＭｂを算出する。続いて線形変換層４０１ｃは、０≦ｉ≦ｎ−１について以下の数１６の計算を行い、０≦ｉ≦２ｎ−１について以下の数１７の計算を行う。これによって、図９に示した行列Ｍを得ることができる。
【００８８】
【数１６】
0005578422.tif 000017
【００８９】
【数１７】
0005578422.tif 000018
【００９０】
（第３の実施形態）
本発明の第３の実施形態は、線形変換層が入力データに乗算する行列Ｍの構成を３種類の正方小行列を組み合わせたものとしている。この構成によっても、第１の実施形態と同一の効果が得られる。
以下、これをより詳細に説明する。
【００９１】
図１０は、本発明の第３の実施形態に係る暗号化通信システム６０１の構成について示す説明図である。暗号化通信システム６０１は、送信装置６１０と、受信装置６２０とで構成される。送信装置６１０および受信装置６２０は、第１の実施形態に係る送信装置１０および受信装置２０と比べて、暗号化手段６１２および復号化手段６２３のみが異なるので、その他の要素については同一の呼称および参照番号を付している。
【００９２】
図１１は、図１０に示した暗号化手段６１２および復号化手段６２３の、より詳しい構成について示す説明図である。暗号化手段６１２の１ラウンド分の処理７００は、Ｆ関数７０１内の線形変換層７０１ｃのみが第１の実施形態と異なるので、その他の要素については同一の呼称および参照番号を付している。また処理の手順も、図３に示したフローチャートと同一である。復号化手段６２３についても同様に、Ｆ関数８０１内の線形変換層８０１ｃのみが第１の実施形態と異なる。
【００９３】
図１２は、図１１で示した線形変換層７０１ｃの処理を表す行列Ｍの構成について示す説明図である。本実施形態では、行列Ｍを構成する正方小行列Ｍ１〜Ｍ４としてＭａ、Ｍｂ、Ｍｃなる３つの行列を使用している点が第１および第２の実施形態との相違点である。ここでは、Ｍ２およびＭ３を基本小行列Ｍａ、Ｍ１を行列Ｍｂ、Ｍ４を行列Ｍｃとしている。ただし、Ｍａ、Ｍｂ、Ｍｃの配置はこの例に限定されるものではない。
【００９４】
ＭｂおよびＭｃは、前述の数１１に各々異なる巡回シフトを作用して基本小行列Ｍａから生成される。ここで行列Ｍｂ、Ｍｃの巡回シフト数をそれぞれＲ１、Ｒ２とする。
【００９５】
線形変換層７０１ｃはまず、前述の数１２〜１３、および数１６に示した行列演算で、図６に示したＭｂを算出する。続いて線形変換層７０１ｃは、０≦ｉ≦ｎ−１について以下の数１８の計算を行う。これによって、図１２に示した行列Ｍを得ることができる。ここで、ｒ＿１（ｊ）＝Ｒ１＋ｊ  ｍｏｄ  ｎ、ｒ＿２（ｊ）＝Ｒ２＋ｊ  ｍｏｄ  ｎである。
【００９６】
【数１８】
0005578422.tif 000019
【００９７】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【００９８】
上述した各々の実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【００９９】
（付記１）  入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、前記送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムであって、
前記暗号化手段が、
入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを排他的論理和で作用させる第１の加算器と、前記第１の加算器からの出力に非線形変換を行うＳボックス層と、前記Ｓボックス層からの出力に線形変換処理を行う線形変換層と、前記線形変換層からの出力に前記サブブロックデータのうちの残る一方を排他的論理和で作用させる第２の加算器とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有すると共に、
前記復号化手段が、
入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを前記暗号化手段とは逆の順序で排他的論理和で作用させる第３の加算器と、前記第３の加算器からの出力に非線形変換を行うＳボックス層と、前記Ｓボックス層からの出力に線形変換処理を行う線形変換層と、前記線形変換層からの出力に前記サブブロックデータのうちの残る一方を排他的論理和で作用させる第４の加算器とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有し、
前記暗号化手段および前記復号化手段の前記線形変換層が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力する機能を有し（ｍおよびｎは２以上の自然数）、
前記正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、前記正方小行列の残りは前記基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする暗号化通信システム。
【０１００】
（付記２）  前記線形変換層が入力データに乗算する前記行列Ｍが２種類もしくは３種類のうちいずれか一方の前記正方小行列を組み合わせて構成されたことを特徴とする、付記１に記載の暗号化通信システム。
【０１０１】
（付記３）  前記基本行列がＭＤＳ（Maximum Distance Separable）行列であることを特徴とする、付記１または付記２に記載の暗号化通信システム。
【０１０２】
（付記４）  入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置であって、
前記暗号化手段が、
入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを排他的論理和で作用させる第１の加算器と、前記第１の加算器からの出力に非線形変換を行うＳボックス層と、前記Ｓボックス層からの出力に線形変換処理を行う線形変換層と、前記線形変換層からの出力に前記サブブロックデータのうちの残る一方を排他的論理和で作用させる第２の加算器とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有すると共に、
前記線形変換層が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力する機能を有し（ｍおよびｎは２以上の自然数）、
前記正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、前記正方小行列の残りは前記基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする送信装置。
【０１０３】
（付記５）  受信した信号をブロック暗号方式の復号化手段によって復号化したデータを出力する受信装置であって、
前記復号化手段が、
入力データを分割して生成した２つのサブブロックデータのうちの一方に前記データを暗号化した時とは逆の順序で鍵スケジュールによって予め生成された鍵データを排他的論理和で作用させる第１の加算器と、前記第１の加算器からの出力に非線形変換を行うＳボックス層と、前記Ｓボックス層からの出力に線形変換処理を行う線形変換層と、前記線形変換層からの出力に前記サブブロックデータのうちの残る一方を排他的論理和で作用させる第２の加算器とを含むラウンドを１ラウンドとして、このラウンドを使用する暗号方式に応じて予め特定された複数のラウンド数有すると共に、
前記線形変換層が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力する機能を有し（ｍおよびｎは２以上の自然数）、
前記正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、前記正方小行列の残りは前記基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする受信装置。
【０１０４】
（付記６）  入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、前記送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムにあって、
入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを第１の加算器が排他的論理和で作用させ、
前記排他的論理和からの出力にＳボックス層が非線形変換処理を行い、
前記非線形変換処理からの出力に線形変換層が線形変換処理を行い、
前記線形変換処理からの出力に前記サブブロックデータのうちの残る一方を第２の加算器が排他的論理和で作用させると共に、
これらの各処理内容を含むラウンドを１ラウンドとして、このラウンドを前記暗号化手段が使用する暗号方式に応じて予め特定された複数のラウンド数だけ実行し、
前記線形変換処理が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力し（ｍおよびｎは２以上の自然数）、
前記正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、前記正方小行列の残りは前記基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする暗号化方法。
【０１０５】
（付記７）  入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、前記送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムにあって、
入力データを分割して生成した２つのサブブロックデータのうちの一方に前記データを暗号化した時とは逆の順序で鍵スケジュールによって予め生成された鍵データを第１の加算器が排他的論理和で作用させ、
前記排他的論理和からの出力にＳボックス層が非線形変換処理を行い、
前記非線形変換処理からの出力に線形変換層が線形変換処理を行い、
前記線形変換処理からの出力に前記サブブロックデータのうちの残る一方を第２の加算器が排他的論理和で作用させると共に、
これらの各処理内容を含むラウンドを１ラウンドとして、このラウンドを前記暗号化手段が使用する暗号方式に応じて予め特定された複数のラウンド数だけ実行し、
前記線形変換処理が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力し（ｍおよびｎは２以上の自然数）、
前記正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、前記正方小行列の残りは前記基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする復号化方法。
【０１０６】
（付記８）  入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、前記送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムにあって、
前記暗号化手段が備えるコンピュータに、
入力データを分割して生成した２つのサブブロックデータのうちの一方に鍵スケジュールによって予め生成された鍵データを排他的論理和で作用させる手順、
前記排他的論理和からの出力に非線形変換処理を行う手順、
前記非線形変換処理からの出力に線形変換処理を行う手順、
および前記線形変換処理からの出力に前記サブブロックデータのうちの残る一方を排他的論理和で作用させる手順、
これらの各手順を含むラウンドを１ラウンドとして、このラウンドを前記暗号化手段が使用する暗号方式に応じて予め特定された複数のラウンド数だけ実行させると共に、
前記線形変換処理が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力し（ｍおよびｎは２以上の自然数）、
前記正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、前記正方小行列の残りは前記基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする暗号化プログラム。
【０１０７】
（付記９）  入力されるデータをブロック暗号方式の暗号化手段によって暗号化してから送出する送信装置と、前記送信装置から受信した信号を復号化手段によって復号化する受信装置とを含む暗号化通信システムにあって、
前記復号化手段が備えるコンピュータに、
入力データを分割して生成した２つのサブブロックデータのうちの一方に前記データを暗号化した時とは逆の順序で鍵スケジュールによって予め生成された鍵データを排他的論理和で作用させる手順、
前記排他的論理和からの出力に非線形変換処理を行う手順、
前記非線形変換処理からの出力に線形変換処理を行う手順、
および前記線形変換処理からの出力に前記サブブロックデータのうちの残る一方を排他的論理和で作用させる手順、
これらの各手順を含むラウンドを１ラウンドとして、このラウンドを前記暗号化手段が使用する暗号方式に応じて予め特定された複数のラウンド数だけ実行させると共に、
前記線形変換処理が、２ｎ個のｍビットデータである入力データに対して複数のｎ行ｎ列の正方小行列を組み合わせて得られる２ｎ行２ｎ列の行列Ｍを乗算して得られる２ｎ個のｍビットデータである出力データを出力し（ｍおよびｎは２以上の自然数）、
前記正方小行列のうち少なくとも１つは要素に０を含まず、かつ同一列内の要素に同じ値を持たない基本行列であり、前記正方小行列の残りは前記基本行列に当該基本行列を行巡回シフトさせたものを排他的論理和して得られるものであることを特徴とする復号化プログラム。
【産業上の利用可能性】
【０１０８】
本発明は、音声通信端末やデータ通信装置における通信データを秘匿するための暗号化装置といった用途に適用できる。
【符号の説明】
【０１０９】
１、３０１、６０１  暗号化通信システム
１０、３１０、６１０  送信装置
１１  圧縮手段
１２、３１２、６１２  暗号化手段
１３  符号化手段
１４  変調手段
１５、２５  鍵スケジュール手段
２０、３２０、６２０  受信装置
２１  復調手段
２２  エラー訂正手段
２３、３２３、６２３  復号化手段
２４  解凍手段
３０  伝送路
１００、２００  第ｉラウンドの処理
１０１、２０１  Ｆ関数
１０１ａ、２０１ａ  第１の加算器（排他的論理和）
１０１ｂ、２０１ｂ  Ｓボックス層
１０１ｃ、２０１ｃ、４０１ｃ、５０１ｃ、７０１ｃ、８０１ｃ  線形変換層
１０２、２０２  第２の加算器（排他的論理和）
【図１】
0005578422.tif 000020
【図２】
0005578422.tif 000021
【図３】
0005578422.tif 000022
【図４】
0005578422.tif 000023
【図５】
0005578422.tif 000024
【図６】
0005578422.tif 000025
【図７】
0005578422.tif 000026
【図８】
0005578422.tif 000027
【図９】
0005578422.tif 000028
【図１０】
0005578422.tif 000029
【図１１】
0005578422.tif 000030
【図１２】
0005578422.tif 000031
【図１３】
0005578422.tif 000032
【図１４】
0005578422.tif 000033
【図１５】
0005578422.tif 000034