JP2012242539A - セキュリティシステム及びマイクロコンピュータ - Google Patents

セキュリティシステム及びマイクロコンピュータ Download PDF

Info

Publication number
JP2012242539A
JP2012242539A JP2011111297A JP2011111297A JP2012242539A JP 2012242539 A JP2012242539 A JP 2012242539A JP 2011111297 A JP2011111297 A JP 2011111297A JP 2011111297 A JP2011111297 A JP 2011111297A JP 2012242539 A JP2012242539 A JP 2012242539A
Authority
JP
Japan
Prior art keywords
random number
power
secret key
remainder
quotient
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2011111297A
Other languages
English (en)
Inventor
Vuillaume Camille
カミーユ ヴィオム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2011111297A priority Critical patent/JP2012242539A/ja
Publication of JP2012242539A publication Critical patent/JP2012242539A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】秘密鍵をユークリッド除算式による乱数と商と剰余によって表現したべき乗剰余演算の演算コストを低減することにある
【解決手段】秘密鍵をユークリッド除算による乱数と商と剰余によって表現したべき乗剰余演算を用いてRSA暗号処理を行う。特に、RSA暗号処理に用いるべき乗剰余演算の法nのビット長の正の整数分の一のビット長を持つ乱数rで秘密鍵を除して商と剰余に分解し、分解した商をさらに前記乱数で除して商と剰余に分解する処理を行うことにより、秘密鍵を前記乱数rの2次以上の高次式として扱う。これにより、小さなビット長の乱数rを用いる演算か可能になる。
【選択図】図1

Description

