JP6973677B1 - 逆数算出方法、装置、およびプログラム - Google Patents
逆数算出方法、装置、およびプログラム Download PDFInfo
- Publication number
- JP6973677B1 JP6973677B1 JP2021047134A JP2021047134A JP6973677B1 JP 6973677 B1 JP6973677 B1 JP 6973677B1 JP 2021047134 A JP2021047134 A JP 2021047134A JP 2021047134 A JP2021047134 A JP 2021047134A JP 6973677 B1 JP6973677 B1 JP 6973677B1
- Authority
- JP
- Japan
- Prior art keywords
- reciprocal
- value
- information processing
- power
- bit
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/722—Modular multiplication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
- G06F7/726—Inversion; Reciprocal calculation; Division of elements of a finite field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
Description
本発明では、2の冪乗を法とする剰余体上での逆数が存在する条件を満たすため、積算値を奇数に限定する。対象の奇数を、1倍、2倍、4倍、・・・と2の冪乗倍したものを加算するまたは加算しないを、加算した値の下位側のビットから0(ゼロ)となるように選択していき、加算する(1)または加算しない(0)をビット列としたものを逆数とする。
x×a=y
y×b=x (x,y,a,bは全てnビット。a,bは奇数)
図1は、本発明の一実施形態に係る逆数を算出する処理のフローチャートである。
b=a−1=20b0+21b1+22b2+・・・ (bを2進数で表したものである)
b0=1 (固定(bは奇数であるので、b0=1である))
m=a*b=a*b0+2*a*b1+4*a*b2+8*a*b3・・・
mi=0の場合 bi=0
mi=1の場合 bi=1,m=m+2i*a
とmを更新しながらbを決めていく。なお、aが奇数であるので、m0=1である。
図2は、本発明の一実施形態に係る逆数の算出の一例である。
図2の(1)において、bi(最下位)は、1で固定である。図2の(2)において乗算の結果が1となるために、逆数の最下位ビットは1であることが必須である。そのため、a×1の加算が行われる。
図2の(4)において、乗算結果の1ビット目が0(ゼロ)となるよう、逆数の1ビット目は1を選択する。そのため、a×2の加算が行われる。
図2の(5)において、2ビット目は既に0(ゼロ)なので、逆数の2ビット目は0を選択する。そのため、a×4の加算は行われない。
乗算結果の3ビット目が0(ゼロ)となるよう、逆数の3ビット目は1を選択する。そのため、a×8の加算が行われる。
乗算結果の4ビット目が0(ゼロ)となるよう、逆数の4ビット目は1を選択する。そのため、a×16の加算が行われる。
5ビット目は既に0(ゼロ)なので、逆数の5ビット目は0を選択する。そのため、a×32の加算が行われない。
6ビット目は既に0(ゼロ)なので、逆数の6ビット目は0を選択する。そのため、a×64の加算が行われない。
7ビット目は既に0(ゼロ)なので、逆数の7ビット目は0を選択する。そのため、a×128の加算が行われない。図2の(6)において、下位8ビットの10進数は1である。
図3は、本発明の一実施形態に係る逆数を算出する処理のフローチャートである。なお、図1では本発明の概念を説明するために2のi乗を加算する形をとっているが、図3では実際の処理を想定し、都度2の冪乗を計算する処理やそれを格納するメモリを削減する形をとっている。
a=a×2
mi=0の場合 bi=0
mi=1の場合 bi=1,m=m+a
とaおよびmを更新しながらbを決めていく。なお、aの初期値が奇数であるので、m0=1である。
a=a*2:
a[3]=a[3]<<1 OR a[2]>>31
a[2]=a[2]<<1 OR a[1]>>31
a[1]=a[1]<<1 OR a[0]>>31
a[0]=a[0]<<1
m=m+a:
cf=0
i=0〜3で以下繰り返し。
cfn=(m[i]>>1+a[i]>>1+(m[i]ANDa[i]AND1))>>31
m[i]+=a[i]+cf
cf=cfn
ここで、逆変換の証明について説明する。
a*b=2n*D0+1
aにその逆数bを積算した値は、2の冪乗の剰余を計算すると1(Dは剰余計算で消える係数)となる。
xにaを積算した値は、2の冪乗の剰余を計算するとyとなる。
yに逆数bを積算した値は、2の冪乗の剰余を計算するとz(=x)となる。
x*(a*b)=2n*D0*x+x
(x*a)*b=2n*D1*b+y*b
=2n*D1*b+2n*D2+z
=2n*(D1*b+D2)+z
xに(a*b)を乗算したものと、(x*a)にbを乗算したものは同じである。つまり、x=zである。
((x*a)mod2n)*b=y*b
=2n*D2+z
図4は、本発明の一実施形態に係るWhite−box AESへの適用例である。
このように、従来の手法では、有効な逆数算出手段がない場合には逆数を全探索で求めていたが、本発明では、2の冪乗を法とする剰余体上で逆数を高速に算出可能である。また、本発明は暗号演算に適用可能であり、nビットのブロックデータにおいて、n−1ビットのデータ量(上記の値aの組み合わせ)の演算後のデータはnビットであり、ビット数が増えない。
図5は、本発明の一実施形態に係る情報処理装置1のハードウェア構成の一例を示すブロック図である。情報処理装置1は、CPU(Central Processing Unit)1001、ROM(Read Only Memory)1002、RAM(Random Access Memory)1003を有する。CPU1001、ROM1002、RAM1003は、いわゆるコンピュータを形成する。
1002 ROM
1003 RAM
1004 補助記憶装置
1005 表示装置
1006 操作装置
1007 I/F装置
1008 ドライブ装置
1009 記憶媒体
Claims (5)
- 情報処理装置が実行する、10進数の値aの逆数である10進数の値bを算出する方法であって、前記aおよび前記bは奇数であり、
前記情報処理装置のプロセッサが、前記aをビット列にするステップと、
前記プロセッサが、2の冪乗を法とする剰余体上の積算において、前記aを2の冪乗倍した値を加算するか加算しないかを選択し、加算する場合には1とし加算しない場合には0としたビット列を前記bとするステップと、
前記プロセッサが、前記bを前記aの逆数として算出するステップと
を含む方法。 - 前記aと前記bの積をmとしたときに、前記aと、前記bと、前記mとのそれぞれを複数の配列として、前記aの逆数である前記bを算出する、請求項1に記載の方法。
- ホワイトボックス暗号方式のAESにおいて、前記aの逆数である前記bを算出する、請求項1または2に記載の方法。
- プロセッサを備え、10進数の値aの逆数である10進数の値bを算出する情報処理装置であって、前記aおよび前記bは奇数であり、
前記プロセッサは、
前記aをビット列にし、
2の冪乗を法とする剰余体上の積算において、前記aを2の冪乗倍した値を加算するか加算しないかを選択し、加算する場合には1とし加算しない場合には0としたビット列を前記bとし、
前記bを前記aの逆数として算出する、情報処理装置。 - 10進数の値aの逆数である10進数の値bを算出し、前記aおよび前記bは奇数である情報処理装置に、
前記aをビット列にする手順と、
2の冪乗を法とする剰余体上の積算において、前記aを2の冪乗倍した値を加算するか加算しないかを選択し、加算する場合には1とし加算しない場合には0としたビット列を前記bとする手順と、
前記bを前記aの逆数として算出する手順と
を実行させるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021047134A JP6973677B1 (ja) | 2021-03-22 | 2021-03-22 | 逆数算出方法、装置、およびプログラム |
US17/652,170 US20220308840A1 (en) | 2021-03-22 | 2022-02-23 | Reciprocal calculating method and reciprocal calculating apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021047134A JP6973677B1 (ja) | 2021-03-22 | 2021-03-22 | 逆数算出方法、装置、およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6973677B1 true JP6973677B1 (ja) | 2021-12-01 |
JP2022146258A JP2022146258A (ja) | 2022-10-05 |
Family
ID=78766748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021047134A Active JP6973677B1 (ja) | 2021-03-22 | 2021-03-22 | 逆数算出方法、装置、およびプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220308840A1 (ja) |
JP (1) | JP6973677B1 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000165375A (ja) * | 1998-11-30 | 2000-06-16 | Hitachi Ltd | 情報処理装置、icカード |
JP2000330470A (ja) * | 1999-03-15 | 2000-11-30 | Matsushita Electric Ind Co Ltd | べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体 |
WO2008149496A1 (ja) * | 2007-05-30 | 2008-12-11 | Panasonic Corporation | 情報セキュリティ装置 |
WO2018108705A1 (en) * | 2016-12-12 | 2018-06-21 | Koninklijke Philips N.V. | An electronic calculating device arranged to calculate the product of integers |
-
2021
- 2021-03-22 JP JP2021047134A patent/JP6973677B1/ja active Active
-
2022
- 2022-02-23 US US17/652,170 patent/US20220308840A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000165375A (ja) * | 1998-11-30 | 2000-06-16 | Hitachi Ltd | 情報処理装置、icカード |
JP2000330470A (ja) * | 1999-03-15 | 2000-11-30 | Matsushita Electric Ind Co Ltd | べき乗演算装置、べき乗剰余演算装置、楕円べき倍点演算装置、並びのそれらの方法、記録媒体 |
WO2008149496A1 (ja) * | 2007-05-30 | 2008-12-11 | Panasonic Corporation | 情報セキュリティ装置 |
WO2018108705A1 (en) * | 2016-12-12 | 2018-06-21 | Koninklijke Philips N.V. | An electronic calculating device arranged to calculate the product of integers |
Also Published As
Publication number | Publication date |
---|---|
JP2022146258A (ja) | 2022-10-05 |
US20220308840A1 (en) | 2022-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4875700B2 (ja) | ランダム化されたモジュラー多項式のリダクション方法およびそのためのハードウェア | |
US8392494B2 (en) | Method and apparatus for performing efficient side-channel attack resistant reduction using montgomery or barrett reduction | |
US8428252B1 (en) | Using multiples above two with running totals in elliptic curve cryptography scalar multiplication acceleration tables | |
US20070140478A1 (en) | Encryption apparatus and encryption method | |
US10768898B2 (en) | Efficient modulo calculation | |
CN107004084B (zh) | 用于加密操作的乘法掩码 | |
TW200822664A (en) | Modular reduction using folding | |
KR100442218B1 (ko) | 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 | |
US8781112B2 (en) | Signed montgomery arithmetic | |
CN111385092B (zh) | 使用信息盲化的密码装置及其密码处理方法 | |
JP4351987B2 (ja) | モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム | |
KR20040067779A (ko) | 정보 처리방법 | |
JP6973677B1 (ja) | 逆数算出方法、装置、およびプログラム | |
CN110336658B (zh) | 基于aes算法的加密方法、用户设备、存储介质及装置 | |
CN110034918B (zh) | 一种sm4加速方法和装置 | |
US20140270152A1 (en) | Efficient hardware architecture for a s1 s-box in a zuc cipher | |
WO2023232951A1 (en) | Method and circuit for securely mapping a masked variable | |
Will et al. | Computing mod without mod | |
JPWO2011036746A1 (ja) | 演算装置 | |
JP2010507813A (ja) | 中央演算処理装置の演算能力を高めるための暗号方法および暗号装置 | |
US20030147529A1 (en) | Table driven method for calculating arithmetic inverse for use in cryptography | |
TWI793020B (zh) | 防禦密碼系統時間攻擊之方法、密碼系統處理電路及電子裝置 | |
CN118312138B (zh) | 蒙哥马利模乘的硬件加速器实现方法及硬件加速器 | |
US11973866B2 (en) | Cryptographic processing method, related electronic device and computer program | |
JP2007503036A (ja) | モジュラ乗算を行うための方法、および2nビットの数を使用してユークリッド乗算を行うための方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210322 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20210322 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20210430 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210518 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210702 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20211005 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211018 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6973677 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |