JP3014391B2 - 暗号法及びこの方法の実施のための暗号プロセツサ - Google Patents

暗号法及びこの方法の実施のための暗号プロセツサ

Info

Publication number
JP3014391B2
JP3014391B2 JP62048651A JP4865187A JP3014391B2 JP 3014391 B2 JP3014391 B2 JP 3014391B2 JP 62048651 A JP62048651 A JP 62048651A JP 4865187 A JP4865187 A JP 4865187A JP 3014391 B2 JP3014391 B2 JP 3014391B2
Authority
JP
Japan
Prior art keywords
look
carry
ahead
bit
modulo
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
Application number
JP62048651A
Other languages
English (en)
Other versions
JPS6318387A (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 ホルガ−・ゼトラク
Publication of JPS6318387A publication Critical patent/JPS6318387A/ja
Application granted granted Critical
Publication of JP3014391B2 publication Critical patent/JP3014391B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/721Modular inversion, reciprocal or quotient calculation
    • 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/722Modular multiplication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 通信及び情報収集の電子的方法がますます普及するに
伴なって秘密保持、特に重要な文書例えば銀行振替、契
約等の秘密保持の要求が不可避となった。 データ保護の問題は既に立法の面である程度考慮され
ているが、伝送されるデータの秘密保持によりデータ保
護を実行するための技術問題はまだ精々不十分にしか解
決されていない。無線又は広帯域ケーブルによるデータ
伝送は多かれ少かれ公開で行われる。いずれにせよ伝送
の機密性に対して何の保証もないのである。しかも悪用
の危険は決して無くならない。 無線又は有線データ伝送に関して、この危険を技術的
手段で取除くことはできない。利用者自身が必要な安全
性のために対策を講じなければならない。発信者の信頼
性の保護と通報の不正操作の防止もその一つである。 そこで伝送される情報、データ、テキスト等を暗号化
すること、すなわち資格の無い者には理解できないよう
に変換することが安全上の理由から有効とされる。その
場合、一般に暗号化の基礎となる操作が複雑であれば、
暗号化がそれだけ安全であると言える。 古典的と称される暗号化法は、暗号化符号と解読符号
が同種すなわち同一又は逆である対称法である。これに
関する鍵が秘密である限り、適当に暗号化した通報を公
開伝送することができる。しかし受信者がこの通報を理
解するために、信頼できる使者によって受信者に秘密の
コード化鍵を届けることが必要である。特に複数の受信
者に秘密通報を提供しようとするときは、秘密の暗号符
の送達方式は面倒であり時間がかかる。また秘密の暗号
化鍵の伝達のために急速を派遣することは、この電子世
代に時代錯誤の感がある。 これに対していわゆる公開鍵コード法による暗号化法
は、思想として大きな進歩をなす。この公開鍵コード法
は非対称符号化を特徴とする。つまり暗号化と解読のた
めに2つの異なる鍵が使用される訳である。非対称法で
は、一方の鍵が補助情報なしに他方の鍵から計算されな
いことが保証される。従って2つの鍵の内の一方を公開
することができる。この理由からこの方法は「公開鍵コ
ード法」という名称を得たのである。 公共ネットワークの利用者が公開鍵コード法により他
の加入者と通報を交換しようとするときは、2つの鍵E
及びDを1回だけ作らなければならない。暗号化用の鍵
Eは公開レジスタを介して他のすべての利用者にアクセ
ス可能にし、解読用の鍵Dは秘密にする。また多くの方
法では暗号化の一般的計算規則も公表されるが、それに
よって暗号化通報の内容の秘密保持の安全性が脅かされ
ることはない。通報の信頼性も問題ない。非対称法の安
全性は、EからDを計算することが事実上不可能である
ことに基づく。 他の利用者に通報を送りたいと思う者はみな公開レジ
スタから鍵Eを手に入れて、通報を暗号化し、こうして
得たコードを安全でない(場合によってはディジタル)
ネットワーク、例えば公共電話回線網で伝送する。指定
された利用者(受信者)は受領したコードを秘密の鍵D
で解読し、こうして元の通報を作る。従って鍵の伝送に
も通報の伝送にも安全な伝送路は不要である。指定され
た利用者は自分の独自の鍵で暗号化された通報を専ら受
領する。従って独自の鍵Dを呼出しさえすればよいので
ある。 それ故この方法では鍵を手軽に使用することができ
る。また利用者は大規模な個人用暗号レジスタの管理を
免れる。鍵の管理は誰にもアクセス可能な、例えば電子
電話帳式のレジスタで中央で1回だけ行われる。この伝
送手続によってあらゆる種類の伝送網(例えばISDN(総
合サービス・デジタル・ネットワーク)を安全にするこ
とができる。 公開鍵コード法の上述の実施態様では、発信者の信頼
性の保護と通報の不正操作防止がなお保証されていな
い。しかし鍵E及びDの使用順序が交換可能であれば、
偽造の恐れのない「署名」をディジタル形式で伝送する
ことが原則として可能である。その場合、発信者は暗号
化通報と共に伝送される署名を作成することができる。
署名は、発信者の秘密の鍵で暗号化した、通報の「抜
粋」である。発信者の信頼性の検査のために受信者は再
構成した通報から同じく抜粋を作成し、発信者の公開鍵
Eで署名を解読し、両者を比較する。それが同一であれ
ば、通報は申し出た発信者からのものであるはずであ
る。なぜなら発信者の鍵Eに適合し、署名の暗号に用い
られた鍵Dを知っているのは発信者だけだからである。 また署名によって通報の不正操作も防止される。受信
者は伝送された通報の署名を所有するから、発信者はこ
の通報を否認することができない。他方、受信者は変造
した通報に対して署名を作成することができないから、
通報を変更することができない。署名は抜粋であるか
ら、発信者だけでなく通報にも関係するのである。こう
して文書の末尾の署名よりも高度の保護が保証される。 恐らく最も有名な公開鍵コード法は、発明者リヴェス
ト,ジャミール,アドレマン(Rivest,Shamir,Aldlema
n)の頭文字により名付けられたRSA法である。このRSA
法の安全性は、大きな数(例えば200の10進桁)を因数
分解すること、すなわちこの大きな数を残りなしに割り
切れるすべての素数を求めることが事実上不可能である
ことに基づく。 RSA法は次のように機能する。すなわちまずRSAシステ
ムの各利用者は2つの大きな素数p及びqと別の大きな
数Eを選定する。これらの数は例えばコンピュータの乱
数発生器で作られることができる。それぞれ現れる数が
素数であるか否かの問題に答えるために、アルゴリズム
が利用される(例えばC.ポメランス(C.Pomerance)
「素数検定の最近の発展」ジョージア大学数学部、“Th
e Mathematical Intelligencer"1981年、3巻3号97−1
04号所載を参照)。 RSA法は素数に対して特定の最小長さを指定しない。
短い数はアルゴリズムを速めるが、素数の積が因数分解
される危険を増大する。長い数ではそれが逆である。10
0個の10進桁が一般に良好な折衷案とされる。Nは素数
p及びqの積であるとする。数の対(E,N)が公開鍵で
あり、一方、pとqは通報の受信者にだけ知らされてい
る。 通報の暗号化のために発信者はまず原文を10進数の連
鎖に変換する。次にこの連鎖を等長の要素Pi(ただしPi
<N)に分解する。続いてこれらの要素をそれぞれE乗
してからモジューロNを形成することによって、要素を
個別に暗号化する。すなわち数Ci=Pi EmodNが成立す
る。そこでこの解析をするには、その指数(モジュー
ロ)modφ(N)を計算することが必要である。ここに
φ(N)=(p−1)・(q−1)である。受信者だけ
が素数p及びqを知っているから、解読鍵D=E-1modφ
(N)を計算することができるのは受信者だけである。
この目的のために受信者は受領したそれぞれの数CiをD
乗し、モジューロNを簡約する。CimodN=Pi EDmodNであ
り、かつE Dmodφ(N)=1であるから、Pi EDmodNの演
算から原文の数である平文の一部を再生する。 「古典的」と呼ばれる暗号化法だけでなく、従来公知
の公開鍵コード法も重大な欠陥を示す。ソフトウェアと
ハードウェアに関する実現がいずれもこれまで必ず莫大
な支出とそれに伴なう高いコストで挫折したのである。 チップ開発の従来の状況では、ソフトウェアとしてRS
Aアルゴリズム(200の10進桁に基づく)を用いて、妥当
な暗号化速度又は暗号化率に到達するように、汎用(ユ
ニバーサル)コンピュータをプログラムすることは不可
能である。 またRSA機能(すなわちインボリューション(ドイツ
語でdie Potenzierung:べき乗)とそれに続くモジュー
ロ・レダクションと呼ばれる既約化の演算deモジューロ
演算とも言う)をVLSIレイアウト(VLSI=Very Large S
cale Integration超大規模集積回路)に直接変換するこ
とは、直接インボリューションを行うべき乗回路がない
のでできない。上述の確認から、十分な暗号化速度と暗
号化率とが可能であるようにインボリューションを個別
ステップに分解する特別のハードウェア解決策が、既に
数年来要望されて来た。 ところが公開鍵コード法の今日公知の実現はすこぶる
多くの計算時間を必要とする。汎用コンピュータ用に開
発されたソフトウェアの解決策は暗号化率又は解読率が
わずか10ないし20ビット/秒である。最初の公知のハー
ドウェア解決策も1,200ビット/秒以上には出来ない。
これまでに実現された唯一のシングルチップ解決策はリ
ヴェストによるものである(R.L.リヴェスト「RSA暗号
のシングルチップによる実現の説明」、マサチューセッ
ツ州ケンブリッジ、マサチューセッツ工科大学コンピュ
ータ科学研究所、“LAMDA Magazine 1",1980年3号14−
18頁所載)。この提案では、特に在来の演算論理基本セ
ルで容量512ビットの演算論理機構(ALU)を構成すると
いう比較的簡単な設計法が選ばれた。この演算論理機構
は、すこぶる多様な演算が実効できるように構成されて
いる。冗長性を犠牲にしたことが1,200ビット/秒の暗
号化率となって現れる。その場合4μmN型金属酸化膜半
導体(NMOS)技術が利用された(2μm相補型金属酸化
膜半導体(CMOS)技術の補外(外挿)すれば、鍵の長さ
が660ビットで2,500ビット/秒の暗号化率が生まれるこ
とになる)。 しかしこの解決策は実際には受入れることができな
い。なぜならディジタル・ネットワークのインターフェ
ースは遥かに高いデータ伝送率で動作し、例えばISDNイ
ンターフェースは64キロビット/秒で動作するからであ
る。 2個のチップから成り、RSAアルゴリズムの長さ336ビ
ットの数を処理することができる暗号プロセッサも既に
提案された(R.F.リーデン、J.B.スナイダー、R.J.ウィ
ドマン、W.J.バーナード[R.F.Rieden,J.B.Snyder.R.J.
Widman,W.J.Barnard]「RSA公開鍵暗号化アルゴリズム
の2チップによる実現」1982年政府マイクロ回路応用会
議の論文要旨[1982年11月]24−27頁)。 最高速の公知のRSAプロセッサがNEC/ミヤグチの提案
によって示された(S.ミヤグチ「RSA暗号システムのた
めの高速暗号化アルゴリズム」、Proceedings COMPCON
82)。このプロセッサは毎サイクル8ビットの乗数を扱
い、29,000ビット/秒の速度に達する。しかし実際の構
成のために333という多数のチップを必要とするので、
経済的観点からすれば全く論外である。 多チップによる実現の一般的な欠点は必要なチップの
数に比例してハードウェアのコストが上昇することだけ
でなく、とりわけ安全性の保証がないことにもある。あ
るチップから他のチップに伝送される信号がアクセス可
能であれば、伝送される信号に基づいて秘密コードを破
壊することができる。それ故、暗号の安全性の理由か
ら、暗号アルゴリズムは単一チップとし、それを金属室
により保護できるようにすることが肝要である。西独特
許第3228018号にRSA暗号用暗号システムが記載されてい
るが、これもまた極めて高いハードウェアへの委任を必
要とする。当初のRSAアルゴリズムと比較して、この公
知の暗号システムでは暗号化率が計数4だけ増加すると
のことであるが、それは細やかな改善に過ぎない。この
目的のために一定数すなわち4ビットが同時に処理さ
れ、そのために数個の乗算器が必要であり、合計14個の
加算器が使われる。 理論的には、西独特許第3228018号により公知の鍵シ
ステムのためのプロセッサは、当初のRSAアルゴリズム
をそのまま使用した場合の4倍の速度を実現すると考え
られるが、しかしそれぞれ単一のビット処理をする場合
よりも信号経路が遥かに大きいから、実際には有効な時
間利得がほとんど期待されない。 また着想として考えられる100倍の計算機密度のユニ
バーサル(汎用)チップでも、公知のRSAアルゴリズム
を時間的改良を伴って処理することはできないようであ
る。この理由からすれば、結局、専用暗号チップしか考
えられないが、その場合は重大な冷却問題が現れる。な
ぜならこのように高度に専門化したチップでは−汎用チ
ップと違って−すべてのトランジスタ機能がほとんど常
時使用されることになるからである。これは多大の損失
電力を伴ない、100倍の計算機密度が考えられるのであ
るから、100倍の(損失)電力密度をもたらす。 それに伴なう冷却問題が些細なものでないことは、シ
リコンチップを貫く穴を貫流する液化希ガスで冷却を行
うという、費用のかかる提案から見ても明らかである。
他方では不十分な冷却の結果、チップの寿命の大幅な短
縮と、暗号化操作の際の誤り発生率の増加が生じること
を考慮しなければならない。また高い計算機密度を有す
る、上述の汎用チップは空間寸法が大きくなるので、実
際の使用は問題にならない。 ここで本発明が登録する。本発明の目的とするところ
は、十分な安全性のもとでそれ自体公知のRSA法を営利
的に実用化できるような拘束の計算速度を可能にする暗
号法を示すことである。また本発明は、小型の扱いやす
い構造又はチップ寸法で提起された要求を可能にする、
上記方法の実施のための暗号プロセッサを提供するもの
である。 本発明は、通報(通信文)の暗号化又は符号化のため
に、リヴェスト・シャミール・アドレマン公開鍵コード
法(RSA法)に従ったデータの暗号化と複号化を行う暗
号プロセッサと暗号法とを提供する。すなわち、 2つの大きな素数p及びqと別の大きな数Eを選択
し、 積N=p・qを形成し、 暗号化する通報を数Nの値より小さい数値の、好まし
くは等長の、一連の要素Piに変換し、 それぞれE乗することによりこれらの要素を暗号化
し、続いてアルゴリズムを用いた代数演算により結果を
既約化してモジューロNを形成し、数Ci=Pi EmodNが成
立するようにしている。 その場合、ISDNネットワークのディジタル網インター
フェースに対する規格が満たされる。 本発明の重要な観点は、除算に対するルックアヘッド
・アルゴリズムの新規な応用である。この処置によって
乗算にもルックアヘッド手続を適用することが可能にな
るからである。このようにして複数個のビットを処理す
るのに簡単な加算と減算しか必要でない。すなわち追加
の乗算を省略することができる。 従って新しい方法の利点は詳しく言えば、各計算ステ
ップがハードウェア設計に単純に直接対応するに至るま
で、全暗号アルゴリズムを逐次小さなステップに分解す
ることに基づくのである。 本発明の方法の個々の動作と、現状の技術とを表面的
に比較するだけで本発明の利点が明らかになる。各モジ
ューロ・レダクション(モジューロを既約化するように
演算する:単にモジューロ演算とも言う)を実行した後
にインボリューション・アルゴリズム(ドイツ語でExpo
nenten−Algorithmusという)を一連の乗算に変換する
ことにより、中間結果がべき乗でよくあるように天文学
的数字に増大することが防止される(DとEはそれぞれ
200の100進桁を有する)。 インボリューションを乗算とモジューロ・レダクショ
ンに変換するほかに、乗算を個別ステップに分解し、乗
算を一連の加算に変換することによって、計算を一層急
速に行うことができる。その結果、チップの面積が少な
くて済む。 モジューロ演算の一連の減算への変換は、同じ加算論
理部で行うことができる。なぜなら減算は逆の符号の加
算として扱うことができるからである。 乗算はNに関するリング(環)で行われるから、各加
算の後でモジューロ演算を行うことができる。またこれ
によって大きな数が回避され、かなりの計算時間が節約
される。各ステップのすべての数が今やNより小さいの
である。かくして、記憶装置(レジスタ)の最大の大き
さ又は長さは短縮されてNの10進桁数長さに縮小され、
それに伴なってチップの所要面積が半減する。 ルックアヘッド・アルゴリズムの有利な応用は、暗号
法にとって重要な意義をもつものである。ルックアヘッ
ド・アルゴリズムの使用により乗算のために必要になる
加算の最大数が実質的に減縮され、同様にモジューロ演
算のために必要となる減算の最大回数が実質的に減少す
るからである。この発明のルックアヘッド・アルゴリズ
ムをモジューロ演算に使用することは、計算時間のため
に使われた最初のルックアヘッド・アルゴリズムであ
る。なぜなら既知のルックアヘッド・アルゴリズムを普
通に乗算に適用しただけでは決して時間の節約(利得)
をもたらさないからである。モジューロ演算に伴なう計
算時間の平均的な節減が、乗算の場合の可能な計算時間
の節減に相当するときは、計算時間を既知の方法に対し
て約2/3に短縮する最適アルゴリズムが提供される。計
算時間のこの有利な節約は、後で改めて説明する「フロ
ーテング(浮動)」に関連がある。Zは絶対的にシフト
されるが、NのシフトはZに対して相対的に行われるか
ら、2つのシフト率は互いに結び付いていない。 この一連の手順の最後の利点は、乗算から生じる加算
とモジューロ・レダクション演算から生じる減算を組合
わせて単一の演算、すなわち3オペランド加算とするこ
とにある。それによってサイクル時間を拡張する必要は
ない。3オペランド加算には単純な加算と同等の時間が
必要だからである。これだけでも計算速度が倍加され
る。 一方では数学的変換を個々の方法段階に適切に適用す
ることにより時間利得が生じ、他方では暗号プロセッサ
の本発明に基づくアーキテクチャ(構造)から一層の改
善か生まれる。木(トリー)状構造を編成することによ
って、個別要素が同時により多数の情報を扱うことがで
きる。これによっても計算時間がさらに大幅に短縮され
る。 本発明に基づくブロック構造によって、600ビット加
算のための計算時間が20ビット加算が通常のレイアウト
で行われたのと同じ長さに短縮される。 要約すれば、本発明に基づく暗号プロセッサは毎秒6
4,000ビットの割合で暗号化と複号化(解読)とを行う
ことが確認された。このことは、鍵が660ビットの最大
長さを有する最も不利な場合にも当てはまる。 その「総合効率」を、例えば暗号化目的専用に設計さ
れた容量16ビットのスライスプロセッサ(BSP)による
ソフトウェアで実時間(インプリメンテーション)の総
合効率と比較すれば、本発明暗号法又は当該の暗号プロ
セッサによって得られる利点が明白である。今日得られ
るBSPのクロック周波数は約10MHzである。1サイクルに
2個の16ビット語を加算又は減算すると共に、結果を1
ビットだけシフトすることができる。バレルシフターが
ないから、シフト演算を直列で行わなければならない。
この条件のもとでルックアヘッドは不利な時間効果を有
する。演算の実行に必要とされるサイクル数Aに対し
て、BSPは主ループの各ステップ毎に1サイクルしか必
要でないと考えられる。このサイクルは下記から成る
(第3図を参照)。 1. Z[i]:Z[i]+P[i]及び 2. Z[i]:Z[i]+−N[i]とZ[i]の1ビッ
トシフト 乗数の対応するビットの検索に基づき第1のステップ
を省略することができれば、ループが第2ステップに簡
約されるように、BSPのマイクロプログラムを設計する
ことができる。第1ステップは1/2の確率で実行しなけ
ればならないから、Aは1.5の値を有する。比較のため
ここでErwは期待値である。 比較が示すところでは、本発明に基づく暗号プロセッ
サそのものが、処理速度の面で、ハードウェアとソフト
ウェアの専用化で作られたものよりも2桁を越えて優越
する。RSAアルゴリズムを通常の計算機ハードウェアを
用いるソフトウェア手段のみにより実現した場合は、こ
の発明の方法とチップとで得られる効率に近いところで
主ループを実行することが到底できないから、ファクタ
10,000のオーダーでの差がつけられることになる。 冒頭に述べたリヴェスト・プロセッサと比較して、鍵
の長さが約30%大きいにもかかわらず、暗号化時間の50
倍の節約が生まれる。総合効率のこの大幅な向上は、新
規な手順の本発明に基づく適用と特別のチップ構造(ア
ーキテクチャ)の両者によって可能になるのである。 本発明に基づく暗号プロセッサはいわゆる共同プロセ
ッサとして動作する。データI/Oに対する2本のDMAチャ
ネルと1個の8ビット容量データバスを有する。コード
化ユニットとI/Oユニットが並列に動作する。プロセッ
サは「暗号ボックス」をなし、その暗号化と解読を外部
から干渉することができず、署名が作成され、鍵を暗号
化状態で伝送しさえすればよい。 次に本発明に基づく暗号法、及びこの方法に基づいて
構成され、Rivest,Shamir及びAdleman(RSA)の公開鍵
コード法によりデータを暗号化及び解読する暗号プロセ
ッサを実施例に基づいて詳述する。 本発明に基づく暗号法を取扱う説明の前半では、当初
のRSA法に対して加えられる変更を解説する。従ってそ
こでは当初のRSAアルゴリズムがしばしば引用される。
本発明のもう一つの目的は効率的なVLSIレイアウトで本
方法を実現することにあるから、方法の記述の際に当該
のハードウェアの可能性を当然示唆することになる。特
に各ステップがその後に続くVLSI設計に直接転化するに
至るまで、総合的操作が基本操作(加算、減算、シフト
等々)に分解されるのである。それ故、アルゴリズムの
考案は、ハードウェアの見地から重要な役割を演じる。
RSAアルゴリズムの多数のステップ列がより有利なもの
に置き換えられる。 解読は暗号化と数学的に同一であるから、以下では2
つの過程を別々に扱わない。 次に第1図を参照しながらまずインボリューション
(べき乗)のための手順を説明する。単純な基本演算に
分解する場合、インボリューション(べき乗)は平均1.
5・L(E)の乗算に分解される。Eはべき指数であ
り、L(x)は L(x):=xの2進数字の数 と定義される。 アルゴリズムの時間計算量は0(L(E))である。
その基本思想は、べき指数を2進表示する、すなわち2
のべき(累)乗の和に変換することである。インボリュ
ーション(べき指数)の法則によりべき指数の和は、べ
き乗される数Pのべきの積に変換される。第e番目のべ
きの指数は、元の指数の第e番目の2進桁に1又は0の
いずれがあるかによって、指数として2のe乗又は0を
有する。従って因数は2乗又は数1である。 定義により最低位のビットの桁はゼロで表される。従
って最高位のビットは桁L(E)−1にある。 2の(e+1)乗は、2のe乗の求積によってたやす
く計算される。それ故、積のために特別のレジスタCを
とって置くのが好都合である。その場合はレジスタPの
内容が各ステップで2乗されて再びそこに格納される。
求積の後、Pは2のe乗を含む。なぜなら(e−1)番
目のステップの後にPに2の(e−1)乗が記入された
からである。 中間レジスタCには初めに1がある。指数Eの第e番
目の2進桁に1があれば、第eステップでCにPが掛け
合わされ、再びそこに格納されるが、そうでない場合は
Cを変更しない。レジスタPはこの時点でeの2乗を含
むから、上述の積すなわち上記の等式によりPのE乗が
計算される。最終ステップの後に結果はレジスタCにあ
る。 第1a図のフローチャートに示したRSA法は、上部にイ
ンボリューション(べき乗)アルゴリズムを含む。第1a
図の下部では最終ステップでCmodNすなわちRSAアルゴリ
ズムの最後のステップが計算される。インボリューショ
ン(べき乗)の際に剰余類の演算を行わなかったら、大
きな数の場合は天文学的な桁数をとってしまう。 第1b図に示す本発明方法のアルゴリズムはこれを防止
する。このアルゴリズムは合同法則 (a mod c)*(b mod c)≡(a*b)mod c を利用する。それぞれ生じる積はモジューロ・レダクシ
ョンにより剰余類の代表に既約化される。代表は剰余類
の代表であり、それがまた環の要素でもある。この要素
は一意である。すなわち条件を満たす要素は各剰余類に
1つしかない。アルゴリズムを参照すれば、 a,bはステップe−1の積((e−1)番目の段階の
積)、 cはモジューロ を表す。 合同の規則により得られる情報は次の通りである。 a)ステップe−1から生じた積をその代表に既約化
し、さらにステップeで代表を互いに掛け合わせたと
き、又は b)ステップeでステップ(e−1)の積を互いに掛け
合わせ、次にこの積をその代表に既約化したとき、ステ
ップeの計算結果は同じ剰余類に含まれる。 (a)の場合は右側のアルゴリズム(第1b図)でルー
プの通過のつど積に適用される。(b)の場合は左側の
アルゴリズム(第1a図)で実行されるが、アルゴリズム
の最終ステップとして1回だけである。第1b図のアルゴ
リズムで採用される連続的な既約化(レダクション)
は、採用されるレジスタの大きさを計画でき、その範囲
内に収まるようにすることができる。レジスタが格納し
なければならない数はモジューロの長さの最大2倍の長
さである。乗算とモジューロ演算の間の期間でこの最大
数が必要となる。 修正したアルゴリズムの個々のステップはインボリュ
ーション(べき乗)のレベルでそれ以上分解されない。
またその必要もない。インボリューション(べき乗)が
必要とされるチップ面上には、連続したモジューロ計算
により、上限値が既に置かれている。 次に第2図を参照しながら乗算の手順を説明する。本
発明方法では乗算は直列アルゴリズムによって行われ
る。アルゴリズムは乗算をL(M)のシフト演算と平均
して0.5・L(M)の加算とに分解する。以下で“M"は
乗数を表す。 チップ上で必要な場所はL(M)に直線的に関係す
る。なぜならこの発明のアルゴリズムに対して、加算が
1ステップで行われるように、L(M)の規模の演算論
理機構(ALU)が設けられるからである。そこで同じこ
とがシフト演算にも当てはまる。いずれも演算のために
一定の時間が必要である。さらにシフト演算と平行して
加算を行うことができる。その結果、時間計算量につい
て TMul=L(M)*max(Tshift,Tadd)=C*L(M) となる。これは必要な場所と同様に、Mの長さに直線的
に関係する。しかし必要な場所がチップの可能性を越え
るならば、すなわちM及びそれと共にL(M)が所定の
値を越えるときは、このアルゴリズムは変形形式でしか
使用できない。注目している660の2進桁(200の10進
桁)の規模の場合はそうでないから、この問題はこの実
施例では取り上げない。 第2図にフローチャートとして示した乗算の直列アル
ゴリズムは、先に第1図に基づいて述べたインボリュー
ション(べき乗)のアルゴリズムと同様に、入力パラメ
ータの2進表示に基づいて構成される。この場合、乗数
Mは次の通りである。 乗算は加算に分解される。乗数の第(L(M)−m)
桁に1があれば、ステップmでPが中間結果Zに加えら
れ、そうでない場合はZは不変である。次にループが更
に(L(M)−m)回実行される。各ループ通過の初め
にZが2倍されるから、第mステップの和Z+Pは(L
(M)−m)回2倍される。それは2の(L(M)−
m)番のべき乗を掛けることに相当する。 要するにアルゴリズムは、2進数字の乗算が被乗数自
体か又はゼロを生じることを利用するのである。更にア
ルゴリズムは各段階で必要な、2のべきの乗算をZの2
倍に帰着させる。2進表示で2倍は、1ビット左への単
純なシフト演算である(定義により最低位のビットは右
にある)。 モジューロ・レダクションステップを第3図に略図で
示す。積と合同な数を乗余類リング(環)から得るため
に、べき乗の際に各乗算の後にモジューロ・レダクショ
ン演算を行わなければならない。第2図で説明したアル
ゴリズムは2つの被乗数をNに関する乗余環の要素でな
く、整数としている。それ故、インボリューション(べ
き乗)アルゴリズムでは各乗算の後にモジューロ・レダ
クションステップが行われる。 本発明方法によれば、乗算もこの乗余環で行われる。
そのために在来のアルゴリズムを1箇所変更した。すな
わちループの終りに中間結果Zをその代表として既約化
するのである。第1にZが2倍され、第2にPが(最も
不利な場合には)これに加算されたから、それが必要な
のである。それ故Zはループの終わりにモジューロNよ
り大きいか等しい値をとることができる。 これに対して最後に更にモジューロ・レダクションス
テップが付け加えられるならば、Zはループを出た後、
環の許容される範囲の値を必ず取る。インボリューショ
ン(べき乗)アルゴリズムのモジューロ・レダクション
ステップを乗算アルゴリズムに挿入することを許す合同
の法則は次の通りである。 (a mod c)+(b mod c)≡(a+b)mod c インボリューション(べき乗)の場合のようにこの場
合も合同の規則により得られる情報は次の通りである。 a)ステップm−1で生じた和をその代表に既約化し、
次にステップmでこれを計算し続けるとき、又は b)ステップmでステップm−1の和に何かを加え、次
にこの和をその代表に既約化するときは、ステップmの
計算結果は同じ乗余類に含まれ、かつ真である。 乗算が一連の和に変換されたから、結論はこうなる。
2つの数を乗じてからモジューロ・レダクション演算を
行っても、分解された乗算の各加算の後に直ちにモジュ
ーロ・レダクション演算をしても、結果は同じである。 第3a図に示すフローチャートの中間結果Zはループ開
始時にNより小さい値を取り N>Z,P=>3*N>Z:=2*Z+P であったならば、ループの中で任意に大きな値を取るこ
とができない。 本発明方法では在来のモジューロ・レダクション演算
を単一の減算に置き換えられる。 ループの終りにZがNより大きいか等しければ、Zか
らN又は2Nが引かれるだけであり、Zの値はやはりNよ
り小さい。これらのステップは第3b図のフローチャート
に含まれる。 減算のために補助論理装置は必要でない。減数を否定
すれば(マイナス符号を付ければ)減算は加算になり、
加算論理装置で計算することができるからである。すな
わち a−b=a+(−b) 各個別ビットを否定することによって、ある数が否定
される。そのために最後に更に数1を加えなければなら
ない。それはVLSI設計においてビット毎に1個のインバ
ータによって実現される。しかし2つの情報すなわちビ
ット及び否定されたビットがメモリセル内にあるから、
追加のインバータは不要である。 2つの数の加算の場合、最低位のビットに桁上りビッ
ト(キャリィビット)を転送しない。次に減算しようと
するときは、否定したメモリビットが加算論理装置に印
加されると共に、最低位のビットに桁上りビットが送ら
れる。本発明に基づき乗算とモジューロ・レダクション
を結び付けるこのステップを以下で“マルトモド(Mult
Mod)”と呼ぶ。 ルックアヘッド手続による計算速度の増加を第4図に
基づいて説明する。マルトモド・アルゴリズムを分析
し、並列化の可能性を考えると、多くのステップが無駄
で除去できることが分かる。より正確に言えば、初めの
2つの不可避的ステップのほかに条件付ステップが実行
されないときは、全ループ通過(サイクル)を省略する
ことができる。あるサイクルが除去されると、ループの
ステップは実行されず必要なステップでも実行されな
い。除去されない次のサイクルについてもこのことを考
慮しなければならない。しかし、どれだけのサイクルを
飛び越すことができるかをまず計算しなければならな
い。そこでsz−1が飛び越したサイクルの数であるとし
よう(“sz"は乗算の桁送り値(シフト値)であり、以
下この意味を有する)。この情報があれば、飛び越した
サイクルの初めの2つのステップを現在のサイクルで一
緒に実行することができる(sz−1の飛び越しサイクル
+現実のサイクル=szサイクル)。すなわち 1. Zを1ビット(2倍)でなく、szビットだけ左へシ
フトして、 2. mを1でなくszだけ増加するのである。 szビットのシフトはバレルシフターにより1ステップ
で行うことができる(L.コンウェイ,C.ミード[L.Conwa
y,C.Mead]、VLSIシステム入門、Adison−Wesley Publi
shing Company,Inc.,1980年)。 余計なステップを飛び越すことを可能にする方法はル
ックアヘッド(先読み)法と呼ばれる。この方法は綿密
な分析に従って各アルゴリズム毎に個別に設計しなけれ
ばならない。とりわけ、期待される時間利得が飛び越し
可能なサイクルを判断するための時間より大きいかどう
かを調べなければならない。全アルゴリズムを所望のハ
ードウェア実現(インプリメンテーション)する際に時
間利得を害うものは何もない。なぜならルックアヘッド
・パラメータの計算は最も長いステップである加算と平
行して行われるからである。 乗算については従来からルックアヘッド・アルゴリズ
ムが知られている。このアルゴリズムには2つの状態あ
る。すなわち 1. LA=0、乗数のゼロを飛ばして読む。 2. LA=1、乗数の1を飛ばして読む。 アルゴリズムのステップの順序は次の通りである。 1. sz:=1と置く。 2. m :=m+1と置く。 3. a :=1−2*LAと置く。 4. 3ビット・ストリンクM[L(M)−m・・・L
(M)−m−2]と考察する。完了しない限り、3ビッ
ト・ストリングとLA値に応じて、行に示す規則を実行す
る。 5.マルトモド・アルゴリズムで下記を実行する。 a. Zをszだけ左へシフトする。 b. Z:=Z+a*Pと置く。 「完了」の指示の後のカッコの中のローマ数字はこの
行の規則(以下に述べる)を指定し、第1の数字はLA=
0、第2の数字はLA=1に対するものである。その後に
「不可能」とある3ビット・ストリングは出現できな
い。なぜならその場合は既にその前のステップで規則II
又はIIIが適用されたことになるからである。変数“a"
は、Pが加算ステップで符号の変化(否定される)が与
えられるか否かの情報のための中間記憶装置の役割をす
るにすぎない。このステップの実行で乗算(加算)は行
われない。aは値+1及び−1しか取ることができない
からである。Zのシフトとmの増加は既に前に説明し
た。 ルックアヘッド規則は乗算を分解して和とすることに
よってたやすく理解される。それは次の通りである。 以下の計算で“s"は、L(M)−m−1桁から数え
て、乗数の第1ビットとLAが不等である桁を、L(M)
−mに対して相対的に表示するものとする。 規則Iは、0ストリングに孤立した1があるときは、
この位置でPにZを加えることを意味する。数学的に表
現すれば、 第2の和の被加数は値λ=m+s以外はゼロである。
なぜなら乗数の2進桁L(M)−m−1・・・・L
(M)−m−sに00・・・・01があるからである。 規則IIは最も簡単には、規則IIIとの相互作用で理解
される。初めの1に少なくとももう1つの第2の1が続
くとき、規則IIは0ストリングから1ストリングに切換
える。最後の0の桁でPがZに加えられる。規則IIIはI
Iに対して双対である。初めの0に少なくとももう1つ
の第2の0が続くとき、規則IIIは1ストリングから0
ストリングに切換える。最後の1の桁でZからPで引か
れる。s1が初めの1の桁、s0がそれに続く最初の0の桁
であり、いずれもmから相対的に数えられるとすれば、
次のようになる。 最後の行から直ちに規則II及びIIIが出て来る。 2つの切換点の間の桁は、すべて1であるとすれば、
留意しないでよい。一例でこれを明らかにしよう。 乗数のビットを逐次処理しないで、1ストリングを幾
何学的和とみなし、和を計算し、重要でないビットを飛
び越すならば、2つの(すなわち2サイクル)が省略さ
れる。 なお規則IVが残っている。この規則は、1ストリング
に孤立した0があれば、この桁でZからPを引くという
ものである。次のようになる。 ルックアヘッド手続の観点からすればL(M)−(m
+s)桁でPの減算の後、1ストリングが中断していな
いかのように見える。ルックアヘッドを続けることがで
きる。 第4図のフローチャートに示した、パラメータを直列
に計算する乗算用ルックアヘッド・アルゴリズムによれ
ば、ルックアヘッドなしのバージョンに比して時間的利
得が得られない。なぜならサイクル毎に乗数の1ビット
しか検査できないからである。従ってこのフローチャー
トは機能するアルゴリズムへの規則の転化のためにしか
役立たない。他方ではハードウエア・インプリメンテー
ションのためにこのアルゴリズムが用意されるが、その
場合はルックアヘッド・パラメータの計算が別の計算装
置の演算と平行して1ステップで行われるから、1つの
サイクルの終わりに直ちに次のサイクルのためのパラメ
ータが準備される。 このアルゴリズムでシフト値szは最大限cur−kの値
を取ることができる(cur−kは変数の「名称」であ
る)。シフト値は、レジスタを桁送りする桁の数を示
す。シフト値の最大値は理論的には必要でないが、実際
的には必要である。Zを計算された位に1ステップでシ
フトするバレルシフターは、これを最大値“k"までしか
行えない。kは設計で確定しなければならない。kはcu
r−kが取り得る最大値である。cur−kの値は、いずれ
設計されるモジューロ・ルックアヘッド・アルゴリズム
で確定される。 sz=cur−kに至るまでにいずれの規則も適用されな
ければ、Zはkビットだけ左へシフトされ、aは値0を
取る。すなわちPは加算も減算もされない。1ステップ
で行える動作を、コストと場所(チップ上の空間のこ
と)の都合上、複数個のステップに分割しなければなら
ない。kのどのような値が、速度の増加と必要な場所の
縮小という要求の間の好適な折衷であるかは後節の1つ
で説明する。 次にモジューロ・レダクションステップへのルックア
ヘッドの拡張を説明する(第5図)。効率の理由から乗
算を剰余環に移したから、モジューロ・レダクションス
テップにもルックアヘッド・パラメータの作成法を導入
することができなければ、前節で得た、ルックアヘッド
による乗算の改善があまり役立たない。ルックアヘッド
・パラメータの作成法を導入しなければ、モジューロ・
レダクションステップは依然としてサイクル毎に1ビッ
トしか扱えないので、全体の施工を妨げ遅くする。また
この方法には制限がある。サイクル当りのシフト値の期
待値が乗算アルゴリズムのそれとほぼ一致しなければな
らない。そうでない場合は、1つのルックアヘッド・ア
ルゴリズムが他のルックアヘッド・アルゴリズムを妨げ
遅くする。 必要条件を満足し、上記の規則を1つのアルゴリズム
に統合する本発明アルゴリズムを第5図のフローチャー
トに示す。前述のように、このアルゴリズムも同じ理由
から直列に書かれている。ハードウエア・インプリメン
テーションでこのアルゴリズムは乗算のルックアヘッド
・アルゴリズムと同じ性質を有する。 モジューロ・ルックアヘッド・アルゴリズムに対する
枠組み条件(境界条件)は、サイクル毎の2つの変数の
シフト値の期待値が一致することを要求する。これまで
Nはシフトされなかった。すなわちZが各サイクルのつ
ど1ビット左へ送られ、NはZに対して相対的に1ビッ
ト右へ送られた。すなわちNは位置を保持した。これに
対してルックアヘッド手続は、NがZに対して相対的に
何ビット右へ送られるかを示すパラメータsnを発生す
る。以下で“sn"はモジューロ・ルックアヘッド・アル
ゴリズムの実シフト値であり、“n"はNが当該の時点に
左へ絶対的にどれだけの2進桁をシフトされているかを
示す。従ってレジスタNにはモジューロNの倍数があ
る。それ故、マルトモド・ループの終りでZはたいてい
剰余環の代表でない。3つの場合が起こり得る。 1. sn>sz:Nが絶対的にsn−sz桁だけ右へ送られる。n
が0より小さくならないように注意しなければならな
い。さもなければNの倍数でなくてNの分数が計算に含
まれるからである。これは合同を破壊する。従ってsn
は、nの値が最小限0になるように計算する。 2. sn=sz:考慮しないでよい。 3. sn<sz:Nが絶対的にsz−sn桁だけ左へ送られる。n
が次のステップで或る設定値MAXを超える可能性がある
ときは、nが必ずMAX以下の値を取るように、乗算ルッ
クアヘッド・アルゴリズムを制止しなければならない。
こうしてnが任意に大きくなることが防止される。 第5図のアルゴリズムでは最後にZの最大シフト値の
制限が見られる。次のステップの最も不利な場合に(sz
=cur−k及びsn=1)nが丁度、値MAXを取るように、
cur−kを設定する。 モジューロ計算のためのルックアヘッドは、使用され
る規則にかかわりなく、Nの倍数を計算に入れることを
必要とする。乗算とモジューロ計算が一般に相互に妨げ
合わないことが利点である。上述の事例1又は事例3で
1つのステップに対するsn又はszの値に上限が置かれる
場合にだけ、傷害が起こる。欠点は、レジスタがモジュ
ーロのレジスタより大きな数を記憶しなければならない
ことである。このオーバーフローのためにVLSI設計でバ
ッファを設けなければならない。 しかしこの欠点は2つのレジスタ、Z及びNにだけ当
てはまる。またバッファの規模はMAXによって上限がき
まる。そこで更にVLSI設計は、すべてのレジスタとバッ
ファの規模が一定であることを前提とすればよい。期待
値が余りに低下しないために、バッファがどのような大
きさを持つべきか、を次節で説明する。 ルックアヘッド・パラメータの計算規模を更に説明し
なければならない。そのために数ZDNが必要である。そ
れはレジスタNの値の3分の2と定義される。すなわち ZDN:=2/3*N アルゴリズムは次の通りである。 1. sn:=0と置く。 2. b :0と置く。 3. Zの絶対値がZDN以下である限り、下記を実行す
る。 a sn:sn+1と置き、 b n :n−1と置き、 c ZDNを1ビット右へ送る、すなわちZDNを2で割
る。 4. b :*Z[符号]−1と置く。符号ビットの値が0
であれば、Zは正であり、そうでないときはZは負であ
る。 5. マルトモド・アルゴリズムで下記を実行する。 a NをZに対して相対的にsnビットだけ右へ送り、 b Z:Z+b*Nと置く。すなわちZが正ならばNを
Zから引き、そうでないときはNをZに加える。 ハードウエア・インプリメンテーションでは最後のス
テップで垂直をしない。なぜならbは−1、0及び+1
の値しか取ることができないからである。すなわち加算
論理装置に値−N、0又は+Nが印加される。ZDNの計
算は何の困難も生じない。ZDNはそのつど新たに計算さ
れるのでなくて、鍵を引渡す時に唯1回だけ計算され、
その時Nと同じシフト演算が行われるからである。こう
してNとZDNの関係が維持される。 しかし鍵の引渡しの後にZDNを計算しなければならな
い。3分の2は2進法で表示すれば0.101010101…であ
る。そこでZDNの計算は次のようにして行われる。 1. Z:=0と置く。 2. Z:=Z+Nと置く。 3. Zを2ビット左へ送る。 4. ZDNがなお十分に厳密に計算されていなければ、ス
テップ2へ戻る。 最後のステップは不鮮明な異常終了条件を含む。乗数
の各ビットが「3分の2」を処理していれば、ZDNは厳
密に決定されたのである。ZとZDNの比較になお影響す
る「3分の2」のビットの数は、比較を行う比較器が有
するビットの数と同じである。一方、比較器の容量は要
求される比較精度によってきまる。次節で示すように、
10ビットで十分過ぎる程である。従ってZDNを少数のス
テップで計算することができる。 今述べたように、ZDNの1対の最高位ビットだけがZ
との比較のために利用される。もちろんその結果、時に
は比較器が誤った結果を送出することがある。なぜなら
百パーセント確かな比較はすべてのL(N)ビットを考
慮しなければならないからである。このことは場所の都
合上、極めて実現困難である。しかしもっと重要なの
は、その場合に比較時間が通常の加算時間と同様に大き
くなることである。このような訳で正確な比較は高嶺の
花のようである。 比較器が誤った決定を下したときは、それはどのよう
な影響があるか?その場合は次のサイクルでsnが値1を
取る。そうでなければsnは1より大きな値を取ったこと
になる。そこで次のサイクルの実シフト値が値1に退化
る。証明: 比較器が正しい結果を送出したとすれば、snは であるように定められている。そこでNがsnビット右へ
送られる。すなわちNを2のsn乗で割る。次にZが負で
あればNをZに加え、そうでなければZからNを引く。
従ってZの絶対値からNを引く訳である。結果を再びZ
に格納する。 Zの絶対値は今やNの3分の1以下であるから、次の
サイクルではsn>1でなければならない。すなわち 部分2はこれで証明された。 ところが比較器が誤った判断を下すときは、不等式が
満足されない。例えば計算の際に丸め誤差によりZDNが
3分の2よりやや小さくなると、誤った決定が行われ
る。Zが3分の2に近いが、なおそれより小さいとき
は、比較ステートメントは「ZDNはZより小さい」であ
る。しかし実際にはこのステートメントを1ビット桁あ
とで行れなければならなかった。従って 仮定(1)はもはや満足されない。 となる。 比較器の誤りの影響はこのように比較的無害である。
このため設計者にとって、比較器の容量の選択に広い余
裕が与えられる。なぜなら小さな容量は誤りのある比較
によってサイクル数を増加するに過ぎず、計算を歪めな
いからである。そこで、誤りを犯すことが多いが、結果
がすこぶる急速に現れるため、それでもなお速度利得を
もたらす小容量の比較器を設計することができる。 この考察のために誤り確率が知られていなければなら
ない。誤りはZDNの最後のビット、又は最低位の比較器
ビットよりも低位のビットの丸めによって起こる。“d"
が比較器の容量だとすれば、誤りの頻度eは である。 判りやすく表現すれば、式の意味は、すべての高位の
ビットが比較を決定することができない場合にだけ誤り
が起こり、2d個の数の内の1つでそうなるということで
ある。 乗算とモジューロ・レダクションのための2つのルッ
クアヘッド方法の確率理論的期待値だけが対応するか
ら、これらの期待値はマルトモド・アルゴリズムでは互
いに必然的に結合しない。これと関係して、各サイクル
では、Zは絶対的にシフトされ、NはZに対し相対的に
シフトされる。この非結合は「浮動(フローテング)」
と呼ばれ、次に第15図に関連して詳しく説明する。 暗号プロセッサがそれぞれ置かれる状態を第15図のス
テップaないしeに示す。転換a,c,eはシフト過程を示
し、b及びdは詳しく説明しない加算又は減算を表す。
図示の長方形(棒)はレジスタC(14)、N(18)及び
Z(20,22,24;暗号プロセッサのレジスタ)を表す。長
方形の高さは660ビット+20ビットである。660ビットは
最大語長であり、20ビットは非結合を可能にするバッフ
ァの大きさである。 例えば乗算の桁送り値(シフト値、桁送りの大きさ)
がモジューロ演算の桁送り値より大きければ、レジスタ
Mは桁送り値の差だけ上端へ送られる(ステップa及び
eを参照)。レジスタNの最高位のビットがこうして部
分的にバッファの中に送り込まれる。 逆の場合はNが下端へ送られる(ステップc)。Nが
バッファの限度を出ないようにする監視は、後述で詳し
く説明する。 ステップaの前にNが既にバッファの中に10ビット桁
送りされているとしよう。そこで第15図の下で判るよう
に、桁送り値szは値“3",“1"及び“2"を取る。この例
では上記の値を逐次取るのである。Zに対するNの相対
的シフトを規定する桁送り値siはこの場合逐次“2",
“3"及び“1"の値を取る。つまりNは絶対的に見てsn=
sz−siだけシフトされているから、snは逐次“1",“−
2"及び“1"である。ステップa,c及びdの後にNはそれ
ぞれ11,9又は10ビットだけバッファの中に送り込まれて
いる。この過程は、上述で「浮動(フローテング)」と
称したものである。 ステップcではk=3の場合に対するルックアヘッド
限界kの影響が明らかである。siのアルゴリズムは4ビ
ットのシフトを行うことができたけれども、NはZに対
して相対的に3ビットしかシフトされず、ステップeで
はそれが1ビットである。従ってNはステップdで加算
も減算もされない。つまり第5図の符号bは値“0"を取
っている訳である。 次に3オペランド加算の手順を説明する。第6図は完
全なRSA法(第6a図)と、本発明に基づく暗号法の今や
完全な実施例(第6b図)とを対比する。 ここでは、マルトモド・アルゴリズムの最後の表現に
含まれていた質問が、2つのルックアヘッド・アルゴリ
ズムの呼出しに置き換えられる。ルックアヘッド・パラ
メータの計算は平行的に行われる。呼出しが行われる並
列分岐でこれを表すことにする。 アルゴリズムのこのバージョンでは、ループを処理し
た後にZに負の値があることが可能である。それ故ルッ
クアヘッドを含むマルトモド・アルゴリズムで最後に結
果の訂正を行わなければならない。Zが負であるとすれ
ば、Z+Nは正である。この補助ステップは第6図のフ
ローチャートに含まれている。 また加算ステップとモジューロステップが単一のステ
ップ、すなわち3オペランド加算に統合されている。下
記で判るように、論理装置によってステップ毎に2個で
なく3個のオペランドが加算される。 3オペランド加算は2つの部分に分かれる。第1の部
分では各2進桁にオペランドA,B,Cの3ビットの和が形
成される。A[i],B[i]及びC[i]の和は0…3
の値を取ることができるから、2進法では2(1)ビッ
トのS[1]及びS[0]で表すことができる。各桁に
和が形成されているので、2つの和ビットから2つの新
しい数X及びYを構成することができる(i=1ないし
max)。 Y[i] :=S[0],Y[max+1]:0及び X[i+1]:=S[1],X[0] :0 第2の部分で2つの数が常法により加算される。1ビ
ットの延長は何ら問題を生じない。なぜなら結果は最長
のオペランドより少くとも1ビット短いからである。 加算論理装置のエネルギ消費が余りに高くならないよ
うに、その幾つかの桁のプルアップ・トランジスタを省
略した。従って論理装置は準安定状態にある。加算の時
に安定状態に転換すると、もはやこの状態から自力で脱
出することができない。従ってサイクルの終りに外部プ
レチャージ信号で論理装置を再び準安定初期状態にしな
ければならない。この期間の間にビット加算が挿入され
る。 暗号プロセッサ 本発明の説明のこの第2部はプロセッサのブロック構
成図と、それに基づく配置図を取扱う。 本発明の部分的目的は、RSAアルゴリズムを最適に支
持する専用基本セル10の構造を示すことにある。この構
造によってブロック構成図が確定される。ブロック構成
図はそれを合わせて調整した、プロセッサの配置図を設
計するために十分な情報を含む。 いかにしてRSAアルゴリズムを効率的に支援するか?
この問題に解答するために、アルゴリズムの個々のステ
ップの性質について、それがたまにしか実行されないか
ないしはあまり時間がかからないか、又はその逆である
か、を検討しなければならない。前者の場合は、マイク
ロプログラムによってステップを実現するのが得策であ
る。これに対してタイムクリティカルなステップ(全体
の速度の限界となる段階)ではハードウエア・インプリ
メンテーションを基本セルに移さなければならない。下
記のステップがRSAアルゴリズムのレベルで実行される
(第6図のフローチャートを参照)。 1. 開始(初期化)。2つの変数C及びeに初期値を割
当てる。 2. ループ。ループの中に2図の照会とされによって誘
起される飛越し、マルトモド・アルゴリズムの2回の呼
出し及び変数eの増加がある。 列挙した各ステップが計算の間に1回だけ実行される
か、又は演算が少数のビット、例えばべき指数ビットの
2値照会に限られる。またそれは簡単な演算であるか
ら、ほとんど計算時間を必要としない。このようにして
ステップはマイクロプログラムによって実現される。簡
単な制御装置42がこの課題を実行する(第11図)。 小文字で表した変数はすべてカウンタ機能を有する。
それらは制御装置42と密接に協力して動作する。なぜな
ら制御装置42の決定はカウンタに依存し、他方、カウン
タは制御装置の決定に応じて増減されるからである。従
ってこれらの変数を制御装置の直近に配置しなければな
らない。その長さは1d(L(M))ビットの値を有する
から、これが可能である(1d=対数双対(2を底とする
対数))。鍵の長さが660ビットの場合、その長さは10
ビットである。 マルトモド・アルゴリズムの照会及びカウンタにも同
じ論旨が成り立つ。しかしこの課題は別個の制御装置36
(第10図)が受持つ。なぜならルックアヘッド・パラメ
ータの計算はマルトモド計算の経過に関連してすこぶる
タイムクリティカルであるからである。P及びNが3オ
ペランド加算に入るか、またそれはどのような符号で
か、の情報とシフト値sz及びsnの適時の生成がサイクル
時間に大きな影響を及ぼす。 長さL(N)ビットの数で行われる演算は、この制御
装置に属さない。実行する論理装置の至近にそれを格納
するため、かつ論理装置自体のための、基本セル(第7
図)を設計した。 基本セル10の必要なレジスタと論理装置は第7図で明
らかである。それによれば基本セル10は乗数Mを含むレ
ジスタ12、コードレジスタ14及びデータレジスタ16を具
備する。Nを含み−2…+2ビット送るアップダウン・
シフトレジスタ18が続く。 基本セル10のその他の構成部分はバレルシフター20、
ビット加算器22及び全加算器24であり、これに桁上りル
ックアヘッド素子26が接続する。 RSAアルゴリズム及びマルトモド・アルゴリズムには
合計5個のレジスタが必要である。 1. 当該の乗数Mのためのレジスタ12。レジスタの長さ
はL(N)である。 2. 暗号化したデータのためのレジスタ14。計算の際に
このレジスタに変数Cがある。RSAアルゴリズムを処理
した後の変数Cの値が暗号化の結果である。レジスタの
長さはL(N)である。 3. 暗号化すべきデータのためのレジスタ16。計算の際
にこのレジスタに変数Pがある。RSAアルゴリズムの初
めに、暗号化すべきデータの値が変数Pに割当てられ
る。レジスタの長さはL(N)である。 4. モジューロNのためのレジスタ18。計算の際にこの
レジスタにモジューロの倍数がある。従ってレジスタの
長さはL(N)+MAXである。このレジスタは記憶機能
のほかに変数Nを1ステップで数桁シフトする機能があ
る。Nは各サイクルでZに対して相対的にsn桁だけ右へ
シフトされる。同時にZがsn桁だけ左へシフトされる。
すなわちNは絶対的にsn−sz桁だけ右へシフトされる。
szとsnは1…3の値を取ることができる(最大ルックア
ヘッドkを値3に固定した)。従ってNを右へシフトす
る絶対シフト値は、こうして値−2…2を取るのであ
る。右への負のシフト値は、Nが左へシフトされること
を意味する。左右シフトレジスタにならって、UDシフト
レジスタ(UD=アップダウン)18によって必要な機能が
実現される。このレジスタは半サイクル毎に各方向に1
ビット、従って全サイクルでは2ビットだけシフトする
ことができる。 5. マルトモド・アルゴリズムの中間結果Zのためのレ
ジスタ(20,22,24から成る)。このレジスタは各サイク
ルの初めに読出され、終わりに新しい中間結果が書込ま
れる。従ってレジスタは変数Zを短時間の間だけ記憶す
ればよい。最も簡単には、インバータの入力ゲートでの
Zの各ビットの動的記憶によって、この機能が実現され
る。レジスタの長さはL(N)+MAXである。レジスタ1
8がこの長さを有し、Zがその値を取ることがあるから
である。レジスタZは全加算器24の構成部分とみなされ
る。 初めの3つのレジスタ12,14,16は長い期間にわたって
情報を記憶しなければならないから、静的記憶装置とし
て設計される。 上述のレジスタのほかに下記が基本セル設計に属す
る。 1. 加算の結果すなわち中間結果Zを0・・・3ビット
だけシフトすることができるバレルシフター。乗算はモ
ジューロ・レダクション演算の完了前に完了し、その後
Zはもはやシフトする必要がないから、0ビットシフト
をバレルシフターの機能に組み入れることが必要であ
る。 2. 3つのオペランドビットを2ビット表示の和に変換
する、桁上り(キャリィビット)なしのビット加算機2
2。 3. 全加算機24。隣の低位桁の桁上りビットを処理し、
隣の高位桁のための桁上りビットを自ら生成する2ビッ
ト加算器をこのように呼ぶ。 次に加算を実施例で説明する。加算論理装置はレジス
タ16,18及び20,22,24に対する読出しアクセスを有し、
各レジスタに1個の数を格納することができる。P(レ
ジスタ16)はRSAアルゴリズムの各マルトモド呼出しに
おいて、2つの因数の内の1つである。Pを常に被乗
数、他方の因数を乗数として選べば、基本セルの論理装
置は必要なシフト演算と3オペランド加算を実行するた
めに、レジスタ16,18及びZ(20,22,24)を読出すこと
さえできれば十分である。 マルトモド制御装置36(第10図)は、ルックアヘッド
・パラメータを生成するという詳細問題を解決する。こ
れに基づいてレジスタ12の乗数MがレジスタZと平行し
てシフトされる。マルトモド制御装置36はレジスタ12の
最高位ビットへのアクセスを有する(第12図を参照)。
マルトモド制御装置36はこのビットに応じてシフトパラ
メータszを生成する。但しシフトパラメータszはそのま
ま送出されないで、適当な制御信号に変換される。この
過程は第12図の乗算シフト論理装置50で行われる。 同様にシフトパラメータsnがモジューロ・シフト論理
装置52で生成される。比較器18はszの高位のビットとN
の1/3,1/6,1/12…を比較する。第5図のアルゴリズムに
従って、比較結果がモジューロ・レダクション論理装置
52へ送出される。この値は、レジスタ18がZに対して相
対的に右へシフトされる相対値を示す。モジューロ・レ
ダクションシフト論理装置52はこの相対値と乗算シフト
論理装置50のシフト値から絶対シフトパラメータsnを生
成する。やはりsnは送出されないで、直ちに適当な制御
信号に変換される。 第12図に示す制限器54及び56は、前述のようにレジス
タ18がバッファの限界を越えた場合に、シフト値sz又は
snを制限することを目的とする。第1の制限器54及び第
2の制限器56の信号は乗算シフト論理装置50とモジュー
ロ・シフト論理装置52によって一緒に処理される。 第12図の第1のカウンタ58は、乗数のどれだけのビッ
トがレジスタ12で更に処理されるかを示す変数m(第6b
図を参照)を含む。第2のカウンタ60は、レジスタ18
(N)がバッファに何ビット繰り入れられたかを示す変
数n(第6b図又は第5図を参照)を含む。 第7図に基本セル10を示した上で、第8図は複数個の
基本セル10の階層構造で4セル・ブロック28と階層的桁
上りルックアヘッド素子30がどのように構成されるかを
示す。第9図によれば、別の段の5個の4ブロック・セ
ル28が20セル・ブロック32に構成され、第10図が示すよ
うに別の階層構造で、最上位のブロックをバッファ34と
して構成した複数個の20セル・ブロック32がマルトモド
制御装置36を備えた暗号化装置40に統合されている。 第7図により構成された基本セル10はマルトモド制御
装置36と共同で、第6b図によるマルトモドループのすべ
てのステップを1サイクルで処理することができる。な
ぜならループの各ステップ(レジスタ18(N)のモジュ
ーロNの数ビットのシフト、バレルシフター20でのレジ
スタZ(20,22,24)の数ビットそシフト、ビット加算器
22と全加算器24及び桁上りルックアヘッド・ユニット26
による3オペランド演算の実行)に特別の論理装置を具
備するからである。マルトモド制御装置36は基本セル10
の動作と平行して、次のサイクルのパラメータを計算す
る(第12図)。かくして本発明方法が暗号プロセッサの
VLSI設計に直接に変換される。 桁上りビットが大きな距離越しに影響されるかどうか
を識別する桁上りルックアヘッド素子30が、第13図及び
第14図に基づいて開発された。選んだ解決策による暗号
プロセッサでは30.000例の内の1例でしかそうならない
から、サイクル時間を決定するのは最長加算時間(最低
位の桁上りビットが最高位の桁上りビットに影響する)
の持続時間でなくて、平均加算時間である。 桁上りルックアヘッド素子(CLA)30は階層的に構成
される。それは下位の段(左側)の桁上りルックアヘッ
ド信号を処理し、上位の段(右側)のための桁上りルッ
クアヘッド信号を生成する。 或る桁の伝搬信号は、この桁の桁上げが隣の低位桁の
桁上げによってきまることを意味する。すべての伝搬信
号が起動させられると、階層的桁上りルックアヘッド素
子30がこの素子の伝搬出力信号を発生する。キル(Kil
l)信号は、この桁に桁上りがないことを意味する。こ
の素子の最高位の桁に桁上りがないことを下位の素子で
決定することができるときに、キル出力信号が起動され
る。 桁上りルックアヘッド素子30はモジュール方式により
1つの樹木(トリー)構造に組み立てることができる。
その場合桁上りルックアヘッド素子はそれぞれ多数の桁
上りビットを表す。桁上りルックアヘッド素子の利点
は、桁上りビットの直列処理を並直列(樹木状)処理に
置き換えることである。それによって加算時間が大幅に
短縮されるのである。 ところが実際には必要な段の追加と共に信号経路の長
さが増倍するから、樹木構造の或る深さからは隣接の樹
木を統合してももはや利点をもたらさない。その場合は
この樹木の根元で桁上りを再び直列に処理する。 このことが第14図で明らかである。図は桁上りルック
アヘッド素子30と断続器62の組合せの結線を示す。20ビ
ットのブロックの内部で桁上りルックアヘッド樹木構造
によって桁上りが処理される。桁上りはブロックからブ
ロックへ直列に転送される。 この設計が暗号プロセッサ48で更に少し拡張される。
無用になったブロック伝搬信号は断続器62を作動させる
ために使われる。断続器62はクロック信号を8クロック
の間、遮断する。これは直列ブロック連鎖全体の桁上り
が必要とする時間である。 このようにして或るブロックの桁上りが隣の低位のブ
ロックによって定まるならばブロック伝搬信号はブロッ
ク桁上りルックアヘッドによって自動的に起動される。
断続器62が接続され、ブロック連鎖は適正なレベル調整
のために十分な時間を得る。 そこでサイクル時間は、直接隣接するブロックの桁上
げを処理するのに丁度十分であるように、調整すること
ができる。この場合、桁数にかかわりなくブロック桁上
り時間だけを考慮すればよいので、利益がすこぶる大き
い。従って660ビット加算の計算時間は20ビット加算の
計算時間以内である。約30.000例の内の1例でだけ桁上
りビットが3個以上のブロック越しに影響を受ける。こ
のことを桁上りルックアヘッドが識別する。そこで加算
は1サイクルでなく、8サイクルを必要とする。 RSAアルゴリズムを基本演算に分解し、これを本発明
に基づく回路に置き換えることによって、通信文(メッ
セージ)の暗号化のために必要な絶対ステップ数を計算
することができる。それから直ちに、毎秒コード化ビッ
トで表される一般形式VRSA、一般の暗号化率を導き出す
ことができる。ただし、Erw( )は( )の期待値を
表す。 暗号化率は − プロセッサの周波数に比例し、 − 共に暗号化されるビットL(N)の数に比例し、 − マルトモド呼出し数3/2・L(N)に反比例し、 − マルトモド呼出し当りの加算又は減算数 L(N)/min(Erw(sz),Erw(sn))に反比例し、 − 大きな数の加算又は減算に分解される個別ステップ
の数L(N)・A/Bに反比例する。Bは演算論理機構の
容量であり(演算論理機構の容量が大きければ大きい
程、2つの長い数の加算のために必要な演算が少い)、
Aは演算の実行のためのサイクルの加算である。 新規な暗号プロセッサに対してErw(sz)=Erw(sn)
及びA/B=1/L(N)である。なぜなら演算論理機構のデ
ータ容量は暗号化されるデータの長さに等しく、演算論
理機構の演算は1サイクルしか必要でないからである。
その結果、この場合暗号化プロセッサの暗号化率V
RSA.KPに対して となる。ここでKPはこの発明の暗号プロセッサを指す。 30MHzの周波数は、5μmN形金属酸化膜半導体技術で
得られるサイクル時間100ns(実験室見本として作製し
た原型は5μmN形金属酸化物膜半導体法によるトランジ
スタ約5000個から成る)を今日慣用の2μm相補形金属
酸化物膜半導体技術に補外して得たものである。 本発明に基づく暗号プロセッサの上記の実施例は2μ
m相補形金属酸化物半導体技術による約80.000個のトラ
ンジスタで構成される。その場合チップ面積は5.2mm×
5.2mmである。最大鍵長さ660ビットとして、最も不利な
場合でも依然として64.000ビット/秒の高速でデータを
暗号化及び解読する。 論理的ブロック構造と配置図が第16図及び第17図で明
らかである。第16図は、基本セル10の前述の説明から直
ちに導き出される暗号プロセッサ48のブロック構成図を
示す。 第17図の配置図の設計において種々の枠組み条件、す
なわち一つは基本セル10の構造、更には基本セル相互の
連結、最後にすべての必要な制御信号の基本セルへの接
続の保証を考慮に入れなければならない。 基本セル10の4つの部品は、隣接の基本セルの対応す
る部品と情報を交換する。それは第1にアップダウン・
シフトレジスタ18(第7図を参照)、第2にビット加算
器22、第3にバレルシフター20、第4に全加算器24であ
る。つまり基本セルの個別部品が上下に重なり合って配
置されている訳である。その場合は隣接の基本セルへの
補助連絡路が生じないからである。部品の数が比較的多
いので、選ばれた実施態様のプロセッサの基本セルは高
さが小さく、幅が大きい。 基本セルは扁平であるが、その必要な積重ねは第17図
左に見られるように細く高い塔となる。製造技術上の理
由から、なるべく正方形のチップを得るように努める。
そこで塔を個々の堆積に分け、これを並べて配置する
(第17図右)。1つおきの堆積を裏返しにする。その場
合は予め分割線に沿って上下に隣接していた基本セル
が、横隣りになるからである。必要な情報は堆積の上面
と下面で隣接セルへ伝達される。 まだ配置されていないプロセッサのユニット、すなわ
ち主制御装置42とI/Oユニット44は暗号化装置40と比較
してあまり場所を取らないから、その周縁の任意の場所
に配置することができる。
【図面の簡単な説明】 第1a図は当初のRSA法による日付の解読又は暗号化のた
めのべき乗アルゴリズムのフローチャート、第1b図は本
発明方法による第1a図と同じ日付の解読及び暗号化のた
めのべき乗アルゴリズムのフローチャート、第2図は被
乗数が自然数の要素である、第1図で必要な乗算のため
の直列アルゴリズムのフローチャート、第3a図は被乗数
がNに関する剰余環の要素である、補助モジューロステ
ップを含む乗算アルゴリズムのフローチャート、第3b図
はモジューロ計算を減算に簡約した第3a図のフローチャ
ート、第4図はルックアヘッド・パラメータを直列に計
算する乗算のためのルックアヘッド・アルゴリズムのフ
ローチャート、第5図はルックアヘッド・パラメータを
直列に計算するモジューロ演算のためのルックアヘッド
・アルゴリズムのフローチャート、第6a図は乗算とそれ
に続くモジューロ演算をマルトモド・ステップに統合し
た第1b図のフローチャート、第6b図はルックアヘッドに
より実行される、第6a図で使用した本発明マルトモド法
のフローチャート、第7図はマルトモド・ループを1ス
テップで実現するための基本セルの図、第8図は第7図
の基本セル4個を階層的桁上りルックアヘッド(CLA)
素子を備えた4セル・ブロックにまとめた統合図、第9
図は第8図の4セル・ブロック各々5個を20セル・ブロ
ックにまとめた階層的統合図、第10図は複数個の、第9
図の20セル・ブロックと1個の制御装置を備えた完全な
暗号化装置の図、第11図は暗号プロセッサのブロック構
成図、第12図は第4図及び第5図のルックアヘッド・ア
ルゴリズムの指定による、第10図の制御装置のブロック
構成図、第13図は第8図の4セル・ブロックに使用され
る階層的桁上りルックアヘッド素子の図、第14図は20セ
ル・ブロックの階層構造の内部の、第13図の桁上りルッ
クアヘッド素子の結線図、第15図は第10図でバッファと
して構成された最上位の20セル・ブロックの幾つかのス
テップ列に関する状態図、第16図は情報の流れを明らか
にするためのブロック構造略図、第17図はチップ上の基
本セルの配列の配置図を示す。 10……基本セル、30……桁上りルックアヘッド素子、32
……ブロック。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭49−90845(JP,A) 特開 昭59−11445(JP,A)