本発明は、RSA(Rivest-Shamir-Adleman)アルゴリズムを用いて暗号化及び復号を行うマイクロコンピュータ及びセキュリティーシステムに関し、例えばIC(Integrated Circuit)カードに適用して有効な技術に関する。
RSAアルゴリズムを用いたセキュリティシステムにおいてRSA暗号演算処理に際しては、電力解析等によって秘密鍵が漏洩しないように対策しなければならない。このため、mを平文、cを暗号文、nを公開鍵(厳密には公開係数であるが本明細書では単に公開鍵若しくはべき乗剰余演算の法又は除数とも記すものとする)、dを秘密鍵(厳密には秘密指数であるが本明細書では単に秘密鍵とも記すものとする)、とするとき、べき乗剰余m=cd mod nのRSA基本関数は、秘密鍵と消費電力との相関がなくなるようランダム化する必要がある。法(除数)n=p*q(記号*は乗算を意味する)の因数分解が既知である場合、乱数rに対しcd = cd + r*(p-1)*(q-1)となるため、秘密鍵をランダム化することは難しくない。これにより、dの代わりにランダム化されたべき指数d + r*(p-1)*(q-1)を使用することが出来る。しかし、この方法は因数pとqが既知でない場合には適用出来ない。素因数pとqは公開鍵の一部nの生成に用いられるが、一旦nが生成された後処理で必ず既知とされるべき性質のものではない。こういった状況は、実際のRSA実装においてたびたび発生する。このような素因数を用いて秘密鍵を複数に分割する技術について例えば特許文献1に記載がある。
この点に関しては、d = r*d[1] + d[0]となるよう、乱数r を生成し、d[1]とd[0]<r を計算することによって解決することができる。ここで、d[1]はユークリッド除算d/rの商であり、d[0]は剰余を表す。その後、C=cr mod nを計算し、その計算結果を利用して、Cd[1]*cd[0] mod nの結果を得る。実際の計算は、(cr)d[1]*cd[0] mod nとなる。秘密鍵をユークリッド除算式による乱数と商と剰余によって表現して演算する技術については例えば特許文献2,3に記載がある。
尚、ユークリッド除算とはユークリッド整域における除算であることを意味するものであるが、本明細書ではユークリッド除算を単に除算とも記す。
日本国特開2004−4341号公報 米国特許明細書第7447913号明細書 日本国特表2003−518872号公報
本発明者は、秘密鍵をユークリッド除算式による乱数と商と剰余によって表現して演算する技術について検討した。これによれば、上記乱数rは上記法nのビットに応じて大きな数になる。例えば、法nが約2000ビットのとき、乱数rは約1000ビットになる。したがって、このような大きな整数のユークリッド除算の計算には非常に高いコストを要する。要するに、データ処理能力の高いプロセッサ若しくはアクセラレータが必要になる。ICカードに代表されるようなデータ処理能力に限りのある装置では、コプロセッサなどのアクセラレータを用いて実用的な速度でべき乗剰余乗算を行って剰余を出力することは可能であるが、そのようなハードウェアモジュールとしてのアクセラレータから直接、除数(r)に大きな整数を用いてユークリッド除算を行うことは容易ではない。これについて特許文献2,3では考慮されていない。
本発明の目的は、秘密鍵をユークリッド除算式による乱数と商と剰余によって表現したときのべき乗剰余演算の演算コストを低減することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、秘密鍵をユークリッド除算による乱数と商と剰余によって表現したべき乗剰余演算を用いてRSA暗号処理を行う。特に、RSA暗号処理に用いるべき乗剰余演算の法nのビット長の正の整数分の一のビット長を持つ乱数rで秘密鍵を除して商と剰余に分解し、分解した商をさらに前記乱数で除して商と剰余に分解する処理を行うことにより、秘密鍵を前記乱数rの2次以上の高次式として扱う。これにより、小さなビット長の乱数rを用いる演算か可能になる。
また、秘密鍵を前記乱数rの2次以上の高次式として暗号文を平文に復号するべき乗剰余演算では、前記乱数rの各次数に係る定数毎に暗号文に対するべき指数としてべき乗剰余演算を順次階層的に行う。これにより、暗号文の復号に際して、前記乱数rの2次以上の高次式における各項に対応する演算が軽減される。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、秘密鍵をユークリッド除算式による乱数と商と剰余によって表現したべき乗剰余演算の演算コストを低減することができる。
図1は本発明の一実施の形態に係るRSA復号処理を例示するフローチャートである。 図2はバイナリ法によるべき乗剰余計算アルゴリズムを例示するフローチャートである。 図3はユークリッド除算によるランダム化べき乗処理を例示するフローチャートである。 図4は高速多重べき乗演算処理として、2つのべき指数a、bによるべき乗、Ca*cb mod nを計算するためのアルゴリズムを例示するフローチャートである。 図5は配列d[k], …, d[0]の計算処理を例示するフローチャートである。 図6はgビットの除数 rによるD’のユークリッド除算処理を例示するフローチャートである。 図7はランダム化べき指数によるcd mod nの計算処理を例示するフローチャートである。 図8はランダム化べき指数によるcd mod nの計算処理を採用したICカード用のマイクロコンピュータの構成を例示するブロックダイアがラムである。 図9はICカードによるRSA復号処理を行うハードウェア部とハードウェア部間のデータの受け渡しについて例示した説明図である。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕<秘密鍵を、商と剰余をパラメータとして持ち乱数rの2次以上の高次式に分解>
本発明の代表的な実施の形態に係るセキュリティシステムは、秘密鍵をユークリッド除算による乱数と商と剰余によって表現したべき乗剰余演算を用いてRSA暗号処理を行うシステムである。特に、RSA暗号処理に用いるべき乗剰余演算の法nのビット長の正の整数分の一のビット長を持つ乱数rで秘密鍵を除して商と剰余に分解し、分解した商をさらに前記乱数で除して商と剰余に分解する処理を行うことにより、秘密鍵を前記乱数rの2次以上の高次式として処理する(S13)。
これにより、小さなビット長の乱数rを用いる演算が可能になる。rの値はランダムであるから、rを用いたべき乗はランダム化され、電力解析による秘密鍵の漏洩防止に資することができる。特に、rを用いたべき乗は、法n=p*qの因数p、qを知らなくてもランダム化することが可能である。また、rは法よりもk倍小さいため、rのサイズを自由に選択することが出来る。特にrのビット長が十分短い場合に、ユークリッド除算を効率的に計算することが出来る。例えば、rが16ビットの場合、多くのCPUアーキテクチャの命令セットで使用される、32ビットのユークリッド除算を連続して行うことにより、商と剰余を効率的に計算することが出来る。このような32ビットのユークリッド除算処理を専用ハードウェア回路へ実装する場合にはこれを低コストで実現することが可能である。
〔2〕<乱数rの2次以上の高次式として扱われる秘密鍵を用いた復号処理>
項1のセキュリティシステムは、秘密鍵を前記乱数rの2次以上の高次式として暗号文を平文に復号するべき乗剰余演算として、前記乱数rの最高次数に係る定数を、暗号文に対するべき指数としてべき乗剰余演算を行い、その演算結果の剰余に対して前記乱数rをべき指数とするべき乗演算値と、前記乱数rの次の低位次数に係る定数をべき指数とする前記暗号文に対するべき乗演算値との積に対する除数nを用いたべき乗剰余演算を、前記乱数rの最低次数に係る定数を用いるまで順次繰り返す処理を行う(S14)。
これにより、暗号文の復号に際して、前記乱数rの2次以上の高次式における各項に対応する演算が軽減される。
〔3〕<ICカード>
項2のセキュリティシステムは、カード基板に前記RSA暗号処理を行うマイクロコンピュータ(1)を搭載してICカード(10)を構成する。
CPUパワーが限られたICカードにおいても電力解析による秘密鍵の漏洩防止が保証される。
〔4〕<秘密鍵を、商と剰余をパラメータとして持ち乱数rの2次以上の高次式に分解>
本発明の更に具体的な実施の形態に係るセキュリティシステムは、秘密鍵をユークリッド除算による乱数rと商Dと剰余とによって表現したべき乗剰余演算を用いてRSA暗号処理を行うシステムである。特に、前記乱数rはRSA暗号処理に用いるべき乗剰余演算の法nのビット長の1/k(kは正の整数)のビット長を持つ。前記RSA暗号処理において、前記乱数rで秘密鍵dを除して商と剰余に分解し、分解した商をさらに前記乱数で除して商と剰余に分解する処理を行うことにより、秘密鍵dを、
d = d[k]*rk + d[k-1]*rk-1 + d[k-2]*rk-2 + … + d[2]*r2 + d[1]*r + d[0]
で示される前記乱数rのk次の高次式として処理する(S13、図5)。
上記秘密鍵としてのべき指数dに関する高次式は、例えば以下の処理ステップで演算することができる。
法nのビット長よりk倍小さいビット長の乱数rを生成する。D’=dに設定する。
Step 0:ユークリッド除算D’/rの商と剰余、Dとd[0]を計算する。D’=D に設定する。
Step 1:ユークリッド除算D’/rの商と剰余、Dとd[1]を計算する。D’=D に設定する。
Step 2:ユークリッド除算D’/rの商と剰余、Dとd[2]を計算する。D’=D に設定する。

