(57)【特許請求の範囲】
【請求項１】
データ変換の対象となる入力データＰ０を入力して第０サイクルから第ｎ−１サイクル（ｎは３以上の整数）までのｎサイクルを順次実行することにより入力データＰ０を変換して出力するデータ変換装置において、
入力データＰ０の変換に用いる所定のビット数の秘密鍵情報を格納するメモリと、前記メモリが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも１以上のビットに依存する情報である拡散秘密情報Ｇ０を生成する拡散秘密情報生成部と、データ変換部とを備え、
（１）第０サイクルにおいて、
前記データ変換部が、第０サイクルにおける変換対象のデータであって入力データＰ０に基づくデータである第０サイクル変換対象データＸ０を拡散秘密情報Ｇ０でマスクし、変換対象データＸ０を拡散秘密情報Ｇ０でマスクしたデータをデータ変換し、
前記拡散秘密情報生成部が、前記入力データＰ０と、前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報Ｇ０を更新して更新後の拡散秘密情報Ｇ１を生成し、
前記データ変換部が、第０サイクルでデータ変換されたデータを更新後の拡散秘密情報Ｇ１でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Ｇ１でマスクしたデータＸ１を生成し、
（２）第１サイクルにおいて、
前記データ変換部が、前記第０サイクルで生成されたデータＸ１を第０サイクルで生成された拡散秘密情報Ｇ１でマスクし、さらに、データＸ１を拡散秘密情報Ｇ１でマスクしたデータをデータ変換し、
拡散秘密情報生成部が、前記入力データＰ０と、第１サイクルを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報Ｇ１を更新して更新後の拡散秘密情報Ｇ２を生成し、
前記データ変換部が、第１サイクルでデータ変換されたデータを更新後の拡散秘密情報Ｇ２でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Ｇ２でマスクしたデータＸ２を生成し、
以下、第ｋサイクル（ｋ：２≦ｋ≦ｎ−１の整数）でも第１サイクルと同様に、
（３）第ｋサイクルにおいて、
前記データ変換部が、前記第ｋ−１サイクルで生成されたデータＸｋを第ｋ−１サイクルで生成された拡散秘密情報Ｇｋでマスクし、さらに、データＸｋを秘密情報Ｇｋでマスクしたデータをデータ変換し、
拡散秘密情報生成部が、前記入力データＰ０と、第ｋサイクルを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値とのいずれかに基づいて拡散秘密情報Ｇｋを更新して更新後の拡散秘密情報Ｇｋ＋１を生成し、
前記データ変換部が、第ｋサイクルでデータ変換されたデータを更新後の拡散秘密情報Ｇｋ＋１でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Ｇｋ＋１でマスクしたデータＸｋ＋１を生成する
ことを特徴とするデータ変換装置。
【請求項２】
前記データ変換装置は、
前記入力データＰ０と異なる入力データＰ１をさらに入力し、入力した前記入力データＰ１に対して、前記入力データＰ０と同様に、前記第０サイクルから前記第ｎ−１サイクル（ｎは３以上の整数）までのｎサイクルを順次実行することにより入力データＰ１を変換して出力すると共に、
（１）入力データＰ１に関する第０サイクルにおいて、
前記データ変換部が、入力データＰ１に関する第０サイクルにおける変換対象のデータであって入力データＰ１に基づくデータである第０サイクル変換対象データＸ０を、入力データＰ０に関する第ｎ−１サイクルにおいて前記拡散秘密情報生成部によって生成された拡散秘密情報Ｇｎを拡散秘密情報Ｇ（１，０）として拡散秘密情報Ｇ（１，０）でマスクし、入力データＰ１に基づく変換対象データＸ０を拡散秘密情報Ｇ（１，０）でマスクしたデータをデータ変換し、
前記拡散秘密情報生成部が、前記入力データＰ０と、前記入力データＰ１と、前記入力データＰ０に関する第０サイクルから第ｎ−１サイクルまでのｎサイクル及び入力データＰ１に関する第０サイクルを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値と、のうちのいずれかに基づいて拡散秘密情報Ｇ（１、０）を更新して更新後の拡散秘密情報Ｇ（１、１）を生成し、
前記データ変換部が、入力データＰ１の第０サイクルでデータ変換されたデータを更新後の拡散秘密情報Ｇ（１、１）でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Ｇ（１、１）でマスクしたデータＸ１を生成し、
（２）入力データＰ１に関する第１サイクルにおいて、
前記データ変換部が、入力データＰ１の前記第０サイクルで生成されたデータＸ１を拡散秘密情報Ｇ（１、１）でマスクし、さらに、データＸ１を拡散秘密情報Ｇ（１、１）でマスクしたデータをデータ変換し、
拡散秘密情報生成部が、前記入力データＰ０と、前記入力データＰ１と、前記入力データＰ０に関する第０サイクルから第ｎ−１サイクルまでのｎサイクル及び入力データＰ１に関する第１サイクルまでを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値と、のうちのいずれかに基づいて拡散秘密情報Ｇ（１、１）を更新して更新後の拡散秘密情報Ｇ（１、２）を生成し、
前記データ変換部が、入力データＰ１の第１サイクルでデータ変換されたデータを更新後の拡散秘密情報Ｇ（１、２）でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Ｇ（１、２）でマスクしたデータＸ２を生成し、
以下、入力データＰ１に関する第ｋサイクル（ｋ：２≦ｋ≦ｎ−１の整数）でも入力データＰ１に関する第１サイクルと同様に、
（３）入力データＰ１に関する第ｋサイクルにおいて、
前記データ変換部が、前記第ｋ−１サイクルで生成されたデータＸｋを第ｋ−１サイクルで生成された拡散秘密情報Ｇ（１、ｋ）でマスクし、さらに、データＸｋを秘密情報Ｇ（１、ｋ）でマスクしたデータをデータ変換し、
拡散秘密情報生成部が、前記入力データＰ０と、前記入力データＰ１と、前記入力データＰ０に関する第０サイクルから第ｎ−１サイクルまでのｎサイクル及び入力データＰ１に関する第ｋサイクルまでを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値と、のうちのいずれかに基づいて拡散秘密情報Ｇ（１、ｋ）を更新して更新後の拡散秘密情報Ｇ（１、ｋ＋１）を生成し、
前記データ変換部が、第ｋサイクルでデータ変換されたデータを更新後の拡散秘密情報Ｇ（１、ｋ＋１）でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Ｇ（１、ｋ＋１）でマスクしたデータＸｋ＋１を生成する
ことを特徴とする請求項１記載のデータ変換装置。
【請求項３】
第０サイクル変換対象データＸ０は、
入力データＰ０を拡散秘密情報Ｇ０でマスクしたデータであることを特徴とする請求項１記載のデータ変換装置。
【請求項４】
データ変換の対象となる入力データＰ０を入力して第０サイクルと第１サイクルとの２サイクルを順次実行することにより入力データＰ０を変換して出力するデータ変換装置において、
入力データＰ０の変換に用いる所定のビット数の秘密鍵情報を格納するメモリと、前記メモリが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも１以上のビットに依存する情報である拡散秘密情報Ｇ０を生成する拡散秘密情報生成部と、データ変換部とを備え、
（１）第０サイクルにおいて、
前記データ変換部が、第０サイクルにおける変換対象のデータであって入力データＰ０に基づくデータである第０サイクル変換対象データＸ０を拡散秘密情報Ｇ０でマスクし、変換対象データＸ０を拡散秘密情報Ｇ０でマスクしたデータをデータ変換し、
前記拡散秘密情報生成部が、前記入力データＰ０と、前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報Ｇ０を更新して更新後の拡散秘密情報Ｇ１を生成し、
前記データ変換部が、第０サイクルでデータ変換されたデータを更新後の拡散秘密情報Ｇ１でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Ｇ１でマスクしたデータＸ１を生成し、
（２）第１サイクルにおいて、
前記データ変換部が、前記第０サイクルで生成されたデータＸ１を第０サイクルで生成された拡散秘密情報Ｇ１でマスクし、さらに、データＸ１を拡散秘密情報Ｇ１でマスクしたデータをデータ変換し、
拡散秘密情報生成部が、前記入力データＰ０と、第１サイクルを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報Ｇ１を更新して更新後の拡散秘密情報Ｇ２を生成し、
前記データ変換部が、第１サイクルでデータ変換されたデータを更新後の拡散秘密情報Ｇ２でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Ｇ２でマスクしたデータＸ２を生成することを特徴とするデータ変換装置。
【請求項５】
データ変換の対象となる入力データＰ０を入力して第０サイクルの１サイクルを実行することにより入力データＰ０を変換して出力するデータ変換装置において、
入力データＰ０の変換に用いる所定のビット数の秘密鍵情報を格納するメモリと、前記メモリが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも１以上のビットに依存する情報である拡散秘密情報Ｇ０を生成する拡散秘密情報生成部と、データ変換部とを備え、
（１）第０サイクルにおいて、
前記データ変換部が、第０サイクルにおける変換対象のデータであって入力データＰ０に基づくデータである第０サイクル変換対象データＸ０を拡散秘密情報Ｇ０でマスクし、変換対象データＸ０を拡散秘密情報Ｇ０でマスクしたデータをデータ変換し、
前記拡散秘密情報生成部が、前記入力データＰ０と、前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報Ｇ０を更新して更新後の拡散秘密情報Ｇ１を生成し、
前記データ変換部が、第０サイクルでデータ変換されたデータを更新後の拡散秘密情報Ｇ１でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Ｇ１でマスクしたデータＸ１を生成することを特徴とするデータ変換装置。
【請求項６】
データ変換の対象となる入力データＰ０を入力して第０サイクルから第ｎ−１サイクル（ｎは３以上の整数）までのｎサイクルを順次実行することにより入力データＰ０を変換して出力するコンピュータであって、入力データＰ０の変換に用いる所定のビット数の秘密鍵情報を格納するメモリを備えたコンピュータであるデータ変換装置を、
以下の拡散秘密情報生成部、データ変換部として機能させるためのデータ変換プログラム
（１）前記拡散秘密情報生成部が、前記メモリが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも１以上のビットに依存する情報である拡散秘密情報Ｇ０を生成し、
（２）第０サイクルにおいて、
前記データ変換部が、第０サイクルにおける変換対象のデータであって入力データＰ０に基づくデータである第０サイクル変換対象データＸ０を拡散秘密情報Ｇ０でマスクし、変換対象データＸ０を拡散秘密情報Ｇ０でマスクしたデータをデータ変換し、
前記拡散秘密情報生成部が、前記入力データＰ０と、前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報Ｇ０を更新して更新後の拡散秘密情報Ｇ１を生成し、
前記データ変換部が、第０サイクルでデータ変換されたデータを更新後の拡散秘密情報Ｇ１でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Ｇ１でマスクしたデータＸ１を生成し、
（３）第１サイクルにおいて、
前記データ変換部が、前記第０サイクルで生成されたデータＸ１を第０サイクルで生成された拡散秘密情報Ｇ１でマスクし、さらに、データＸ１を拡散秘密情報Ｇ１でマスクしたデータをデータ変換し、
拡散秘密情報生成部が、前記入力データＰ０と、第１サイクルを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報Ｇ１を更新して更新後の拡散秘密情報Ｇ２を生成し、
前記データ変換部が、第１サイクルでデータ変換されたデータを更新後の拡散秘密情報Ｇ２でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Ｇ２でマスクしたデータＸ２を生成し、
以下、第ｋサイクル（ｋ：２≦ｋ≦ｎ−１の整数）でも第１サイクルと同様に、
（４）第ｋサイクルにおいて、
前記データ変換部が、前記第ｋ−１サイクルで生成されたデータＸｋを第ｋ−１サイクルで生成された拡散秘密情報Ｇｋでマスクし、さらに、データＸｋを秘密情報Ｇｋでマスクしたデータをデータ変換し、
拡散秘密情報生成部が、前記入力データＰ０と、第ｋサイクルを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値とのいずれかに基づいて拡散秘密情報Ｇｋを更新して更新後の拡散秘密情報Ｇｋ＋１を生成し、
前記データ変換部が、第ｋサイクルでデータ変換されたデータを更新後の拡散秘密情報Ｇｋ＋１でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Ｇｋ＋１でマスクしたデータＸｋ＋１を生成する。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号アルゴリズムを処理する装置に係り、装置内で処理される秘密鍵情報を装置の外部から監視可能な情報を利用して特定する攻撃（以下、この攻撃をサイドチャネル攻撃と呼ぶ）に対しての対抗措置に関するものである。
【背景技術】
【０００２】
一般に、暗号アルゴリズムを処理する装置は、秘密鍵情報を物理的に保護された装置内に持つ。このような装置において、暗号アルゴリズムが解読されない限り、装置の入出力のみから秘密鍵情報を入手する事は困難である。
【０００３】
一方、非特許文献１や非特許文献２で、装置の入出力以外の外部から観測可能な情報（装置の処理時間や消費電力、電磁波等）を利用して秘密鍵情報を入手可能であることが示されている。このような攻撃は一般にサイドチャネル攻撃と呼ばれる。
【０００４】
従来のサイドチャネル攻撃に対する対抗装置では、装置内になんらかの追加的な秘密情報を付加することで、装置内の処理状態と秘密情報の相関を隠蔽する方式を採っている。例えば、特許文献１では、広範に用いられている共通鍵ブロック暗号アルゴリズムＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）に対して、そのアルゴリズムで処理する入力データや秘密鍵情報及びアルゴリズムの処理方法を追加的な予測不可能情報を利用してランダム化し秘密鍵情報との相関を隠蔽する方式が示されている。
【特許文献１】特表２００２−５１９７２２号公報
【非特許文献１】Ｐ．  Ｋｏｃｈｅｒ，  “Ｔｉｍｉｎｇ  Ａｔｔａｃｋｓ  ｏｎ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎｓ  ｏｆ  Ｄｉｆｆｉｅｅ−Ｈｅｌｌｍａｎ，  ＲＳＡ，  ＤＳＳ，  ａｎｄ  Ｏｔｈｅｒ  Ｓｙｓｔｅｍｓ，”  Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ：  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＣＲＹＰＴＯ  ’９６，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  Ａｕｇｕｓｔ  １９９６，  ｐｐ．  １０４−１１３．
【非特許文献２】Ｐ．  Ｋｏｃｈｅｒ，  Ｊ．  Ｊａｆｆｅ，  ａｎｄ  Ｂ．  Ｊｕｎ，  “Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ，”  Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ−  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  Ｃｒｙｐｔｏ  ’９９，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  Ｖｏｌ．  １６６６，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  １９９９，  ｐｐ．  ３８８−３９７．
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来技術（例えば特許文献１）では、追加的な秘密情報は、秘密鍵情報とは独立に生成する必要があるため、装置の構成として乱数発生器を必要した。本発明は、サイドチャネル攻撃に対する対抗装置及びその制御方法係わり、装置内に追加的な秘密情報を必要とせず、暗号処理中間値及び秘密鍵情報を利用して装置内の秘密鍵情報をサイドチャネル攻撃から保護することを目的とする。これにより、暗号処理装置に乱数発生器を実装せずともサイドチャネル攻撃に対して安全な対抗措置を施した装置の提供を目的とする。
【課題を解決するための手段】
【０００６】
この発明のデータ変換装置は、
データ変換の対象となる入力データを入力して第０サイクルから第ｎ−１サイクル（ｎは１以上の整数）までのｎサイクルを順次実行することにより入力データを変換して出力するデータ変換装置において、
入力データの変換に用いる所定のビット数の秘密鍵情報を格納するメモリと、
前記メモリが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも１以上のビットに依存する情報である拡散秘密情報を生成する拡散秘密情報生成部と、
入力データを入力して第０サイクルから第ｎ−１サイクルまでのｎサイクルにより入力データを変換するとともにｎサイクルのそれぞれにおいて、サイクルごとの変換対象のデータであるサイクル変換対象データを、前記メモリが格納する秘密鍵情報と前記拡散秘密情報生成部が生成した拡散秘密情報とに基づいて変換するデータ変換部と
を備えたことを特徴とする。
【発明の効果】
【０００７】
この発明により、乱数発生器の実装を必要とすることなくサイドチャネル攻撃に対抗し得る安全な装置を提供することができる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
以下に図１〜図１５を参照して、本実施の形態における暗号処理装置１００（データ変換装置）を説明する。
【０００９】
図１は、暗号処理装置１００の構成図である。図１に示すように、暗号処理装置１００は、拡散秘密情報生成部１０１と暗号処理部１０２（データ変換部）と秘密鍵情報格納部１０５（メモリ）を備える。暗号処理装置１００は、標準入力１０３（ＩＶ、平文／暗号文）を外部入力とし、標準出力１０４（暗号文／暗号文）を外部出力とする装置である。
【００１０】
秘密鍵情報格納部１０５は、入力データの変換に用いる所定のビット数の秘密鍵情報を格納する。
【００１１】
暗号処理部１０２は、標準入力１０３の他に、暗号処理装置１００内部の秘密鍵情報（以下Ｋと表記する場合がある）及び拡散秘密情報生成部１０１の出力である拡散秘密情報１０６（以下、Ｇと表記する場合がある）とを入力とし、標準出力１０４を装置外部に出力する。加えて、暗号処理部１０２は、暗号処理中間値１０７（以下、単に中間値、あるいはＨと表記する場合がある）を拡散秘密情報生成部１０１へ出力する。
【００１２】
拡散秘密情報生成部１０１は、暗号処理中間値１０７を用いて拡散秘密情報１０６を更新し、次のサイクルで使用する拡散秘密情報１０６を暗号処理部１０２へ出力する。
【００１３】
図２は、暗号処理装置１００のハードウェア構成を示す図である。図２の暗号処理装置１００は、演算制御部１１０と、秘密鍵情報を格納するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２０と、中間値等を一時的に記憶するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３０と、外部とのデータのやり取りを行なうインターフェース１４０とを備える。
【００１４】
演算制御部１１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１１と、コプロセッサ１１２とから構成される。演算制御部１１０により、拡散秘密情報生成部１０１と暗号処理部１０２とが実現される。
【００１５】
次に、図３〜図１３を用いて動作を説明する。図３は、暗号処理装置１００の動作を示すフローチャートである。図４〜図１３は、暗号処理装置１００によるデータ変換を説明する図である。
【００１６】
まず、図３を用いて暗号処理装置１００の全体の動作概要を説明し、その後、図４〜図１３を参照して具体的な場合の動作を説明する。
【００１７】
図３を用いて暗号処理装置１００の動作を説明するが、先ず暗号処理装置１００による処理の前提条件を説明する。
【００１８】
（暗号処理装置１００による処理の前提条件）
暗号処理装置１００による処理では、次の（ａ）〜（ｄ）を前提条件とする。
（ａ）暗号処理装置１００処理は、
ｍブロックの平文｛Ｐ０，Ｐ１，・・・，Ｐｍ−１｝
あるいは
ｍブロックの暗号文｛Ｃ０，Ｃ１，・・・，Ｃｍ−１｝
に対して処理を行うものとする。暗号処理装置１００は、１ブロックあたりｎサイクルの処理で暗号化（あるいは復号化）の処理を終了するものとする。
（ｂ）また、暗号化関数Ｆは平文Ｐ、秘密鍵情報Ｋを入力とし、暗号文Ｃを出力すると定義し、これを
Ｃ＝Ｆ（Ｋ，Ｐ）
と表記（あるいはＦＫ（Ｐ）と表記する場合がある）する。
また、これに対応して復号化関数はＦ−１とし、
Ｐ＝Ｆ−１（Ｋ，Ｃ）
と表記する。
（ｃ）さらに、平文（あるいは暗号文）１ブロックについて第０サイクル〜第ｎ−１サイクルの各サイクルで処理する暗号化関数Ｆの部分関数をそれぞれ
ｆ（０），ｆ（１），・・・，ｆ（ｎ−１）
とする。
同様に、復号化関数Ｆ−１に対しては、各サイクルで処理する部分関数を
ｆ−１（０），ｆ−１（１），・・・，ｆ−１（ｎ−１）
とする。
（ｄ）また、以下では排他的論理和の演算記号を＜ＥＸＯＲ＞と表記する。例えば、同じビット数であるデータＡとデータＢとの排他的論理和を「Ａ＜ＥＸＯＲ＞Ｂ」と表記する。なお、図４等では、この＜ＥＸＯＲ＞の代わりに、排他的論理和の演算記号を、丸印の中に「＋」をもつ記号で表記している。
【００１９】
図４は、暗号処理装置１００が行なう処理の関係式を示す図である。以下に記号の意味を説明する。
【００２０】
（記号の説明）
ｉ：０〜ｍ−１のいずれかの平文（あるいは暗号文）のブロック番号を示す。
Ｊ：０〜ｎ−１のいずれかのサイクルを示す。
Ｇ（ｉ，Ｊ）：ｉ，Ｊにより決まる拡散秘密情報を示す。
Ｈ（ｉ，Ｊ）：ｉ，Ｊにより決まる中間値を示す。
ｆ（Ｊ）：Ｊにより決まる部分関数を示す。
ｘＪ＋１：第Ｊ（０≦Ｊ≦ｎ−１）サイクルにおいて生成されるその第Ｊサイクルでの最終生成値を示す。
【００２１】
図４に示すように、拡散秘密情報Ｇは、次のように定義される。
すなわち、
Ｇ（０，０）＝ＦＫ（Ｋ）、
Ｇ（ｉ，Ｊ＋１）＝Ｇ（ｉ，Ｊ）＜ＥＸＯＲ＞Ｈ（ｉ，Ｊ）
Ｇ（ｉ＋１，０）＝Ｇ（ｉ，ｎ）
＝Ｇ（ｉ，ｎ−１）＜ＥＸＯＲ＞Ｈ（ｉ，ｎ−１）
と定義される。
また、第Ｊサイクル目で変換され生成されるデータｘＪ＋１は
ｘＪ＋１
＝ｆｋ’（Ｊ）（ｘＪ，Ｇ（ｉ，Ｊ））
＝ｆｋ（Ｊ）（ｘＪ＜ＥＸＯＲ＞Ｇ（ｉ，Ｊ））＜ＥＸＯＲ＞Ｇ（ｉ，Ｊ＋１）
と定義される。
【００２２】
また、図５は、図３のフローチャートにおいて、「ｉ＝０，Ｊ＝０」の場合を示す図である。「ｉ＝０，Ｊ＝０」の場合とは、ｍブロックからなる平文の最初のブロックＰ０（ｉ＝０）について、ｎサイクルの処理のうち最初の処理（Ｊ＝０）である。図５を参照しながら、図３のフローチャートにそって説明をする。
【００２３】
（１）まず、暗号処理装置１００は秘密鍵情報Ｋを用いて
拡散秘密情報Ｇ（０，０）（Ｋ）
を生成する（Ｓ２０１）。
【００２４】
図５に示すように、Ｓ２０１における拡散秘密情報Ｇの生成処理では、リソースの共用化の観点から、拡散秘密情報生成部１０１は、
Ｇ（０，０）（Ｋ）＝Ｆ（Ｋ，Ｋ）
あるいは
Ｇ（０，０）（Ｋ）＝Ｆ−１（Ｋ，Ｋ）
として、拡散秘密関数Ｇ（０，０）（拡散秘密情報）を、暗号化関数Ｆあるいは復号化関数Ｆ−１と同一の関数で処理することが可能である。拡散秘密関数Ｇ（０，０）は、その出力の各ビットが元の秘密鍵情報Ｋの全てあるいは複数のビットと依存して決定される関数とする。これにより、拡散秘密情報Ｇ（０，０）（Ｋ）の各ビット値には元の秘密鍵情報Ｋの全てあるいは複数のビット値が拡散される。このため、元の秘密鍵情報Ｋの全てあるいは複数のビット値が導出された場合のみ、Ｇ（０，０）（Ｋ）の各ビットが算出されることになり、Ｇ（０，０）（Ｋ）の安全性と秘密鍵情報Ｋの安全性とを関連づけることができる。
【００２５】
（２）暗号処理装置１００は、ｍブロック分の平文あるいは暗号文に対して処理が完了した場合には、処理を終了する（Ｓ２０３のＮＯ）。
【００２６】
（３）また、暗号処理装置１００は、１ブロックあたりのｎサイクルの処理（Ｊ＝０〜ｎ−１）が完了した場合には、
暗号文Ｃｉ（０≦ｉ＜ｍ）
あるいは
平文Ｐｉ（０≦ｉ＜ｍ）
を出力し、次のブロックの処理を開始する（Ｓ２０６のＮＯ，Ｓ２１１，Ｓ２１２）。
【００２７】
（４）（１サイクルごとの処理）
次に、１サイクル毎の処理（Ｓ２０６〜Ｓ２１０）を説明する。１サイクル毎の処理では、まず入力した平文（あるいは暗号文）（Ｓ２０４）に対して、暗号処理部１０２により部分関数の処理ｆ（Ｊ）あるいはｆ−１（Ｊ）を実行する（Ｓ２０７）。この時、Ｓ２０１で生成した拡散秘密情報Ｇ（０，０）あるいはＳ２０９で更新した拡散秘密情報Ｇ（ｉ，Ｊ）を伴って処理を行う。図５の場合では、暗号処理部１０２が、暗号処理部１０２を示す枠内の式を実行する。
即ち、
ｘ０＝Ｐ０＜ＥＸＯＲ＞Ｇ（０，０）
ｘ１＝ｆ’ｋ（０）（ｘ０，Ｇ（０，０））
＝ｆｋ（０）（ｘ０＜ＥＸＯＲ＞Ｇ（０，０））＜ＥＸＯＲ＞Ｇ（０，１）
＝ｆｋ（０）（Ｐ０）＜ＥＸＯＲ＞Ｇ（０，１）
を実行する。この処理では、ｘ０、ｘ１の式からわかるように、拡散秘密情報Ｇ（０，０）とＧ（０，１）とを伴って処理を行なっている。
この場合、
ｆｋ（０）、ｘ０、Ｇ（０，０）は既知である。また、Ｇ（０，１）は後述する図６に示すように、
Ｇ（０，１）＝Ｇ（０，０）＜ＥＸＯＲ＞Ｈ（０，０）
と定義される。後述のように、Ｈ（０，０）は、それまでに生成されたいずれかの中間値を用いることができるので、Ｇ（０，１）も既知となり、
ｘ１＝ｆ’ｋ（０）（ｘ０，Ｇ（０，０））
＝ｆｋ（０）（ｘ０＜ＥＸＯＲ＞Ｇ（０，０））＜ＥＸＯＲ＞Ｇ（０，１）
＝ｆｋ（０）（Ｐ０）＜ＥＸＯＲ＞Ｇ（０，１）
が確定する。図５、図６によれば、Ｇ（０，１）は図６ではじめて得られるように見かけ上表記されている。しかし、実際には、Ｇ（０，１）は前記のように、
図５において
ｘ１＝ｆ’ｋ（０）（ｘ０，Ｇ（０，０））
＝ｆｋ（０）（ｘ０＜ＥＸＯＲ＞Ｇ（０，０））＜ＥＸＯＲ＞Ｇ（０，１）
＝ｆｋ（０）（Ｐ０）＜ＥＸＯＲ＞Ｇ（０，１）
を生成する際に、
Ｇ（０，１）＝Ｇ（０，０）＜ＥＸＯＲ＞Ｈ（０，０）
の関係から導出される。
【００２８】
（５）Ｓ２０７の実行結果あるいはその処理過程の中間結果、あるいは入力データＰ０を暗号処理中間値Ｈ（ｉ，Ｊ）として拡散秘密情報生成部１０１へ出力する（Ｓ２０８）。図５では、暗号処理部１０２が、拡散秘密情報生成部１０１に中間値Ｈ（０，０）を出力している。前記のように、この中間値Ｈ（０，０）は第０サイクル（実行サイクル）においてｘ１を生成する過程で生じるいずれかの中間値を用いても構わないし、入力値Ｐ０を用いても構わない。これはｎサイクルのうち、いずれのサイクルにおいても同様である。
【００２９】
（６）これを受けて、拡散秘密情報生成部１０１は拡散秘密情報Ｇの更新処理を行う（Ｓ２０９）。図５では、拡散秘密情報生成部１０１は、暗号処理部１０２からＨ（０，０）を入力する。図６は、「ｉ＝０，Ｊ＝１」の場合を示す図であるが、拡散秘密情報生成部１０１は、図６において拡散秘密情報生成部１０１を示す枠内の式を実行することにより、拡散秘密情報Ｇ（０，０）をＧ（０，１）に更新する。
【００３０】
（７）この拡散秘密情報生成部１０１による拡散秘密情報Ｇの更新処理は、拡散秘密情報Ｇ（ｉ，Ｊ）を次のサイクルで使用する拡散秘密情報Ｇ（ｉ，Ｊ＋１）に更新する処理である。図５、図６の例によれば、第０サイクル（ｉ＝０）で使用するＧ（０，０）を、第１サイクル（ｉ＝１）で使用するＧ（０，１）へと更新する処理である。この実施の形態では、暗号処理中間値Ｈ（ｉ，Ｊ）を用いた拡散秘密情報の更新方法として、
Ｇ（ｉ，Ｊ＋１）＝Ｈ（ｉ，Ｊ）＜ＥＸＯＲ＞Ｇ（ｉ，Ｊ）  （更新式１）
使用する場合を示した。この中間値Ｈ（ｉ，Ｊ）は、暗号処理部１０２により実行されている第Ｊサイクル（実行サイクル）の終了以前に、暗号処理部１０２より変換されたいずれかの中間値を用いることができる。例えば、Ｈ（０，１）は、暗号処理部１０２により第１サイクルが実行されている場合において、
ｘ２
＝ｆｋ（１）・ｆｋ（０）（Ｐ０）＜ＥＸＯＲ＞Ｇ（０，２）
の値が算出される以前のいずれかの中間値を用いることができる。また、Ｈ（ｉ，Ｊ）として中間値ではないが、入力データＰｉを用いてもよい。なお、上記の方法（更新式１）に限定するものではない。
Ｇ（ｉ，Ｊ＋１）＝Ｈ（ｉ，Ｊ）＜ＥＸＯＲ＞Ｇ（ｉ，Ｊ）
は一例である。
上記以外の更新方法についても
Ｈ（ｉ，Ｊ）及びＧ（ｉ，Ｊ）
の各ビットが更新後の
拡散秘密情報Ｇ（ｉ，Ｊ＋１）
の各ビットに依存して決定される方法で更新するとし、前記の例（更新式１）に限定するわけではない。
【００３１】
（８）以下、この動作を図３のフローに従ってｍブロック分の平文（あるいは暗号文）に対して処理が完了するまで継続する。
【００３２】
次に、図４〜図１３を参照して、
（１）ｉ＝０，Ｊ＝０〜ｎ−１の場合、
（２）ｉ＝１，Ｊ＝０〜ｎ−１の場合、
（３）ｉ＝２，Ｊ＝０〜ｎ−１の場合
を説明する。
すなわち
（１）は、暗号処理装置１００による第０ブロックに対する全サイクルの処理である。
（２）は、暗号処理装置１００による第１ブロックに対する全サイクルの処理である。
（３）は、暗号処理装置１００による第２ブロックに対する全サイクルの処理である。
【００３３】
これらの図を簡単に説明する。
図４は、前記のように暗号処理装置１００による処理の関係式を示す図である。
図５は、前記のように暗号処理装置１００による「ｉ＝０，Ｊ＝０」の処理を示す。
図６は、前記のように暗号処理装置１００による「ｉ＝０，Ｊ＝１」の処理を示す。
図７は、暗号処理装置１００による「ｉ＝０，Ｊ＝２」の処理を示す。
図８は、暗号処理装置１００による「ｉ＝０，Ｊ＝ｎ−１」の処理を示す。
図９は、暗号処理装置１００による「ｉ＝１，Ｊ＝０」の処理を示す。
図１０は、暗号処理装置１００による「ｉ＝１，Ｊ＝１」の処理を示す。
図１１は、「ｉ＝０，Ｊ＝０〜ｎ−１」の処理を表形式にした図である。
図１２は、「ｉ＝１，Ｊ＝０〜ｎ−１」の処理を表形式にした図である。
図１３は、「ｉ＝２，Ｊ＝０〜ｎ−１」の処理を表形式にした図である。
【００３４】
まず、図１１を用いて暗号処理装置１００による「ｉ＝０，Ｊ＝０〜ｎ−１」の処理を説明する。図１１は、ｉ＝０の場合（Ｐ０ブロック）におけるＪ＝０〜ｎ−１の各サイクルにおける処理を説明する図である。
図１１の（ａ）は、図４に対応する。
図１１の（ｂ）は、図５に対応する。
図１１の（ｃ）は、図６に対応する。
図１１の（ｄ）は、図７に対応する。
図１１の（ｇ）は、図８に対応する。
【００３５】
（１）（ｂ：「ｉ＝０，Ｊ＝０」の場合）
拡散秘密情報生成部１０１は、拡散秘密情報Ｇ（０，０）を
Ｇ（０，０）＝ＦＫ（Ｋ）
の式により生成して暗号処理部１０２に送る。
【００３６】
暗号処理部１０２は、入力データＰ０とＧ（０，０）との排他的論理和の演算によりｘ０を生成する。
すなわち
ｘ０＝Ｐ０＜ＥＸＯＲ＞Ｇ（０，０）
である。
【００３７】
次に、暗号処理部１０２は、ｘ０（サイクル変換対象データ）をＧ（０，０）と関数ｆｋ’（０）とを用いて変換する。
すなわち、
ｘ１
＝ｆｋ’（０）（ｘ０，Ｇ（０，０））
＝ｆｋ（０）（ｘ０＜ＥＸＯＲ＞Ｇ（０，０））＜ＥＸＯＲ＞Ｇ（０，1）
である。
前記のように
ｘ０＝Ｐ０＜ＥＸＯＲ＞Ｇ（０，０）
であるので、
ｘ１
＝ｆｋ’（０）（ｘ０，Ｇ（０，０））
＝ｆｋ（０）（ｘ０＜ＥＸＯＲ＞Ｇ（０，０））＜ＥＸＯＲ＞Ｇ（０，1）
＝ｆｋ（０）（Ｐ０＜ＥＸＯＲ＞Ｇ（０，０）＜ＥＸＯＲ＞Ｇ（０，０））＜ＥＸＯＲ＞Ｇ（０，1）
＝ｆｋ（０）（Ｐ０）＜ＥＸＯＲ＞Ｇ（０，1）
となる。
【００３８】
ここで、ｆｋ（０）（Ｐ０）は既知であるとともに、Ｇ（０，1）は図１１（ｃ）に示す式で算出される。前記のように、拡散秘密情報生成部１０１は、第０サイクルでＧ（０，1）を算出するので、暗号処理部１０２は、第０サイクルにおいてｘ１を生成することができる。すなわち、暗号処理部１０２は第０サイクルにおいてｘ０（サイクル変換対象データ）をｘ１に変換することができる。このように、暗号処理部１０２は、ｘ０（サイクル変換対象データ）を秘密鍵情報Ｋと拡散秘密情報Ｇ（０，０）、Ｇ（０，1）とに基づいてｘ１に変換する。この（ｂ）に示す暗号処理部１０２による第０サイクルの処理では、全ての式にＧ（０，０）、あるはＧ（０，1）が作用している。即ち、Ｇ（０，０）、あるはＧ（０，1）によりいわゆるマスクされたのと同様の状態になっている。ただし、Ｇ（０，０）、あるはＧ（０，1）は秘密鍵情報Ｋに基づき生成された情報であって、乱数ではない点が一つの特徴である。この図１１（ｂ）に対応する図５にも示しているが、第０サイクルにおいて最終的に生成される（変換される）データｘ１は
ｘ１＝ｆｋ（０）（Ｐ０）＜ＥＸＯＲ＞Ｇ（０，1）
である。図５にも示すように、暗号処理部１０２は、入力データＰ０に秘密鍵情報Ｋを作用させたｆｋ（０）（Ｐ０）（秘密鍵作用データ）に対して、更に拡散秘密情報Ｇ（０，1）を作用させることによりｘ１（拡散秘密情報作用データ）に変換する。暗号処理部１０２は、拡散秘密情報生成部１０１にＨ（０，０）を送る。ここでＨ（０，０）は、ｘ１を生成するに至るいずれかの中間値と入力データＰ０とのうちのいずれかを用いることができる。いずれのデータを用いるかにつては予め設定することができる。
【００３９】
（２）（ｃ：「ｉ＝０，Ｊ＝１」の場合）
次に（ｃ）のＪ＝１の場合、すなわち第１サイクルの場合を説明する。第１サイクルも第０サイクルと同様である。第１サイクルにおける変換の対象となるデータ（サイクル変換対象データ）は、第０サイクルの最終生成データであるｘ１である。拡散秘密情報生成部１０１は、
Ｇ（０，１）＝Ｇ（０，０）＜ＥＸＯＲ＞Ｈ（０，０）
の式により生成した拡散秘密情報Ｇ（０，１）を暗号処理部１０２に送る。
【００４０】
次に、暗号処理部１０２は、ｘ１をＧ（０，１）と関数ｆｋ’（１）とを用いてｘ２に変換する。
すなわち、
ｘ２
＝ｆｋ’（１）（ｘ１，Ｇ（０，１））
＝ｆｋ（１）（ｘ１＜ＥＸＯＲ＞Ｇ（０，１））＜ＥＸＯＲ＞Ｇ（０，２）
である。
ここで、（ｂ）により
ｘ１＝ｆｋ（０）（Ｐ０）＜ＥＸＯＲ＞Ｇ（０，1）
であるので、
ｘ２
＝ｆｋ’（１）（ｘ１，Ｇ（０，１））
＝ｆｋ（１）（ｘ１＜ＥＸＯＲ＞Ｇ（０，１））＜ＥＸＯＲ＞Ｇ（０，２）
＝ｆｋ（１）（ｆｋ（０）（Ｐ０）＜ＥＸＯＲ＞Ｇ（０，1）＜ＥＸＯＲ＞Ｇ（０，１））＜ＥＸＯＲ＞Ｇ（０，２）
＝ｆｋ（１）・ｆｋ（０）（Ｐ０）＜ＥＸＯＲ＞Ｇ（０，２）
となる。
【００４１】
ここで、ｆｋ（１）・ｆｋ（０）（Ｐ０）は既知であるとともに、Ｇ（０，２）は図１１（ｄ）に示す式で算出される。前記のように、拡散秘密情報生成部１０１は、第１サイクルでＧ（０，２）を算出するので、暗号処理部１０２は、第１サイクルにおいてｘ２を生成することができる。すなわち、暗号処理部１０２は第１サイクルにおいてｘ１（サイクル変換対象データ）をｘ２に変換することができる。このように、暗号処理部１０２は、ｘ１（サイクル変換対象データ）を秘密鍵情報Ｋと拡散秘密情報Ｇ（０，１）、Ｇ（０，２）とに基づいてｘ２に変換する。この（ｃ）に示す暗号処理部１０２による第１サイクルの処理では、全ての式にＧ（０，１）、あるはＧ（０，２）が作用している。即ち、Ｇ（０，１）、あるはＧ（０，２）により、いわゆるマスクされたのと同様の状態になっている。ただし、Ｇ（０，１）、あるはＧ（０，２）は秘密鍵情報Ｋに基づき生成された情報であって、乱数ではないのは図１１（ｂ）の場合と同様である。
【００４２】
以下、図１１（ｄ）の第２サイクルから（ｇ）の第ｎ−１サイクルまで同様の処理である。すなわち、いずれのサイクルにおいても暗号処理部１０２は、拡散秘密情報を伴って処理を行なう。このため、各サイクルの処理では、拡散秘密情報により、いわゆるマスクされた状態となる。また、図１１（ａ）〜（ｇ）に示すように、拡散秘密情報Ｇは各サイクルで更新されていく。このように、暗号処理装置１００では、拡散秘密情報Ｇが各サイクルで更新されていくことが特徴である。
【００４３】
図１２は、上述のように「ｉ＝１，Ｊ＝０〜ｎ−１」の場合を示す。即ち、第２ブロックＰ１における第０サイクル〜第ｎ−１サイクルまでの処理を示している。図１２の場合も図１１の場合と同様であるので、説明は省略する。なお、「ｉ＝１，Ｊ＝０」におけるＧ（１，０）は、図１１（ａ）における（式２）に基づき生成される。図１１（ａ）の（式２）は、第１ブロック〜第ｍ−１ブロックの第０サイクルにおける拡散秘密情報Ｇを生成する場合の式である。この（式２）により前のブロックから後のブロックに移る場合の連続性が保持される。
【００４４】
図１あるいは図２に示した暗号処理装置１００の拡散秘密情報生成部１０１、暗号処理部１０２の一連の動作は互いに関連しており、これらの一連の動作をデータ変換方法として把握することができる。
【００４５】
図１４は、暗号処理装置１００の拡散秘密情報生成部１０１等の動作をデータ変換方法として把握した場合のフローチャートを示す。
（１）Ｓ３０１は、拡散秘密情報生成部が、ＲＯＭが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも１以上のビットに依存する情報である拡散秘密情報を生成するステップである。
（２）Ｓ３０２は、暗号処理部１０２（データ変換部）が、入力データを入力して第０サイクルから第ｎ−１サイクルまでのｎサイクルにより入力データを変換するとともにｎサイクルのそれぞれにおいて、サイクルごとの変換対象のデータであるサイクル変換対象データをＲＯＭが格納する秘密鍵情報と、暗号処理部１０２が生成した拡散秘密情報とに基づいて変換するステップである。
【００４６】
また、図１あるいは図２に示した暗号処理装置１００の拡散秘密情報生成部１０１、暗号処理部１０２の一連の動作は、一連の処理に置き換えることにより、データ変換プログラムの実施形態として把握することができる。
【００４７】
図１５は、コンピュータである暗号処理装置１００の拡散秘密情報生成部１０１等の動作を、コンピュータである暗号処理装置に実効させるデータ変換プログラムの処理を示すフローチャートである。このデータ変換プログラムは、例えば図２のＲＯＭ１２０に格納することができる。
（１）Ｓ４０１は、ＲＯＭが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも１以上のビットに依存する情報である拡散秘密情報を生成する処理である。
（２）Ｓ４０２は、入力データを入力して第０サイクルから第ｎ−１サイクルまでのｎサイクルにより入力データを変換するとともにｎサイクルのそれぞれにおいて、サイクルごとの変換対象のデータであるサイクル変換対象データをＲＯＭが格納する秘密鍵情報と、生成された拡散秘密情報とに基づいて変換する処理である。
【００４８】
このように従来技術では、追加的な秘密情報を秘密鍵情報とは独立に生成して処理に利用するのに対して、本実施の形態の暗号処理装置１００は、秘密鍵情報Ｋと独立ではない拡散秘密情報Ｇを処理に利用する。この拡散秘密情報Ｇの各ビットは秘密鍵情報Ｋの全てあるいは複数のビットに依存して決定される。このため、拡散秘密情報Ｇと秘密鍵情報Ｋは独立ではないが、相関が弱くなる。よって、従来技術と同等の効果を保持しつつ、従来技術では独立で追加的な秘密情報を装置内で入手するために装置の構成として乱数発生器を必要したことに対して、本実施の形態の暗号処理装置１００は、追加的な秘密情報を用いないため乱数発生器を必要とせず、実装効率が向上する。拡散秘密情報Ｇが算出されると、サイドチャネル攻撃によって秘密鍵情報Ｋも算出される可能性がある。極めて強力な攻撃者（例えば、当該暗号処理装置の設計者）には、Ｇの生成論理を知られるかも知れない。そのような攻撃者は、Ｋを知ればＧを算出することができる。しかし、Ｋを知らない限り、Ｇの算出はＫの算出と同様に困難である。従って、Ｋを算出するためにまずＧを算出する、という攻撃は成立せず、ＧはＫと独立な乱数ではないにも関わらず、従来技術と同等のサイドチャネル攻撃に対する対抗性を保持することができる。
【００４９】
この実施の形態の暗号処理装置１００は、拡散秘密情報生成部が秘密鍵情報に基づき拡散秘密情報を生成し、暗号処理部が各サイクルにおいて拡散秘密情報に基づいてデータを変換する。よって、乱数を生成することなく、サイドチャネル攻撃に対する対抗性を保持することができる。
【００５０】
この実施の形態の暗号処理装置１００は、
暗号処理部が各サイクルにおいて、サイクル変換対象データを秘密鍵作用データに対して更に拡散秘密情報を作用させることにより拡散秘密情報作用データに変換する。よって、乱数を生成することなく、サイドチャネル攻撃に対する対抗性を高めることができる。
【００５１】
この実施の形態の暗号処理装置１００は、
拡散秘密情報生成部が、実行サイクルにおいて使用される拡散秘密情報を、入力データあるいは中間値等に基づいて生成する。よって、乱数を生成することなく、サイドチャネル攻撃に対する対抗性を高めることができる。
【００５２】
この実施の形態の暗号処理装置１００は、拡散秘密情報生成部が、実行サイクルが第０サイクルよりも後の実行サイクルである場合に、後の実行サイクルにおいて使用される拡散秘密情報を、後の実行サイクルの直前のサイクルにおいて使用された拡散秘密情報から更新する。よって、乱数を生成することなく、サイドチャネル攻撃に対する対抗性を更に高めることができる。
【００５３】
この実施の形態のデータ変換方法は、拡散秘密情報生成部が秘密鍵情報に基づき拡散秘密情報を生成し、暗号処理部（データ変換部）が各サイクルにおいて拡散秘密情報に基づいてデータを変換する。よって、乱数を生成することなく、サイドチャネル攻撃に対する対抗性を保持することができる。
【００５４】
この実施の形態のデータ変換プログラムは、秘密鍵情報に基づき拡散秘密情報を生成し、各サイクルにおいて拡散秘密情報に基づいてデータを変換する。よって、乱数を生成することなく、サイドチャネル攻撃に対する対抗性を保持することができる。また専用装置を設けることなく汎用のコンピュータで暗号処理装置を実現することができる。
【００５５】
以上の実施の形態では、追加的な秘密情報を必要としない情報漏洩防止装置機能付き暗号処理装置及び制御方法について説明した。
【図面の簡単な説明】
【００５６】
【図１】暗号処理装置１００の構成を示すブロック図。
【図２】暗号処理装置１００のハードウェア構成図。
【図３】暗号処理装置１００の動作を示すフローチャート。
【図４】暗号処理装置１００が行なう処理の関係式を示す図。
【図５】暗号処理装置１００による「ｉ＝０，Ｊ＝０」の処理を示す図。
【図６】暗号処理装置１００による「ｉ＝０，Ｊ＝１」の処理を示す図。
【図７】暗号処理装置１００による「ｉ＝０，Ｊ＝２」の処理を示す図。
【図８】暗号処理装置１００による「ｉ＝０，Ｊ＝ｎ−１」の処理を示す図。
【図９】暗号処理装置１００による「ｉ＝１，Ｊ＝０」の処理を示す図。
【図１０】暗号処理装置１００による「ｉ＝１，Ｊ＝１」の処理を示す図。
【図１１】「ｉ＝０，Ｊ＝０〜ｎ−１」の処理を表形式にした図。
【図１２】「ｉ＝１，Ｊ＝０〜ｎ−１」の処理を表形式にした図。
【図１３】「ｉ＝２，Ｊ＝０〜ｎ−１」の処理を表形式にした図。
【図１４】データ変換方法のフローチャート。
【図１５】変換プログラムのフローチャート。
【符号の説明】
【００５７】
１００  暗号処理装置、１０１  拡散秘密情報生成部、１０２  暗号処理部、１０３  標準入力、１０４  標準出力、１０５  秘密鍵情報格納部、１０６  拡散秘密情報、１０７  暗号処理中間値、１１０  演算制御部、１１１  ＣＰＵ、１１２  コプロセッサ、１２０  ＲＯＭ、１３０  ＲＡＭ、１４０  インターフェース。
【図１】
0004804981.tif 000002
【図２】
0004804981.tif 000003
【図３】
0004804981.tif 000004
【図４】
0004804981.tif 000005
【図５】
0004804981.tif 000006
【図６】
0004804981.tif 000007
【図７】
0004804981.tif 000008
【図８】
0004804981.tif 000009
【図９】
0004804981.tif 000010
【図１０】
0004804981.tif 000011
【図１１】
0004804981.tif 000012
【図１２】
0004804981.tif 000013
【図１３】
0004804981.tif 000014
【図１４】
0004804981.tif 000015
【図１５】
0004804981.tif 000016