Claims (1)

  1. (57)【特許請求の範囲】 1.RSA法の公開鍵符号化方法により、通信文を暗号化
    し、かつ暗号を解くための暗号法を実行する暗号プロセ
    ッサであって、 前記暗号プロセッサは、 個別の動作を計算によって遂行するための一連の専用の
    基本セル(10)と; 複数の該基本セル(10)が段階となって各々が構成され
    る複数の統合されたブロックと; 各ブロック(28,32)と関係する、ツリー状の階層を持
    つキャリイルックアヘッド(CLA)素子(30)と; 該キャリィルックアヘッド(CLA)素子(30)により制
    御され、キャリィルックアヘッド素子(30)から到来す
    る信号を処理し、かつほぼ8サイクルにわたってタイミ
    ング信号に割込みをかけて、2つの数の加算のための時
    間がこれらの数の長さとは独立するようにし、かつ各ブ
    ロック内部でキャリィ演算が並列に実行されるようにす
    る断続器(62)と; を備え、 前記基本セル(10)が、 乗数Mのためのレジスタ(12)と; コードレジスタ(14)と; データレジスタ(16)と; 計算時には複数のモジューロNを含み、かつその記憶機
    能に加えて、モジューロNを2つの方向のうちの1つの
    方向の複数の位置に単一の段階でシフトすることができ
    るアップ・ダウンシフトレジスタ(18)と; キャリィビットなしで、3つのオペランドの加算演算の
    第1の段階を実行するビット加算器(22)と; 該ビット加算器に接続され、該ビット加算器(22)で得
    られた2つの数を加算して、結果を中間結果Zとして記
    憶するための全加算器(24)と; キャリィビットを計算するためのキャリィルックアヘッ
    ド素子(26)とで構成され、 前記暗号法は: 2つの大きな素数pとqとさらに大きな第3の数Eとを
    選ぶ段階と; pとqとの積N=p・qを求める段階と; 暗号化すべき通信文を等しい長さでNよりも小さい数値
    を持つ一連の要素Piに変換する段階と; これら各要素Piをべき(E)乗し、続いてモジューロN
    を既約化するように演算して数Ci=Pi EmodNを得るイン
    ボリューション演算により暗号化する段階と; 上記インボリューション段階を一連の乗算をする手段に
    より実行する段階と; Nについて剰余環内でモジューロ既約化演算を実行する
    段階と; 該演算を個別の段階に分けることにより上記乗算を実行
    し、乗算は本質的に一連の加算に変換されるようにする
    段階と; 古典的な除算アルゴリズムによりモジューロ既約化演算
    を一連の減算として実行する段階であって、第1のルッ
    クアヘッド技術を用いて除算がされ、乗算もまた第2の
    ルックアヘッド技術によって実行される段階と; で成り、 前記暗号法において、ルックアヘッドアルゴリズムを用
    いて加算及び減算もしくはそのいずれかの最大必要数を
    低減することとし、 モジューロ既約化演算のための該第1のルックアヘッド
    技術は、第1のルックアヘッド技術の使用により飛び越
    される演算数についての確率論上の期待値が、乗算用の
    第2のルックアヘッド技術の使用により飛び越される演
    算数についての確率上の期待値と正しく一致するように
    選ばれることとし、 該第2のルックアヘッド技術が該第1のルックアヘッド
    技術と結合しないようにし、それによって2つのルック
    アヘッド技術の各々がそれぞれシフト量szもしくはsnを
    生成する段階を含み、 乗算に対する中間結果Z又はモジューロNがそれぞれ1
    サイクルでシフトされるビット数を該シフト量sz又はsn
    がそれぞれ表すようにし、かつ中間結果Zがszビットだ
    け絶対的にシフトされ、モジューロNが中間結果Zに対
    してsnビットだけシフトされるようにすることとし、 乗算段階及びモジューロ既約化段階の加算及び減算がそ
    れぞれ3オペランド加算である単一演算に組入れられ、
    それにより3オペランドは各段階で加算され、またこの
    3オペランド加算が2つの部分に分けられていて、それ
    によって前記2つの部分の第1のものが選ばれてオペラ
    ンドA,B,及びCの各2値位置での和が形成されること
    と、これらビットの和が0と3の間にあり、この和が2
    値であって、2つのビットを表すことができて、各前記
    2値位置で前記2つの和ビットから2つの新しい数Xと
    Yとが生成されるようにすることとを含み、各前記和の
    最小ビットが数Yを作り、また各前記和の最大ビットが
    数Xを作り、さらに数Yの最大ビットは0に、また数X
    の最小ビットは0に設定されるようにし、それにより前
    記数XとYとがキャリィとともに一緒に既知の方法で加
    算されるように前記2つの部分の第2の部分を選び、か
    つ予め貯えられた信号により次のサイクルのための正規
    の加算論理が準備される時点まで、前記第1の部分のビ
    ット加算がキャリィなしで遂行されるようにし、 さらに、前記加算は a)長い大きい数X及びYは小さな区分に分解して個別
    のブロック(32)で処理する段階と; b)該ブロック(32)内のキャリィビットを既知のキャ
    リィ・ルックアヘッド(CLA)法に従って同時に計算す
    る段階と; c)与えられたブロックから次のブロックへ、該2つの
    ブロックを除く近隣のブロックのキャリィビットがそれ
    によって影響を受けない場合には、キャリィビットを送
    る段階と; を備え、 前記ブロック(32)によって励起される断続器(62)を
    用意し、該断続器はキャリィビットが近隣のブロックを
    越えて影響を持つ場合には、キャリィビットが計算され
    かつ処理されるのに使用できる必要時間を作るように割
    込みをかけることとしたことを特徴とする暗号プロセッ
    サ。 2.前記基本セルの部品が並列に動作する特許請求の範
    囲第1項記載の暗号プロセッサ。 3.RSA法の公開鍵符号化方法により、通信文を暗号化
    し、かつ暗号を解くための暗号法を実行する暗号プロセ
    ッサであって、 前記暗号プロセッサは、 個別の動作を計算によって遂行するための一連の専用の
    基本セル(10)と; 複数の該基本セル(10)が段階となって各々が構成され
    る複数の統合されたブロックと; 各ブロック(28,32)と関係する、ツリー状の階層を持
    つキャリイルックアヘッド(CLA)素子(30)と; 該キャリィルックアヘッド(CLA)素子(30)により制
    御され、キャリィルックアヘッド素子(30)から到来す
    る信号を処理し、かつほぼ8サイクルにわたってタイミ
    ング信号に割込みをかけて、2つの数の加算のための時
    間がこれらの数の長さとは独立するようにし、かつ各ブ
    ロック内部でキャリィ演算が並列に実行されるようにす
    る断続器(62)と; を備え、 前記基本セル(10)が、 乗数Mのためのレジスタ(12)と; コードレジスタ(14)と; データレジスタ(16)と; 計算時には複数のモジューロNを含み、かつその記憶機
    能に加えて、モジューロNを2つの方向のうちの1つの
    方向の複数の位置に単一の段階でシフトすることができ
    るアップ・ダウンシフトレジスタ(18)と; キャリィビットなしで、3つのオペランドの加算塩酸の
    第1の段階を実行するビット加算器(22)と; 該ビット加算器に接続され、該ビット加算器(22)で得
    られた2つの数を加算して、結果を中間結果Zとして記
    憶するための全加算器(24)と; キャリィビットを計算するためのキャリィルックアヘッ
    ド素子(26)とで構成され、 前記暗号法は: 2つの大きな素数pとqとさらに大きな第3の数Eとを
    選ぶ段階と; pとqとの積N=p・qを求める段階と; 暗号化すべき通信文を等しい長さでNよりも小さい数値
    を持つ一連の要素Piに変換する段階と; これら各要素Piをべき(E)乗し、続いてモジューロN
    を既約化するように演算して数Ci=Pi EmodNを得るイン
    ボリューション演算により暗号化する段階と; 上記インボリューション段階を一連の乗算をする手段に
    より実行する段階と; Nについて剰余環内でモジューロ既約化演算を実行する
    段階と; 該演算を個別の段階に分けることにより上記乗算を実行
    し、乗算は本質的に一連の加算に変換されるようにする
    段階と; 古典的な除算アルゴリズムによりモジューロ既約化演算
    を一連の減算として実行する段階であって、第1のルッ
    クアヘッド技術を用いて除算がされ、乗算もまた第2の
    ルックアヘッド技術によって実行される段階と; で成り、 前記暗号法において、ルックアヘッドアルゴリズムを用
    いて加算及び減算もしくはそのいずれかの最大必要数を
    低減することとし、 モジューロ既約化演算のための該第1のルックアヘッド
    技術は、第1のルックアヘッド技術の使用により飛び越
    される演算数についての確率論上の期待値が、乗算用の
    第2のルックアヘッド技術の使用により飛び越される演
    算数についての確率上の期待値と正しく一致するように
    選ばれることとし、 該第2のルックアヘッド技術が該第1のルックアヘッド
    技術と結合しないようにし、それによって2つのルック
    アヘッド技術の各々がそれぞれシフト量szもしくはsnを
    生成する段階を含み、 乗算に対する中間結果Z又はモジューロNがそれぞれ1
    サイクルでシフトされるビット数を該シフト量sz又はsn
    がそれぞれ表すようにし、かつ中間結果Zがszビットだ
    け絶対的にシフトされ、モジューロNが中間結果Zに対
    してsnビットだけシフトされるようにすることとし、 乗算段階及びモジューロ既約化段階の加算及び減算がそ
    れぞれ3オペランド加算である単一演算に組入れられ、
    それにより3オペランドは各段階で加算され、 またこの3オペランド加算が2つの部分に分けられてい
    て、それによって前記2つの部分の第1のものが選ばれ
    てオペランドA,B,及びCの各2値位置での和が形成され
    ることと、これらビットの和が0と3の間にあり、この
    和が2値であって、2つのビットを表すことができて、
    各前記2値位置で前記2つの和ビットから2つの新しい
    数XとYとが生成されるようにすることとを含み、各前
    記和の最小ビットが数Yを作り、また各前記和の最大ビ
    ットが数Xを作り、さらに数Yの最大ビットは0に、ま
    た数Xの最小ビットは0に設定されるようにし、それに
    より前記数XとYとがキャリィとともに一緒に既知の方
    法で加算されるように前記2つの部分の第2の部分を選
    び、かつ予め貯えられた信号により次のサイクルのため
    の正規の加算論理が準備される時点まで、前記第1の部
    分のビット加算がキャリィなしで遂行されるようにし、 さらに、前記加算は a)長い大きい数X及びYを小さな区分に分解して個別
    のブロック(32)で処理する段階と; b)該ブロック(32)内のキャリィビットを既知のキャ
    リィ・ルックアヘッド(CLA)法に従って同時に計算す
    る段階と; c)与えられたブロックから次のブロックへ、該2つの
    ブロックを除く近隣のブロックのキャリィビットがそれ
    によって影響を受けない場合には、キャリィビットを送
    る段階と; を備え、 前記ブロック(32)によって励起される断続器(62)を
    用意し、該断続器はキャリィビットが近隣のブロックを
    越えて影響を持つ場合には、キャリィビットが計算され
    かつ処理されるのに使用できる必要時間を作るように割
    込みをかけることとし、 RSA法の公開鍵符号化方法により、通信文を暗号化し、
    かつ暗号を前記基本セルの部品が並列に動作し、 前記基本セル(10)の複数のブロック(28)をより大き
    なブロック(32)に統合する段階において、キャリィは
    1つのブロックから次へ直列に送られ、該より大きなブ
    ロック(32)のキャリィルックアヘッド(CLA)素子(3
    0)はツリー状の構造に構成され、キャリィがブロック
    の各上位のCLA素子(30)で同時に計算されることによ
    り、キャリィ計算からの信号が該断続器(62)を励起で
    きるようにしてCLA素子(30)から到来する信号を該断
    続器(62)が処理し、かつより大きなブロック(32)の
    CLA素子が信号を放出するときは、ほぼ8サイクルにわ
    たってタイミング信号に割込みをかけるようにされてい
    ることを特徴とする暗号プロセッサ。 4.RSA法の公開鍵符号化方法により、通信文を暗号化
    し、かつ暗号を解くための暗号法を実行する暗号プロセ
    ッサであって、 前記暗号プロセッサは、 個別の動作を計算によって遂行するための一連の専用の
    基本セル(10)と; 複数の該基本セル(10)が段階となって各々が構成され
    る複数の統合されたブロックと; 各ブロック(28,32)と関係する、ツリー状の階層を持
    つキャリイルックアヘッド(CLA)素子(30)と; 該キャリィルックアヘッド(CLA)素子(30)により制
    御され、キャリィルックアヘッド素子(30)から到来す
    る信号を処理し、かつほぼ8サイクルにわたってタイミ
    ング信号に割込みをかけて、2つの数の加算のための時
    間がこれらの数の長さとは独立するようにし、かつ各ブ
    ロック内部でキャリィ演算が並列に実行されるようにす
    る断続器(62)と; を備え、 前記基本セル(10)が、 乗数Mのためのレジスタ(12)と; コードレジスタ(14)と; データレジスタ(16)と; 計算時には複数のモジューロNを含み、かつその記憶機
    能に加えて、モジューロNを2つの方向のうちの1つの
    方向の複数の位置に単一の段階でシフトすることができ
    るアップ・ダウンシフトレジスタ(18)と; キャリィビットなしで、3つのオペランドの加算演算の
    第1の段階を実行するビット加算器(22)と; 該ビット加算器に接続され、該ビット加算器(22)で得
    られた2つの数を加算して、結果を中間結果Zとして記
    憶するための全加算器(24)と; キャリィビットを計算するためのキャリィルックアヘッ
    ド素子(26)と、 該暗号プロセッサは前記基本セル(10)の機能を制御す
    るためのマルチモド(mult−mod)制御ユニット(36)
    を備え、該マルチモド(mult−mod)制御部は、 モジューロ形成演算用のシフト論理部(52)と; 該全加算器(24)の中間結果Zの最上位ビットとモジュ
    ーロNの1/3,1/6,1/12などの最上位ビットとを、互いに
    並列に比較する比較器(38)と; 該乗算用のシフト論理部(50)に接続され、中間結果Z
    のシフト量を制限する第1の制限器(54)と; 必要な場合には前記アップダウンシフトレジスタ(18)
    のシフト量を制限するためのモジューロ形成演算用の第
    2の制限器(56)と; レジスタ(12)のビット数を書き留める第1のカウンタ
    (58)と; バッファ(34)内のモジューロNの位置を書き留める第
    2のカウンタ(60)と; から成り、 前記暗号法は: 2つの大きな数pとqとさらに大きな第3の数Eとを選
    ぶ段階と; pとqとの積N=p・qを求める段階と; 暗号化すべき通信文を等しい長さでNよりも小さい数値
    を持つ一連の要素Piに変換する段階と; これら各要素Piをべき(E)乗し、続いてモジューロN
    を既約化するように演算して数Ci=Pi EmodNを得るイン
    ボリューション演算により暗号化する段階と; 上記インボリューション段階を一連の乗算をする手段に
    より実行する段階と; Nについて剰余環内でモジューロ既約化演算を実行する
    段階と; 該演算を個別の段階に分けることにより上記乗算を実行
    し、乗算は本質的に一連の加算に変換されるようにする
    段階と; 古典的な除算アルゴリズムによりモジューロ既約化演算
    を一連の減算として実行する段階であって、第1のルッ
    クアヘッド技術を用いて除算がされ、乗算もまた第2の
    ルックアヘッド技術によって実行される段階と; で成り、 前記暗号法において、ルックアヘッドアルゴリズムを用
    いて加算及び減算もしくはそのいずれかの最大必要数を
    低減することとし、 モジューロ既約化演算のための該第1のルックアヘッド
    技術は、第1のルックアヘッド技術の使用により飛び越
    される演算数についての確率論上の期待値が、乗算用の
    第2のルックアヘッド技術の使用により飛び越される演
    算数についての確率上の期待値と正しく一致するように
    選ばれることとし、 該第2のルックアヘッド技術が該第1のルックアヘッド
    技術と結合しないようにし、それによって2つのルック
    アヘッド技術の各々がそれぞれシフト量szもしくはsnを
    生成する段階を含み、 乗算に対する中間結果Z又はモジューロNがそれぞれ1
    サイクルでシフトされるビット数を該シフト量sz又はsn
    がそれぞれ表すようにし、かつ中間結果Zがszビットだ
    け絶対的にシフトされ、モジューロNが中間結果Zに対
    してsnビットだけシフトされるようにすることとし、 乗算段階及びモジューロ既約化段階の加算及び減算がそ
    れぞれ3オペランド加算である単一演算に組入れられ、
    それにより3オペランドは各段階で加算され、またこの
    3オペランド加算が2つの部分に分けられていて、それ
    によって前記2つの部分の第1のものが選ばれてオペラ
    ンドA,B,及びCの各2値位置での和が形成されること
    と、これらビットの和が0と3の間にあり、この和が2
    値であって、2つのビットを表すことができて、各前記
    2値位置で前記2つの和ビットから2つの新しい数Xと
    Yとが生成されるようにすることとを含み、各前記和の
    最小ビットが数Yを作り、また各前記和の最大ビットが
    数Xを作り、さらに数Yの最大ビットは0に、また数X
    の最小ビットは0に設定されるようにし、それにより前
    記数XとYとがキャリィとともに一緒に既知の方法で加
    算されるように前記2つの部分の第2の部分を選び、か
    つ予め貯えられた信号により次のサイクルのための正規
    の加算論理が準備される時点まで、前記第1の部分のビ
    ット加算がキャリィなしで遂行されるようにし、 さらに、前記加算は a)長い大きい数X及びYを小さな区分に分解して個別
    のブロック(32)で処理する段階と; b)該ブロック(32)内のキャリィビットを既知のキャ
    リィ・ルックアヘッド(CLA)法に従って同時に計算す
    る段階と; c)与えられたブロックから次のブロックへ、該2つの
    ブロックを除く近隣のブロックのキャリィビットがそれ
    によって影響を受けない場合には、キャリィビットを送
    る段階と; を備え、 前記ブロック(32)によって励起される断続器(62)を
    用意し、該断続器はキャリィビットが近隣のブロックを
    越えて影響を持つ場合には、キャリィビットが計算され
    かつ処理されるのに使用できる必要時間を作るように割
    込みをかけることとし、 RSA法の公開鍵符号化方法により、通信文を暗号化し、
    かつ暗号を前記基本セルの部品が並列に動作し、 前記基本セル(10)の複数のブロック(28)をより大き
    なブロック(32)に統合する段階において、キャリィは
    1つのブロックから次へ直列に送られ、該より大きなブ
    ロック(32)のキャリィルックアヘッド(CLA)素子(3
    0)はツリー状の構造に構成され、キャリィがブロック
    の各上位のCLA素子(30)で同時に計算されることによ
    り、キャリィ計算からの信号が該断続器(62)を励起で
    きるようにしてCLA素子(30)から到来する信号を該断
    続器(62)が処理し、かつより大きなブロック(32)の
    CLA素子が信号を放出するときは、ほぼ8サイクルにわ
    たってタイミング信号に割込みをかけるようにされてい
    ることを特徴とする暗号プロセッサ。 5.前記暗号プロセッサはほぼ20ビットの長さを持つバ
    ッファ(34)として構成された基本ブロックを備え、 乗算用の前記ルックアヘッドアルゴリズムをモジューロ
    既約化成演算用のルックアヘッドアルゴリズムと結合し
    ないようにし、Nが前記バッファ(34)内に浸透し、前
    記マルチモド制御部(36)が、前記制限器(56)を経由
    して、モジューロNがバッファの上又は下の境界のいず
    れからも確実に送出されないようにすることを特徴とす
    る特許請求の範囲第4項記載の暗号プロセッサ。