Step k-2:ユークリッド除算D’/rの商と剰余、Dとd[k-2]を計算。D’=D に設定する。
Step k-1:ユークリッド除算D’/rの商と剰余、Dとd[k-1]を計算。D’=D に設定する。
Step k:ユークリッド除算D’/rの商と剰余、Dとd[k]を計算。D’=D に設定する。
これにより、項1と同様の作用効果を得る。
〔5〕<乱数rの2次以上の高次式として扱われる秘密鍵を用いた復号処理>
項4のセキュリティシステムは更に、秘密鍵を前記乱数rのk次の高次式として暗号文を平文に復号するべき乗剰余演算において、前記乱数rのk次に係る定数を、暗号文に対するべき指数としてべき乗剰余演算
C=cd[k] mod n
を行い、その演算結果の剰余Cに対して前記乱数rをべき指数とするべき乗演算値Crと、前記乱数rの次の低位次数k-iに係る定数d[k-i]をべき指数とする前記暗号文cに対するべき乗演算値cd[k-i]との積に対する法nを用いたべき乗剰余演算Cr *cd[k-i] mod nを、前記乱数rの最低次数0に係る定数d[0]を用いるまで順次繰り返す処理を行って、前記暗号文cに対する平文mを
m=(cd[k]*r^k)*(cd[k-1]*r^(k-1))*(cd[k-2]*r^(k-2))*...*(cd[2]*r^2)*(cd[1]*r)*(cd[0])、
m=(((...((( cd[k])r *cd[k-1])r *cd[k-2])r *...)r *cd[2])r *cd[1])r *cd[0]
として得る(S14,図6、図7)。
上記べき乗剰余演算は、例えば以下の処理ステップで演算することができる。
Step k:べき乗C=cd[k] mod n を計算する。
Step k-1:べき乗C=Cr *cd[k-1] mod nを計算する。
Step k-2:べき乗C=Cr *cd[k-2] mod nを計算する。

