JP2009008993A - べき乗剰余演算器及びその制御方法 - Google Patents

べき乗剰余演算器及びその制御方法 Download PDF

Info

Publication number
JP2009008993A
JP2009008993A JP2007171831A JP2007171831A JP2009008993A JP 2009008993 A JP2009008993 A JP 2009008993A JP 2007171831 A JP2007171831 A JP 2007171831A JP 2007171831 A JP2007171831 A JP 2007171831A JP 2009008993 A JP2009008993 A JP 2009008993A
Authority
JP
Japan
Prior art keywords
power
value
register
calculation
residue
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.)
Pending
Application number
JP2007171831A
Other languages
English (en)
Inventor
Hiroshi Fukazawa
宏 深澤
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.)
NEC Electronics Corp
Original Assignee
NEC 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 NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2007171831A priority Critical patent/JP2009008993A/ja
Priority to US12/213,319 priority patent/US20100005131A1/en
Publication of JP2009008993A publication Critical patent/JP2009008993A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/005Countermeasures against attacks on cryptographic mechanisms for timing attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】従来のべき乗剰余演算器は、回路規模が増大する問題があった。
【解決手段】本発明のべき乗剰余演算器は、被乗数、乗数、及び、除数に基づき乗算演算及び剰余演算を行なう乗算剰余演算器21と、べき数を二進数で示した場合の各ビットの値を個別に格納するべき数格納部と、参照するビットの値に応じて乗算剰余演算器21の出力と被乗数とのいずれか一方を出力する第1の選択回路22と、第1の選択回路22の出力値を演算結果として格納する結果格納レジスタ26と、を有するものである。
【選択図】図1

Description

