JP2004145010A - 暗号回路 - Google Patents
暗号回路 Download PDFInfo
- Publication number
- JP2004145010A JP2004145010A JP2002310009A JP2002310009A JP2004145010A JP 2004145010 A JP2004145010 A JP 2004145010A JP 2002310009 A JP2002310009 A JP 2002310009A JP 2002310009 A JP2002310009 A JP 2002310009A JP 2004145010 A JP2004145010 A JP 2004145010A
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- arithmetic
- register
- shift
- addition
- 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.)
- Withdrawn
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- 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/723—Modular exponentiation
Abstract
【課題】暗号回路の動作クロック周波数を高くでき、演算速度の高速化を図ることが可能な暗号回路を提供すること。
【解決手段】加減算回路35は、他の演算回路からのキャリーイン信号を用いて加減算を実行し、加減算によって発生したキャリーアウト信号を他の演算回路へ出力する。また、右シフト回路36は、他の演算回路からのシフトイン信号を用いて右シフトを実行し、右シフトによって発生するシフトアウト信号を他の演算回路へ出力する。したがって、演算データのデータ長が長くなってもキャリーの伝播経路を短くでき、暗号回路の動作クロック周波数を高くすることが可能となる。
【選択図】 図4
【解決手段】加減算回路35は、他の演算回路からのキャリーイン信号を用いて加減算を実行し、加減算によって発生したキャリーアウト信号を他の演算回路へ出力する。また、右シフト回路36は、他の演算回路からのシフトイン信号を用いて右シフトを実行し、右シフトによって発生するシフトアウト信号を他の演算回路へ出力する。したがって、演算データのデータ長が長くなってもキャリーの伝播経路を短くでき、暗号回路の動作クロック周波数を高くすることが可能となる。
【選択図】 図4
Description
【0001】
【発明の属する技術分野】
本発明は、使用される情報の暗号化技術および復号技術に関し、特に、べき乗剰余演算、モンゴメリ演算、加減算などの演算によってデータを暗号化および復号する暗号回路に関する。
【0002】
【従来の技術】
情報通信技術の発展に伴い、情報ネットワーク上のセキュリティの確保(データの盗用や破壊を防止すること)が重要視されるようになってきている。そのため、情報の暗号化技術および復号技術が採用されることが多く、その適用分野は単なる情報通信分野に留まらず、交通、金融、医療、流通等の身近な分野にまで広がりつつある。この種の暗号化技術および復号技術には、高度なセキュリティを単純な原理によって実現できることが要求される。
【0003】
これに関連する技術として、特開平5−324277号公報および特開2002−229445号公報に開示された技術がある。
【0004】
特開平5−324277号公報に開示された暗号通信方法は、剰余演算Q=A・BmodNおよびべき乗剰余演算C=MemodNを、Nと素な整数Rを用いた同形の演算Z=U・V・R−1modNの繰返しにより実現するものである。
【0005】
また、特開2002−229445号公報に開示されたべき乗剰余演算回路は、鍵eを保持するeレジスタ、モンゴメリ変換をする乗算Yを保持するYレジスタ、鍵Nを保持するNレジスタ、モンゴメリ変換の演算時に行なう2B+Nの値を保持するB2Nレジスタ、平文Xを保持するXレジスタ、暗号化および復号のための演算を行なう演算回路、演算結果Pを保持するPレジスタなどを含み、高速処理を可能としたものである。
【0006】
【特許文献1】
特開平5−324277号公報
【0007】
【特許文献2】
特開2002−229445号公報
【0008】
【発明が解決しようとする課題】
現代の暗号は、秘密鍵を計算によって見つけることが時間的に困難であることを安全性の根拠としているものが多い。たとえば、RSA(Rivest−Shamir−Adleman scheme)暗号を用いる場合、2つの素数の積である整数N(N=p×q、pおよびqは素数)を短時間で素因数分解することの難しさが安全性の根拠となっている。このことは、裏を返せば、今後コンピュータ等の計算機の性能が向上するに伴い、RSA暗号の安全性を確保するためには、選択する素数pおよびqの桁数を増やさなければならないことを意味している。
【0009】
ここで、上述した特開平5−324277号公報および特開2002−229445号公報に開示された発明によって、ビット長の長い暗号回路を構成した場合を考える。最も簡単な方法は、レジスタ群を増やして暗号回路を変更することである。しかし、レジスタ群が増加した分だけ演算時間が増加するとともに、レジスタの増加分だけ暗号回路が大きくなるため得策ではない。
【0010】
また、加減算回路が一度に扱えるビット長を、たとえば128ビットから256ビットに拡張した場合、加減算時におけるキャリーの伝播経路が長くなるため、動作周波数を上げることが困難になるといった問題点がある。
【0011】
本発明は、上記問題点を解決するためになされたものであり、その目的は、暗号回路の動作クロック周波数を高くでき、演算速度の高速化を図ることが可能な暗号回路を提供することである。
【0012】
【課題を解決するための手段】
請求項1に記載の暗号回路は、接続された複数の演算回路と、複数の演算回路を制御して、暗号化または復号の制御を行なう制御回路とを含む。また、複数の演算回路はそれぞれ、演算データを保持する第1のレジスタと、第1のレジスタに保持される演算データに対して加減算を実行する加減算回路と、加減算回路による演算結果に対して右シフトを実行する右シフト回路と、右シフト回路による演算結果を保持する第2のレジスタとを含む。第1の演算回路の加減算回路は、第2の演算回路からのキャリーイン信号を用いて加減算を実行し、加減算によって発生したキャリーアウト信号を第3の演算回路へ出力し、第1の演算回路の右シフト回路は、第3の演算回路からのシフトイン信号を用いて右シフトを実行し、右シフトによって発生するシフトアウト信号を第2の演算回路へ出力する。
【0013】
【発明の実施の形態】
まず、本出願人が出願した特開2002−229445号公報、特願2001−163719号および特願2002−286182号に開示した暗号回路について簡単に説明する。
【0014】
図1は、本出願人が出願した暗号回路の概略構成を示すブロック図である。この暗号回路10は、演算回路12と、演算回路12を制御して、べき乗剰余演算、モンゴメリ演算、加減算などの演算を実行する制御回路11とを含む。
【0015】
図2は、演算回路12の概略構成を示すブロック図である。演算回路12は、鍵eを保持する4本のeレジスタ121と、モンゴメリ変換をする乗数Yを保持する4本のYレジスタ122と、平文Xを保持する4本のXレジスタ123と、鍵Nを保持する4本のNレジスタ124と、モンゴメリ変換の演算時に行なう2B+Nの値を保持する4本のB2Nレジスタ125と、128ビットの加減算回路126と、加減算回路126から出力される演算結果の最上位ビットの桁上り(キャリー)を保持する保持回路127と、128ビットの右シフト回路128と、右シフト回路128によって右シフト処理が行なわれる際に発生する最下位ビットの桁落ち(シフトアウト)を他の右シフト処理時にシフトイン信号として使用するために保持する保持回路129と、右シフト回路128から出力される演算結果を一時的に保持する複数のPレジスタ130と、128ビットの左シフト回路131と、左シフト回路131によって左シフト処理が行なわれる際に発生する最上位ビットの桁上り(シフトアウト)を他の左シフト処理時にシフトイン信号として使用するために保持する保持回路132とを含む。
【0016】
べき乗剰余演算、モンゴメリ演算、RSA暗号などの演算処理は、主として加算、減算、乗算および除算の繰返しによって実現されるため、制御回路11が図2に示す演算回路12を制御してそれぞれの演算アルゴリズムにしたがって演算を繰返し行なわせることによってこれらの演算処理が可能になる。なお、演算アルゴリズムの詳細は上述した文献を参照されたい。
【0017】
(第1の実施の形態)
図3は、本発明の第1の実施の形態における暗号回路の概略構成を示すブロック図である。この暗号回路20は、暗号回路20の全体的な制御を行なう制御回路21と、4つの演算回路0〜3(22〜25)とを含む。本実施の形態においては、暗号方式としてRSA暗号を想定し、演算長として512ビットを想定してるが、これに限定されるものではない。
【0018】
制御回路21は、外部から受けた演算に必要となるデータをデータバスを介して演算回路0〜3(22〜25)へ出力し、データバスを介して演算回路0〜3(22〜25)から受けた演算結果を外部へ出力する。また、制御回路21は、RSA暗号化または復号のアルゴリズムにしたがって演算回路0〜3(22〜25)へ制御信号を出力し、演算処理を制御する。
【0019】
図4は、演算回路0〜3(22〜25)の内部構成を説明するためのブロック図である。演算回路0〜3(22〜25)のそれぞれは、鍵eを保持するeレジスタ31と、暗号化された平文Yを保持するYレジスタ32と、暗号化の対象となる平文Xを保持するXレジスタ33と、鍵Nを保持するNレジスタ34と、128ビットの加減算回路35と、128ビットの右シフト回路36と、右シフト回路36から出力される演算結果を一時的に保持するPレジスタ37と、128ビットの左シフト回路38とを含む。
【0020】
加減算回路35は、eレジスタ31、Yレジスタ32、Xレジスタ33またはNレジスタ34に保持されるデータに対して加算または減算を行ない、演算結果を右シフト回路36へ出力する。また、加減算回路35は、演算結果の最上位ビットの桁上り(キャリー)を他の演算回路へキャリーアウト信号として出力し、他の演算回路からのキャリーアウト信号をキャリーイン信号として入力し、最下位ビットに設定する。
【0021】
右シフト回路36は、加減算回路35から出力された加減算結果を右シフトし、そのときに発生する最下位ビットの桁落ち(シフトアウト)を右シフトアウト信号として他の演算回路へ出力する。また、右シフト回路36は、他の演算回路からのシフトアウト信号をシフトイン信号として入力し、最上位ビットに設定する。
【0022】
左シフト回路38は、Pレジスタ37に保持される値を左シフトし、そのときに発生する最上位ビットの桁上り(シフトアウト)を左シフトアウト信号として他の演算回路へ出力する。また、左シフト回路38は、他の演算回路からのシフトアウト信号をシフトイン信号として入力し、最下位ビットに設定する。
【0023】
制御回路21は、512ビットの演算データを128ビットずつに分割し、演算回路0〜3(22〜25)のぞれぞれのeレジスタ31、Yレジスタ32、Xレジスタ33またはNレジスタ34に格納する。たとえば、eレジスタに512ビットの演算データを格納する場合、演算回路0(22)内のeレジスタ31に演算データのビット0〜127を格納し、演算回路1(23)内のeレジスタ31に演算データのビット128〜255を格納し、演算回路2(24)内のeレジスタ31に演算データのビット256〜383を格納し、演算回路3(25)内のeレジスタ31に演算データのビット384〜511を格納する。
【0024】
演算回路0〜3(22〜25)におけるデータ演算は1クロック単位で実施され、演算回路0(22)から上位方向(演算回路0→1→2→3)にキャリーが伝播される。右シフト回路36による右シフト処理はクロックによって遅らされることなく、上位の演算回路の動作クロックを利用して下位の演算回路にシフトインが行なわれる。この機能を実現するために、制御回路21は、Pレジスタ37へのビット0〜126のライト信号と、ビット127のライト信号とを独立制御している。
【0025】
図5は、演算回路における演算データの入力タイミングおよびPレジスタ37へのデータ書込みタイミングを説明するためのタイミングチャートである。クロックT1の立下りで演算回路0(22)への入力データが確定すると、加減算回路35からキャリーアウト信号が出力される。
【0026】
また、クロックT2の立下りで演算回路0(22)内のPレジスタ37にデータのビット0〜126が書込まれると共に、上位の演算回路1(23)への入力データが確定する。このタイミングでは、上位の演算回路1(23)の右シフトアウト信号が確定していないので、演算回路0(22)内のPレジスタ37にデータのビット127を書込むことができない。したがって、クロックT3の立上りで演算回路0(22)内のPレジスタ37にデータのビット127が書込まれる。なお、他の下位の演算回路と上位の演算回路との間の信号のタイミングは、この演算回路0(22)と演算回路1(23)との間の信号のタイミングと同様である。
【0027】
図6は、演算回路における演算データの入力およびPレジスタ37へのデータ書込みが連続的に行なわれる場合のタイミングを説明するためのタイミングチャートである。図5に示すタイミングチャートとほぼ同様であるが、各クロックサイクルで128ビットの演算データが処理されることを示している。すなわち、演算回路0〜3(22〜25)は、512ビットの演算データの処理を行なうのに4クロック必要である。しかし、乗算やモンゴメリ乗算剰余演算の繰返し演算など、加減算の結果の正負が次の演算種別に反映されない場合には、演算の完了を待たずに次の加減算を行なうことができるので、パイプライン的に処理を行なうことができ、実効的にはその1/4のクロック数(1クロック)で演算を行なうことができる。
【0028】
以上説明したように、本実施の形態における暗号回路によれば、演算データを複数に分割し、複数の演算回路にそれぞれの演算データを演算させ、キャリーアウトおよびシフトアウトのみを上位の演算回路または下位の演算回路に出力するようにしたので、演算回路の回路規模を縮小することができると共に、キャリーの伝播経路を短くでき、動作クロック周波数を高くすることが可能となった。
【0029】
また、128ビットの演算データを処理する演算回路と比較すると、同じクロック数で4倍の演算データを処理することができ、演算速度の高速化を図ることが可能となった。
【0030】
(第2の実施の形態)
図7は、本発明の第2の実施の形態における暗号回路の概略構成を示すブロック図である。本実施の形態における暗号回路は、図3に示す第1の実施の形態における暗号回路と比較して、演算回路3から出力されるキャリーアウト信号および左シフトアウト信号が演算回路0に入力され、演算回路0から出力される右シフトアウト信号が演算回路3に入力され、演算回路間をキャリーアウト信号およびシフトアウト信号がループしている点が異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。なお、本実施の形態においては、暗号方式としてRSA暗号を想定し、演算長として1024ビットを想定してるが、これに限定されるものではない。
【0031】
図8は、本発明の第2の実施の形態における演算回路0〜3(41〜44)の内部構成を説明するためのブロック図である。本実施の形態における演算回路0〜3(41〜44)は、図4に示す第1の実施の形態における演算回路0〜3(22〜25)と比較して、eレジスタ、Yレジスタ、Xレジスタ、NレジスタおよびPレジスタが2本ずつ設けられている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0032】
制御回路21は、1024ビットの演算データを128ビットずつに分割し、演算回路0〜3(41〜44)のぞれぞれのe0レジスタ51、Y0レジスタ52、X0レジスタ53、N0レジスタ54、e1レジスタ61、Y1レジスタ62、X1レジスタ63またはN1レジスタ64に格納する。
【0033】
たとえば、eレジスタに1024ビットの演算データを格納する場合、制御回路21は、演算回路0(41)内のe0レジスタ51に演算データのビット0〜127を格納し、演算回路1(42)内のe0レジスタ51に演算データのビット128〜255を格納し、演算回路2(43)内のe0レジスタ51に演算データのビット256〜383を格納し、演算回路3(44)内のe0レジスタ51に演算データのビット384〜511を格納する。
【0034】
また、制御回路21は、演算回路0(41)内のe1レジスタ61に演算データのビット512〜639を格納し、演算回路1(42)内のe1レジスタ61に演算データのビット640〜767を格納し、演算回路2(43)内のe1レジスタ61に演算データのビット768〜895を格納し、演算回路3(44)内のe1レジスタ61に演算データのビット896〜1023を格納する。
【0035】
また、演算処理実行時には、128ビット長のレジスタ群から適宜演算データを加減算回路35に設定することによって、各演算回路が見かけ上256ビット長の演算データを処理できるようになり、全体として1024ビット長の演算データを処理することができるようになる。また、512ビット長の演算データを処理する場合には、たとえばe0レジスタ51、Y0レジスタ52、X0レジスタ53、N0レジスタ54およびP0レジスタ71のみを使用することによって、512ビット長の演算データの処理も行なうことができる。
【0036】
以上説明したように、本実施の形態における暗号回路によれば、レジスタ群をそれぞれ2本ずつ設け、演算回路間でキャリーアウト信号およびシフトアウト信号をループさせるようにしたので、第1の実施の形態において説明した効果に加えて、さらに演算データのビット長を容易に増やすことが可能となった。
【0037】
(第3の実施の形態)
本発明の第3の実施の形態における暗号回路は、図7に示す第2の実施の形態における暗号回路と比較して、演算回路0〜3の構成および機能が異なる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0038】
図9は、第3の実施の形態における演算回路の内部構成を説明するためのブロック図である。図8に示す第2の実施の形態における演算回路の内部構成と比較して、演算中に繰返し使用される固定データを、演算回路による演算の前に予め計算して格納するためのB2N0レジスタ55およびB2N1レジスタ65が追加された点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0039】
なお、B2N0レジスタ55およびB2N1レジスタ65を用いた演算アルゴリズムの詳細については、上述した文献を参照されたい。
【0040】
以上説明したように、本実施の形態における暗号回路によれば、演算中に繰返し使用される固定データを予め計算してB2N0レジスタ55およびB2N1レジスタ65に格納しておくようにしたので、第1の実施の形態において説明した効果に加えて、特定の演算に必要となるクロック数を減らすことができ、さらに演算処理を高速に行なうことが可能になった。
【0041】
(第4の実施の形態)
本発明の第4の実施の形態における暗号回路は、図7に示す第2の実施の形態における暗号回路と比較して、演算回路0〜3の構成および機能が異なる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0042】
図10は、第4の実施の形態における演算回路の内部構成を説明するためのブロック図である。図9に示す第3の実施の形態における演算回路の内部構成と比較して、128ビットのQ0レジスタ73およびQ1レジスタ74が追加された点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0043】
演算結果を一時的に格納しておくレジスタとして、P0レジスタ71、P1レジスタ72以外に、128ビットのQ0レジスタ73およびQ1レジスタ74を設けることにより、演算結果として商と余りとをこれらのレジスタに保持することができるようになる。したがって、演算回路は、除算処理を行なうことができるようになる。
【0044】
また、1024ビット×1024ビットの乗算を行なう場合、2048ビットの乗算結果を保持するレジスタが必要になるが、P0レジスタ71、P1レジスタ72、Q0レジスタ73およびQ1レジスタ74を用いることにより乗算結果を保持できるようになり、1024ビット×1024ビットの乗算も行なえるようになる。
【0045】
以上説明したように、本実施の形態における暗号回路によれば、P0レジスタ71、P1レジスタ72以外に、128ビットのQ0レジスタ73およびQ1レジスタ74を設けることにより、第1の実施の形態において説明した効果に加えて、除算処理やビット長が長い演算データの乗算処理が行なえるようになり、逆元の生成処理や鍵の生成処理などの演算が行なえるようになった。
【0046】
(第5の実施の形態)
本発明の第5の実施の形態における暗号回路は、図7に示す第2の実施の形態における暗号回路と比較して、演算回路0〜3の構成および機能が異なる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0047】
図11は、第5の実施の形態における演算回路の内部構成を説明するためのブロック図である。図10に示す第4の実施の形態における演算回路の内部構成と比較して、128ビットのデータレジスタK0(56)およびK1(66)が追加された点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0048】
2048ビットの演算データに対して演算を行なうには、合計2048ビットのレジスタ群を4つずつ設ければよい。この場合、演算データは、4つの演算回路0〜3を4周回ることになる。また、2048ビットのべき乗剰余演算を行なう場合、べきeはビット数が少なく、値が決まっており、モンゴメリ乗算剰余演算を繰返すのに必要とされるだけである。したがって、レジスタ群をYY={e,Y}、NN={B2N,N}、XX={K,X}、PP={Q,P}などのように4本の2048ビットレジスタとして再定義し、2048ビットの演算アルゴリズムを実現するように制御回路を構成すれば、これに対応することができるようになる。
【0049】
また、XXレジスタとして使用されるKレジスタを他のレジスタ群と同様に利用できるように制御回路を構成すれば、加減算、乗算の実行によって中国人剰余定理による合成数を法とする演算を実現できる。さらには、加減算、乗算、除算の演算結果の符号を読出す処理を追加することにより、拡張ユークリッド法による演算を実現できる。これによって、秘密鍵生成や中国人剰余定理に必要となる逆元の計算も可能となる。
【0050】
以上説明したように、本実施の形態における暗号回路によれば、レジスタ群を再定義してビット長が長い演算データの処理も行なえるようにしたので、第1の実施の形態において説明した効果に加えて、演算に必要となるレジスタ数を削減でき、回路規模を縮小することが可能となった。
【0051】
(第6の実施の形態)
本発明の第6の実施の形態における暗号回路は、図7に示す第2の実施の形態における暗号回路と比較して、演算回路0〜3の構成および機能が異なる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0052】
図12は、第6の実施の形態における演算回路の内部構成を説明するためのブロック図である。図11に示す第5の実施の形態における演算回路の内部構成と比較して、右シフトイン信号と左シフトイン信号とを切替える1ビットのセレクタ81が追加された点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0053】
セレクタ81は、条件選択信号によって、右シフトイン信号を選択して出力するか、左シフトイン信号を選択して出力するかを決定する。第1〜第5の実施の形態においては、右シフトを実施し、左シフトを実施しない演算を行なった場合、右シフトイン信号によって入力された前段の右シフトアウトは、{Q,P}レジスタの最上位ビットに格納されると共に、左シフト回路を経由して加減算回路35に入力される。
【0054】
このような回路構成の場合、右シフトイン信号が加減算回路35に入力されるには時間がかかるため、演算回路の動作周波数を上げることが困難になる可能性がある。本実施の形態においては、右シフトを実施し、左シフトを実施しない演算の場合には、制御回路21が条件選択信号によってセレクタ81を切替え、加減算回路35に直接右シフトイン信号を入力できるようにしている。
【0055】
すなわち、第1の実施の形態においては、図5に示すようにクロックT2の立下りでPレジスタ37にデータのビット0〜126が書込まれ、その1/2クロック後のクロックT3の立上りでデータのビット127が書込まれた。一方、本実施の形態においては、クロックT2の立下りでPレジスタ37にデータのビット0〜126が書込まれ、その1クロック後のクロックT3の立下りでデータのビット127が書込まれる。したがって、演算回路0(41)のPレジスタ37へのビット127の書込み時において、上位の演算回路1(42)の右シフトアウト信号からのタイムマージンが、第1〜第5の実施の形態と比較して増加するし、より高い動作周波数で暗号回路を動作させることが可能となる。
【0056】
以上説明したように、本実施の形態における暗号回路によれば、セレクタ81によって、右シフトイン信号と、{Q,P}レジスタ、左シフト回路38を経由した右シフトイン信号(左シフトイン信号)とを切替えるようにしたので、第1〜第5の実施の形態において説明した効果に加えて、右シフトイン信号をPレジスタ37に書込む時のタイムマージンを増加させることができ、暗号回路の動作周波数を高くすることが可能となった。
【0057】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【0058】
【発明の効果】
請求項1に記載の暗号回路によれば、第1の演算回路の加減算回路は、第2の演算回路からのキャリーイン信号を用いて加減算を実行し、加減算によって発生したキャリーアウト信号を第3の演算回路へ出力するので、演算データのデータ長が長くなってもキャリーの伝播経路を短くでき、暗号回路の動作クロック周波数を高くすることが可能となった。
【図面の簡単な説明】
【図1】本出願人が出願した出願書類に記載された暗号回路の概略構成を示すブロック図である。
【図2】演算回路12の概略構成を示すブロック図である。
【図3】本発明の第1の実施の形態における暗号回路の概略構成を示すブロック図である。
【図4】演算回路0〜3(22〜25)の内部構成を説明するためのブロック図である。
【図5】演算回路における演算データの入力タイミングおよびPレジスタ37へのデータ書込みタイミングを説明するためのタイミングチャートである。
【図6】演算回路における演算データの入力およびPレジスタ37へのデータ書込みが連続的に行なわれる場合のタイミングを説明するためのタイミングチャートである。
【図7】本発明の第2の実施の形態における暗号回路の概略構成を示すブロック図である。
【図8】本発明の第2の実施の形態における演算回路0〜3(41〜44)の内部構成を説明するためのブロック図である。
【図9】第3の実施の形態における演算回路の内部構成を説明するためのブロック図である。
【図10】第4の実施の形態における演算回路の内部構成を説明するためのブロック図である。
【図11】第5の実施の形態における演算回路の内部構成を説明するためのブロック図である。
【図12】第6の実施の形態における演算回路の内部構成を説明するためのブロック図である。
【符号の説明】
10,20 暗号回路、11,21 制御回路、12,22〜25,41〜44 演算回路、31,51,61,121 eレジスタ、32,52,62,122 Yレジスタ、33,53,63,123 Xレジスタ、34,54,64,124 Nレジスタ、35,126 加減算回路、36,128 右シフト回路、37,71,72,130 Pレジスタ、38,131 左シフト回路、55,65,125 B2Nレジスタ、56,66 Kレジスタ、73,74 Qレジスタ、81 セレクタ、127,129,132 保持回路。
【発明の属する技術分野】
本発明は、使用される情報の暗号化技術および復号技術に関し、特に、べき乗剰余演算、モンゴメリ演算、加減算などの演算によってデータを暗号化および復号する暗号回路に関する。
【0002】
【従来の技術】
情報通信技術の発展に伴い、情報ネットワーク上のセキュリティの確保(データの盗用や破壊を防止すること)が重要視されるようになってきている。そのため、情報の暗号化技術および復号技術が採用されることが多く、その適用分野は単なる情報通信分野に留まらず、交通、金融、医療、流通等の身近な分野にまで広がりつつある。この種の暗号化技術および復号技術には、高度なセキュリティを単純な原理によって実現できることが要求される。
【0003】
これに関連する技術として、特開平5−324277号公報および特開2002−229445号公報に開示された技術がある。
【0004】
特開平5−324277号公報に開示された暗号通信方法は、剰余演算Q=A・BmodNおよびべき乗剰余演算C=MemodNを、Nと素な整数Rを用いた同形の演算Z=U・V・R−1modNの繰返しにより実現するものである。
【0005】
また、特開2002−229445号公報に開示されたべき乗剰余演算回路は、鍵eを保持するeレジスタ、モンゴメリ変換をする乗算Yを保持するYレジスタ、鍵Nを保持するNレジスタ、モンゴメリ変換の演算時に行なう2B+Nの値を保持するB2Nレジスタ、平文Xを保持するXレジスタ、暗号化および復号のための演算を行なう演算回路、演算結果Pを保持するPレジスタなどを含み、高速処理を可能としたものである。
【0006】
【特許文献1】
特開平5−324277号公報
【0007】
【特許文献2】
特開2002−229445号公報
【0008】
【発明が解決しようとする課題】
現代の暗号は、秘密鍵を計算によって見つけることが時間的に困難であることを安全性の根拠としているものが多い。たとえば、RSA(Rivest−Shamir−Adleman scheme)暗号を用いる場合、2つの素数の積である整数N(N=p×q、pおよびqは素数)を短時間で素因数分解することの難しさが安全性の根拠となっている。このことは、裏を返せば、今後コンピュータ等の計算機の性能が向上するに伴い、RSA暗号の安全性を確保するためには、選択する素数pおよびqの桁数を増やさなければならないことを意味している。
【0009】
ここで、上述した特開平5−324277号公報および特開2002−229445号公報に開示された発明によって、ビット長の長い暗号回路を構成した場合を考える。最も簡単な方法は、レジスタ群を増やして暗号回路を変更することである。しかし、レジスタ群が増加した分だけ演算時間が増加するとともに、レジスタの増加分だけ暗号回路が大きくなるため得策ではない。
【0010】
また、加減算回路が一度に扱えるビット長を、たとえば128ビットから256ビットに拡張した場合、加減算時におけるキャリーの伝播経路が長くなるため、動作周波数を上げることが困難になるといった問題点がある。
【0011】
本発明は、上記問題点を解決するためになされたものであり、その目的は、暗号回路の動作クロック周波数を高くでき、演算速度の高速化を図ることが可能な暗号回路を提供することである。
【0012】
【課題を解決するための手段】
請求項1に記載の暗号回路は、接続された複数の演算回路と、複数の演算回路を制御して、暗号化または復号の制御を行なう制御回路とを含む。また、複数の演算回路はそれぞれ、演算データを保持する第1のレジスタと、第1のレジスタに保持される演算データに対して加減算を実行する加減算回路と、加減算回路による演算結果に対して右シフトを実行する右シフト回路と、右シフト回路による演算結果を保持する第2のレジスタとを含む。第1の演算回路の加減算回路は、第2の演算回路からのキャリーイン信号を用いて加減算を実行し、加減算によって発生したキャリーアウト信号を第3の演算回路へ出力し、第1の演算回路の右シフト回路は、第3の演算回路からのシフトイン信号を用いて右シフトを実行し、右シフトによって発生するシフトアウト信号を第2の演算回路へ出力する。
【0013】
【発明の実施の形態】
まず、本出願人が出願した特開2002−229445号公報、特願2001−163719号および特願2002−286182号に開示した暗号回路について簡単に説明する。
【0014】
図1は、本出願人が出願した暗号回路の概略構成を示すブロック図である。この暗号回路10は、演算回路12と、演算回路12を制御して、べき乗剰余演算、モンゴメリ演算、加減算などの演算を実行する制御回路11とを含む。
【0015】
図2は、演算回路12の概略構成を示すブロック図である。演算回路12は、鍵eを保持する4本のeレジスタ121と、モンゴメリ変換をする乗数Yを保持する4本のYレジスタ122と、平文Xを保持する4本のXレジスタ123と、鍵Nを保持する4本のNレジスタ124と、モンゴメリ変換の演算時に行なう2B+Nの値を保持する4本のB2Nレジスタ125と、128ビットの加減算回路126と、加減算回路126から出力される演算結果の最上位ビットの桁上り(キャリー)を保持する保持回路127と、128ビットの右シフト回路128と、右シフト回路128によって右シフト処理が行なわれる際に発生する最下位ビットの桁落ち(シフトアウト)を他の右シフト処理時にシフトイン信号として使用するために保持する保持回路129と、右シフト回路128から出力される演算結果を一時的に保持する複数のPレジスタ130と、128ビットの左シフト回路131と、左シフト回路131によって左シフト処理が行なわれる際に発生する最上位ビットの桁上り(シフトアウト)を他の左シフト処理時にシフトイン信号として使用するために保持する保持回路132とを含む。
【0016】
べき乗剰余演算、モンゴメリ演算、RSA暗号などの演算処理は、主として加算、減算、乗算および除算の繰返しによって実現されるため、制御回路11が図2に示す演算回路12を制御してそれぞれの演算アルゴリズムにしたがって演算を繰返し行なわせることによってこれらの演算処理が可能になる。なお、演算アルゴリズムの詳細は上述した文献を参照されたい。
【0017】
(第1の実施の形態)
図3は、本発明の第1の実施の形態における暗号回路の概略構成を示すブロック図である。この暗号回路20は、暗号回路20の全体的な制御を行なう制御回路21と、4つの演算回路0〜3(22〜25)とを含む。本実施の形態においては、暗号方式としてRSA暗号を想定し、演算長として512ビットを想定してるが、これに限定されるものではない。
【0018】
制御回路21は、外部から受けた演算に必要となるデータをデータバスを介して演算回路0〜3(22〜25)へ出力し、データバスを介して演算回路0〜3(22〜25)から受けた演算結果を外部へ出力する。また、制御回路21は、RSA暗号化または復号のアルゴリズムにしたがって演算回路0〜3(22〜25)へ制御信号を出力し、演算処理を制御する。
【0019】
図4は、演算回路0〜3(22〜25)の内部構成を説明するためのブロック図である。演算回路0〜3(22〜25)のそれぞれは、鍵eを保持するeレジスタ31と、暗号化された平文Yを保持するYレジスタ32と、暗号化の対象となる平文Xを保持するXレジスタ33と、鍵Nを保持するNレジスタ34と、128ビットの加減算回路35と、128ビットの右シフト回路36と、右シフト回路36から出力される演算結果を一時的に保持するPレジスタ37と、128ビットの左シフト回路38とを含む。
【0020】
加減算回路35は、eレジスタ31、Yレジスタ32、Xレジスタ33またはNレジスタ34に保持されるデータに対して加算または減算を行ない、演算結果を右シフト回路36へ出力する。また、加減算回路35は、演算結果の最上位ビットの桁上り(キャリー)を他の演算回路へキャリーアウト信号として出力し、他の演算回路からのキャリーアウト信号をキャリーイン信号として入力し、最下位ビットに設定する。
【0021】
右シフト回路36は、加減算回路35から出力された加減算結果を右シフトし、そのときに発生する最下位ビットの桁落ち(シフトアウト)を右シフトアウト信号として他の演算回路へ出力する。また、右シフト回路36は、他の演算回路からのシフトアウト信号をシフトイン信号として入力し、最上位ビットに設定する。
【0022】
左シフト回路38は、Pレジスタ37に保持される値を左シフトし、そのときに発生する最上位ビットの桁上り(シフトアウト)を左シフトアウト信号として他の演算回路へ出力する。また、左シフト回路38は、他の演算回路からのシフトアウト信号をシフトイン信号として入力し、最下位ビットに設定する。
【0023】
制御回路21は、512ビットの演算データを128ビットずつに分割し、演算回路0〜3(22〜25)のぞれぞれのeレジスタ31、Yレジスタ32、Xレジスタ33またはNレジスタ34に格納する。たとえば、eレジスタに512ビットの演算データを格納する場合、演算回路0(22)内のeレジスタ31に演算データのビット0〜127を格納し、演算回路1(23)内のeレジスタ31に演算データのビット128〜255を格納し、演算回路2(24)内のeレジスタ31に演算データのビット256〜383を格納し、演算回路3(25)内のeレジスタ31に演算データのビット384〜511を格納する。
【0024】
演算回路0〜3(22〜25)におけるデータ演算は1クロック単位で実施され、演算回路0(22)から上位方向(演算回路0→1→2→3)にキャリーが伝播される。右シフト回路36による右シフト処理はクロックによって遅らされることなく、上位の演算回路の動作クロックを利用して下位の演算回路にシフトインが行なわれる。この機能を実現するために、制御回路21は、Pレジスタ37へのビット0〜126のライト信号と、ビット127のライト信号とを独立制御している。
【0025】
図5は、演算回路における演算データの入力タイミングおよびPレジスタ37へのデータ書込みタイミングを説明するためのタイミングチャートである。クロックT1の立下りで演算回路0(22)への入力データが確定すると、加減算回路35からキャリーアウト信号が出力される。
【0026】
また、クロックT2の立下りで演算回路0(22)内のPレジスタ37にデータのビット0〜126が書込まれると共に、上位の演算回路1(23)への入力データが確定する。このタイミングでは、上位の演算回路1(23)の右シフトアウト信号が確定していないので、演算回路0(22)内のPレジスタ37にデータのビット127を書込むことができない。したがって、クロックT3の立上りで演算回路0(22)内のPレジスタ37にデータのビット127が書込まれる。なお、他の下位の演算回路と上位の演算回路との間の信号のタイミングは、この演算回路0(22)と演算回路1(23)との間の信号のタイミングと同様である。
【0027】
図6は、演算回路における演算データの入力およびPレジスタ37へのデータ書込みが連続的に行なわれる場合のタイミングを説明するためのタイミングチャートである。図5に示すタイミングチャートとほぼ同様であるが、各クロックサイクルで128ビットの演算データが処理されることを示している。すなわち、演算回路0〜3(22〜25)は、512ビットの演算データの処理を行なうのに4クロック必要である。しかし、乗算やモンゴメリ乗算剰余演算の繰返し演算など、加減算の結果の正負が次の演算種別に反映されない場合には、演算の完了を待たずに次の加減算を行なうことができるので、パイプライン的に処理を行なうことができ、実効的にはその1/4のクロック数(1クロック)で演算を行なうことができる。
【0028】
以上説明したように、本実施の形態における暗号回路によれば、演算データを複数に分割し、複数の演算回路にそれぞれの演算データを演算させ、キャリーアウトおよびシフトアウトのみを上位の演算回路または下位の演算回路に出力するようにしたので、演算回路の回路規模を縮小することができると共に、キャリーの伝播経路を短くでき、動作クロック周波数を高くすることが可能となった。
【0029】
また、128ビットの演算データを処理する演算回路と比較すると、同じクロック数で4倍の演算データを処理することができ、演算速度の高速化を図ることが可能となった。
【0030】
(第2の実施の形態)
図7は、本発明の第2の実施の形態における暗号回路の概略構成を示すブロック図である。本実施の形態における暗号回路は、図3に示す第1の実施の形態における暗号回路と比較して、演算回路3から出力されるキャリーアウト信号および左シフトアウト信号が演算回路0に入力され、演算回路0から出力される右シフトアウト信号が演算回路3に入力され、演算回路間をキャリーアウト信号およびシフトアウト信号がループしている点が異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。なお、本実施の形態においては、暗号方式としてRSA暗号を想定し、演算長として1024ビットを想定してるが、これに限定されるものではない。
【0031】
図8は、本発明の第2の実施の形態における演算回路0〜3(41〜44)の内部構成を説明するためのブロック図である。本実施の形態における演算回路0〜3(41〜44)は、図4に示す第1の実施の形態における演算回路0〜3(22〜25)と比較して、eレジスタ、Yレジスタ、Xレジスタ、NレジスタおよびPレジスタが2本ずつ設けられている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0032】
制御回路21は、1024ビットの演算データを128ビットずつに分割し、演算回路0〜3(41〜44)のぞれぞれのe0レジスタ51、Y0レジスタ52、X0レジスタ53、N0レジスタ54、e1レジスタ61、Y1レジスタ62、X1レジスタ63またはN1レジスタ64に格納する。
【0033】
たとえば、eレジスタに1024ビットの演算データを格納する場合、制御回路21は、演算回路0(41)内のe0レジスタ51に演算データのビット0〜127を格納し、演算回路1(42)内のe0レジスタ51に演算データのビット128〜255を格納し、演算回路2(43)内のe0レジスタ51に演算データのビット256〜383を格納し、演算回路3(44)内のe0レジスタ51に演算データのビット384〜511を格納する。
【0034】
また、制御回路21は、演算回路0(41)内のe1レジスタ61に演算データのビット512〜639を格納し、演算回路1(42)内のe1レジスタ61に演算データのビット640〜767を格納し、演算回路2(43)内のe1レジスタ61に演算データのビット768〜895を格納し、演算回路3(44)内のe1レジスタ61に演算データのビット896〜1023を格納する。
【0035】
また、演算処理実行時には、128ビット長のレジスタ群から適宜演算データを加減算回路35に設定することによって、各演算回路が見かけ上256ビット長の演算データを処理できるようになり、全体として1024ビット長の演算データを処理することができるようになる。また、512ビット長の演算データを処理する場合には、たとえばe0レジスタ51、Y0レジスタ52、X0レジスタ53、N0レジスタ54およびP0レジスタ71のみを使用することによって、512ビット長の演算データの処理も行なうことができる。
【0036】
以上説明したように、本実施の形態における暗号回路によれば、レジスタ群をそれぞれ2本ずつ設け、演算回路間でキャリーアウト信号およびシフトアウト信号をループさせるようにしたので、第1の実施の形態において説明した効果に加えて、さらに演算データのビット長を容易に増やすことが可能となった。
【0037】
(第3の実施の形態)
本発明の第3の実施の形態における暗号回路は、図7に示す第2の実施の形態における暗号回路と比較して、演算回路0〜3の構成および機能が異なる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0038】
図9は、第3の実施の形態における演算回路の内部構成を説明するためのブロック図である。図8に示す第2の実施の形態における演算回路の内部構成と比較して、演算中に繰返し使用される固定データを、演算回路による演算の前に予め計算して格納するためのB2N0レジスタ55およびB2N1レジスタ65が追加された点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0039】
なお、B2N0レジスタ55およびB2N1レジスタ65を用いた演算アルゴリズムの詳細については、上述した文献を参照されたい。
【0040】
以上説明したように、本実施の形態における暗号回路によれば、演算中に繰返し使用される固定データを予め計算してB2N0レジスタ55およびB2N1レジスタ65に格納しておくようにしたので、第1の実施の形態において説明した効果に加えて、特定の演算に必要となるクロック数を減らすことができ、さらに演算処理を高速に行なうことが可能になった。
【0041】
(第4の実施の形態)
本発明の第4の実施の形態における暗号回路は、図7に示す第2の実施の形態における暗号回路と比較して、演算回路0〜3の構成および機能が異なる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0042】
図10は、第4の実施の形態における演算回路の内部構成を説明するためのブロック図である。図9に示す第3の実施の形態における演算回路の内部構成と比較して、128ビットのQ0レジスタ73およびQ1レジスタ74が追加された点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0043】
演算結果を一時的に格納しておくレジスタとして、P0レジスタ71、P1レジスタ72以外に、128ビットのQ0レジスタ73およびQ1レジスタ74を設けることにより、演算結果として商と余りとをこれらのレジスタに保持することができるようになる。したがって、演算回路は、除算処理を行なうことができるようになる。
【0044】
また、1024ビット×1024ビットの乗算を行なう場合、2048ビットの乗算結果を保持するレジスタが必要になるが、P0レジスタ71、P1レジスタ72、Q0レジスタ73およびQ1レジスタ74を用いることにより乗算結果を保持できるようになり、1024ビット×1024ビットの乗算も行なえるようになる。
【0045】
以上説明したように、本実施の形態における暗号回路によれば、P0レジスタ71、P1レジスタ72以外に、128ビットのQ0レジスタ73およびQ1レジスタ74を設けることにより、第1の実施の形態において説明した効果に加えて、除算処理やビット長が長い演算データの乗算処理が行なえるようになり、逆元の生成処理や鍵の生成処理などの演算が行なえるようになった。
【0046】
(第5の実施の形態)
本発明の第5の実施の形態における暗号回路は、図7に示す第2の実施の形態における暗号回路と比較して、演算回路0〜3の構成および機能が異なる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0047】
図11は、第5の実施の形態における演算回路の内部構成を説明するためのブロック図である。図10に示す第4の実施の形態における演算回路の内部構成と比較して、128ビットのデータレジスタK0(56)およびK1(66)が追加された点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0048】
2048ビットの演算データに対して演算を行なうには、合計2048ビットのレジスタ群を4つずつ設ければよい。この場合、演算データは、4つの演算回路0〜3を4周回ることになる。また、2048ビットのべき乗剰余演算を行なう場合、べきeはビット数が少なく、値が決まっており、モンゴメリ乗算剰余演算を繰返すのに必要とされるだけである。したがって、レジスタ群をYY={e,Y}、NN={B2N,N}、XX={K,X}、PP={Q,P}などのように4本の2048ビットレジスタとして再定義し、2048ビットの演算アルゴリズムを実現するように制御回路を構成すれば、これに対応することができるようになる。
【0049】
また、XXレジスタとして使用されるKレジスタを他のレジスタ群と同様に利用できるように制御回路を構成すれば、加減算、乗算の実行によって中国人剰余定理による合成数を法とする演算を実現できる。さらには、加減算、乗算、除算の演算結果の符号を読出す処理を追加することにより、拡張ユークリッド法による演算を実現できる。これによって、秘密鍵生成や中国人剰余定理に必要となる逆元の計算も可能となる。
【0050】
以上説明したように、本実施の形態における暗号回路によれば、レジスタ群を再定義してビット長が長い演算データの処理も行なえるようにしたので、第1の実施の形態において説明した効果に加えて、演算に必要となるレジスタ数を削減でき、回路規模を縮小することが可能となった。
【0051】
(第6の実施の形態)
本発明の第6の実施の形態における暗号回路は、図7に示す第2の実施の形態における暗号回路と比較して、演算回路0〜3の構成および機能が異なる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0052】
図12は、第6の実施の形態における演算回路の内部構成を説明するためのブロック図である。図11に示す第5の実施の形態における演算回路の内部構成と比較して、右シフトイン信号と左シフトイン信号とを切替える1ビットのセレクタ81が追加された点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【0053】
セレクタ81は、条件選択信号によって、右シフトイン信号を選択して出力するか、左シフトイン信号を選択して出力するかを決定する。第1〜第5の実施の形態においては、右シフトを実施し、左シフトを実施しない演算を行なった場合、右シフトイン信号によって入力された前段の右シフトアウトは、{Q,P}レジスタの最上位ビットに格納されると共に、左シフト回路を経由して加減算回路35に入力される。
【0054】
このような回路構成の場合、右シフトイン信号が加減算回路35に入力されるには時間がかかるため、演算回路の動作周波数を上げることが困難になる可能性がある。本実施の形態においては、右シフトを実施し、左シフトを実施しない演算の場合には、制御回路21が条件選択信号によってセレクタ81を切替え、加減算回路35に直接右シフトイン信号を入力できるようにしている。
【0055】
すなわち、第1の実施の形態においては、図5に示すようにクロックT2の立下りでPレジスタ37にデータのビット0〜126が書込まれ、その1/2クロック後のクロックT3の立上りでデータのビット127が書込まれた。一方、本実施の形態においては、クロックT2の立下りでPレジスタ37にデータのビット0〜126が書込まれ、その1クロック後のクロックT3の立下りでデータのビット127が書込まれる。したがって、演算回路0(41)のPレジスタ37へのビット127の書込み時において、上位の演算回路1(42)の右シフトアウト信号からのタイムマージンが、第1〜第5の実施の形態と比較して増加するし、より高い動作周波数で暗号回路を動作させることが可能となる。
【0056】
以上説明したように、本実施の形態における暗号回路によれば、セレクタ81によって、右シフトイン信号と、{Q,P}レジスタ、左シフト回路38を経由した右シフトイン信号(左シフトイン信号)とを切替えるようにしたので、第1〜第5の実施の形態において説明した効果に加えて、右シフトイン信号をPレジスタ37に書込む時のタイムマージンを増加させることができ、暗号回路の動作周波数を高くすることが可能となった。
【0057】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【0058】
【発明の効果】
請求項1に記載の暗号回路によれば、第1の演算回路の加減算回路は、第2の演算回路からのキャリーイン信号を用いて加減算を実行し、加減算によって発生したキャリーアウト信号を第3の演算回路へ出力するので、演算データのデータ長が長くなってもキャリーの伝播経路を短くでき、暗号回路の動作クロック周波数を高くすることが可能となった。
【図面の簡単な説明】
【図1】本出願人が出願した出願書類に記載された暗号回路の概略構成を示すブロック図である。
【図2】演算回路12の概略構成を示すブロック図である。
【図3】本発明の第1の実施の形態における暗号回路の概略構成を示すブロック図である。
【図4】演算回路0〜3(22〜25)の内部構成を説明するためのブロック図である。
【図5】演算回路における演算データの入力タイミングおよびPレジスタ37へのデータ書込みタイミングを説明するためのタイミングチャートである。
【図6】演算回路における演算データの入力およびPレジスタ37へのデータ書込みが連続的に行なわれる場合のタイミングを説明するためのタイミングチャートである。
【図7】本発明の第2の実施の形態における暗号回路の概略構成を示すブロック図である。
【図8】本発明の第2の実施の形態における演算回路0〜3(41〜44)の内部構成を説明するためのブロック図である。
【図9】第3の実施の形態における演算回路の内部構成を説明するためのブロック図である。
【図10】第4の実施の形態における演算回路の内部構成を説明するためのブロック図である。
【図11】第5の実施の形態における演算回路の内部構成を説明するためのブロック図である。
【図12】第6の実施の形態における演算回路の内部構成を説明するためのブロック図である。
【符号の説明】
10,20 暗号回路、11,21 制御回路、12,22〜25,41〜44 演算回路、31,51,61,121 eレジスタ、32,52,62,122 Yレジスタ、33,53,63,123 Xレジスタ、34,54,64,124 Nレジスタ、35,126 加減算回路、36,128 右シフト回路、37,71,72,130 Pレジスタ、38,131 左シフト回路、55,65,125 B2Nレジスタ、56,66 Kレジスタ、73,74 Qレジスタ、81 セレクタ、127,129,132 保持回路。
Claims (7)
- 接続された複数の演算回路と、
前記複数の演算回路を制御して、暗号化または復号の制御を行なう制御回路とを含んだ暗号回路であって、
前記複数の演算回路はそれぞれ、演算データを保持する第1のレジスタと、
前記第1のレジスタに保持される演算データに対して加減算を実行する加減算回路と、
前記加減算回路による演算結果に対して右シフトを実行する右シフト回路と、
前記右シフト回路による演算結果を保持する第2のレジスタとを含み、
第1の演算回路の加減算回路は、第2の演算回路からのキャリーイン信号を用いて加減算を実行し、加減算によって発生したキャリーアウト信号を第3の演算回路へ出力し、
前記第1の演算回路の右シフト回路は、前記第3の演算回路からのシフトイン信号を用いて右シフトを実行し、右シフトによって発生するシフトアウト信号を前記第2の演算回路へ出力する、暗号回路。 - 前記制御回路は、演算データを分割して前記複数の演算回路の第1のレジスタに格納する、請求項1記載の暗号回路。
- 前記第1の演算回路の加減算回路は、第1のクロックで演算データを確定し、
前記第3の演算回路の加減算回路は、前記第1のクロックよりも1クロック遅れた第2のクロックで演算データおよび前記第1の演算回路からのキャリーアウトを確定する、請求項1または2記載の暗号回路。 - 前記第1の演算回路の加減算回路は、第1のクロックで演算データを確定し、
前記第1の演算回路の第2のレジスタは、前記第1のクロックよりも1クロック遅れた第2のクロックで最上位ビット以外のビットが書込まれ、前記第2のクロックよりも半クロック遅れた第3のクロックで最上位ビットが書込まれる、請求項1または2記載の暗号回路。 - 前記複数の演算回路は、キャリーアウト信号およびシフトアウト信号がループするように接続される、請求項1〜4のいずれかに記載の暗号回路。
- 前記複数の演算回路のそれぞれは、さらに前記第2のレジスタに保持される演算結果に対して左シフトを実行する左シフト回路を含み、
前記第1の演算回路の左シフト回路は、前記第2の演算回路からのシフトイン信号を用いて左シフトを実行し、左シフトによって発生するシフトアウト信号を前記第3の演算回路へ出力する、請求項1〜5のいずれかに記載の暗号回路。 - 前記第1の演算回路はさらに、前記第3の演算回路からのシフトイン信号と、前記第1の演算回路の左シフト回路からのシフトイン信号とを選択的に前記第1の演算回路の加減算回路へ出力するセレクタを含む、請求項6記載の暗号回路。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002310009A JP2004145010A (ja) | 2002-10-24 | 2002-10-24 | 暗号回路 |
US10/647,308 US7471789B2 (en) | 2002-10-24 | 2003-08-26 | Encryption circuit achieving higher operation speed |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002310009A JP2004145010A (ja) | 2002-10-24 | 2002-10-24 | 暗号回路 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004145010A true JP2004145010A (ja) | 2004-05-20 |
Family
ID=32105283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002310009A Withdrawn JP2004145010A (ja) | 2002-10-24 | 2002-10-24 | 暗号回路 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7471789B2 (ja) |
JP (1) | JP2004145010A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100846352B1 (ko) * | 2006-12-28 | 2008-07-15 | 전자부품연구원 | 4 x pci―express 프레임 변환 모듈 및 이를이용한 pci―express 프레임 변환 장치 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3643106A (en) * | 1970-09-14 | 1972-02-15 | Hughes Aircraft Co | Analog shift register |
US4658094A (en) * | 1985-03-28 | 1987-04-14 | Itt Corporation | Encryption apparatus and methods for raising a large unsigned integer to a large unsigned integer power modulo a large unsigned integer |
US5161193A (en) * | 1990-06-29 | 1992-11-03 | Digital Equipment Corporation | Pipelined cryptography processor and method for its use in communication networks |
ATE193606T1 (de) * | 1991-03-05 | 2000-06-15 | Canon Kk | Rechengerät und verfahren zum verschlüsseln/entschlüsseln von kommunikationsdaten unter verwendung desselben |
JP3302043B2 (ja) | 1992-05-18 | 2002-07-15 | キヤノン株式会社 | 暗号通信方法及びそのシステム |
US5321752A (en) * | 1991-09-05 | 1994-06-14 | Canon Kabushiki Kaisha | Method of and apparatus for encryption and decryption of communication data |
JPH0720778A (ja) | 1993-07-02 | 1995-01-24 | Fujitsu Ltd | 剰余計算装置、テーブル作成装置および乗算剰余計算装置 |
JPH07253922A (ja) * | 1994-03-14 | 1995-10-03 | Texas Instr Japan Ltd | アドレス生成回路 |
EP0769738B1 (en) * | 1995-10-20 | 2003-03-12 | Kabushiki Kaisha Toshiba | Logic circuit with carry selection technique |
FR2745647B3 (fr) * | 1996-03-01 | 1998-05-29 | Sgs Thomson Microelectronics | Coprocesseur d'arithmetique modulaire permettant de realiser des operations non modulaires rapidement |
JP3567309B2 (ja) * | 1996-04-25 | 2004-09-22 | 株式会社ルネサステクノロジ | カウンタ |
FR2758195B1 (fr) * | 1997-01-09 | 1999-02-26 | Sgs Thomson Microelectronics | Coprocesseur d'arithmetique modulaire comprenant deux circuits de multiplication operant en parallele |
US6088453A (en) * | 1997-01-27 | 2000-07-11 | Kabushiki Kaisha Toshiba | Scheme for computing Montgomery division and Montgomery inverse realizing fast implementation |
JP2937982B2 (ja) | 1997-01-27 | 1999-08-23 | 株式会社東芝 | モンゴメリ除算装置及びモンゴメリ逆元計算装置並びにモンゴメリ除算方法及びモンゴメリ逆元計算方法 |
JP3616897B2 (ja) | 1998-01-27 | 2005-02-02 | 富士通株式会社 | モンゴメリ法による乗算剰余計算装置 |
FR2775368B1 (fr) * | 1998-02-26 | 2000-04-14 | Sgs Thomson Microelectronics | Coprocesseur d'arithmetique modulaire permettant de realiser des operations non modulaires rapidement |
US6614864B1 (en) * | 1999-10-12 | 2003-09-02 | Itran Communications Ltd. | Apparatus for and method of adaptive synchronization in a spread spectrum communications receiver |
US6870929B1 (en) * | 1999-12-22 | 2005-03-22 | Juniper Networks, Inc. | High throughput system for encryption and other data operations |
JP2002149396A (ja) * | 2000-11-07 | 2002-05-24 | Hitachi Ltd | データプロセッサ、半導体集積回路及びcpu |
US6963977B2 (en) * | 2000-12-19 | 2005-11-08 | International Business Machines Corporation | Circuits and methods for modular exponentiation |
JP2002229445A (ja) | 2001-01-30 | 2002-08-14 | Mitsubishi Electric Corp | べき乗剰余演算器 |
US7017064B2 (en) * | 2001-05-09 | 2006-03-21 | Mosaid Technologies, Inc. | Calculating apparatus having a plurality of stages |
JP2002358010A (ja) | 2001-05-31 | 2002-12-13 | Mitsubishi Electric Corp | べき乗剰余演算器 |
-
2002
- 2002-10-24 JP JP2002310009A patent/JP2004145010A/ja not_active Withdrawn
-
2003
- 2003-08-26 US US10/647,308 patent/US7471789B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7471789B2 (en) | 2008-12-30 |
US20040081317A1 (en) | 2004-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件系统及方法 | |
KR100442218B1 (ko) | 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기 | |
Hafsa et al. | A hardware-software co-designed AES-ECC cryptosystem | |
Koppermann et al. | X25519 hardware implementation for low-latency applications | |
Gutub et al. | Scalable VLSI architecture for GF (p) Montgomery modular inverse computation | |
EP1600852B1 (en) | Method and apparatus for calculating a modular inverse | |
Elkhatib et al. | Accelerated RISC-V for post-quantum SIKE | |
KR100508092B1 (ko) | 저전력 모듈로 곱셈을 수행하는 연산장치 | |
Batina et al. | Flexible hardware design for RSA and elliptic curve cryptosystems | |
KR100457177B1 (ko) | 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기 | |
JPH05324277A (ja) | 暗号通信方法 | |
KR100478974B1 (ko) | 직렬 유한체 승산기 | |
KR100735953B1 (ko) | 일련 번호 생성 장치, 그 방법 및 컴퓨터 판독가능 저장매체 | |
De Dormale et al. | An improved Montgomery modular inversion targeted for efficient implementation on FPGA | |
Mahapatra et al. | RSA cryptosystem with modified Montgomery modular multiplier | |
JP2002358010A (ja) | べき乗剰余演算器 | |
JP2004145010A (ja) | 暗号回路 | |
KR100413947B1 (ko) | 모듈라 지수승 연산 방식을 이용한 rsa 암호 장치 | |
KR100564599B1 (ko) | 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체 | |
JP2000207387A (ja) | 演算装置及び暗号処理装置 | |
Al-Khaleel et al. | An elliptic curve cryptosystem design based on FPGA pipeline folding | |
EP1480119A1 (en) | Montgomery modular multiplier and method thereof | |
Ch et al. | Hardware design of a 256-bit prime field multiplier suitable for computing bilinear pairings | |
KR100297110B1 (ko) | 모듈러곱셈기 | |
Kalaiarasi et al. | A parallel elliptic curve crypto-processor architecture with reduced clock cycle for FPGA platforms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050928 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20080425 |