Step 2:べき乗C=Cr *cd[2] mod nを計算する。
Step 1:べき乗C=Cr * cd[1] mod n を計算する。
Step 0:べき乗m=Cr * cd[0] mod n を計算する。
これにより、項2と同様の作用効果を得る。
〔6〕<秘密鍵を、商と剰余をパラメータとして持ち乱数rの2次以上の高次式に分解>
本発明の更に別の実施の形態に係るマイクロコンピュータ(1)は、秘密鍵をユークリッド除算による乱数と商と剰余によって表現したべき乗剰余演算を用いてRSA暗号処理を行うプログラム処理回路(2,3)を有する。前記プログラム処理回路は、RSA暗号処理に用いるべき乗剰余演算の法nのビット長の正の整数分の一のビット長を持つ乱数rで秘密鍵を除して商と剰余に分解し、分解した商をさらに前記乱数で除して商と剰余に分解する処理を行うことにより、秘密鍵を前記乱数rの2次以上の高次式として処理する(S13)。
これによれば、項1と同様の作用効果を奏し、小さなビット長の乱数rを用いる演算が可能になる。
〔7〕<乱数rの2次以上の高次式として扱われる秘密鍵を用いた復号処理>
項6のマイクロコンピュータにおいて、前記プログラム処理回路は、秘密鍵を前記乱数rの2次以上の高次式として暗号文を平文に復号するべき乗剰余演算として、前記乱数rの最高次数に係る定数を、暗号文に対するべき指数としてべき乗剰余演算を行い、その演算結果の剰余に対して前記乱数rをべき指数とするべき乗演算値と、前記乱数rの次の低位次数に係る定数をべき指数とする前記暗号文に対するべき乗演算値との積に対する法nを用いたべき乗剰余演算を、前記乱数rの最低次数に係る定数を用いるまで順次繰り返す処理を行う(S14)。
これによれば、項2と同様に作用効果を奏する。
〔8〕<プログラムメモリ領域>
項7のマイクロコンピュータにおいて、前記プログラム処理回路が実行することによって前記RSA暗号処理を行うためのプログラムを格納する耐タンパー性能を備えたプログラムメモリ領域(6)を有する。
これによれば、上記RSA暗号処理を実現する環境を容易に実現することができる。
〔9〕<秘密鍵を格納する不揮発性メモリ領域>
項8のマイクロコンピュータにおいて、前記秘密鍵を格納する耐タンパー性能を備えた不揮発性メモリ領域(4)を有する。
これによれば、秘密鍵に対する不正アクセス防止を更に万全とする事ができる。
〔10〕<外部インタフェース回路>
項9のマイクロコンピュータにおいて、前記プログラム処理回路として、中央処理装置(2)と、前記中央処理装置の制御に基づいて演算を行うコプロセッサ(3)とを有し、前記コプロセッサは、ユークリッド除算を行うユークリッド除算部(31)と、前記中央処理装置の制御に基づいてべき乗演算を行うべき乗演算部(34)とを有する。
これにより、RSA暗号処理演算の高速化に資することができる。
2.実施の形態の詳細
実施の形態について更に詳述する。
<電力解析に対して保護されていないRSA>
先ず、電力解析に対して秘密鍵の漏洩防止が充分に対策されていない場合を一例としてRSA処理における剰余乗算処理の基本的なアルゴリズムを説明する。
RSA暗号システムは、c を暗号化されたメッセージ、d を秘密鍵とするm=cd mod n等のべき乗剰余演算を行う。結果mは復号されたメッセージ(平文)を表す。
図2にはバイナリ法によるべき乗剰余計算アルゴリズムが例示される。
RSAのべき乗剰余演算は、通常は図2に示すバイナリ法により実装される。べき指数のビットを左から右にスキャンし(S1)、アキュムレータを2乗(m2)してステップS2の演算を行う。スキャンされたビットがゼロ以外のとき、底cとの乗算を計算し(m*c)してステップS3の演算を行う。このプロセスは、全ビットがスキャンされるまで繰り返される。しかし、アタッカによってべき乗の入力cを制御される可能性があり、アタッカがこの入力を十分な回数行い、それによって得られた消費電力を観察することにより、消費電力曲線におけるノイズの平均値が割り出され、秘密鍵が漏洩されてしまう可能性がある。このため、べき乗演算時に秘密鍵(べき指数)をランダム化することが重要となる。
図3にはユークリッド除算によるランダム化べき乗処理の概略が例示される。ここでは、RSA暗号システムに適用可能な、ランダム化されたべき乗を計算するための既に提供されているソリューションの概要を示すものである。法の半分のサイズの乱数rを使って、べき指数を2つに分解する。すなわち、d=d[1]*r + d[0]とする(S4)。数値d[0]、d[1]は、ユークリッド除算d/rの商と剰余を表す。
ステップS4で求められたべき指数に対してステップS4及ぶステップS5の処理を行うことによって暗号文cが平文mに復号される。ステップS5,S6の処理におけるべき乗cr mod n、Cd[1] mod n、cd[0] mod nの演算において、べき指数はランダムであり、そのビット数は元のべき指数dのサイズの半分である。また、Cd[1] mod nとcd[0] modの2つのべき乗を、約1つ分のコストで、同時に計算することが出来る。これについては後述する。しかしながら、このアルゴリズムのべき乗部は、速度の面で大きく不利とはならないが、d[1]、d[0]の計算を効率的に行うことが出来ないため、実際には、処理時間全体に大きく影響する。以下、その処理時間を短縮もしくは演算コストを低減する構成について説明する。
先ず、本発明の実施の形態でも利用する高速多重べき乗演算処理について説明する。ここで説明する高速多重べき乗演算処理は図3におけるステップS6の処理にも適用可能なものである。
図4には高速多重べき乗演算処理として、2つのべき指数a、bによるべき乗、Ca*cb mod nを計算するためのアルゴリズムが例示される。単純な方式としては図1のバイナリ法を使ってCa mod nとcb mod nを別々に計算するが、高速多重べき乗演算処理ではそれらのべき乗を同時に計算して効率化するものである。図4では、入力c、C、事前計算値c*C mod nでテーブルを初期化し(S7)、2つのべき指数a、bの2進表記をスキャンする(S8)。べき乗のアキュムレータは2乗されて(X2)ステップS9の処理が行われるが、乗算工程(S10、S11)では、以下の(a)〜(d)うちのいずれかが行われる。
(a)2つのべき指数のビットがゼロのとき、乗算工程はスキップされ、次の反復に進む。
(b)aのべき指数のビットがゼロ以外で、bのべき指数のビットがゼロのとき、Cの乗算を計算する。
(c)aのべき指数のビットがゼロで、bのべき指数のビットがゼロ以外のとき、cの乗算を計算する。
(d)2つのべき指数のビットがゼロ以外のとき、c*C mod nの乗算を計算する。
図4のアルゴリズムで必要となるのは、多くてg-1回の2乗と g-1回の乗算、また平均g-1回の2乗と3/4*(g-1)回の乗算であり、2*(g-1)回の2乗とg-1回の乗算に関する単純な方式と比べて演算コストは非常に有利となる。
<電力解析に対して保護されたRSA>
次に、電力解析に対して保護されたRSA暗号処理を実現するために、反復ユークリッド除算によるランダム化べき乗を採用した本発明の実施の形態について説明する。
本発明の実施の形態において説明する、反復ユークリッド除算による高速ランダム化べき乗演算の特徴的な点は、d[1]、d[0]の2つの数値だけでなく、小さい数値d[i]でより長い配列が得られるよう、ユークリッド除算を繰り返すことである。その結果、配列を長くすることで、ユークリッド除算に含まれるオペランドのビット長を短くすることが可能となり、これによって、より効率的にソフトウェアとハードウェアの実装を行うことが可能になる。
図1には電力解析に対して保護されたRSA復号処理が全体的に例示される。
先ず、暗号文c、秘密鍵d、法n、パラメータg,t,kを入力する(S11)。次にgビットの乱数rを生成する(S12)。gは法nの1/kのビット数とされる。
次に、d[k], d[k-1], …, d[0]の計算を行う(S13)。この計算手法の具体例については図5に基づいて後述することとする。
ステップS13の計算は、前記乱数rで秘密鍵dを除して商と剰余に分解し、分解した商をさらに前記乱数で除して商と剰余に分解する処理を繰り返し行えばよい。例えば、D’=dに設定して以下のステップを順次実行すればよい。
Step 0:ユークリッド除算D’/rの商と剰余、Dとd[0]を計算する。D’=D に設定する。
Step 1:ユークリッド除算D’/rの商と剰余、Dとd[1]を計算する。D’=D に設定する。
Step 2:ユークリッド除算D’/rの商と剰余、Dとd[2]を計算する。D’=D に設定する。