JP62048651A 1986-03-05 1987-03-03 暗号法及びこの方法の実施のための暗号プロセツサ Expired - Lifetime JP3014391B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE3607646.5 1986-03-05
DE3607646 1986-03-05

Publications (2)

Publication Number Publication Date
JPS6318387A JPS6318387A (ja) 1988-01-26
JP3014391B2 true JP3014391B2 (ja) 2000-02-28

Family

ID=6295816

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62048651A Expired - Lifetime JP3014391B2 (ja) 1986-03-05 1987-03-03 暗号法及びこの方法の実施のための暗号プロセツサ

Country Status (5)

Country Link
US (1) US4870681A (ja)
EP (1) EP0239749B1 (ja)
JP (1) JP3014391B2 (ja)
AT (1) ATE55033T1 (ja)
DE (1) DE3763872D1 (ja)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
FR2613861B1 (fr) * 1987-04-10 1990-11-30 Pailles Jean Claude Procede et controleur pour cryptographier un message selon un algorithme a cle publique
US5095458A (en) * 1990-04-02 1992-03-10 Advanced Micro Devices, Inc. Radix 4 carry lookahead tree and redundant cell therefor
US5070528A (en) * 1990-06-29 1991-12-03 Digital Equipment Corporation Generic encryption technique for communication networks
CA2044860A1 (en) * 1990-06-29 1991-12-30 Amar Gupta Cryptography processor and method with optional status endcoding
IL97413A (en) * 1991-03-04 1995-06-29 Fortress U & T 2000 Ltd Microcircuit for the implementation of rsa algorithm and ordinary and modular arithmetic in particular exponentiation with large operands
US5148479A (en) * 1991-03-20 1992-09-15 International Business Machines Corp. Authentication protocols in communication networks
US5289397A (en) * 1991-07-22 1994-02-22 Itt Corporation High-speed modulo exponentiator device
ATE183315T1 (de) * 1991-09-05 1999-08-15 Canon Kk Verfahren und gerät zum verschlüsseln und entschlüsseln von kommunikationsdaten
US5274707A (en) * 1991-12-06 1993-12-28 Roger Schlafly Modular exponentiation and reduction device and method
JPH06175583A (ja) * 1992-12-09 1994-06-24 Nec Corp べき乗剰余演算回路
JPH0720778A (ja) * 1993-07-02 1995-01-24 Fujitsu Ltd 剰余計算装置、テーブル作成装置および乗算剰余計算装置
KR950015177B1 (ko) * 1993-12-06 1995-12-23 한국전기통신공사 사전 계산 테이블을 이용한 모듈로 리덕션 방법
AU728942B2 (en) * 1995-06-30 2001-01-18 Canon Kabushiki Kaisha A communication apparatus and a communication system
FR2737369A1 (fr) * 1995-07-26 1997-01-31 Trt Telecom Radio Electr Systeme de communication de messages cryptes selon un procede de type r.s.a.
US6381341B1 (en) * 1996-05-16 2002-04-30 Digimarc Corporation Watermark encoding method exploiting biases inherent in original signal
US6141422A (en) * 1997-06-04 2000-10-31 Philips Electronics North America Corporation Secure cryptographic multi-exponentiation method and coprocessor subsystem
US6339824B1 (en) * 1997-06-30 2002-01-15 International Business Machines Corporation Method and apparatus for providing public key security control for a cryptographic processor
DE69840959D1 (de) * 1997-12-17 2009-08-20 Nippon Telegraph & Telephone Verschlüsselungs- und Entschlüsselungsvorrichtungen für Kryptosysteme mit öffentlichem Schlüssel und Aufzeichnungsmedium mit darauf gespeicherten zugehörigen Verarbeitungsprogrammen.
US6091821A (en) * 1998-02-12 2000-07-18 Vlsi Technology, Inc. Pipelined hardware implementation of a hashing algorithm
US6751735B1 (en) 1998-03-23 2004-06-15 Novell, Inc. Apparatus for control of cryptography implementations in third party applications
US6701433B1 (en) 1998-03-23 2004-03-02 Novell, Inc. Method and apparatus for escrowing properties used for accessing executable modules
US6532451B1 (en) 1998-03-23 2003-03-11 Novell, Inc. Nested strong loader apparatus and method
US6615350B1 (en) 1998-03-23 2003-09-02 Novell, Inc. Module authentication and binding library extensions
US6404890B1 (en) * 1998-04-08 2002-06-11 Citibank, Na Generating RSA moduli including a predetermined portion
US7076061B1 (en) 2000-02-07 2006-07-11 Citibank, N.A. Efficient and compact subgroup trace representation (“XTR”)
US20050213758A1 (en) * 2000-02-07 2005-09-29 Lenstra Arjen K Efficient and compact subgroup trace representation ("XTR")
DE10061997A1 (de) * 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
DE10107376A1 (de) * 2001-02-16 2002-08-29 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren und Rechenwerk zum modularen Multiplizieren
DE10111987A1 (de) 2001-03-13 2002-09-26 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren
DE10142155C1 (de) * 2001-08-29 2002-05-23 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren
KR100436814B1 (ko) * 2001-12-20 2004-06-23 한국전자통신연구원 아이씨카드용 알에스에이 암호 연산 장치
DE10215785A1 (de) * 2002-04-10 2003-10-30 Infineon Technologies Ag Rechenwerk und Verfahren zum Addieren
DE10224742B4 (de) * 2002-06-04 2004-07-08 Infineon Technologies Ag Datenverarbeitungsschaltung und Verfahren zum Übertragen von Daten
DE10260655B3 (de) * 2002-12-23 2004-06-24 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen einer Multiplikation mit einer Verschiebung des Multiplikanden, insbesondere bei der kryptographischen Berechnung
DE10260660B3 (de) * 2002-12-23 2004-06-09 Infineon Technologies Ag Modulare Multiplikation mit paralleler Berechnung der Look-Ahead-Parameter u.a. bei der kryptographischen Berechnung
US20040161553A1 (en) 2003-02-10 2004-08-19 Konica Minolta Holdings, Inc. Ink jet recording medium and ink jet recording medium preparing method
US20040228987A1 (en) 2003-05-12 2004-11-18 Konica Minolta Holdings, Inc. Ink-jet recording sheet and production method of the same
US20040247803A1 (en) 2003-06-03 2004-12-09 Konica Minolta Holdings, Inc. Ink-jet recording paper and a method for producing ink-jet recording paper
EP1496645A1 (fr) * 2003-07-07 2005-01-12 Nagracard S.A. Méthode d'encryption RSA d'une donnée de valeur imprévisible
US7313786B2 (en) * 2003-11-26 2007-12-25 International Business Machines Corporation Grid-enabled ANT compatible with both stand-alone and grid-based computing systems
US7725715B2 (en) * 2005-02-24 2010-05-25 Access Business Group International Llc System and method for three-phase data encryption
CN101243388A (zh) * 2005-08-19 2008-08-13 Nxp股份有限公司 用于在加密计算中执行求逆运算的电路结构和方法
DE102006025673B9 (de) 2005-10-28 2010-12-16 Infineon Technologies Ag Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls
DE102006025677B4 (de) * 2005-10-28 2020-03-12 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge
DE102006025713B9 (de) * 2005-10-28 2013-10-17 Infineon Technologies Ag Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE102006025569A1 (de) * 2005-10-28 2007-05-03 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen einer Multiplikations-Additions-Operation und zum Berechnen eines Ergebnisses einer modularen Multiplikation
US7929707B1 (en) * 2007-09-06 2011-04-19 Elcomsoft Co. Ltd. Use of graphics processors as parallel math co-processors for password recovery
EP2326042B1 (fr) * 2009-11-18 2013-04-03 STMicroelectronics (Rousset) SAS Procédé de détection d'une attaque par injection de fautes
CN102662628B (zh) * 2012-03-23 2015-03-04 山东大学 Rsa加密算法的指令优化处理器
CN117520970B (zh) * 2024-01-05 2024-03-29 同盾科技有限公司 基于多方安全计算的符号位确定方法、装置、系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3604910A (en) * 1967-08-31 1971-09-14 Robert W Kearns Parallel comparator with simultaneous carry generation and an analog output
US4041296A (en) * 1975-12-03 1977-08-09 International Business Machines Incorp. High-speed digital multiply-by-device
US4405829A (en) * 1977-12-14 1983-09-20 Massachusetts Institute Of Technology Cryptographic communications system and method
US4351982A (en) * 1980-12-15 1982-09-28 Racal-Milgo, Inc. RSA Public-key data encryption system having large random prime number generating microprocessor or the like
US4442498A (en) * 1981-04-23 1984-04-10 Josh Rosen Arithmetic unit for use in data processing systems
US4514592A (en) * 1981-07-27 1985-04-30 Nippon Telegraph & Telephone Public Corporation Cryptosystem
DE3138698A1 (de) * 1981-09-29 1983-04-07 Siemens AG, 1000 Berlin und 8000 München Verfahren zur potenzierung grosser binaerzahlen in einer restklasse modulo n, insbesondere zur verschluesselung und entschluesselung digital dargestellter nachrichten
EP0085130A1 (en) * 1982-02-02 1983-08-10 Omnet Associates Method and apparatus for maintaining the privacy of digital messages conveyed by public transmission
US4625076A (en) * 1984-03-19 1986-11-25 Nippon Telegraph & Telephone Public Corporation Signed document transmission system
US4633036A (en) * 1984-05-31 1986-12-30 Martin E. Hellman Method and apparatus for use in public-key data encryption system
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

