秘密鍵を記憶する秘密鍵記憶部と、前記秘密鍵と同一のハミングウエイトを有する複数のダミー鍵を生成するダミー鍵生成部と、前記秘密鍵と前記複数のダミー鍵とを用いて暗号処理を行う暗号処理部と、を具備する暗号処理装置。前記ダミー鍵生成部は、前記秘密鍵記憶部から読み出した秘密鍵を構成するデータの順序を入れ替えることで前記秘密鍵と同一のハミングウエイトを有する複数のダミー鍵を生成する暗号鍵生成部と、前記秘密鍵と前記複数のダミー鍵とを記憶する暗号鍵記憶部と、前記暗号鍵記憶部から前記秘密鍵と前記複数のダミー鍵とを所定の順番で選択する暗号鍵選択部と、を備え、前記暗号処理部は、前記暗号鍵選択部で前記所定の順番で選択される前記秘密鍵と前記複数のダミー鍵とを用いて暗号処理を行う、請求項1に記載の暗号処理装置。前記ダミー鍵生成部は、前記秘密鍵にマスクをかけてマスク済み秘密鍵を取得するマスク処理部と、前記マスク済み秘密鍵と同一のハミングウエイトを有する複数のマスク済みダミー鍵を生成するマスク済みダミー鍵生成部と、前記マスク済み秘密鍵と前記複数のマスク済みダミー鍵とを記憶する暗号鍵記憶部と、前記マスク済み秘密鍵と前記複数のマスク済みダミー鍵とのマスクを解除して秘密鍵と複数のダミー鍵とを取得するマスク解除部と、を備え、前記暗号処理部は、マスク解除後の前記秘密鍵と前記複数のダミー鍵とを用いて暗号処理を行う、請求項1に記載の暗号処理装置。第1の乱数を発生させる乱数発生部を更に具備し、前記マスク処理部は、前記秘密鍵と前記第1の乱数との排他的論理和をとることで前記マスク済み秘密鍵を取得し、前記マスク解除部は、前記マスク済み秘密鍵と前記第1の乱数との排他的論理和をとることで前記秘密鍵を取得し、前記複数のマスク済みダミー鍵と前記第1の乱数との排他的論理和を取ることで前記複数のダミー鍵を取得する、請求項3に記載の暗号処理装置。前記乱数発生部は、第2の乱数を発生させ、前記ダミー鍵生成部は、前記マスク済み秘密鍵を暗号鍵記憶部の前記第2の乱数が示す位置に格納するマスク済み秘密鍵格納部を更に備える、請求項3又は4に記載の暗号処理装置。前記乱数発生部は、第3の乱数を発生させ、前記ダミー鍵生成部は、前記暗号鍵記憶部の前記第3の乱数が示す位置から前記マスク済み秘密鍵と前記複数のマスク済みダミー鍵とを所定の順番で選択する暗号鍵選択部を更に備える、請求項5に記載の暗号処理装置。前記暗号処理部における暗号処理結果を記憶する暗号処理結果記憶部と、前記暗号処理部における前記暗号処理結果を前記暗号処理結果記憶部の前記第3の乱数が示す位置から前記所定の順番で格納する暗号処理結果格納部と、を更に具備する、請求項6に記載の暗号処理装置。前記暗号処理結果記憶部に記憶されている複数の暗号処理結果の中から前記第2の乱数が示す位置に記憶されている前記暗号処理結果を正解結果として抽出する抽出部を更に具備する、請求項7に記載の暗号処理装置。前記暗号処理部に入力される前記秘密鍵又は前記複数のダミー鍵のビットを反転させる第1反転部と、前記暗号処理部に入力される暗号処理対象データのビットを反転させる第2反転部と、を更に具備する、請求項3乃至8のいずれか1項に記載の暗号処理装置。前記乱数発生部は、第4の乱数を発生させ、前記第1反転部及び前記第2反転部は、前記第4の乱数に基づいてビットを反転させるかどうかを決定する、請求項9に記載の暗号処理装置。前記マスク済みダミー鍵生成部は、前記マスク済み秘密鍵を構成するデータの順序を入れ替えることで前記マスク済み秘密鍵と同一のハミングウエイトを有する前記マスク済みダミー鍵を生成することを特徴とする、請求項3乃至10のいずれか1項に記載の暗号処理装置。前記マスク済みダミー鍵生成部は、前記マスク済み秘密鍵のバイト順序をFisherYatesシャッフルアルゴリズムに従って、入れ替えることで前記マスク済みダミー鍵を生成することを特徴とする、請求項11に記載の暗号処理装置。前記マスク済みダミー鍵生成部は、前記マスク済み秘密鍵のバイト順序を前記FisherYatesシャッフルアルゴリズムに従って入れ替えた後に所定のマスクをかけることで前記マスク済みダミー鍵を生成することを特徴とする、請求項12に記載の暗号処理装置。前記請求項1乃至13のいずれか1項に記載の暗号処理装置を内部に搭載したICカード。前記請求項1乃至13のいずれか1項に記載の暗号処理装置を内部に搭載した移動体通信装置。秘密鍵が記憶された不揮発性メモリから前記秘密鍵を読み出し、前記読み出した秘密鍵と同一のハミングウエイトを有する複数のダミー鍵を生成し、前記秘密鍵と前記複数のダミー鍵とを用いて暗号処理を行う、暗号処理方法。秘密鍵が記憶された不揮発性メモリにアクセスして前記秘密鍵を読み出す読出工程と、前記読み出した秘密鍵と同一のハミングウエイトを有する複数のダミー鍵を生成する生成工程と、前記秘密鍵と前記複数のダミー鍵とを用いて暗号コプロセッサに暗号処理を行わせる制御信号を出力する制御信号出力工程と、を情報処理装置に実行させるプログラム。ダミー演算による対策手法は、ダミーの演算が本当の演算と区別可能であった場合、ダミー演算の対策効果が減少する。例えば、演算処理中の消費電力の違いを検出することでハミングウエイトの違いを特定し、処理中の暗号演算がダミー演算であるか本当の演算であるかを判別することができる場合がある。この場合、ダミー演算の測定結果を解析データから取り除いたり、真の演算処理の波形のみを選択的に取り出したりすることが可能となるため、秘密情報に依存する成分とノイズ成分の比率を変えることができる。こうした前処理は、バイアスアタックと呼ばれる。上記特許文献1~3の暗号化技術では、このようなバイアスアタックに対する耐性が弱く、バイアスアタックとDPADifferentialPowerAnalysis手法を組み合わせて解析された場合に耐タンパ性を維持することが困難であった。ここで、上記特許文献4の暗号化技術は、正規演算とダミー演算とを含めてすべてのリークパターンが現れるようにすることで、リークを平均化した際の平均値が一定となるように構成し、バイアスアタックに対する耐性を持たせている。しかしながら、当該特許文献4の暗号化技術では、処理される際のビット長で定義される全ビットパターンをマスクパターンとして生成した上で処理する必要がある。この方法では短いビットパターンで表現可能な値の種類だけ演算処理を行う必要が生じる。広く用いられているDES暗号での場合は、1ブロックが6ビットであるため2^6=64通りの演算処理を行う必要があるがそのうちの1つの処理だけが真の演算処理である。すなわち、このような構成でダミー演算を混ぜて行う場合、処理時間が常に64倍と膨れ上がり、スループットが著しく低下するという課題が存在していた。本発明の暗号処理装置は、秘密鍵を記憶する秘密鍵記憶手段と、前記秘密鍵と同一のハミングウエイトを有する複数のダミー鍵を生成するダミー鍵生成手段と、前記秘密鍵と前記複数のダミー鍵とを用いて暗号処理を行う暗号処理手段と、を具備する。当該構成により、正規演算とダミー演算との間でサイドチャネルリークが類似した波形を示すように暗号処理を行うことができる。また、本発明の暗号処理方法は、秘密鍵が記憶された不揮発性メモリから前記秘密鍵を読み出し、前記読み出した秘密鍵と同一のハミングウエイトを有する複数のダミー鍵を生成し、前記秘密鍵と前記複数のダミー鍵とを用いて暗号処理を行う。当該構成により、正規演算とダミー演算との間でサイドチャネルリークが類似した波形を示すように暗号処理を行うことができる。また、本発明のプログラムは、秘密鍵が記憶された不揮発性メモリにアクセスして前記秘密鍵を読み出す読出工程と、前記読み出した秘密鍵と同一のハミングウエイトを有する複数のダミー鍵を生成する生成工程と、前記秘密鍵と前記複数のダミー鍵とを用いて暗号コプロセッサに暗号処理を行わせる制御信号を出力する制御信号出力工程と、を情報処理装置に実行させる。当該構成により、正規演算とダミー演算との間でサイドチャネルリークが類似した波形を示すように暗号処理を行うことができる。本発明によれば、ハミングウエイトが同一である複数の暗号鍵を用いてデータを暗号化するため、消費電力の違いを監視しても正規演算とダミー演算とを区別することができず、高い耐タンパ性を維持することができる。本発明の実施の形態について以下に図面を参照して説明する。以下の説明は、本発明の好適な実施の形態を示すものであって、本発明の範囲が以下の実施の形態に限定されるものではない。以下の説明において、同一の符号が付されたものは実質的に同様の内容を示している。実施の形態1以下、図面を参照して本発明の実施の形態1について説明する。図1は、実施の形態1に係る暗号処理装置100の構成を示すブロック図である。暗号処理装置100は、秘密鍵記憶部110と、ダミー鍵生成部120と、暗号処理部130と、を備える。秘密鍵記憶部110は、EEPROMElectricallyErasableProgrammableReadOnlyMemoryなどの不揮発メモリであり、秘密鍵Kを記憶する。ダミー鍵生成部120は、ダミー鍵Dを生成する。具体的には、ダミー鍵生成部120は、秘密鍵記憶部110に記憶されている秘密鍵Kと同一のバイト長であり、かつ、同一のハミングウエイトを有する複数のダミー鍵Dを生成する。ここで、ダミー鍵Dは、後述の暗号処理部130におけるダミー演算で用いられる鍵である。また、同一バイト長の複数の鍵に関してハミングウエイトが同一であるとは、複数の鍵をそれぞれ構成するビットの1の数が等しいことを指す。暗号処理部130は、入力したデータに対して秘密鍵Kと複数のダミー鍵Dを所定の順序で用いて暗号化する。すなわち、暗号処理部130は、各データに対して、複数のダミー鍵Dを用いたダミー演算と秘密鍵Kを用いた正規演算とを混ぜて行う。なお、暗号処理部130は、セキュリティ強化の観点から個別の処理装置である暗号コプロセッサなどで構成することが可能である。秘密鍵Kによる正規演算で求められた正解結果とダミー鍵Dによるダミー演算で求められたダミー結果は、別途設けられた暗号処理結果記憶部に格納された後、正解結果が取り出される。このように本実施の形態1に係る暗号処理装置は、秘密鍵を格納する秘密鍵格納手段と、秘密鍵と同一のハミングウエイトを有する複数のダミー鍵を生成するダミー鍵生成手段と、前記秘密鍵及び前記複数のダミー鍵を用いてデータを暗号化する暗号化手段と、を具備する。当該構成によれば、ダミー演算に用いられるダミー鍵Dは秘密鍵Kと同一のハミングウエイトを有しているため、消費電力の違いを監視しても正規演算とダミー演算とを区別することができず、高い耐タンパ性を維持することができる。実施の形態2本発明の実施の形態2に係る暗号処理装置200は、秘密鍵Kとダミー鍵Dを同一のワークエリアに格納した上で、所定の順番で取り出して暗号化を行うことを特徴とする。以下、図面を参照して本発明の実施の形態2について説明する。図2は、実施の形態2に係る暗号処理装置200の構成を示すブロック図である。暗号処理装置200は、秘密鍵記憶部110と、暗号鍵生成部210と、暗号鍵記憶部220と、暗号鍵選択部230と、暗号処理部130と、を備える。実施の形態1との比較において、暗号鍵記憶部220、暗号鍵生成部210、暗号鍵選択部230、の各機能を纏めたものがダミー鍵生成部120に該当する。秘密鍵記憶部110は、正規の鍵である秘密鍵Kを記憶する。暗号鍵生成部210は、秘密鍵記憶部110より秘密鍵Kを読み出して暗号鍵記憶部220に一つの暗号鍵として格納する。以下、当該格納された秘密鍵Kを第1暗号鍵と称することがある。また、暗号鍵生成部210は、当該秘密鍵である第1暗号鍵と略同一のハミングウエイトを有する複数の暗号鍵を生成し、暗号鍵記憶部220に格納する。当該第1暗号鍵に基づいて暗号鍵生成部210で生成される複数の暗号鍵を総称して第2暗号鍵と呼ぶことがある。本実施の形態2では、秘密鍵記憶部110より読み出される秘密鍵Kがそのまま第1暗号鍵として暗号鍵記憶部220に記憶されるため、第2暗号鍵として暗号鍵記憶部220に記憶される複数の暗号鍵は複数のダミー鍵Dとなる。暗号鍵記憶部220は、暗号鍵を記憶する。ここで言う暗号鍵には、上記秘密鍵Kや当該秘密鍵Kと略同一のハミングウエイトを有するダミー鍵Dの他、秘密鍵Kが所定のマスクでマスキングされたマスク済み秘密鍵Kmや、当該マスク済み秘密鍵と同一のハミングウエイトを有するマスク済みダミー鍵Dmを含む鍵の総称である。暗号鍵記憶部220は、具体的にはRAMRandomAccessMemory内に設けられた暗号鍵記憶用ワークエリアであり、当該ワークエリアに複数の暗号鍵が外部より判別困難な状態で記憶されている。本実施の形態2では、暗号鍵記憶部220には、秘密鍵記憶部110より読み出される秘密鍵K及び後述する暗号鍵生成部210で生成される複数のダミー鍵Dが暗号鍵として記憶される。暗号鍵選択部230は、暗号鍵記憶部220に記憶されている第1暗号鍵及び第2暗号鍵をそれぞれ秘密鍵K及び複数のダミー鍵Dとして所定の順番で選択して暗号処理部130へ送る。ここで、暗号鍵選択部230は、暗号鍵をランダムな順番で選択して読み出しても良いし、予め決められた順番で選択して読み出しても良い。暗号処理部130は、入力したデータに対して暗号鍵選択部230により所定の順序で選択されて送られてくる暗号鍵である秘密鍵K及び複数のダミー鍵Dを用いて暗号化する。すなわち、暗号処理部130において、複数のダミー鍵を用いたダミー演算と秘密鍵を用いた正規演算との両方が各データに対して行われ、秘密鍵を用いた正規演算で得られた正解結果だけが最終的に抽出される。このように本実施の形態2に係る暗号処理装置は、第1暗号鍵と同一のハミングウエイトを有する第2暗号鍵を生成する暗号鍵生成手段と、前記第1暗号鍵と第2暗号鍵とを記憶する暗号鍵記憶手段と、を備える。ここで、第1暗号鍵は、具体的には、秘密鍵記憶手段より読み出される秘密鍵であり、第2暗号鍵は、当該秘密鍵と同一のハミングウエイトを有する複数のダミー鍵である。また、暗号処理装置は、暗号鍵記憶手段に記憶された第1暗号鍵及び第2暗号鍵をそれぞれ秘密鍵及び複数のダミー鍵として所定の順番で選択する暗号鍵選択手段と、暗号鍵選択手段で所定の順番で選択される秘密鍵及びダミー鍵を用いてデータを暗号化する暗号化手段を備える。当該構成によれば、読み出された秘密鍵と生成されたダミー鍵とがそれぞれ暗号鍵として同一のワークエリアに格納され、そこから適宜いずれかの暗号鍵が選択されてデータの暗号化が行われる。従って、外部から正規演算とダミー演算とを区別することができず、高い耐タンパ性を維持することができる。実施の形態3実施の形態2に係る暗号処理装置200では、不揮発性メモリである秘密鍵記憶部より読み出した秘密鍵Kをそのまま暗号鍵記憶部であるRAMのワークエリアに格納している。しかしながら、秘密鍵をそのままの状態でRAMに記憶することは、アタッカーの標的となる可能性があるため好ましくない。そこで、本実施の形態3に係る暗号処理装置300は、より安全な状態で秘密鍵をワークエリアに格納することを特徴とする。以下、図面を参照して本発明の実施の形態3について説明する。図3は、実施の形態3に係る暗号処理装置300の構成を示すブロック図である。暗号処理装置300は、秘密鍵記憶部110と、乱数発生部310と、マスク値記憶部320と、マスク処理部330と、暗号鍵生成部340と、暗号鍵記憶部350と、暗号鍵選択部360と、マスク解除部370と、暗号処理部130と、を備える。秘密鍵記憶部110は、正規の鍵である秘密鍵Kを記憶する。秘密鍵Kはnバイト長で、個々のバイトをK[0]~K[n-1]と表記する。例えば、シングルDESの場合は、n=8である。乱数発生部310は、乱数R1を発生する。当該乱数R1の値はマスク値記憶部320に格納される。マスク値記憶部320は、乱数発生部310で発生した乱数R1の値をマスク値として記憶する。マスク値記憶部320は、具体的には、RAMに設けられたマスク値記憶用のワークエリアである。マスク処理部330は、秘密鍵記憶部110より読み出した秘密鍵Kにマスク値記憶部320に記憶されているマスク値R1でマスキングして、マスク済み秘密鍵Kmを取得する。具体的には、図4に示すように、マスク処理部330は、読み出した秘密鍵Kを構成する各ビットと、マスク値R1を構成する各ビットとのXORを計算する排他的論理和を取ることでマスク済み秘密鍵Kmを生成する。従って、当該マスク処理においてバイト長が保たれ、マスク済み秘密鍵Kmも秘密鍵Kと同じくnバイトとなる。マスク処理部330は、生成したマスク済み秘密鍵Kmを一つの暗号鍵として暗号鍵記憶部350に格納する。具体的には、マスク処理部330は、暗号鍵記憶部350の先頭格納位置にマスク済み秘密鍵Kmを構成する各々のデータをランダムな順番で格納する。暗号鍵生成部340は、マスク済み秘密鍵Kmである第1暗号鍵と同一のハミングウエイトを有する複数の暗号鍵を生成し、暗号鍵記憶部350に格納する。後述するように当該生成される各暗号鍵は、暗号処理部130側から見るとマスクされたダミー鍵に見えるため、以下の説明では、マスク済みダミー鍵と称する事がある。また、暗号鍵生成部340が生成する複数の暗号鍵である複数のマスク済みダミー鍵Dmを総称して第2暗号鍵と呼ぶ事がある。暗号鍵記憶部350は、マスク済み秘密鍵Kmである第1暗号鍵と複数のマスク済みダミー鍵Dmである第2暗号鍵とを記憶する。暗号鍵記憶部350は、暗号鍵記憶部220と同様RAM内に設けられた暗号鍵記憶用ワークエリアであり、複数の暗号鍵が外部より判別困難な状態で記憶されている。図5は、当該暗号鍵記憶部350である暗号鍵記憶用ワークエリアに暗号鍵が記憶されている様子を示している。図5に示すように、暗号鍵記憶用ワークエリアには、1つのマスク済み秘密鍵Kmとp個のマスク済みダミー鍵Dmの合わせてp1個の暗号鍵を記憶する領域が確保されている。各暗号鍵はnバイトであるため、n×p1のバイト領域となり、各アドレスは[0][0]~[p][n-1]で指定される。暗号鍵選択部360は、暗号鍵記憶部350に所定の順番でアクセスして暗号鍵を読み出してマスク解除部370に送る。すなわち、暗号鍵記憶部350に記憶されている複数の暗号鍵を所定の順番で選択してマスク解除部370に送る。マスク解除部370は、マスク値R1を用いて暗号鍵選択部360で選択されて順番に送られてくる暗号鍵のマスクを解除して暗号処理部130にマスク解除後の鍵を送る。具体的には、マスク解除部370は、暗号鍵選択部360で選択されて順番に送られてくる暗号鍵を構成する各ビットと、マスク値記憶部320に記憶されているマスク値R1を構成する各ビットとのXORを計算することでマスクを解除する。従って、暗号鍵選択部360より第1暗号鍵であるマスク済み秘密鍵Kmが送られてきた場合は、マスク解除部370がマスクを解除することで秘密鍵Kに戻されて暗号処理部130に送られる。また、暗号鍵選択部360より第2暗号鍵であるマスク済みダミー鍵Dmが送られてきた場合は、マスク解除部370がマスクを解除することでダミー鍵Dとなって暗号処理部130に送られる。暗号処理部130は、マスク解除部370より所定の順序で送られてくる秘密鍵K及び複数のダミー鍵Dを用いて暗号化する。暗号処理部130は、秘密鍵Kによる正規演算で求められた正解結果とダミー鍵Dによるダミー演算で求められたダミー結果を暗号処理結果記憶部380に格納する。図6に、暗号処理部130の具体的構成を示す。暗号処理部130は、鍵レジスタ1310と、入力レジスタ1320と、鍵拡張回路1330と、暗号処理回路1340と、出力レジスタ1350、とを備える。暗号処理部130の外部からは、鍵レジスタ1310及び入力レジスタ1320への書き込みと、出力レジスタ1350からの読み出しが少なくとも可能で、さらに外部から暗号化処理の実行を制御できるように構成されている。鍵レジスタ1310は、マスク解除部370より送られてくる鍵を保持する。入力レジスタ1320は、暗号対象として入力されたデータの値を保持する。鍵拡張回路1330は、鍵レジスタ1310に格納された鍵をラウンド鍵に拡張する。暗号処理回路1340は、鍵拡張回路1330で拡張されたラウンド鍵を用いて入力レジスタ1302に保持されている値をDES暗号やTDES暗号で暗号化処理を行い、出力レジスタ1350に格納する。出力レジスタ1350が保持している暗号処理後のデータの値は、その後暗号処理結果記憶部380に格納される。暗号処理結果記憶部380は、暗号鍵記憶部350同様RAMに設けられた暗号処理結果記憶用ワークエリアであり、暗号処理部130で暗号化されたデータを記憶する。暗号処理結果記憶部380は、暗号鍵記憶部350に記憶された暗号鍵の数と同数の暗号処理結果を記憶するエリアが設けられている。暗号処理結果記憶部380には、一つの秘密鍵Kによる正規演算で求められた一つの正解結果とp個のダミー鍵Dによるダミー演算で求められたp個のダミー結果の両方が一旦格納される。一つの正解結果とp個のダミー結果がすべて格納された後、正解結果が暗号処理結果記憶部380より抽出される。次に、暗号鍵生成部340における暗号鍵生成方法について説明する。当該暗号鍵生成方法としては、様々な手法を採用することができるが、生成処理に要する時間、生成するマスク済みダミー鍵の数、要求される安全性、などに基づいて選択されることが好ましい。一つの暗号鍵生成方法としては、暗号鍵記憶部350に格納されたマスク済み秘密鍵Kmを構成する各バイトKm[0]~Km[n-1]のシャッフルを行うことでマスク済みダミー鍵Dmを生成する手法がある。シャッフルを行うアルゴリズムは、既存のアルゴリズムを用いることができるが、シャッフル結果に偏りがないものが好ましい。本実施の形態3では、暗号鍵生成部340は、FisherYatesshuffleアルゴリズムを使用してマスク済み秘密鍵Kmを構成する各バイトをシャッフルすることで複数のマスク済みダミー鍵Dmを生成するものとして説明する。FisherYatesShuffleアルゴリズムを図7に示す。FisherYatesShuffleアルゴリズムでは、注目する配列インデックスをiとし、iに配列終端のインデックスを代入する。配列の先頭からインデックスiまでの間から1つのインデックスを選びjとする。配列のインデックスiとインデックスjの位置の値を交換する。インデックスiから1を引いて、新たなインデックスiとし、再びインデックスjをランダムに選び中身を交換する処理に戻る。上記処理を、インデックスiの値が配列の先頭に達するまで繰り返す。シャッフルされた鍵の値は、殆どの場合は元の鍵とは異なる値となる。また、当該処理によって生成される鍵は、ハミングウエイト及びバイト長がそれぞれ保存される。当該処理をマスク済み秘密鍵Kmに施すことでマスク済みダミー鍵Dmを生成する。暗号鍵生成部340は、上記生成方法で生成した1つのマスク済みダミー鍵Dmを暗号鍵記憶部350であるRAM内の暗号鍵記憶用ワークエリアの先頭0行目に格納する。当該暗号鍵記憶用ワークエリアのh行目に格納されるマスク済みダミー鍵Dmをバイト表記でDm[h][0]~Dm[h][n-1]と表記する。暗号鍵生成部340は、マスク済み秘密鍵Kmから最初に生成して暗号鍵記憶用ワークエリア先頭に格納したDm[0][0]~Dm[0][n-1]を次行にコピーしてDm[1][0]~Dm[1][n-1]とし、同様にシャッフルを行う。暗号鍵生成部340は、シャッフル後に、Dm[1][0]~Dm[1][n-1]をDm[2][0]~Dm[2][n-1]にコピーし、同様にシャッフルを行う。このように、シャッフル後にDm[h][0]~Dm[h][n-1]を次行にコピーしてDm[h1][0]~Dm[h1][n-1]とし、同様にシャッフルするという処理を繰り返し、必要ダミー鍵数をpとしてDm[p][0]~Dm[p][n-1]が埋まるまで上記生成処理を繰り返す。暗号鍵生成部340は、必要数のマスク済みダミー鍵Dmを生成して暗号鍵記憶用ワークエリアに格納した後、当該暗号鍵記憶用ワークエリアの中から一箇所を選んでマスク済み秘密鍵Kmを格納する。次に、暗号処理装置300の動作について説明する。図8は、暗号処理装置300の全体動作を示すフローチャートである。暗号処理装置300の動作は、主にステップS101~ステップS108で示される暗号鍵生成プロセスと、ステップS109~ステップS116で示される暗号処理プロセスの2つに分けられる。第1に、乱数発生部310は、図示せぬ暗号処理制御部からの乱数発生指示に従って鍵マスク用乱数R1を生成するステップS101。生成された乱数R1は、マスク値R1として当該暗号処理制御部の制御に従ってマスク値記憶部320に格納される。次に、マスク処理部330は、暗号鍵記憶部350である暗号鍵記憶用ワークエリアの先頭に秘密鍵Kとマスク値R1とをXORExclusiveORしながら排他的論理和を計算しながらコピーすることでマスク済み秘密鍵Kmを格納するステップS102。次に、暗号鍵生成部340は、複数のマスク済みダミー鍵Dmを生成するステップS103~ステップS107。具体的には、パラメータhをh=0にセットしステップS103、暗号鍵記憶用ワークエリアのh番目ここでは0番目の鍵を上述のアルゴリズムでシャッフルし、ステップS104、hの値をインクリメントして新たなhとするステップS105。ここで、hは暗号鍵生成部340が暗号鍵生成処理を行う番号を示している。次に、暗号鍵生成部340は、現在のhの値をチェックしステップS106h<p1であれば、暗号鍵生成部340は、暗号鍵記憶用ワークエリアのh-1番目の鍵をh番目のワークエリアにコピーしてステップS104に戻るステップS107。一方、h=p1であれば、暗号鍵生成部340は、マスク処理部330が再度秘密鍵KとR1とをXORして求めたマスク済み秘密鍵Kmを、ワークエリアの所定の位置Zに、既に記憶されているマスク済みダミー鍵Dmと入れ替える形で格納するステップS108。この段階で、暗号鍵記憶用ワークエリアには、マスク済み秘密鍵Kmとマスク済み秘密鍵Dmが判別困難な状態で記憶されたことになる。次に、暗号鍵選択部360は、パラメータindexをindex=0にセットするステップS109。ここで、indexは暗号鍵記憶用ワークエリアに格納されている暗号鍵の読み出し位置を示している。暗号鍵選択部360は、暗号鍵記憶用ワークエリアの0番目の暗号鍵を読み出し、マスク解除部370が読み出された暗号鍵とR1とをXORすることでマスクを解除した鍵を暗号処理部130内の鍵レジスタ1310に格納するステップS110。次に、上記図示せぬ暗号処理制御部の制御に基づいて暗号処理部130内の入力レジスタ1320に暗号対象のデータが格納されるステップS111。そして、暗号処理部130は、当該暗号処理制御部の制御に従って暗号処理を実行するステップS112。暗号処理によって暗号処理部130の出力レジスタ1350に格納される暗号処理結果は、暗号処理結果記憶用ワークエリアの前記index番目に格納されるステップS113次に、暗号鍵選択部360は、indexの値をインクリメントしてindex=index1としステップS114、index<p1かどうかをチェックするステップS115。index<p1であれば、暗号鍵記憶用ワークエリアに格納されたすべての暗号鍵で暗号処理が行われていないため、ステップS110に戻って次の暗号鍵を用いた暗号処理に移る。一方、index=p1であれば、一つのデータに対してすべての暗号鍵を用いて暗号処理が終了して処理結果がワークエリアに格納されたことを意味するため、秘密鍵Kで暗号された正解結果が格納されているZ番目の位置より処理結果を出力するステップS116。以上のように本実施の形態3に係る暗号処理装置は、秘密鍵にマスクをかけてマスク済み秘密鍵を取得するマスク処理手段と、前記マスク済み秘密鍵と同一のハミングウエイトを有する複数のマスク済みダミー鍵を生成するマスク済みダミー鍵生成手段と、前記マスク済み秘密鍵と前記複数のマスク済みダミー鍵とを記憶する暗号鍵マスク済み鍵記憶手段と、を具備する。また、上記暗号処理装置は、暗号鍵記憶手段に記憶された前記マスク済み秘密鍵及び前記複数のマスク済みダミー鍵を所定の順番で選択する暗号選択手段と、前記暗号選択手段で選択される前記マスク済み秘密鍵及び前記複数のマスク済みダミー鍵の前記マスクを解除するマスク解除手段と、前記マスク解除手段でマスクが解除された秘密鍵及び複数のダミー鍵を用いて暗号処理を行う暗号処理手段と、を具備する。当該構成とすることで、正規演算とダミー演算でそれぞれ用いられる秘密鍵とダミー鍵はハミングウエイトが等しくなることから、鍵の値を処理する際の消費電流などに代表されるサイドチャネルリークは類似した波形となる。従って、正しい秘密鍵が使用されている正規演算と、ダミー鍵が使用されているダミー演算との区別が難しくなる。そのため、ダミー鍵を用いた処理を区別し、正しい秘密鍵の値を用いたサイドチャネル波形を選別することが難しくなり、ダミー鍵を用いた処理の波形はノイズとして働くため、サイドチャネル解析が難しくなる。なお、上記説明したように、乱数を発生させる乱数発生手段を更に備え、前記マスク済み秘密鍵生成手段や前記マスク解除手段は、前記乱数を前記マスクとして用いるとより秘匿性が向上するため好ましい。また、上記説明したように、暗号化手段で暗号化されたデータを記憶する暗号処理結果記憶手段を、更に備え、秘密鍵で暗号化された正解データと複数のダミー鍵でそれぞれ暗号化された複数のダミーデータとを記憶する構成とすると更に秘匿性を向上させることができる。また、マスク済みダミー鍵生成手段は、マスク済み秘密鍵を構成するデータの順序を入れ替えることで前記マスク済み秘密鍵と同一のハミングウエイトを有する前記マスク済みダミー鍵を生成する手法を用いることができる。具体的には、マスク済みダミー鍵生成手段は、マスク済み秘密鍵のバイト順序を入れ替えることでマスク済み秘密鍵のデータ順序をシャッフルしてマスク済みダミー鍵を生成する。当該構成によれば、マスク済み秘密鍵とマスク済みダミー鍵との間でハミングウエイトを等しくすることができる。従って、マスクが解除されたダミー鍵と秘密鍵との間でもハミングウエイトを等しくすることができる。当該マスク済みダミー鍵生成手段によれば、簡単な計算方法で高速に必要数のマスク済みダミー鍵を生成することができ、暗号処理に先だって暗号鍵を準備する上で好ましい構成とすることができる。実施の形態4実施の形態3に係る暗号処理装置300では、暗号鍵記憶部であるRAMのワークエリアの所定位置にマスク済み秘密鍵が格納される構成をとっている。しかしながら、アタッカーがRAMにレーザ光を照射する解析手法を採用した場合、RAMに格納されている複数の暗号鍵の中でどの暗号鍵がマスク済み秘密鍵かを特定できる可能性がある。当該解析手法が成功した場合、正規演算とダミー演算を判別することが可能になるため、バイアスアタックによる耐タンパ性を低下させることになる。そこで、本実施の形態4に係る暗号処理装置400は、よりセキュアな状態で秘密鍵をワークエリアに格納することを特徴とする。以下、図面を参照して本発明の実施の形態4について説明する。なお、実施の形態1~3で既に説明した部分については発明の明確化のため一部説明を省略する。図9は、実施の形態4に係る暗号処理装置400の構成を示すブロック図である。暗号処理装置400は、秘密鍵記憶部110と、暗号処理部130と、マスク処理部330と、暗号鍵記憶部350と、暗号鍵選択部360と、マスク解除部370と、暗号処理結果記憶部380と、乱数発生部410と、格納位置記憶部420と、暗号鍵生成部430と、正解結果抽出部440と、暗号処理制御部450と、を備える。乱数発生部410は、暗号処理制御部450の制御に従って乱数R1と乱数R2の2つの乱数を発生させる。乱数R1はマスク値としてマスク値記憶部320に、乱数R2は、マスク済み秘密鍵Kmの格納位置を示す値として格納位置記憶部420にそれぞれ送られる。格納位置記憶部420は、乱数発生部410で生成された乱数R2を第1暗号鍵であるマスク済み秘密鍵Kmの格納位置を示す値として記憶する。暗号鍵生成部430は、マスク済み秘密鍵Kmである第1暗号鍵と同一のハミングウエイトを有する暗号鍵であるマスク済みダミー鍵Dmを複数生成し、暗号鍵記憶部350に格納する。また、暗号鍵生成部430は、格納位置記憶部420に記憶されている値を参照し、暗号鍵記憶部350である暗号鍵記憶用ワークエリアのR2番目の位置に既に記憶されているマスク済みダミー鍵Dmと入れ替える形でマスク済み秘密鍵Kmを格納する。正解結果抽出部440は、格納位置記憶部420に記憶されている値を参照し、暗号処理結果記憶部380である暗号処理結果記憶用ワークエリアのR2番目に記憶されている処理結果を正解結果として抽出し、出力インタフェース等を介して装置外部に出力する。暗号処理制御部450は、暗号処理装置400の全体を制御する。具体的には、暗号処理制御部450は、乱数発生部410に乱数を発生させる指示を行ったり、暗号処理部130に暗号処理を開始させる指示を行ったりする。図10は、暗号処理装置400の構成を模式的に示した図である。図10の例では暗号鍵記憶用ワークエリアの3番目の位置にマスク済み秘密鍵Kmが記憶されている。すなわち、暗号処理制御部450の制御に従って、乱数発生部410は0~p1の間の値の中からR2として3の値を発生させている。当該3の値が格納位置記憶部420に記憶されるため、暗号鍵生成部430によって当該3番目の位置にマスク済み秘密鍵Kmが格納されることになる。また、当該マスク済み秘密鍵Kmが暗号鍵選択部360で読み出され、マスク解除部370でマスクが解除された秘密鍵Kmを用いて暗号処理部130で暗号化された処理データは、暗号処理結果記憶部380である暗号処理結果記憶用ワークエリアの3番目の位置に格納される。従って、正解結果抽出部440は、格納位置記憶部420に記憶された乱数R2である3の値を参照し、当該暗号処理結果記憶用ワークエリアの3番目の位置に記憶されているデータを正解結果として抽出する。次に、暗号処理装置400の動作を図11のフローチャートを用いて説明する。但し、ステップS201~S207及びステップS210~S216は、それぞれ図8のステップS101~S107、ステップS109~115と同一であるため説明を省略する。ステップS201~S207においてp1個のマスク済みダミー鍵Dmを生成した段階で、暗号処理制御部450は、乱数発生部410に乱数R2を発生させ、当該乱数R2の値を格納位置記憶部420に格納するステップS208。次に、暗号鍵生成部430は、格納位置記憶部420に格納されている値を参照し、マスク済み秘密鍵Kmを暗号鍵記憶用ワークエリアのR2番目の位置に格納するステップS209。具体的には、マスク処理部330が秘密鍵Kとマスク値R1とをXORすることで生成したマスク済み秘密鍵Kmを暗号鍵生成部430が暗号鍵記憶用ワークエリアのR2番目の位置に他のマスク済みダミー鍵Dmと同様の手順で格納する。ステップS210~ステップS216の処理によって正解結果と全てのダミー結果が暗号処理結果記憶用ワークエリアに格納された後、正解結果抽出部440が暗号処理結果記憶用ワークエリアのR2番目の位置に格納されている処理結果を抽出して処理を完了するステップS217。以上のように本実施の形態4に係る暗号処理装置において、乱数発生手段は、マスク済み秘密鍵の格納位置を示す第2の乱数を発生させる。そして、暗号処理装置は、マスク済み秘密鍵の格納位置を示す第2の乱数を記憶する格納位置記憶手段と、前記格納位置記憶手段に記憶された値を参照して前記マスク済み鍵記憶手段の前記第2の乱数が示す位置にマスク済み秘密鍵を格納するマスク済み秘密鍵格納手段と、を更に備える。当該構成とすることで、前記マスク済み鍵記憶手段に格納される暗号鍵のうち、どの位置にマスク済み秘密鍵が格納されたかの判別が困難となるため、サイドチャネル解析に対してより耐性を持たせることが可能となる。また、前記格納位置記憶手段に記憶された値を参照して暗号処理結果記憶手段の前記第2の乱数が示す位置に記憶されているデータを抽出する抽出手段を更に備えることで、適切に正解結果を取り出すことが可能となる。また、上記暗号処理制御部450は、ダミー鍵生成部120の一機能としてダミー鍵生成部120内に設けられていても良い。実施の形態5実施の形態4に係る暗号処理装置400では、暗号鍵選択部360が所定の位置ワークエリアの先頭から暗号鍵を選択して暗号処理部130に送る構成を取っている。しかしながら、暗号鍵を読み出す順番が固定されていると、アタッカーがRAMにレーザ光を照射する解析手法を採用した場合、何番目の暗号処理が正規演算であるかを推定できる可能性がある。当該解析手法が成功した場合、正規演算とダミー演算を判別することが可能になるため、バイアスアタックによる耐タンパ性を低下させることになる。そこで、本実施の形態5に係る暗号処理装置500は、より安全な状態で秘密鍵をワークエリアに格納することを特徴とする。以下、図面を参照して本発明の実施の形態5について説明する。なお、実施の形態1~4で既に説明した部分については発明の明確化のため一部説明を省略する。図12は、実施の形態5に係る暗号処理装置500の構成を示すブロック図である。暗号処理装置500は、秘密鍵記憶部110と、暗号処理部130と、マスク処理部330と、暗号鍵記憶部350と、マスク解除部370と、暗号処理結果記憶部380と、格納位置記憶部420と、暗号鍵生成部430と、正解結果抽出部440と、暗号処理制御部450と、乱数発生部510と、読み取り位置記憶部520と、暗号鍵選択部530と、暗号処理結果格納位置選択部540と、を備える。乱数発生部510は、暗号処理制御部450の制御に従って乱数R1、乱数R2に加えて新たに乱数R3の3つの乱数を発生させる。乱数R3は、暗号鍵記憶部350に記憶された暗号鍵の読み取り開始位置を示す値であり、換言すると暗号処理の開始位置を示す値である。同時に、乱数R3は、暗号処理結果記憶部380へ暗号処理結果を格納する格納開始位置を示す値でもある。乱数発生部510で生成された乱数R3は、暗号処理制御部450の制御に従って読み取り位置記憶部520に送られる。読み取り位置記憶部520は、暗号鍵記憶部350に記憶されている複数の暗号鍵の読み取り位置を示す値を記憶する。読み取り位置記憶部520には、乱数発生部510で生成された乱数R3の値が暗号鍵の読み取り開始位置を示す値として格納される。暗号鍵選択部530は、読み取り位置記憶部520に記憶されている値を参照し、暗号鍵記憶部350に記憶されている複数の暗号鍵を読み取り位置記憶部520に記憶されている乱数R3が示す位置から順番に選択してマスク解除部370に送る。暗号処理結果格納位置選択部540は、暗号処理部130で処理されて暗号処理部130内部の出力レジスタ1350に格納された処理結果を読み取り位置記憶部520に記憶されている乱数R3が示す位置から順番に選択して暗号処理結果記憶用ワークエリアに格納する。すなわち、暗号処理結果格納位置選択部540は、暗号処理部130内部の出力レジスタ1350から順次読み出す処理結果を、暗号処理結果記憶部380に乱数R3が示す位置から順番にアクセスして当該処理結果を書き込んでいく。上述のように暗号鍵選択部530と暗号処理結果格納位置選択部540は、それぞれ読み取り位置記憶部520に記憶されている同一の値を参照して暗号鍵の読み出しと暗号処理結果の格納を行う。従って、暗号処理結果格納位置選択部540は、暗号鍵記憶部350におけるマスク済み秘密鍵Kmの記憶位置に対応する暗号処理結果記憶部380の記憶位置に正解結果を格納する。図13は、暗号処理装置500の構成を模式的に示した図である。図13は、読み取り位置記憶部520に格納されたR3の値が2であり、暗号鍵選択部530によって暗号鍵記憶用ワークエリアの2番目の位置から順番に暗号鍵が取り出されて暗号処理が一巡した時点での様子を示している。図14は、暗号処理装置500の動作を示すフローチャート図である。なお、ステップS301~S309、ステップS313~S314、ステップS320は、それぞれ図11に示すステップS201~S209、ステップS212~S213、ステップS217と同一であるため説明を省略する。ステップS301~ステップS309の処理において暗号鍵の生成及び格納が完了した段階で、暗号処理制御部450は、乱数発生部510に乱数R3を発生させるステップS310。次に、暗号処理制御部450は、当該乱数R3の値を読み取り位置記憶部520に格納することで、暗号鍵選択部530における暗号鍵の読み取り位置indexを乱数R3の値にセットするステップS311。次に、暗号鍵選択部530は、読み取り位置記憶部520を参照し、indexで示される暗号鍵記憶部350の位置この段階ではR3番目より暗号鍵を選択してマスク解除部370に渡し、マスク解除部370が当該暗号鍵とR1とをXORすることでマスクを解除した鍵を暗号処理部130内の鍵レジスタ1310に格納するステップS312。暗号処理結果格納位置選択部540は、読み取り位置記憶部520に記憶されているindexが示す暗号処理結果記憶用ワークエリアの位置この段階ではR3番目を選択し、暗号処理部130で処理されて暗号処理部130内部の出力レジスタ1350に格納されている処理結果を当該位置に格納するステップS315。次に、暗号鍵選択部530は、indexの値をインクリメントしステップS316、indexの値が読み取り開始位置であったR3の値と等しいかを判定するステップS317。等しければ、暗号処理が一巡して読み取り開始位置に戻ったものとしてステップS320に移行する。一方、等しくなければ、一巡の暗号処理が未完了であるとしてステップS318に移行する。上記ステップS317の判定によりindex≠R3であった場合は、暗号鍵選択部530は、indexの値がp1と等しいかを判定するステップS318。等しければ、暗号鍵記憶用ワークエリアの最下段まで到達したとしてIndexの値を0にリセットするステップS319。一方、index≠p1であれば、ステップS312に戻り、現在のindexで指定されている記憶位置より暗号鍵を読み出して同様の処理を継続する。以上のように本実施の形態5に係る暗号処理装置において、乱数発生手段は、暗号鍵の読み取り開始位置を示す第3の乱数を発生させる。そして、暗号処理装置は、暗号鍵の読み取り位置を示す第3の乱数を記憶する読み取り位置記憶手段を更に備え、暗号鍵選択手段は、前記読み取り位置記憶手段に記憶されたR3が示す前記マスク済み鍵記憶手段の記憶位置から暗号鍵を順番に選択する。当該構成とすることで、暗号処理手段における暗号処理がダミー演算か正規演算かをサイドチャネル解析で特定することがより困難となるため、良好な秘匿性を維持することが可能となる。また、読み取り位置記憶部520の値をインクリメントする処理は、暗号鍵選択部530が行っても良いし、暗号処理制御部450が行っても良い。なお、暗号処理制御部450は、暗号鍵記憶部350に格納された暗号鍵セットを用いた暗号処理が一巡する毎に乱数発生部510に新たな乱数R3を発生させても良いし、一定期間毎に乱数R3を発生させても良い。発生頻度を高める方が秘匿性が向上する一方、処理も増大するため、想定される再度チャネル解析によって秘匿性を低下させない程度以上の頻度で読み取り開始位置であるR3を更新することが好ましい。実施の形態6本実施の形態6に係る暗号処理装置600では、同一の演算に対して2通りのリーク情報が現れるようにすることで、撹乱効果を増加させる構成を取ることを特徴とする。以下、図15~図16を参照して本発明の実施の形態6について説明する。なお、実施の形態1~5で既に説明した部分については発明の明確化のため一部説明を省略する。図15は、本実施の形態6に係る暗号処理装置600の構成を示すブロック図である。また、図16は、暗号処理装置600の構成を模式的に示した図である。暗号処理装置600は、暗号処理装置500の構成と比較して、乱数発生部610と、反転フラグ記憶部620と、第1反転回路630と、第2反転回路640と、第3反転回路650と、を更に備えることを特徴とする。乱数発生部610は、暗号処理制御部450の制御に従って乱数R1~乱数R3に加えて新たに乱数R4の4つの乱数を発生させる。乱数R4の値は、後述のように第1反転回路630及び第2反転回路640において、それぞれ入力平文及び秘密鍵の双方を反転するか否かを決める反転フラグを示している。反転フラグ記憶部620は、乱数発生部610で生成された乱数R4を、反転フラグを示す値として記憶する。第1反転回路630は、暗号処理部130の鍵入力端子に接続されている。第1反転回路630は、マスク解除部370でマスクが解除されて送られてくる秘密鍵K又はダミー鍵Dに対して、反転フラグ記憶部620に記憶されている反転フラグの値に応じた反転処理を行う。すなわち、第1反転回路630は、上記反転フラグが立っている場合は、マスク解除部370より入力した鍵のビット値を反転させて暗号処理部130内の鍵レジスタ1310に格納する。一方、反転フラグが立ってない場合は、マスク解除部370より入力した鍵をそのまま鍵レジスタ1310に格納する。第2反転回路640は、暗号処理部130のデータ入力端子に接続される。第2反転回路640は、入力平文であるデータに対して、反転フラグ記憶部620に記憶されている反転フラグの値に応じた反転処理を行う。すなわち、第2反転回路640は、上記反転フラグが立っている場合は、入力したデータのビット値を反転させて暗号処理部130内の入力レジスタ1320に格納する。一方、反転フラグが立ってない場合は、入力したデータをそのまま入力レジスタ1320に格納する。第3反転回路650は、正解結果抽出部430の出力端子に接続される。第3反転回路650は、正解結果抽出部430で抽出された正解結果に対して、反転フラグ記憶部620に記憶されている反転フラグの値に応じた反転処理を行う。すなわち、第3反転回路650は、上記反転フラグが立っている場合は、入力した正解結果のビット値を反転させた上で外部へ出力する。一方、反転フラグが立ってない場合は、入力した正解結果をそのまま外部へ出力する。図17は、暗号処理装置600の動作を示すフローチャート図である。なお、ステップS401~S311、ステップS415~S420は、それぞれ図14に示すステップS301~S311、ステップS314~S319と同一であるため説明を省略する。ステップS401~ステップS411の処理において暗号鍵の読み込み準備が完了した段階で、暗号処理制御部450は、乱数発生部610に乱数R4を発生させ、当該乱数R4の値を反転フラグ記憶部620に格納するステップS412。乱数R4は、反転を示す1又は反転を示さない0の1ビットのフラグである。マスク解除部370は、暗号鍵選択部530によって暗号鍵記憶用ワークエリアのR3番目の位置より読み出された暗号鍵とR1とをXORすることでマスクを解除した鍵に対してR4に応じた反転処理を行った後に暗号処理部130内の鍵レジスタ1310に格納するステップS413。具体的には、反転フラグ記憶部620に記憶されている反転フラグの値R4が0の場合は、第1反転回路630が、マスク解除部370より入力したマスク解除後の鍵をそのまま暗号処理部130に出力する。一方、反転フラグの値R4が1の場合は、第1反転回路630が、マスク解除部370より入力したマスク解除後の鍵のビット値を反転した上でビット反転後の鍵を暗号処理部130に出力する。次に、第2反転回路640が、処理対象のデータである入力値に対して反転フラグ記憶部620に記憶されている反転フラグの値R4の値に応じて反転処理を行った上で、入力値を暗号処理部130の入力レジスタ1320に格納するステップS414。具値的には、反転フラグ記憶部620に記憶されている反転フラグの値R4が0の場合は、第2反転回路640が、入力値をそのまま暗号処理部130に出力する。一方、反転フラグの値R4が1の場合は、第2反転回路640が、入力値のビットを反転した上でビット反転後の入力値を暗号処理部130に出力する。最後に、第3反転回路650が、正解結果抽出部430によって抽出されたデータに対して反転フラグ記憶部620に記憶されている反転フラグの値R4の値に応じて反転処理を行った上で、データを外部へ出力するステップS421。具値的には、反転フラグ記憶部620に記憶されている反転フラグの値R4が0の場合は、第3反転回路650が、入力したデータをそのまま外部に出力する。一方、反転フラグの値R4が1の場合は、第3反転回路650が、入力したデータのビット値を反転した上で反転後のデータを外部に出力する。以上のように、本実施の形態6に係る暗号処理装置は、暗号処理手段に入力される鍵のビット及びデータのビットをそれぞれ反転させる反転手段を更に備える。また、前記反転手段は、乱数発生手段で生成される第4の乱数を参照して、入力したビットを反転して出力するかどうかを決定する。当該乱数発生手段で生成される第4の乱数は、反転フラグとして反転フラグ記憶手段に格納される。乱数発生手段は、暗号処理制御手段からの制御に従って第4の乱数を改めて生成し、反転フラグ記憶手段に改めて格納することで反転フラグ記憶手段に記憶される反転フラグは初期化される。当該構成とすることで、実装されたDES暗号もしくはTDES暗号処理において、鍵と入力平文を反転させた場合、暗号化結果も反転値となることを利用し、同一の演算に対して、中間値の一部が2通りの値をとり得るように設計される。従って、同一の演算に対して2通りのリーク情報が現れるようにすることで、サイドチャネル解析に対する撹乱乱効果を増加させることができる。なお、上記説明では第3反転回路650を正解結果抽出部440の後段に設置し、抽出された正解結果のビットを反転フラグ記憶部620に記憶されている反転フラグ値に対応した反転処理を行う構成について説明したがこれに限るものではない。第3反転回路650は、暗号処理部130や暗号処理結果格納位置選択部540の後段に設置され、暗号処理結果に対して上記反転フラグ値に対応する反転処理を行った上で暗号処理結果記憶部380に暗号処理結果を格納する構成であっても良い。実施の形態7上記説明した秘密鍵マスク済み秘密鍵を含むをバイト単位でシャッフルするダミー鍵マスク済みダミー鍵を含むの生成方法では、秘密鍵の全てのバイトが同一である場合、ダミー鍵は、秘密鍵と同一のままとなる。そこで本実施の形態7に係る暗号処理装置700は、秘密鍵の全てのバイトが同一である場合においても、秘密鍵と異なるダミー鍵を生成する手法を採用した事を特徴とする。以下、図面を参照して説明する。なお、実施の形態1~6で既に説明した部分については発明の明確化のため一部説明を省略する。図18は、実施の形態7に係る暗号処理装置700の一部分について模式的に示した図である。暗号処理装置700は、暗号鍵記憶部350と、乱数発生部710と、マスクペア読み出し位置記憶部720と、マスクペア記憶部730と、マスクペア選択部740と、暗号鍵選択格納部750と、第1マスク処理部760と、第2マスク処理部770と、を、備える。なお、マスクペア選択部740、暗号鍵選択格納部750、第1マスク処理部760、第2マスク処理部770、はそれぞれ暗号鍵生成部の一部分を構成し、上記説明したFisherYatesシャッフルアルゴリズムによるマスク済みダミー鍵生成機能に追加して設けられた機能ブロックである。乱数発生部710は、乱数R1~乱数R4に加えて新たに乱数R5を発生させる。乱数R5の値は、マスクペアをランダムに選択するために使用される。マスクペア読み出し位置記憶部720は、乱数発生部710で生成された乱数R5をマスクペアの読み出し位置を示す値として記憶する。マスクペア記憶部730は、マスク値テーブル731を記憶する。マスク値テーブルには複数のマスクペアが記憶される。図18の例では4組のマスクペアが記憶されている。ここで、マスク値テーブルに格納されている値は、4つのマスク1および4つのマスク2の間で、ハミングウエイトが等しい。それぞれのマスク値のペアは、まったくビットを反転しないペア、半分のビットを反転させるペアで、反転するビット位置が異なるペアが2種類、すべてのビットが反転するペアが1種類で構成されている。こうした条件を満たすペアは、図18に示した値以外にも存在し、別の値を使ってもよい。マスクペア選択部740は、マスクペア読み出し位置記憶部720に記憶されている値R5が示すマスクペア記憶部730の位置からマスク1組を読み出してそれぞれ第1マスク処理部760及び第2マスク処理部770に送る。暗号鍵選択格納部750は、内部にカウンタ751を有し、暗号鍵記憶部350に記憶されている複数の暗号鍵であるマスク済みダミー鍵を選択して読み出して第1マスク処理部760に送る。また、第2マスク処理部770で処理されたマスク済みダミー鍵を、暗号鍵記憶部350の同一位置に再格納する。第1マスク処理部760は、マスクペア選択部740より選択されたマスクペアのうち、片方のマスク1を使用して、暗号鍵記憶部350より読み出した暗号鍵であるマスク済みダミー鍵に第1のマスク処理を行う。同様に、第2マスク処理部770は、マスクペア選択部740より選択されたマスクペアのうち、もう片方のマスク2を使用して、第1マスク処理部760で第1のマスク処理が行われたマスク済みダミー鍵に対して第2のマスク処理を行い、暗号鍵選択格納部750に送る。図19は、暗号処理装置700の動作を示すフローチャートである。なお、ステップS501~S507及びステップS517~S519は、それぞれ、図8のステップS101~S107及びステップS108~S116と等しいため説明を省略する。なお、ステップS109~S115の各処理は暗号処理としてステップS518に纏めて説明している。ステップS501~S507の処理により暗号鍵記憶部350に必要数のマスク済みダミー鍵が格納されると、暗号鍵選択格納部750は、内部のカウンタ751を0にセットするステップS508。次に、暗号鍵選択格納部750は、カウンタ751に示される暗号鍵記憶部350の位置に記憶されている暗号鍵であるマスク済みダミー鍵を読み出して第1マスク処理部760に送るステップS509。次に、乱数発生部710は、暗号処理制御部からの制御に従って乱数R5を生成するステップS510。生成された乱数R5は、暗号処理制御部の制御に従ってマスクペア読み出し位置記憶部720に格納される。次に、マスクペア選択部740は、マスクペア記憶部730に記憶されているマスクテーブル731の中から、マスクペア読み出し位置記憶部720に記憶されている乱数R5が示すエントリ位置のマスクペアを選択して読み出すステップS511。マスクペア選択部740は、読み出したマスクペアのうち、片方のマスクを第1マスク処理部760へ、もう片方のマスクを第2マスク処理部770に送る。第1マスク処理部760は、暗号鍵選択格納部750より送られてきた暗号鍵であるマスク済みダミー鍵に対して、マスクペア選択部740より送られてきたマスク1を用いてXORを計算することでマスク処理を行うステップS512。第1マスク処理後のマスク済みダミー鍵は第2マスク処理部770に送られる。第2マスク処理部770は、第1マスク処理部760より送られてきた暗号鍵であるマスク済みダミー鍵に対して、マスクペア選択部740より送られてきたマスク2を用いてXORを計算することでマスク処理を行うステップS513。第2マスク処理後のマスク済みダミー鍵は暗号鍵選択格納部750に送られる。暗号鍵選択格納部750は、第1、第2マスク処理部でそれぞれマスク処理が行われたマスク済みダミー鍵をカウンタ751が示す位置に再度格納するステップS514。次に、暗号鍵選択格納部750は、カウンタ751の値をインクリメントしステップS515、カウンタ751の値jがj<p1かを判定するステップS516。判定の結果、j<p1であれば、暗号鍵記憶部220に記憶されている全ての暗号鍵について第1、第2のマスク処理が完了していないものとして、ステップS509に戻る。一方、j=p1であれば、ステップS517に進む。以上のように、本実施の形態7に係る暗号処理装置において、暗号鍵生成部は、第1暗号鍵であるマスク済み秘密鍵をシャッフルした後、所定のマスクペアを用いてマスク処理を行うことで第2暗号鍵であるマスク済みダミー鍵を生成する。従って、秘密鍵のバイトが全て同一であっても、秘密鍵とは異なるダミー鍵を生成することが可能になる。以上各実施の形態で説明したように、本発明によれば、ハミングウエイトが等しい複数のダミー鍵を生成して正規演算とダミー演算とを混ぜて行う。従って、アタッカーがサイドチャネル解析を行っても正規演算とダミー演算とを判別することが困難となり、高いセキュリティを維持することが可能となる。また、本発明によれば、暗号処理のために用意された暗号鍵とダミー鍵とを用いて入力値平文データが暗号処理されて格納される。そして、本発明の処理方法を採用することで、暗号鍵に基づく暗号化処理とダミー鍵を用いた暗号化処理とが同じように実行され、かつ、どの順序で秘密鍵を用いた処理が実行されているかを判別することが困難となる。従って、消費電力をモニタリングしたとしても、秘密鍵か否かを見出すことができないため、バイアスアタックに対して耐性を持たせることが可能となる。なお、上記説明した各部の機能はハードウェアによって実現されていても良いし、ハードウェアとソフトウェアの結合のより実現されていても良い。すなわち、上記各部の機能は、CPUCentralProcessingUnitに所定のプログラムを実行させることで実現されていても良い。このような場合の暗号処理装置10の構成の一例を図20に示す。暗号処理装置10では、プログラムを実効するCPU11、生成した暗号鍵や処理結果等を記憶するRAM12、秘密鍵を記憶する不揮発性メモリ13、暗号処理を行う暗号コプロセッサ14、乱数生成器15、がバス16を介して接続される構成を取る。CPU11は、所定のプログラムを実行することで、上述した暗号処理制御部、暗号鍵生成部、暗号鍵選択部、マスク処理部、マスク解除部、正解結果抽出部、暗号処理結果格納位置選択部、マスクペア選択部、暗号鍵選択格納部、第1マスク処理部、第2マスク処理部、等の各種機能を実現する。RAM12は、上述した暗号鍵記憶部、暗号処理結果記憶部、マスク値記憶部、格納位置記憶部、暗号鍵読み出し位置記憶部、マスクペア読み出し位置記憶部、マスクペア記憶部等に対応する。また、不揮発性メモリ13は、秘密鍵記憶部に対応し、暗号コプロセッサ14は、暗号処理部に対応し、乱数生成器15は乱数発生部にそれぞれ対応する。CPU11とプログラムの結合で実現される暗号鍵生成部は、所定のプログラムを実行して不揮発性メモリ13へアクセスし、秘密鍵を読み出してRAM12に格納する。また、CPU11とプログラムの結合で実現される暗号処理制御部は、暗号コプロセッサ13に暗号処理を実行させる制御信号を、乱数発生器14に乱数を発生させる制御信号を出力する。このように実現されていても良い。また、上記各部間のデータ転送において、多倍長のデータを移動させる場合には、個々のバイトやワードの転送順序はランダムに行うことが望ましい。当該制御は、暗号処理制御部によるデータ転送制御によって実現できる。また、上述したプログラムは、コンピュータシステムがアクセス可能な様々な種類の記憶媒体に格納することが可能である。また、このプログラムは、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、CD-ROM、DVD、ROMカートリッジ、バッテリバックアップ付きRAMメモリカートリッジ、フラッシュメモリカートリッジ、不揮発性RAMカートリッジ等が含まれる。また、通信媒体には、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体等が含まれ、インターネットも含まれる。また、上記暗号処理装置は、ICカードに組み込まれて暗号処理機能付きICカードとして実現されても良いし、基地局と無線通信を行うことでデータの送受信を行う携帯電話等の携帯端末に組み込まれて暗号処理機能付き移動体通信装置として実現されていても良い。その他、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本発明は、秘密鍵が記憶された不揮発性メモリから前記秘密鍵を読み出し、前記読み出した秘密鍵と同一のハミングウエイトを有する複数のダミー鍵を生成し、前記秘密鍵と前記複数のダミー鍵とを用いて暗号処理を行う、暗号処理方法とすることも可能である。また、秘密鍵が記憶された不揮発性メモリにアクセスして前記秘密鍵を読み出す読出工程と、前記読み出した秘密鍵と同一のハミングウエイトを有する複数のダミー鍵を生成する生成工程と、前記秘密鍵と前記複数のダミー鍵とを用いて暗号コプロセッサに暗号処理を行わせる制御信号を出力する制御信号出力工程と、を情報処理装置CPUに実行させるプログラムとすることも可能である。