Step k-2:ユークリッド除算D’/rの商と剰余、Dとd[k-2]を計算。D’=D に設定する。
Step k-1:ユークリッド除算D’/rの商と剰余、Dとd[k-1]を計算。D’=D に設定する。
Step k:ユークリッド除算D’/rの商と剰余、Dとd[k]を計算。D’=D に設定する。
これによってべき指数としての秘密鍵dは、
d = d[k]*rk + d[k-1]*rk-1 + d[k-2]*rk-2 + … + d[2]*r2 + d[1]*r + d[0]
となる。
次に、m=cd mod n の計算を行う(S14)。この計算手法の具体例については図7に基づいて後述することとする。
ステップS14の計算は、前記乱数rのk次に係る定数を、暗号文に対するべき指数としてべき乗剰余演算
C=cd[k] mod n
を行い、その演算結果の剰余Cに対して前記乱数rをべき指数とするべき乗演算値Crと、前記乱数rの次の低位次数k-iに係る定数d[k-i]をべき指数とする前記暗号文cに対するべき乗演算値cd[k-i]との積に対する法nを用いたべき乗剰余演算Cr *cd[k-i] mod nを、前記乱数rの最低次数0に係る定数d[0]を用いるまで順次繰り返す処理を行えばよい。例えば、このべき乗剰余演算は以下の処理ステップで演算することができる。
Step k: C=cd[k] mod n を計算する。
Step k-1: C=Cr *cd[k-1] mod nを計算する。
Step k-2: C=Cr *cd[k-2] mod nを計算する。

