説明

暗号方法、暗号装置および暗号プログラム

【課題】サイドチャネル攻撃に対して高い耐性を有する暗号装置を提供する。
【解決手段】暗号装置は、秘密データを記憶しているメモリと暗号処理部とを有する。暗号処理部は、第1および第2処理データを生成する演算器と、秘密データの値d[j]を設定データの値Dsと比較する比較器41と、当該比較結果に対応した値の判定子cを生成する判定器42と、第1判定子cにビット毎の論理否定演算を施して判定子<c>を生成する論理否定演算器43と、第1処理データと判定子cとにビット毎の論理積演算を施して第1演算データを生成する論理積演算器44と、第2処理データと判定子<c>とにビット毎の論理積演算を施して第2演算データを生成する論理積演算器45と、第1演算データと第2演算データとにビット毎の論理和演算を施す論理和演算器46とを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号処理技術に関する。
【背景技術】
【0002】
インターネットなどのデジタル通信網上での電子商取引や電子申請のセキュリティを確保するために暗号技術は必須の技術である。この種の暗号技術としては、たとえば、RSA暗号や楕円曲線暗号などの公開鍵暗号方式(public key cryptosystem)や、ストリーム暗号などの共通鍵暗号方式(symmetric key cryptosystem)が知られている。公開鍵暗号方式や共通鍵暗号方式では、平文データ系列の暗号化あるいは暗号文データ系列の復号に必要な秘密鍵は公開されず、通常、暗号装置に組み込まれたメモリに記録されている。
【0003】
物理的あるいは論理的に暗号モジュール内部の秘密情報を読み取ろうとする攻撃に対する耐性は「耐タンパ性(Tamper Proofness)」と呼ばれている。スマートカードは、当該スマートカードの半導体チップに組み込まれたメモリに秘密鍵が記録されるため、高い耐タンパ性を持つといわれていた。しかしながら、暗号処理または復号処理中の消費電力や実行時間などのサイドチャネル情報を測定し、当該測定結果を解析して秘密鍵を得る攻撃法(以下、「サイドチャネル攻撃」という。)が多数提案されている。このサイドチャネル攻撃を用いれば、半導体チップ内のメモリに記録された秘密鍵であってもこれを読み出すことができるといわれている。たとえば、単純電力解析(SPA:Simple Power Analysis)や差分電力解析(DPA:Differential Power Analysis)によるサイドチャネル攻撃を用いれば、暗号装置の消費電力を示す信号波形の測定結果を解析することにより秘密鍵などの秘密データが推定され得る。サイドチャネル攻撃に関する従来技術は、たとえば、特許文献1(特開2001−268072号公報)に開示されている。
【特許文献1】特開2001−268072号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
暗号処理では、通常、比較演算の結果に応じた条件分岐が発生する。この条件分岐が発生する場合とそれが発生しない場合とでは消費電力や実行時間に差が生じることがある。特に秘密鍵の値に応じて条件分岐が発生する場合は、それが発生しない場合と比べて消費電力や処理時間に違いが生じ、かかる消費電力や処理時間の違いが測定され解析されることにより秘密鍵が割り出される危険がある。さらに、暗号モジュールがメモリにアクセスして当該メモリから秘密鍵の値を読み出す際に、その読み出しアドレスが測定され、その測定結果が統計的に解析されることで秘密鍵が割り出される危険も存在する。
【0005】
図1は、暗号処理で使用されるベキ乗剰余演算の典型的なアルゴリズムを示すフローチャートである。このフローチャートは、S≡Ad (mod p)という合同式を演算するものである。ここで、pは奇素数であり、Aは公開鍵であり、dはnビット長の秘密鍵を表す。図1に示されるように、最初に整数変数Sに「1」の値が設定され(ステップS1)、次いで、整数変数jに「n−1」の値が設定される(ステップS2)。ステップS3では、pを法として整数Sと整数Sとの積の剰余が算出され、整数変数Sはその剰余に設定される。ステップS4では、秘密鍵dのj番目ビット値d[j]が「1」の値であるか否かが判定される。d[j]が「1」の値であれば、ステップS5において、pを法として整数Sと公開鍵Aとの積の剰余が算出され、整数変数Sはその剰余に設定される。その後、ステップS6で、変数jが「0」の値に到達したか否かが判定される。変数jが「0」の値に達していなければ、変数jがデクリメントされ(ステップS7)、その後、ステップS3〜S6の手順が繰り返し実行される。他方、ステップS4でビット値d[j]が「1」の値ではないと判定されたとき、ステップS5の手順がスキップされ、ステップS6の処理が実行される。最終的にステップS6で変数jが「0」の値に達したと判定されたとき、ベキ乗剰余の演算結果である整数Sが出力される(ステップS8)。
【0006】
前述の通り、ステップS4で秘密鍵dのビット値d[j]が「1」の値ではないと判定されたときはステップS5の手順がスキップされるという条件分岐が発生する。このため、秘密鍵dのビット値が「1」の値か否かに応じて暗号モジュールの消費電力や処理時間に違いが生じ、この違いに基づいて秘密鍵dが容易に推定される危険がある。
【0007】
また、図2は、暗号処理で使用される加算剰余演算の典型的なアルゴリズムを示すフローチャートである。このフローチャートは、S≡X+Y (mod p)という合同式を演算するものである。ここで、pは奇素数であり、X,Yは、整数についての剰余環Z/pZの元である。図2に示されるように、整数X,Yの加法演算がなされ、整数変数Sはその演算結果に設定される(ステップS10)。次いで、整数Sが法pの値以上であるか否かが判定される(ステップS11)。整数Sが法pの値以上であると判定されたときは、整数Sから法pの値が減算され、整数変数Sはその減算結果に設定される(ステップS12)。そして、加算剰余の演算結果である整数Sが出力される(ステップS13)。他方、整数Sが法pの値以上ではないと判定されたときは、ステップS12の手順はスキップされ、整数Sが出力される(ステップS13)という条件分岐が発生する。このため、整数Sが法pの値以上か否かに応じて暗号モジュールの消費電力や処理時間に違いが生じ、この違いに基づいて演算結果が容易に推定される危険がある。
【0008】
近年、セキュリティ機能は、スマートカードのみならず、比較的大きな規模のシステムにも組み込まれている。この種のシステムでは、スマートカードと同様の安全性が確保されているとは限らない。たとえば、その種のシステムがプリント基板を有する場合、第三者は、当該プリント基板上の配線を流れる電流を測定し、当該測定結果を解析して秘密鍵を不正に入手し得る可能性がある。
【0009】
上記に鑑みて本発明の目的の一つは、サイドチャネル攻撃に対して高い耐性を有する暗号装置を提供することである。
【課題を解決するための手段】
【0010】
前記目的を達成すべく、本発明に係る第1の暗号方法は、平文データ系列の暗号化あるいは暗号文データ系列の復号化を実行する暗号方法であって、(a)メモリから秘密データを読み出すステップと、(b)当該読み出された秘密データを用いて前記平文データ系列の暗号化または前記暗号文データ系列の復号化を実行するステップと、を有し、前記ステップ(b)は、(c)第1処理データおよび第2処理データを生成するステップと、(d)前記秘密データの値を設定データの値と比較するステップと、(e)当該比較結果に対応した0または1のいずれか一方の値のみのビット列からなる第1判定子を生成するとともに、前記第1判定子にビット毎の論理否定演算を施して第2判定子を生成するステップと、(f)前記第1処理データと前記第1判定子とにビット毎の論理積演算を施して第1演算データを生成するとともに、前記第2処理データと前記第2判定子とにビット毎の論理積演算を施して第2演算データを生成するステップと、(g)前記第1演算データと前記第2演算データとにビット毎の論理和演算を施して出力データを生成するステップと、を含み、前記出力データを用いて前記平文データ系列の暗号化または前記暗号文データ系列の復号化を実行するものである。
【0011】
本発明に係る第2の暗号方法は、平文データ系列の暗号化あるいは暗号文データ系列の復号化を実行する暗号方法であって、(a)メモリから秘密データを読み出すステップと、(b)当該読み出された秘密データを用いて前記平文データ系列の暗号化または前記暗号文データ系列の復号化を実行するステップと、を有し、前記ステップ(b)は、(c)前記秘密データの値を処理データの値と比較するステップと、(d)当該比較結果に対応した0または1のいずれか一方の値のみのビット列からなる判定子を生成するステップと、(e)前記判定子と前記処理データとにビット毎の論理積演算を施して演算データを生成するステップと、(f)前記演算データと前記秘密データとに加算または減算を施して出力データを生成するステップと、を含み、前記出力データを用いて前記平文データ系列の暗号化または前記暗号文データ系列の復号化を実行するものである。
【0012】
本発明に係る第1の暗号装置は、平文データ系列の暗号化あるいは暗号文データ系列の復号化を実行する暗号装置であって、秘密データを記憶しているメモリと、前記メモリから読み出された秘密データを用いて前記平文データ系列の暗号化または前記暗号文データ系列の復号化を実行する暗号処理部と、を有し、前記暗号処理部は、第1処理データと第2処理データとを生成する演算器と、前記秘密データの値を設定データの値と比較する比較器と、当該比較結果に対応した0または1のいずれか一方の値のみのビット列からなる第1判定子を生成する判定器と、前記第1判定子にビット毎の論理否定演算を施して第2判定子を生成する論理否定演算器と、前記第1処理データと前記第1判定子とにビット毎の論理積演算を施して第1演算データを生成する第1論理積演算器と、前記第2処理データと前記第2判定子とにビット毎の論理積演算を施して第2演算データを生成する第2論理積演算器と、前記第1演算データと前記第2演算データとにビット毎の論理和演算を施して出力データを生成する論理和演算器と、を含むものである。
【0013】
本発明に係る第2の暗号装置は、平文データ系列の暗号化あるいは暗号文データ系列の復号化を実行する暗号装置であって、秘密データを記憶しているメモリと、前記メモリから読み出された秘密データを用いて前記平文データ系列の暗号化または前記暗号文データ系列の復号化を実行する暗号処理部と、を有し、前記暗号処理部は、前記秘密データの値を処理データの値と比較する比較器と、当該比較結果に対応した0または1のいずれか一方の値のみのビット列からなる判定子を生成する判定器と、前記判定子と前記処理データとにビット毎の論理積演算を施して演算データを生成する論理積演算器と、前記演算データと前記秘密データとに加算または減算を施して出力データを生成する加減算器と、を含むものである。
【0014】
本発明に係る第1の暗号プログラムは、メモリから秘密データを読み出し、当該読み出された秘密データを用いて前記平文データ系列の暗号化あるいは前記暗号文データ系列の復号化を実行する暗号処理をプロセッサに実行させる暗号プログラムであって、前記暗号処理は、(a)第1処理データおよび第2処理データを生成する処理と、(b)前記秘密データの値を設定データの値と比較する処理と、(c)当該比較結果に対応した0または1のいずれか一方の値のみのビット列からなる第1判定子を生成するとともに、前記第1判定子にビット毎の論理否定演算を施して第2判定子を生成する処理と、(d)前記第1処理データと前記第1判定子とにビット毎の論理積演算を施して第1演算データを生成するとともに、前記第2処理データと前記第2判定子とにビット毎の論理積演算を施して第2演算データを生成する処理と、(e)前記第1演算データと前記第2演算データとにビット毎の論理和演算を施して出力データを生成する処理と、を含み、前記出力データは前記平文データ系列の暗号化または前記暗号文データ系列の復号化に使用されるものである。
【0015】
そして、本発明に係る第2の暗号プログラムは、メモリから秘密データを読み出し、当該読み出された秘密データを用いて前記平文データ系列の暗号化あるいは前記暗号文データ系列の復号化を実行する暗号処理をプロセッサに実行させる暗号プログラムであって、前記暗号処理は、(a)前記秘密データの値を処理データの値と比較する処理と、(b)当該比較結果に対応した0または1のいずれか一方の値のみのビット列からなる判定子を生成する処理と、(c)前記判定子と前記処理データとにビット毎の論理積演算を施して演算データを生成する処理と、(d)前記演算データと前記秘密データとに加算または減算を施して出力データを生成する処理と、を含み、前記出力データは前記平文データ系列の暗号化または前記暗号文データ系列の復号化に使用されるものである。
【発明の効果】
【0016】
前述の通り、本発明に係る第1の暗号方法、暗号装置および暗号プログラムによれば、第1判定子と第1処理データとにビット毎の論理積演算を施すことで第1演算データが生成され、第2判定子と第2処理データとにビット毎の論理積演算を施すことで第2演算データが生成され、そして、第1演算データと第2演算データとのビット毎の論理和演算を施すことで出力データが生成される。これにより、第1判定子のビット値が「1」のみからなる値(=「11…11」)の場合は、第2判定子のビット値が「0」のみからなる値(=「00…00」)になるので第1演算データを示す出力データが生成され、第2判定子のビット値が「1」のみからなる値(=「11…11」)の場合には、第1判定子のビット値が「0」のみからなる値(=「00…00」)になるので第2演算データを示す出力データが生成される。このような処理は、秘密データの値に応じた条件分岐処理を発生させず、秘密データの値に応じた処理量の違いを発生させない。それゆえ、本発明に係る第1の暗号方法、暗号装置および暗号プログラムは、条件分岐処理を要しない暗号処理を可能にし、サイドチャネル攻撃を困難にするという効果を奏する。
【0017】
また、本発明に係る第2の暗号方法、暗号装置および暗号プログラムによれば、判定子と処理データとにビット毎の論理積演算を施すことで演算データが生成され、この演算データと秘密データとに加減算を施すことで出力データが生成される。これにより、判定子のビット値が「0」のみからなる値(=「00…00」)の場合は秘密データを示す出力データが生成され、判定子のビット値が「1」のみからなる値(=「11…11」)の場合には秘密データと処理データとを加減算して得られる出力データが生成される。このような処理は、秘密データの値に応じた条件分岐処理を発生させず、秘密データの値に応じた処理量の違いを発生させない。それゆえ、本発明に係る第2の暗号方法、暗号装置および暗号プログラムは、条件分岐処理を要しない暗号処理を可能にし、サイドチャネル攻撃を困難にするという効果を奏する。
【0018】
したがって、本発明に係る暗号方法、暗号装置および暗号プログラムは、サイドチャネル攻撃に対する高い耐性を実現するものである。
【発明を実施するための最良の形態】
【0019】
以下、本発明に係る種々の実施例について説明する。
【0020】
図3は、暗号装置1の概略構成を示すブロック図である。この暗号装置1は、演算装置10、外部ROM20および外部RAM30を有する。これら演算装置10、外部ROM20および外部RAM30は、外部バス2を介してデータ信号や制御信号を相互に転送できる。また暗号装置1は、公開鍵暗号方式や共通鍵暗号方式などの秘密鍵を利用して平文データ系列の暗号化あるいは暗号文データ系列の復号化を実行する機能を有する。
【0021】
演算装置10は、CPUを含むプロセッサ11、キャッシュメモリ12、補助演算部13、内部RAM14およびインターフェース(I/F)16を有し、これらキャッシュメモリ12、補助演算部13および内部RAM14は、内部バス15を介してデータ信号や制御信号を相互に転送できる。また、演算装置10は、インターフェース16を介して外部バス2と接続されている。内部RAM14は秘密鍵などの秘密データ14aを記憶している。
【0022】
外部ROM20は、演算装置10で暗号処理(暗号化および復号化を含む。)に使用されるべき暗号プログラム(またはプログラムコード)20bを記録している。演算装置10のプロセッサ11は、外部ROM20に記録された暗号プログラム20bをロードして実行する機能を持つ。暗号プログラム20bの実行に必要な各種の設定データ20aも、外部ROM20に記録されている。補助演算部13は、暗号処理の一部を補助的に実行する機能を有し、たとえば剰余演算器や乗算器を有することができる。プロセッサ11は、暗号プログラム20bを実行する際、補助演算部13に内部バス15を介してデータを転送し、その転送データを補助演算部13に処理させて当該処理結果を受け取ることができる。なお、外部RAM30は、暗号処理の過程で生成された秘密性の低いデータを一時的に格納するものである。
【0023】
上記構成を有する暗号装置1の動作を以下に説明する。図4は、演算装置10により実現される機能ブロック群の一例を概略的に示す図である。この機能ブロック群は、演算制御部40、比較器41、判定器42、論理否定演算器43、論理積演算器44,45および論理和演算器46で構成されている。これら機能ブロック40〜46の全部または一部は、暗号プログラム20bで実現されてもよいし、あるいは、補助演算部13に組み込まれたハードウェア構成で実現されてもよい。
【0024】
図4を参照すると、演算制御部40は、内部RAM14(図3)から秘密データをビット単位でロードするとともに、暗号処理に使用される第1処理データおよび第2処理データを生成する。秘密データのビット値d[j](jは、秘密データのj番目ビットを示す。)は比較器41に与えられる。nビット長(nは正整数)の第1処理データの値Sは論理積演算器44に与えられ、nビット長の第2処理データの値Tは、論理積演算器45に与えられる。
【0025】
比較器41は、秘密データのビット値d[j]を設定データ値Dsと比較し、当該比較結果を判定器42に与える。比較器41は、たとえば、ビット値d[j]と設定データ値Dsとの大小関係を比較結果として与えればよいが、特に制限されない。判定器42は、比較器41から供給された比較結果に対応した「0」または「1」のいずれか一方の値のみのビット列からなる第1判定子cを生成する。この第1判定子cのビット長は、第1処理データおよび第2処理データのビット長と同じである。
【0026】
論理否定演算器43は、第1判定子cにビット毎の論理否定演算を施して第2判定子<c>を生成する。たとえば、第1判定子cが7ビットの「0000000」の値を持つ場合、第2判定子<c>は「1111111」の値を持つこととなり、第1判定子cが7ビットの「1111111」の値を持つ場合、第2判定子<c>は「0000000」の値を持つことになる。
【0027】
論理積演算器44は、第1処理データの値Sと第1判定子cとにビット毎の論理積演算を施して第1演算データの値S&cを生成する(ここで、「&」は論理積演算記号を表す)。一方、論理積演算器45は、第2処理データの値Tと第2判定子<c>とにビット毎の論理積演算を施して第2演算データの値T&<c>を生成する。
【0028】
論理和演算器46は、第1演算データの値S&cと第2演算データの値T&<c>とにビット毎の論理和演算を施して出力データの値So(=S&c|T&<c>)を生成する(ここで、「|」は論理和演算記号を表す)。そして、演算制御部40は、論理和演算器46の出力値Soを用いて任意の暗号処理を実行することができる。
【0029】
上記構成では、比較器41の判定結果に応じた条件分岐処理が発生しないので、秘密データのビット値d[j」に応じた条件分岐処理も発生しない。よって、条件分岐処理による消費電力や処理時間の違いはほとんど発生しないこととなる。このため、たとえ、秘密データのビット値d[j]の読み出しアドレスを物理的に測定できたとしても、その測定値と、消費電力や処理時間などのサイドチャネル情報との間の関連を見つけることは難しい。したがって、図4の機能ブロック群を有する暗号装置1は、サイドチャネル攻撃に対する高い耐性を有する。
【0030】
図4の機能ブロック群を用いてベキ乗剰余演算を実行することが可能である。図5は、S≡Ad (mod p)という合同式のベキ乗剰余演算の手順を示すフローチャートである。ここで、pは奇素数であり、Aは公開鍵である。dはnビット長の秘密鍵を表し、d[j]は秘密鍵dのj番目ビットの値である。
【0031】
図5を参照すると、最初に、演算制御部40は、整数変数Sに「1」の値を設定し(ステップS20)、次いで、秘密鍵dのビット位置を示す整数変数jに、最上位ビットを示す「n−1」の値を設定する(ステップS21)。ステップS22では、演算制御部40は、pを法として整数変数Sの2乗の剰余(=S×S (mod p))を第1処理データの値Sとして算出する。次のステップS23では、演算制御部40は、pを法として整数Sと公開鍵Aとの積の剰余(=S×A (mod p))を第2処理データの値Tとして算出する。
【0032】
一方、ステップS24では、比較器41は、ビット値d[j]と設定データ値Ds(=1)との大小関係を比較し、判定器42は、当該比較結果に基づいて、ビット値d[j]が設定データ値Ds(=1)に一致すれば、「0」のビット値のみからなるnビット長の値に第1判定子cを設定し、ビット値d[j]が設定データ値Ds(=1)に一致しなければ、「1」のビット値のみからなるnビット長の値に第1判定子cを設定する。ステップS25では、論理否定演算器43は、第1判定子cにビット毎の論理否定演算を施して第2判定子<c>を生成する。
【0033】
続くステップS26では、論理積演算器44、論理積演算器45および論理和演算器46が協働して、S&c|T&<c>というビット毎の論理演算を実行して出力値S(=So)を生成し、この値Sを演算制御部40に与える。
【0034】
そして、演算制御部40は、秘密鍵dのビット位置jが最下位ビットを示す「0」の値に一致したか否かを判定し(ステップS27)、ビット位置jが「0」に達していなければ、ビット位置jをデクリメントして(ステップS28)、上記ステップS22〜S27の手順を繰り返し実行させる。
【0035】
最終的に、ステップS27でビット位置jが「0」に達したと判定したとき、演算制御部40は、論理和演算器46の出力値Soをベキ乗剰余の演算結果として出力する(ステップS29)。
【0036】
次に、図6は、演算装置10により実現される機能ブロック群の他の例を概略的に示す図である。この機能ブロック群は、演算制御部50、比較器51、判定器52、論理積演算器53および加減算器54で構成されている。これら機能ブロック50〜54の全部または一部は、暗号プログラム20bで実現されてもよいし、あるいは、補助演算部13に組み込まれたハードウェア構成で実現されてもよい。
【0037】
図6を参照すると、演算制御部40は、内部RAM14(図3)から読み出された秘密データの値Sと、処理データの値Pとを比較器51に与える。この秘密データは、暗号処理の過程で発生して内部RAM14に一時的に格納されたものである。
【0038】
比較器51は、秘密データの値Sを処理データの値Pと比較し、当該比較結果を判定器52に与える。判定器52は、比較器51から供給された比較結果に対応した「0」または「1」のいずれか一方の値のみのビット列からなる判定子cを生成する。この判定子cのビット長は、秘密データのビット長と同じである。
【0039】
論理積演算器53は、処理データの値Pと判定子cとにビット毎の論理積演算を施して演算データを生成しこれを加減算器54に供給する。加減算器54は、秘密データの値Sと演算データの値(=P&c)とに加算または減算を施して出力値So(=S±(P&c))を生成する。
【0040】
図6の機能ブロック群では、比較器51の判定結果に応じた条件分岐処理が発生しないので、秘密データの値Sに応じた条件分岐処理も発生しない。よって、条件分岐処理による消費電力や処理時間の違いはほとんど発生しないこととなる。このため、たとえ、秘密データの値Sの読み出しアドレスを物理的に測定できたとしても、その測定値と、消費電力や処理時間などのサイドチャネル情報との間の関連を推定することは難しい。したがって、図6の機能ブロック群を有する暗号装置1は、サイドチャネル攻撃に対する高い耐性を有する。このような機能ブロック群は、公知のモンゴメリ乗算やCRT(中国人法剰余定理:Chinese Remainder Theorem)の実装に使用することが可能である。
【0041】
図6の機能ブロック群を用いて加算剰余演算を実行することができる。図7は、S≡X+Y (mod P)という合同式の加算剰余演算の手順を示すフローチャートである。ここで、Pは奇素数であり、X,Yは、任意の加法群(たとえば、整数についての剰余環Z/pZ)の元である。
【0042】
図7を参照すると、ステップS30で、演算制御部50は、整数X,Yの加法演算を実行し、秘密データの値Sをその演算結果(=X+Y)に設定する。次いで、比較器51は、秘密データの値Sと処理データの値Pとの大小関係を比較し、当該比較結果を示す値Cbを与える(ステップS31)。値Cbは、たとえば、秘密データの値Sから処理データの値Pを減算して得られた減算値(=S−P)がゼロ以上であれば「1」の値に設定され、減算値(=S−P)がゼロ未満であれば「0」の値に設定されればよい。
【0043】
ステップS32では、判定器52は、その比較結果を示す値Cbが設定値「1」に一致すれば、「1」の論理値のみからなるnビット長の値に判定子cを設定し、値Cbが設定値「1」に一致しなければ、「0」の論理値のみからなるnビット長の値に判定子cを設定することができる。
【0044】
続くステップS33では、論理積演算器53は、処理データの値Pと判定子cとにビット毎の論理積演算を施して演算データの値P&cを生成する。ステップS34,S35では、加減算器54は、秘密データの値Sから演算データの値P&cを減算して出力値So(=S−P&c)を生成し出力する。
【図面の簡単な説明】
【0045】
【図1】暗号処理で使用されるベキ乗剰余演算の典型的なアルゴリズムを示すフローチャートである。
【図2】暗号処理で使用される加算剰余演算の典型的なアルゴリズムを示すフローチャートである。
【図3】本発明の実施例に係る暗号装置の概略構成を示すブロック図である。
【図4】図3の演算装置により実現される演算回路の一例を概略的に示すブロック図である。
【図5】本発明の実施例に係るベキ乗剰余演算の手順を示すフローチャートである。
【図6】図3の演算装置により実現される演算回路の他の例を概略的に示すブロック図である。
【図7】本発明の実施例に係る加算剰余演算の手順を示すフローチャートである。
【符号の説明】
【0046】
1 暗号装置
10 演算装置
11 プロセッサ
13 補助演算部
14 内部RAM
14a 秘密データ
20b 暗号プログラム(または暗号プログラムコード)
40 演算制御部
41 比較器
42 判定器
43 論理否定演算器
44,45,53 論理積演算器
46 論理和演算器
50 加算器
51 比較器
52 判定器
54 加減算器

【特許請求の範囲】
【請求項1】
平文データ系列の暗号化あるいは暗号文データ系列の復号化を実行する暗号方法であって、
(a)メモリから秘密データを読み出すステップと、
(b)当該読み出された秘密データを用いて前記平文データ系列の暗号化または前記暗号文データ系列の復号化を実行するステップと、を有し、
前記ステップ(b)は、
(c)第1処理データおよび第2処理データを生成するステップと、
(d)前記秘密データの値を設定データの値と比較するステップと、
(e)当該比較結果に対応した0または1のいずれか一方の値のみのビット列からなる第1判定子を生成するとともに、前記第1判定子にビット毎の論理否定演算を施して第2判定子を生成するステップと、
(f)前記第1処理データと前記第1判定子とにビット毎の論理積演算を施して第1演算データを生成するとともに、前記第2処理データと前記第2判定子とにビット毎の論理積演算を施して第2演算データを生成するステップと、
(g)前記第1演算データと前記第2演算データとにビット毎の論理和演算を施して出力データを生成するステップと、
を含み、前記出力データを用いて前記平文データ系列の暗号化または前記暗号文データ系列の復号化を実行することを特徴とする暗号方法。
【請求項2】
請求項1記載の暗号方法であって、前記ステップ(d)では、前記秘密データの値と前記設定データの値との大小関係が比較されることを特徴とする暗号方法。
【請求項3】
請求項1または2記載の暗号方法であって、
前記ステップ(a)では、前記秘密データとして秘密鍵が最上位ビットから最下位ビットの順番でビット毎に前記メモリから順次読み出され、
前記ステップ(d)では、前記ステップ(a)で読み出された秘密鍵の各ビットの値が前記設定データの値と比較され、
前記ステップ(c)は、前記秘密鍵のビット毎に、所定の整数を法として前記ステップ(g)で生成された出力データの値の2乗の剰余を前記第1処理データの値として算出するとともに、前記所定の整数を法として前記出力データの値と暗号鍵との積の剰余を前記第2処理データの値として算出するステップを含むことを特徴とする暗号方法。
【請求項4】
平文データ系列の暗号化あるいは暗号文データ系列の復号化を実行する暗号方法であって、
(a)メモリから秘密データを読み出すステップと、
(b)当該読み出された秘密データを用いて前記平文データ系列の暗号化または前記暗号文データ系列の復号化を実行するステップと、を有し、
前記ステップ(b)は、
(c)前記秘密データの値を処理データの値と比較するステップと、
(d)当該比較結果に対応した0または1のいずれか一方の値のみのビット列からなる判定子を生成するステップと、
(e)前記判定子と前記処理データとにビット毎の論理積演算を施して演算データを生成するステップと、
(f)前記演算データと前記秘密データとに加算または減算を施して出力データを生成するステップと、
を含み、前記出力データを用いて前記平文データ系列の暗号化または前記暗号文データ系列の復号化を実行することを特徴とする暗号方法。
【請求項5】
請求項4記載の暗号方法であって、前記ステップ(c)では、前記秘密データの値と前記処理データの値との大小関係が比較されることを特徴とする暗号方法。
【請求項6】
請求項4または5記載の暗号方法であって、前記ステップ(b)は、第1処理データと第2処理データとを加算して前記秘密データを生成するステップをさらに含み、前記ステップ(f)では、前記秘密データの値から前記演算データの値が減算されることを特徴とする暗号方法。
【請求項7】
平文データ系列の暗号化あるいは暗号文データ系列の復号化を実行する暗号装置であって、
秘密データを記憶しているメモリと、
前記メモリから読み出された秘密データを用いて前記平文データ系列の暗号化または前記暗号文データ系列の復号化を実行する暗号処理部と、を有し、
前記暗号処理部は、
第1処理データと第2処理データとを生成する演算器と、
前記秘密データの値を設定データの値と比較する比較器と、
当該比較結果に対応した0または1のいずれか一方の値のみのビット列からなる第1判定子を生成する判定器と、
前記第1判定子にビット毎の論理否定演算を施して第2判定子を生成する論理否定演算器と、
前記第1処理データと前記第1判定子とにビット毎の論理積演算を施して第1演算データを生成する第1論理積演算器と、
前記第2処理データと前記第2判定子とにビット毎の論理積演算を施して第2演算データを生成する第2論理積演算器と、
前記第1演算データと前記第2演算データとにビット毎の論理和演算を施して出力データを生成する論理和演算器と、
を含むことを特徴とする暗号装置。
【請求項8】
請求項7記載の暗号装置であって、前記比較器は、前記秘密データの値と前記設定データの値との大小関係を比較し、当該比較結果を前記判定器に与えることを特徴とする暗号装置。
【請求項9】
請求項7または8記載の暗号装置であって、
前記暗号処理部は、前記秘密データとして秘密鍵を最上位ビットから最下位ビットの順番でビット毎に前記メモリから順次読み出し、当該読み出された秘密鍵の各ビットを前記比較器に与える制御部をさらに備え、
前記演算器は、前記秘密鍵のビット毎に、所定の整数を法として前記出力データの値の2乗の剰余を前記第1処理データの値として算出するとともに、前記所定の整数を法として前記出力データの値と暗号鍵との積の剰余を前記第2処理データの値として算出することを特徴とする暗号装置。
【請求項10】
平文データ系列の暗号化あるいは暗号文データ系列の復号化を実行する暗号装置であって、
秘密データを記憶しているメモリと、
前記メモリから読み出された秘密データを用いて前記平文データ系列の暗号化または前記暗号文データ系列の復号化を実行する暗号処理部と、を有し、
前記暗号処理部は、
前記秘密データの値を処理データの値と比較する比較器と、
当該比較結果に対応した0または1のいずれか一方の値のみのビット列からなる判定子を生成する判定器と、
前記判定子と前記処理データとにビット毎の論理積演算を施して演算データを生成する論理積演算器と、
前記演算データと前記秘密データとに加算または減算を施して出力データを生成する加減算器と、
を含むことを特徴とする暗号装置。
【請求項11】
請求項10記載の暗号装置であって、前記比較器は、前記秘密データの値と前記処理データの値との大小関係を比較し、当該比較結果を前記判定器に与えることを特徴とする暗号装置。
【請求項12】
請求項10または11記載の暗号装置であって、前記暗号処理部は、第1処理データと第2処理データとを加算して前記秘密データを生成する加算器をさらに備え、前記加減算器は、前記秘密データの値から前記論理積演算器の出力値を減算することを特徴とする暗号装置。
【請求項13】
メモリから秘密データを読み出し、当該読み出された秘密データを用いて前記平文データ系列の暗号化あるいは前記暗号文データ系列の復号化を実行する暗号処理をプロセッサに実行させる暗号プログラムであって、
前記暗号処理は、
(a)第1処理データおよび第2処理データを生成する処理と、
(b)前記秘密データの値を設定データの値と比較する処理と、
(c)当該比較結果に対応した0または1のいずれか一方の値のみのビット列からなる第1判定子を生成するとともに、前記第1判定子にビット毎の論理否定演算を施して第2判定子を生成する処理と、
(d)前記第1処理データと前記第1判定子とにビット毎の論理積演算を施して第1演算データを生成するとともに、前記第2処理データと前記第2判定子とにビット毎の論理積演算を施して第2演算データを生成する処理と、
(e)前記第1演算データと前記第2演算データとにビット毎の論理和演算を施して出力データを生成する処理と、
を含み、前記出力データは前記平文データ系列の暗号化または前記暗号文データ系列の復号化に使用されることを特徴とする暗号プログラム。
【請求項14】
メモリから秘密データを読み出し、当該読み出された秘密データを用いて前記平文データ系列の暗号化あるいは前記暗号文データ系列の復号化を実行する暗号処理をプロセッサに実行させる暗号プログラムであって、
前記暗号処理は、
(a)前記秘密データの値を処理データの値と比較する処理と、
(b)当該比較結果に対応した0または1のいずれか一方の値のみのビット列からなる判定子を生成する処理と、
(c)前記判定子と前記処理データとにビット毎の論理積演算を施して演算データを生成する処理と、
(d)前記演算データと前記秘密データとに加算または減算を施して出力データを生成する処理と、
を含み、前記出力データは前記平文データ系列の暗号化または前記暗号文データ系列の復号化に使用されることを特徴とする暗号プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate