JP5157018B2 - ガロア体上の元の除算演算回路 - Google Patents

ガロア体上の元の除算演算回路 Download PDF

Info

Publication number
JP5157018B2
JP5157018B2 JP2010140131A JP2010140131A JP5157018B2 JP 5157018 B2 JP5157018 B2 JP 5157018B2 JP 2010140131 A JP2010140131 A JP 2010140131A JP 2010140131 A JP2010140131 A JP 2010140131A JP 5157018 B2 JP5157018 B2 JP 5157018B2
Authority
JP
Japan
Prior art keywords
output
divisor
dividend
digit
bits
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 - Fee Related
Application number
JP2010140131A
Other languages
English (en)
Other versions
JP2010217921A (ja
Inventor
誠 氏家
Original Assignee
ネッツエスアイ東洋株式会社
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 ネッツエスアイ東洋株式会社 filed Critical ネッツエスアイ東洋株式会社
Priority to JP2010140131A priority Critical patent/JP5157018B2/ja
Publication of JP2010217921A publication Critical patent/JP2010217921A/ja
Application granted granted Critical
Publication of JP5157018B2 publication Critical patent/JP5157018B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、ガロア体上の元の除算演算回路およびその演算回路を含む演算装置に係り、特に、符号・暗号回路等に用いられるガロア体上の元の除算演算回路およびその演算回路を含む演算装置に関する。
近年、情報のディジタル化によって様々なサービスが提供され、快適な生活環境が整備されつつある。
例えば、インターネットの普及によって、我々はネットワークに接続された世界中のサーバが提供するサービスの恩恵を受けることができる。また、ディジタル携帯電話の普及によって、必要なときにすぐにコミュニケーションをとることが可能となり、通話以外の付加サービスを利用することができる。さらに、クレジットカードやプリペイトカードなどは、現金のやりとりによる煩わしさを解消してくれるという利点がある。
このような情報のディジタル化は、我々に利便性を提供してくれる反面、不正利用による被害を受け易いという問題を有する。例えば、盗聴によるプライバシーの侵害や個人情報の流出、複写・改ざん・なりすましによるシステムの不正利用などがそれである。そこで、これらの問題の解決策として、最近では暗号技術が注目されており、その中でもガロア体上の演算を利用した暗号技術の一つである楕円曲線暗号の研究開発が盛んに行われている。
この楕円曲線暗号は、楕円曲線上の離散対数問題に安全性の根拠を置く公開鍵暗号系であり、IEEE P1363で標準化の検討がなされている。
このように、従来の符号・暗号の分野では、ガロア体上の演算が利用されている。ガロア体GF(2m)は、2m個の元からなる集合であり、その表現方法としてベクトル表現がよく用いられる。上記のベクトル表現においては、ガロア体GF(2m)上の元aはGF(2)の元
Figure 0005157018
を用いて、m次元ベクトル
Figure 0005157018
として表現する。ベクトル表現においては、元の表現はベクトル空間の基底によって決定される。
特に、多項式基底では、GF(2)上のm次既約多項式fを生成多項式とし、fの根である元αを用いて、
Figure 0005157018
を基底とする。また、このとき、ガロア体GF(2m)上の元aの多項式表現は、xを変数として、
Figure 0005157018
となる。ガロア体GF(2m)上の元同士の演算は、上記多項式表現を用いると容易に理解することができる。
例えば、GF(26)上の2つの元を
A=(1,0,0,1,1,1)
B=(1,1,0,0,0,1)
とし、それらの加算式C=A+Bは、多項式表現を用いると、
Figure 0005157018
となる。即ち、
C=(1+1,0+1,0+0,1+0,1+0,1+1)
=(0,1,0,1,1,0)
である。ここに、+はGF(2)上の演算であるから、排他的論理和演算となる。
これと同様に、GF(26)上の2つの元
A=(1,0,0,1,1,1)
B=(1,1,0,0,0,1)
の減算式C=A−Bは、
C=(1−1,0−1,0−0,1−0,1−0,1−1)=(0,1,0,1,1,0)
である。ここに、−もGF(2)上の演算であるから、排他的論理和演算となる。
また、GF(26)上の2つの元の乗算式D=A・Bは、多項式表現を用いると、次式(1)のように計算することができる。
Figure 0005157018
…………(1)
今、このガロア体GF(26)の既約多項式を
F=(1,0,1,0,1,0,1)
とする。すなわち、
Figure 0005157018
である。この既約多項式によって、上記(1)式を5次以下の多項式へと変形する。即ち、F(x)を0とおき、次式(2)のように6次以上の項に繰り返し適用して、5次以下にする。
Figure 0005157018
…………(2)
まず、(1)式の最高次が10次なので、(2)式にx4を乗じると、
Figure 0005157018
となる。この式を(1)式の10次の項に代入すると、
Figure 0005157018
のようになり、この時点での最高次が9次なので、同様の計算を行う。これを繰り返して、5次以下にすると最終的な結果は、
Figure 0005157018
となり、乗算結果のベクトル表現は、
D=(1,0,0,1,1,1)
となる。
このように、乗算演算では、(1)式を(2)式の既約多項式Fで5次以下とする演算処理を行う際に、途中の演算結果の桁数を増やさない(次数を落とす)ための除算を行いその剰余を求めている点に着目し、本発明者らは除算演算を行う際にも同様の演算回路を利用することができないかを検討している。
また、従来の除算演算回路では、乗算と加算とを一定の条件に従って繰り返し演算処理することにより除算演算を行っていた。
さらに、通常のCPU等の演算回路には、一般的に用いられる除算演算回路(以下、標数Pの除算演算回路という)が内蔵されている。一方で、符号・暗号処理等を行う際には、上記したガロア体GF(2m)上のベクトルで表される2つの元の除算演算回路(以下、標数2の除算演算回路という)を必要とする場合があった。そこで、これら両者の除算演算処理を必要とする場合、従来はそれぞれ別個の演算回路を用意していた。
しかしながら、このような従来の演算回路にあっては、上記した乗算演算において、(1)式を(2)式の既約多項式Fで5次以下にする処理は、除算を行いその剰余を求めているが、この除算は途中の演算結果の桁数を増やさない(次数を落とす)ための処理であり、除数が既約多項式に制限されてしまうことから、これまでの乗算回路をそのまま除算回路として転用するのは困難であるという問題があった。
また、従来の除算演算回路における除算演算は、乗算と加算とが一定の条件に従って繰り返し行われるため、計算量が膨大となり、計算時間が長くかかるという問題があった。
さらに、一般的に用いられる標数Pの除算演算回路と、符号・暗号処理等を行うための標数2の除算演算回路の両方が必要な場合は、従来はそれぞれ別個の演算回路を使用していたため、回路規模が増加し、コスト増になるという問題があった。
本発明は、上記課題に鑑みてなされたものであり、除数の制限がなく、演算速度が速い上、標数Pと標数2の両方の除算演算処理を行う場合であっても回路規模を増加させずに、低コストに実現することができるガロア体上の元の除算演算方法および除算演算回路を提供することを目的とする。
上記の目的を達成するため、請求項1記載の発明は、ガロア体上のmビットとnビット(m、nは共に自然数で、m>n)のベクトルで表現される2つの元である被除数A=(a0,…,am−1)と除数B=(b0,…,bn−1)に対してA/Bを演算し、最大でmビットで表現される商C=(c0,…,cm−1)と、最大でn−1ビットで表現される剰余D=(d0,…,dn−2)とを求めるためのガロア体上の元の除算演算回路であって、mビットから成る前記被除数Aを格納し、上位ビットから順次出力する被除数格納出力手段と、nビットから成る前記除数Bを各桁毎に格納し、それぞれ個別に出力する除数格納出力手段と、各桁毎の演算データをそれぞれ格納し、その演算データを次桁へ出力する演算データ格納出力手段と、前記被除数格納出力手段から出力される被除数あるいは前記演算データ格納出力手段から出力される各桁の演算データを前記除数格納出力手段から出力される除数の値に基づいて、そのまま出力するか、一つ下の桁の出力を上位桁へ渡すかを選択して前記除数の有効桁数を検出する有効桁数検出手段と、前記有効桁数検出手段からの出力と、前記除数格納出力手段から出力される各桁の除数Bとの論理積をとって減算処理するか否かを選択する論理積手段と、前記論理積手段からの論理積出力と、前記被除数格納出力手段から出力される被除数あるいは前記演算データ格納出力手段から出力される演算データとの排他的論理和をとって減算処理を実行する排他的論理和手段と、前記有効桁数検出手段からの出力を順次入力して格納する演算結果格納手段と、を備え、前記被除数Aの全ビットが出力されるまで演算処理を実行することにより、前記演算結果格納手段に前記商Cが格納され、前記演算データ格納出力手段に剰余Dが格納されるものである。
以上説明したように、請求項1記載のガロア体上の元の除算演算回路によれば、ガロア体上の元の除算および剰余算を除数Bのビット数に制限されることなく実現することができる。
本実施の形態1に係るガロア体上の元の除算演算回路の構成例を示す図である。 図1の除算演算回路による演算処理状態を示す図である。 図1の除算演算回路を用いて除算演算を行う場合の処理動作を説明する図である。 本実施の形態2に係るガロア体上の元の除算演算回路の構成例を示す図である。 除数のビット数の制限を受けない図4の除算演算回路による演算処理状態を示す図である。 図4の除算演算回路を用いて除算演算を行う場合の処理動作を説明する図である。 本実施の形態3に係る除算演算回路の構成例を示す図である。 (a)(b)(c)(d)は、図7の除算演算用モジュールの内部構造を示す図である。 図8(c)のボロー計算部への入力信号の組み合わせと出力信号との関係を一覧に示した図である。 図7の除算演算回路による標数Pの演算処理過程を説明する図である。 図7の除算演算回路による標数2の演算処理過程を説明する図である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
(実施の形態1)
この実施の形態1は、本発明のガロア体GF(2m)上の元の除算を実現する除算演算回路を説明するものである。
図1は、本実施の形態1に係るガロア体上の元の除算演算回路10の構成例を示す図である。この構成例では、除数を5ビットとし、最上位桁が常に1である必要がある。つまり、除数が4ビットや3ビットでは計算することのできない構成である。
図1に示す除算演算回路10は、被除数格納出力手段としてのシフトレジスタ12、除数格納出力手段としてのレジスタ14〜22、演算データ格納出力手段としてのレジスタ24〜30、論理積手段としての論理積素子32〜38、排他的論理和手段としての排他的論理和素子40〜46、演算結果格納手段としてのシフトレジスタ48などにより構成されている。
シフトレジスタ12には、被除数Aが格納され、1クロック毎に上位桁から出力するものである。ここでは、一例として被除数A=(1,1,0,1,0,0,1,1,1)とすると、1,1,1,0,0,1,0,1,1の順に出力される。
レジスタ14〜22は、除数Bを格納するもので、レジスタ22に最上位桁(MSB)、そしてレジスタ20、18、16…と順に格納してゆき、レジスタ14に最下位桁(LSB)を格納する。ここでは、一例として除数B=(1,0,0,1,1)とすると、レジスタ14〜22には順に1,0,0,1,1が格納される。
レジスタ24〜30は、演算用のレジスタであって、レジスタ30が最上位桁となる。レジスタ24〜30は、演算前に全て「0」にリセットされる。各レジスタ24〜30には、対応する桁のレジスタ14〜22からの除数Bと、レジスタ30からの出力との論理積(論理積素子32〜38による)出力と、一つ下位の桁の出力(例えば、最下位桁のレジスタ24にはシフトレジスタ12からの出力)との排他的論理和(排他的論理和素子40〜46による)出力がそれぞれ入力される。
排他的論理和素子40〜46は、減算を実行する素子である。
論理積素子32〜38は、論理積を実行する素子であり、ここに入力されるレジスタ30からの出力は、減算するかしないかの選択信号である。通常、この値は「0」(減算をしない)であり、演算用のレジスタ24〜30の値をそのまま次桁へシフトさせる。
以上のように、本実施の形態1の除算演算回路10が構成されており、シフトレジスタ12に格納された被除数Aの上位桁から順にシフトしていって、被除数Aの上位5桁を常に見ている。
レジスタ30は、現在の最高次の値であり、これが「1」となった時に減算処理が実行される。レジスタ30の値が「1」になると、論理積素子32〜38は、レジスタ14〜22からの除数Bの値を出力して、排他的論理和素子40〜46において減算が実行される。
また、レジスタ30の出力は、そのままシフトレジスタ48にも格納され、これが商となる。このような処理動作は、被除数Aの全ビットが出力されるまで実行される。例えば、被除数Aがmビットであればmクロックで動作を止めるようにする。そして、この時にレジスタ24〜30に格納されている値が剰余となり、レジスタ30に格納されている値が最上位桁(MSB)となる。
図2は、図1の除算演算回路10による演算処理状態を示す図である。ここでは、被除数A=(1,1,0,1,0,0,1,1,1)、除数B=(1,0,0,1,1)として、実際にA/Bを計算したものである。
ここでは、被除数Aが9ビットであるため、図2に示すように、9クロック目まで演算処理が行われる。その結果、商が10110となり、剰余が1101となる。
次に、その除算演算の処理動作を説明する。
図3は、図1の除算演算回路10を用いて除算演算を行う場合の処理動作を説明する図である。
図3に示すように、被除数A=(1,1,0,1,0,0,1,1,1)が格納されたシフトレジスタ12からレジスタ24〜30へ被除数Aの最上位ビットから順にシフトさせて、4クロック目で上位4ビットを格納し、5ビット目がシフトレジスタ12の最上位桁に位置する状態として、除数Bと同じ5ビット(nビット)数分だけ被除数Aから抽出して、これを演算対象A´とする。
ここで、レジスタ30に格納された演算対象A´の最上位ビットの「1」を商c4=1とする。
このように、演算対象A´の最上位ビットが「1」であれば、演算対象A´から除数Bを減算し、それを減算結果A″として抽出する。
その減算結果A″の最上位ビットが「0」ならば、その最上位ビットを除く4ビット(n−1ビット)列を抽出すると共に、その4ビット列に被除数Aのa3の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その最上位ビットの「0」を商c3=0とする。
上記と同様の手順に従い、演算対象A´の最上位ビットが「0」であるので、最上位ビットを除く4ビット列を抽出し、その4ビット列に被除数Aのa2の「0」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その最上位ビットの「1」を商c2=1とする。
この新たな演算対象A´は、最上位ビットが「1」であるので除数Bを減算し、それを減算結果A″として抽出する。
その減算結果A″の最上位ビットが「0」であるので、最上位ビットを除く4ビット列を抽出し、被除数Aのa1の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出し、その最上位ビットの「1」を商c1=1とする。
新たな演算対象A´は、最上位ビットが「1」であるので除数Bを減算し、それを減算結果A″として抽出する。
減算結果A″の最上位ビットが「0」であるので、最上位ビットを除く4ビット列を抽出し、被除数Aのa0の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その最上位ビットの「0」を商c0=0とする。
このときの新たな演算対象A´の最上位ビットを除く4ビット列が剰余Dとなる。
その結果、商Cは、「10110」となり、剰余Dが「1101」となる。
以上説明したように、本実施の形態1によれば、除数が既約多項式のみに制限されることなく、迅速にガロア体上の元の除算演算を行うことができる。
(実施の形態2)
本実施の形態2は、ガロア体GF(2m)上の除数のビット数が制限されない除算を実現するものである。
図4は、本実施の形態2に係るガロア体上の元の除算演算回路50の構成例を示す図である。この構成例では、除数の最大ビット数を5ビットとする。つまり、除数としては1〜5ビットまでを使用することができる。
図4に示す除算演算回路50は、被除数格納出力手段としてのシフトレジスタ52、除数格納出力手段としてのレジスタ54〜62、演算データ格納出力手段としてのレジスタ64〜70、論理積手段としての論理積素子72〜78、排他的論理和手段としての排他的論理和素子80〜86、有効桁数検出手段としてのセレクタ88〜96、演算結果格納手段としてのシフトレジスタ98などにより構成されている。
シフトレジスタ52には、被除数Aが格納され、1クロック毎に上位桁から出力するものである。ここでは、一例として被除数A=(1,1,0,1,0,0,1,1,1)とすると、1,1,1,0,0,1,0,1,1の順に出力される。
レジスタ54〜62は、除数Bを格納するもので、レジスタ62に最上位桁(MSB)、そしてレジスタ60、58、56…と順に格納してゆき、レジスタ54に最下位桁(LSB)を格納する。ここでは、一例として5ビットの除数B=(1,0,1,0,0)とすると、レジスタ54〜62には順に1,0,1,0,0が格納される。
レジスタ64〜70は、演算用のレジスタであって、レジスタ70が最上位桁となる。レジスタ64〜70は、演算前に全て「0」にリセットされる。各レジスタ64〜70には、対応する桁のレジスタ54〜62からの除数Bと、セレクタ96からの出力信号100との論理積(論理積素子72〜78による)出力と、一つ下位の桁の出力(例えば、最下位桁のレジスタ64にはシフトレジスタ52からの出力)との排他的論理和(排他的論理和素子80〜86による)出力が入力される。
排他的論理和素子80〜86は、減算を実行する素子である。
論理積素子72〜78は、論理積を実行する素子であり、ここに入力されるセレクタ96からの出力信号100は、減算するかしないかの選択信号である。この選択信号は、レジスタ54〜62からの除数Bと、シフトレジスタ52からの出力、およびレジスタ64〜70の各出力と、セレクタ88〜96とによって制御される。
この各セレクタ88〜96を制御する制御信号は、レジスタ54〜62から出力される除数Bのそれぞれの値である。この制御信号の値が「1」の時は、その次数に対応する演算用のレジスタ64〜70の出力がそのままセレクタ出力となり、制御信号の値が「0」の時は、一つ下の次数のセレクタ出力を上位次数のセレクタへ渡すようにする。
最終的な出力信号100は、除数Bの値が「1」である次数の中で最高次のセレクタ96の出力となる。これにより、除数Bの有効ビット数を検出している。本実施の形態2では、除数B=(1,0,1,0,0)であるので、レジスタ58からセレクタ92に除数Bの最高次の「1」が出力されて、レジスタ66の出力が出力信号100となる。また、例えば、除数B=(1,0,0,1,1)の場合は、レジスタ70の出力が出力信号100となる。
通常、出力信号100の値は「0」である(図5の1クロック目参照)。すなわち、減算をせずに演算用のレジスタ64〜70をそのままシフトさせる。このようにして、被除数Aの上位桁から順にシフトしていって、有効ビットの次の値が「1」となった時に減算が実行される。
また、出力信号100の値が「1」になった場合は(図5の2〜3クロック目参照)、論理積素子72〜78がレジスタ54〜60からの除数Bの値を出力し、排他的論理和素子80〜86において減算が実行される。
そして、出力信号100は、そのままシフトレジスタ98にも格納され、これが商Cとなる。このような処理動作は、被除数Aの全ビットが出力されるまで行われる。すなわち、被除数Aがmビットであれば、mクロックで処理動作を止め、この時のレジスタ64〜70に格納されている値が剰余Dとなる。その時のレジスタ70の値が最上位桁(MSB)である。
また、図5は、除数のビット数の制限を受けない図4の除算演算回路50による演算処理状態を示す図である。ここでは、除数B=(1,0,1,0,0)が3ビットであっても、除算演算回路50でA/Bを計算することにより、商が1101000となり、剰余Dが11となる。
次に、その除算演算の処理動作を説明する。
図6は、図4の除算演算回路50を用いて除算演算を行う場合の処理動作を説明する図である。
図6に示すように、被除数A=(1,1,0,1,0,0,1,1,1)がシフトレジスタ52に格納され、その上位のレジスタ64〜70に4(n−1)ビット分の「0」を置いて、これを被除数Aとし、その被除数Aの上位5(n)ビット列「10000」を演算対象A´として抽出する。ここで、除数B=(1,0,1,0,0)であるので、0次から「1」の値を持つ次数の中で最高次までの有効ビット数をtとすると、t=3となる。このため、上記した演算対象A´「10000」の3ビット目の「0」が商c8=0となる。
この演算対象A´の3ビット目が「0」であれば、演算対象A´の最上位ビットを除く4ビット(n−1ビット)列を抽出すると共に、その4ビット列に被除数Aのa7の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「0」を商c7=0とする。
同様に演算対象A´の3ビット目が「0」であるので、その演算対象A´の最上位ビットを除く4ビット列を抽出すると共に、その4ビット列に被除数Aのa6の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「1」を商c6=1とする
新たな演算対象A´の3ビット目が「1」ならば、除数Bを減算して、その減算結果A″として抽出し、その減算結果A″の最上位ビットを除く4(n−1)ビット列を抽出し、被除数Aのa5の「0」を最下位ビットとして付加し、これを新たな演算対象A´として抽出する。そして、この新たな演算対象A´の3ビット目の「1」を商c5=1とする。
この新たな演算対象A´の3ビット目は、「1」であるので除数Bを減算し、それを新たな減算結果A″として抽出し、その減算結果A″の最上位ビットを除く4ビット列を抽出して、被除数Aのa4の「0」を最下位ビットとして付加し、これを新たな演算対象A´として抽出する。そして、この新たな演算対象A´の3ビット目の「0」を商c4=0とする。
新たな演算対象A´の3ビット目は、「0」であるので、その演算対象A´の最上位ビットを除く4ビット列を抽出すると共に、被除数Aのa3の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「1」を商c3=1とする
この新たな演算対象A´の3ビット目が「1」であるので除数Bを減算し、それを新たな減算結果A″として抽出し、減算結果A″の最上位ビットを除く4ビット列を抽出して、被除数Aのa2の「0」を最下位ビットとして付加し、これを新たな演算対象A´として抽出する。そして、この新たな演算対象A´の3ビット目の「0」を商c2=0とする。
新たな演算対象A´の3ビット目は、「0」であるので、その演算対象A´の最上位ビットを除く4ビット列を抽出すると共に、被除数Aのa1の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「0」を商c1=0とする。
同様に、新たな演算対象A´の3ビット目が「0」であるので、その演算対象A´の最上位ビットを除く4ビット列を抽出すると共に、被除数Aのa0の「1」を最下位ビットとして付加し、これを新たな演算対象A´として抽出して、その3ビット目の「0」を商c0=0とする。
この商Cのc0までを求めた時の新たな演算対象A´の最上位ビットを除いた4(n−1)ビット列が剰余Dとなる。
このように、本実施の形態2では、被除数A=(1,1,0,1,0,0,1,1,1)とし、除数B=(1,0,1,0,0)として、図4の除算演算回路50により実際にA/Bを計算すると、その時の商Cが「0001011」となり、その剰余Dを「11」と求めることができる。
以上説明したように、本実施の形態2によれば、ガロア体上の元の除算および剰余算を除数Bのビット制限なく実現することができる。
(実施の形態3)
本実施の形態3は、ガロア体GF(2m)上ベクトルで表わされる2つの元の除算演算(標数2の除算)と、一般的に用いられる除算演算(標数Pの演算)のどちらの除算演算をも可能とする除算演算回路を実現するものである。
図7は、本実施の形態3に係る除算演算回路110の構成例を示す図である。この構成例では、除数の最大ビット数を4ビットとする。つまり、除数としては1〜4ビットまでを使用することができる。
図7に示す除算演算回路110は、シフトレジスタ112、レジスタ114〜120、除算演算用モジュール122〜130、レジスタ132〜138、インバータ140、セレクタ142、シフトレジスタ144などにより構成されている。
シフトレジスタ112には、被除数Aが格納され、1クロック毎に上位桁から出力するものである。
レジスタ114〜120は、除数Bを格納するもので、レジスタ120に最上位桁(MSB)、そしてレジスタ118、116…と順に格納してゆき、レジスタ114に最下位桁(LSB)を格納する。
今、ここでは一例として標数Pにおいて75÷12を計算しようとすると、被除数75の2進表現1001011がシフトレジスタ112に格納され、1,1,0,1,0,0,1の順に出力されて、除数12の2進表現1100がレジスタ114〜120に順番に0,0,1,1と格納される。
同様に標数2においても、ベクトルで表現されるガロア体上の2つの元、被除数A=(1,1,0,1,0,1,0,0,1)、除数B=(1,0,1,1)の除算演算時には、シフトレジスタ112に被除数Aが格納され、1,0,0,1,0,1,0,1,1の順に出力されて、レジスタ114〜120に除数Bが順番に1,0,1,1と格納される。
レジスタ132〜138は、演算用のレジスタであり、レジスタ138が最上位桁となり、演算前に全て「0」にリセットされる。
除算演算用モジュール122〜130は、除算演算用の回路をモジュール化したものである。図8(a)は、図7の除算演算用モジュールを示す図であり、(b)は、除算演算用モジュール内の演算部の構造を示す図であり、(c)は、標数P用のボロー計算部の構造を示す図であり、(d)は、標数2用の演算制御部を示す図である。
図8(a)に示した除算演算用モジュール122(124〜130も同様)の左側のA〜Fは、入力信号であり、右側のL〜Nは出力信号である。その除算演算用モジュール122の内部は、図8(b)〜(d)に示すように、3つのブロックにそれぞれ分かれている。
図8(b)は、除算演算の為の演算(減算)を行う演算部である。入力信号Fは、減算処理を実行するか否かの実行/非実行の選択信号であり、「1」で実行、「0」で非実行となる。この減算非実行時は、前段のレジスタからの入力信号Aがそのままセレクタ154を通って出力される(出力信号L)。また、減算実行時には、入力信号A、除数Bの対応桁の値、前段からのボロー信号の3つの値がエクスクル−シブオアゲート152により排他的論理和演算がなされ、セレクタ154を通って出力される。但し、標数2の演算時には、ボロー信号は不要となるので、標数P/標数2の選択信号E(「1」で標数Pを選択、「0」で標数2を選択)によって、アンドゲート150の出力がエクスクル−シブオアゲート152に入力され、マスクされる。そして、レジスタ132〜138の入力には、この演算部の出力信号Lが入力される。
図8(c)は、標数P用の演算制御部であるボロー計算部であり、前段の除算演算用モジュールの標数P用のボロー計算部の出力信号Mがボロー信号Cとして入力される。このボロー信号Cと除数Bの対応桁の値がオアゲート158に入力され、その出力信号と前段からのレジスタからの入力信号Aの反転信号がアンドゲート160に入力される。また、ボロー信号Cと除数Bの対応桁の値をアンドゲート156に入力し、その出力信号と前記アンドゲート160の出力信号とをオアゲート162に入力し、その出力信号Mが次段の除算演算用モジュール等に出力される。この図8(c)のボロー計算部へのA、B、Cの入力信号の組み合わせと、出力信号Mとの関係を一覧に示したのが図9である。
図8(d)は、標数2用の演算制御部であり、セレクタ164を備えている。このセレクタ164に入力される入力信号Bは、除数Bに対応する桁の値であり、これが「1」の時は前段レジスタの出力Aを出力し、「0」の時は標数2の制御信号Dを出力する。前段の標数2用の演算制御部の出力信号Nは、次段の標数2の制御信号Dとして入力される。
標数P/標数2のそれぞれの場合において、演算制御部の最終段の出力(標数Pの場合はM、標数2の場合はN、但し、標数PはMの論理反転出力)が減算処理を実行するか否かを選択する減算実行/非実行選択信号となる。信号146の標数P/標数2の選択信号によって実行する除算演算が選択され、これに対応する減算実行/非実行選択信号が信号148となり、各除算演算用モジュール122〜130のF端子へ入力される。
通常、信号148の値は「0」、すなわち、減算処理をせずに演算用のレジスタ132〜138をそのままシフトさせる。このようにして、シフトレジスタ112に格納されている被除数Aの上位桁から順にシフトしていき、信号148の減算実行/非実行選択信号が「1」となった時に減算処理が実行される。信号148の出力は、そのままシフトレジスタ144に格納され、これが商となる。
上記の動作をシフトレジスタ112の被除数Aの全ビットが出力されるまで、すなわち、被除数Aがmビットであればmクロックで動作を止めるようにする。また、この時のレジスタ132〜138の値が剰余となり、そのうちのレジスタ138の値が最高位桁(MSB)となる。
図10は、図7の除算演算回路110による標数Pの演算処理過程を説明する図である。図10に示されるように、標数Pにおける75÷+9を実際に計算すると、商が8(2進数表現で1000)、剰余が3(2進表現で11)と求めることができる。
また、図11は、図7の除算演算回路110による標数2の演算処理過程を説明する図であり、被除数A=(1,1,0,1,0,1,0,0,1)、除数B=(1,0,1,1)の場合であって、A/Bを実際に計算すると、商が101010、剰余が101というように求めることができる。
以上説明したように、本実施の形態3によれば、標数Pと標数2のどちらの場合の除算演算であっても、それぞれ別に回路を設けることなく、低コストの除算演算回路を実現することができる。
10 除算演算回路、12 シフトレジスタ、14〜22 レジスタ、24〜30 レジスタ、32〜38 論理積素子、40〜46 排他的論理和素子、48 シフトレジスタ、50 除算演算回路、52 シフトレジスタ、54〜62 レジスタ、64〜70 レジスタ、72〜78 論理積素子、80〜86 排他的論理和素子、88〜96 セレクタ88〜96、98 シフトレジスタ、110 除算演算回路、112 シフトレジスタ、114〜120 レジスタ、122〜130 除算演算用モジュール、132〜138 レジスタ、140 インバータ、142 セレクタ、144 シフトレジスタ、146、148 信号、150 アンドゲート、152 エクスクル−シブオアゲート、154 セレクタ、156 アンドゲート、158 オアゲート、160 アンドゲート、162 オアゲート、164 セレクタ

Claims (1)

  1. ガロア体上のmビットとnビット(m、nは共に自然数で、m>n)のベクトルで表現される2つの元である被除数A=(a0,…,am−1)と除数B=(b0,…,bn−1)に対してA/Bを演算し、最大でmビットで表現される商C=(c0,…,cm−1)と、最大でn−1ビットで表現される剰余D=(d0,…,dn−2)とを求めるためのガロア体上の元の除算演算回路であって、
    mビットから成る前記被除数Aを格納し、上位ビットから順次出力する被除数格納出力手段と、
    nビットから成る前記除数Bを各桁毎に格納し、それぞれ個別に出力する除数格納出力手段と、
    各桁毎の演算データをそれぞれ格納し、その演算データを次桁へ出力する演算データ格納出力手段と、
    前記被除数格納出力手段から出力される被除数あるいは前記演算データ格納出力手段から出力される各桁の演算データを前記除数格納出力手段から出力される除数の値に基づいて、そのまま出力するか、一つ下の桁の出力を上位桁へ渡すかを選択して前記除数の有効桁数を検出する有効桁数検出手段と、
    前記有効桁数検出手段からの出力と、前記除数格納出力手段から出力される各桁の除数Bとの論理積をとって減算処理するか否かを選択する論理積手段と、
    前記論理積手段からの論理積出力と、前記被除数格納出力手段から出力される被除数あるいは前記演算データ格納出力手段から出力される演算データとの排他的論理和をとって減算処理を実行する排他的論理和手段と、
    前記有効桁数検出手段からの出力を順次入力して格納する演算結果格納手段と、
    を備え、前記被除数Aの全ビットが出力されるまで演算処理を実行することにより、前記演算結果格納手段に前記商Cが格納され、前記演算データ格納出力手段に剰余Dが格納されることを特徴とするガロア体上の元の除算演算回路。
JP2010140131A 2010-06-21 2010-06-21 ガロア体上の元の除算演算回路 Expired - Fee Related JP5157018B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010140131A JP5157018B2 (ja) 2010-06-21 2010-06-21 ガロア体上の元の除算演算回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010140131A JP5157018B2 (ja) 2010-06-21 2010-06-21 ガロア体上の元の除算演算回路

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP37196599A Division JP2001188468A (ja) 1999-12-27 1999-12-27 ガロア体上の元の除算演算方法および除算演算回路

Publications (2)

Publication Number Publication Date
JP2010217921A JP2010217921A (ja) 2010-09-30
JP5157018B2 true JP5157018B2 (ja) 2013-03-06

Family

ID=42976763

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010140131A Expired - Fee Related JP5157018B2 (ja) 2010-06-21 2010-06-21 ガロア体上の元の除算演算回路

Country Status (1)

Country Link
JP (1) JP5157018B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63167527A (ja) * 1986-12-27 1988-07-11 Ricoh Co Ltd 拡張ガロア体上の最大公約多項式算出回路および多項式互除演算回路
JP3614978B2 (ja) * 1996-05-13 2005-01-26 株式会社東芝 ガロア体の除算方法および除算装置
JPH10154068A (ja) * 1996-11-22 1998-06-09 Toshiba Corp M系列符号発生器
JP3238128B2 (ja) * 1998-06-02 2001-12-10 松下電器産業株式会社 リードソロモン符号化装置および方法

Also Published As

Publication number Publication date
JP2010217921A (ja) 2010-09-30

Similar Documents

Publication Publication Date Title
Ferozpuri et al. High-speed FPGA implementation of the NIST round 1 rainbow signature scheme
CN103761068A (zh) 优化的蒙哥马利模乘方法、模平方方法和模乘硬件
CN111444518A (zh) 安全处理器及其操作方法、加密或解密数据的方法
CN112200713A (zh) 一种联邦学习中的业务数据处理方法、装置以及设备
CN106716345A (zh) 用于执行混淆算术的电子计算设备
JP2024525122A (ja) 完全準同型評価のための計算ネットワーク変換
CN108809323B (zh) 循环冗余校验码的生成方法和装置
JP2004227344A (ja) 乗算器及び暗号回路
CN116436709B (zh) 一种数据的加解密方法、装置、设备和介质
Parihar et al. Fast Montgomery modular multiplier for rivest–shamir–adleman cryptosystem
Greconici Kyber on RISC-V
JP5157018B2 (ja) ガロア体上の元の除算演算回路
JP5211398B2 (ja) ガロア体上の元の除算演算回路
KR102491902B1 (ko) 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
KR20240004830A (ko) 완전 동형 암호화에서 사용하기 위한 블라인드 회전
CN209560522U (zh) 获取加解密运算中的中间结果组的硬件装置
JP2001188468A (ja) ガロア体上の元の除算演算方法および除算演算回路
JP5840086B2 (ja) 縮約装置、縮約方法、およびプログラム
CN113204780A (zh) 保留格式加密算法的实现方法及装置
KR100974624B1 (ko) 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체
KR102491894B1 (ko) 완전동형암호 기법으로 암호화된 데이터의 로지스틱 회귀 분석 연산 장치 및 방법
JP4472808B2 (ja) 積和演算装置及びこれを用いた暗号・復号装置
Monfared et al. Secure and efficient exponentiation architectures using Gaussian normal basis
US8447796B2 (en) Apparatus with a vector generation unit and encoder for receiving first and second inputs to generate at least significant zero (LSZ)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100714

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100715

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110118

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: 20121106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121122

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151221

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

LAPS Cancellation because of no payment of annual fees