Step 2: C=Cr *cd[2] mod nを計算する。
Step 1: C=Cr * cd[1] mod n を計算する。
Step 0: m=Cr * cd[0] mod n を計算する。
これにより、メッセージmとして、
m=(cd[k]*r^k)*(cd[k-1]*r^(k-1))*(cd[k-2]*r^(k-2))*...*(cd[2]*r^2)*(cd[1]*r)*(cd[0])、
m=(((...((( cd[k])r *cd[k-1])r *cd[k-2])r *...)r *cd[2])r *cd[1])r *cd[0]
を得る。
図1の処理を更に詳述する。
図5には配列d[k], …, d[0]の計算処理が例示される。この処理における中心的な演算は、ユークリッド除算D’/rであり、商Dと、d[i]<rとなる剰余d[i]を出力する(S21)。この計算処理においては、従来の計算方法と比べて、乱数rのビット長に対する選択自由度がより高いことに注目されたい。特に、rのビット長が短い場合、ユークリッド除算D’/rに対し、次の図6に示すように、ハードウェア・ソフトウェア上で効率的に計算することが出来る。
図6にはgビットの除数 rによるD’のユークリッド除算処理、即ち図5のステップS21の処理が例示される。D”を最大でも2gビットとしたときの、最小単位のユークリッド除算D”/rに依存していることに注意する。gが十分小さい値の場合、このようなgビット除数による、2gビット整数のユークリッド除算の計算は簡単である。これは、例えばg=16の場合、一般的には主流のCPUアーキテクチャによって直接サポートされる、16ビット除数r による32ビット整数D”の除算に相当する。当然ながら、アーキテクチャによっては、gの値が異なる方が望ましい場合もある。
図7にはランダム化べき指数によるcd mod nの計算処理が例示される。ここでは、べき乗cd mod nを計算するための、配列d[k],…,d[0]の使用について示す。gビットのべき指数によるkのべき乗Cr*cd[i] mod nが存在する。gビットのべき指数は、最大べき指数dよりk倍小さいため、これらのべき乗演算は、最大べき乗と比べて約k倍速くなる。このため、本実施の形態では、通常のRSAべき乗演算と同程度の速度でランダム化を行い、秘密鍵dの漏洩を防ぐことが出来る。べき乗Cr*cd[i] mod nの計算可能な手法は図4に示されるとおりである。
図8には上記ランダム化べき指数によるcd mod nの計算処理を採用したICカード用のマイクロコンピュータのハードウェア構成が例示される。
同図に示されるICカード用のマイクロコンピュータ1はICカード10に適用される。ICカード用のマイクロコンピュータ1は、他の電子機器と通信するための外部入出力インタフェース部(IO)7や、EEPROMのような電気的に書き換え可能な不揮発性メモリ4から読み出されるデータ(d,n,t,g,k)と中間データを保存するためのRAM5を使って、ROM6に格納されたRSA復号プログラムなどのプログラムを実行する中央処理装置(CPU)2を備える。接触インタフェース型のICカード10の場合には図示を省略するカード基板の表面に形成された接触端子に外部入出力インタフェース部(IO)7が接続される。近接非接触通信を行うICカード10の場合には図示を省略するカード基板にアンテナが形成され、外部入出力インタフェース部(IO)7は近接非接触通信のためのアナログ高周波部を有し、このアナログ高周波部に前記アンテナが接続される。
乱数rは乱数生成部(RNG)8で生成する。ICカード用のマイクロコンピュータ1の内部回路は内部バス9で相互に接続される。不揮発性メモリ4は耐タンパー性能を備える。不揮発性メモリの耐タンパー性とは、記憶情報の不正アクセスや回路の改変に対する防護力を意味する。耐タンパ性を高める技術として、例えばLSIを解析するために保護層をはがすと、内部の回路まで破壊されるようにする技術などがある。
ICカード用のマイクロコンピュータ1は、CPU2で実行されるRSA暗号処理プログラムによって、暗号化されたメッセージを復号するために用いられる。復号には、演算コストの非常に高いべき乗演算が用いられる。このため、ICカード用のマイクロコンピュータ1は、プログラム処理回路としてCPU2のほかに、高速な復号を可能とするアクセラレータとしてのコプロセッサ3を搭載指定する。さらにICカード用のマイクロコンピュータ1は、EEPROM4に格納された、RSA復号プログラムで使用される秘密鍵を保護するために、上記ランダム化べき指数によるcd mod nの演算処理を必要とするため、コプロセッサ3は、ユークリッド除算部31を用いて図5で説明したプロセスを実行する配列計算部32と、高速多重べき乗演算部34を用いて図7のプロセスを実行するべき乗演算部33で構成される。
図9にはICカード用のマイクロコンピュータ1によるRSA復号処理を行うハードウェア部とハードウェア部間のデータ通信について例示される。図9には示していないが、CPU2は復号プログラムを実行することで、ハードウェア部の処理とハードウェア部間のデータ通信に対する制御を行う。
ICカード用のマイクロコンピュータ1は外部入出力インタフェース部7から暗号文cを受信する。復号の結果は、コプロセッサ3で計算されたメッセージm=cd mod nである。また、暗号文cとともにコプロセッサ3に入力するデータには、EEPROM4に格納された秘密鍵d、dのビット長t、乱数のビット長g、ceil(t/g)とするパラメータkと、RNG8で生成する乱数rがある。ceil(t/g)はt/gの小数点以下を繰り上げた整数値を返す関数である。
コプロセッサ3は、図6のユークリッド除算を行うユークリッド除算部31と、図5のプロセスを実行する配列計算部32を使って、d[k-1], …, d[0]の配列を計算する。配列計算部32は、RNG8から得るgビットの乱数rを必要とする。その後、図6のプロセスを実行するユークリッド除算部を使って、秘密鍵dを乱数rで割るユークリッド除算の連続によりd[i]を計算する。
d[k], …, d[0]の配列を得た後、図7のプロセスを実行するべき乗演算部33は、cd mod nのべき乗剰余を計算する。具体的には、べき乗演算部はC=Cr*cd[i] mod n の計算をk回繰り返す。ここで、小さい指数rとd[i]のべき乗演算は、図4のプロセスを実行する高速多重べき乗演算部によって行われる。結果は復号化されたメッセージm = cd mod nとなる。
<RSA復号の具体例>
次にRSA復号処理の具体例を説明する。
RSA暗号化のための法nを53*59=3127、公開指数eを17、RSA復号化のための秘密鍵dを2129とすると、べき乗演算c=me mod n = 10002129 mod 3127 = 2931でメッセージm=1000を暗号化できる。実際には、暗号文c=2931の復号化はcd mod n = 29312129 mod 3127 = 1000となる。
復号のランダム化と秘密鍵dの漏洩防止のため、上記実施の形態に示す方法を使用する。ここで、指数のビット長tを12ビット、乱数のビット長を4ビットとすると、k=ceil(t/g)=3となり、べき乗演算に使う配列は4つの4ビット d[3], d[2], d[1], d[0]となる。
はじめに、配列の計算について説明する。4ビットの乱数rを生成し、例えば、r=11の場合、最初はD’=d=2129となる。193*11+6=2129で、一番目の除算D’/r = 2129/11の剰余は6、商は193となるため、D=193、d[0]=6とする。二番目の除算D’/r = 193/11の剰余は6、商は17となるため、D=17、d[1]=6とする。三番目の除算D’/r = 17/11の剰余は6、商は1となるため、d[2]=6、d[3]=1とする。この結果、配列が1,6,6,6となる。実際には1*113 + 6*112 + 6*111 + 6*110=2129となる。
乱数が異なると、異なる配列が生成される。例えば、r=12の場合、一番目の除算2129/12の剰余はd[0]=6で、商は177となる。二番目の除算177/12の剰余はd[1]=9で、商は14となり、三番目の除算14/11の剰余は2で、商は1となる。この結果、配列は1,2,9,5となる。実際には1*123 + 2*122 + 9*121 + 5*120=2129となる。
乱数が4ビット、最上位ビットが1であることから、配列の組み合わせは8通りとなる。実際にはさらに大きな整数を使用するため、幾通りもの配列を実現し、低コストでの計算が可能となるような乱数のビット長を選ばなければならない。この点について16ビットの乱数は有利であるが、他の設定も可能である。
例の残りの部分において、配列を1,2,9,5、r=12とする。d[3]=1であるため、CをC=c1 mod 3127=2931で初期化する。一番目のべき乗演算では、図4の高速多重べき乗演算部を使ってC=Cr*cd[2] mod n = 293112*29312 mod 3127を計算する。テーブルをT[0,1] = 2931, T[1,0] = 2931とT[1,1] = 2931*2931 mod 3127 = 892で初期化する。指数はa=12=(1100)2、b=2=(0010)2である。
a3=1、b3=0であるため、T[1,0]=2931でアキュムレータを初期化する。
次に、二乗算C2 mod n = 2931*2931 mod 3127 = 892を計算する。a2=1、b2=0であるため、掛算C=C*T[1,0] mod n = 892*2931 mod 3127 = 280を行う。
次に、二乗算C2 mod n = 280*280 mod 3127 = 225を計算する。a1=0、b1=1であるため、掛算C=C*T[0,1] mod n = 225*2931 mod 3127 = 2805を行う。
次に、二乗算C2 mod n = 2805*2805 mod 3127 = 493を計算する。a0=0、b0=0であるため、掛算は行わない。
一番目の多重べき乗演算の結果はC=493となる。同様に、二番目の多重べき乗演算はCr*cd[1] mod n = 49312*29319 mod 3127で、詳細を割愛すると、結果はC=2109となる。最後の多重べき乗演算はCr*cd[0] mod n = 210912*29315 mod 3127で、結果は、復号化されたメッセージC=1000となる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、法n、乱数rなどのサイズは適宜決定すればよい。本発明はICカードに適用される場合だけに限定されるものではなく、携帯電話やPDAなどの携帯端末などにも広く適用することができる。本発明に持ちいれCPUは32ビットに限定されず、16ビット又は64ビットなどであってもよい。
1 ICカード用のマイクロコンピュータ
2 CPU
3 コプロセッサ
4 不揮発性メモリ(EEPRPM)
5 RAM
6 ROM
7 外部入出力インタフェース部(IO)
8 乱数生成部(RNG)
9 内部バス
10 ICカード