本発明はべき乗剰余演算器及びその制御方法に関し、特に耐タンパー機能を有するべき乗剰余演算器及びその制御方法に関する。
近年、クレジットカード等にICチップを埋め込み、ICチップ内にカード情報や個人情報等を格納することが行なわれている。このようなICチップには、ICチップに格納された情報を漏洩あるいは改竄から守る必要がある。このような情報保護機能を耐タンパー機能と称し、情報保護能力を耐タンパー性と称す。
また、情報を秘匿するためにICチップに格納される情報は、一般的にRSA(Rivest Shamir Adleman scheme)暗号方式等を用いた暗号化処理が行なわれている。そして、情報は暗号化された状態でICチップ内に格納され、読み出し時に復号化される。RSA暗号方式など現在一般的に用いられる暗号化方式は、暗号化のアルゴリズムが公開されており安全性については十分な検討がされている。しかしながら、このアルゴリズムをハードウェアやソフトウェアに実装した場合の安全性については、その実装方法による部分もあるため十分な検討がされていない。例えば、実装されたアルゴリズムの脆弱性をついて秘密情報を入手する方法としてサイドチャネル攻撃が存在する。
サイドチャネル攻撃は、本来の通信経路(チャネルと称す)以外の経路から秘密情報を導き出す方法である。例えば、情報の暗号化あるいは復号化を実行中のICチップの消費電力や電磁波、処理時間などのサイドチャネル情報から内部に格納された情報を導き出す。消費電力の波形から情報を導き出す方法をSPA(Simple Power Analysis)と称し、消費電力の差を統計的に処理することで演算内容の違いを判別する方法をDPA(Differential Power Analysis)と称し、演算の処理時間の変化に着目する方法をタイミングアタックと称す。
ここで、RSA暗号方式で用いられる暗号化及び復号化の演算について簡単に説明する。RSA暗号方式では、暗号化処理を(1)式に基づき行ない、復号化処理を(2)式に基づき行なう。
C=MmodN ・・・(1)
M=CmodN ・・・(2)
なお、(1)、(2)式における、Cは暗号文を数値化したものであり、Mは平文を数値化したものであり、E及びNは公開鍵を数値化したものであり、Dは秘密鍵を数値化したものである。
つまり、RSA暗号方式では、暗号化処理及び復号化処理をともに同じべき乗剰余演算によって行なうことが可能である。このようなことから、べき数E及びDをともにD、暗号化処理における平文MをX、暗号文CをY、復号化処理における暗号文CをX、平文MをYとするとRSA暗号方式の演算は(3)式であらわすことができる。
Y=XmodN ・・・(3)
(3)式に示す演算を実行する演算器を以下では、べき乗剰余演算器と称す。
ここで、(3)式で示す演算を二進数によって表現した数値を用いて実現する方法について説明する。べき数を二進数で示し、べき数を示すビットの値が"0"である場合は二乗算を行ない、べき数を示すビットの値が"1"である場合は二乗算と乗算とを行なうことで(3)式で示すべき乗剰余演算を行なう方法をバイナリ法と称す。つまり、バイナリ法を用いた場合、(3)式は、A×BmodNの繰り返し演算によって実現することができる。このバイナリ法を用いたRSA暗号方式の演算アルゴリズムを以下に示す。
Y=1 ・・・(4)
for(j=1024 to 1) ・・・(5)
Y=Y×YmodN ・・・(6)
if(d[j]==1) then Y=Y×XmodN ・・・(7)
end for
なお、d[j]はべき数Dのjビット目の値を示す。
上記アルゴリズムによると、例えばべき数Dが57であった場合、べき数Dは二進数表記によって"111001"となる。従って、最上位ビットを含む上位3ビットの演算においては(6)式及び(7)式の演算が行なわれる。しかし、最上位ビットから4番目及び5番目のビットについては、値が"0"であるため、(6)式の演算のみが行なわれる。
従って、RSA暗号方式をバイナリ法を用いてICチップに実装した場合、べき数Dの値によって演算方法が異なるため、この違いに基づきタイミングアタック、SPA又はDPAなどのサイドチャネル攻撃を受ける可能性がある。
このようなサイドチャネル攻撃に対して耐タンパー性を向上させるための技術が特許文献1、2(以下、従来例1、2と称す)に開示されている。従来例1に開示されているべき乗剰余演算器のブロック図を図4に示す。従来例1では、べき数Dの値がd[j]=0であった場合、ダミー演算として(7)式の演算を行なうことで、演算の違いによる消費電力及びタイミングの差を無くす。また、従来例1では、ダミー演算の結果を格納するためのKレジスタ132を設け、ダミー演算の結果をKレジスタ132に書き込む。これによって、従来例1では、d[j]=0のときの演算結果を(7)式が実行されないものと同一にしながら、レジスタへの書き込みによって生じる消費電力の差を低減する。つまり、従来例1のべき乗剰余演算器は、べき数の値が"0"であった場合にダミー演算及びダミーレジスタ(Kレジスタ132)への書き込みを行なうことで、べき数の値による計算時間及び消費電力の差を低減してサイドチャネル攻撃に対する耐タンパー性を向上させる。
また、従来例2に記載された技術では、べき数の値が"0"であった場合にダミー演算を行なう。そして、演算結果は、廃棄あるいはダミーレジスタへの書き込みが行なわれる。つまり、従来例2においても、従来例1と同様に、べき数の値による計算時間及び消費電力の差を低減してサイドチャネル攻撃に対する耐タンパー性を向上させる。
特開2004−125891号公報 特開2001−195555号公報
しかしながら、従来例1、2に示す方法では、ダミー演算の結果を格納するダミーレジスタが必要になり、このダミーレジスタによって回路規模が増大する問題がある。近年のRSA暗号方式では、公開鍵及び秘密鍵の情報として1024ビット〜2048ビットのものを用いることが一般的である。そのため、ダミーレジスタは、鍵の大きさに応じて1024ビット〜2048ビットが必要になる。情報の秘匿性は、鍵のビット数に依存するため、情報の秘匿性を高めようとした場合、鍵のビット数は更に大きくなり、ダミーレジスタの大きさも更に大きくなるため、ダミーレジスタの大きさが回路規模に与える影響は秘匿性の向上とともに更に大きくなる。
本発明の一態様は、被乗数、乗数、及び、除数に基づき乗算演算及び剰余演算を行なう乗算剰余演算器と、べき数を二進数で示した場合の各ビットの値を個別に格納するべき数格納部と、参照する前記ビットの値に応じて前記乗算剰余演算器の出力と前記被乗数とのいずれか一方を出力する第1の選択回路と、前記第1の選択回路の出力値を演算結果として格納する結果格納レジスタと、を有するべき乗剰余演算器である。
本発明の別の態様は、べき乗剰余演算器の制御方法であって、べき数を二進数で示した場合の各ビットの値を個別に格納し、被乗数、乗数、及び、除数に基づき乗算演算及び剰余演算を行ない、参照する前記ビットの値に応じて前記乗算剰余演算器の出力と前記被乗数とのいずれか一方を演算結果として結果格納レジスタに格納するべき乗剰余演算器の制御方法である。
本発明にかかるべき乗剰余演算器によれば、べき数を示す各ビットのうち参照しているビットの値に応じて乗算剰余演算器の出力と被乗数とのいずれか一方を結果格納レジスタに格納する。これによって、乗算剰余演算器によって実行された演算を廃棄した場合であっても、結果格納レジスタに被乗数を書き込むことができる。つまり、乗算剰余演算器によってダミー演算を実行した場合であっても、本発明にかかるべき乗剰余演算器は、その結果を廃棄して被乗数を結果格納レジスタに書き込むことで、演算の整合性を保つことができる。また、ダミー演算及び結果格納レジスタの書き込みを行なうことにより、本発明にかかるべき乗剰余演算器は、べき数の値によらず消費電力及び演算時間をほぼ一定に保つことができる。
本発明にかかるべき乗剰余演算器は、回路規模の増加を抑制しながら耐タンパー性を向上させることができる。
実施の形態1
本発明にかかるべき乗剰余演算器は、RSA暗号方式で用いられるべき乗剰余演算を行なう演算器である。以下の説明では、一例として1024ビットのべき数を有するRSA暗号方式について説明する。本発明にかかるべき乗剰余演算器は、べき数の値を二進数によって表現した場合のべき数のビット長に応じて繰り返し演算を行ない、(8)式の演算結果を得る。また、(8)式において、Xは暗号化処理における平文M、復号化処理における暗号文Cであり、Yは暗号化処理おける暗号文C、復号化処理における平文Mであり、Dはべき数であって暗号化処理における公開鍵、復号化処理における秘密鍵であり、Nは公開鍵である。
Y=XmodN ・・・(8)
また、本発明にかかるべき乗剰余演算器は、べき数が1024ビットで示される場合、以下のアルゴリズムに基づき動作する。
Y=1 ・・・(9)
for(j=1024 to 1) ・・・(10)
Y=Y×YmodN ・・・(11)
if(d[j]==1) then Y=Y×XmodN ・・・(12)
end for
なお、d[j]はべき数Dのjビット目の値を示す。
以下、図面を参照して本発明の実施の形態について説明する。実施の形態1にかかるべき乗剰余演算器1のブロック図を図1に示す。図1に示すように、べき乗剰余演算器1は、制御回路10、乗算剰余演算器21、第1の選択回路22、第2の選択回路23、Xレジスタ24、Nレジスタ25、結果格納レジスタ(例えば、Yレジスタ)26、第1の中間レジスタ(例えば、Aレジスタ)27、第2の中間レジスタ(例えば、Bレジスタ)28を有している。
Xレジスタ24には、(8)式におけるXの値が格納され、格納された値は信号kとして出力される。Nレジスタ25には、除数(例えば、(8)式におけるNの値)が格納され、格納された値は信号lとして出力される。Yレジスタ26には、(8)式におけるYの値が格納され、格納された値は信号iとして出力される。Aレジスタ27には、被乗数(例えば、Yレジスタ26に格納された前周期の演算結果をコピーした値)が信号iとして与えられ、この値が格納される。Aレジスタ27に格納された値は信号a及び信号eとして出力される。Bレジスタ28には、乗数(例えば、第2の選択回路23が信号nとして出力する値)が格納され、格納された値は信号fとして出力される。
第1の選択回路22は、制御回路10が出力するダミー演算信号cの値に応じて、Aレジスタ27が出力する信号dと乗算剰余演算器21が出力する信号gとのいずれか一方を選択して出力する。つまり、第1の選択回路22は、ダミー演算信号cの値に応じてAレジスタ27に格納されている前周期の演算結果と乗算剰余演算器21の演算結果とのいずれか一方を選択して出力する。第1の選択回路22は、例えば、ダミー演算信号cが"1"であった場合、信号dを選択してAレジスタ27に格納されている前周期の演算結果を出力する。一方、ダミー演算信号cが"0"であった場合、信号gを選択して乗算剰余演算器21の演算結果を出力する。なお、第1の選択回路22の出力は信号hとして出力される。
第2の選択回路23は、制御回路10が出力する演算選択信号mの値に応じて、信号kと信号iのいずれか一方を選択して出力する。つまり、第2の選択回路23は、演算選択信号mの値に応じて(8)式におけるXの値とYの値とのいずれか一方を選択して出力する。第2の選択回路23は、例えば、演算選択信号mが"1"であった場合、信号kを選択してXレジスタ24に格納されている新たな入力値(例えば、X)を出力する。一方、演算選択信号mが"0"であった場合、信号iを選択してYレジスタ26に格納されている前周期の演算結果(例えば、Y)を出力する。なお、第1の選択回路22の出力は信号nとして出力される。
乗算剰余演算器21は、Aレジスタ27に格納された被乗数とBレジスタ28に格納された乗数との乗算結果をNレジスタ25に格納された除数で除して得られる剰余を計算する。つまり、乗算剰余演算器21は、Bレジスタ28に信号iとして与えられる前周期の演算結果が格納されている場合、(11)式におけるY×YmodNを計算し、Bレジスタ28に信号kとして与えられる新たな入力値が格納されている場合、(12)におけるY×XmodNを計算する。以下の説明では、Bレジスタ28にY(前周期の演算結果)が格納されている場合の乗算剰余演算器21の計算を第1の演算と称し、Bレジスタ28にX(新たな入力値)が格納されている場合の乗算剰余演算器21の計算を第2の演算と称す。なお、乗算剰余演算器21の演算結果は信号gとして第1の選択回路22に対して出力される。また、乗算剰余演算器21は、制御回路10が出力する演算開始信号bが"1"である場合に演算を行ない、演算が完了すると演算か完了したことを動作ステータス信号aとして制御回路に通知する。
制御回路10は、べき数格納部(例えば、Dレジスタ)11とシーケンス制御回路12とを有している。Dレジスタ11は、複数のべき数格納レジスタを有する。複数のべき数格納レジスタには、べき数を二進数で表現した各ビットの値が個別に格納される。また、シーケンス制御回路12は、Pレジスタ13を有している。Pレジスタ13は、シーケンス制御回路12がDレジスタ11のいずれのビットを参照しているかを確認するためのカウント値が格納される。Pレジスタは、例えばDレジスタ11が1024ビットであった場合、10ビットのカウント値を格納できればよい。
シーケンス制御回路12は、演算開始信号bの値を切り替えて乗算剰余演算器21に演算開始を指示するとともに、乗算剰余演算器21から動作ステータス信号aを受けることで乗算剰余演算器21との間で演算の経過情報を送受信する。また、経過情報に基づき演算選択信号mの値を切り替えることで、乗算剰余演算器21に第1の演算と第2の演算とを交互に実行させる。更に、Dレジスタ11を順次参照し、参照したDレジスタ11の値に基づきダミー演算信号cの値を切り替える。
シーケンス制御回路12は、例えば、次のように演算選択信号m及びダミー演算信号cを制御する。演算選択信号mは、第1の演算を行なう期間において"0"とされ、第2の演算を行なう期間においては"1"とされる。また、ダミー演算信号cは、乗算剰余演算器21が第1の演算を行なっている場合、参照しているDレジスタ11の値に関わらず"0"とされる。一方、乗算剰余演算器21が第2の演算を行なっている場合、ダミー演算信号cは、参照しているDレジスタ11の値が"1"であれば"0"とされ、Dレジスタ11の値が"0"であれば"1"とされる。
次に、図2にべき乗剰余演算器1の動作を示すフローチャートを示す。図2を参照してべき乗剰余演算器1の動作について説明する。べき乗剰余演算器1は、演算の初期状態として、Yレジスタ26に格納される値を1とし、Pレジスタ13に格納される値を1024とする(ステップS1)。また、図示しないが、Xレジスタ24には演算に用いる新たな入力値Xが格納され、Nレジスタには演算に用いる除数Nが格納される。
続いて、ステップS2において、制御回路10は、演算選択信号mを"0"とする。これによって、第2の選択回路23は、信号iを選択して出力する。これによって、Bレジスタ28には、Yレジスタ26に格納されている値が格納される。このとき、Aレジスタ27には、Yレジスタ26に格納されている値が格納される。
Aレジスタ27とBレジスタ28に値が格納されると、制御回路10は、ダミー演算信号cを"0"とし(ステップS3)、演算開始信号bを"1"とする(ステップS4)。そして、演算開始信号bが"1"となることによって、乗算剰余演算器21は演算を開始する(ステップS5)。このステップS5では、乗算剰余演算器21は、Y×YmodNを演算する。つまり、ステップS5で乗算剰余演算器21が行なう演算は第1の演算である。そして、乗算剰余演算器21は、演算が完了するまで動作ステータス信号aを"1"のまま保持する(ステップS6)。
乗算剰余演算器21における演算が完了すると動作ステータス信号aが"0"となるため、制御回路10は、演算開始信号bを"0"とする(ステップS7)。そして、ステップS3において、ダミー演算信号cが"0"とされているため、第1の選択回路22は乗算剰余演算器21が出力する信号gを選択する。そのため、Yレジスタ26には、乗算剰余演算器21の演算結果が格納され、Y=Y×YmodNとなる(ステップS8)。ステップS2〜ステップS8が第1の演算に関する処理になる。
続いて、制御回路10は、演算選択信号mを"1"とする。これによって、第2の選択回路23は信号kを選択し、Bレジスタ28にはXレジスタ24に格納されている新たな入力値Xが格納される(ステップS9)。このとき、Aレジスタ27にはステップS8でYレジスタ26に格納された値のコピーが格納される。
次に、制御回路10は、Dレジスタ11のPビット目に格納されているビットの値を参照する(ステップS10)。制御回路10は、ステップS10にて参照したビットの値が"1"である場合、ダミー演算信号cを"0"とする(ステップS11)。一方、制御回路10は、ステップS10で参照したビットの値が"0"であった場合、ダミー演算信号cを"1"とする(ステップS12)。
制御回路10は、ダミー演算信号cの値を確定した後、演算開始信号bの値を"1"とする(ステップS13)。ステップS13にて、演算開始信号bの値が"1"となるのに応じて、乗算剰余演算器21は、演算を開始する(ステップS14)。ステップS14にて行なわれる演算は、Y×XmodNである。つまり、ステップS14で乗算剰余演算器21が行なう演算は第2の演算である。そして、乗算剰余演算器21は、演算が完了するまで動作ステータス信号aを"1"のまま保持する(ステップS15)。
乗算剰余演算器21における演算が完了すると動作ステータス信号aが"0"となるため、制御回路10は、演算開始信号bを"0"とする(ステップS16)。そして、ステップS11において、ダミー演算信号cが"0"とされている場合、第1の選択回路22は乗算剰余演算器21が出力する信号gを選択する。そのため、Yレジスタ26には、乗算剰余演算器21の演算結果が格納され、Y=Y×XmodNとなる(ステップS18)。一方、ステップS12において、ダミー演算信号cが"1"とされている場合、第1の選択回路22はAレジスタ27が出力する信号dを選択する。そのため、Yレジスタ26には、Aレジスタ27に格納されている前周期の演算結果(例えばステップS8においてYレジスタ26に格納された値)が書き戻され、Y=Y×YmodNとなる(ステップS19)。ステップS9〜ステップS18(又はステップS19)が第2の演算に関する処理になる。
そして、Pレジスタ13に格納されている値を判定する(ステップS20)。ステップS20において、Pレジスタに格納されている値が"0"よりも大きければ、Pレジスタ13に格納されている値を1つ減算し再びステップS2の処理に戻る(ステップS21)。一方、ステップS20において、Pレジスタの値が"0"であった場合、べき乗剰余演算器1は、演算を終了する。つまり、べき乗剰余演算器1は、べき乗を示す値のビット長に応じて第1の演算と第2の演算を繰り返す。そして、第2の演算を行なった後、参照しているビットの値に応じて、第2の演算の結果をYレジスタ26に格納するか、前周期のYレジスタ26の値を再度書き戻すかを決定する。
上記説明より、本実施の形態にかかるべき乗剰余演算器1は、制御回路10が参照しているビットの値に応じて第1の選択回路22を制御することで、Yレジスタ26に前周期の演算結果を書き戻すか、乗算剰余演算器21の演算結果を書き込むか、を切り替える。つまり、べき乗剰余演算器1は、参照しているビットの値が1である場合は、Yレジスタ26に乗算剰余演算器21の演算結果を書き込む。一方、参照しているビットの値が"0"であった場合は、乗算剰余演算器21の演算結果を廃棄して前周期の演算結果をYレジスタ26に書き戻す。これによって、べき乗剰余演算器1は、第2の演算において行なった演算がダミー演算であった場合であっても、前周期の演算結果をYレジスタ26に書き込むことでダミー演算後にYレジスタ26に格納されている値の整合性を保つことができる。そして、べき乗剰余演算器1は、ダミー演算後のYレジスタへの書き込みにおける消費電力を発生させ、ダミー演算が行なわれる場合と行なわれない場合との消費電力の差を低減する。また、べき乗剰余演算器1は、参照するビットの値に関わらず第2の演算を行なうため、べき数の値の違いによる計算時間及び消費電力の差を低減することができる。これらのことより、べき乗剰余演算器1は、演算内容によらず計算時間及び消費電力をほぼ一定に保つことができるため、高い耐タンパー性を実現できる。
また、べき乗剰余演算器1は、第2の演算の結果を廃棄する場合、乗算剰余演算器21の計算結果に代えて、前周期の演算結果をYレジスタ26に書き戻すため、ダミー演算の結果を書き込むためのダミーレジスタが必要ない。つまり、べき乗剰余演算器1は、ダミーレジスタを設けることなく、演算の整合性及び耐タンパー性の向上が可能である。このことから、べき乗剰余演算器1は、高い耐タンパー性を確保しながら、回路規模を小さくすることが可能である。
実施の形態2
実施の形態2にかかるべき乗剰余演算器2のブロック図を図3に示す。図3に示すように、べき乗剰余演算器2は、制御回路10に代えて制御回路30を有している。なお、べき乗剰余演算器2において制御回路30以外の部分についてはべき乗剰余演算器1と同じ構成であるため説明を省略する。
制御回路30は、記憶装置31、中央演算処理装置(Central Processing Unit:CPU)32、動作設定レジスタ33を有している。制御回路30は、CPU32が記憶装置31に格納されたプログラムを実行した結果に基づき乗算剰余演算器21、第1の選択回路22、第2の選択回路23を制御する。なお、本実施の形態では、計算に用いられる数式はプログラムによって定義され、CPU32がプログラムに基づきXレジスタ24、Nレジスタ25にそれぞれ値を格納する。また、計算に用いるべき数は、プログラム上で定義され、二進数の値として記憶装置31に格納される。つまり、記憶装置31は、べき数格納部として機能する。そして、CPU32は記憶装置31に格納されているべき数を示すビットの値を順次参照して第1の選択回路22を制御する。
また、制御回路30は、乗算剰余演算器21、第1の選択回路22、第2の選択回路23を制御する場合、動作設定レジスタ33に制御用の値を格納する。そして、乗算剰余演算器21、第1の選択回路22、及び、第2の選択回路23は、動作設定レジスタ33に格納された値に基づき動作する。なお、動作設定レジスタ33には、乗算剰余演算器21、第1の選択回路22、第2の選択回路23が参照するレジスタが個別に定義されている。
上記説明より、べき乗剰余演算器2は、制御回路の別の形態を示すものであり、実施の形態1と同様の動作を行なうため、高い耐タンパー性を実現できる。また、システムにおいて記憶装置31及びCPU32を有している場合、べき乗剰余演算器2は、制御回路として記憶装置31及びCPU32を流用できるため、べき乗剰余演算器1における制御回路10は必要ない。つまり、べき乗剰余演算器2は、べき乗剰余演算器1よりも回路規模を削減することが可能である。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、Xレジスタ24、Nレジスタ25、Yレジスタ26、Aレジスタ27、Bレジスタ28は、個別に設けられたレジスタではなく、格納する値に応じて一体に形成されたレジスタの領域をそれぞれ定義したものとして設けることも可能である。
実施の形態1にかかるべき乗剰余演算器のブロック図である。 実施の形態1にかかるべき乗剰余演算器の動作を示すフローチャートである。 実施の形態2にかかるべき乗剰余演算器のブロック図である。 従来例1にかかるべき乗剰余演算器のブロック図である。
符号の説明
1、2 べき乗剰余演算器
10、30 制御回路
11 Dレジスタ
12 シーケンス制御回路
13 Pレジスタ
21 乗算剰余演算器
22、23 選択回路
24 Xレジスタ
25 Nレジスタ
26 Yレジスタ
27 Aレジスタ
28 Bレジスタ
31 記憶装置
32 CPU
33 動作設定レジスタ
a 動作ステータス信号
b 演算開始信号
c ダミー演算信号
m 演算選択信号
d〜l、n 信号

