(57)【特許請求の範囲】
【請求項１】
外部において暗号鍵から生成された拡大鍵を入力し、入力データを入力する鍵加算処理部と、
データに対して全単射変換処理を行う非線形変換処理部とを有し、
前記鍵加算処理部は、
前記非線形変換処理部により全単射変換処理が行われた後のデータを入力データとして入力し、
入力データに対して前記非線形変換処理部による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行い、単射変換処理後のデータを出力し、
前記非線形変換処理部は、
前記鍵加算処理部から出力されたデータを入力し、入力したデータに対する前記鍵加算処理部の単射変換処理の逆変換処理と、逆変換処理後のデータに対する非線形変換処理と、非線形変換処理後のデータに対する全単射変換処理とを１回のテーブル参照により行うことを特徴とする暗号処理装置。
【請求項２】
前記鍵加算処理部は、
同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して２以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して２以上の分割入力データとし、
分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行うことを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記鍵加算処理部は、
複数のテーブルアドレスを備え、各テーブルアドレスに対して全単射逆変換処理、加算処理及び単射変換処理後の計算結果を示すテーブルを管理し、
分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果を前記テーブルから得て、全単射変換処理後の入力データの分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行うことを特徴とする請求項２に記載の暗号処理装置。
【請求項４】
前記鍵加算処理部は、
分割拡大鍵を前記テーブルの一部を用いて変換し、変換後の分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出することを特徴とする請求項３に記載の暗号処理装置。
【請求項５】
前記鍵加算処理部は、
拡大鍵及び入力データをｎ（ｎ≧２）個の分割拡大鍵及びｎ個の分割入力データに分割し、単射変換処理の入力をｘ１〜ｘｎとし、単射変換処理の出力をｆ（ｘ１）〜ｆ（ｘｎ）とし、ｘ１〜ｘｎの連接をｘとした場合に、
ｘの写像ｆ（ｘ）（ｆ（ｘ）はｆ（ｘ１）〜ｆ（ｘｎ）を加算処理した後の値に相当）が全単射写像となる単射変換処理をテーブル参照により行うことを特徴とする請求項１に記載の暗号処理装置。
【請求項６】
前記鍵加算処理部は、
テーブル参照によるテーブル出力データを分割数分得て、各テーブル出力データの加算処理を行い、加算処理後のデータを前記非線形変換処理部に出力し、
前記非線形変換処理部は、
前記鍵加算処理部から出力されたデータを入力し、
入力したデータに対する前記鍵加算処理部の単射変換処理の逆変換処理と、逆変換処理後のデータに対する非線形変換処理と、非線形変換処理後のデータに対する全単射変換処理とを１回のテーブル参照により行うことを特徴とする請求項２に記載の暗号処理装置。
【請求項７】
前記非線形変換処理部は、
前記逆変換処理と、前記非線形変換処理と、前記非線形変換処理後のデータを前記鍵加算処理部における拡大鍵及び入力データの分割位置と同じ分割位置で分割する処理と、分割後の各データに対する全単射変換処理と、全単射逆変換処理後の各データを連接する処理とを１回のテーブル参照により行うことを特徴とする請求項６に記載の暗号処理装置。
【請求項８】
前記非線形変換処理部は、
排他的論理和演算に対して加法性のある全単射変換処理を行うことを特徴とする請求項１に記載の暗号処理装置。
【請求項９】
前記暗号処理装置は、更に、
前記鍵加算処理部から出力されたデータを入力し、
入力したデータに対して前記鍵加算処理部の単射変換処理の逆変換処理を行い、前記逆変換処理後のデータを暗号文データとして出力する最終変換処理部を有することを特徴とする請求項１に記載の暗号処理装置。
【請求項１０】
前記暗号処理装置は、更に、
平文データを入力し、
入力した平文データを分割する処理、分割後の各データに対する全単射変換処理と、全単射変換処理後の各データを連接する処理とを１回のテーブル参照により行う初期変換処理部を有することを特徴とする請求項１に記載の暗号処理装置。
【請求項１１】
前記初期変換処理部は、
排他的論理和演算に対して加法性のある全単射変換処理を行うことを特徴とする請求項１０に記載の暗号処理装置。
【請求項１２】
暗号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する鍵スケジュール部と、
全単射変換処理を行う非線形変換処理部と、
前記鍵スケジュール部から変換拡大鍵を入力し、前記非線形変換処理部により全単射変換処理が行われた後のデータを入力データとして入力し、
入力した変換拡大鍵に対して前記鍵スケジュール部による全単射変換処理の逆変換を行う第１の全単射逆変換処理と、入力データに対して前記非線形変換処理部による全単射変換処理の逆変換を行う第２の全単射逆変換処理と、第１の全単射逆変換処理後の変換拡大鍵と第２の全単射逆変換処理後の入力データとの加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行う鍵加算処理部とを有することを特徴とする暗号処理装置。
【請求項１３】
前記鍵加算処理部は、
同じビット数の変換拡大鍵と入力データを入力し、入力した変換拡大鍵を所定の分割位置で分割して２以上の分割拡大鍵とし、入力した入力データを変換拡大鍵と同じ分割位置で分割して２以上の分割入力データとし、
分割拡大鍵に対する第１の全単射逆変換処理と、分割入力データに対する第２の全単射逆変換処理と、第１の全単射逆変換処理後の分割拡大鍵と第２の全単射逆変換処理後の分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行うことを特徴とする請求項１２に記載の暗号処理装置。
【請求項１４】
コンピュータを、請求項１に記載された暗号処理装置として機能させることを特徴とするプログラム。
【請求項１５】
コンピュータを、請求項１２に記載された暗号処理装置として機能させることを特徴とするプログラム。
【請求項１６】
外部において復号鍵から生成された拡大鍵を入力し、入力データを入力する鍵加算処理部と、
データに対して全単射変換処理を行う非線形変換処理部とを有し、
前記鍵加算処理部は、
前記非線形変換処理部により全単射変換処理が行われた後のデータを入力データとして入力し、
入力データに対して前記非線形変換処理部による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行い、単射変換処理後のデータを出力し、
前記非線形変換処理部は、
前記鍵加算処理部から出力されたデータを入力し、入力したデータに対する前記鍵加算処理部の単射変換処理の逆変換処理と、逆変換処理後のデータに対する非線形変換処理と、非線形変換処理後のデータに対する全単射変換処理とを１回のテーブル参照により行うことを特徴とする復号処理装置。
【請求項１７】
前記鍵加算処理部は、
同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して２以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して２以上の分割入力データとし、
分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行うことを特徴とする請求項１６に記載の復号処理装置。
【請求項１８】
前記鍵加算処理部は、
複数のテーブルアドレスを備え、各テーブルアドレスに対して全単射逆変換処理、加算処理及び単射変換処理後の計算結果を示すテーブルを管理し、
分割拡大鍵と分割入力データから前記テーブルのいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果を前記テーブルから得て、全単射変換処理後の入力データの分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行うことを特徴とする請求項１７に記載の復号処理装置。
【請求項１９】
前記復号処理装置は、更に、
平文データを入力し、
入力した平文データを分割する処理、分割後の各データに対する全単射変換処理と、全単射変換処理後の各データを連接する処理とを１回のテーブル参照により行う初期変換処理部を有することを特徴とする請求項１６に記載の復号処理装置。
【請求項２０】
復号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する鍵スケジュール部と、
全単射変換処理を行う非線形変換処理部と、
前記鍵スケジュール部から変換拡大鍵を入力し、前記非線形変換処理部により全単射変換処理が行われた後のデータを入力データとして入力し、
入力した変換拡大鍵に対して前記鍵スケジュール部による全単射変換処理の逆変換を行う第１の全単射逆変換処理と、入力データに対して前記非線形変換処理部による全単射変換処理の逆変換を行う第２の全単射逆変換処理と、第１の全単射逆変換処理後の変換拡大鍵と第２の全単射逆変換処理後の入力データとの加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行う鍵加算処理部とを有することを特徴とする復号処理装置。
【請求項２１】
前記鍵加算処理部は、
同じビット数の変換拡大鍵と入力データを入力し、入力した変換拡大鍵を所定の分割位置で分割して２以上の分割拡大鍵とし、入力した入力データを変換拡大鍵と同じ分割位置で分割して２以上の分割入力データとし、
分割拡大鍵に対する第１の全単射逆変換処理と、分割入力データに対する第２の全単射逆変換処理と、第１の全単射逆変換処理後の分割拡大鍵と第２の全単射逆変換処理後の分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行うことを特徴とする請求項２０に記載の復号処理装置。
【請求項２２】
コンピュータを、請求項１６に記載された復号処理装置として機能させることを特徴とするプログラム。
【請求項２３】
コンピュータを、請求項２０に記載された復号処理装置として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号アルゴリズムを処理する装置に関する。
【背景技術】
【０００２】
暗号をシステム上で実行する場合、実行中のシステムの消費電力の変化を観測し、暗号処理に使われている秘密情報である暗号鍵を推測する方法がある（例えば非特許文献１）。
この手法は電力解析と呼ばれている。
電力解析に対して、解析を行われても、暗号鍵を推測できないように暗号を実装する必要がある。
【０００３】
このような解析への対策法として、いくつかの方法が提案されている（たとえば特許文献１、２）。
また、電力解析に弱い部分をテーブル参照のみで構築するテーブルネットワーク実装がある（例えば非特許文献２）。
テーブルに設計者のみが知り得る変換処理を施すことで従来の電力差分解析に対して耐性を持たせることができる。
【特許文献１】特開２００５−１３４４７７号公報
【特許文献２】特開２００２−３１１８２６号公報
【非特許文献１】Ｐ．  Ｋｏｃｈｅｒ，  Ｊ．  Ｊａｆｆｅ，  Ｂ．  Ｊｕｎ，  ”Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ”，  Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ：  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＣＲＹＰＴＯ’９９  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ｐｐ．３８８−３９７，  １９９９
【非特許文献２】Ｓ．Ｃｈｏｗ，  Ｐ．  Ｅｉｓｅｎ，  Ｈ．  Ｊｏｈｎｓｏｎ，  Ｐ．Ｃ．  Ｏｏｒｓｃｈｏｔ，  ”Ｗｈｉｔｅ−Ｂｏｘ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ａｎｄ  ａｎ  ＡＥＳ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ”，  Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ：  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＳＡＣ  ２００２  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ２００２
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１や２によれば、あらかじめ複数のスクランブル処理を用意し、暗号処理の過程で、乱数や暗号鍵によって、適用するスクランブル処理を切り替えている。
この場合、用意するスクランブル回路分だけ、冗長なリソースが必要となる。また、解析の困難さは用意するテーブルの種類にのみ依存し、要するリソースの割には、十分な複雑さを得ることはできない。
【０００５】
一方、テーブルネットワーク実装では、設計者が一定の条件の下で任意にテーブルを設計でき、かつ設計可能なテーブルの種類が十分大きいため、従来の電力解析を困難にできる。
しかし、従来のテーブルネットワーク実装では、拡大鍵の生成処理もテーブルに含まれているため、全拡大鍵に対して異なるテーブルを用意する必要があるため、大量のメモリを消費する。
【０００６】
また、異なる秘密鍵が利用されるたびにテーブルを構築しなおす必要があり、演算に多大なコストがかかる。さらに、テーブル構築過程を攻撃することで、秘密鍵や設計者のみが知り得る変換処理が解析される恐れがある。
【０００７】
本発明は、上記のような課題を解決することを主な目的の一つとしており、秘密鍵によるテーブルの再構築を必要とせずに、かつ設計者のみが知り得る変換処理を入れ込んで従来の電力差分解析に対して耐性を持たせる方法を実現することを主な目的の一つとする。
【課題を解決するための手段】
【０００８】
本発明に係る暗号処理装置は、
外部において暗号鍵から生成された拡大鍵を入力し、入力データを入力し、
入力した拡大鍵と入力データとの加算処理をテーブル参照により行う鍵加算処理部を有することを特徴とする。
【発明の効果】
【０００９】
本発明では、外部において暗号鍵から生成された拡大鍵を入力するとともに、拡大鍵に対応させた計算結果が反映されているテーブルを用いることで、拡大鍵と入力データとの加算処理等を１回のテーブル参照で行うことができ、暗号鍵によるテーブルの再構築を必要とせず、かつ設計者のみが知り得る変換処理を入れ込んで電力差分解析に対して耐性を持たせることができる。
【発明を実施するための最良の形態】
【００１０】
実施の形態１．
図１は、本実施の形態に係る暗号処理の全体の流れを示す。
図１では、ＳＰＮ（Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｐｅｒｍｕｔａｔｉｏｎ  Ｎｅｔｗｏｒｋ）構造の暗号の例を示しているが、後述する各処理を組み合わせることで、Ｆｅｉｓｔｅｌ構造の暗号を含む、任意の暗号に適用可能である。
【００１１】
図１に示す暗号処理の前提として、鍵スケジュール処理によって、あらかじめ暗号鍵から拡大鍵１２３〜１３１が生成される。
【００１２】
また、ｍ×ｎビットの平文データ１２２（以下、単に平文ともいう）はｎビットずつに分解され、各々の平文と拡大鍵１２３〜１２５は初期鍵加算処理１０１〜１０３に入力される。
初期鍵加算処理１０１〜１０３の出力は非線形変換処理１０４〜１０６に入力される。
線形変換処理１０７〜１０９は複数の非線形変換処理１０４〜１０６の出力を入力として、ｎビットの出力を求める。
線形変換処理１０７〜１０９の出力は鍵加算処理１１０〜１１２に入力され、拡大鍵１２６〜１２８と加算される。
以降、非線形変換処理、線形変換処理、鍵加算処理を繰り返す。最終の鍵加算処理１１６〜１１８の出力は最終変換処理１１９〜１２１に入力され、その出力を連接したものが暗号文データ１３２（以下、単に暗号文ともいう）となる。
【００１３】
図１４は、図１に示す各処理を実現する暗号処理装置１の機能ブロックを示す。
【００１４】
図１４において、鍵スケジュール部１１は、暗号鍵から拡大鍵１２３〜１３１を生成する。
本実施の形態では、鍵スケジュール部１１における拡大鍵１２３〜１３１の生成方法は、どのようなものであってもよい。
なお、鍵スケジュール部１１が生成する拡大鍵１２３〜１３１は、ｎビットのビット長（分割後の平文と同じビット長）である。
【００１５】
暗号処理部１２は、図１に示される暗号処理を実施する。
つまり、暗号処理部１２に含まれる各要素が図１の処理順序に従って各処理を繰り返すことで暗号処理が実施される。
【００１６】
平文分割部１２１０は、入力されたｍ×ｎビットの平文１２２をｎビットずつに分割する。
【００１７】
初期鍵加算処理部１２２０は、図１の初期鍵加算処理１０１〜１０３を実施する。
初期鍵加算処理部１２２０は、図１に示すように、鍵スケジュール部１１において暗号鍵から生成された拡大鍵１２３〜１２５を入力し、分割された平文を入力データとして入力し、入力した拡大鍵を所定の分割位置で分割して２以上の分割拡大鍵とし、入力した入力データ（分割された平文）を拡大鍵と同じ分割位置で分割して２以上の分割入力データとし、分割拡大鍵と分割入力データ（以下、単に分割入力ともいう）との加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行う。
初期鍵加算処理部１２２０の詳細は、図２を参照して後述する。
なお、初期鍵加算処理部１２２０は、入力データが平文であり、全単射逆変換処理が含まれないが、拡大鍵の分割を行う点、入力データの分割を行う点、加算処理及び単射逆変換処理を１回のテーブル参照で行う点で後述する鍵加算処理部１２５０と共通しており、初期鍵加算処理部１２２０は、鍵加算処理部の一例である。
【００１８】
非線形変換処理部１２３０は、初期鍵加算処理部１２２０又は後述する鍵加算処理部１２５０から出力されたデータを入力し、入力したデータに対する初期鍵加算処理部１２２０又は鍵加算処理部１２５０の単射変換処理の逆変換処理と、逆変換処理後のデータに対する非線形変換処理と、非線形変換処理後のデータに対する全単射変換処理とを１回のテーブル参照により行う。
より具体的には、非線形変換処理部１２３０は、逆変換処理と、非線形変換処理と、非線形変換処理後のデータを初期鍵加算処理部１２２０又は鍵加算処理部１２５０における拡大鍵及び入力データの分割位置と同じ分割位置で分割する処理と、分割後の各データに対する全単射変換処理と、全単射逆変換処理後の各データを連接する処理とを１回のテーブル参照により行う。
また、非線形変換処理部１２３０が行う全単射変換処理は、排他的論理和演算に対して加法性のある全単射変換処理である。
非線形変換処理部１２３０の詳細は、図３を参照して後述する。
【００１９】
線形変換処理部１２４０は、非線形変換処理部１２３０から出力されたデータを入力とし、入力データに対して線形変換処理を行って、鍵加算処理部１２５０に線形変換処理後のデータを出力する。
線形変換処理部１２４０の詳細は、図４を参照して後述する。
【００２０】
鍵加算処理部１２５０は、線形変換処理部１２４０から出力されたデータを入力し、また、拡大鍵１２６〜１２７等を入力する。
線形変換処理部１２４０から入力した入力データは、非線形変換処理部１２３０により全単射変換処理が行われた後のデータである。
そして、鍵加算処理部１２５０は、入力データに対して非線形変換処理部１２３０による全単射変換処理の逆変換を行う全単射逆変換処理と、全単射逆変換処理後の入力データと拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行う。
より具体的には、鍵加算処理部１２５０は、同じビット数の拡大鍵と入力データを入力し、入力した拡大鍵を所定の分割位置で分割して２以上の分割拡大鍵とし、入力した入力データを拡大鍵と同じ分割位置で分割して２以上の分割入力データとし、更に、分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行う。
鍵加算処理部１２５０の詳細は、図５を参照して後述する。
【００２１】
最終変換処理部１２６０は、鍵加算処理部１２５０から出力されたデータを入力し、入力したデータに対して鍵加算処理部１２５０の単射変換処理の逆変換処理を行い、逆変換処理後のデータを分割された暗号文データ（ｎビット）として出力する。
最終変換処理部１２６０の詳細は、図６を参照して後述する。
【００２２】
暗号文連結部１２７０は、最終変換処理部１２６０から出力されたｎビットの暗号文データを連結してｍ×ｎビットの暗号文データとし、ｍ×ｎビットの暗号文データを出力する。
【００２３】
図２は初期鍵加算処理部１２２０の構成を示す。
図２では、入力２０５と拡大鍵２０６との加算を行う（鍵加算）。
加算処理の内容は暗号アルゴリズムにより決定される。加算処理は、例えば、排他論理和演算である。
さらに、出力に対し単射変換処理を行う。
【００２４】
まず、初期鍵加算処理部１２２０は、ｎビットの入力２０５及び拡大鍵２０６を分割する。
分割する個数及びサイズは、その合計がｎビットになるようであれば任意に分割してよい。
但し、対になる分割入力と分割拡大鍵は同じサイズである必要がある。
図２では、ｎ１ビットの分割入力２０７及び分割拡大鍵２０９とｎ２ビットの分割入力２０８及び分割拡大鍵２１０に分割した例を示す。
【００２５】
分割入力２０７及び分割拡大鍵２０９をテーブル２０１に入力し、テーブル出力２１１を得る。
同様に、分割入力２０８及び分割拡大鍵２１０をテーブル２０２に入力し、テーブル出力２１２を得る。
加算処理２１５により、テーブル出力２１１とテーブル出力２１２とを加算し、出力２１６を得る。
【００２６】
テーブル２０１の内容について説明する。テーブル２０２の内容はテーブル２０１と同様である。
テーブル２０１について、分割入力２０７と分割拡大鍵２０９は加算処理２１３によって加算され、その出力が単射変換処理２０３によって、ｎビットのテーブル出力２１１となる。
テーブル２０１及びテーブル２０２は、分割入力と分割拡大鍵に対応させて事前に計算しておき、初期鍵加算処理部１２２０に対応付けて記憶領域に格納する。
つまり、分割入力と分割拡大鍵の対の各パターンに対して事前に出力値を計算しておき、計算結果をテーブル２０１及びテーブル２０２に記述して、初期鍵加算処理部１２２０に対応づけて記憶領域に格納する。
例えば、平文データ（ｍ×ｎビット）が３２ビットである場合に、ｍ＝４とした場合は、ｎ＝８ビットとなり、ｎ１＝ｎ２＝４ビットとした場合には、４ビットの分割拡大鍵と４ビットの分割入力における全組合せに対する出力値を計算して、テーブル２０１及びテーブル２０２に記述するようにする。
なお、単射変換処理２０３は、ｎ１ビットを入力とし、所定のｎビット出力を出す。
【００２７】
単射変換処理２０３、単射変換処理２０４、加算処理２１５の条件について、単射変換処理２０３の入力をｘ１、出力をｆ１（ｘ１）、単射変換処理２０４の入力をｘ２、出力をｆ２（ｘ２）、加算処理２１５を“＋”と表示した場合、ｘ＝ｘ１｜｜ｘ２の写像ｆ（ｘ）＝ｆ１（ｘ１）＋ｆ２（ｘ２）が全単射写像になるように決定する。ただし、“｜｜”はデータの連接を示す。
【００２８】
前記単射変換処理２０３、単射変換処理２０４、加算処理２１５の例を以下に示す。
【００２９】
例１：
ＧＦ（２）上のｎ×ｎ正則行列Ｚを与え、数式１を満たすｎ１×ｎの行列Ａとｎ２×ｎの行列Ｂを生成する。また、ｎビットの固定値ｃ１、ｃ２も生成する。
単射変換処理２０３は数式２により出力ｙを求め、単射変換処理２０４は数式３により出力ｙを求める。
加算処理２１５はビット単位の排他的論理和とする。
【００３０】
【数１】
0005354914.tif 000002
【００３１】
例２：
ｎ１×ｎ１の全単射変換Ｅとｎ２×ｎ２の全単射変換Ｆを与える。また、ｎ２ビットの定数ｃ３及びｎ１ビットの定数ｃ４を与える。
単射変換処理２０３は数式４により出力ｙを求め、単射変換処理２０４は数式５により出力ｙを求める。
加算処理２１５はビット単位の排他的論理和とする。
【００３２】
【数２】
0005354914.tif 000003
【００３３】
なお、例１と例２を組み合わせてもよい。
例えば、テーブル２０１の単射変換処理２０３は、例１の数式２を用いて行い、テーブル２０２の単射変換処理２０４は、例２の数式５を用いて行うようにしてもよい。
また、テーブル２０１の単射変換処理２０３は、例２の数式４を用いて行い、テーブル２０２の単射変換処理２０４は、例１の数式３を用いて行うようにしてもよい。
【００３４】
このように、初期鍵加算処理部１２２０では、鍵スケジュール部１１で生成された拡大鍵を入力し、入力した拡大鍵を分割した分割拡大鍵と分割入力の組合せに対して予め用意しているテーブルを利用して、加算処理、単射変換処理を行う。
つまり、拡大鍵の生成処理は外部である鍵スケジュール部１１で行われ、初期鍵加算処理部１２２０が参照するテーブルには拡大鍵生成処理が含まれていないので、暗号鍵に対応させてテーブルを更新する必要がない。
【００３５】
図３に非線形変換処理部１２３０の構成を示す。図３は、暗号の非線形変換処理である。
【００３６】
入力３０６はテーブル３０１に入力され、出力３０７を得る。
【００３７】
テーブル３０１の内容について説明する。
入力データは逆変換処理３０２により変換される。
逆変換処理３０２は、初期鍵加算処理部１２２０の単射変換処理２０３及び単射変換処理２０４（又は、鍵加算処理部１２５０の単射変換処理５０５及び単射変換処理５０６）に対応し、図２の出力２１６（又は図５の出力５０９）に対する逆変換を求める。以下に前記例１及び例２に対する逆変換を示す。
【００３８】
例１の逆変換：
逆変換処理３０２では、数式６を計算する。ただし、Ｚ−１は数式１に示す行列Ｚの逆行列である。
【００３９】
【数３】
0005354914.tif 000004
【００４０】
例２の逆変換：
逆変換処理３０２では、数式７を計算する。ただし、Ｅ−１，Ｆ−１は全単射変換Ｅ，Ｆ逆行列とする。“＞＞ｎ２”はｎ２ビットの左シフト、“・ｎ１”はデータの下位ｎ１ビットの抽出を示す。
【００４１】
【数４】
0005354914.tif 000005
【００４２】
逆変換処理３０２の出力は非線形変換処理３０３に入力される。非線形変換処理３０３は暗号アルゴリズムにより決定される。
【００４３】
非線形変換処理３０３の出力は複数に分割され、各々について全単射変換処理が施される。全単射変換処理ｆ１（ｘ１），ｆ２（ｘ２），・・・，ｆｎ（ｘｎ）は、図１の線形変換処理１０７〜１０９に対して加法性を満たすように選択する。
具体的には、線形変換処理をｙ＝ｙ１‖ｙ２‖・・・‖ｙｎ＝ｆＬ（ｘ１，ｘ２，・・・，ｘｎ）とした場合、数式８を満たすように選択する。
ただし、ｙｉは数式９を満たすものとする。数式９で｜ｙｉ｜はｙｉのビット長を示す。
全単射変換処理されたデータは連結されて出力される。
テーブル３０１は、事前に計算しておき、非線形変換処理部１２３０に対応付けて記憶領域に格納する。
つまり、入力データの各パターンに対して事前に出力値を計算しておき、計算結果をテーブル３０１に記述して、非線形変換処理部１２３０に対応付けて記憶領域に格納する。
【００４４】
【数５】
0005354914.tif 000006
【００４５】
線形変換処理１０７〜１０９をビット単位の排他的論理和とした場合の、全単射変換処理３０４、全単射変換処理３０５の例を以下に示す。
【００４６】
例１：
ＧＦ（２）上のｎ１×ｎ１の正則行列Ｇとｎ２×ｎ２の正則行列Ｈを生成する。また、ｎ１ビットの固定値ｃ１，及びｎ２ビットの固定値ｃ２も生成する。全単射変換処理３０４は数式１０により出力ｙを求め、全単射変換処理３０５は数式１１により出力ｙを求める。
【００４７】
【数６】
0005354914.tif 000007
【００４８】
例２：
ガロア拡大体ＧＦ（２ｎ１）の元ｋ，ｌおよびＧＦ（２ｎ２）の元ｍ，ｎを与える。全単射変換処理２０４では数式１２により出力ｙを求め、全単射変換処理２０５では数式１３により出力ｙを求める。ただし、“・”はガロア拡大体上の乗算を示し、“＋”はガロア拡大体上の加算を示す。
【００４９】
【数７】
0005354914.tif 000008
【００５０】
例３：
正整数ｐ（１≦ｐ＜ｎ１），ｑ（１≦ｑ＜ｎ２）を与える。全単射変換処理２０４では数式１４により出力ｙを求め、全単射変換処理２０５では数式１５により出力ｙを求める。
【００５１】
【数８】
0005354914.tif 000009
【００５２】
なお、例１〜例３を組み合わせてもよい。
次に、図４に線形変換処理部１２４０の構成を示す。
線形変換処理４０１の内容は暗号アルゴリズムにより決定される。複数のｎビット入力４０２〜４０４を得て、ｎビット出力４０５を生成する。
線形変換処理４０１は、例えば、排他論理和演算である。
【００５３】
図５に鍵加算処理部１２５０の構成を示す。
図５では、入力５０７と拡大鍵５０８と加算を行う（鍵加算）。加算処理の内容は暗号アルゴリズムにより決定される。加算処理は、例えば、排他論理和演算処理である。
さらに、出力に対し単射変換処理を行う。
【００５４】
まず、ｎビットの入力５０７及び拡大鍵５０８をそれぞれ分割入力５０９、分割入力５１０及び分割拡大鍵５１１、分割拡大鍵５１２に分割する。
分割法は図３における分割法と同一である。
【００５５】
分割入力５０９、分割拡大鍵５１１をテーブル５０１に入力し、テーブル出力５１３を得る。
同様に、分割入力５１０、分割拡大鍵５１２をテーブル５０２に入力し、テーブル出力５１４を得る。
加算処理５１７により、テーブル出力５１３とテーブル出力５１４とを加算し、出力５０９を得る。
【００５６】
テーブル５０１の内容について説明する。テーブル５０２の内容はテーブル５０１と同様である。
テーブル５０１について、分割入力５０９は全単射逆変換処理５０３に入力される。全単射逆変換処理５０３は図３の全単射変換処理３０４の逆変換処理である。
全単射逆変換処理５０３の出力と分割拡大鍵５１１は加算処理５１５によって加算され、その出力が単射変換処理５０５によって、ｎビットのテーブル出力５１３となる。
単射変換処理５０５は図２の単射変換処理２０３と同値である。
テーブル５０１及びテーブル５０２は、分割入力と分割拡大鍵に対応させて事前に計算しておき、鍵加算処理部１２５０に対応付けて記憶領域に格納する。
つまり、分割入力と分割拡大鍵の対の各パターンに対して事前に出力値を計算しておき、計算結果をテーブル５０１及びテーブル５０２に記述して、鍵加算処理部１２５０に対応づけて記憶領域に格納する。
【００５７】
このように、鍵加算処理部１２５０では、鍵スケジュール部１１で生成された拡大鍵を入力し、入力した拡大鍵を分割した分割拡大鍵と分割入力の組合せに対して予め用意しているテーブルを利用して、全単射逆変換処理、加算処理、単射変換処理を行う。
つまり、拡大鍵の生成処理は外部である鍵スケジュール部１１で行われ、鍵加算処理部１２５０が参照するテーブルには拡大鍵生成処理が含まれていないので、暗号鍵に対応させてテーブルを更新する必要がない。
【００５８】
図６に最終変換処理の構成を示す。この処理は暗号文を出力する直前に行う。
【００５９】
入力６０３はテーブル６０１に入力され、出力６０４を得る。
逆変換処理６０２は図３の逆変換処理３０２と同じである。
テーブル６０１は、事前に計算しておき最終変換処理部１２６０に対応付けて格納する。
【００６０】
復号処理も前記暗号処理と同様に行うことができる。ただし、拡大鍵１２３〜１３１（図１）、加算処理２１３，２１４（図２）、非線形変換処理３０３（図３）、線形変換処理４０１（図４） 加算処理５１５，５１６（図５）は、復号アルゴリズムに準拠する。また復号時は、図１において、入力が暗号文となり、平文を出力する。
つまり、本実施の形態で説明した手順及び図１〜図６、図１４に示す構成にて、本実施の形態に係る暗号処理装置に対応する復号処理装置も構成することができる。復号処理装置においては入力が暗号文となり、出力が平文となる。また、拡大鍵の生成に用いられる復号鍵は暗号鍵と共通である。
【００６１】
ここで、本実施の形態に係る効果の一例について説明する。
図２、３、５、６における単射変換処理ならびに全単射変換処理は、所定の条件を満たす範囲で、設計者が任意に選択できる。
よって、攻撃者が暗号アルゴリズムを知っていたとしても、各々のコンポーネントの出力までは予想できない。これにより、従来の電力差分解析に対して耐性を持たせることができる。
【００６２】
また、従来のように、暗号鍵によるテーブルの再計算を必要としないため、その分の演算コストを抑えることができる。
さらに、鍵加算部において、入力を分割することにより、テーブルサイズを抑えることができる。
【００６３】
このように、本実施の形態に係る暗号処理装置によれば、外部において暗号鍵から生成された拡大鍵を入力するとともに、拡大鍵に対応させた計算結果が反映されているテーブルを用いることで、拡大鍵と入力データとの加算処理等を１回のテーブル参照で行うことができ、暗号鍵によるテーブルの再構築を必要とせず、かつ設計者のみが知り得る変換処理を入れ込んで電力差分解析に対して耐性を持たせることができる。
【００６４】
実施の形態２．
実施の形態１において、鍵加算は分割入力と分割拡大鍵とを連結してテーブル参照を行っているが、本実施の形態では、分割入力と分割拡大鍵とを連結しないでテーブル参照する方法を示す。
【００６５】
図７は、図２におけるテーブル２０１における実施例を示す。
テーブル２０２についても同様に実施できる。
テーブル７０１はテーブル２０１と等価なテーブルである。
具体的には、テーブル７０１において、分割拡大鍵２０９を上位ビットに、分割入力２０７を下位ビットに連結してテーブルを作成する。
つまり、本実施の形態に係る初期鍵加算処理部１２２０が利用するテーブル７０１は、複数のテーブルアドレスを備え、各テーブルアドレスに対して加算処理及び単射変換処理後の計算結果を示すテーブルである。
なお、単射変換処理７０２は図２の単射変換処理２０３と同じである。
また、加算処理７０８は図２の加算処理２１３と同じである。
【００６６】
アドレス計算処理７０３は分割拡大鍵７０５を入力として、参照テーブルアドレス７０７（テーブルアドレスの上位ビット）を計算する。具体的には、分割拡大鍵７０５をｎ１ビット左シフトし、その結果とテーブル７０１の先頭アドレスとを加算し、その結果を参照テーブルアドレス７０７とする。
アドレス計算処理７０３は鍵スケジュールの段階で計算してもよい。
【００６７】
また、分割入力７０４をテーブルアドレスの下位ビットとし、参照テーブルアドレス７０７を元に、該当するテーブルアドレスのテーブル値を参照し、テーブル出力７０６を得る。
具体的には参照テーブルアドレス７０７と分割入力７０４とを連結し、結果のアドレスのテーブル値を参照する。
【００６８】
このように、本実施の形態では、初期鍵加算処理部１２２０は、分割拡大鍵をテーブルの一部を用いて変換し、変換後の分割拡大鍵と分割入力データからいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果をテーブルから得て、分割拡大鍵と分割入力データの加算処理と加算処理後のデータの単射変換処理とを１回のテーブル参照により行う。
【００６９】
図８は図５におけるテーブル５０１における実施例を示す。
テーブル５０２についても同様に実施できる。
テーブル８０１はテーブル５０１と等価なテーブルである。
具体的には、テーブル８０１において、分割拡大鍵５１１を上位ビットに、分割入力５０９を下位ビットに連結してテーブルを作成する。
つまり、本実施の形態に係る鍵加算処理部１２５０が利用するテーブル８０１は、複数のテーブルアドレスを備え、各テーブルアドレスに対して全単射逆変換処理、加算処理及び単射変換処理後の計算結果を示すテーブルである。
なお、全単射逆変換処理８０２は図５の全単射逆変換処理５０３と同じである。
また、単射変換処理８０３は図３の単射変換処理５０５と同じである。
また、加算処理８０９は図５の加算処理５１５と同じである。
【００７０】
アドレス計算処理８０４は分割拡大鍵８０５を入力として、参照テーブルアドレス８０７（テーブルアドレスの上位ビット）を計算する。
具体的には、分割拡大鍵８０５をｎ１ビット左シフトし、その結果とテーブル８０１の先頭アドレスとを加算し、その結果を参照テーブルアドレス８０７とする。
アドレス計算処理８０４は鍵スケジュールの段階で計算してもよい。
【００７１】
また、分割入力８０６をテーブルアドレスの下位ビットとし、参照テーブルアドレス８０７を元に、該当するテーブルアドレスのテーブル値を参照し、テーブル出力８０８を得る。
具体的には参照テーブルアドレス８０７と分割入力８０６とを連結し、結果のアドレスのテーブル値を参照する。
【００７２】
このように、本実施の形態では、鍵加算処理部１２５０は、分割拡大鍵をテーブルの一部を用いて変換し、変換後の分割拡大鍵と分割入力データからいずれかのテーブルアドレスを示す値を算出し、算出した値と一致するテーブルアドレスに示されている計算結果をテーブルから得て、全単射変換処理後の入力データの分割入力データに対する全単射逆変換処理と、全単射逆変換処理後の分割入力データと分割拡大鍵との加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行う。
【００７３】
復号時の鍵加算処理部も前記暗号時の鍵加算処理部１２５０と同様に行うことができる。ただし、分割拡大鍵８０５、加算処理８０９（図８）は、復号アルゴリズムに準拠する。
つまり、本実施の形態で説明した手順及び図７、図８、図１４に示す構成にて、本実施の形態に係る暗号処理装置に対応する復号処理装置も構成することができる。復号処理装置においては入力が暗号文となり、出力が平文となる。また、拡大鍵の生成に用いられる復号鍵は暗号鍵と共通である。
【００７４】
ここで、本実施の形態に係る効果の一例について説明する。
本実施の形態では、実施の形態１に示した効果を得られるだけでなく、暗号鍵に依存する計算を、鍵スケジュール部に組み込むことができる。
また、暗号演算過程で暗号鍵本体を用いることがないため、より安全な暗号演算を実施できる。
【００７５】
実施の形態３．
実施の形態１および２では、鍵加算処理用に４種類（テーブル２０１、テーブル２０２、テーブル５０１、テーブル５０２）を用意したが、本実施の形態では３種類のテーブルで済ませる方法を示す。
【００７６】
図９は、本実施の形態に係る暗号処理の全体の流れを示す。
図９では、ＳＰＮ構造の暗号の例を示しているが、後述する各処理を組み合わせることで、Ｆｅｉｓｔｅｌ構造の暗号を含む、任意の暗号に適用可能である。
図９では、図１の初期鍵加算処理１０１〜１０３が、初期変換処理９３３〜９３５となっている点が、図１との主な相違点である。
他の処理は、図１に示したものと同様である。
【００７７】
図９では、あらかじめ鍵スケジュール処理によって、暗号鍵から拡大鍵９２３〜９３１を生成させている。
【００７８】
また、ｍ×ｎビットの平文１２２はｎビットずつに分解され、各々の平文は初期変換処理９３３〜９３５に入力される。
その出力と拡大鍵９２３〜９２５は鍵加算処理９０１〜９０３に入力される。
鍵加算処理９０１〜９０３の出力は非線形変換処理９０４〜９０６に入力される。
線形変換処理９０７〜９０９は複数の非線形変換処理９０４〜９０６の出力を入力として、ｎビットの出力を求める。
線形変換処理９０７〜９０９の出力は鍵加算処理９１０〜９１２に入力され、拡大鍵９２６〜９２８と加算される。以降、非線形変換処理、線形変換処理、鍵加算処理を繰り返す。
最終の鍵加算処理９１６〜９１８の出力は最終変換処理９１９〜９２１に入力され、その出力を連接したものが暗号文９３２となる。
【００７９】
図１５は、本実施の形態に係る暗号処理装置１の構成例を示す、
初期変換処理部１２８０は、図９に示す初期変換処理９３３〜９３５を行う。
初期変換処理部１２８０の処理の詳細は後述するが、初期変換処理部１２８０は、平文データを入力し、入力した平文データを分割する処理と、分割後の各データに対する全単射変換処理と、全単射変換処理後の各データを連接する処理とを１回のテーブル参照により行う。
そして、初期変換処理部１２８０が行う全単射変換処理は、排他的論理和演算に対して加法性のある全単射変換処理である。
図１５では、初期鍵加算処理部１２２０の代わりに初期変換処理部１２８０が配置されている点以外は、図１４に示した構成と同じである。
【００８０】
図１０に初期変換処理部１２８０の構成例を示す。
図１０の初期変換処理部１２８０は、暗号化の初期処理として平文を変換する。
【００８１】
入力１００４はテーブル１００１によって、出力１００９に変換される。
【００８２】
テーブル１００１の内容について説明する。
入力１００４はｎ１ビットの分割入力１００５とｎ２ビットの分割入力１００６に分割される。
分割法は鍵加算処理と同じである。
全単射変換処理１００２は分割入力１００５よりテーブル出力１００７を出力する。全単射変換処理１００３は分割入力１００６よりテーブル出力１００８を出力する。テーブル出力１００７とテーブル出力１００８は連接されて出力１００９となる。
【００８３】
鍵加算処理、非線形変換処理、線形変換処理、最終変換処理は実施の形態１と同じである。
【００８４】
復号処理も前記暗号処理と同様に行うことができる。ただし、拡大鍵９２３〜９３１（図９）、非線形変換処理３０３（図３）、線形変換処理４０１（図４）加算処理５１５，５１６（図５）は、復号アルゴリズムに準拠する。また復号時は、図９において、入力が暗号文となり、平文を出力する。
つまり、本実施の形態で説明した手順及び図９、図１０、図１５に示す構成にて、本実施の形態に係る暗号処理装置に対応する復号処理装置も構成することができる。復号処理装置においては入力が暗号文となり、出力が平文となる。また、拡大鍵の生成に用いられる復号鍵は暗号鍵と共通である。
【００８５】
ここで、本実施の形態に係る効果の一例について説明する。
図１０の初期変換処理を行うことにより、実施の形態１に示す効果を得られるだけでなく、実施の形態１では、初期鍵加算処理と鍵加算処理に合計４つのテーブルを必要としたが、本実施の形態では、初期変換処理と鍵加算処理に合計３つのテーブルで実装可能である。
よって、トータルでテーブルが１つ削減でき、メモリ使用量を削減できる。
【００８６】
実施の形態４．
実施の形態１〜３では、スケジュール後の拡大鍵には、何の変換処理も施されていないが、本実施の形態では、鍵スケジュール時に拡大鍵に変換を施す手法を示す。
本実施の形態は実施の形態１〜３と組み合わせて用いる。
【００８７】
図１１は本実施の形態における鍵スケジュール部１１を示す。
鍵スケジュール処理１１０１は、暗号鍵１１０８から拡大鍵１１０９〜１１１１を生成する。
鍵スケジュール処理１１０１は実装する暗号アルゴリズムに準拠する。
各拡大鍵１１０９〜１１１１は分割され、各々について、全単射変換処理１１０２〜１１０７によって変換される。変換された拡大鍵は結合され、変換拡大鍵１１１２〜１１１４となる。
【００８８】
このように、本実施の形態に係る鍵スケジュール部１１は、暗号鍵から得られる拡大鍵に対して全単射変換処理を行い、全単射変換処理後の拡大鍵を変換拡大鍵として出力する。
【００８９】
なお、図１１では、鍵スケジュール処理と全単射変換処理を分けて記載しているが、同様の効果を有するように、鍵スケジュール処理の中に全単射変換処理を組み込んでもよい。
【００９０】
図１２に本実施の形態における初期鍵加算処理部１２２０を示す。
図１２では、全単射逆変換処理１２１６、１２１７が付加される以外は図２と同様である。
全単射逆変換処理１２１６、１２１７は、本実施の形態の鍵スケジュール部１１において、変換拡大鍵１２０６が生成された際の全単射変換処理に対する逆変換である。
【００９１】
すなわち、本実施の形態では、初期鍵加算処理部１２２０は、鍵スケジュール部１１から変換拡大鍵１２０６を入力し、また、平文を入力データ１２０５として入力する。
また、変換拡大鍵１２０６を所定の分割位置で分割して２以上の分割拡大鍵とし、入力データ１２０５を変換拡大鍵と同じ分割位置で分割して２以上の分割入力データとする。
そして、分割拡大鍵に対して鍵スケジュール部１１による全単射変換処理の逆変換を行う全単射逆変換処理１２１６、１２１７と、全単射逆変換処理後の分割変換拡大鍵と分割入力データとの加算処理１２１３、１２１４と単射変換処理１２０３、１２０４を１回のテーブル参照により行う。
【００９２】
図１３に本実施の形態における鍵加算処理部１２５０を示す。
図１３では、全単射逆変換処理１３１８、１３１９が付加される以外は図５と同様である。
全単射逆変換処理１３１８、１３１９は、本実施の形態の鍵スケジュール部１１において、変換拡大鍵１３０８が生成された際の全単射変換処理に対する逆変換である。
【００９３】
すなわち、本実施の形態では、鍵加算処理部１２５０は、鍵スケジュール部１１から変換拡大鍵１３０８を入力し、また、入力データ１３０７を入力する。
また、変換拡大鍵１３０８を所定の分割位置で分割して２以上の分割拡大鍵とし、入力データ１３０７を変換拡大鍵と同じ分割位置で分割して２以上の分割入力データとする。
そして、分割拡大鍵に対して鍵スケジュール部１１による全単射変換処理の逆変換を行う全単射逆変換処理１３１８、１３１９（第１の全単射逆変換処理）と、分割入力データに対して非線形変換処理部１２３０による全単射変換処理の逆変換を行う全単射逆変換処理１３０３、１３０４（第２の全単射逆変換処理）と、全単射逆変換処理１３１８、１３１９後の分割拡大鍵と全単射逆変換処理１３０３、１３０４後の分割入力データとの加算処理と、加算処理後のデータの単射変換処理とを１回のテーブル参照により行う。
【００９４】
復号処理時の初期鍵加算処理部及び鍵加算処理部は、前記暗号処理時の初期鍵加算処理部１２２０及び鍵加算処理部１２５０と同様に行うことができる。ただし、変換拡大鍵１２０６（図１２）、変換拡大鍵１３０８（図１３）、加算処理１２１３・１２１４（図１２）、加算処理１３１５・１３１６（図１３）は、復号アルゴリズムに準拠する。
つまり、本実施の形態で説明した手順及び図１１〜図１３に示す構成にて、本実施の形態に係る暗号処理装置に対応する復号処理装置も構成することができる。復号処理装置においては入力が暗号文となり、出力が平文となる。また、拡大鍵の生成に用いられる復号鍵は暗号鍵と共通である。
【００９５】
ここで、本実施の形態に係る効果の一例について説明する。
実施の形態１〜３に示す効果に加え、さらに、拡大鍵を推定不可能にできる。
よって、攻撃者が暗号アルゴリズムを知っていたとしても、拡大鍵の値を予想できない。これにより、鍵スケジュール処理に対しても、従来の電力差分解析に対して耐性を持たせることができる。
【００９６】
次に、実施の形態１〜４に示した暗号処理装置及び暗号処理方法の主な特徴を記す。
【００９７】
実施の形態１〜４では、暗号をソフトウェアによって実行する暗号処理装置及び暗号処理方法であって、入力と暗号鍵との加算処理（鍵加算処理）をテーブル参照によって実現するにあたり、入力と暗号鍵を各々同じビット列で分割し、分割された入力と暗号鍵とを入力として、テーブル参照によって加算処理を実現し、分割した各々の入力及び暗号鍵に対するテーブル出力を加算する暗号処理装置及び暗号処理方法を説明した。
【００９８】
また、実施の形態１〜４では、鍵加算処理におけるテーブルについて、以下の処理を１回のテーブル参照によって行う暗号処理装置及び暗号処理方法を説明した。
Ａ）入力と暗号鍵とを本来の暗号の仕様に則り加算する。
Ｂ）前記Ａ）の出力を単射変換する。
【００９９】
また、実施の形態１〜４では、前記分割された暗号鍵（復号鍵）と、前記テーブル本体とから、参照アドレスを計算し、前記参照アドレスと前記分割された入力とからテーブル出力を求める暗号処理装置及び暗号処理方法（復号処理装置及び復号処理方法）を説明した。
【０１００】
また、実施の形態１〜４では、加算処理の後に実行する非線形変換処理において、以下の処理を１回のテーブル参照によって行う暗号処理装置及び暗号処理方法（復号処理装置及び復号処理方法）を説明した。
Ｃ）前記鍵加算処理において実行した単射変換に対する逆変換処理を行う。
Ｄ）前記Ｃ）の出力に対し、本来の暗号の仕様に則り非線形処理を行う。
Ｅ）前記Ｄ）の出力を分割し、分割された各々の出力に対して、全単射変換を行う。
【０１０１】
また、実施の形態１〜４では、非線形変換処理における全単射変換において、排他的論理和演算に対して加法性のある全単射変換を用いる暗号処理装置及び暗号処理方法（復号処理装置及び復号処理方法）を説明した。
【０１０２】
また、実施の形態１〜４では、非線形変換の後に実行する鍵加算処理において、前記Ｅ）と同様に分割し、分割された入力と暗号鍵（復号鍵）とを入力として、テーブル参照によって加算処理を実現し、分割した各々の入力及び暗号鍵（復号鍵）に対するテーブル出力を加算する暗号処理装置及び暗号処理方法（復号処理装置及び復号処理方法）を説明した。
【０１０３】
また、実施の形態１〜４では、鍵加算処理におけるテーブルについて、入力を前記Ｅ）と同様に分割した上で、以下の処理を１回のテーブル参照によって行う暗号処理装置及び暗号処理方法（復号処理装置及び復号処理方法）を説明した。
Ｆ）分割された各々の入力に対し、前記Ｅ）で行った全単射変換の逆変換を行う。
Ｇ）前記Ｆ）の出力と暗号鍵（復号鍵）とを本来の暗号の仕様に則り加算する。
Ｈ）前記Ｇ）の出力を単射変換する。
【０１０４】
また、実施の形態１〜４では、分割された暗号鍵（復号鍵）と、前記テーブル本体とから、アドレスを計算し、前記アドレスと前記分割された入力とからテーブル出力を求める暗号処理装置及び暗号処理方法（復号処理装置及び復号処理方法）を説明した。
【０１０５】
また、実施の形態１〜４では、暗号終了時に前記Ｃ）に示す逆変換を行い、その結果を暗号文として出力する暗号処理装置及び暗号処理方法（復号処理装置及び復号処理方法）を説明した。
【０１０６】
また、実施の形態１〜４では、暗号（復号）開始時に以下の処理を１回のテーブル参照で行い、その後に鍵加算処理を行う暗号処理装置及び暗号処理方法（復号処理装置及び復号処理方法）を説明した。
Ｉ）入力を分割し、分割された各々の入力に対し、前記Ｅ）で行った全単射変換を行う。
Ｊ）前記Ｉ）の出力を連接する。
【０１０７】
また、実施の形態１〜４では、鍵スケジュールの段階で全単射変換を施し、鍵加算の段階で以下の処理を行う暗号処理装置及び暗号処理方法（復号処理装置及び復号処理方法）を説明した。
Ｋ）暗号鍵（復号鍵）に対して鍵スケジュールで行った全単射変換に対する逆変換を行う。
Ｌ）入力とＫ）の出力とを本来の暗号の仕様に則り加算する。
Ｍ）前記Ｌ）の出力を単射変換する。
【０１０８】
また、実施の形態１〜４では、鍵スケジュールの段階で全単射変換を施し、鍵加算の段階で以下の処理を行う暗号処理装置及び暗号処理方法（復号処理装置及び復号処理方法）を説明した。
Ｎ）暗号鍵（復号鍵）に対して鍵スケジュールで行った全単射変換に対する逆変換を行う。
Ｏ）分割された各々の入力に対し、前記Ｅ）で行った全単射変換の逆変換を行う。
Ｐ）前記Ｎ）の出力とＯ）の出力を本来の暗号の仕様に則り加算する。
Ｑ）前記Ｐ）の出力を単射変換する。
【０１０９】
最後に、実施の形態１〜４に示した暗号処理装置１のハードウェア構成例について説明する。
図１６は、実施の形態１〜４に示す暗号処理装置１のハードウェア資源の一例を示す図である。
なお、図１６の構成は、あくまでも暗号処理装置１のハードウェア構成の一例を示すものであり、暗号処理装置１のハードウェア構成は図１６に記載の構成に限らず、他の構成であってもよい。
また、復号処理装置も、例えば、図１６のハードウェア構成により実現可能である。以下の説明において、「暗号処理装置１」を「復号処理装置」と読み替えることが可能である。
【０１１０】
図１６において、暗号処理装置１は、プログラムを実行するＣＰＵ１９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ１９１１は、バス１９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１９１４、磁気ディスク装置１９２０と接続され、これらのハードウェアデバイスを制御する。
また、ＣＰＵ１９１１は、通信ボード１９１５、表示装置１９０１、キーボード１９０２、マウス１９０３と接続されていてもよい。
更に、ＣＰＵ１９１１は、ＦＤＤ１９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置１９０５（ＣＤＤ）、プリンタ装置１９０６、スキャナ装置１９０７と接続していてもよい。また、磁気ディスク装置１９２０の代わりに、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ１９１４は、揮発性メモリの一例である。ＲＯＭ１９１３、ＦＤＤ１９０４、ＣＤＤ１９０５、磁気ディスク装置１９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード１９１５、キーボード１９０２、マウス１９０３、スキャナ装置１９０７、ＦＤＤ１９０４などは、入力装置の一例である。
また、通信ボード１９１５、表示装置１９０１、プリンタ装置１９０６などは、出力装置の一例である。
【０１１１】
通信ボード１９１５は、ネットワークに接続されている。例えば、通信ボード１９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。
【０１１２】
磁気ディスク装置１９２０には、オペレーティングシステム１９２１（ＯＳ）、ウィンドウシステム１９２２、プログラム群１９２３、ファイル群１９２４が記憶されている。
プログラム群１９２３のプログラムは、ＣＰＵ１９１１がオペレーティングシステム１９２１、ウィンドウシステム１９２２を利用しながら実行する。
例えば、プログラム群１９２３には、実施の形態１〜４の暗号処理装置１に含まれる各要素（「〜部」として示した要素）の機能を実現するプログラムが格納されている。プログラムは、ＣＰＵ１９１１により読み出され実行される。
また、ファイル群１９２４には、暗号処理装置１に含まれる各要素（「〜部」として示した要素）が参照するテーブルが磁気ディスク装置１９２０に格納されている。
【０１１３】
また、ＲＡＭ１９１４には、ＣＰＵ１９１１に実行させるオペレーティングシステム１９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ１９１４には、ＣＰＵ１９１１による処理に必要な各種データが格納される。
例えば、暗号処理装置１に含まれる各要素（「〜部」として示した要素）をプログラムとする場合に、各要素の機能を実現するプログラムがＲＡＭ１９１４にロードされる。
また、暗号処理装置１に含まれる各要素（「〜部」として示した要素）が参照するテーブルがＲＡＭ１９１４にロードされる。
【０１１４】
また、ＲＯＭ１９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置１９２０にはブートプログラムが格納されている。
暗号処理装置１の起動時には、ＲＯＭ１９１３のＢＩＯＳプログラム及び磁気ディスク装置１９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム１９２１が起動される。
【０１１５】
また、ファイル群１９２４には、実施の形態１〜４の説明において、「〜処理」の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ１９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜４で説明しているデータフローの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ１９１４のメモリ、ＦＤＤ１９０４のフレキシブルディスク、ＣＤＤ１９０５のコンパクトディスク、磁気ディスク装置１９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。また、データや信号は、バス１９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される場合がある。
【０１１６】
また、実施の形態１〜４の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明しているものは、ＲＯＭ１９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ１９１１により読み出され、ＣＰＵ１９１１により実行される。すなわち、プログラムは、実施の形態１〜４の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１〜４の「〜部」の手順や方法をコンピュータに実行させるものである。
【０１１７】
このように、実施の形態１〜４に示す暗号処理装置１は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【図面の簡単な説明】
【０１１８】
【図１】実施の形態１に係る暗号処理の全体の流れを示す図。
【図２】実施の形態１に係る初期鍵加算処理部の構成例を示す図。
【図３】実施の形態１に係る非線形変換処理部の構成例を示す図。
【図４】実施の形態１に係る線形変換処理部の構成例を示す図。
【図５】実施の形態１に係る鍵加算処理部の構成例を示す図。
【図６】実施の形態１に係る最終変換処理部の構成例を示す図。
【図７】実施の形態２に係る初期鍵加算処理部の構成例を示す図。
【図８】実施の形態２に係る鍵加算処理部の構成例を示す図。
【図９】実施の形態３に係る暗号処理の全体の流れを示す図。
【図１０】実施の形態３に係る初期変換処理部の構成例を示す図。
【図１１】実施の形態４に係る鍵スケジュール部の構成例を示す図。
【図１２】実施の形態４に係る初期鍵加算処理部の構成例を示す図。
【図１３】実施の形態４に係る初期鍵加算処理部の構成例を示す図。
【図１４】実施の形態１に係る暗号処理装置の構成例を示す図。
【図１５】実施の形態３に係る暗号処理装置の構成例を示す図。
【図１６】実施の形態１〜４に係る暗号処理装置のハードウェア構成例を示す図。
【符号の説明】
【０１１９】
１  暗号処理装置、１１  鍵スケジュール部、１２  暗号処理部、１２１０  平文分割部、１２２０  初期鍵加算処理部、１２３０  非線形変換処理部、１２４０  線形変換処理部、１２５０  鍵加算処理部、１２６０  最終変換処理部、１２７０  暗号文連結部、１２８０  初期変換処理部。
【図１】
0005354914.tif 000010
【図２】
0005354914.tif 000011
【図３】
0005354914.tif 000012
【図４】
0005354914.tif 000013
【図５】
0005354914.tif 000014
【図６】
0005354914.tif 000015
【図７】
0005354914.tif 000016
【図８】
0005354914.tif 000017
【図９】
0005354914.tif 000018
【図１０】
0005354914.tif 000019
【図１１】
0005354914.tif 000020
【図１２】
0005354914.tif 000021
【図１３】
0005354914.tif 000022
【図１４】
0005354914.tif 000023
【図１５】
0005354914.tif 000024
【図１６】
0005354914.tif 000025