Claims (10)

  1. 秘密鍵をユークリッド除算による乱数と商と剰余によって表現したべき乗剰余演算を用いてRSA暗号処理を行うセキュリティシステムであって、
    RSA暗号処理に用いるべき乗剰余演算の法nのビット長の正の整数分の一のビット長を持つ乱数rで秘密鍵を除して商と剰余に分解し、分解した商をさらに前記乱数で除して商と剰余に分解する処理を行うことにより、秘密鍵を前記乱数rの2次以上の高次式として処理する、セキュリティシステム。
  2. 秘密鍵を前記乱数rの2次以上の高次式として暗号文を平文に復号するべき乗剰余演算として、
    前記乱数rの最高次数に係る定数を、暗号文に対するべき指数としてべき乗剰余演算を行い、
    その演算結果の剰余に対して前記乱数rをべき指数とするべき乗演算値と、前記乱数rの次の低位次数に係る定数をべき指数とする前記暗号文に対するべき乗演算値との積に対する法nを用いたべき乗剰余演算を、前記乱数rの最低次数に係る定数を用いるまで順次繰り返す処理を行う、請求項1記載のセキュリティシステム。
  3. カード基板に前記RSA暗号処理を行うマイクロコンピュータを搭載してICカードを構成する、請求項2記載のセキュリティシステム。
  4. 秘密鍵をユークリッド除算による乱数rと商Dと剰余とによって表現したべき乗剰余演算を用いてRSA暗号処理を行うセキュリティシステムであって、
    前記乱数rはRSA暗号処理に用いるべき乗剰余演算の法nのビット長の1/k(kは正の整数)のビット長を持ち、
    前記RSA暗号処理において、前記乱数rで秘密鍵dを除して商と剰余に分解し、分解した商をさらに前記乱数で除して商と剰余に分解する処理を行うことにより、秘密鍵dを、
    d = d[k]*rk + d[k-1]*rk-1 + d[k-2]*rk-2 + … + d[2]*r2 + d[1]*r + d[0]
    で示される前記乱数rのk次の高次式として処理する、セキュリティシステム。
  5. 秘密鍵を前記乱数rのk次の高次式として暗号文を平文に復号するべき乗剰余演算において、
    前記乱数rのk次に係る定数を、暗号文に対するべき指数としてべき乗剰余演算
    C=cd[k] mod n
    を行い、
    その演算結果の剰余Cに対して前記乱数rをべき指数とするべき乗演算値Crと、前記乱数rの次の低位次数k-iに係る定数d[k-i]をべき指数とする前記暗号文cに対するべき乗演算値cd[k-i]との積に対する法nを用いたべき乗剰余演算Cr *cd[k-i] mod nを、前記乱数rの最低次数0に係る定数d[0]を用いるまで順次繰り返す処理を行って、
    前記暗号文cに対する平文mを
    m=(cd[k]*r^k)*(cd[k-1]*r^(k-1))*(cd[k-2]*r^(k-2))*...*(cd[2]*r^2)*(cd[1]*r)*(cd[0])、
    m=(((...((( cd[k])r *cd[k-1])r *cd[k-2])r *...)r *cd[2])r *cd[1])r *cd[0]
    として得る、請求項4記載のセキュリティシステム。
  6. 秘密鍵をユークリッド除算による乱数と商と剰余によって表現したべき乗剰余演算を用いてRSA暗号処理を行うプログラム処理回路を有し、
    前記プログラム処理回路は、RSA暗号処理に用いるべき乗剰余演算の法nのビット長の正の整数分の一のビット長を持つ乱数rで秘密鍵を除して商と剰余に分解し、分解した商をさらに前記乱数で除して商と剰余に分解する処理を行うことにより、秘密鍵を前記乱数rの2次以上の高次式として処理する、マイクロコンピュータ。
  7. 前記プログラム処理回路は、秘密鍵を前記乱数rの2次以上の高次式として暗号文を平文に復号するべき乗剰余演算として、
    前記乱数rの最高次数に係る定数を、暗号文に対するべき指数としてべき乗剰余演算を行い、
    その演算結果の剰余に対して前記乱数rをべき指数とするべき乗演算値と、前記乱数rの次の低位次数に係る定数をべき指数とする前記暗号文に対するべき乗演算値との積に対する法nを用いたべき乗剰余演算を、前記乱数rの最低次数に係る定数を用いるまで順次繰り返す処理を行う、請求項6記載のマイクロコンピュータ。
  8. 前記プログラム処理回路が実行することによって前記RSA暗号処理を行うためのプログラムを格納する耐タンパー性能を備えたプログラムメモリ領域を有する、請求項7記載のマイクロコンピュータ。
  9. 前記秘密鍵を格納する耐タンパー性能を備えた不揮発性メモリ領域を有する、請求項8記載のマイクロコンピュータ。
  10. 前記プログラム処理回路として、中央処理装置と、前記中央処理装置の制御に基づいて演算を行うコプロセッサとを有し、
    前記コプロセッサは、ユークリッド除算を行うユークリッド除算部と、前記中央処理装置の制御に基づいてべき乗演算を行うべき乗演算部とを有する、請求項9記載のマイクロコンピュータ。