Claims (10)

  1. 被乗数、乗数、及び、除数に基づき乗算演算及び剰余演算を行なう乗算剰余演算器と、
    べき数を二進数で示した場合の各ビットの値を個別に格納するべき数格納部と、
    参照する前記ビットの値に応じて前記乗算剰余演算器の出力と前記被乗数とのいずれか一方を出力する第1の選択回路と、
    前記第1の選択回路の出力値を演算結果として格納する結果格納レジスタと、
    を有するべき乗剰余演算器。
  2. 前記乗算剰余演算器は、前記被乗数及び前記乗数として前記結果格納レジスタに格納される前周期の前記演算結果を用いる第1の演算と、前記被乗数として前記結果格納レジスタに格納される前周期の前記演算結果を用い、前記乗数として新たに入力される入力値を用いる第2の演算と、を交互に行なう請求項1に記載のべき乗剰余演算器。
  3. 前記べき乗剰余演算器は、前記ビットの値を参照して、前記第1の選択回路がいずれの値を選択するかを指定する第1の選択信号を生成する制御回路を有する請求項1又は2に記載のべき乗剰余演算器。
  4. 前記制御回路は、前記べき数格納部と、前記べき数格納部のビットの値を順次参照して前記第1の選択信号を出力するシーケンス制御回路とを有する請求項3に記載のべき乗剰余演算器。
  5. 前記制御回路は、前記べき数格納部として機能し、さらにプログラムが格納される記憶装置と、前記第1の選択信号の値として参照される第1の参照値の値が格納される設定レジスタと、前記プログラムに基づき前記設定レジスタに格納する値を出力する中央演算処理装置とを有する請求項3に記載のべき乗剰余演算器。
  6. 前記べき乗剰余演算器は、前記第1の演算において前記乗数として前周期の前記演算結果を前記乗算剰余演算器に出力し、前記第2の演算において前記乗数として前記入力値を前記乗算剰余演算器に出力する第2の選択回路を有する請求項2に記載のべき乗剰余演算器。
  7. 前記べき乗剰余演算器は、演算の経過に基づき前記第2の選択回路がいずれの値を選択するかを指定する第2の選択信号を生成する制御回路を有する請求項6に記載のべき乗剰余演算器。
  8. 前記制御回路は、前記べき数格納部として機能し、さらにプログラムが格納される記憶装置と、前記第2の選択信号の値として参照される第2の参照値の値が格納される設定レジスタと、前記プログラムに基づき前記設定レジスタに格納する値を出力する中央演算処理装置とを有する請求項7に記載のべき乗剰余演算器。
  9. 前記べき乗剰余演算器は、前記被乗数を格納する第1の中間レジスタと、前記乗数を格納する第2の中間レジスタとを有する請求項1乃至8のいずれか1項に記載のべき乗剰余演算器。
  10. べき乗剰余演算器の制御方法であって、
    べき数を二進数で示した場合の各ビットの値を個別に格納し、
    被乗数、乗数、及び、除数に基づき乗算演算及び剰余演算を行ない、
    参照する前記ビットの値に応じて前記乗算剰余演算器の出力と前記被乗数とのいずれか一方を演算結果として結果格納レジスタに格納する
    べき乗剰余演算器の制御方法。
