JP2003241659A - 情報処理方法 - Google Patents

情報処理方法

Info

Publication number
JP2003241659A
JP2003241659A JP2002045574A JP2002045574A JP2003241659A JP 2003241659 A JP2003241659 A JP 2003241659A JP 2002045574 A JP2002045574 A JP 2002045574A JP 2002045574 A JP2002045574 A JP 2002045574A JP 2003241659 A JP2003241659 A JP 2003241659A
Authority
JP
Japan
Prior art keywords
mod
value
phi
calculation
result
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
JP2002045574A
Other languages
English (en)
Inventor
Takashi Watanabe
高志 渡邊
Takashi Endo
隆 遠藤
Masahiro Kaminaga
正博 神永
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2002045574A priority Critical patent/JP2003241659A/ja
Priority to US10/307,426 priority patent/US20030163760A1/en
Priority to EP02027597A priority patent/EP1338955A3/en
Publication of JP2003241659A publication Critical patent/JP2003241659A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/729Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using representation by a residue number system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Retry When Errors Occur (AREA)

Abstract

(57)【要約】 【課題】情報処理装置の誤演算を検出することを課題と
する。 【解決手段】本加算器では、通常の加算器に、入力デー
タに誤演算検出用符号を埋め込む、埋め込み部と、演算
結果を検査する誤演算検出用符号検査部と、誤演算検出
用符号を取り除くための誤演算検出用符号削除部を追加
する。まず、誤演算検出用データDを生成し、AおよびB
に乗じる。次に、通常の加算器を用いてADおよびBDを加
算する。 AD + BD = (A + B)*D = CD 誤演算検出用符号検査部では演算結果について法をDと
した剰余を計算し、その結果が0であることを確認す
る。 CD mod D ≠ 0 であれば、エラー信号を出力する。本来の演算結果は、
誤演算検出用符号削除部において演算結果に1/Dを乗じ
ることにより CD * 1/D = C として得ることができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は情報処理方法に関す
る。特に誤演算を検出することのできるフォールトディ
テクタブル(Fault Detectable)な、もしくは誤演算から
自動的に回復することのできるフォールトトーレラント
(Fault Tolerant)な情報処理装置および情報処理方法に
関する。
【0002】
【従来の技術】近年、各種機器の情報化が進み、各種情
報の蓄積利用や、情報処理装置間の情報交換が頻繁に行
なわれるようになっている。それに伴い、電子マネー
や、課金情報、個人情報など、機器間のやりとりの間に
おいて外部に対する取り扱いデータを秘匿性を保持した
まま処理することが求められる場面が増えている。これ
らの情報を秘密に処理するために、暗号は欠くことので
きない技術となっている。図1は、一般的な情報処理装
置の構成を示したものである。中央演算装置(101)は、
記憶装置に保存されたプログラム(104)に従い、データ
格納部(105)に格納されているデータを処理する。演算
の種類によりコプロセッサ(102)を使用することで高速
な演算を行なうことができる。情報所装置は入出力ポー
ト(103)を通じて外部とのデータ送受信を行なうことが
できる。情報処理装置間の通信は、入出力ポートを通じ
て行なう。
【0003】現在、主要な暗号方式としてDES(Data Enc
ryption Standard:データ暗号化標準)(National Burea
u of Standards, Data Encryption Standard, U.S. Dep
artment of Commerce, FIPS pub. 46, January 1977)
とRSA(Rivest, Shamir, Adleman:人名に因む)(R.L.
Rivest, A. Shamir, and L.M. Adleman, A method foro
btaining digital signatures and public-key cryptos
ystems, Communications of the ACM (2) 21 (1978), 1
20-126)が用いられている。DESは秘密鍵暗号方式であ
り、RSAは公開鍵暗号方式である。秘密鍵暗号方式と
は、暗号化と復号化で同一の鍵を用いるため共通鍵暗号
方式や対称鍵暗号方式とも呼ばれる。公開鍵暗号方式で
は暗号化と復号化で異なる鍵を用いるため非対称鍵暗号
方式とも呼ばれる。一般に、秘密鍵暗号は64ビットから
128ビット程度の入力データと、同じく64ビットから128
ビット程度の鍵ビットを混ぜ合わせながら、ビットの対
応関係の差し替え(Substitution)やビット位置の入れ替
え(Permutation)を複数回行なうことで構成することが
多い。秘密鍵暗号方式はビット操作と小規模のテーブル
参照のみで計算が可能なため、小規模の情報処理装置で
も数ミリ秒で処理を完了することができる。
【0004】公開鍵暗号は暗号化鍵と復号鍵に数学的な
関係を設定するため、鍵として使用できるものが限定さ
れる。そのため、鍵長が1024ビットといったように大き
くなりがちである。また算術演算を大量に行なうため、
小規模の情報処理装置では、コプロセッサを用いても計
算には数百ミリ秒を要する。秘密鍵暗号では事前に鍵を
送信者と受信者で共有する必要があるが高速で処理でき
る。公開鍵暗号では暗号化用の鍵を公開してデータを暗
号化しても、秘密に保持している復号用の鍵でしか復号
できない。公開した鍵から、秘密の鍵を推定することは
計算量的に困難である。公開鍵暗号では送受信者の間で
事前に鍵を共有する必要無くデータの安全な送受信が可
能であるが、計算に秘密鍵暗号より多くの時間を要す
る。そのため、情報処理装置独自に使用するデータの暗
号化には秘密鍵暗号を用い、鍵を事前に共有していない
情報処理装置間でやりとりするデータの暗号化には公開
鍵暗号を用いることが多い。
【0005】秘密鍵暗号方式では、秘密の鍵をデータ送
信者と受信者の間で共有し、その鍵を用いて秘密データ
の送受信を行なう。送受信するデータ量と等しいデータ
量の鍵を使用すれば送受信データの完全な秘匿を実現す
ることができることが知られているが、一般に鍵は秘密
データのデータ量よりも小さいデータ量に設定されてい
る。その理由の一つとして、送受信するデータ量に等し
いデータ量の鍵を送信者と受信者の間で共有することが
困難であることが挙げられる。鍵のデータ量を送受信す
るデータ量よりも小さくすることで、鍵データの共有に
掛かる負荷が減少し、効率の良いデータ送受信が可能と
なる。鍵を用いて送受信するデータの暗号化を行なう手
順は、多くの場合、一般に公開されている。そのため、
送受信するデータの秘匿性は、鍵の秘匿性に依存する。
良い暗号とは、鍵を総当りで検査するより少ない計算量
では鍵を特定することができない暗号である。
【0006】暗号解読は、原理的解読と実践的解読の2
種類に分類することができる。原理的解読では、暗号の
設計そのものの暗号解読に対する脆弱性を利用する。一
般に、解析者は同一の鍵によって暗号化されたいくつか
の暗号文を知っていると仮定する。これは、データの送
受信の際にコンピュータが接続されているネットワーク
ケーブルを監視すれば、解析者が暗号装置からの出力デ
ータを知ることができることが明らかであるためであ
る。ある暗号文について、すべての鍵で復号化を行い、
意味のあるデータが得られた鍵を正解鍵とする解読方法
を総当り法(BruteForce)と呼ぶ。原理的解読法として意
味を持つのは、総当り法よりも早い時間で正解鍵を特定
することができる解読法である。たとえば、秘密鍵暗号
の標準であるDESの原理的解読方法として、差分解読法
(Differential Analysis)や線形解読法(Linear Analysi
s)が知られている。これらの暗号解読法を用いれば、総
当り法では平均的に255回の検査が必要であるところ、2
47個の選択された入力文と237回程度の検査で正解鍵を
特定することができる。しかし、依然として現在のコン
ピュータの記憶装置容量や計算速度では実施可能な解読
方法とは言えない。
【0007】暗号技術として、現在主に使用されている
方式として、先に述べた秘密鍵暗号であるDESと公開鍵
暗号であるRSAがある。RSAは、公開鍵と秘密鍵を持ち、
いずれか一方の鍵で暗号化されたデータは、他方の鍵で
しか復号化できないという特徴をもつ。また、一方の鍵
から他方の鍵を特定することは、膨大な計算量が必要で
あるため、困難である。このような特徴のため、公開鍵
を用いてあるデータを暗号化した上で送信すれば、受信
者のみがそのデータを知ることができ、送信者と受信者
の間で秘密データを共有することができる。公開鍵暗号
は一般に秘密鍵暗号よりも演算速度が遅いため、大量の
データ暗号化には不向きである。そこで、公開鍵暗号を
用いて共有した秘密データを共通鍵暗号の鍵として大量
のデータの送受信を高速に行なうのが一般的である。DE
Sと同様に、RSAについても、現実的な装置での原理的解
読を行なう方法は知られていない。
【0008】実践的解読の1つとして、誤演算を利用し
た解読法が知られている。1997年にBonehらにより発表
された方法(Dan Boneh, Richard A, Demillo, Richard
J. Lipton, On the Importance of Checking Cryptogra
phic Protocols for Faults, Lecture Notes in Comput
er Science, Advances in Cryptology, proceedings of
EUROCRYPT'97, pp.37-51, 1997.)は、中国人剰余定理を
利用したRSA演算中に誤演算を起こした結果と正常な結
果を比較することで、解読を行なう方法である。Boneh
らの方法によれば、1つの正常な結果と1つの誤演算結果
があれば、解読を行なうことができる。実際にRSAを情
報処理装置に実装すれば、誤演算を起こす可能性をゼロ
にすることは容易ではない。誤演算の原因は、情報処理
装置の設計ミスによるものや情報処理装置の実使用環境
での安定性や外部からの故意の誤動作誘発によるものな
ど、様々に考えられる。
【0009】誤演算に対する最も簡単な対策方法とし
て、再演算が考えられる。2度以上の再演算結果が一致
しなければ、誤演算と判定する。誤演算時の対処方法
は、さらに再演算としてもエラー処理を行なっても装置
をリセットしても良い。再演算の問題点は、演算終了ま
での時間が再演算を行なわない場合の2倍になるという
ことである。500msを要する演算を2度行なえば1000msで
あり、暗号化を利用するシステムの処理速度を大幅に低
下させる結果となる。また、再演算時に同じエラーを起
こせば、誤演算を検出することはできない。暗号化結果
を復号化し、入力データに一致しなければ誤演算である
と判定する方法がある。暗号化演算と復号化演算は異な
るため、誤演算判定を通過する形で誤演算を起こすこと
が格段に難しくなると考えられる。演算時間が2倍にな
ることは先の再演算と同様である。しかし、RSAでは、
公開鍵のビット数が秘密鍵のビット数に比べて小さくな
るように構成することができるため、再暗号化に比べて
高速に、暗号化→復号化の演算を行なうことが可能であ
る。少なくともRSAにおいては本方式が非常に効果的で
ある場面があるといえる。ただし、公開鍵は一般の場合
において小さくなるように構成するとは限らない。秘密
鍵と公開鍵のビット数が同じであれば、再演算と同様に
再演算を行なわない場合の2倍の演算時間が必要であ
る。
【0010】
【発明が解決しようとする課題】本発明の課題は、誤演
算を高速に検出する装置および方法を与えることであ
る。
【0011】RSAに対する実践的解読の1つとして、誤演
算を利用した解読法が知られている。1997年にBonehら
により発表された方法は、中国人剰余定理を利用したRS
A演算中に誤演算を起こした結果と、正常な結果を比較
することで、解読を行なう方法である。中国人剰余定理
とは、 xp = x mod p xq = x mod q がわかっている時に、x mod Nを、 S = xp*q*(q-1 mod p) + xq*p*(p-1 mod q) として計算することができるというものである。また、
Sを、 S = (xp - xq)*(q-1 mod p) mod p * q + xq と変形することができることが知られている。実際の情
報処理装置では、Sを求めるために、演算を C = xp - xq......(1) u = q-1 mod p ......(2) D = C*u mod p ......(3) E = D*q ......(4) S = E + xq ......(5) と、分解して順次処理する。
【0012】ここで、Cの演算中(1)に誤演算が起こり、
C'が得られたとする。C'となった結果、(3)においてDに
も誤演算が含まれる。これをD'と表記する。Dが誤演算
を含むD'となるため、(4)においてEも誤演算を含むE'と
なる。その結果、(5)で誤演算を含んだ結果S'を得る。
ここで、正常な演算結果SとS'の差分を計算すると、 Sdiff=S - S'=(D*q + xq) (D'*q + xq) = (D - D')*q である。D - D'は小さくない確率で小さい素因数を持
つ。そのため、Sdiffを素因数分解すれば、容易に大き
な素数であるqを求めることができる。もしくは、RSAの
公開鍵であるN(=pq)とSdiffとの最大公約数をユークリ
ッドの互除法により計算すれば、高速に最大公約数qを
得ることができる。qを得た後にNをqで割ることで、他
方の素因数pを得ることができる。p、 qが解れば、公開
された指数eから、秘密の指数dを得ることができる。そ
れは、オイラー関数をphi()と表記すれば、ed≡1 mod p
hi(N)の関係が成立し、p, qが解れば、phi(N)=(p 1)(q
1)として計算することができるためである。
【0013】このように、Bonehらの方法によれば、1つ
の正常な演算結果と1つの誤演算結果があれば、高い確
率で解読を行なうことができる。実際にRSAを情報処理
装置に実装すれば、誤演算を起こす可能性がゼロではな
いことは明らかである。誤演算の原因は、情報処理装置
の設計ミスによるものや情報処理装置の実使用環境にお
ける安定性や外部からの故意の誤動作誘発によるものな
ど、様々に考えられる。
【0014】従来技術では、再演算や、暗号化結果を復
号化した結果と入力データを比較することにより誤演算
の検出を試みた。しかし、結果として演算速度が2倍程
度になり、実使用上の負荷が大きかった。そこで、本発
明は、誤演算を高速に検出する装置および方法を与える
ことを課題とする。
【0015】
【課題を解決するための手段】本来の演算値について演
算fを行う場合を考える。本発明では、課題を解決する
ために、本来の演算値を写像gにより写像することで本
来の演算値に冗長情報を付加し、写像先で演算fを行う
ことにより写像先での演算結果を得、演算fの前後で冗
長情報が保存されていることを確認することで誤演算の
有無を検査し、写像先での演算結果を写像gの逆写像g-1
を用いて本来の演算結果に写像する。また、写像hとし
て、本来の演算系と同型で計算量の小さい演算環境に写
像するものを使用し、本来の演算値の演算は本来の系で
行い、写像hの先で検算のみを行なうことで計算量の小
さい誤演算検出を行なう。
【0016】同一演算値による演算を2度以上行なって
結果を比較しても、再現性のある誤動作による誤演算を
検出することはできない。たとえば、5+7を演算する場
合に、誤演算として必ず1が足される場合、複数回演算
を繰り返して結果を比較しても、毎回同じ後演算結果13
を得るため、誤演算を検出することができない。そこ
で、本来の演算値を写像gにより写像することで本来の
演算値に冗長情報を付加する。冗長情報は、写像先での
演算fの前後で保存されるものを選択するため、演算後
の冗長情報を検査することで、誤演算の有無を確認する
ことができる。写像gとして演算値に5を掛けるとすれ
ば、5*5+7*5=12*5であり、演算の前後で値5が保存され
ている。本来の演算結果はg-1すなわち、5で除算するこ
とにより、値12を得ることができる。先に仮定した誤演
算を考えると、演算は5*5+7*5+1=12*5+1となり、演算の
前後で値5が保存されないため、誤演算が起こったこと
を検知できる。ここで、誤演算として必ず5が足される
場合、演算結果は5の倍数になるため、誤演算を検出で
きない場合がある。そこで、冗長情報を、固定値ではな
く、演算ごとに変化するようにすれば、再現性のある誤
動作による誤演算が起こっても、高い確率で誤演算を検
出することができる。また、本来の演算値による演算結
果を写像hにより計算量の小さい演算系に写像し、その
写像先での検算を行えば、本来の演算系で検算を行うよ
りも高速に検算を行うことができる。計算量の小さい演
算系に写像することで、本来の演算値の情報を一部除外
する方法がある。例えば、演算値のあるビットを超える
上位ビットを演算から除外する。このような場合、誤演
算の検出確率は低下するが、確率が十分に高ければ、検
算の機能として十分である。以上において、付加する冗
長情報をランダムに選択したり、写像hランダムに選択
すれば、演算中の値を解析者の予測不能な値に変形する
ことができ、演算中の動作電流などを観測する解析を困
難にすることができる。
【0017】演算値に冗長情報を付加して演算を行い、
冗長情報が演算の前後で保存されていることを検査す
る。そのため、付加する冗長情報として、演算前後で値
が保存されるものを用いる。演算前後で冗長情報が正し
く保存されていれば、演算は正しく行なわれたものと判
断し、冗長情報が破壊されていれば、演算が途中で誤っ
たと判断する。演算の前後で保存する情報の有無は、演
算の種類に依存する。以下に、実際の情報処理装置を想
定して例を挙げる。
【0018】今、32ビットの演算器を持つ情報処理装置
を考える。32ビットの演算器では、mod 232での剰余演
算を行なっている。すなわち、演算値の下位から32ビッ
ト目を超えるビットは無視する。32ビットより大きな数
値計算は、キャリーフラグを用いて桁上がりや桁不足を
伝播させることで補足しながら行なう。加算や乗算は、
基本的に2入力1出力の演算である。図2に加算の例を示
す。本発明では、図2に示すように、加算器への入力以
前に入力I1と入力I2に、mod 232で1となり、(202)で生
成したある数rに対してmod rで0となる値Rを生成(203)
した上で入力I1およびI2に乗じ(204)、mod r*232上で加
算を行なう(205)。演算結果のmod rを計算することで確
かに演算結果が0になることを確認する(206)。もし0で
なければ、演算が誤っていることを意味するため、適宜
エラー処理を行なう(209)。誤演算でないと判断すれ
ば、演算結果のmod 232を計算し本来の演算結果として
出力する(207)。ここで、Rが冗長情報に対応する。すで
に述べた条件を満たすRであれば、ランダムに使用して
よい。具体的には、入力I1、入力I2について上記の性質
を満たすRを用いて、加算を以下のように計算する。
【0019】result = I1*R + I2*R mod r*232 = (I1 +
I2)*R mod r*232 であり、誤演算検出の為に、 result mod r = 0 であることを確認する。次に、result mod 232を計算す
れば、 result mod 232 = ((I1 + I2) mod 232 * R mod 232) m
od 232 である。ここで、RをR mod 232 = 1となるように構成し
たため、 output = result mod 232 = (I1 + I2) mod 232 として、本来の演算結果を出力する。加算が誤演算を起
こせば、I1*RもしくはI2*Rのいずれかがrの倍数ではな
くなる確率が高い。すなわち、mod rの結果が0となら
ず、誤演算として検出することができる。これは、Rが
加算の前後で保存されるために可能である。
【0020】減算についても同様である。入力1をI1
し入力2をI2とし、Rを用いて、 result = I1*R - I2*R mod r*232 = (I1 - I2)*R mod r*232 であり、誤演算検出の為に、 result mod r = 0 であることを確認する。次に、result mod 232を計算す
れば、 result mod 232 = ((I1 - I2) mod 232 * R mod 232) m
od 232 である。ここで、R mod 232 = 1であるように構成した
ため、 output = result mod 232 = (I1 - I2) mod 232 として、本来の演算結果を出力する。
【0021】乗算について図3に示す。乗算では、先と
同様にr(302)およびR(303)を生成し、Rを2つのR1とR2
分解して(304)それぞれを入力I1、 I2に乗じて演算を行
なう(305、 306)。Rを分解するとは、R1*R2=R mod r*2
32となるR1, R2を得ることを意味する。もちろん、R1
R2を得た上で、RをR=R1*R2 mod r*232として得ても良
い。
【0022】先と同様にR mod 232=1となるようにRを構
成する。乗算は、 result = I1*R1 * I2*R2 mod r*232 = (I1 * I2)*(R1 * R2) mod r*232 = (I1 * I2)*R mod r*232 であり、誤演算検出の為に、 result mod r = 0 であることを確認する(307)。次に、 result mod 232 = ((I1 * I2) mod 232 * R mod 232) m
od 232 ここで、RをR mod 232 = 1となるように構成したため、 output = result mod 232 = (I1 * I2) mod 232 として、本来の演算結果を出力する(308)。加減算と異
なり、RをR1, R2に分離する必要がある。I1, I2両方にr
を乗じれば、どちらか一方に起こった誤演算をmodrで検
出することができない。これは、誤演算によりI1*Rの演
算結果がrの倍数ではないr'となったときに、r'にI2*R
を乗じた結果として演算結果が再度rの倍数となるため
である。a, bのどちらか一方のみにエラーが起こる例を
示す。いま、それぞれ32ビットのa, bについて、a*bを
演算するとする。b[i](0≦i≦31)でbのiビット目を表
す。一般的に、a*b=a*b[31]*231 + a*b[30]*230 + ...
+ a*b[0]*20として、加算を順次行なう。一連の加算の
うち1つ以上が処理されなければ、入力値の一方であるb
のみに誤演算が生じたことになる。また、演算器外部の
レジスタから演算器の内部レジスタにコピーしたaの値
が変化すれば、加算処理が正常に行なわれても、aのみ
に誤演算が生じたことになる。ここでは、一般のコンピ
ュータの演算器を想定して232を法とした演算について
述べたが、例えば64ビットの演算器であれば264を法と
した演算に読みかえればよく、また、一般にNを法とし
た演算についても同様である。
【0023】上記では、演算の基本単位である加減乗算
での誤演算検出の例を示した。実際の場面では、これら
の演算の組み合わせであれば、どの時点で誤演算検出処
理を行なっても良い。例えば、べき乗剰余を行なう場合
を考える。べき乗剰余とは、入力y, 指数x、 法Nについ
て、yx mod Nを求める演算である。これは、(y*y*...*
y) mod Nと表記することができ、x個の剰余乗算と考え
ることができる。そこで、R mod N=1となるRをx個の
R0...Rx-1に分解し、各yに順次掛け合わせることで、re
sult = ((y*R0)*(y*R1)*...*(y*Rx-1)) mod rN = (yx*
R) mod rNを得る。result mod r = 0を確認することで
誤演算を検出することができ、result mod Nとして本来
の演算結果yx mod Nを得ることができる。同様に、aとb
の法Nにおける乗算(a*b) mod Nを(a+a+...+a) mod Nとb
個のaの剰余加算に分解し、Rについて、result = ((a*
R)+(a*R)+...+(a*R)) mod rN = (a*b*R) mod rNを得
る。resultmod r = 0であれば誤演算がないと考えら
れ、result mod Nとして本来の演算結果を得ることがで
きる。このように、複数の加減乗算を行なった後に1度
だけmodrによる誤演算検出処理を行なえば、処理速度を
高速化することができる。
【0024】上記において、入力値aに乱数rを乗じる演
算においても誤演算を検出する必要があることに注意が
必要である。c = a*Rとし、c mod r ≠ 0もしくは、c m
od a≠ 0であれば誤演算が起こったことを意味してお
り、誤演算としてエラー処理や再計算などの処理を行な
うことができる。
【0025】再度、べき乗剰余yx mod Nを演算する場合
について考える。上記の方法では、Rをx個のR0...Rx-1
に分解した上でyに乗じたが、スマートカードのような
小規模な計算能力しか使用できない場合にこのような方
法を用いれば、演算速度が極度に低下するため、実用に
耐えない。より効率的な方法を使用する必要がある。
【0026】yx mod Nを高速に演算する方法としてアデ
ィションチェインを利用する方法が知られている。今、
x[i]としてxのi番目のビットを表すとし、xがnビットの
数であるとすると、x=x[n-1]*2n-1 + x[n-2]*2n-2 +
... + x[0]*20と書くことができる。これはつまり、yx
mod N = y{x[n-1]*2^{n-1} + x[n-2]*2^{n-2} + ... +
x[0]*2^0} mod Nである(記号^はべき乗を表す)。この演
算を以下のアルゴリズムによって実行することができ
る。
【0027】Input: y, x, N Output: C = yx mod N if x[k-1] = 1 then C:= y else C:= 1 for i=k-2 downto 0 C:= (C*C) mod N if x[i]=1 then C:= (C*y) mod N Next i return C 上記の方法を適用するために、本アルゴリズムのforル
ープ中に逐一y*Riを計算し、Cに乗算することは処理速
度の低下をもたらす。そこで、本発明では、オイラー関
数phi()について、a{phi(N)+1} mod N = a mod Nが成立
することを利用する。x' = (1 x) mod phi(N)として、
C'=yx' mod Nを演算し、(C*C') mod Nとする。(C*C') m
od N=y{x + x'} mod N= y{1 mod phi(N)} mod N = y mo
d Nである。従って、(C*C') mod Nと入力値yが一致しな
ければ、誤演算があったと判定することができる。とこ
ろで、一般の場合に、x'とxのビット数はほぼ同一であ
るため、このままC'の演算を行なえば、処理時間がほぼ
2倍になる。そこで、本発明では、べき乗剰余をmod Nで
演算する代わりにmod rNで演算し、誤演算検出処理をmo
d rのもとで行なう。すなわち、x' = (1 x) mod phi
(r)として、C'=yx'mod rを演算し、(C*C') mod rとy mo
d rの一致を検査して誤演算を検出する。mod rにおいて
演算を行なえば、x'はrのビット数以下に抑えられる。
というのは、yx' mod r = (y mod r){x' mod phi(r)} m
od rであり、またphi(r)はrのビット数以下になるから
である。例えばrとして32ビットの値を使用すれば、y m
od rやx'は32ビット以下となり、1024ビットのyやx'に
ついて演算を行なうよりも大幅に高速に演算を行なうこ
とができる。図4は、1024ビット演算時の処理速度を1と
して各ビット演算時の処理速度を示したグラフである。
これによれば、800ビットでの演算時で1024ビットでの
演算の約2倍の速度で演算が可能であり、32ビットでの
演算は1024ビット時の約3万倍の速度で演算を行うこと
ができる。
【0028】本発明では(C*C') mod rをy mod rと比較
して誤演算を検査するため、演算結果がy mod rの倍数
である場合には、誤演算の結果であっても誤演算として
検出することはできない。しかし、そのような確率は、
例えばrが32ビットであれば1/232であり、ほとんど無視
できる確率である。必要に応じて、検出確率を高めるた
めにより大きなビット数のrを使用しても良い。また、
誤演算が100%の確率で起こらない場合は、より高速な演
算を行なうために、より小さいビット数のrを使用して
も良い。例えば、誤演算発生確率が12.5%であるなら、r
として29ビットの値を用いれば、誤演算発生確率が100%
でありrが32ビットの場合と見かけ上同じ検出能力を備
え、演算速度は、32ビット時の1.3倍程度高速である。
【0029】中国人剰余定理(Chinese Remainder Theor
em)を用いて、べき乗剰余を高速に演算することができ
る。例えば、2つの互いに素な素数p、 qについてN=pqと
し、入力をy、 指数をx、 法をNとすると、 Cp = yx mod p = (y mod p){x mod phi(p)} mod p.....(1) Cq = yx mod q = (y mod q){x mod phi(q)} mod q......(2) result = (((Cp - Cq)*(q-1 mod p)) mod p)* q + Cq......(3) としてyx mod Nを演算することができる。
【0030】一般のRSAにおいて、p, qはそれぞれNのビ
ット数のほぼ半分のビット数であるため、Cp, Cqの演算
はyx mod Nを直接演算する場合に比べてそれぞれ8倍程
度高速である。すなわち、(3)の再構成処理(recombinat
ion)を考慮に入れてもCRTによるべき乗剰余演算全体と
して3〜4倍程度高速に演算を完了することができる。ス
マートカードのように計算能力の限られた装置では、CR
Tを用いた演算が望ましい。しかし、CRTによる演算では
Bonehらが示したように誤演算を利用した強力な解読法
が存在するため、誤演算結果を出力しないように対策を
行なう必要がある。そのために、以下のように構成して
誤演算を検出する。
【0031】本発明の誤演算検出法をCRTの(1)(2)に適
用する。図5に示すように、ある数r(502)について、 Cpr = yx mod rp = (y mod rp){x mod phi(rp)} mod rp ......(503)(504) (505) Cqr = yx mod rq = (y mod rq){x mod phi(rq)} mod rq ......(503)(504) (505) x' = (1 - (x mod phi(rp)) - (x mod phi(rq))) mod phi(r) ......(506) C = yx' mod r = (y mod r)x' mod r ......(507)(5 08) Cpr*Cqr*C = (y mod r){(x mod phi(rp)) + (x mod phi(rq)) + x' mod phi (r)} mod r = (y mod r){1 mod phi(r)} mod r = y mod r ..... .(509) として、演算結果とy mod r(507)とが一致すれば演算が
正しく行われた確率が高いと判断できる(509)。Cp、 Cq
の真の演算結果はそれぞれCp mod p、 Cq mod qとして
得ることができる(510)。
【0032】ここでは、現在使用されているRSAを前提
に互いに素な2つの素数p、qについてN=pqとしたが、互
いに素な3つの素数p、 q、 sについて、 Cpr = yx mod rp = (y mod rp){x mod phi(rp)} mod rp Cqr = yx mod rq = (y mod rq){x mod phi(rq)} mod rq Csr = yx mod rs = (y mod rs){x mod phi(rs)} mod rs x' = (1 - (x mod phi(rp)) - (x mod phi(rq)) - (x mod phi(rs))) mod p hi(r) C = yx' mod r = (y mod r)x' mod r Cpr*Cqr*Csr*C = (y mod r){(x mod phi(rp)) + (x mod phi(rq)) + (x mod phi(rs)) + x' mod phi(r)} mod r = (y mod r){1 mod phi(r)} mod r = y mod r とすることもできる。このように、本発明の方法を用い
れば、素因数の数が増加しても、誤演算検出に使用する
上記Cの演算量は一定である。
【0033】CRTによるべき乗剰余演算において、(1)
(2)の演算中の誤演算検出は上記した本発明の方法で可
能である。(3)の演算についても、加減乗算で構成され
ているため、誤演算の検出が可能である。それを図6に
示す。まず乱数rを生成する(602)。R mod r = 0であ
り、R mod N = 1である数Rを用意する(603)。rを互いに
素であるr1、 r2に分解する(604)。
【0034】Cp := Cp*R mod r1p......(605) Cq := Cq*R mod r2q......(605) S = (((Cp - Cq)*((r2q)-1 mod r1p)) mod r1p) * r2q
+ Cq......(606)(607) この結果得られるSは、S=(R*yx) mod rNである。S mod
r ≠ 0であれば、演算中に誤演算が起こったことを示す
(608)。S mod Nとして真の演算結果であるyx modNを得
ることができる。Sの演算において、CpとCqを入れ替え
て、 S = (((Cq - Cp)*((r1p)-1 mod r2q)) mod r2q) * r1p
+ Cp としても同一の演算結果S=(R*yx) mod rNが得られる点
に注意する。
【0035】次に、本発明方式での誤演算検出能力につ
いて述べる。今、Cqに誤演算が起こったと仮定する。誤
演算の結果、誤演算分をkとして、Cq := Cq - kに変化
したと仮定すると、 S = (((Cp - (Cq - k))*((r2q)-1 mod r1p)) mod r1p) * r2q + Cq - k = ((((Cp - Cq)*((r2q)-1 mod r1p)) + k*(r2q-1 mod r1p))mod r1p) * r2q + Cq - k である。
【0036】 S mod r1 = (Cp - Cq) mod r1 + k + Cq mod r1 - k = Cp mod r1 = 0 (∵ Cp mod (r1*r2) = 0) また、 S = (((Cq - k - Cp)*((r1p)-1 mod r2q)) mod r2q) * r1p + Cp = (((Cq - Cp)*((r1p)-1 mod r2q) - k*((r1p)-1 mod r2q)) mod r2q) * r1p + Cp であるから、 S mod r2 = (Cq - Cp) mod r2 - k + Cp mod r2 = Cq mod r2 - k = -k (∵ Cq mod (r1*r2) = 0) ≠ 0 S mod r = ((S mod r1 - S mod r2)*(r2 -1 mod r1) mod r1) * r2 + S mod r2 ≠ 0 となり、mod rのもとで誤演算を検出することができ
る。また、r1、 r2をそれぞれ32ビットとすれば、S mod
rが0となるのは、-k mod r2 = 0となる場合であり、そ
れは1/232の確率でしか起こらない。CpとCqの対称性か
らCpに誤演算が起こった場合についても同様である。正
しい演算結果は、S mod N(= yx mod N)として得ること
ができる。
【0037】先に述べたものと同様に、ここでは、現在
使用されているRSAを考慮してN=pqとしたが、N=pqsと
し、またrを互いに素であるr1、 r2、 r3に分解し、 Cp := (Cp*R) mod r1p Cq := (Cq*R) mod r2q Cs := (Cs*R) mod r3s としてCRTの演算を行なうことができる。もちろん、pと
qsは互いに素であるため、CRTの性質から、rをr1, r2
分解し、 Cp := (Cp*R) mod r1p Cqs:= (Cqs*R) mod r2qs とすることもできる。4つ以上の素因数を用いた場合に
ついても同様にして適用することが可能である。
【0038】本発明では、各種の演算を行なう際に乱数
を乗じているため、演算中のデータは演算毎に異なる。
また、演算データは、暗号の鍵にも入力データにも依存
しない形態となるため、演算データに依存する演算時間
や消費電流などを解析しても解読を行なうことは困難で
ある。
【0039】同様の手法は、加減乗算を用いるあらゆる
演算、暗号方式に応用が可能である。
【0040】
【発明の実施の形態】(1)加減乗算の誤演算検出 誤演算検出機能付き加算器の例を挙げる。
【0041】図7は最も単純な加算器(703)の例であり、
2つの入力値A(701)とB(702)を受け取り、1つの出力値C
(704)を出力する。
【0042】A + B = C 本発明の加算器を図8に示す。本加算器では、通常の加
算器(806)に、入力データに誤演算検出用の冗長情報を
埋め込む写像と、演算結果を検査する誤演算検出用の冗
長符号検査と、誤演算検出用の冗長符号を取り除くため
の逆写像を追加する。まず、誤演算検出用の冗長情報と
して任意の値Dを生成し(803)、入力値A(801)およびB(80
2)に乗じる(804、 805)。
【0043】次に、通常の加算器を用いてADおよびBDを
加算する(806)。
【0044】AD + BD = (A + B)*D = CD ここで、正常な演算結果はDの倍数になっている。誤演
算検出用の冗長情報検査では演算結果について法をDと
した剰余を計算し(807)、その結果が0であることを確認
する(808)。
【0045】(CD) mod D = 0 これは、演算結果がDの倍数であるために成り立つ性質
である。
【0046】(CD) mod D ≠ 0 であれば、エラー信号を出力する(811)。
【0047】本来の演算結果Cは、誤演算検出用の冗長
情報を上記の演算結果に1/Dを乗じることにより(809)取
り除き、 CD * 1/D = C として得ることができる(810)。
【0048】実際の手順において、誤演算検出用符号を
乗じる際にA*DおよびB*Dの演算が誤演算無しに行なわれ
たことを確認することが望ましい。例えば、A*Dの演算
の正しさを検証するために、(A*D) mod A=0かつ(A*D) m
od D=0であることを確認する。このような条件を満たす
ためには、演算結果がA*Dの倍数にならなければならな
い。すなわち、誤演算が起こり、かつ本検査を通過する
ためには、演算結果がある整数kについてk*A*Dである必
要がある。AおよびDがそれぞれ16ビットであるとする
と、ランダムな誤動作でこのような結果を得る確率は1/
232であり、無視できるほど小さい。必ず再計算を行な
い、2度の演算結果がともに誤動作を含まないと判定さ
れれば演算結果を信用するとすれば、それでもなお誤演
算結果を含む確率は1/264となる。3回以上の再計算を行
なえば、さらに誤演算を含む確率を小さくすることがで
きる。
【0049】AD + BDにおける誤演算は、(CD) mod D=0
を用いて検査することができる。Dが16ビットであると
仮定すれば、誤演算を含みながら本検査を通過する確率
は1/21 6である。再計算により誤演算を含みながら本検
査を通過する確率を減少させることができることは先に
述べたとおりである。
【0050】減算については、上記においてBを-Bと読
み替えれば同様である。 (2)誤演算検出機能付き乗算器 最も単純な乗算器(903)は、図9のように2つの入力値A(9
01)とB(902)を受け取り、1つの出力値C(904)を出力す
る。
【0051】A * B = C 本発明の乗算器を図10に示す。まず、誤演算検出用の
冗長情報として任意の値D1およびD2を生成する(1003、
1004)。次に、 D1とD2を乗じてDを得る(1005)。D1をAに
D2をBに乗じる(1006、 1007)。その演算結果をさらに乗
算器を用いて乗じる(1008)。
【0052】 A*D1 * B*D2 = (A * B)*(D1 * D2) = (A * B)*D = CD すなわち、正常な演算結果はDの倍数となる。
【0053】乗算器は演算結果の法をDとした剰余を計
算し(1009)、その結果が0であることを確認する(101
0)。
【0054】(CD) mod D = 0 これは、演算結果がDの倍数であるために成り立つ性質
である。
【0055】(CD) mod D ≠ 0 であれば、エラー信号を出力する(1013)。本来の演算結
果は、演算結果に1/Dを乗じることにより(1011) CD * 1/D = C として得ることができる(1012)。
【0056】乗算を加算で表現することができる。
【0057】A * B = C を A + A + ... + A = C とB個のAの足し算として、また、Bのビット数をbとし、
B[i]でBのi番目のビットを表すとすると、 A*B[b-1]*2b-1 + A*B[b-2]*2b-2 + ... + A*B[0]*20 =
C とb個の値の加算として表現することもできる。
【0058】そのため、乗算器の代わりに、図11もし
くは図12に示すように、先に示した加算器を用いて順
次計算を行なっても良い。 (3)誤演算検出機能付きべき乗演算器 べき乗演算yxは、 y * y * ... * y のようにx個のyの乗算に分解することができるため、先
に示した誤演算検出機能付き乗算器を用いて誤演算検出
機能付きべき乗演算器を構成することができる。
【0059】また、乗算は先に示したように加算に分解
することができるため、先に示した加算器を用いて誤演
算検出機能付きべき乗演算器を構成することも可能であ
る。
【0060】ここで、3つの入力と1つの出力を持つ誤演
算検出機能付き加算器の構成を以下に示す。3つの入力
値をそれぞれA、B、Cとし、1つの出力値をDとする。
【0061】A + B + C = D 加算器は、誤演算検出用の冗長情報を任意の値Eとして
生成し、3つの入力値に乗じる。
【0062】次に、AEおよびBEおよびCEを加算する。
【0063】AE + BE + CE= (A + B + C)*E = DE 正常な演算結果はDの倍数になっている。
【0064】加算器は演算結果の法をEとした剰余を計
算し、その結果が0であることを確認する。
【0065】(DE) mod E = 0 これは、演算結果がEの倍数であるために成り立つ性質
である。
【0066】本来の演算結果は、演算結果に1/Dを乗じ
ることにより DE * 1/E = D として得ることができる。
【0067】4つ以上の入力と1つの出力を持つ誤演算検
出機能付き加算器も同様に構成することができる。
【0068】また、3つの入力と1つの出力を持つ誤演算
検出機能付き乗算器の構成を以下に示す。
【0069】3つの入力値をそれぞれA、B、Cとし、1つ
の出力値をDとする。
【0070】A * B * C = D 乗算器は、誤演算検出用の冗長情報として任意の値Eを
生成する。次に、乗算するとEを与える3つのデータE1お
よびE2およびE3に分解する。E1をAにE2をBにE3をCに乗
じる。
【0071】次に、AE1およびBE2およびCE3を乗算す
る。
【0072】 AE1 * BE2 * CE3= (A * B * C)*(E1 + E2 + E3) = DE 正常な演算結果はDの倍数になっている。
【0073】乗算器は演算結果の法をEとした剰余を計
算し、その結果が0であることを確認する。
【0074】(DE) mod E = 0 これは、演算結果がEの倍数であるために成り立つ性質
である。
【0075】本来の演算結果は、演算結果に1/Eを乗じ
ることにより DE * 1/E = D として得ることができる。
【0076】4つ以上の入力と1つの出力を持つ誤演算検
出機能付き乗算器も同様に構成することができる。
【0077】このように複数入力1出力の誤演算検出機
能付き演算器を構成すれば、複数入力値単位での演算に
ついて1度の誤演算検出処理に抑えることができる。複
数入力1出力の誤演算検出機能付き演算器は、図11の
ように構成することで、誤演算検出機能を持たない演算
器(加算器や乗算器)を複数回呼び出して構成することが
できる。誤演算検出機能を持たない演算器を使用するた
め、誤演算検出用の負荷を除くことができ、そのため、
図12に示すように、2入力1出力の誤演算検出機能付き
演算器を複数回呼び出す場合に比べて大幅に高速化する
ことができる。
【0078】一般の計算機は32ビット程度のレジスタを
用いて演算を行なう。すなわちmod232における演算であ
る。
【0079】先に示した2入力1出力の加算、 A + B = C (mod 232) において、誤演算検出用冗長情報Dを用いて、演算結果S
は、 S = AD + BD = CD (mod D*232) であった。
【0080】 S mod D = (CD mod D*232) mod D= (CD) mod D = 0 であることを確認し、 (S * 1/D) mod 232= C となる。
【0081】1/Dが法232において存在するためには、D
と232が互いに素である必要がある。そのため、Dとして
奇数の値を使用する必要がある点に注意が必要である。
乗算においても同様である。
【0082】ここでは、法の値を232としたが、一般の
場合に法をpとして演算することができる。加算器につ
いて例示すれば、 A + B = C (mod p) において、入力値A、 Bに誤演算検出用データDを乗じ
て、演算結果Sは、 S = AD + BD = (CD) mod Dp として計算する。
【0083】 S mod D = (CD mod Dp) mod D = (CD) mod D = 0 として、一般の法の値pについて誤演算の検査を行うこ
とができる。
【0084】本来の演算結果を得るためには、 (S*1/D) mod p とすれば良い。ここで、1/Dがmod pにおいて存在するた
めには、最大公約数GCD(D、p)=1である必要があるた
め、あらかじめ条件を満たすDを用意する。
【0085】また、本来の演算結果を得るために、1/D
を乗じるのではなく、D mod p=1となるDを使用すること
が考えられる。そのようなDとして、ある数dについて、
d*(d- 1 mod p)を用いることができる。この場合、d-1 m
od pのビット数は多くの場合pのビット数にほぼ等しい
ため、誤演算検出機能付き演算時の法の値Dpが大きくな
る。例えばDのビット数がpに等しいと仮定すれば、加算
AD+BDの演算時間はA+Bの演算時間の2倍程度となる。そ
こで、pに比較して小さなビット数であるdについてD=d*
(d-1 mod p)とし、誤演算検出機能付き演算は法の値dp
の元で行うことができる。誤演算検査は、S mod d = 0
であることを確認することで行うことができる。A+Bの
演算のフローは以下のようになる。
【0086】S = (AD + BD) mod dp S mod d = ((A + B)*D) mod d = ((A + B)*d*(d-1 mod
p)) mod d = 0 本来の演算結果は、 S mod p = ((A + B)*(d*(d-1 mod p) mod p)) mod p = ((A + B)*(1 mod p)) mod p = (A + B) mod p として得ることができる。
【0087】ところで、dのビット数をnとすれば、1/2n
の確率でSに誤演算が含まれてもS mod d = 0となるた
め、できるだけ大きなdを使用することが望ましいこと
に注意が必要である。 (4)誤演算検出機能付き排他的論理和演算器 入力値に対する通常の演算結果と、入力値に誤演算検出
用符号を埋め込んだ値を用いた演算結果を比較すること
で、誤演算を検出することができる。
【0088】ここでは、入力値AとBの排他的論理和(EXO
R)の演算を行う場合の例を挙げる。排他的論理和演算
は、2入力1出力の演算である(図13)。誤演算検出機能付
き排他的論理和演算器は、ある数D1を生成し(1403)、D1
と排他的論理和演算を行うことで、0xFFFF(演算は16ビ
ットで行われると仮定する)となる数D2を求める(140
4)。次に、入力値A、 Bについて、 C = A EXOR B を演算し(1408)、入力値AとD1の排他的論理和A'と入力
値BとD2の排他的論理和B'を用いて、 A' = A EXOR D1......(1405) B' = B EXOR D2......(1406) C'= A' EXOR B'......(1407) を求める。次に、 C EXOR C' = A EXOR B EXOR A' EXOR B' = A EXOR B EXOR A EXOR D EXOR B EXOR D' = D EXOR D' = 0xFFFF......(1409) であるので、C EXOR C'が確かに0xFFFFであれば(141
0)、本来の演算結果Cを出力する(1411)。C EXOR C' ≠
0xFFFFならば誤演算が起こったことを表すため、エラー
処理を行なう(1412)。
【0089】複数入力I0、 ...、 In-1に対しても、D0
EXOR D1 EXOR ... EXOR Dn-1 = 0xFFFFとなるようにRを
構成し、 C = I0 EXOR I1 EXOR ... EXOR In-1 を計算し、 I0' = I0 EXOR D0 I1' = I1 EXOR D1 ... In-1' = In-1 EXOR Dn-1 について、 C' = I0' EXOR I1' EXOR ... EXOR In-1' とし、 C EXOR C' = 0xFFFF となることを検査して誤演算を検出することができる。
誤演算でなければ、本来の演算結果であるCを出力す
る。 (5)アディションチェインを利用したべき乗剰余の誤演
算検出べき乗剰余yx modNを演算する場合を考える。
【0090】yx mod Nを高速に演算する方法としてアデ
ィションチェインを利用する方法が知られている。今、
x[i]としてxのi番目のビットを表すとし、xがnビットの
数であるとすると、x=x[n-1]*2n-1 + x[n-2]*2n-1 +
... + x[0]*20と書くことができる。これはつまり、yx
mod N = y{x[n-1]*2^{n-1} + x[n-2]*2^{n-2} + ... +
x[0]*2^0} mod Nである。この演算を以下のアルゴリズ
ムによって実行することができる。
【0091】Input: y、 x、 N Output: C = yx mod N if x[k-1] = 1 then C:= y else C:= 1 for i=k-2 downto 0 C:= (C*C) mod N if x[i]=1 then C:=(C*y) mod N Next i return C 本アルゴリズムによれば、指数xのビット長のオーダー
で演算を完了することができるため高速である。本発明
では、オイラー関数phi()について、a{phi(N)+1}mod N
= a mod Nが成立することを利用する。x' = (1 x) mod
phi(N)として、C'=yx' mod Nを演算し、(C*C') mod N
とする。(C*C') mod N = y{x + x'} mod N= y{1 mod
phi(N)} mod N = y mod Nである。従って、(C*C') mod
Nと入力値が一致しなければ、誤演算があったと判定す
ることができる。
【0092】一般の場合に、x'とxのビット数はほぼ同
一であるため、このままC'の演算を行なえば、処理時間
がほぼ2倍になる。
【0093】本発明では、べき乗剰余をmod Nで演算す
る代わりにmod rNで演算し、誤演算検出処理をmod rの
もとで行なう。すなわち、x' = (1 x) mod phi(r)とし
て、C'=yx' mod rを演算し、(C*C') mod rとy mod rの
一致を検査して誤演算を検出する。mod rにおいて演算
を行なえば、x'はrのビット数以下に抑えられる。とい
うのは、yx' mod r = (y mod r){x' mod phi(r)} mod r
であり、またphi(r)はrのビット数以下になるからであ
る。例えばrとして32ビットの値を使用すれば、yやx'は
32ビット以下となり、1024ビットのyやx'について演算
を行うよりも大幅に高速に演算を行なうことができる。
(C*C') mod rをy mod rと比較して誤演算を検査するた
め、演算結果がy mod rの倍数である場合には、誤演算
の結果であっても誤演算として検出することはできな
い。しかし、そのような確率は、例えばrが32ビットで
あれば1/232であり、ほとんど無視できる確率である。
アディションチェインを利用したべき乗剰余の誤演算検
出機能は、図5により実現することができる。 (6)CRTを利用したべき乗剰余の誤演算検出 中国人剰余定理(Chinese Remainder Theorem)を用い
て、べき乗剰余を高速に演算することができる。例え
ば、2つの互いに素な素数p, qについてN=pqとし、入力
をy, 指数をx, 法をNとすると、 Cp = yx mod p = (y mod p){x mod phi(p)} mod p Cq = yx mod q = (y mod q){x mod phi(q)} mod q result = (((Cp - Cq)*(q-1 mod p)) mod p) * q + Cq としてyx mod Nを演算することができる。
【0094】一般のRSAにおいて、p, qはそれぞれNのビ
ット数のほぼ半分のビット数であるため、Cp, Cqの演算
はyx mod Nを直接演算する場合に比べてそれぞれ8倍程
度高速である。すなわち、(3)の再構成処理(recombinat
ion)を考慮に入れてもCRTによるべき乗剰余演算全体と
して3〜4倍程度高速に演算を完了することができる。ス
マートカードのように計算能力の限られた装置では、CR
Tを用いた演算が望ましい。しかし、CRTによる演算では
Bonehらが示したように誤演算を利用した強力な解読法
が存在するため、誤演算結果を出力しないように対策を
行なう必要がある。
【0095】誤演算検出機能付きの処理フローを図15
に示す。本発明の誤演算検出法を用いて、図15に示すよ
うに、ある数rについて、 Cpr = yx mod rp = (y mod rp){x mod phi(p)} mod rp......(1510) Cqr = yx mod rq = (y mod rq){x mod phi(q)} mod rq......(1510) kr = (1 - (x mod phi(p)) - (x mod phi(q))) mod phi(r)......(1506) C = ykr mod r = (y mod r)kr mod r......(1509) Cpr*Cqr*C = (y mod r){(x mod phi(rp)) + (x mod phi(rq)) + kr mod phi (r)} mod r = (y mod r){1 mod phi(r)} mod r = y mod r......(1511) として、演算結果とy mod rとが一致すれば演算が正し
く行われた確率が高い。
【0096】Cp, Cqの本来の演算結果はそれぞれCp mod
p, Cq mod qとして得ることができるが、誤演算検出用
符号を削除しないまま演算を続けるために、Cp mod p,
Cqmod qの演算を行なわずに演算を継続する。続いて、
図6に示した方法を利用し、R mod r = 0であり、R mod
N = 1である数Rを用意する。そのようなRとしてここで
は、 R = r*(r-1 mod N)......(1512) を使用する。中国人剰余定理を適用するにあたり、両演
算の法の値が互いに素である必要があるため、rを互い
に素であるr1, r2に分解し、 Cp := (Cp*R) mod r1p......(1513) Cq := (Cq*R) mod r2q......(1513) とする。演算結果は、S = (((Cp - Cq)*((r2q)-1 mod r
1p)) mod r1p) * r2q + Cq...(1514〜1516) この結果得られるSは、S=(R*yx) mod rNである。S mod
r ≠ 0であれば(1517)、演算中に誤演算が起こったこと
を示すため、エラー処理に分岐する(1520)。本来の演算
結果は、S mod Nとしてyx mod Nを得ることができる(15
18)。
【0097】このように、アディションチェインを利用
したべき乗剰余によるCp、 Cqの演算結果をmod pおよび
mod qで剰余を計算する代わりに、 mod r1pおよびmod r
2qとして、演算を続ければ、CRTを利用したべき乗剰余
演算の全体にわたって誤演算の検出を行うことができ
る。さらに、yx mod Nを計算する処理例を図16に示
す。本実施例は特に、演算値と消費電流や演算時間との
関連から秘密鍵を特定する攻撃に対して耐性を持たせる
ために、Rを2つに分割し、一方(1609)をアディションチ
ェインによるべき乗剰余演算への入力値yに乗じる(161
0)ことで、演算値をランダムに変化させている。また、
べき乗剰余演算の指数であるxpおよびxqについてもphi
(p)およびphi(q)の乱数倍を乗じる(1606, 1607)こと
で、毎回ランダムに変化させている。モジュラ演算(160
8, 1610, 1611, 1612, 1613, 1614, 1616, 1617, 1618,
1620)における法の値も同様にランダムに変化する。本
発明の方式は、処理の全体を通して、演算値をランダム
に変化させ、消費電流や演算時間と入力値から予測され
る本来の演算値との相関を無くしており、消費電流や演
算時間を利用した攻撃を行なうことは困難である。 付記: (XOR演算の誤演算検出方法) 値a0からan-1の排他的論理和演算を行なう演算方法であ
り、 (1)値r0からrn-1まですべての排他的論理和のハミング
ウェイト、すなわち値を2ビット表現したときの1になっ
ているビット数、が最大となるようにr0からrn-1を任意
に生成する。 (2)値c0=a0 EXOR r0,c1=a1 EXOR r1,...,cn-1=an-1
EXOR rn-1を求める。 (3)値d=a0 EXOR a1 EXOR ... EXOR an-1と,値e=c0 EXO
R c1 EXOR ... EXOR cn- 1を求める。 (4)d EXOR eの演算結果のハミングウェイトが最大であ
れば、dを出力する。そうでなければ、エラー処理を行
う。 以上のステップを含む情報処理方法。
【0098】
【発明の効果】本発明に従えば、小規模なハードウェア
と演算時間のオーバーヘッドで、情報処理装置の誤演算
を検出可能である。また、演算時間や消費電流などと演
算データの間の相関を無くし、解析者による情報取得を
困難もしくは不可能にすることができる。
【図面の簡単な説明】
【図1】情報処理装置の基本的な構成。
【図2】32ビット加算器における誤演算検出処理フロ
ー。
【図3】32ビット乗算器における誤演算検出処理フロ
ー。
【図4】1024ビットのべき乗剰余演算の実行時間を1と
したときの、各ビットべき乗剰余演算の実行時間の表。
【図5】アディションチェインを利用したべき乗剰余演
算の誤演算検出機能付き処理フロー。
【図6】中国人剰余定理による演算の誤演算検出機能付
き処理フロー。
【図7】一般的な2入力1出力加算器。
【図8】誤演算検出機能付き2入力1出力加算器の構成。
【図9】一般的な2入力1出力乗算器。
【図10】誤演算検出機能付き2入力1出力乗算器の構
成。
【図11】誤演算検出機能付きn入力1出力演算器の構
成。
【図12】誤演算検出機能付き2入力1出力を多段に用い
ることにより構成した、誤演算検出機能付きn入力1出力
演算器。
【図13】一般的な2入力1出力排他的論理和演算器。
【図14】誤演算検出機能付き2入力1出力排他的論理和
演算器。
【図15】中国人剰余定理を用いた誤演算検出機能付き
べき乗剰余演算処理フロー。
【図16】演算データを入力値から予測できないように
構成した中国人剰余定理を用いた誤演算検出機能付きべ
き乗剰余演算処理フロー。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 神永 正博 東京都国分寺市東恋ケ窪一丁目280番地 株式会社日立製作所中央研究所内 Fターム(参考) 5B027 AA03 5J104 AA18 AA22 AA23 NA18

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】演算f(s0,s1,...,sn-1,M)を、法の値Mにお
    ける値s0から値sn-1の剰余加減算演算、すなわちf(s0,s
    1...,sn-1,M)=(s0±s1±...±an-1)mod Mとし、値c=f(a
    0,a1,...,an-1,N)を求めるものであって、以下のステッ
    プを含む情報処理方法。 (1)値Nと互いに素な任意の値rを生成する。 (2)法の値rのもとで0となり、かつ法の値Nのもとで1
    となる任意の値Rを生成する。 (3)剰余乗算演算g(s0,s1,M)を法の値Mにおける値s0
    と値s1の剰余乗算、すなわちg(s0,s1,M)=(s0*s1)mod M
    とし、値a0'=g(a0,R,rN)から値an-1'=g(an-1,R,rN)を求
    める。 (4) c'=f(a0',a1',...,an-1',rN)を求める。 (5) c'の法の値rに対する剰余が0であれば第1の処
    理を行い、0でなければ第2の処理を行なう。
  2. 【請求項2】演算f(s0,s1,...,sn-1,M)を、法の値Mにお
    ける値s0から値sn-1の剰余乗算演算、すなわちf(s0,
    s1,...,sn-1,M)=(s0*s1*...*sn-1)mod Mとし、値c=f
    (a0,a1,...,a n-1,N)を求めるものであって、以下のステ
    ップを含む情報処理方法。 (1) Nと互いに素な任意の値rを生成する。 (2)法の値rのもとで0となり、かつ法の値Nのもとで1
    となる任意の値Rであり、ある値R0から値Rn-1についてR
    =f(R0,R1,...,Rn-1,rN)であるものを生成する。 (3) 算演算g(s0,s1,M)を法の値Mにおける値s0と値s
    1の剰余乗算、すなわちg(s0,s1,M)=(s0*s1)mod Mとし、
    値a0'=g(a0,R0,rN)から値an-1'=g(an-1,Rn-1,rN)を求め
    る。 (4) 値c'=f(a0',a1',...,an-1',rN)を求める。 (5) c'の法の値rに対する剰余が0であれば第1の処
    理を行い、0でなければ第2の処理を行なう。
  3. 【請求項3】yx_0 mod p0からyx_(n-1) mod pn-1を計算
    するべき乗剰余演算方法であって、以下のステップを含
    む情報処理方法。(ここで、x_0は下付き添え字付き文字
    x0と、x^0は上付き添え字付き文字x0と等価の意味す
    る。以下、同じ。) (1)値p0から値pn-1のいずれとも互いに素な任意の値
    rを生成する。 (2) オイラー関数の値phi(r)を法としてx0+x1+...+
    xn-1+k ≡ 1 (mod phi(r))となるようなkを求める。 (3) Ck = yk mod r,Cp_0 = yx_0 mod rp0からC
    p_(n-1) = yx_(n-1) mod rp n-1を計算する。 (4) (Ck*Cp_0*...*Cp_(n-1)) mod r = y mod rであ
    れば第1の処理を行い、そうでなければ第2の処理を行な
    う。
  4. 【請求項4】ある値xおよびそれぞれ互いに素な値p0
    らpn-1についてCp = x mod p0, Cq = xmod pn-1から、N
    =p0*p1*...*pn-1であるx mod Nを求める中国人剰余定理
    を用いた演算方法であって、以下のステップを含む情報
    処理方法。 (1) 値p0から値pn-1のいずれとも互いに素な任意の
    値rであり、互いに素となる任意の値r0からrn-1に対し
    て、r=r0*r1*...*rn-1であるものを生成する。 (2) R≡ 0 (mod r)かつR ≡ 1 (mod N)である任意
    の値Rを生成する。 (3) Cp_0' = (Cp_0*R) mod r0p0からCp_(n-1)' =
    (Cp_(n-1)*R) mod rn-1pn -1を求める。 (4) Δi=(r0p0*r1p1*...*rn-1pn-1)/ripiとして、S
    =Cp_00 -1 mod p0 0+Cp_11 -1 mod p11+...+
    Cp_(n-1)n-1 -1 mod pn-1n-1としてS=(xR)mod rN
    を求める。 (5) S mod r = 0であれば第1の処理を行い、そうで
    なければ第2の処理を行なう。
  5. 【請求項5】yx mod Nを計算するべき乗剰余演算方法で
    あって、Nは互いに素な値pとqの積である場合、以下の
    ステップを含む情報処理方法。(phi()はオイラー関数で
    ある。) (1) 値Nと互いに素な任意の値rであり、互いに素とな
    る任意の値r0およびr1についてr=r0*r1であるものを生
    成する。 (2) xp=x mod phi(p), xq = x mod phi(q)を求める。 (3) kr = (1-xp-xq) mod phi(r1)を求める。 (4) yp = y mod rp, yq = y mod rq, yr_2 = y mod r1
    を求める。 (5) Cr = yr_1 k_r mod r1, Cp = yp x_p mod rp, Cq =
    yq x_q mod rqを求める。 (6) (Cr*Cp*Cq) mod r1 = yr_1でなければ、エラー処
    理を行う。 (7) R = r*(r-1 mod N)を求める。 (8) Cp' = (Cp*R) mod r0p, Cq' = (Cq*R) mod r1qを
    求める。 (9) S=(((Cp'-Cq')*((r1q)-1 mod r0p)) mod r0p) * r
    1q + Cq'を求める。 (10)mod r = 0でなければ、エラー処理を行う。 (11)S mod Nを出力する。
  6. 【請求項6】yx mod Nを計算するべき乗剰余演算方法で
    あって、Nは互いに素な値pとqの積である場合、 (1) 値Nと互いに素な任意の値rであり、互いに素とな
    る任意の値r0およびr1についてr=r0*r1であるものを生
    成する。 (2) xp=x mod phi(p), xq = x mod phi(q)を求める。 (3) kr = (1-xp-xq) mod phi(r1)を求める。 (4) R = r0*(r0 -1 mod N)を求める。 (5) y'= R*y mod rN, yp = y' mod rp, yq = y' mod r
    q, yr_1 = y' mod r1を求める。 (6) Cr = yr_1 k_r mod r1, Cp = yp x_p mod rp, Cq =
    yq x_q mod rqを求める。 (7) (Cr*Cp*Cq) mod r1 = yr_1でなければエラー処理
    を行う。 (8) R' = r1*(r1 -1 mod N)を求める。 (9) Cp' = (Cp*R') mod r0p, Cq' = (Cq*R') mod r1q
    を求める。 (10)S =(((Cp'-Cq')*((r1q)-1 mod r0p)) mod r0p) *
    r1q + Cq'を求める。 (11)S mod r = 0でなければ、エラー処理を行う。 (12)S mod Nを出力する。 以上のステップを有するべき乗剰余演算方法。
  7. 【請求項7】yx mod Nを計算するべき乗剰余演算方法で
    あって、Nは互いに素な値pとqの積である場合、 (1) 値Nと互いに素な任意の値rであり、互いに素とな
    る任意の値r0およびr1についてr=r0*r1であるものを生
    成する。 (2) 任意の数k, mについてxp=x mod phi(p) + k*phi
    (p), xq = x mod phi(q) +m*phi(q)を求める。 (3) kr =(1-xp-xq) mod phi(r1)を求める。 (4) R = r0*(r0 -1 mod N)を求める。 (5) y'= (R*y) mod rN, yp = y' mod rp, yq = y' mod
    rq, yr_1 = y mod r1を求める。 (6) Cr = yr_1 k_r mod r1, Cp = yp x_p mod rp, Cq =
    yq x_q mod rqを求める。 (7) (Cr*Cp*Cq) mod r1 = yr_1でなければエラー処理
    を行う。 (8) R' = r1*(r1 -1 mod N)を求める。 (9) Cp' = (Cp*R') mod r0p, Cq' = (Cq*R') mod r1q
    を求める。 (10)S =(((Cp'-Cq')*((r1q)-1 mod r0p)) mod r0p) *
    r1q + Cq'を求める。 (11)S mod r = 0でなければ、エラー処理を行う。 (12)S mod Nを出力する。 以上のステップを有する構成されるべき乗剰余演算方
    法。
JP2002045574A 2002-02-22 2002-02-22 情報処理方法 Pending JP2003241659A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2002045574A JP2003241659A (ja) 2002-02-22 2002-02-22 情報処理方法
US10/307,426 US20030163760A1 (en) 2002-02-22 2002-12-02 Information processing method
EP02027597A EP1338955A3 (en) 2002-02-22 2002-12-10 Method for detecting errors in cryptographic calculations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002045574A JP2003241659A (ja) 2002-02-22 2002-02-22 情報処理方法

Publications (1)

Publication Number Publication Date
JP2003241659A true JP2003241659A (ja) 2003-08-29

Family

ID=27655355

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002045574A Pending JP2003241659A (ja) 2002-02-22 2002-02-22 情報処理方法

Country Status (3)

Country Link
US (1) US20030163760A1 (ja)
EP (1) EP1338955A3 (ja)
JP (1) JP2003241659A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008516502A (ja) * 2004-10-07 2008-05-15 アクサルト・エス・アー 命令の暗号セットを自動的に生成する方法および装置ならびにコード生成
WO2008114310A1 (ja) * 2007-03-16 2008-09-25 Fujitsu Limited Fault攻撃対策機能を備えた組み込み装置
JP2009537025A (ja) * 2006-03-31 2009-10-22 アクサルト・エス・アー サイドチャネル攻撃からの保護
JP7456205B2 (ja) 2020-03-11 2024-03-27 株式会社デンソー 演算器

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437642B1 (en) * 2005-07-22 2008-10-14 Liontech Trains Llc Model train command protocol using front and back error bytes
EP2605232B1 (en) * 2007-03-19 2014-07-16 Fujitsu Limited Embedded device having countermeasure function against fault attack
US11902432B2 (en) * 2020-11-25 2024-02-13 Cryptography Research, Inc. System and method to optimize generation of coprime numbers in cryptographic applications
DE102021125318A1 (de) 2021-09-29 2023-03-30 Analog Devices International Unlimited Company Übertragen von digitalen Daten mit Fehlererkennung

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991415A (en) * 1997-05-12 1999-11-23 Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science Method and apparatus for protecting public key schemes from timing and fault attacks
US6144740A (en) * 1998-05-20 2000-11-07 Network Security Technology Co. Method for designing public key cryptosystems against fault-based attacks with an implementation
US6691143B2 (en) * 2000-05-11 2004-02-10 Cyberguard Corporation Accelerated montgomery multiplication using plural multipliers
US6963645B2 (en) * 2000-12-19 2005-11-08 International Business Machines Corporation Method for implementing the chinese remainder theorem
JP3785044B2 (ja) * 2001-01-22 2006-06-14 株式会社東芝 べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体
JP3950638B2 (ja) * 2001-03-05 2007-08-01 株式会社日立製作所 耐タンパーモジュラ演算処理方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008516502A (ja) * 2004-10-07 2008-05-15 アクサルト・エス・アー 命令の暗号セットを自動的に生成する方法および装置ならびにコード生成
JP2009537025A (ja) * 2006-03-31 2009-10-22 アクサルト・エス・アー サイドチャネル攻撃からの保護
WO2008114310A1 (ja) * 2007-03-16 2008-09-25 Fujitsu Limited Fault攻撃対策機能を備えた組み込み装置
JP7456205B2 (ja) 2020-03-11 2024-03-27 株式会社デンソー 演算器

Also Published As

Publication number Publication date
US20030163760A1 (en) 2003-08-28
EP1338955A3 (en) 2005-12-14
EP1338955A2 (en) 2003-08-27

Similar Documents

Publication Publication Date Title
US8369517B2 (en) Fast scalar multiplication for elliptic curve cryptosystems over prime fields
EP0997016B1 (en) Method and apparatus for fast elliptical encryption with direct embedding
KR100891323B1 (ko) 이진 필드 ecc에서 랜덤 포인트 표현을 이용하여 파워해독의 복잡도를 증가시키기 위한 암호화 방법 및 장치
KR101194837B1 (ko) 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법
Vigilant RSA with CRT: A new cost-effective solution to thwart fault attacks
EP2332040B1 (en) Countermeasure securing exponentiation based cryptography
KR100652377B1 (ko) 모듈라 지수승 알고리즘, 기록매체 및 시스템
JP2004304800A (ja) データ処理装置におけるサイドチャネル攻撃防止
KR100699836B1 (ko) 스칼라 곱에서 dfa 대책을 위한 장치 및 방법
WO2009091748A1 (en) Modular reduction using a special form of the modulus
JP2003241659A (ja) 情報処理方法
Aikata et al. Kavach: Lightweight masking techniques for polynomial arithmetic in lattice-based cryptography
Dubey et al. Cryptanalytic attacks and countermeasures on RSA
KR100817048B1 (ko) 여러 가지 포인트 표현을 기반으로 한 ecc에서 dfa대책을 위한 암호화 방법 및 장치
CN1985458B (zh) 增强的自然蒙哥马利指数掩蔽和恢复的方法和装置
EP1347596B1 (en) Digital signature methods and apparatus
Trujillo-Olaya et al. Hardware implementation of elliptic curve digital signature algorithm over GF (2409) using sha-3
EP1586028A2 (en) Method of constructing hyperelliptic curves suitable for cryptographic purposes and cryptographic apparatus using such a method
KR100953715B1 (ko) Crt-rsa 모듈라 지수승 알고리즘을 이용한 디지털서명 방법, 그 장치 및 이를 기록한 컴퓨터 판독가능 저장매체
KR100953716B1 (ko) Crt-rsa 기반의 비트 연산을 이용한 디지털 서명방법, 그 장치 및 이를 기록한 기록 매체
Fournaris et al. Efficient crt rsa with sca countermeasures
Saffar et al. Fault tolerant non-linear techniques for scalar multiplication in ECC
Monfared et al. Secure and efficient exponentiation architectures using Gaussian normal basis
Tsoutsos et al. Extending residue-based fault tolerance to encrypted computation
Tunstall et al. Check for updates

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050114

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050114

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060704

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060831

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20060831

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060926

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061124

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20061201

A912 Removal of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20070824