JP2011111297A 2011-05-18 2011-05-18 セキュリティシステム及びマイクロコンピュータ Withdrawn JP2012242539A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011111297A JP2012242539A (ja) 2011-05-18 2011-05-18 セキュリティシステム及びマイクロコンピュータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011111297A JP2012242539A (ja) 2011-05-18 2011-05-18 セキュリティシステム及びマイクロコンピュータ

Publications (1)

Publication Number Publication Date
JP2012242539A true JP2012242539A (ja) 2012-12-10

Family

ID=47464329

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011111297A Withdrawn JP2012242539A (ja) 2011-05-18 2011-05-18 セキュリティシステム及びマイクロコンピュータ

Country Status (1)

Country Link
JP (1) JP2012242539A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368477A (zh) * 2016-05-11 2017-11-21 北京京东尚科信息技术有限公司 基于HBase协处理器的类SQL查询的方法和系统
CN112805770A (zh) * 2018-10-10 2021-05-14 日本电信电话株式会社 秘密右移位运算系统、秘密除法运算系统、它们的方法、秘密计算装置以及程序

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368477A (zh) * 2016-05-11 2017-11-21 北京京东尚科信息技术有限公司 基于HBase协处理器的类SQL查询的方法和系统
CN112805770A (zh) * 2018-10-10 2021-05-14 日本电信电话株式会社 秘密右移位运算系统、秘密除法运算系统、它们的方法、秘密计算装置以及程序
CN112805770B (zh) * 2018-10-10 2023-10-03 日本电信电话株式会社 秘密右移位运算系统及方法、秘密除法运算系统及方法、秘密计算装置以及记录介质

Similar Documents

Publication Publication Date Title
US9772821B2 (en) Cryptography method comprising an operation of multiplication by a scalar or an exponentiation
JP4875700B2 (ja) ランダム化されたモジュラー多項式のリダクション方法およびそのためのハードウェア
US8280041B2 (en) Chinese remainder theorem-based computation method for cryptosystems
Nara et al. Scan-based attack against elliptic curve cryptosystems
US9577826B2 (en) Method of generating proven prime numbers suitable for being implemented in a smart card
US20080240443A1 (en) Method and apparatus for securely processing secret data
Furbass et al. ECC processor with low die size for RFID applications
CN107040362A (zh) 模乘设备和方法
WO2012090288A1 (ja) 暗号処理装置、暗号処理方法、およびプログラム
JP5573964B2 (ja) 暗号処理装置および方法
CN107896142B (zh) 一种执行模幂运算的方法及装置、计算机可读存储介质
US20110293088A1 (en) Method of determining a representation of a product, method of evaluating a function and associated devices
JP2009505148A (ja) 暗号化演算における反転操作を行うための回路配置及び方法
JP2012242539A (ja) セキュリティシステム及びマイクロコンピュータ
KR101990861B1 (ko) 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치
US10505710B2 (en) Electronic calculating device
US7974409B2 (en) Changing the order of public key cryptographic computations
KR101472800B1 (ko) 공개키 암호화 연산에서의 윈도우의 크기를 변경하는 방법
JP3904421B2 (ja) 剰余乗算演算装置
WO2008013154A1 (en) Extension filed multiplication program and extension filed multiplication device
US20230195943A1 (en) Processor architecture and related techniques
US11329796B2 (en) Protection of an iterative calculation
KR101805840B1 (ko) 암호 계산을 위한 방법, 장치 및 비일시적이고 컴퓨터로 독출가능한 매체
JP5179933B2 (ja) データ処理装置
US11265142B2 (en) Protection of an iterative calculation

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20140805