JP2007171831A 2007-06-29 2007-06-29 べき乗剰余演算器及びその制御方法 Pending JP2009008993A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007171831A JP2009008993A (ja) 2007-06-29 2007-06-29 べき乗剰余演算器及びその制御方法
US12/213,319 US20100005131A1 (en) 2007-06-29 2008-06-18 Power-residue calculating unit and method of controlling the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007171831A JP2009008993A (ja) 2007-06-29 2007-06-29 べき乗剰余演算器及びその制御方法

Publications (1)

Publication Number Publication Date
JP2009008993A true JP2009008993A (ja) 2009-01-15

Family

ID=40324108

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007171831A Pending JP2009008993A (ja) 2007-06-29 2007-06-29 べき乗剰余演算器及びその制御方法

Country Status (2)

Country Link
US (1) US20100005131A1 (ja)
JP (1) JP2009008993A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5926655B2 (ja) * 2012-08-30 2016-05-25 ルネサスエレクトロニクス株式会社 中央処理装置および演算装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0749769A (ja) * 1993-08-04 1995-02-21 Nippon Telegr & Teleph Corp <Ntt> べき乗演算装置
US6064740A (en) * 1997-11-12 2000-05-16 Curiger; Andreas Method and apparatus for masking modulo exponentiation calculations in an integrated circuit
JP2000330470A (ja) * 1999-03-15 2000-11-30 Matsushita Electric Ind Co Ltd べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体
JP2001195555A (ja) * 2000-01-12 2001-07-19 Hitachi Ltd Icカードとマイクロコンピュータ

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5195052A (en) * 1991-12-13 1993-03-16 International Business Machines Corporation Circuit and method for performing integer power operations
JPH10283340A (ja) * 1997-04-10 1998-10-23 Mitsubishi Electric Corp 演算プロセッサ
US6567832B1 (en) * 1999-03-15 2003-05-20 Matsushita Electric Industrial Co., Ltd. Device, method, and storage medium for exponentiation and elliptic curve exponentiation
TW536672B (en) * 2000-01-12 2003-06-11 Hitachi Ltd IC card and microcomputer
DE10151129B4 (de) * 2001-10-17 2004-07-29 Infineon Technologies Ag Verfahren und Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation in einer Kryptographieschaltung
JP4360792B2 (ja) * 2002-09-30 2009-11-11 株式会社ルネサステクノロジ べき乗剰余演算器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0749769A (ja) * 1993-08-04 1995-02-21 Nippon Telegr & Teleph Corp <Ntt> べき乗演算装置
US6064740A (en) * 1997-11-12 2000-05-16 Curiger; Andreas Method and apparatus for masking modulo exponentiation calculations in an integrated circuit
JP2000330470A (ja) * 1999-03-15 2000-11-30 Matsushita Electric Ind Co Ltd べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体
JP2001195555A (ja) * 2000-01-12 2001-07-19 Hitachi Ltd Icカードとマイクロコンピュータ

