(57)【特許請求の範囲】
【請求項１】
複数ビットの入力データ情報と複数ビットの鍵情報とを用いてブロック暗号アルゴリズムの演算によりデータを変換する暗号装置において、
前記複数ビットの入力データ情報を記憶し１ビットずつ出力する第１の記憶部と、
前記複数ビットの鍵情報を記憶し１ビットずつ出力する第２の記憶部と、
前記第１の記憶部から出力された１ビット入力データ情報と前記第２の記憶部から出力された１ビット鍵情報とを１ビットずつ演算する第１のシリアル演算部と、
前記第１のシリアル演算部により演算された全てのビットを記憶した後に１ビットずつ出力する第３の記憶部と、
複数ビットの鍵情報を記憶し１ビットずつ出力する第４の記憶部と、
前記第３の記憶部により記憶された演算結果情報と前記第４の記憶部により記憶された鍵情報とを１ビットずつ演算する第２のシリアル演算部と、
を備えたことを特徴とする暗号装置。
【請求項２】
複数ビットの入力データ情報と複数ビットの鍵情報とを用いてブロック暗号アルゴリズムの演算によりデータを変換する暗号方法において、
第１の記憶部が、前記複数ビットの入力データ情報を記憶する第１の記憶ステップと、
第２の記憶部が、前記複数ビットの鍵情報を記憶する第２の記憶ステップと、
第１のシリアル演算部が、前記第１の記憶ステップにより記憶された入力データ情報と前記第２の記憶ステップにより記憶された鍵データ情報とを１ビットずつ演算する第１のシリアル演算ステップと、
第３の記憶部が、前記第１のシリアル演算ステップにより演算された全てのビットを記憶する第３の記憶ステップと、
第４の記憶部が、複数ビットの鍵情報を記憶する第４の記憶ステップと、
第２のシリアル演算部が、前記第３の記憶ステップにより記憶された演算結果情報と前記第４の記憶ステップにより記憶された鍵情報とを１ビットずつ演算する第２のシリアル演算ステップと、
を備えたことを特徴とする暗号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ変換装置及びデータ変換方法に関するものである。
【背景技術】
【０００２】
特許文献１の暗号装置及び復号装置は、マスクａとマスクｂによって、データを秘匿すると共に、暗号又は復号の演算後にこれらのマスクの影響を除去することにより、マスクを使用しないデータを得ていた。このようにマスクａとマスクｂを使用することにより、内部データの予測を防止し、電力解析による解読を困難としていた。
【特許文献１】特開２０００−６６５８５号公報（第７−１３頁、第４図）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記のような従来の暗号装置及び復号装置では、マスクを新規に発生させなければならず、マスクを発生させる回路が必要なため、回路の増大を招いていた。また、演算はブロック単位での並列処理により行われるため、ブロック長が長くなると、同時に使用する演算素子の数が多くなり、電力が多く必要となって、その結果、電力解析が容易になるという課題があった。さらに、ブロック長が長い場合、各ブロック内のビットごとの演算遅延が異なり、その遅延により電力解析が容易になるという課題があった。【０００４】
図２１は、ビットごとの演算遅延の差異が電力消費量に影響を及ぼす例を示す図である。図２１において、入力ビットＡ、Ｂの遅延の差はＡＮＤゲートの出力ビットに影響を与える。この図のように、入力の遅延の差が大きいほど、電力変化が表れやすくなり、単位時間の電力消費量が大きくなる。【０００５】
本発明は、例えば、データの暗号化又は復号化に係る演算の電力消費量を小さくし、電力解析を困難にすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の暗号装置は、
複数ビットの入力データ情報と複数ビットの鍵情報とを用いてブロック暗号アルゴリズムの演算によりデータを変換する暗号装置において、
複数ビットの入力データ情報を記憶し１ビットずつ出力する第１の記憶部と、
複数ビットの鍵情報を記憶し１ビットずつ出力する第２の記憶部と、
第１の記憶部から出力された１ビット入力データ情報と第２の記憶部から出力された１ビット鍵情報との１ビットずつ演算する第１のシリアル演算部と、を備えたことを特徴とする。
【０００７】
また、この暗号装置は、第１のシリアル演算部により演算された全てのビットを記憶した後に１ビットずつ出力する第３の記憶部と、複数ビットの鍵情報を記憶し１ビットずつ出力する第４の記憶部と、第３の記憶部により記憶された演算結果情報と第４の記憶部により記憶された鍵情報とを１ビットずつ演算する第２のシリアル演算部と、を備えたことを特徴とする。
【０００８】
本発明の暗号方法は、
複数ビットの入力データ情報と複数ビットの鍵情報とを用いてブロック暗号アルゴリズムの演算によりデータを変換する暗号方法において、
複数ビットの入力データ情報を記憶する第１の記憶ステップと、
複数ビットの鍵情報を記憶する第２の記憶ステップと、
第１の記憶ステップにより記憶された入力データ情報と第２の記憶ステップにより記憶された鍵データ情報とを１ビットずつ演算する第１のシリアル演算ステップと、を備えたことを特徴とする。
【０００９】
また、この暗号方法は、第１のシリアル演算ステップにより演算された全てのビットを記憶する第３の記憶ステップと、複数ビットの鍵情報を記憶する第４の記憶ステップと、第３の記憶ステップにより記憶された演算結果情報と第４の記憶ステップにより記憶された鍵情報とを１ビットずつ演算する第２のシリアル演算ステップと、を備えたことを特徴とする。
【発明の効果】
【００２１】
本発明では、複数ビットの入力データ情報と複数ビットの鍵情報とを用いてブロック暗号アルゴリズムの演算によりデータを変換する暗号装置において、複数ビットの複数ビットの入力データ情報を記憶し１ビットずつ出力する第１の記憶部と、複数ビットの鍵情報を記憶し１ビットずつ出力する第２の記憶部と、第１の記憶部から出力された１ビット入力データ情報と第２の記憶部から出力された１ビット鍵情報とを１ビットずつ演算する第１のシリアル演算部と、を備えたことにより、単位時間当たりの電力消費量をパラレル演算の場合の電力消費量に比べて小さくし、演算遅延による電力消費への影響も低減して、電力消費量に基づく電力解析を困難にすることができる。
【００２２】
また、この暗号装置は第１のシリアル演算部により演算された全てのビットを記憶した後に１ビットずつ出力する第３の記憶部と、複数ビットの鍵情報を記憶し１ビットずつ出力する第４の記憶部と、第３の記憶部により記憶された演算結果情報と第４の記憶部により記憶された鍵情報とを１ビットずつ演算する第２のシリアル演算部と、を備えたことにより、演算ごとに異なる処理時間のずれを第３の記憶部で受け、処理時間のずれが後段の処理に伝播するのを防ぐことができる。
【００２３】
本発明では、複数ビットの入力データ情報と複数ビットの鍵情報とを用いてブロック暗号アルゴリズムの演算によりデータを変換する暗号方法において、
複数ビットの入力データ情報を記憶する第１の記憶ステップと、
複数ビットの鍵情報を記憶する第２の記憶ステップと、
第１の記憶ステップにより記憶された入力データ情報と第２の記憶ステップにより記憶された鍵データ情報とを１ビットずつ演算する第１のシリアル演算ステップと、
を備えたことにより、単位時間当たりの電力消費量をパラレル演算の場合の電力消費量に比べて小さくし、演算遅延による電力消費への影響も低減して、電力消費量に基づく電力解析を困難にすることができる。
【００２４】
また、この暗号方法は、第１のシリアル演算ステップにより演算された全てのビットを記憶する第３の記憶ステップと、複数ビットの鍵情報を記憶し１ビットずつ出力する第４の記憶ステップと、第３の記憶ステップにより記憶された演算結果情報と第４の記憶ステップにより記憶された鍵情報とを１ビットずつ演算する第２のシリアル演算ステップと、を備えたことにより、演算ごとに異なる処理時間のずれを第３の記憶ステップで受け、処理時間のずれが後段の処理に伝播するのを防ぐことができる。
【発明を実施するための最良の形態】
【００３６】
以下、本発明の実施の形態について、図を用いて説明する。【００３７】
図１は、下記実施の形態におけるデータ変換装置の外観の一例を示す図である。【００３８】
図１において、データ変換装置１００は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）表示装置９０１、キーボード（Ｋ／Ｂ）９０２、マウス９０３、コンパクトディスク装置（ＣＤＤ）９０５、プリンタ装置９０６、スキャナ装置９０７を備え、これらはケーブルで接続されている。さらに、データ変換装置１００は、ＦＡＸ機９３２、電話機９３１とケーブルで接続され、また、ローカルエリアネットワーク（ＬＡＮ）９４２、ゲートウェイ９４１を介してインターネット９４０に接続されている。【００３９】
図２は、下記実施の形態におけるデータ変換装置のハードウェア構成の一例を示す図である。【００４０】
図２において、データ変換装置１００は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、ＣＲＴ表示装置９０１、Ｋ／Ｂ９０２、マウス９０３、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）９０４、磁気ディスク装置９２０、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７と接続されている。【００４１】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。【００４２】
通信ボード９１５は、ＦＡＸ機９３２、電話機９３１、ＬＡＮ９４２などに接続されている。【００４３】
例えば、通信ボード９１５、Ｋ／Ｂ９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部の一例である。また、例えば、通信ボード９１５、ＣＲＴ表示装置９０１などは、出力部の一例である。【００４４】
ここで、通信ボード９１５は、ＬＡＮ９４２に限らず、直接、インターネット９４０、あるいはＩＳＤＮ（Ｉｎｔｅｇｒａｔｅｄ  Ｓｅｒｖｉｃｅｓ  Ｄｉｇｉｔａｌ  Ｎｅｔｗｏｒｋ）などのＷＡＮ（ワイドエリアネットワーク）に接続されていても構わない。直接、インターネット９４０、あるいはＩＳＤＮなどのＷＡＮに接続されている場合、データ変換装置１００は、インターネット９４０、あるいはＩＳＤＮなどのＷＡＮに接続され、ゲートウェイ９４１は不用となる。【００４５】
磁気ディスク装置９２０には、オペレーティングシステム（ＯＳ）９２１、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３は、ＣＰＵ９１１、ＯＳ９２１、ウィンドウシステム９２２により実行される。【００４６】
上記プログラム群９２３には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。【００４７】
ファイル群９２４には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明するものが、「〜ファイル」として記憶されている。【００４８】
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）などのその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。【００４９】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。あるいは、ソフトウェアのみ、あるいは、ハードウェアのみ、あるいは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。【００５０】
また、以下に述べる実施の形態を実施するプログラムは、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）などのその他の記録媒体による記録装置を用いて記憶されても構わない。【００５１】
以下に述べる実施の形態は、例えば、ブロック暗号アルゴリズムを実装した装置、方法、プログラムに適用できる。【００５２】
ここで、ブロック暗号アルゴリズムの一例であるＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）について簡単に説明する。【００５３】
図３は、ＤＥＳの演算の基本となるラウンドの構造を示す図である。【００５４】
ＤＥＳはこのラウンドを１６回繰返して、６４ビットのデータを暗号化又は復号化する。ラウンドの入力は、６４ビットのデータである。この入力データは、上位３２ビットと下位３２ビットに分けられ、各々ＬとＲのブロックと呼ばれる。図中、ｎはラウンド番号である。【００５５】
Ｒｎ−１は、かき混ぜ関数（ＭＦ）２０１と呼ばれる関数の入力となる。かき混ぜ関数２０１にはｎラウンドの鍵（Ｋｎ）も入力される。かき混ぜ関数２０１の演算処理が行われると、３２ビットのデータが出力される。【００５６】
次に、かき混ぜ関数２０１の３２ビットの出力とＬｎ−１との排他的論理和演算２０２が行われる。この結果が３２ビットのＲｎとなる。３２ビットのＬｎは、３２ビットのＲｎ−１と同じである。これらＬｎとＲｎをあわせた６４ビットのデータがｎラウンドの出力として出力される。【００５７】
ラウンドの出力は、次のラウンドの入力となり、再度ラウンドの演算がなされる。この操作を１６回繰返すことで、ＤＥＳの演算が終了する（正確には、転置と呼ばれる演算処理が含まれるが、説明を省略する）。【００５８】
図４は、かき混ぜ関数（ＭＦ）の演算処理の詳細を示す図である。【００５９】
かき混ぜ関数には３２ビットのＲが入力される。このブロックのビットを、重複を許して、６ビットずつ８個のブロックに分ける。これと、４８ビットのラウンドの鍵との排他的論理和演算２０３を行う。この操作により、６ビットのブロックが８つ得られる。この各ブロックに対して、規定されたＳ−Ｂｏｘ２０４と呼ばれる６ビット入力４ビット出力のテーブルで換字処理を行うことにより、４ビットのブロックが８つ得られる。この３２ビットのデータが並び替えられて（並び替え処理の詳細については説明を省略する）、かき混ぜ関数の出力となる。【００６０】
また、ラウンドの鍵（Ｋｎ）は図５のように生成される。【００６１】
ＤＥＳの６４ビットの鍵のうち、パリティの８ビットを除いた５６ビットに対し、規定された並び替えを行い、２８ビットのＲとＬの２つのブロックに分ける。このうちの一方のブロックを図５では、「２８−ｂｉｔ  Ｋｅｙ」と示した。この「２８−ｂｉｔ  Ｋｅｙ」のレジスタは、ラウンドにより、１ビットもしくは２ビット左に回転する。回転した「２８−ｂｉｔ  Ｋｅｙ」のうち２４ビットを、規則に沿って並べ替えて（Ｐ）、Ｋｎの一方の２４ビットが得られる。Ｋｎの他方の２４ビットも同様の処理により得られる。次のラウンドでは、「２８−ｂｉｔ  Ｋｅｙ」を再度左回転し、並べ替えることで、Ｋｎ＋１を求めることができる。【００６２】
このように、ブロック暗号アルゴリズムは、排他的論理和、テーブル処理、並べ替えといった単純な演算要素を組み合わせて構成されている。【００６３】
次に、電力解析について簡単に説明する。【００６４】
ブロック暗号は、ＨＷ（ハードウェア）やＳＷ（ソフトウェア）の形で実装されて使用される。ブロック暗号が実装された装置、方法、プログラムを使って、データの秘匿を行うことができる。ＨＷやＳＷとして実装された暗号アルゴリズムでは、ＨＷやＳＷが動作している瞬間の電力を測定することは、比較的容易である。例えば、半導体チップに電力を供給しているパターンを切断し、そこに適当な抵抗を挿入し、その抵抗の両端の電位差をオシロスコープなどで測定することができる。この測定された電力から、様々な情報を抽出できることがわかっている（詳細については、インターネット＜ｈｔｔｐ：／／ｗｗｗ．ｃｒｙｐｔｏｇｒａｐｈｙ．ｃｏｍ／ｒｅｓｏｕｒｃｅｓ／ｗｈｉｔｅｐａｐｅｒｓ／ＤＰＡ−ｔｅｃｈｎｉｃａｌ．ｈｔｍｌ＞参照）。先に述べたＤＥＳを単に実装したＨＷやＳＷでは、ＭＦ内のＳ−Ｂｏｘの出力値を予測することにより、上記文献の手法によりＫｎを求めることが可能である。【００６５】
実施の形態１．
前述したように、排他的論理和、テーブル処理、並べ替えといった単純な演算要素が組み合わさって、ブロック暗号アルゴリズムが構成されている。本実施の形態では、このような演算を１ビット出力の素子で構成して実装する。ただし、本実施の形態は、ブロック暗号アルゴリズムだけでなく、他の暗号アルゴリズムなどにも適用可能である。【００６６】
図６は、本実施の形態に係るデータ変換アルゴリズムの基本形を示す図であり、図７は、本実施の形態に係るデータ変換装置の構成の一例を示す図である。【００６７】
図６及び図７は暗号アルゴリズムの一部を示したもので、図６のアルゴリズムが基本形となる。すなわち、３２ビットの鍵と３２ビットの入力データとの排他的論理和をパラレル演算し、３２ビットの出力データを得るものである。この図において、３２ビットの鍵は鍵レジスタ１０２に、３２ビットの入力データは入力レジスタ１０１に記憶されている。３２ビットの鍵と３２ビットの入力データとの排他的論理和は、パラレル演算器１０３により演算され、演算結果は出力レジスタ１０４に記憶される。この基本形のアルゴリズムを、本実施の形態では、図７のアルゴリズムのように実装し計算を行う。鍵は３２ビットの鍵シフトレジスタ（第２の記憶部）１０６、入力データは３２ビットの入力シフトレジスタ（第１の記憶部）１０５に保持するものとし、鍵と入力データの各々１ビットをシリアル演算器（演算部）１０７に対する入力として、排他的論理和１ビットをとり、入力シフトレジスタ１０５の左端にシフトさせる。鍵シフトレジスタ１０６は循環右シフトを行う。これを３２回行うことで、３２ビットの演算が終了し、最終結果が入力シフトレジスタ１０５に保持される。【００６８】
図８は、本実施の形態に係るデータ変換装置の動作の一例を示すフロー図である。図中、「＋」は排他的論理和演算を示す。【００６９】
本実施の形態に係るデータ変換装置は、まず、入力シフトレジスタ１０５に３２ビットのデータを入力し（ステップＳ１０１）、鍵シフトレジスタ１０６に３２ビットの鍵を入力する（ステップＳ１０２）。次に、入力シフトレジスタ１０５を１ビット右にシフトし（ステップＳ１０３）、入力シフトレジスタ１０５から１ビット出力する（ステップＳ１０４）。入力シフトレジスタ１０５から出力されたビットをｉとする。次に、鍵シフトレジスタ１０６を１ビット右にシフトし（ステップＳ１０５）、鍵シフトレジスタ１０６から１ビット出力する（ステップＳ１０６）。鍵シフトレジスタ１０６から出力されたビットをｋとする。そして、シリアル演算器１０７でｉとｋとの排他的論理和を演算し（ステップＳ１０７）、演算結果を入力シフトレジスタ１０５に入力する（ステップＳ１０８）。鍵シフトレジスタ１０６には、ｋを入力する（ステップＳ１０９）。ステップＳ１０３からステップＳ１０９までを、３２ビット分繰り返す。【００７０】
図８に示したデータ変換装置の動作は、一部の処理の順序が入れ替わってもよいし、一部の処理が他の処理と並行して実行されてもよい。【００７１】
このように、本実施の形態では、２ビット入力１ビット出力の排他的論理和をシーケンシャル（順次又はシリアル）に実行することで、３２ビットの鍵と３２ビットの入力データとの排他的論理和の演算を完結する。【００７２】
本実施の形態では、排他的論理和（ＸＯＲ）の例を示したが、論理和（ＯＲ）、論理積（ＡＮＤ）でも同様に構成できる。また、算術加算、算術減算、算術積の場合は、最も小さな演算単位で演算が行われるようにする。具体的には、算術加算では、１ビット＋１ビットを２ビット出力で、算術減算では、２ビット−１ビットを１ビット出力で、算術乗算では、１ビット×１ビットを１ビット出力で扱う。【００７３】
このような構成になるように、アルゴリズムを実装すると、最小単位の演算が繰返し行われることになり、瞬時の電力を小さくできるという効果がある。また、演算結果が１ビットずつシフトしながら確定していくので、多数のビットが一度に状態変化することがなく、特徴的な電力消費の状態を作り出す可能性が低くなるという効果がある。このような効果は、電力解析を困難にする。【００７４】
本実施の形態では、シリアル演算器１０７が１ビットごとのシリアル演算を行うが、２ビットや３ビットごとの演算であっても、上記のような効果を得ることが可能である。【００７５】
また、本実施の形態では、ＨＷの構成によりシリアル演算を実現しているが、例えば、１ビットごとのシリアル演算を行う関数を作成し、この関数を繰り返し実行することによって、ＳＷの構成によりシリアル演算を実現してもよい。【００７６】
また、本実施の形態では、シフトレジスタを使用し、シリアル演算器１０７の演算結果を入力シフトレジスタ１０５に記憶させているが、他のレジスタに記憶させてもよい。この場合、入力シフトレジスタ１０５及び鍵シフトレジスタ１０６は、シフトレジスタ以外の種類のレジスタであってもよい。【００７７】
また、本実施の形態では、３２ビットのデータを用いたが、６４ビットのデータなど、他のビット数のデータを用いてもよい。【００７８】
以上のように、本実施の形態では、データ変換装置において、複数ビットのパラレル演算が可能な処理をシリアル演算で処理することにより、単位時間当たりの電力消費量をパラレル演算の場合の電力消費量に比べて小さくし、電力解析を困難にすることが可能となる。【００７９】
また、データ変換装置において、第１の記憶部が複数ビットを記憶して１ビットずつ出力し、第２の記憶部が他の複数ビットを記憶して１ビットずつ出力し、演算部が第１の記憶部が出力したビットと第２の記憶部が出力したビットとを演算した結果を第１の記憶部に記憶させることにより、第１の記憶部を効率よく利用することが可能となる。【００８０】
また、データ変換装置において、第１の記憶部と第２の記憶部とがシフトレジスタであることにより、電力消費の特異な状態を発生しにくくすることが可能となる。【００８１】
本実施の形態では、データ変換装置を用いるデータ変換方法において、複数ビットのパラレル演算が可能な処理をシリアル演算で処理することにより、単位時間当たりの電力消費量をパラレル演算の場合の電力消費量に比べて小さくし、電力解析を困難にすることが可能となる。【００８２】
また、データ変換方法において、データ変換装置が備える第１の記憶部に複数ビットを記憶して１ビットずつ出力し、第２の記憶部に他の複数ビットを記憶して１ビットずつ出力し、第１の記憶部から出力されたビットと第２の記憶部から出力されたビットとを演算し、演算した結果を第１の記憶部に記憶することにより、第１の記憶部を効率よく利用することが可能となる。【００８３】
以上のように、本実施の形態に係る装置は、
暗号アルゴリズムを実装して、入力データを暗号化、復号化する装置において、
暗号アルゴリズムを実装する際に、
暗号アルゴリズムを細分化し、
１ビット出力の単位演算素子まで分解し、
それらの素子の結果を保持する機構を設け、シーケンシャルに動作させて演算が完結するように実装する暗号アルゴリズムが実装された装置である。【００８４】
実施の形態２．
図９は、本実施の形態に係るデータ変換アルゴリズムの基本形を示す図であり、図１０は、本実施の形態に係るデータ変換装置の構成の一例を示す図である。【００８５】
図９及び図１０は暗号アルゴリズムの一部を示したもので、図９のアルゴリズムが基本形となる。すなわち、３２ビットの入力データと３２ビットの鍵との排他的論理和をパラレル演算し、ついで、この演算で得たデータと他の３２ビットの鍵との論理和をパラレル演算し、３２ビットのデータを出力するものである。この図において、３２ビットの入力データは入力レジスタ１０８に、３２ビットの鍵は第１の鍵レジスタ１０９に、他の３２ビットの鍵は第２の鍵レジスタ１１１に記憶されている。３２ビットの入力データと３２ビットの鍵との排他的論理和は、第１のパラレル演算器１１０により演算され、その演算結果と他の３２ビットの鍵との論理和は、第２のパラレル演算器１１２により演算される。この論理和の演算結果は出力レジスタ１１３に記憶される。このようなアルゴリズムの場合、排他的論理和と論理和は演算負荷が低いので、連続して演算（前後連結した演算）を行うことが多いが、本実施の形態では図１０に示すように、排他的論理和と論理和との間に、一時レジスタ１１４を設けて、一度データを保持してから、前の演算から後の演算に移る。【００８６】
図１１は、本実施の形態に係るデータ変換装置の動作の一例を示すフロー図である。図中、「＋」は排他的論理和演算を、「｜」は論理和演算を示す。【００８７】
本実施の形態に係るデータ変換装置は、まず、入力レジスタ１０８に３２ビットのデータを入力する（ステップＳ２０１）。入力レジスタ１０８に入力されたデータをＩとする。そして、第１の鍵レジスタ１０９に３２ビットの鍵を入力する（ステップＳ２０２）。第１の鍵レジスタ１０９に入力された鍵をＫとする。次に、入力レジスタ１０８からＩを出力する（ステップＳ２０３）。次に、第１の鍵レジスタ１０９からＫを出力する（ステップＳ２０４）。そして、第１のパラレル演算器１１０でＩとＫとの排他的論理和を演算し（ステップＳ２０５）、演算結果を一時レジスタ１１４に入力する（ステップＳ２０６）。一時レジスタ１１４に入力されたデータをＩ´とする。【００８８】
第２の鍵レジスタ１１１に他の３２ビットの鍵を入力する（ステップＳ２０７）。第２の鍵レジスタ１１１に入力された鍵をＫ´とする。一時レジスタ１１４が３２ビットの演算結果Ｉ´の全てのビットを記憶した後、一時レジスタ１１４からＩ´を出力する（ステップＳ２０８）。次に、第２の鍵レジスタ１１１からＫ´を出力する（ステップＳ２０９）。そして、第２のパラレル演算器１１２でＩ´とＫ´との論理和を演算し（ステップＳ２１０）、演算結果を出力レジスタ１１３に入力する（ステップＳ２１１）。【００８９】
図１１に示したデータ変換装置の動作は、一部の処理の順序が入れ替わってもよいし、一部の処理が他の処理と並行して実行されてもよい。また、第１の鍵レジスタと第２の鍵レジスタに入力される鍵は同一の鍵であってもよい。【００９０】
本実施の形態では、排他的論理和（ＸＯＲ）と論理和（ＯＲ）との組み合わせの例を示したが、論理積（ＡＮＤ）など他の演算を含む組み合わせでも同様に構成できる。【００９１】
このような実装を行うことで、演算ごとに異なる処理時間のずれを一度レジスタで受けることになり、タイミングが一定化する。これによりタイミングの遅延が後段に伝播することを防ぐ効果がある。タイミングが一定化すれば、演算に伴う過渡状態（最終結果が確定するまでに発生する不安定な演算結果の状態）を減らすことができ、ひいては、電力を小さくする効果がある。このような効果は、電力解析を困難にする。【００９２】
本実施の形態では、３２ビットのデータを用いたが、６４ビットのデータなど、他のビット数のデータを用いてもよい。【００９３】
以上のように、本実施の形態では、データ変換装置において、前後連結した演算が可能な処理を、前の演算と後の演算との間に記憶部を設けて分離した演算で処理することにより、単位時間当たりの電力消費量を前後連結した演算の場合の電力消費量に比べて小さくし、電力解析を困難にすることが可能となる。【００９４】
また、データ変換装置において、記憶部が前の演算の結果に含まれる全てのビットを記憶した後に、後の演算に全てのビットを与えることにより、記憶部の出力タイミングを調整することが可能となる。【００９５】
本実施の形態では、データ変換装置を用いるデータ変換方法において、前後連結した演算が可能な処理を、前の演算と後の演算との間に記憶部を設けて分離した演算で処理することにより、単位時間当たりの電力消費量を前後連結した演算の場合の電力消費量に比べて小さく、電力解析を困難にすることが可能となる。【００９６】
また、データ変換方法において、記憶部に前の演算の結果に含まれる全てのビットを記憶した後に、後の演算に当該全てのビットを与えることにより、記憶部の出力タイミングを調整することが可能となる。【００９７】
以上のように、本実施の形態に係る装置は、
暗号アルゴリズムを実装して、入力データを暗号化、復号化する装置において、
暗号アルゴリズムの一部が、基本演算が連続して行われる場合、
連続して行われる基本演算の間に、演算結果を保持する機構を設け実装する暗号アルゴリズムが実装された装置である。【００９８】
実施の形態３．
実施の形態１の実装方式において、実施の形態２で説明した図１０の一時レジスタ１１４のような臨時のレジスタを設けることができる。【００９９】
図１２は、本実施の形態に係るデータ変換装置の構成の一例を示す図である。【０１００】
図１２において、入力データは３２ビットの入力シフトレジスタ（第１の記憶部）１１５に、鍵は３２ビットの第１の鍵シフトレジスタ（第２の記憶部）１１６と第２の鍵シフトレジスタ（第２の記憶部）１１８に記憶される。第１のシリアル演算器（演算部）１１７は、鍵と入力データの各々１ビットを排他的論理和演算し、第２のシリアル演算器（演算部）１１９は、鍵と入力データの各々１ビットを論理和演算する。第１のセレクタ（選択部）１２０は、第１のシリアル演算器１１７と第２のシリアル演算器１１９とのいずれかを選択し、第２のセレクタ（選択部）１２１は、第１の鍵シフトレジスタ１１６と第２の鍵シフトレジスタ１１８とのいずれかを選択する。このように、本実施の形態では、排他的論理和と論理和の出力をタイミングで切替えて、入力データ用の３２ビットのシフトレジスタに入力する。鍵は、正と副のシフトレジスタを用意して、タイミングで切替えて、鍵の正のシフトレジスタに入力する。【０１０１】
図１３は、本実施の形態に係るデータ変換装置の動作の一例を示すフロー図である。図中、「＋」は排他的論理和演算を、「｜」は論理和演算を示す。【０１０２】
本実施の形態に係るデータ変換装置は、まず、入力シフトレジスタ１１５に３２ビットのデータを入力し（ステップＳ３０１）、第１の鍵シフトレジスタ１１６に３２ビットの鍵を入力する（ステップＳ３０２）。次に、第１のセレクタ１２０でシリアル演算器を選択する（ステップＳ３０３）。ここでは、第１のシリアル演算器１１７が選択されたこととする。そして、第２のセレクタ１２１で鍵シフトレジスタを選択する（ステップＳ３０４）。ここでは、第１の鍵シフトレジスタ１１６が選択されたこととする。【０１０３】
次に、入力シフトレジスタ１１５を１ビット右にシフトし（ステップＳ３０５）、入力シフトレジスタ１１５から１ビット出力する（ステップＳ３０６）。入力シフトレジスタ１１５から出力されたビットをｉとする。次に、第１の鍵シフトレジスタ１１６を１ビット右にシフトし（ステップＳ３０７）、第１の鍵シフトレジスタ１１６から１ビット出力する（ステップＳ３０８）。第１の鍵シフトレジスタ１１６から出力されたビットをｋとする。そして、ステップＳ３０３で選択された第１のシリアル演算器１１７でｉとｋとの排他的論理和を演算し（ステップＳ３０９）、演算結果を入力シフトレジスタ１１５に入力する（ステップＳ３１０）。ステップＳ３０４で第１の鍵シフトレジスタ１１６が選択されているため、第１の鍵シフトレジスタ１１６にはｋを入力する（ステップＳ３１３）。ステップＳ３０５からステップＳ３１３までを、３２ビット分繰り返す。３２ビットの排他的論理和のシリアル演算が終了すると、ステップＳ３０３に戻る。【０１０４】
次に、再度、第１のセレクタ１２０でシリアル演算器を選択する（ステップＳ３０３）。ここでは、第２のシリアル演算器１１９が選択されたこととする。そして、第２のセレクタ１２１で鍵シフトレジスタを選択する（ステップＳ３０４）。ここでは、第２の鍵シフトレジスタ１１８が選択されたこととする。【０１０５】
次に、入力シフトレジスタ１１５を１ビット右にシフトし（ステップＳ３０５）、入力シフトレジスタ１１５から１ビット出力する（ステップＳ３０６）。入力シフトレジスタ１１５から出力されたビットをｉとする。次に、第１の鍵シフトレジスタ１１６を１ビット右にシフトし（ステップＳ３０７）、第１の鍵シフトレジスタ１１６から１ビット出力する（ステップＳ３０８）。第１の鍵シフトレジスタ１１６から出力されたビットをｋとする。そして、ステップＳ３０３で選択された第２のシリアル演算器１１９でｉとｋとの論理和を演算し（ステップＳ３１１）、演算結果を入力シフトレジスタ１１５に入力する（ステップＳ３１２）。ステップＳ３０４で第２の鍵シフトレジスタ１１８が選択されているため、第２の鍵シフトレジスタ１１８から１ビット出力する（ステップＳ３１４）。第２の鍵シフトレジスタ１１８から出力されたビットをｋ´とする。第１の鍵シフトレジスタ１１６にはｋ´を入力する（ステップＳ３１５）。ステップＳ３０５からステップＳ３１５までを、３２ビット分繰り返す。【０１０６】
図１３に示したデータ変換装置の動作は、一部の処理の順序が入れ替わってもよいし、一部の処理が他の処理と並行して実行されてもよい。また、図１２に示した構成を利用する場合、第１のセレクタ１２０ではシリアル演算器からの「出力」を選択するため、実際にはステップＳ３０９とステップＳ３１１とが両方実行されることになる。また、図１２に示した構成を利用する場合、ステップＳ３０４で第２のセレクタ１２１が選択した鍵シフトレジスタの保持する鍵はその直後の演算で使用されるわけではなく、まず第１の鍵シフトレジスタ１１６に入力され、次の３２ビットの演算で使用されることになる。本実施の形態と同様の効果を得るために、第２のセレクタ１２１が鍵シフトレジスタからシリアル演算器への出力を選択するようにデータ変換装置を構成してもよい。【０１０７】
本実施の形態では、３２ビットのデータを用いたが、６４ビットのデータなど、他のビット数のデータを用いてもよい。【０１０８】
以上のように、本実施の形態では、データ変換装置において、選択部が演算部による演算の種類を選択することにより、第１の記憶部と第２の記憶部とを効率よく利用することが可能となる。【０１０９】
本実施の形態では、データ変換装置を用いるデータ変換方法において、第１の記憶部から出力されたビットと第２の記憶部から出力されたビットとを演算する演算の種類を選択することにより、第１の記憶部と第２の記憶部とを効率よく利用することが可能となる。【０１１０】
実施の形態４．
図１４は、本実施の形態に係るデータ変換アルゴリズムの基本形を示す図であり、図１５は、本実施の形態に係るデータ変換装置の構成の一例を示す図である。【０１１１】
図１４及び図１５は暗号アルゴリズムの一部を示したもので、図１４のアルゴリズムが基本形となる。図１４のアルゴリズムは、ｍビット入力、ｎビット出力のテーブル処理を示す。この図において、ｍビットの入力データはｍ×ｎルックアップテーブル（ｍビット入力ｎビット出力パラレル演算器）１２２に入力され、ｎビットの出力データに変換されて一度に出力される。図中、ＬＵＴはルックアップテーブルを表す。この基本形のアルゴリズムを、本実施の形態では、図１５のアルゴリズムのように実装する。すなわち、ｍビット入力、１ビット出力のｍ×１ルックアップテーブル（ｍビット入力１ビット出力シリアル演算器）１２３をｎ個用意し、タイミングを互いに違えてｎ個のテーブル処理を行い、図示していないレジスタでその出力を保持する。【０１１２】
ｍ＝２、ｎ＝２であった場合の例を、図１６及び図１７の概念図に示す。図１６は上記の図１４に対応し、図１７は上記の図１５に対応する。【０１１３】
図１６において、ｍ×ｎルックアップテーブル１２２の入力が「００」の場合、出力は「０１」となる。同様に、入力が「０１」、「１０」、「１１」の場合、それぞれの入力に対する出力は順番に「００」、「１０」、「１１」となる。これに対して、図１７では、一方のｍ×１ルックアップテーブル１２３において、入力「００」、「０１」、「１０」、「１１」に対する出力は順番に「０」、「０」、「１」、「１」となる。そして、他方のｍ×１ルックアップテーブル１２３において、入力「００」、「０１」、「１０」、「１１」に対する出力は順番に「１」、「０」、「０」、「１」となる。このように、それぞれのｍ×１ルックアップテーブル１２３は、ｍ×ｎルックアップテーブル１２２が出力するｎビットのうちいずれかのビットを出力する。【０１１４】
図１８は、本実施の形態に係るデータ変換装置の動作の一例を示すフロー図である。【０１１５】
本実施の形態に係るデータ変換装置は、ｍ×１ルックアップテーブル１２３にｍビットのデータを入力し（ステップＳ４０１）、１ビット出力する（ステップＳ４０２）。これをｎ回繰り返して、最後に全ての出力をｎビットのレジスタなどに記憶する。【０１１６】
このような実装を行うことで、単位タイミングではｍビット入力、１ビット出力のテーブル処理がひとつだけ行われることになる。これにより、ｎビット出力の場合の各ビットのタイミングずれを防止し、タイミングを一定化する効果がある。また、１ビット出力となっているため、単位時間あたりの電力の消費を抑えることができ、特徴的な電力消費の状態を作り出す可能性が低くなるという効果がある。このような効果は、電力解析を困難にする。【０１１７】
本実施の形態では、テーブル処理をメモリで行ってもよいし、メモリを使用せずに、１ビット出力となるように構成した論理素子で行ってもよい。【０１１８】
以上のように、本実施の形態では、データ変換装置において、複数ビットのパラレル演算が可能な処理をシリアル演算で処理することにより、単位時間当たりの電力消費量をパラレル演算の場合の電力消費量に比べて小さくし、電力解析を困難にすることが可能となる。【０１１９】
また、データ変換装置において、ｍ（ｍ＞１）ビット入力ｎ（ｎ＞１）ビット出力のパラレル演算が可能な処理をｍビット入力１ビット出力のシリアル演算で処理することにより、ｎビット出力の各ビットの出力タイミングを調整することが可能となる。【０１２０】
本実施の形態では、データ変換装置を用いるデータ変換方法において、複数ビットのパラレル演算が可能な処理をシリアル演算で処理することにより、単位時間当たりの電力消費量をパラレル演算の場合の電力消費量に比べて小さくし、電力解析を困難にすることが可能となる。【０１２１】
また、データ変換方法において、ｍ（ｍ＞１）ビット入力ｎ（ｎ＞１）ビット出力のパラレル演算が可能な処理をｍビット入力１ビット出力のシリアル演算で処理することにより、ｎビット出力の各ビットの出力タイミングを調整することが可能となる。【０１２２】
以上のように、本実施の形態に係る装置は、
暗号アルゴリズムを実装して、入力データを暗号化、復号化する装置において、
暗号アルゴリズムの一部が、テーブル処理で行われる場合、
テーブルを１ビット出力の複数の小テーブルに分け、
これに係わる小テーブル処理を、タイミングを互いに違えて複数回行う実装方式により、テーブル処理が完結されるように実装する暗号アルゴリズムが実装された装置である。【０１２３】
実施の形態５．
図１９は、本実施の形態に係るデータ変換アルゴリズムの基本形を示す図であり、図２０は、本実施の形態に係るデータ変換装置の構成の一例を示す図である。【０１２４】
図１９及び図２０は暗号アルゴリズムの一部を実装する回路を示したもので、図１９のアルゴリズムが基本形となる。図１９及び図２０のような回路は、テーブル処理など論理が深くなる場合の回路である。図１９において、６ビットの入力が同時に入った場合、ＡＮＤゲート（演算部）１２５ａの入力では、２つの入力ポートへの入力のタイミングがずれる。また、ＡＮＤゲート（演算部）１２５ａの出力タイミングとＯＲゲート（演算部）１２４ｂの出力タイミングがずれる。そこで、図２０では、ＸＯＲゲート（演算部）１２６ａの各入力ポートの前にフリップフロップ（記憶部）１２７を設けて、ＸＯＲゲート（演算部）１２６ａの各入力ポートへの入力タイミングを調整する。【０１２５】
図２０に示した回路は、例えば実施の形態４で説明した図１５のｍ×１ルックアップテーブルとして用いることができる。その場合、図２０のように、ＸＯＲゲート（演算部）１２６ａの１ビットの出力を受けるフリップフロップ１２７ｃを設けてもよい。【０１２６】
また、ＡＮＤゲート１２５ａの２つの入力ポートへの入力タイミングを調整するため、図示していないフリップフロップをＡＮＤゲート１２５ａの各入力ポートの前に設けてもよい。さらに、全ての論理素子の各入力ポートの前にフリップフロップを設けてもよい。【０１２７】
このような実装を行うことで、回路素子におけるタイミングずれを防止し、タイミングを一定化する効果がある。また、タイミングが一定化しているので、演算に伴う過渡状態（最終結果が確定するまでに発生する不安定な演算結果の状態）を減らすことができ、強いては、電力を小さくする効果がある。このような効果は、電力解析を困難にする。【０１２８】
以上のように、本実施の形態では、データ変換装置において、前後連結した演算が可能な処理を、前の演算と後の演算との間に記憶部を設けて分離した演算で処理することにより、単位時間当たりの電力消費量を前後連結した演算の場合の電力消費量に比べて小さくし、電力解析を困難にすることが可能となる。【０１２９】
また、データ変換装置において、演算部が前の演算の結果を入力する複数の入力ポートを有するとともに当該複数の入力ポートの入力により後の演算を行い、記憶部が演算部の各入力ポートの前に設けられることにより、後の演算への複数の入力のタイミングを揃えることが可能となる。【０１３０】
本実施の形態では、データ変換装置を用いるデータ変換方法において、前後連結した演算が可能な処理を、前の演算と後の演算との間に記憶部を設けて分離した演算で処理することにより、単位時間当たりの電力消費量を前後連結した演算の場合の電力消費量に比べて小さく、電力解析を困難にすることが可能となる。【０１３１】
また、データ変換方法において、前の演算の結果を入力する複数の入力ポートを有する演算部を用いて当該複数の入力ポートの入力により後の演算を行い、記憶部を演算部の各入力ポートの前に設けることにより、後の演算への複数の入力のタイミングを揃えることが可能となる。【０１３２】
以上のように、本実施の形態に係る装置は、
暗号アルゴリズムを実装して、入力データを暗号化、復号化する装置において、
暗号アルゴリズムが一連の論理素子で構成される場合、
入力される信号のタイミングがずれる論理素子の出力段に出力を保持する機構を設けるとともに、
上記論理素子と同じタイミングに相当する論理素子の出力段にも出力を保持する機構を設け、さらに、
最終出力の１ビット出力を受ける保持機構を設けるように実装する暗号アルゴリズムが実装された装置である。
【図面の簡単な説明】
【０１３３】
【図１】実施の形態１から５までにおけるデータ変換装置の外観の一例を示す図。
【図２】実施の形態１から５までにおけるデータ変換装置のハードウェア構成の一例を示す図。
【図３】ＤＥＳの演算の基本となるラウンドの構造を示す図。
【図４】かき混ぜ関数（ＭＦ）の演算処理の詳細を示す図。
【図５】ラウンドの鍵の生成処理を示す図。
【図６】実施の形態１に係るデータ変換アルゴリズムの基本形を示す図。
【図７】実施の形態１に係るデータ変換装置の構成の一例を示す図。
【図８】実施の形態１に係るデータ変換装置の動作の一例を示すフロー図。
【図９】実施の形態２に係るデータ変換アルゴリズムの基本形を示す図。
【図１０】実施の形態２に係るデータ変換装置の構成の一例を示す図。
【図１１】実施の形態２に係るデータ変換装置の動作の一例を示すフロー図。
【図１２】実施の形態３に係るデータ変換装置の構成の一例を示す図。
【図１３】実施の形態３に係るデータ変換装置の動作の一例を示すフロー図。
【図１４】実施の形態４に係るデータ変換アルゴリズムの基本形を示す図。
【図１５】実施の形態４に係るデータ変換装置の構成の一例を示す図。
【図１６】実施の形態４に係るデータ変換アルゴリズムの基本形の具体例を示す図。
【図１７】実施の形態４に係るデータ変換アルゴリズムの具体例を示す図。
【図１８】実施の形態４に係るデータ変換装置の動作の一例を示すフロー図。
【図１９】実施の形態５に係るデータ変換アルゴリズムの基本形を示す図。
【図２０】実施の形態５に係るデータ変換装置の構成の一例を示す図。
【図２１】ビットごとの演算遅延の差異が電力消費量に影響を及ぼす例を示す図。
【符号の説明】
【０１３４】
１００  データ変換装置、１０１，１０８  入力レジスタ、１０２  鍵レジスタ、１０３  パラレル演算器、１０４，１１３  出力レジスタ、１０５，１１５  入力シフトレジスタ、１０６  鍵シフトレジスタ、１０７  シリアル演算器、１０９  第１の鍵レジスタ、１１０  第１のパラレル演算器、１１１  第２の鍵レジスタ、１１２  第２のパラレル演算器、１１４  一時レジスタ、１１６  第１の鍵シフトレジスタ、１１７  第１のシリアル演算器、１１８  第２の鍵シフトレジスタ、１１９  第２のシリアル演算器、１２０  第１のセレクタ、１２１  第２のセレクタ、１２２  ｍ×ｎルックアップテーブル、１２３  ｍ×１ルックアップテーブル、１２４  ＯＲゲート、１２５  ＡＮＤゲート、１２６  ＸＯＲゲート、１２７  フリップフロップ、２０１  かき混ぜ関数、２０２，２０３  排他的論理和演算、２０４  Ｓ−Ｂｏｘ、９０１  ＣＲＴ表示装置、９０２  Ｋ／Ｂ、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話機、９３２  ＦＡＸ機、９４０  インターネット、９４１  ゲートウェイ、９４２  ＬＡＮ。
【図１】
0004700051.tif 000002
【図２】
0004700051.tif 000003
【図３】
0004700051.tif 000004
【図４】
0004700051.tif 000005
【図５】
0004700051.tif 000006
【図６】
0004700051.tif 000007
【図７】
0004700051.tif 000008
【図８】
0004700051.tif 000009
【図９】
0004700051.tif 000010
【図１０】
0004700051.tif 000011
【図１１】
0004700051.tif 000012
【図１２】
0004700051.tif 000013
【図１３】
0004700051.tif 000014
【図１４】
0004700051.tif 000015
【図１５】
0004700051.tif 000016
【図１６】
0004700051.tif 000017
【図１７】
0004700051.tif 000018
【図１８】
0004700051.tif 000019
【図１９】
0004700051.tif 000020
【図２０】
0004700051.tif 000021
【図２１】
0004700051.tif 000022