JP3315087B2 - 逆元計算装置及びそのプログラム記録媒体 - Google Patents
逆元計算装置及びそのプログラム記録媒体Info
- Publication number
- JP3315087B2 JP3315087B2 JP01078899A JP1078899A JP3315087B2 JP 3315087 B2 JP3315087 B2 JP 3315087B2 JP 01078899 A JP01078899 A JP 01078899A JP 1078899 A JP1078899 A JP 1078899A JP 3315087 B2 JP3315087 B2 JP 3315087B2
- Authority
- JP
- Japan
- Prior art keywords
- storage means
- stored
- updating
- storage
- storing
- 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.)
- Expired - Lifetime
Links
Landscapes
- Complex Calculations (AREA)
Description
セキュリティ技術に用いられる整数の剰余環の逆元計算
装置及びそのプログラム記録媒体に関するものである。
有効である。暗号化の方法は共通鍵暗号と公開鍵暗号が
ある。共通鍵暗号では、暗号化側と復号化側で同一の鍵
を用い、この鍵は秘密に管理されている。一方、公開鍵
暗号では暗号化鍵と復号化鍵は異なっており、暗号化鍵
は公開しても、復号化鍵は現実的な時間内に求まらない
と広く信じられている。
号の構成は、例えば「岡本、太田共編:“暗号・ゼロ知
識証明・数論,”共立出版,1995」(以下、文献O
Oと略す)のp.220に示されている。RSA暗号は
Nを自然数としてZ/NZ上の冪乗演算、いわゆる冪乗
剰余演算を必要とする。この冪乗剰余演算を高速に実行
するためには、文献OOのpp.179−181に紹介
されているMontgomery法が有効である。Mo
ntgomery法を実行するためにはmを自然数とし
てmod2m での逆元演算を必要とする。
ためには、文献OOのpp.120−121にある拡張
Euclidの互除法を使うことができるが、ここでは
法が2m という特別な形であるので、Hensel l
ifting(多項式の根をmod bm からmod
bm+1 に持ち上げる自然な方法)を用い効率的に求める
ことができる。さらに、逆元計算をソフトウェアで実行
する場合には近年のCPUにおいてワード乗算は比較的
高速であるのでmがワード長程度の場合Hensel
liftingの2次版であるZassenhausの
方法(文献「H.Zassenhaus:“On He
nsel Factorization,I,”Jou
rnal of number theory,vo
l.1,pp.291−311,1969」)が有効で
ある。
出力をy、補助変数をaとbとおき、[x]をガウス記
号(xを越えない最大の整数)とすると、m=2n (n
≧1)の場合は以下の通りである。また、ビット位置は
最下位を0とおき、x、y、a、bのビット長はmとす
る。 Step1:xを入力する。
=[x/2]とする。 Step3:i=0,1,…,n−1について以下を繰
り返す。 1.aを(y×(2^(2i )−(bの下位2i ビッ
ト)))の下位2i ビットとする。ただし、p^qはp
のq乗を表わす。 2.yの2i ビット目から2i+1 −1ビット目にaの下
位2i ビットをはめ込む。
−2i −1ビット目を代入する。 Step4:yを出力する。 この場合のビット処理は、iの状態変化に対する出力y
を格納したレジスタの内容を2進数で表わすと図3に示
すようになる。「1」は常に1、「.」は求まったビッ
ト、「?」は未知のビットである。ここでi=1の結果
からi=2の結果を作るところを見ると、新たに4〜7
ビット目が求まっている。この4〜7ビット目にデータ
を配置することを「はめ込む」と表現している。
usの方法は、下位2i ビットの取出し、はめ込みなど
ビット単位の処理が多く、ソフトウェアで実装する場合
にはマスク処理が多くなり効率があまりよくない。この
発明では、このマスク処理を削減することを目的とす
る。
sの方法において、Step3の2.で、aをyにはめ
込む際にそのまま、はめ込むのではなく、この発明では
加算ではめ込む(足し込む)。このようにすると、St
ep3の1.でマスクせずとも符号を反転させれば結果
が正しくなる性質を利用する。
たもので、a、bを補助変数とし、m=2n (n≧1)
であり、x、y、a、bのビット長はmであって、この
発明によれば、xを入力し、記憶手段に記憶し、初期処
理として、xを読み出し、[x/2]を演算し、この結
果をbとして記憶手段に記憶し、bの最下位ビットをa
として記憶手段に記憶し、a、x、bを読み出し、
[(ax+b)/2]を演算し、その結果によりbを更
新し、xを読み出し、その下位2ビットをyとして記憶
手段に記憶する。
b、yを読み出して−byを演算し、その結果で記憶手
段内のaを更新し、またb、a、xを読み出して[(b
+ax)/(2^(2i ))]を演算し、その結果で記
憶手段内のbを更新し、y、aを読み出し、y+a×2
^(2i )を演算し、その結果で記憶手段内のyを更新
する。ただしp^qはpのq乗を表わす。
力する。
て説明する。図1は処理手順を示す。入力をx、出力を
y、補助変数をaとbとおき、[x]をガウス記号(x
を越えない最大の整数)とし、m=2n (n≧1)の場
合は以下の通りである。ここでx、y、a、bのビット
長はmとする。
返す。
順序で実行する。4と5は任意のタイミングで実行して
よい。 ・Step3において、1→2→3の順に実行しても、
1→3→2の順に実行してもよいが、最近の計算機では
データ依存性から1→2→3の順で実行するのがよい。
また、i=n−1のときは、bは不要なので2を実行し
なくてよい。さらに4は任意のタイミングで実行してよ
い。
いてもよい(展開数は逆元対象のビット数のlogのオ
ーダでしか効いてこない)。ループ展開することによ
り、iに依存する定数を事前に計算しておき、より高速
に逆元を求めることができる。 ・2の冪での割算、かけ算は、通常のプロセッサではシ
フト演算を使うとより高速に計算できる。
入力手段11によりxが記憶装置12のx格納領域13
に格納され、演算装置10内のb初期化第1手段14に
よりxが記憶装置12から読み出され、[x/2]が演
算され、その演算結果がbとして記憶装置12のb格納
領域15に格納される。
bが読み出され、その最下位ビットがaとして記憶装置
12のa格納領域17に記憶される。b初期化第2手段
18により、記憶装置12からa、x、bが読み出さ
れ、[(ax+b)/2]が演算され、その演算結果が
bとしてb格納領域15の記憶内容が更新される。y初
期化手段19により記憶装置12からxが読み出され、
その下位2ビットがyとして記憶装置12のy格納領域
21に格納される。i初期化手段22により記憶装置1
2のi格納領域23にiとして1がセットされる。
b、yが読み出され、−byが演算され、その演算結果
によりa格納領域17に記憶されているaが更新され
る。b更新手段25により記憶装置12からa、b、
x、iが読み出され、[(b+ax)/2^(2i )]
が演算され、その演算結果によりb格納領域15に記憶
されているbが更新される。
a、y、iが読み出され、y+a×2^(2i )が演算
され、その演算結果により、y格納領域21に格納され
ているyが更新される。i更新手段27により記憶装置
12からiが読み出され、i+1が演算され、その演算
結果によりi格納領域23に格納されているiが更新さ
れる。
nが読み出され、i=nになるまでa更新手段24、b
更新手段25、y更新手段26、i更新手段27が順次
動作させられ、i=nになると出力手段29により、記
憶装置12からyが読み出され、外部へ出力される。こ
の発明の装置はその各機能を、コンピュータによりプロ
グラムを解析実行させることにより、行わせることもで
きる。
2、3から理解されるようにビットはめ込み処理がなく
なり、それだけZassenhausの方法をソフトウ
ェアで実装する上で問題となったビット処理が軽減さ
れ、mod2m で高速に逆元が計算できるようになっ
た。
(すなわち32ビット)の場合に“Zassenhau
sの方法”及びこの発明の逆元演算方法をC言語で実装
して処理速度を比較した。入力xは乱数を発生させて決
定し、繰り返し実行することでOSのオーバーヘッドを
除去して比較したところ、この発明の逆元演算方法は
“Zassenhausの方法”に比べて10%以上高
速に逆元を計算できることを確認した。
図。
を示す図。
Claims (2)
- 【請求項1】 入力されたxを記憶手段に記憶する入力
手段と、 整数n、i(nは1以上)および2n ビットの整数x、
y、a、bを記憶する記憶手段と、 記憶手段に記憶されたxを用いて[x/2](ただし
[x]はxを越えない最大の整数)を演算し、演算結果
をbとして記憶手段に記憶するb初期化第1手段と、 記憶手段に記憶されたbの最下位ビットをaとして記憶
手段に記憶するa初期化手段と、 記憶手段に記憶されたa、x、bを用いて[(ax+
b)/2]を演算し、その演算結果により、記憶手段に
記憶されたbを更新するb初期化第2手段と、 記憶手段に記憶されたxの下位2ビットを取得してyと
して記憶手段に記憶するy初期化手段と、 記憶手段に記憶されたiを1にセットするi初期化手段
と、 記憶手段に記憶されたb、yを用いて−byを演算し、
その演算結果により、記憶手段に記憶されたaを更新す
るa更新手段と、 記憶手段に記憶されたa、b、x、iを用いて[(b+
ax)/(2^(2i))]を演算し、その演算結果に
より、記憶手段に記憶されたbを更新するb更新手段と
(但しp^qはpのq乗を表わす)、 記憶手段に記憶されたa、y、iを用いてy+a×2^
(2i )を演算し、その演算結果により、記憶手段に記
憶されたyを更新するy更新手段と、 記憶手段に記憶されたiをi+1に更新するi更新手段
と、 記憶手段に記憶されたi、nを読み出し、i=nになる
まで上記a更新手段、 上記b更新手段、上記y更新手段、上記i更新手段を順
次動作させる制御手段と、 記憶手段に記憶されたyを出力する出力手段と、 を有することを特徴とする逆元演算装置。 - 【請求項2】 入力された2n ビットの整数(nは1以
上の整数)xを記憶手段に記憶する処理と、 記憶手段のxを読み出し、[x/2](ただし[x]は
xを越えない最大の整数)を演算し、その演算結果を2
n ビットの整数bとして記憶手段に記憶する処理と、 記憶手段のbを読み出し、bの最下位ビットを2n ビッ
トの整数aとして記憶手段に記憶する処理と、 記憶手段のa、x、bを読み出し、[(ax+b)/
2]を演算し、その演算結果をbとして記憶手段に記憶
する処理と、 記憶手段のxを読み出し、xの下位2ビットを取得して
2n ビットの整数yとして記憶する処理と、 整数iを、lに初期化して記憶手段に記憶する処理と、 記憶手段からb及びyを読み出し、−byを演算し、そ
の演算結果により記憶手段に記憶されているaを更新す
るa更新処理と、 記憶手段からa、b、x、iを読み出し、[(b+a
x)/(2^(2i ))]を演算し、その演算結果によ
り記憶手段に記憶されているbを更新するb更新処理と
(ただしp^qはpのq乗を表わす)、 記憶手段からa、y、iを読み出し、y+a×2^(2
i )を演算し、その演算結果により、記憶手段に記憶さ
れているyを更新するy更新処理と、 記憶手段からiを読み出し、iをi+1に更新するi更
新処理と、 記憶手段からi、nを読み出し、i=nになるまで、上
記a更新処理、上記b更新処理、上記y更新処理、上記
i更新処理を順次繰返し動作させる処理と、 記憶手段のyを読み出して出力する処理と、 を逆元演算装置のコンピュータに実行させるプログラム
を記録した記録媒体。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP01078899A JP3315087B2 (ja) | 1999-01-19 | 1999-01-19 | 逆元計算装置及びそのプログラム記録媒体 |
| US09/487,597 US6578061B1 (en) | 1999-01-19 | 2000-01-19 | Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon |
| US10/419,241 US6850960B2 (en) | 1999-01-19 | 2003-04-21 | Inverse calculation apparatus and recording medium having stored thereon a program for executing inverse calculation |
| US10/419,244 US6859818B2 (en) | 1999-01-19 | 2003-04-21 | Method and apparatus for permuting input data and recording medium having stored thereon a program for executing permutation |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP01078899A JP3315087B2 (ja) | 1999-01-19 | 1999-01-19 | 逆元計算装置及びそのプログラム記録媒体 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2000206881A JP2000206881A (ja) | 2000-07-28 |
| JP3315087B2 true JP3315087B2 (ja) | 2002-08-19 |
Family
ID=11760091
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP01078899A Expired - Lifetime JP3315087B2 (ja) | 1999-01-19 | 1999-01-19 | 逆元計算装置及びそのプログラム記録媒体 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3315087B2 (ja) |
-
1999
- 1999-01-19 JP JP01078899A patent/JP3315087B2/ja not_active Expired - Lifetime
Non-Patent Citations (3)
| Title |
|---|
| GF(2m)における逆元の高速算法について,電子情報通信学会技術研究報告,1987年 7月18日,Vol.87,No.120,IT87−24 |
| 有限体GF(2m)の逆元の効率的再帰アルゴリズム,昭和63年電子情報通信学会春季全国大会講演論文集,1988年 3月15日,1−299 |
| 素数べきを法とする逆元計算アルゴリズム,1997年暗号と情報セキュリティ・シンポジウム講演論文集,1997年 1月29日,14A |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2000206881A (ja) | 2000-07-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Comba | Exponentiation cryptosystems on the IBM PC | |
| US6859818B2 (en) | Method and apparatus for permuting input data and recording medium having stored thereon a program for executing permutation | |
| EP0917047B1 (en) | Apparatus for modular inversion for information security | |
| JP2008293034A (ja) | タイミング攻撃を阻止する標準化されたモジュラべき乗を計算することにより復号メカニズムを実行する方法と装置 | |
| CN113141255B (zh) | 用于在处理设备、对应的处理设备和计算机程序产品中对数据执行密码运算的方法 | |
| WO2010048719A1 (en) | Method and apparatus for modulus reduction | |
| US12524578B2 (en) | Processor architecture and related techniques | |
| CN111385092B (zh) | 使用信息盲化的密码装置及其密码处理方法 | |
| CN108418687B (zh) | 一种适合sm2算法的快速模约减方法和介质 | |
| JP3315087B2 (ja) | 逆元計算装置及びそのプログラム記録媒体 | |
| Kim et al. | High-speed division architecture for GF (2 m) | |
| Bernstein | Optimizing linear maps modulo 2 | |
| CN118713820A (zh) | 一种基于比特切片的aes高阶掩码s盒快速实现方法 | |
| CN111339546B (zh) | 用于生成数据标签的方法、电子设备及计算机存储介质 | |
| Kuramoto et al. | Improved Constant-Time Modular Inversion | |
| Jin et al. | Short-iteration constant-time GCD and modular inversion | |
| Dutta et al. | Polynomial Inversion Algorithms in Constant Time for Post-Quantum Cryptography | |
| Ilkhom et al. | A novel approach to integer factorization: a paradigm in cryptography | |
| KR100194769B1 (ko) | 메모리를 사용하여 유한체상에서 역원을 구하는 방법 | |
| Inoue et al. | A faster variant of cgl hash function via efficient backtracking checks | |
| KR100377185B1 (ko) | 암호시스템의 연산속도 개선 방법 | |
| Cao et al. | EHNP strikes back: analyzing SM2 implementations | |
| JP2004102071A (ja) | 多項式剰余系演算装置、方法及びプログラム | |
| JP3110110B2 (ja) | 暗号復号装置 | |
| US20040081317A1 (en) | Encryption circuit achieving higher operation speed |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090607 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090607 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100607 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100607 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110607 Year of fee payment: 9 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120607 Year of fee payment: 10 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130607 Year of fee payment: 11 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140607 Year of fee payment: 12 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| EXPY | Cancellation because of completion of term |