(57)【要約】      （修正有）【課題】ＣｈａＣｈａアルゴリズムにおいて、余分な処理ステップを削減することができる情報処理装置、情報処理方法及びプログラムを提供する。【解決手段】暗号処理方法は、ストリーム暗号であるＣｈａＣｈａアルゴリズムに関する各ブロックにおけるＲｏｕｎｄ処理においてＱｒｏｕｎｄ処理を実施する。Ｑｒｏｕｎｄ処理では４つのサブＳｔａｔｅを入力として演算する。Ｑｒｏｕｎｄ１ではＳｔａｔｅ群を入力としＱｒｏｕｎｄ処理が８０回施され、演算後の各データにより同Ｓｔａｔｅを更新する仕様である。【選択図】図２
2020127141.tif 000002
【特許請求の範囲】
【請求項１】
ＣｈａＣｈａアルゴリズムに関する各ブロックにおけるＲｏｕｎｄ処理においてＱｒｏｕｎｄ処理を実施する制御手段を有し、
前記制御手段は、演算対象のラウンドが特定ラウンドの場合、前記Ｑｒｏｕｎｄ処理の実施を省略する情報処理装置。
【請求項２】
前記制御手段は、前記特定ラウンドの処理をブロック処理より前の前処理で実施し、ブロック処理開始時に特定の初期値を前記前処理で実施した前記特定ラウンドの処理の結果の値に更新する請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、演算対象のブロックが最初のブロックである場合、前記特定の初期値を前記前処理で実施した前記特定ラウンドの処理の結果の値に更新する処理を省略する請求項２に記載の情報処理装置。
【請求項４】
前記特定ラウンドとは、Ｑｒｏｕｎｄの２ラウンド目、３ラウンド目、及び４ラウンド目である請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
ＣｈａＣｈａアルゴリズムに関する各ブロックにおけるＲｏｕｎｄ処理において、演算対象のラウンドが特定ラウンドである場合、Ｑｒｏｕｎｄ処理を実施し、演算対象のラウンドが特定ラウンドでない場合、Ｓｔａｔｅ更新処理を実施する制御手段を有する情報処理装置。
【請求項６】
前記特定ラウンドとは、最初のブロックではない、Ｑｒｏｕｎｄの２ラウンド目、３ラウンド目、及び４ラウンド目である請求項５に記載の情報処理装置。
【請求項７】
ＣｈａＣｈａアルゴリズムに関する各ブロックにおけるＲｏｕｎｄ処理において、演算対象のラウンドが特定ラウンドである場合、Ｓｔａｔｅにある値を書き込んだ後、Ｑｒｏｕｎｄ処理を実施し、前記Ｑｒｏｕｎｄ処理を実施した後、前記Ｓｔａｔｅに算出済みの値を書き込む制御手段を有する情報処理装置。
【請求項８】
前記Ｒｏｕｎｄ処理において、演算対象のラウンドが特定ラウンドでない場合、前記制御手段は、前記Ｑｒｏｕｎｄ処理を実施する請求項７に記載の情報処理装置。
【請求項９】
前記特定ラウンドとは、最初のブロックではない、Ｑｒｏｕｎｄの２ラウンド目、３ラウンド目、及び４ラウンド目である請求項７又は８に記載の情報処理装置。
【請求項１０】
情報処理装置が実行する情報処理方法であって、
ＣｈａＣｈａアルゴリズムに関する各ブロックにおけるＲｏｕｎｄ処理においてＱｒｏｕｎｄ処理を実施し、
演算対象のラウンドが特定ラウンドの場合、前記Ｑｒｏｕｎｄ処理の実施を省略する情報処理方法。
【請求項１１】
情報処理装置が実行する情報処理方法であって、
ＣｈａＣｈａアルゴリズムに関する各ブロックにおけるＲｏｕｎｄ処理において、演算対象のラウンドが特定ラウンドである場合、Ｑｒｏｕｎｄ処理を実施し、演算対象のラウンドが特定ラウンドでない場合、Ｓｔａｔｅ更新処理を実施する情報処理方法。
【請求項１２】
情報処理装置が実行する情報処理方法であって、
ＣｈａＣｈａアルゴリズムに関する各ブロックにおけるＲｏｕｎｄ処理において、演算対象のラウンドが特定ラウンドである場合、Ｓｔａｔｅにある値を書き込んだ後、Ｑｒｏｕｎｄ処理を実施し、前記Ｑｒｏｕｎｄ処理を実施した後、前記Ｓｔａｔｅに算出済みの値を書き込む情報処理方法。
【請求項１３】
コンピュータを、請求項１乃至９の何れか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
ストリーム暗号であるＣｈａＣｈａが提唱されており非特許文献１で開示されている。ＣｈａＣｈａアルゴリズムは昨今、インターネット上のデータを暗号化し、セキュアに伝送するためのプロトコルとして広く使用されているＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）（非特許文献２）及びＩＰＳＥＣにおいて広く使用されるようになり注目を集めている。
インターネットを介した通信は組み込み機器及びＩｏＴデバイスでも広く実装されている。一般的にこれらの機器では低周波数駆動及び低消費電力を求められることが多い。一方で、各々のデバイスの特徴から低消費電力でありながら処理性能を求められる。
非特許文献３には一般的な処理ステップが記載されており、多くの暗号ライブラリにもこのように実装されている。しかしながら、ＣｈａＣｈａアルゴリズムの処理ステップにはアルゴリズムの特性上からステップを削減することが可能であるにもかかわらず、最適化されておらず低周波数駆動のデバイスでは性能に影響を与えてしまう課題がある。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｄ．  Ｊ．  Ｂｅｒｎｓｔｅｉｎ．  ＣｈａＣｈａ，  ａ  ｖａｒｉａｎｔ  ｏｆ  Ｓａｌｓａ２０，  ２００８
【非特許文献２】Ｅ．  Ｒｅａｃｏｒｌａ：  "Ｔｈｅ  Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ  （ＴＬＳ）  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ  １．３"，  ＲＦＣ  ８４４６，  ２０１８．
【非特許文献３】Ｎｉｒ，  Ｙ．  ａｎｄ  Ａ．  Ｌａｎｇｌｅｙ，  "ＣｈａＣｈａ２０  ａｎｄ  Ｐｏｌｙ１３０５  ｆｏｒ  ＩＥＴＦ  Ｐｒｏｔｏｃｏｌｓ"，  ＲＦＣ  ７５３９，
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＣｈａＣｈａアルゴリズムにおいて、初期値が固定であるにもかかわらず演算を実施するステップが複数定義されており、アルゴリズムに記載の通りに実装すると余分な処理ステップを実行し、性能に影響を与える可能性がある。
【課題を解決するための手段】
【０００５】
本発明は、ＣｈａＣｈａアルゴリズムに関する各ブロックにおけるＲｏｕｎｄ処理においてＱｒｏｕｎｄ処理を実施する制御手段を有し、前記制御手段は、演算対象のラウンドが特定ラウンドの場合、前記Ｑｒｏｕｎｄ処理の実施を省略する。
【発明の効果】
【０００６】
本発明の一つによれば、余分な処理ステップを削減することができことができる。
【図面の簡単な説明】
【０００７】
【図１】通信処理用集積回路の構成を示す図である。
【図２】実施形態１の暗号処理の一例を示すフローチャートである。
【図３】演算に使用するデータを記憶する記憶部の概念を示す図である。
【図４】実施形態２の暗号処理の一例を示すフローチャートである。
【図５】実施形態３の暗号処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態について図面に基づいて説明する。
【０００９】
＜実施形態１＞
実施形態１を説明する。図１は、通信処理用集積回路１の構成を示す図である。通信処理用集積回路１は、ＣＰＵ１０と、暗号処理装置２０と、記憶部６０と、ＤＲＡＭコントローラ３０と、ＤＲＡＭ２と、通信処理装置４０と、を含む。通信処理用集積回路１において、ＣＰＵ１０、暗号処理装置２０、ＤＲＡＭコントローラ３０、通信処理装置４０、記憶部６０は、バスシステム５０に接続され、相互にデータ転送を行う。この構成はＳｙｓｔｅｍ―Ｏｎ―Ａ―Ｃｈｉｐとよばれる集積回路で代表的な構成である。ＣＰＵ１０は、通信処理用集積回路１の全体を制御する。ＣＰＵ１０は、記憶部６０に記憶されているプログラムに基づき処理を実行する。暗号処理装置２０は、データを暗号化する。記憶部６０は、プログラム等を記憶する。ＤＲＡＭコントローラ３０は、ＤＲＡＭ２へのデータの書き込み及びＤＲＡＭ２からのデータの読み出しを制御する。通信処理装置４０は、通信処理用集積回路１をＬＡＮ３に接続する。通信処理用集積回路１は、情報処理装置の一例である。また、通信処理用集積回路１を含んだ装置も、情報処理装置の一例である。
【００１０】
図２は、暗号処理の一例を示すフローチャートである。図２のフローチャートの処理は、ＣＰＵ１０がプログラムに基づき実施してもよいし、暗号処理装置２０においてハードウェア等が実施してもよい。
【００１１】
図３は、演算に使用するデータ（以下、Ｓｔａｔｅと定義する）を記憶する記憶部６０の概念を示す図である。Ｓｔａｔｅ２００は各々３２ビットのＳｔａｔｅ（例えば２０１１、２０１２）から構成されており、全１６個のＳｔａｔｅで構成される。非特許文献３によると各Ｓｔａｔｅには初期値として固定値：Ｃｎ、鍵：Ｋｎ、ブロックカウント：Ｂ、Ｎｏｎｃｅ：Ｎｎが与えられ各々図３に記載の通りに配置されるよう規定されている。４つのＳｔａｔｅの群をＳｔａｔｅ群２０１、２０２、２０３、２０４と定義する。例えば、Ｓｔａｔｅ群２０１はＳｔａｔｅ２０１１、２０１２、２０１３、２０１４から構成される。詳細は非特許文献３を参照されたい。
【００１２】
Ｓｔａｔｅ群は各々後述のＱｒｏｕｎｄ処理の入力及び出力として利用される。例えばＳｔａｔｅ群２０１はＱｒｏｕｎｄ１で利用され、Ｓｔａｔｅ群２０２はＱｒｏｕｎｄ２で利用される。なお、Ｑｒｏｕｎｄ５〜８についてはＳｔａｔｅ群の考え方が異なり、斜め方向に組み合わせることと規定されている。Ｒｏｕｎｄ処理はＱｒｏｕｎｄというサブ関数で定義されており、入力ブロック６４Ｂｙｔｅに対してＱｒｏｕｎｄ処理を８０回実施するものと規定されている。Ｑｒｏｕｎｄ処理の詳細については非特許文献３を参照されたい。以下、演算対象のブロックをブロックＭ、Ｎラウンド目のＱｒｏｕｎｄ処理をＱｒｏｕｎｄＮと記載する。ここで、入力ブロックＭに依存するＳｔａｔｅ２００の初期値はブロックカウント：Ｂ（Ｓｔａｔｅ２０１４）のみであり、他のパラメータについては変更されない仕様と規定されている。ここに着目すると前述のとおりＳｔａｔｅ２０１４はＳｔａｔｅ群２０１に属しているためＱｒｏｕｎｄ１処理はブロックＭに依存し変わり得る。しかしながらＳｔａｔｅ群２０２〜Ｓｔａｔｅ群２０４はブロックＭに依存せず同一パラメータが使用されることからＱｒｏｕｎｄ２〜Ｑｒｏｕｎｄ４の演算結果は同一となることがわかる。このような特徴を持つことから本実施形態では以下に示す処理を定義し処理ステップの削減を図る。
【００１３】
Ｓｔａｔｅは図１に示す記憶部６０に記憶してもよく、ＣＰＵ１０の保有する内部レジスタに存在してもよい。また、暗号処理装置２０が演算する場合には、Ｓｔａｔｅは暗号処理装置２０の内部メモリにあってもよく、Ｓｔａｔｅを記憶する記憶装置が存在する場所は問わない。
【００１４】
以下、図２を用いて、ＣＰＵ１０で処理した場合を例に処理を説明する。以下のフローチャートにおいても同様である。
Ｑｒｏｕｎｄ処理では４つのサブＳｔａｔｅを入力として演算する。Ｑｒｏｕｎｄ１ではＳｔａｔｅ群２０１（Ｓｔａｔｅ２０１１、Ｓｔａｔｅ２０１２、Ｓｔａｔｅ２０１３、Ｓｔａｔｅ２０１４）を入力としＱｒｏｕｎｄ処理が８０回施され、演算後の各データにより同Ｓｔａｔｅを更新する仕様である。このうちＮ＝１〜４においては初期値を入力するよう規定されており、入力ブロック数に応じて初期値は変化させるよう規定されている。しかしながら、入力ブロック数Ｍに依存するのはＳｔａｔｅ２０１４のみである。したがって、Ｎ＝２、３、４において入力はブロックＭが変化してもＳｔａｔｅ群２０２、Ｓｔａｔｅ群２０３、Ｓｔａｔｅ群２０４の初期値は変化しない。本特徴を鑑み、本実施形態では以下の処理を定義する。
【００１５】
図２（ａ）は、実施形態１の暗号処理の一例を示すフローチャートである。ステップＳ１００において、ＣＰＵ１０は、Ｍ＝１を設定する。ステップＳ１０１において、ＣＰＵ１０は、前処理としてＱｒｏｕｎｄ２、Ｑｒｏｕｎｄ３、Ｑｒｏｕｎｄ４の処理を実施し各々Ｓｔａｔｅ群２０２、２０３、２０４に計算結果を格納する。Ｓｔａｔｅ２００を直接更新して演算に利用する場合、前処理であるステップＳ１０１で計算した結果が上書きされてしまう。そのため、ステップＳ１０２において、ＣＰＵ１０は、演算対象のブロックが最初のブロック（Ｍ＝１）かそれ以外かを判定する。ＣＰＵ１０は、演算対象のブロックが最初のブロックである場合、ステップＳ１０４に進み、演算対象のブロックが最初のブロックでない場合、ステップＳ１０３に進む。
【００１６】
ステップＳ１０３において、ＣＰＵ１０は、初期値を更新する。ステップＳ１０３の処理は、直接更新する実装方法を選択した場合、ブロックＭ＋１以降の処理実施時にＳｔａｔｅ群２０２、２０３、２０４をブロック１に対して実施した前処理Ｓ１０１後の値に復元するための処理である。なお図２に記載の処理では分岐を設けているが必須ではなく、ＣＰＵ１０は、ステップＳ１０３の処理をＭ＝１のブロックに対して実施してもよい。また、Ｓｔａｔｅ２００を別領域名疎に複数用意する実装をとる場合にはステップＳ１０３の処理は不要である。ステップＳ１０４において、ＣＰＵ１０は、更新されたＳｔａｔｅ２００を用いて各々の入力ブロックＭに対してＲｏｕｎｄ処理を実施する。ステップＳ１０４のＲｏｕｎｄ処理の詳細は、後述する図２（ｂ）に示す。ステップＳ１０５において、ＣＰＵ１０は、Ｒｏｕｎｄ処理実施後にブロックＭが最終ブロックであるか否かを判定する。ＣＰＵ１０は、ブロックＭが最終ブロックであれば、情報処理を終了し、最終ブロックでなければステップＳ１０６に進む。ステップＳ１０６において、ＣＰＵ１０は、Ｍを１インクリメントする。そして、ＣＰＵ１０は、Ｓ１０２からの処理を実行する。Ｑｒｏｕｎｄ２、及びＱｒｏｕｎｄ３、及びＱｒｏｕｎｄ４は、特定ラウンドの一例である。また、Ｓ１０２からＳ１０５、又はＳ１０６までの処理は、ブロック処理の一例である。また、Ｓ１０３のタイミングは、ブロック処理開始時の一例である。Ｑｒｏｕｎｄ２は、２ラウンド目の一例である。Ｑｒｏｕｎｄ３は、３ラウンド目の一例である。Ｑｒｏｕｎｄ４は、４ラウンド目の一例である。
【００１７】
図２（ｂ）は、ステップＳ１０４のＲｏｕｎｄ処理の詳細を示すフローチャートである。ステップＳ１０４０において、ＣＰＵ１０は、Ｎ＝１を設定する。ステップＳ１０４１において、ＣＰＵ１０は、Ｓ１０１の前処理を実行済みか否か判定するためにＮの値を検査する。前処理済みであればＱｒｏｕｎｄ処理を実施しない。残りのＮに対しＱｒｏｕｎｄ処理を実施する。すなわち、ＣＰＵ１０は、Ｎが２、又は３、又は４かを判定する。ＣＰＵ１０は、Ｎが２、又は３、又は４である場合、ステップＳ１０４３に進み、Ｎが２、又は３、又は４でない場合、ステップＳ１０４２に進む。ステップＳ１０４２において、ＣＰＵ１０は、Ｑｒｏｕｎｄ処理を実施する。ステップＳ１０４３において、ＣＰＵ１０は、最終ラウンドであるか否かを判定する。すなわち、ＣＰＵ１０は、Ｎが８０以上か否かを判定する。ＣＰＵ１０は、Ｎが８０以上の場合、Ｒｏｕｎｄ処理を終了し、Ｎが８０以上でない場合、ステップＳ１０４４に進む。ステップＳ１０４４において、ＣＰＵ１０は、Ｎを１インクリメントする。そして、ＣＰＵ１０は、Ｓ１０４１からの処理を繰り返す。
【００１８】
ＣｈａＣｈａアルゴリズムにおいては８０ラウンド、Ｑｒｏｕｎｄを実施し、算出したＳｔａｔｅ２００を用いて被処理データ入力ブロックＭに対して後処理を実施するが、この処理は説明の簡略化のため省略する。
【００１９】
実施形態１の通信処理用集積回路１によれば、処理ステップを削減することができ、さらに消費電力を削減することができる。
【００２０】
＜実施形態２＞
実施形態２を説明する。実施形態２では実施形態１と異なる点について主に説明する。
図４（ａ）は、実施形態２の情報処理の一例を示すフローチャートである。実施形態２の処理は、実施形態１の処理と異なり最初の入力ブロック（Ｍ＝１）についてはＱｒｏｕｎｄ処理を実施するが入力ブロック（Ｍ＝２〜）以降についてはＱｒｏｕｎｄ処理を削減し、処理ステップを軽減する処理である。
【００２１】
ステップＳ２００において、ＣＰＵ１０は、各々の入力ブロックＭに対してＭ＝１を設定する。ステップＳ２０１において、ＣＰＵ１０は、Ｒｏｕｎｄ処理を実施する。ステップＳ２０１のＲｏｕｎｄ処理の詳細は、後述する図４（ｂ）に示す。ステップＳ２０２において、ＣＰＵ１０は、Ｒｏｕｎｄ処理実施後にブロックＭが最終ブロックであるか否かを判定する。ＣＰＵ１０は、ブロックＭが最終ブロックであれば、情報処理を終了し、最終ブロックでなければステップＳ２０３に進む。ステップＳ２０３において、ＣＰＵ１０は、Ｍを１インクリメントする。そして、ＣＰＵ１０は、ステップＳ２０１からの処理を実行する。
【００２２】
図４（ｂ）は、ステップＳ２０１のＲｏｕｎｄ処理の詳細を示すフローチャートである。
ステップＳ２０１０において、ＣＰＵ１０は、初期値Ｎ＝１を設定する。ステップＳ２０１１において、ＣＰＵ１０は、Ｍが１でなく、かつ、Ｎが２、又は３又は４であるか否を判定する。ＣＰＵ１０は、Ｍが１でなく、かつ、Ｎが２、又は３又は４の場合、ステップＳ２０１３に進み、それ以外の場合、ステップＳ２０１２に進む。ステップＳ２０１２において、ＣＰＵ１０は、Ｑｒｏｕｎｄ処理を実施する。ＣＰＵ１０は、Ｑｒｏｕｎｄ処理の算出結果を記憶部６０等に保持する。Ｍが１、及びＭが１でなく、Ｎが１、５〜８０に対してはステップＳ２０１２のＱｒｏｕｎｄ処理が実施される。残りのブロック（Ｍ！＝１）についてはＱｒｏｕｎｄ（Ｎ＝２、３、４）が削減可能である。ステップＳ２０１３において、ＣＰＵ１０は、記憶部６０よりブロック（Ｍ＝１）において算出したＳｔａｔｅを取得し、演算対象のＳｔａｔｅを更新する。ステップＳ２０１４において、ＣＰＵ１０は、最終ラウンドであるか否かを判定する。すなわち、ＣＰＵ１０は、Ｎが８０以上か否かを判定する。ＣＰＵ１０は、Ｎが８０以上の場合、Ｒｏｕｎｄ処理を終了し、Ｎが８０以上でない場合、ステップＳ２０１５に進む。ステップＳ２０１５において、ＣＰＵ１０は、Ｎを１インクリメントする。そして、ＣＰＵ１０は、Ｓ２０１１からの処理を繰り返す。
【００２３】
ＣｈａＣｈａアルゴリズムにおいては８０ラウンド、Ｑｒｏｕｎｄを実施し、算出したＳｔａｔｅ２００を用いて被処理データ入力ブロックＭに対して後処理を実施するが、この処理は説明の簡略化のため省略する。
【００２４】
実施形態２の通信処理用集積回路１によれば、処理ステップを削減することができ、さらに消費電力を削減することができる。
【００２５】
＜実施形態３＞
実施形態３を説明する。実施形態３では主に上述した実施形態と異なる点について主に説明する。
図５（ａ）は、実施形態３の情報処理の一例を示すフローチャートである。Ｓ３００からＳ３０３までの処理は、実施形態２の図４（ａ）のＳ２００からＳ２０２までの処理と同様であるため説明を省略する。
【００２６】
図５（ｂ）は、ステップＳ３０１のＲｏｕｎｄ処理の詳細を示すフローチャートである。
ステップＳ３０１０において、ＣＰＵ１０は、初期値Ｎ＝１を代入する。ステップＳ３０１１において、ＣＰＵ１０は、Ｍが１でなく、かつ、Ｎが２、又は３又は４か否かを判定する。ＣＰＵ１０は、Ｍが１でなく、かつ、Ｎが２、又は３又は４の場合、ステップＳ３０１３に進み、それ以外の場合、ステップＳ３０１２に進む。ステップＳ３０１２において、ＣＰＵ１０は、設定された初期Ｓｔａｔｅを用いＱｒｏｕｎｄ処理を実施する。ステップＳ３０１３において、ＣＰＵ１０は、乱数値等を用いて対応するＳｔａｔｅを更新する。ステップＳ３０１３に続き、ＣＰＵ１０は、ステップＳ３０１２に進み、乱数値等を用いて更新されたＳｔａｔｅを用いＱｒｏｕｎｄ処理を実施する。ステップＳ３０１３からステップＳ３０１２に進み、Ｑｒｏｕｎｄ処理を実施した場合、Ｑｒｏｕｎｄ処理の算出結果は利用しないため、ＣＰＵ１０は、算出結果を破棄してもよいし、記憶部６０等に一時保持してもよい。
【００２７】
ステップＳ３０１４において、ＣＰＵ１０は、Ｍが１でなく、かつ、Ｎが２、又は３又は４か否かを判定する。ＣＰＵ１０は、Ｍが１でなく、かつ、Ｎが２、又は３又は４の場合、ステップＳ３０１５に進み、それ以外の場合、ステップＳ３０１６に進む。ステップＳ３０１５において、ＣＰＵ１０は、乱数値等を用いて演算したラウンドであるため、Ｓｔａｔｅを正しい値に復元するためＳｔａｔｅ更新処理を実施する。より具体的に説明すると、ＣＰＵ１０は、記憶部６０より事前のブロック（Ｍ＝１）において算出したＳｔａｔｅを取得し、取得したＳｔａｔｅで演算対象のＳｔａｔｅを更新する。なお、本実施形態の例では、Ｓ３０１３において乱数値等を用いて対応するＳｔａｔｅを更新しているが、図５（ａ）のＳ３００実施前等のタイミングで、ＣＰＵ１０は、用意しておいた値等をＳｔａｔｅに代入してもよい。ステップＳ３０１５の処理は、Ｓｔａｔｅに算出済みの値を書き込む処理の一例である。ステップＳ３０１６において、ＣＰＵ１０は、最終ラウンドであるか否かを判定する。すなわち、ＣＰＵ１０は、Ｎが８０以上か否かを判定する。ＣＰＵ１０は、Ｎが８０以上の場合、Ｒｏｕｎｄ処理を終了し、Ｎが８０以上でない場合、ステップＳ３０１７に進む。ステップＳ３０１７において、ＣＰＵ１０は、Ｎを１インクリメントする。そして、ＣＰＵ１０は、Ｓ３０１１からの処理を繰り返す。
【００２８】
ＣｈａＣｈａアルゴリズムにおいては８０ラウンド、Ｑｒｏｕｎｄを実施し、算出したＳｔａｔｅ２００を用いて被処理データ入力ブロックＭに対して後処理を実施するが、この処理は説明の簡略化のため省略する。
【００２９】
実施形態３の通信処理用集積回路１によれば、乱数値等を用いてかく乱することによりサイドチャネル耐性を向上させることができる。なお、乱数値は、規則性のない値の一例であり、サイドチャネル攻撃に耐え得る値であれば乱数値に限らず、どのような値であってもよい。
【００３０】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給する。そして、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００３１】
以上、本発明の実施形態の一例について詳述したが、本発明は係る特定の実施形態に限定されるものではない。
上述した各実施形態では、暗号処理を例に説明を行ったが、復号処理装置を通信処理用集積回路１に設ければ、復号処理においても同様の処理を実行することにより、上述した効果を奏することができる。
【符号の説明】
【００３２】
１    通信処理用集積回路
１０  ＣＰＵ
２０  暗号処理装置
【図１】
2020127141.tif 000003
【図２】
2020127141.tif 000004
【図３】
2020127141.tif 000005
【図４】
2020127141.tif 000006
【図５】
2020127141.tif 000007