Also Published As

Publication number Publication date
US20100005131A1 (en) 2010-01-07

Similar Documents

Publication Publication Date Title
EP0947914B1 (en) Computationally efficient modular multiplication method and apparatus
KR102136911B1 (ko) 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
EP1899804B1 (en) Arrangement for and method of protecting a data processing device against a cryptographic attack or analysis
JP4662802B2 (ja) 計算方法、計算装置及びコンピュータプログラム
JP2008293034A (ja) タイミング攻撃を阻止する標準化されたモジュラべき乗を計算することにより復号メカニズムを実行する方法と装置
US8422669B2 (en) Method and apparatus for elliptic curve cryptographic processing
JP5182364B2 (ja) サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法
US20100287384A1 (en) Arrangement for and method of protecting a data processing device against an attack or analysis
US8781112B2 (en) Signed montgomery arithmetic
JP2004226674A (ja) 情報処理方法
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
JP2010139544A (ja) 剰余演算装置、及び剰余演算方法
KR100416291B1 (ko) 타원곡선암호화의 유한체 역원과 승산 장치 및 그 방법
US8626811B2 (en) Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine
JP2009008993A (ja) べき乗剰余演算器及びその制御方法
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
JP2004125891A (ja) べき乗剰余演算器
JP2003216026A (ja) 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにコンピュータ・プログラム
US10318245B2 (en) Device and method for determining an inverse of a value related to a modulus
JP3904421B2 (ja) 剰余乗算演算装置
JP2010034682A (ja) 暗号処理装置
JP2005031472A (ja) 演算処理方法、および演算処理装置
JP2006091086A (ja) モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド
Yoshino et al. Bipartite modular multiplication with twice the bit-length of multipliers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120124

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120522