Also Published As

Publication number Publication date
JPS6318387A (ja) 1988-01-26
DE3763872D1 (de) 1990-08-30
EP0239749A3 (en) 1988-12-28
EP0239749A2 (de) 1987-10-07
EP0239749B1 (de) 1990-07-25
US4870681A (en) 1989-09-26
ATE55033T1 (de) 1990-08-15

Similar Documents

Publication Publication Date Title
JP3014391B2 (ja) 暗号法及びこの方法の実施のための暗号プロセツサ
US7831650B2 (en) Method for modular multiplication
US8977668B2 (en) Calculating unit for reducing an input number with respect to a modulus
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
JP2008293034A (ja) タイミング攻撃を阻止する標準化されたモジュラべき乗を計算することにより復号メカニズムを実行する方法と装置
JP4783382B2 (ja) モンゴメリ法用乗算剰余計算装置
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
US20020126838A1 (en) Modular exponentiation calculation apparatus and modular exponentiation calculation method
US7480691B2 (en) Arithmetic device for multiple precision arithmetic for Montgomery multiplication residue arithmetic
Welschenbach Cryptography in C and C++
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
US8364740B2 (en) Device and method for calculating a result of a modular multiplication with a calculating unit smaller than the operands
JP2000010479A (ja) モンゴメリ・リダクション装置及び記録媒体
US6609141B1 (en) Method of performing modular inversion
US7113593B2 (en) Recursive cryptoaccelerator and recursive VHDL design of logic circuits
JP2005055488A (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
CN108075889B (zh) 一种降低加解密运算时间复杂度的数据传输方法及系统
KR20040055523A (ko) GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치
JP5179933B2 (ja) データ処理装置
Saheed Effective Rivest Shamir Adleman Cryptosystem Based on Chinese Remainder Theorem
CN117332864A (zh) 变量模加运算器、量子点加运算器及密文解密方法
Wang Accelerating cryptosystems on hardware platforms
KR20030003435A (ko) 암호시스템에 사용하기 위한 최적의 역원을 구하기 위한방법 및 장치
JP2006309201A (ja) 楕円曲線暗号における多重スカラー倍計算装置、署名検証装置、及び、それらのプログラム。
JP2003316262A (ja) 乗算剰余演算方法及び演算装置

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term