JP2001510912A - 直接埋め込み方式による高速楕円曲線暗号化の方法と装置 - Google Patents

直接埋め込み方式による高速楕円曲線暗号化の方法と装置

Info

Publication number
JP2001510912A
JP2001510912A JP2000503629A JP2000503629A JP2001510912A JP 2001510912 A JP2001510912 A JP 2001510912A JP 2000503629 A JP2000503629 A JP 2000503629A JP 2000503629 A JP2000503629 A JP 2000503629A JP 2001510912 A JP2001510912 A JP 2001510912A
Authority
JP
Japan
Prior art keywords
computer
clue
program code
text
elliptic
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.)
Granted
Application number
JP2000503629A
Other languages
English (en)
Other versions
JP3862500B2 (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 JP2001510912A publication Critical patent/JP2001510912A/ja
Application granted granted Critical
Publication of JP3862500B2 publication Critical patent/JP3862500B2/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/727Modulo N arithmetic, with N being either (2**n)-1,2**n or (2**n)+1, e.g. mod 3, mod 4 or mod 5
    • 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/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • 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/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3249Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Algebra (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 本発明は、平文を直接楕円曲線で暗号化する手段として楕円曲線代数におけるx座標の2次のみの曖昧性を利用する。ここで「直接埋め込み」と呼んだ場合に、平文を直接楕円曲線上に暗号化する方法。直接埋め込みを実行すると、実際の平文は「+」または「−」x座標として埋め込まれる。送信側は、付加ビットを使用して+を使用するのかそれとも−を使用するのかを指定し、受信側が適宜復号化できるようにする。動作時に、2つの点P1 +とP1 -がそれぞれ曲線E+およびE-上にあるような2つの公開初期x座標がある。長さがqビット以下のテキストxtextのパーセルを選択する。xtextを含む曲線(E+またはE-)を決定する。乱数rを選択し、受信側の公開鍵を使用して座標xqを生成する。楕円加算を座標xqとテキストのパーセルとともに使用し、メッセージ座標xmを生成する。乱数としかるべき曲線E+/−からの点Pを使用して手がかりxcを生成する。xtextについて成立する符号を決定し、これをgとする。メッセージ座標xm、手がかりxc、および符号gを3つ組として受信側に送信する。受信側は手がかりxcと秘密鍵を使用して、座標xqを生成する。符号gと座標xqを使用して、テキストを復元することができる。

Description

【発明の詳細な説明】
【0001】 これは、1991年9月17日出願の米国特許出願第761276号(現在は
米国特許第5159632号として発行されている)の継続出願である1992
年10月2日出願の米国特許出願第955479号(現在は米国特許第5271
061号として発行されている)の継続出願である1993年12月14日出願
の米国特許出願第167408号の一部継続出願である米国特許出願第4842
64号(現在は米国特許第5581616号として発行されている)の継続出願
である米国特許出願第758688号の一部継続出願である。
【0002】 発明の背景 1.発明の分野 本発明は暗号化システムの分野に関するものである。
【0003】 2.背景技術 暗号化システムは、媒体上で送信側から受信側へメッセージを送信するための
システムであって、メッセージが「安全」である、つまり対象となる受信側のみ
がメッセージを復元できるような媒体を使用する。暗号化システムは、「平文」
と呼ばれるメッセージを「暗号文」と呼ばれる暗号化形式に変換する。暗号化は
、「暗号鍵」つまり鍵を使用してメッセージを操作または変換することにより実
行される。受信側は、暗号鍵または鍵を使用して操作または変換プロセスを反転
することにより、メッセージを「復号化」する、つまり暗号文から平文に変換す
る。送信側と受信側のみが暗号鍵を知っている限り、このような暗号化された送
信は安全である。
【0004】 「古典的」暗号システムは、暗号化情報を使用して復号化情報を決定すること
ができる暗号システムである。セキュリティのために、古典的暗号システムでは
暗号化鍵を秘匿し、安全なチャネル上でシステムのユーザに送る必要がある。秘
密宅配便、盗聴防止機能付き電話伝送回線などの安全チャネルは多くの場合、非
実用的で、高価である。
【0005】 安全暗号化鍵を交換する難しさをなくしたシステムのことを「公開鍵暗号化」
と呼んでいる。定義により、公開鍵暗号システムは、メッセージを暗号化する方
法を知っているだけでは計算に法外に長い時間をかけないと暗号化鍵を使用して
復号化鍵を見つけられないという特性を持つ。暗号化機能としては、暗号化鍵が
判明したら、暗号化機能を比較的容易に計算できるようなものを選択する。ただ
し、暗号化変換機能の逆の計算は困難であるか、または計算上実行不可能である
。このような機能を「一方向機能」または「トラップドア機能」と呼ぶ。公開鍵
暗号システムでは、鍵に関するある種の情報は公開される。この情報は、安全で
ない方法で公開または送信されることがあり、またそうされることが多い。さら
に、鍵に関するある種の情報は秘密にされる。この情報は、プライバシー保護の
ため安全なチャネル上で配布することができる(あるいは、プライバシー確保の
ためローカル・ユーザが作成することもできる)。
【0006】 代表的公開鍵暗号化システムのブロック図を図1に示す。破線100内のブロ
ックで表される送信側が、平文メッセージPtxtを、破線115内のブロック
図で表される受信側に送信する。平文メッセージは、暗号文メッセージCに暗号
化され、何らかの送信媒体上で送信され、受信側115によって復号化され、平
文メッセージPtxtが再現される。
【0007】 送信側100は、暗号化デバイス101、安全鍵ジェネレータ102、および
鍵ソース103を備える。鍵ソース103は、回線104を介して安全鍵ジェネ
レータ102に接続されている。安全鍵ジェネレータ102は、回線105を介
して暗号化デバイス101に結合されている。暗号化デバイスは、回線106上
に暗号文出力Cを送る。安全鍵ジェネレータ102は、回線107上に鍵出力を
出す。この出力は、暗号文メッセージ106とともに、送受信機109に送られ
る。送受信機109は、たとえば、モデムなどのコンピュータ送信デバイスや、
無線周波送信信号を送信するためのデバイスであってもよい。送受信機109は
安全でないチャネル110上で安全鍵と暗号文メッセージを受信側の送受信機1
11に出力する。
【0008】 受信側115も、暗号化デバイス116、安全鍵ジェネレータ117、および
鍵ソース118を備える。鍵ソース118は、回線119上で安全鍵ジェネレー
タ117に結合されている。安全鍵ジェネレータ117は、回線120上で暗号
化デバイス116に結合されている。暗号化デバイス116は、回線121を介
して送受信機111に結合されている。安全鍵ジェネレータ117は、回線12
2および123上で送受信機111に結合されている。
【0009】 動作中に、送信側100には、受信側115に送信する平文メッセージPtx
tがある。送信側100と受信側115は両方とも、それぞれ、同じ暗号化方式
を使用する暗号化デバイス101と116を備える。暗号化デバイスに実装でき
る適当な暗号システムがいくつかある。たとえば、データ暗号化標準(DES)
や他の適当な暗号化方式を実装することができる。
【0010】 送信側と受信側はさらに、それぞれ、安全鍵ジェネレータ102および117
を備える。これらの安全鍵ジェネレータは、複数のよく知られている公開鍵交換
方式のうちの1つを実装している。後述するこれらの方式は、Diffie−H
ellman方式、RAS方式、Massey−Omura方式、およびElg
amal方式を含む。
【0011】 送信側100は、鍵ソース103を使用して秘密鍵を生成するが、この鍵ソー
スは乱数ジェネレータであってよい。秘密鍵が安全鍵ジェネレータ102に提供
され、これを使用して暗号化鍵eKを生成する。暗号化鍵eKは回線105上で暗
号化デバイスに送信され、これを使用して、平文メッセージPtxtを暗号化し
、回線106上に用意される暗号文メッセージCを生成して送受信機109に送
る。安全鍵ジェネレータ102はさらに、安全鍵を鍵ソース103から暗号化鍵
K に変換するために使用される情報も送信する。この情報は、秘密鍵を知らず
にこの情報から暗号化鍵を再現するのは実際上不可能なので、安全でないチャネ
ル上で送信することができる。
【0012】 受信側115は、鍵ソース118を使用して、秘密鍵および安全鍵119を生
成する。この秘密鍵119は、復号化鍵DK を生成するために送信側100によ
って用意される鍵生成情報とともに安全鍵ジェネレータ117で使用される。こ
の復号化鍵DK は、回線120上で暗号化デバイス116に送られ、そこで、こ
れを使用して暗号文メッセージを復号化し、元の平文メッセージを再現する。
【0013】 Diffie−Hellman方式 DiffieとHellmanの論文「New Directions in
Cryptography」、IEEE Trans.Inform.The
ory、vol.IT−22、pp.644−654、1976年11月(「D
H」方式)で公開鍵交換の方式が述べられている。DH方式では、離散指数およ
び対数関数に基づく公開鍵システムを記述している。「q」を素数、「a」を原
始元とすると、1≦X、Y≦(q−1)の範囲のXとYについて1対1の関係が
あり、有限体上でY=aX mod q、かつX=loga Yを満たす。第1の 離散指数関数は与えられたaおよびXについて容易に評価できるため、公開鍵Y
の計算に使用される。Diffie−Hellmanシステムのセキュリティは
、与えられたXおよびYについて離散対数関数X=logaYを解く汎用の高速 アルゴリズムが知られていないという事実に依っている。
【0014】 Diffie−Hellmanシステムでは、公開鍵のディレクトリが公開さ
れるか、もしくは何らかの手段で一般に利用できるようにされる。与えられた公
開鍵はユーザにしか知られていない関連付けられた秘密鍵に依存している。しか
し、公開鍵から秘密鍵を決定することは実質的に不可能である。たとえば、送信
側が「myPub」という公開鍵を持つとする。受信側は「theirPub」
という公開鍵を持つとする。送信側はさらに、「myPri」という秘密鍵を持
つ。同様に、受信側も、「theirPri」という秘密鍵を持つ。
【0015】 公開鍵システムでは多数の要素が公に知られている。Diffie−Hell
manシステムの場合には、これらの要素は、素数pと原始元gを含む。pとg
は両方とも、公に知られている。公開鍵を生成するには、(mod p)に関し てgに秘密鍵指数を累乗する。たとえば、送信側の公開鍵myPubは次の式で
生成される。 myPub=gmyPri(mod p) 式(1)
【0016】 同様に、受信側の公開鍵は次の式で生成される。 theirPub=gtheirPri(mod p) 式(2)
【0017】 公開鍵は、指数演算と剰余演算(modulo arithmetic) を使って容易に作成でき
る。前記のように、公開鍵は一般の人々が容易に入手することができる。つまり
、公開され、配布されている。さらに、安全でないチャネル上で送信することも
できる。公開鍵が知られていても、離散対数問題を解くのは困難であるため、逆
関数によって秘密鍵を計算することは非常に難しい。
【0018】 図2は、Diffie−Hellman型システムを使用した鍵交換の例の流
れ図である。ステップ201で、素数pを選択している。この素数pは、公開さ
れている。次に、ステップ202で、原始根gを選択している。この数gも公に
知られている。ステップ203で、暗号化鍵eKを生成し、受信側の公開鍵(t heirPub)を底、送信側の秘密鍵(myPri)を指数とするべき乗を計
算する。つまり、次のようになる。 (theirPub)myPri(mod p) 式(3)
【0019】 すでにtheirPubは、gtheirPri(mod p)に等しいと定義してい
る。したがって、式(3)は次の式で求められる。 (gtheirPrimyPri(mod p) 式(4)
【0020】 この値が、平文メッセージを暗号化し、暗号文メッセージを作成するために使
用される暗号化鍵eKである。メッセージを暗号文にする、あるいは暗号化する 特定の方法は、よく知られているいくつかの方法のうちの1つであってよい。ど
の暗号化メッセージを使用するにせよ、暗号鍵は式4で計算した値である。その
後ステップ204で、暗号文メッセージが受信側に送信される。
【0021】 ステップ205で、受信側は、送信側の公開鍵(myPub)を底、受信側の
秘密鍵(theirPri)を指数とするべき乗を計算して次のように復号化鍵
Kを生成する。 DK=(myPub)theirPri(mod p) 式(5)
【0022】 式1から、myPubはgmyPri(mod p)に等しい。したがって、 DK=(gmyPritheirPri(mod p) 式(6)
【0023】 (gABは(gBAに等しいので、暗号化鍵eKと復号化鍵DKは同じ鍵である
。これらの鍵を「一回の暗号パット」と呼ぶ。一回の暗号パットは、メッセージ
の暗号化および復号化に使用される鍵である。
【0024】 受信側は単に、ステップ206で平文メッセージを復元するために復号化鍵を
使用して変換アルゴリズムまたは暗号化方式の逆を実行するだけである。送信側
と受信側の両方が暗号化鍵の生成にその秘密鍵を使用しなければならないため、
他のユーザは暗号文メッセージを読んだり、復号化したりできない。ステップ2
05はステップ201〜204よりも前またはそれと同時に実行できることに注
意されたい。
【0025】 RSA Rivest、Shamir、およびAdelmanらの論文「On Dig
ital Signatures and Public Key Crypt
osystems」,Commum.Ass.Comput.Mach.,vo
l.21,pp.120−126,Feb.1978(「RSA」方式)では他
の公開鍵暗号システムを提案している。RSA方式は、非常に大きな2つの素数
を生成し、それらを掛け合わせることが簡単にできるという事実に基づいている
が、その結果を因数分解する、つまりその積から非常に大きな素数を求めること
はきわめて困難である。したがって積は、復号化鍵を効果的に構成する素数を損
なうことなく暗号化鍵の一部として公開することができる。
【0026】 RSA方式では、鍵生成アルゴリズムを使用して2つの大きな素数pおよびq
を選択し、それらを掛け合わせてn=pqを求める。数pおよびqは、数百桁の
長さになりうる。次に、Eulerの関数をφ(n)=(p−1)(q−1)と
して計算する(φ(n)は、1からnまでの範囲の整数値で、nと公約数を持た
ない)。φ(n)は0からn−1までの範囲の任意の整数aと、整数kについて
、akφ(n)+1=a(mod n)となる特性を持つ。
【0027】 1からφ(n)−1の範囲で、φ(n)との公約数を持たない乱数Eを選択す
る。乱数Eは、暗号化鍵であり、公開されている。そこで、2つの数の最大公約
数を計算するEuclidのアルゴリズムの拡張バージョンを使用してD=E-1 (mod φ(n))を簡単に計算できる。Dは復号化鍵であり、秘密にしてお
く。
【0028】 情報(E,n)を暗号化鍵として公開し、これを使って暗号化されていない平
文メッセージを暗号文メッセージに次のように変換する。まずメッセージをそれ
ぞれ0からn−1までの範囲の整数列として表す。Pをそのような整数とする。
次に、関係式C=PE(mod n)により対応する暗号文整数を与える。情報 (D,n)を復号化鍵として使用し、P=CD(mod n)を介して暗号文か ら平文を復元する。これらは、CD=PED=pkφ(n)+1=Pなので、逆変換であ る。
【0029】 MASSEY−OMURA Massey−Omura暗号システムは、米国特許第4567600号に記
述されている。Massey暗号システムでは、有限体Fqを選択する。体Fq
固定であり、公に知られている体である。送信側と受信側はそれぞれ最大公約数
G.C.D.(e,q−1)=1となるような0からq−1の範囲の乱数整数e
を選択する。次に、ユーザはEuclidアルゴリズムを使用してその逆D=e -1 (mod q−1)を計算する。したがって、De=1(mod q−1)と
なる。
【0030】 Massey−Omura暗号システムでは、安全な送信を実現するために3
つのメッセージを送信する必要がある。送信者Aは受信者BにメッセージPを送
信する。送信者Aは乱数eAを計算し、受信者Bは乱数eBを計算する。送信者は
まず、受信者に要素Pe Aを送信する。受信側はeA を知らないのでPを復元でき
ない。その代わりに、受信側はその要素を底、自分の秘密鍵eB を指数とするべ
き乗を計算し、第2のメッセージPe A e Bを送信側に返信する。次に、送信側はそ
の要素を底、DA-thを指数とするべき乗を計算してeAの効果を除去し、Pe B
受信者Bに返信する。受信者Bは、その要素を底、DB-thを指数とするべき乗を
計算してこのメッセージを読むことができる。
【0031】 ELGAMAL暗号システム ElGamal公開鍵暗号システムでは公に知られている有限体FqとF* q
要素gを使用する。それぞれのユーザは0>a>q−1の範囲の整数aを無作為
に選択する。整数aは秘密復号化鍵である。公開暗号化鍵はF* qの要素ga であ
る。Pで表されているメッセージをユーザAに送信するために、整数Kを無作為
に選択している。Fqの要素のペア、つまり(gK,PgaK)がAに送信される。
平文メッセージPtxtが鍵gaKによって暗号化される。値gK は平文メッセー
ジPtxtを決定するための受信側の「手がかり」である。しかし、この手がか
りは安全な復号化鍵「a」を知っている人しか使用できない。受信者Aは、「a
」を知っており、第1の要素gKを底、aを指数とするべき乗を計算して、(gKaを求め、その結果を第2の要素に除算することにより、このペアからメッセ ージPを復元する。
【0032】 楕円曲線 他に「楕円曲線」暗号システムと呼ばれる公開鍵暗号システムもある。楕円曲
線暗号システムは、有限体F上で定義された楕円曲線Eの点に基づいている。楕
円曲線暗号システムは、セキュリティに関して、離散対数問題を解くのが困難で
あるという事実に依存している。楕円曲線暗号システムの利点は、有限体を選択
するよりも楕円曲線を選択するほうが自由度が高いという点である。しかしなが
ら、楕円曲線暗号システムは、多量の計算を必要とすることからコンピュータ・
ベースの公開鍵交換システムでは広く使用されるにいたっていない。コンピュー
タ・ベースの楕円曲線暗号システムは、他のコンピュータ公開鍵交換システムに
比べて低速である。楕円曲線暗号システムは、「A Course in Nu
mber Theory and Cryptography」(Koblit
z著、1987年、Springer−Verlag、New York)に記
述がある。
【0033】 現在まで、楕円曲線方式は鍵交換と認証に使用されてきた。しかしながら、楕
円曲線代数を暗号化方式自体として使用するにあたって適当な方式が提案されて
いない。
【0034】 発明の要旨 本発明は、平文を直接、楕円曲線上の点として暗号化する手段を提示するもの
である。このような楕円曲線代数を使用する直接埋め込み法では、いわゆるDE
S段などの中間暗号生成器段を回避している。本発明で埋め込みが容易になるの
は、pをp=2q−C=3(mod 4)となる素数としたときに、有限体Fp
の楕円曲線パラメータ化を選択した結果である。整数qとCの選択では、pを素
数とし、高速な算術演算を実行できるようにC(負の場合もある)を十分小さく
とっている。
【0035】 平文を2つの関係する曲線のうちの1本の上の点として直接取り扱えるのは、
p=3(mod 4)となるように素数pを選択したからである。平文点を含む
曲線を選択するプロセスのことをここでは、「直接埋め込み」と呼ぶ。直接埋め
込みを使用すると、通常であれば込み入ったプロセスとなるKoblitz他の
非決定論的アルゴリズムを回避できる。
【0036】 2つの動作モードがあり、第1のモードは予備ステップとして第2のモードで
使用される。E+および捻れE-と表記された2つの楕円曲線、これらの曲線P1 + とP1 -上の初期点、それぞれ初期点と秘密鍵theirPriおよびourPr
iから楕円乗算で導かれるtheirPub+、theirPub-とourPu
+、ourPub-の両方に対する公開鍵点があると仮定する。0からp−1ま
での範囲の1パーセルの平文xtextを選択する。E+またはE-にx座標xtext
点が含まれているかどうかを調べる。乱数rを選択し、これを使用して、適切な
公開点theirPub-の楕円曲線乗算によりその曲線上に新しい座標xqを生
成する。楕円曲線上の2点の加算と減算の両方のx座標を計算できるが、どの結
果がどの演算に対応しているかを区別しないelliptic_add演算を仮
定する。点xtextとxqのelliptic_add演算を実行し、2つの結果 のうちの1つを選択して、暗号化メッセージ点xm(たとえば、xmはxtext+x q またはxtext−xqのいずれか)を生成する。xtextとxqに対してellip tic_addの逆演算を実行し、結果のどれにより演算が逆になるか(xm+ xqまたはxm−xqからxtextが明らかになる)を判別し、選択をgと表す。手 がかりxcを乱数rの楕円乗算と適切な初期公開点P±により構成する。3つ組 (xm ,g,xc)を受信側に送信する。受信側はxcとtheirPriの楕円
乗算によりxq を計算し、さらにxmとxqに対してelliptic_addを
計算し、gを使用して結果xmを選択する。xmのx座標は平文の元のパーセルで
ある。
【0037】 第2の動作モードを使用すると、たとえば第1のモードで2つの乱数rとsを
送信することにより送信者と受信者との間に同期乱数ジェネレータを設定してそ
れぞれの暗号化されたパーセルのサイズを縮小することができる。第1の同期し
ている手がかりは、送信側ではtheirPub± とourPriおよびrと の連続楕円乗算、受信側ではourPubとtheirPri± およびrとの 連続楕円乗算によって構成される。連続する手がかりxcluenは、手がかりxclu en-1 に対するelliptic_add演算の第1の結果と初期点P1 ±とsの 楕円乗算で構成される点を選択することで構成される。次に、第1にどの曲線に
点xtextが含まれているかを判別し、xtextとxcluen のelliptic_a
ddの第1の結果でxmを構成し、さらにxmおよびxcluen に対するellip
tic_addの結果におけるxm の位置をgと記することで平文のそれぞれの
パーセルを暗号化する。ペア(xm ,g)が受信側に送信される。受信側はどの
曲線がxmに属し、xmおよびxcluen に対してelliptic_addを実行
するかを判別し、gを使用して2つの結果から元のメッセージ・パーセルxm
選択する。
【0038】 発明の詳細な説明 楕円曲線暗号化方式について説明する。以下の説明では、本発明を完全に理解
できるように、ビット数、実行時間など多くの具体的内容を詳細に取りあげてい
る。しかし、本発明は、こうした具体的内容を示さなくても実施可能であること
は当業者には明白なことであろう。他に、本発明をわかりにくくするのを避ける
ため、よく知られている機能については詳細に説明しなかった。
【0039】 従来技術によるコンピュータ実装楕円曲線暗号化方式の欠点は、他の従来技術
によるコンピュータ実装暗号化方式に比べて満足な速度を達成できないという点
である。従来技術による楕円曲線暗号システムで必要なモジュロ演算と楕円曲線
代数演算は、除算の実行を必要とする。除算があると、コンピュータのCPU(
中央処理装置)の計算オーバーヘッドが増大する。CPUは、除算よりも、加算
と乗算を高速に、しかも少ない処理ステップで実行できる。したがって、従来技
術による楕円曲線暗号システムは、これまで、Diffie−Hellmanお
よびRSA方式などの他の従来技術による暗号システムに比べて実用的あるいは
望ましいものとなっていなかった。
【0040】 本発明は、明示的な除算を必要としない公開鍵交換の楕円曲線暗号システムを
実装する方法と装置を提供する。本発明の好ましい実施形態の利点は、数の高速
クラス、逆変換のないパラメータ化、FFT乗算剰余演算(multiply mod operat
ion)を実装することにより実現できる。
【0041】 楕円曲線代数 本発明で使用する楕円曲線は、 y2=x3+cx2+ax+b 式(7a) または −y2=x3+cx2+ax+b 式(7b) を満たす点(x,y)εFpkXFpkと「無限遠点」Aから成り立っている。
【0042】 上の式でb=0かつa=1と置いた、 ±y2=x3+cx2+x 式(7c) は、「Montgomeryパラメータ化」と呼ばれるもので、後で説明のため
使用し、 上の式でc=0とした、 ±y2=x3+ax+b 式(7d) は、Weierstrassパラメータ化と呼ばれるもので、これもまた後で説
明のため使用する。
【0043】 送信側(「our」)と受信側(「their」)の秘密鍵は整数であると仮
定し、 ourPri、theirPriεZ と表記する。
【0044】 次に、送信側と受信側の両方にパラメータを設定する。パラメータは、次のと
おりである。 p=2q−Cが高速クラス数(qは「ビット深さ」)となるようなq。値qは 、公に知られている値である。 Fpkが体となるpとk。素数pと整数kは公に知られている数である。 公に知られている、初期x座標である(x1,y1)εFpk。 すべて公に知られている、整数曲線定義パラメータである(a,b,c)εF p k。
【0045】 本発明では、「楕円乗算」と呼ばれ、記号「°」で表される演算を使用する。
楕円乗算の演算は文献でもよく知られており、本特許で、次のように式7dのW
eierstrassパラメータ化を使用して説明する。Montgomery
パラメータ化などの他のパラメータ化についても類似の規則が得られる。
【0046】 式7dの曲線上に初期点(X1,Y1)を定義する。整数nの集合について、式
n°(X1,Y1)は、加算および2倍の規則と呼ばれる、次の関係式により求め
られる点(Xn,Yn)を表す。 Xn+1=((Yn−Y1)/(Xn−X1))2−X1−Xn 式(8) Yn+1=−Y1+((Yn−Y1)/(Xn−X1))(X1−Xn+1) 式(9)
【0047】 (X1,Y1)=(Xn,Yn)のとき、使用する2倍関係は、 Xn+1=((3X1 2+a)/2Y12−2X1; 式(10) Yn+1=−Y1+((3X1 2+a)/2Y1)(X1−Xn+1) 式(11)
【0048】 算術演算は体Fpk上で実行されるので、すべての(mod p)が実行され る。特に、式8から11の除算は逆(mod p)を伴う。
【0049】 Weierstrass以外のパラメータ化は簡単に公式化できる。
【0050】 楕円曲線公開鍵交換 送信側と受信側は両方とも前記の同じパラメータのセットを使用する必要があ
る。送信側と受信側は共に、楕円曲線上の特定のx座標として共有暗号パッドを
生成する。
【0051】 以下の説明では、「自分」および「自分側」という用語で送信側を示す。「相
手」および「相手側」という用語で受信側を示す。この規約を使用するのは、本
発明の鍵交換は1人または複数の送信者と1人または複数の受信者との間で実行
可能だからである。そのため、「自分」および「自分側」と「相手」および「相
手側」はそれぞれ1人または複数の送信者と受信者を指している。
【0052】 本発明の楕円曲線暗号システムの公開鍵交換を図3の流れ図に説明してある。
【0053】 ステップ301−自分側で、公開鍵を計算する。ourPubεFpkXFpk ourPub=(ourPri)°(x1,y1) 式(12)
【0054】 ステップ302−相手側で、公開鍵を計算する。theirPubεFpkX Fpk theirPub=(theirPri)°(x1,y1) 式(13)
【0055】 ステップ303−2つの公開鍵ourPubとtheirPubが公開され、
したがってすべてのユーザに知られる。
【0056】 ステップ304−暗号パッドを自分側で計算する。ourPadεFpkXFp k ourPad=(ourPri)°(theirPub)=(ourPri)
°(theirPri)°(x1,y1) 式(14)
【0057】 ステップ305−相手側で、暗号パッドを計算する。theirPadεFp kXFpk theirPad=(theirPri)°(ourPub)=(their
Pri)°(ourPri)°(x1,y1) 式(15)
【0058】 楕円曲線上の点は、上記の加算および2倍演算のもとでアーベル群をなす。し
たがって、式14と15の演算の順序は、式の結果に影響を与えることなく入れ
替えることができる。したがって、 ourPad=(ourPri)°(theirPri)°(x1,y1)=(
theirPri)°(ourPri)°(x1,y1)=theirPad
式(16)
【0059】 送信側と受信側は両方とも、同じ暗号パッドを使用しているので、送信側が暗
号化したメッセージを受信側で復号化することができる。(ステップ305はス
テップ301−304のどれかよりも前または同時に実行できることに注意され
たい)。
【0060】 ステップ306では、送信側はourPadを使用して平文メッセージPtx
tを暗号化し、暗号文メッセージCを受信側に送信する。ステップ307で、受
信側はtheirPadを使用して、暗号文メッセージCを復号化し、平文メッ
セージPtxtを復元する。
【0061】 高速クラス数 楕円曲線暗号システムでは、モジュロ演算を使用して公開鍵、1回限りの暗号
パッドなどのある種のパラメータを決定する。モジュロ演算は、式の結果の中の
ビット数を一定の数に制限し、セキュリティを実現するという2つの目的に使用
される。離散対数問題は、モジュロ演算を使用しているため一部非対称である。
モジュロ演算の欠点は、除算を実行する必要があるという点である。モジュロ演
算の解は、数値を一定の数で除算したときの余りである。たとえば、12 mo
d 5は2に等しい。(12を5で2回割ると余りは2になり、余り2が解とな
る)。したがって、モジュロ演算では除算が必要である。
【0062】 本発明では特別な高速クラスの数を使用し、除算をなくすことで、暗号化と復
号化で必要なモジュロ演算を最適化している。本発明で使用するクラスの数は一
般に、Cを奇数で、比較的小さな値とし(たとえば、コンピュータのワード長以
下)、C=1(mod 4)とした場合の2q−Cという形式で記述される。
【0063】 数値がこの形式であれば、モジュロ演算は、シフト、簡単な乗算、および加算
のみを使い、除算を使わずに、実行することができる。この高速クラスの一群に
、Mersenne数と呼ばれる数があり、2q −1という形式である。本発明
で使用できる他のクラスは、Fermat数と呼ばれるもので、2q +1という
形式であり、qは2m に等しい。Fermat数は、本発明では素数でも素数で
なくてもよい。
【0064】 本発明では、有限体Fpk上の楕円曲線代数を使用するが、ただしp=2q−C
で、かつpは高速クラス数である。式p=2q −CによってqとCのすべての値
について素数が得られるわけではないことに注意されたい。たとえば、qが4に
等しく、Cが1に等しい場合、2q−Cは15に等しいが、これは素数ではない 。しかし、qの値が2、3、または5で、C=1であれば、式2q −Cは素数3
、7、および31を生成する。
【0065】 本発明では、有限体Fpk上に楕円曲線代数を実装する。ただしpは2q−Cで
、高速クラスの数の要素である。データの2進表現を使用してコンピュータ上で
実行する場合、高速クラスの数を使用することでシフト演算と加算のみにより(
mod p)演算を実現できる。それとは対照的に、「低速な」数を使用した場
合には、時間のかかる除算を実行して(mod p)演算を実行する必要がある
。以下の例では、高速クラスの(mod p)演算の利点を示している。
【0066】 例1:基数10(mod p)除算 32ビットの2進数nとして、111011011110101111000
11100110101(基数10では、この数値は3,991,652,14
9である)を考える。
【0067】 そこで、n(mod p)を考え、pを127に等しいとする。式n mod
127は除算では次のように計算できる。
【数1】
【0068】 余り112がn mod 127の解である。
【0069】 例2:Mersenne数(mod p)演算 本発明では、pがMersenne数で、p=2q−1の場合、(mod p )演算は、除算を使用せずに、シフト演算と加算だけで実行できる。再びn(m
od p)を考え、nは3,991,652,149で、pは127であるとす
る。pが127であれば、p=2q−1からqは7に等しい。127=27−1=
128−1=127である。
【0070】 (mod p)演算は、nの2進数形式、つまり1110110111101
0111100011100110101を使用して実行できる。図5では、ま
ずnのq個の下位ビット(LSB)501、つまり0110101をラッチして
シフト演算と加算を実行する。残りの桁のq個のLSB 502つまり、000
1110をq個の桁501に加算し、和503(1000011)を得る。nの
次のq個のLSB 504(0101111)を和503に加算して、和505
(1110010)を生成する。nのビット506(1101111)を和50
5に加算し、和507(11100001)を得る。
【0071】 残りのビット508(1110)は、9ビットよりも数が少ないが、和507
に加算して、和509(11101111)を生成する。この和のビット数はq
よりも多い。したがって、第1のqビット510(1101111)と次のqビ
ット511との和をとり(この場合単一ビット1)、和512(1110000
)を生成する。この和は、ビット数がq以下であり、n(mod p)の解であ
る。1110000=26+25+24=64+32+16=112。
【0072】 したがって、n mod 127の解112は、Mersenne数の体上の
楕円曲線を使用する場合にシフト演算と加算のみで決定される。Mersenn
e数を楕円曲線暗号システムで使用すると、明示的な除算が不要になる。
【0073】 例3:Fermat数(mod p)演算 本発明では、pがFermat数で、p=2q +1であれば、(mod p)
演算は、除算を使用せずに、シフト演算、加算、および減算(負の加算)のみで
実行できる。再びn(mod p)を考え、nを3,991,652,149、
pを今度は257とする。pが257だと、qはp=2q+1から8に等しく、 257=28+1=256+1=257となる。
【0074】 (mod p)演算は、nの2進数形式、つまり1110110111101
0111100011100110101を使用して実行できる。図6では、シ
フト演算と加算はまずq(8)個の下位ビット(LSB)601(001101
01)をラッチすることで実行される。残りの桁の次のq個のLSB602、つ
まり11000111をq桁601から減算する。これを実行するために、ビッ
ト602の1の補数を生成し、1をMSB側に加算して、負数とし、ビット60
2’(100111000)を得る。この負数602’をビット601に加算し
て、結果603(101101101)を生成する。nの次のq個のLSB60
4(11101011)を和603に加算して、結果605(10010110
00)を生成する。nのビット606(11101101)を結果605から減
算する。したがって、ビット606の1の補数が生成され、1の負の符号ビット
がMSB側に加算され、ビット606’(100010010)が生成される。
ビット606’が結果605に加算されて、和607(1101101010)
を生成する。
【0075】 和607のビット数はqよりも多いので、q個のLSBはビット608(01
101010)としてラッチされる。次のqビット(この場合、2ビットのみ、
11)をビット608に加算し、和610(01101101)を生成する。こ
の和は、ビット数が9以下であり、n(mod p)の解である。011011
01=26+25+23+22+20=64+32+8+4+1=109。
【0076】 例4:高速クラスmod演算 本発明では、pがクラスp=2q −Cの数で、Cが奇数であり、比較的小さい
値(たとえば、2進ワードの長さ以下)の場合、(mod p)演算は、除算な
しでシフト演算と加算のみを使用して実行できる。再びn(mod p)を考え
、nが685、pが13であるとする。pが13のとき、p=2q −Cから、q
は4に等しく、Cは3に等しい。13=24−3=16−3=13である。
【0077】 (mod p)演算は、nの2進数形式、つまり1010101101を使用
して実行できる。図7において、まずnのq(4)個の下位ビット(LSB)7
01、つまり1101をラッチしてシフト演算と加算を実行する。残りのビット
702(101010)にC(3)を掛けると、積703(1111110)が
生成される。積703をビット701に加算して、和704(10001011
)を生成する。和704のq個の下位ビット705(1011)をラッチする。
残りのビット706(1000)にCを掛けて、積707(11000)を生成
する。積707をビット705に加算して、和708(100011)を生成す
る。和708のq個の下位ビット709(0011)をラッチする。残りのビッ
ト710(10)にCを掛けて、積711(110)を生成する。積711をビ
ット709に加算して、和712(1001)を生成する。和712は、ビット
数がq以下であり、n(mod p)の解である。1001=23+20=8+1
=9である。685を13で割ると、余りは9となる。この高速クラス算術演算
では、シフト演算、加算、および乗算のみを使用して解を求めることができる。
【0078】 シフト演算と加算の実施 高速Mersenne mod演算は、よく知られているシフト手順により実
現できる。p=2q−1の場合、 x=(x&p)+(x>>q) 式(17) を数回使用して、0からp−1までの区間で正のxを適切な剰余値にすることが
できる。この手順では、シフト演算と加算のみが必要である。それとは別に、数
値x(mod p)を、 x=a+b2(q+1)/2=(a,b) 式(18) で表すことができる。
【0079】 他の整数yを(c,d)と表すと、 xy(mod p)=(ac+2bd,ad+bc) 式(19) が得られ、その後、xyの正しい簡約された剰余値を得るためにいくつかの自明
なシフト−加算の演算が必要になる場合がある。
【0080】 逆(mod p)を計算するために、少なくとも、2通りの手順がある。1つ
は、古典的な拡張GCD手順の2進数形式を使用するものである。もう1つは、
関係簡約方式を使用するものである。関係簡約方式は次のように動作する。
【0081】 p=2q−1、x≠0(mod p)とし、 x-1(mod p)を返す。 1)Set(a,b)=(1,0)and(y,z)=(x,p); 2)If(y==0)return(z); 3)Find e such that 2e//y; 4)Set a=2q-ea(mod p); 5)If(y==1)return(a); 6)Set(a,b)=(a+b,a−b)and(y,z)=(y+z,y
−z); 7)Go to(2).
【0082】 2進数拡張GCD手順は、a/bを超えない2の最大べき乗と定義される演算
[a/b]2により、明示的な除算を使用せずに実行できる。
【0083】 pを与え、x≠0(mod p)とし、 x-1(mod p)を返す。 1)If(y==1)return(1); 2)Set (x,v0)=(0,1)and(u1,v1)=(p,x); 3)Set u0=[u1/v12; 4)Set (x,v0)=(v0,x_u00)and(u1,v1)=(v1 ,u1_u01) 5)If(v1==0)return(x);else go to(3).
【0084】 本発明は、従来のまたは汎用コンピュータ・システムで実施することができる
。本発明を実施するためのコンピュータ・システムの一実施形態を図4に示す。
キーボード410およびマウス411が双方向システム・バス419に結合され
ている。キーボードとマウスは、ユーザ入力をコンピュータ・システムに送り、
そのユーザ入力をCPU413に伝達するためのものである。図4のコンピュー
タ・システムは、さらに、ビデオ・メモリ414、メイン・メモリ415、およ
び大容量記憶装置412を備えており、すべてキーボード410、マウス411
、およびCPU413とともに双方向システム・バス419に結合されている。
大容量記憶装置412は、磁気、光、または光磁気記憶装置システムや他の利用
可能な大容量記憶装置技術などの固定媒体と取り外し可能媒体の両方を備えるこ
ともできる。大容量記憶装置は、ネットワークで共有したり、専用大容量記憶装
置とすることもできる。バス419には、たとえば、ビデオ・メモリ414やメ
イン・メモリ415をアドレス指定するために32本のアドレス線を備えること
ができる。システム・バス419も、たとえば、CPU413、メイン・メモリ
415、ビデオ・メモリ414、および大容量記憶装置412などの構成要素間
でデータをやり取りするための32ビット・データ・バスを備える。それとは別
に、データ線とアドレス線を別々にする代わりに、データ線とアドレス線を多重
化することもできる。
【0085】 本発明の好ましい実施形態では、CPU413は、68030や68040な
どの、Motorola社製の32ビット・マイクロプロセッサである。ただし
、他の適当なマイクロプロセッサやマイクロコンピュータでもかまわない。Mo
torola社製マイクロプロセッサとその命令セット、バス構造および制御線
については、アリゾナ州フェニックスのMotorola Inc.で出版して
いる『MC68030 User’s Manual』および『MC68040
User’s Manual』で説明されている。
【0086】 メイン・メモリ415は、ダイナミック・ランダム・アクセス・メモリ(DR
AM)で構成されており、本発明の好ましい実施形態では、8メガバイトのメモ
リ構成である。本発明の範囲を逸脱することなく、メモリ容量を増減することが
できる。ビデオ・メモリ414はデュアル・ポート・ビデオ・ランダム・アクセ
ス・メモリであり、本発明では、たとえば、256Kバイトのメモリ構成である
。ただし、これもまたビデオ・メモリの増減が可能である。
【0087】 ビデオ・メモリ414の1つのポートがビデオ・マルチプレクサとシフタ41
6に結合されており、さらにビデオ増幅器417に結合されている。ビデオ増幅
器417を使用して、陰極線管(CRT)ラスタ・モニタ418を駆動する。ビ
デオ多重化シフタ回路416およびビデオ増幅器417はよく知られている技術
であり、適当な手段で実装が可能である。この回路は、ビデオ・メモリ414に
格納されているピクセル・データをモニタ418で使用するのに適したラスタ信
号に変換する。モニタ418は、グラフィック画像を表示するのに適した種類の
モニタであり、本発明の好ましい実施形態では、解像度が約1020×832と
なっている。他の解像度のモニタも本発明では使用可能である。
【0088】 上述のコンピュータ・システムは例としてのみ取りあげたものである。本発明
は、どのような種類のコンピュータ・システムあるいはプログラミングまたは処
理環境であっても実装できる。
【0089】 ブロック図 図8は、本発明のブロック図である。破線801に囲まれている構成要素で表
されている送信側が、平文メッセージPtxtを暗号文メッセージCに暗号化す
る。このメッセージCは、破線802で囲まれた構成要素で表される受信側に送
信される。受信側802は、暗号文メッセージCを復号化して、平文メッセージ
Ptxtを復元する。
【0090】 送信側801は、暗号化/復号化手段803、楕円乗算器805、秘密鍵ソー
ス807がある。暗号化/復号化手段803は、回線809を介して楕円乗算器
805に結合されている。楕円乗算器805は、回線811を介して秘密鍵ソー
ス807に結合されている。
【0091】 受信側802の暗号化/復号化手段804は、回線810を介して楕円乗算器
806に結合されている。楕円乗算器806は、回線812を介して秘密鍵ソー
ス808に結合されている。
【0092】 送信側801の秘密鍵ソース807には、送信側の安全な秘密パスワード「o
urPri」が含まれる。秘密鍵ソース807は、コンピュータ・システム内の
記憶レジスタ、メッセージが送信されると送信側から暗号システムに送られるパ
スワード、あるいはメッセージが送信されたり、取り出されたりしたときに図8
の暗号システムによって読み取られる符号化された物理的な鍵であってよい。同
様に、受信側802の秘密鍵ソース808は、受信側の安全な秘密パスワード、
つまり「theirPri」を含む。
【0093】 別のソース813には、送信側801と受信側の802の公開鍵「ourPu
b」および「theirPub」、初期点(X1、Y1)、体Fpk、および曲線 パラメータa、b、cなどの公知の情報が格納される。この情報源は、コンピュ
ータ・システムによって使用されるオンライン・ソースである、公開されている
ディレクトリであってもよく、また安全でない送信媒体上で送信側と受信側との
間で送信することもできる。公開ソース813は図では、回線815を介して送
信側801に、また回線814を介して受信側802に記号的に結ばれている。
【0094】 動作時に、送信側と受信側は安全な送信で暗号化および復号化鍵として使用す
るため共有の暗号パッドを生成する。送信側の秘密鍵ourPriが、送信側の
公開鍵theirPubとともに楕円乗算器805へ送られる。楕円乗算器80
5は、暗号化鍵eKを(ourPri)°(theirPub)(mod p) から計算する。暗号化鍵は、平文メッセージPtxtとともに暗号化/復号化手
段803に送られる。暗号化鍵は、暗号文メッセージCを生成するために、DE
S方式や本発明の楕円曲線方式などの暗号化方式で使用される。暗号文メッセー
ジを安全でないチャネル816上で受信側802に送信する。
【0095】 受信側802は受信側の秘密鍵theirPriを使用して復号化鍵DK を生
成する。theirPriは、送信側の(公開ソース813からの)公開鍵ou
rPubとともに秘密鍵ソース808から楕円乗算器804に送られる。復号化
鍵DK は、(theirPri)°(ourPub)(mod p)から生成さ
れる。復号化鍵DKは、楕円乗算機能の可換であるという性質から暗号化鍵eK
等しい。したがって、受信側802は、復号化鍵DK を使用して、暗号化方式を
逆にし、暗号文メッセージCから平文メッセージPtxtを復元する。
【0096】 送信側801と受信側802の暗号化/復号化手段と楕円乗算器は、プログラ
ム・ステップとして実装し、マイクロプロセッサで実行させることができる。
【0097】 逆変換なしのパラメータ化 高速クラス数を使用すると、(mod p)算術演算で除算が不要になる。し
かし、上の式13−16に示されているように、楕円乗算「°」は、除算を何回
か実行する必要がある。本発明を使用すると、逆変換なしにする初期パラメータ
化を選択することで、楕円乗算に必要な除算の回数を減らすことができる。これ
は、「Y」項が不要になるように初期点を選択することで実現される。
【0098】 本発明では、送信側と受信側の両方が、楕円曲線上の特定のx座標として、共
有の暗号パッドを生成する。初期点(X1,Y1)を適切に選択することにより、
乗算n°(X1,Y1)を設定するプロセスから除算をなくすことができる。次の
ステップでは、整数nについて、 n°(Xm/Zm) 式(20) は、座標(Xn+m/Zn+m)を表している。x=X/Zについて、Xn/Znとして
の乗算n(x,y)のx座標は、乗算剰余演算を必要とする加算−2倍規則にし
たがって「2進はしご」法を使用して計算する。Montgomeryパラメー
タ化(式7c)では、これらの規則は、 If i≠j: Xi+j=Zi-j(Xij−Zij2 式(21) Zi+j=Xi-j(Xij−Zij2 式(22) である。
【0099】 そうでない場合、i=jであれば、 X2i=(Xi 2−Zi 22 式(23) Z2i=4Xii(Xi 2+cXii+Zi 2) 式(24) である。
【0100】 これらの式は、除算を必要としないため、本発明を好ましい実施形態に実装し
たときに計算が簡略化される。これは、「逆変換なしのパラメータ化」と呼ばれ
(除算がないので)、Montgomery,P.著『Speeding th
e Pollard and Elliptic Curve Methods of Factorization』(Math.Comp.、48(243
−264)、1987年)に記載されている。体が単なるFp であった場合、こ
の方式により、乗算、加算、(高速)Mersenne mod演算を使用して
複数のnxを計算することができる。これはさらに、体がFp 2の場合にも、成立
する。任意のMersenne数pについてp=3(mod 4)なので、Xi またはZi を複素整数として表し、複素数算術演算を実行して、乗算後の実部と
虚部の両方を(mod p)で素早く簡約することができる。さらに、Z1 =1
も選択し、曲線上の初期点が、yが不要になる場合に(X1 /1,y)となるよ
うにする。
【0101】 高速クラスの数と逆変換なしのパラメータ化の両方を使用することで、本発明
の方法を使用する公開鍵交換を次のように実行できる。次の例では、素数はMe
rsenne数である。ただし、ここで説明するどの高速クラス数を代替するこ
ともできる。
【0102】 1)「自分」側で、曲線パラメータ(a,b,c)を使用して、公開鍵を計算
する。ourPubεFpkXFpk (X/Z)=ourPri°(X1/1) ourPub=XZ-1 2)「相手」側で、曲線パラメータ(a,b,c)を使用して、公開鍵を計算
する。theirPubεFpkXFpk (X/Z)=theirPri°(X1/1) theirPub=XZ-1 3)2つの公開鍵ourPubとtheirPubは公開されており、従って
知られている。 4)共有の暗号パッドを計算する。ourPadεFpkXFpk (X/Z)=ourPri°(theirPub/1) ourPad=XZ-1 5)共有の暗号パッドを計算する。theirPadεFpkXFpk (X/Z)=theirPri°(ourPub/1) theirPad=XZ-1
【0103】 通常の鍵交換が完了し、次のようになる。 ourPad=theirPad
【0104】 「自分」側と「相手」側との間のメッセージ暗号化/復号化は、この相互暗号
パッドに従って進む。
【0105】 FFT乗算 q>5000など、指数が非常に大きな場合には、数列のFourier変換
を使って乗算を実行すると都合がよい。FFT乗算は、p=2q −1がq=220 (約100万)ビット以下の場合に汎用演算xy(mod p)について、たと
えば、68040ベースのNeXTstation上で正確に動作する。さらに
、Mersenne数pについても、2進ビットの位数qの巡回たたみ込みが乗
算(mod 2q −1)に等価であることが観察されたときにさらに無駄を省け
る。FFT乗算手法を使用すると、q2 ではなく、qlogqにおおよそ比例す
る時間で乗算−modを実行することができる。
【0106】 FFT手法を使用すると本質的に楕円曲線代数を高速化することができる。 を一般にXの数列のFourier変換とすると、この変換はFFT乗算で使用
するものと同じである。次に、式21−24から座標を計算することができる。
たとえば、Xi+j を計算するには、5つの適切な変換(X i 、X j 、Z i 、Z j 、お
よびZ i-j )(一部は、すでに格納されている)を使用して、次の変換を作成で
きる。 i+j=Zi-j i j i j2
【0107】 この方法で、7つのFFTを使って答えXi+jを求めることができる。(平方 に2つのFFT、乗算に3つのFFTを使用する通常のやり方だと「標準」のF
FT方式に対してFFTは11個になることに注意されたい)。比7/11では
、固有の方法の無駄がかなり省かれる。pがMersenne数で、誤りのない
数論的変換も利用できるような場合には、過去からのスペクトルを確保し、長時
間の計算でスペクトル空間にとどまることができ、この方法により、時間がいっ
そう短縮する。
【0108】 高速クラス数、逆変換なしのパラメータ化、およびFFT乗算を使用したとき
の本発明の動作を示す流れ図を図9に掲載した。ステップ901で、高速クラス
数pは、p=2q −Cとなるように選択する。項qは、暗号化方式のビット深さ
である。ビット数が多ければ多いほど、セキュリティは高くなる。大きな値のq
について、FFT乗算を使用してpを計算する。項pを公開して使用できるよう
にする。
【0109】 ステップ902で、体Fpk の要素kを選択し、公開する。ステップ903で
、楕円曲線上の初期点(X1/Z)を選択する。初期点を逆変換なしになるよう
に選択することにより、コストのかかる除算を避ける。初期点を公開する。ステ
ップ904で曲線パラメータaを選択し、公開する。
【0110】 ステップ905で、送信側は逆変換なしのパラメータ化を使用してX1 /Z=
ourPri°(X1 /1)を計算する。送信側の公開鍵が、ourPub=(
XZ-1)(mod p)で生成される。受信側の公開鍵theirPub=(X
-1)(mod p)はステップ906で生成される。
【0111】 送信側の1回限りの暗号パッドourPadがステップ907で生成される。
X/Z=(ourPri)°(theirPub/1)。ourPud=(XZ -1 )(mod p)。ステップ908で、受信側の1回限りの暗号パッドthe
irPadを生成する。X/Z=(theirPri)°(ourPub/1)
。theirPud=(XZ-1)(mod p)。ourPadとtheirP
adの計算で、FFT乗算を使用して、逆変換Z-1を不要にする。ステップ90
9で、送信側はourPadを使用して平文メッセージPtxtを暗号文メッセ
ージCに変換する。暗号文メッセージCは受信側に送信される。ステップ910
で、受信側は、theirPadを使用して暗号文メッセージCを復号化して平
文メッセージPtxtを復元する。
【0112】 FEEセキュリティ 楕円曲線法(ECM)を採用したときに「自然な」統計によりMersenn
e数である代数的因数M89=289−1が発生する。これは、M445=2445−1の
因数分解を実行しようとして示された。つまり、乱数パラメータc(a=0,b
=1としてMontgomeryパラメータ化を使用する)について、p=M89 としたFp 上の楕円曲線の出現k(X1/1=0は統計的に、M445のM89を見つ
ける時間がO(exp(√(2log p log log p))であるという漸
近的推定と統計的に一致していた。そこで、これらの観察から、Mersenn
e数については乱数cパラメータを仮定した場合にFp 上の群の位数を見つける
のが「偶然にも」あまり容易でないということが示唆された。
【0113】 第2に、FEEに付随する離散対数問題が偶然に自明でないということをチェ
ックするために、特定のcパラメータについて、束縛されている整数の集合では
、 (pN−1)(X1/1)≠0 が成立することを検証できる。
【0114】 不等号は、離散対数評価の対応する有限体上の等価な評価への自明な簡約を避
けるためである。不等号が成立しないというのは非常にまれであり、実際、この
時点ではq>89なる数について自明でない実例が知られている。
【0115】 本発明では、従来技術に勝る多くの利点を提示しており、特に、RSA方式な
どの因数分解方式を特徴とする。本発明は、少ないビットと高速な演算でありな
がら、同じセキュリティを実現できる。それとは別に、本発明のシステムでは同
じビット数にして、セキュリティを高めることもできる。
【0116】 従来技術に勝る本発明の暗号システムの他の利点として秘密鍵の配布がある。
RSAなどの従来技術の方式では、秘密鍵を作成するために大きな素数を生成す
る必要がある。本発明では、秘密鍵を素数にする必要はない。したがって、ユー
ザは、正しい公知のパラメータを使用して公開鍵が生成され公開される場合に限
り、自分の秘密鍵を生成することができる。ユーザは、RSAシステムで自分の
秘密鍵を生成することはできない。
【0117】 電子署名 本発明は、上記の楕円代数とハッシュまたはダイジェスト関数を使用する電子
署名を作成し認証する改良された方法を提示する。送信側は暗号化メッセージ「
暗号文」を作成済みである。このメッセージを前記のように暗号化するか、また
は他の暗号化方式を使用して暗号化することができる。送信側は、次に、電子署
名を作成して、メッセージの「署名」の手段としてメッセージに添付する。好ま
しい実施形態の署名方式について以下の段で説明し、その後、計算を減らす方法
を説明する。
【0118】 署名の作成 開始点(X1 /1)を持つa、b、cでパラメータ化された曲線を仮定する。
さらに、開始点は楕円曲線上で位数Nであると仮定する。送信側の公開鍵our
Pubを複数のourPri°(X1 /1)として生成するが、ここでourP
riは自分の秘密鍵(整数)、°は楕円曲線上の乗算である。電子署名は次のよ
うに作成される。 1)約qビットの乱数整数mを選択する。 2)点を P=m°(X1/1) を計算する。 3)メッセージ・ダイジェスト関数Mを使用して、整数 u=(m+ourPri*M(暗号文,P))(mod N) を計算する。ただし、暗号文は送信する暗号化されたメッセージである。 4)暗号文とともに、電子署名をペア(u,P)として送信する。uは約2q ビットの整数であるが、Pは曲線上の点であることに注意されたい。
【0119】 本発明の好ましい実施形態では、MD2やMD5などのメッセージ・ダイジェ
スト関数Mを電子署名の生成の一部として使用する。ただし、本発明は他のダイ
ジェスト関数を使用したり、適当なハッシュ関数を使用しても、実装できる。
【0120】 電子署名の認証 受信側は、暗号文メッセージと、意図されている送信側の公開鍵を使用して、
点のペアを生成して電子署名の一致を調べることにより署名を認証しようとする
。受信側は、次のステップで署名を検証する。 1)署名のu部分を使用して、点 Q=u°(X1/1) を計算する。 2)点Qと点 R=P+M(暗号文,P)°ourPub を計算する。
【0121】 署名は、楕円点QおよびRが正確に比較されていない場合には無効である。つ
まり、署名が信頼のあるものであれば、次の式が成立しなければならない。 u°(X1/1)=P+M(暗号文,P)°ourPub
【0122】 上の式の左辺のuを置き換えると、 (m+ourPri*M(暗号文,P))°(X1/1)=P+M(暗号文,p
)°ourPub または m°(X1/1)+(ourPri*M(暗号文,P))°(X1/1)=P+ M(暗号文,P)°ourPub となる。
【0123】 式の右辺のourPubを置き換えると、 m°(X1/1)+(ourPri*M(暗号文,P))°(X1/1)=P+ M(暗号文,P)°ourPri°(X1/1) となる。 上記よりP=m°(X1/1)なので、左辺は P+(ourPri*M(ciphertext,P))°(X1/1)=P+M
(ciphertext,P)°ourPri°(X1/1) となる。
【0124】 式の右辺でourPriを移行すると、 P+ourPri*M(暗号文,P))°(X1/1)=P+ourPri*M (暗号文,P)°(X1/1) となる。
【0125】 したがって、曲線上の点は、送信されたペア(u,P)を使用して2つの異な
る式を使用して計算される。送信された点uからのQを計算し、さらに送信され
たP、暗号文メッセージ、および意図されている送信側の公開鍵からRを計算す
ることにより、QとRが一致すれば電子署名が認証されたと仮定する。
【0126】 セキュリティ この方式の電子署名方式は、次の観察結果をもとに安全なものである。署名を
忘れると、ペア(u,P)と式 u°(X1/1)=P+M(暗号文,P)°ourPub を満たす暗号文を見つけなければならなくなる。
【0127】 これは、楕円対数演算(本発明の暗号化セキュリティの基盤)を実行するか、
またはハッシュ関数Mを破る必要がある。
【0128】 認証の最適化 本発明の電子署名方式における受信側の最終ステップでは、2つの点、つまり
PとM(暗号文,P)°ourPubを加えてRを求め、その和を点Qと比較す
る必要がある。各ステップで指定されたy座標を使用して楕円加算を実行するこ
ともできる。本発明の方式では、注目している要素の2つの点のそれぞれのx座
標のみを使用して、2つの点の和のx座標の可能な値を小さくする方法を実現す
る。点QとP+M(暗号文,P)°ourPubが同一のx座標を持つかどうか
をチェックする必要があるが、この方法を使用して、そのチェックを高速に実行
することができる。
【0129】 x座標のみを使用して和の高速検証を行う原理は次のように動作する。たとえ
ば、Montgomeryパラメータ化を使用し、曲線を y2=x3+cx2+x とする。
【0130】 定理:P1=(x1,y1)、P2=(x2,y2)、Q=(x,y)を与えられた曲
線上の3つの点とし、x1≠x2とする。このとき、 x(C−x)=B2 の場合、かつその場合に限り、 P1+P2=Q が成立する。 ただし、 B=(x12−1)/(x1−x2) C=2((x12+1)(x1+x2+2c)−2c)/(x1−x22 とする。
【0131】 証明は次の通りである。P1とP2のy座標はわかっていないので、和P1+P2 のx座標について唯一可能性があるのは、任意に固定されたペア(y1,y2)に
ついて、2つの形式(x1,y1)±(x2,y2)のそれぞれのx座標(e、fと
呼ぶ)であることに注意されたい。前記のように、 ef=B2 e+f=C をMontgomeryの場合のように計算できる。xはe、fのうちの一方ま
たは他方なので、定理の2次方程式が成り立つには、(x−e)(x−f)=0
である必要がある。
【0132】 したがって、本発明のx座標方式を使用した場合、(x−e)(x−f)=0
を満たす2つの解を持つ可能性がある。したがって、偽物の署名から一方の可能
な解が生成される。ただし、(x−e)(x−f)=0を満たすときに、文字通
り何100万もの解があるので、署名は信頼できると仮定しても安全である。
【0133】 実用的な応用例では、P1 は、送信側が署名の一部として送信した計算で求め
た点Pを表す。P2 は、式M(暗号文,P)°ourPubを表す。もちろん、
Qはu°(X1/1)を表す。P1+P2はRを表し、Qと比較される。
【0134】 流れ図 図10は、本発明を使用する電子署名の生成を説明する流れ図である。ステッ
プ1001で、送信側は乱数整数mを選択する。この乱数整数は、マイクロプロ
セッサで使用する適当な乱数生成器を使用して生成できる。ステップ1002で
は、mを使用して点Pを計算する。前記のように、本発明の好ましい実施形態で
は、この点は関係式P=m°(X1 /1)を使用して生成される。ただし、本発
明の範囲を逸脱することなく点Pを生成するために他の方式を使用することもで
きる。
【0135】 ステップ1003で、第2の数uは、m、P、ourPri、および暗号文メ
ッセージを使用して計算する。本発明の好ましい実施形態では、これは、関係式
u=m+ourPri*M(暗号文,P) を使用して生成する。前記のように、
ダイジェスト関数MD2およびMD5以外のハッシュ関数を使用することもでき
る。さらに、uを計算するために、他の関係式を使用することもできる。他の関
係式を使用する場合には、そのm、P、ourPri、および暗号文メッセージ
を使用するようお勧めする。ステップ1004で、計算で求めたペア(u,P)
を電子署名として送信する。
【0136】 図11は、本発明の電子署名の認証を説明する流れ図である。ステップ110
1で、メッセージの受信者は電子署名(u,P)と暗号文メッセージを受信する
。ステップ1102で、点uを使用して、点Qを生成する。好ましい実施形態で
は、関係式Q=u°(X1/1)を使用してQを生成する。送信側がu、Pを計 算するのにどのような関係式を使用したかに応じて他の関係式を使用することも
できる。
【0137】 ステップ1103で、ourPubと暗号文メッセージを使用して点P2を生 成する。好ましい実施形態では、関係式M(暗号文,P)°ourPubを使用
してP2を生成する。送信側がu、Pを計算するのにどのような関係式を使用し たかに応じて他の関係式を使用することもできる。
【0138】 ステップ1104で、P1とP2のx値を使用して、値BとCを決定し、最終的
にeとfを決定する。これにより、P1とP2の和の可能な2つのx値が得られる
。決定ブロック1105で、引数「e,f=x?」を付けて、P1+P2=Qの等
式を可能なx値のいずれかが満たすかどうかを判断する。計算で求めたx値のい
ずれも方程式を満たさない場合、つまり、決定ブロック1105での引数が偽で
あれば、署名は信頼できるものではなく、ブロック1106で指示される。x値
のうちの1つが方程式を満たす場合、つまり決定ブロック1105での引数が真
であれば、有効な署名であると仮定され、ブロック1107で指示される。
【0139】 ブロック図 図12は、本発明の電子署名方式を実装するブロック図である。図12の要素
が図8の要素と共通である場合には、同じ要素番号を使用する。楕円乗算を使用
する暗号化方式で使用する署名方式を取りあげているが、これは例として取りあ
げただけである。本発明は、どのような種類の暗号化方式とも使用することがで
きる。
【0140】 破線1201で囲まれている構成要素で表されている送信側が、平文メッセー
ジPtxtを暗号文メッセージCに暗号化し、署名(u,P)を生成する。この
メッセージCと署名(u,P)は、破線1202で囲まれている構成要素で表さ
れている受信側に送信される。受信側1202は、暗号文メッセージCを復号化
して、平文メッセージを復元し、署名(u,P)を認証する。
【0141】 送信側1201は、暗号化/復号化手段1203、楕円乗算器805、乱数生
成器1205、ハッシュ生成器1207、および秘密鍵ソース807を備えてい
る。暗号化/復号化手段1203は、回線809を介して楕円乗算器805に結
合されている。楕円乗算器805は、回線811を介して秘密鍵ソース807に
結合されている。乱数生成器1205は、回線1209上で乱数mを楕円乗算器
805とハッシュ生成器1207に送る。楕円乗算器805は、回線1211を
介して安全でないチャネル816に数値uを送る。暗号化されている暗号文Cが
回線1213を介してハッシュ生成器1207に送られる。ハッシュ生成器12
07は、回線1215を介して点Pを安全でないチャネル816に送る。
【0142】 受信側1202の暗号化/復号化手段1204は、回線810を介して楕円乗
算器806に結合されている。楕円乗算器806は、回線812を介して秘密鍵
ソース808に結合されている。数値uは、回線1212を介して安全でないチ
ャネル816から楕円乗算器806に送られる。楕円乗算器806は、点Qを生
成し、回線1216を介して比較器1208に送られる。ハッシュ生成器120
6は、回線1210を介して安全でないチャネル816から暗号文メッセージC
および点Pを受信し、さらに回線1218を介してソース813からourPu
bを受信する。ハッシュ生成器1206は、回線1214を介して点Rを比較器
1208に出力する。
【0143】 送信側801の秘密鍵ソース807は、送信側の安全な秘密パスワード「ou
rPri」を含む。秘密鍵ソース807は、コンピュータ・システム内の記憶レ
ジスタ、メッセージが送信されたときに送信側が暗号システムに送るパスワード
、さらにはメッセージを送信または受信したときに図12の暗号システムによっ
て読み取られる符号化された物理的鍵であってもよい。同様に、受信側802の
秘密鍵ソース808は受信側の安全な秘密パスワード「theirPri」を含
む。
【0144】 別のソース813は、送信側1201と受信側1202の公開鍵「ourPu
b」および「theirPub」、初期点(x1,y1)、体Fpk、曲線パラメ ータa、b、cなどの公知の情報を格納する。この情報源は、コンピュータ・シ
ステムによって使用されるオンライン・ソースである、公開されているディレク
トリであってもよく、また安全でない送信媒体上で送信側と受信側との間で送信
することもできる。公開ソース813は図では、回線815を介して送信側12
01に、また回線814と1218を介してそれぞれ受信側1202とハッシュ
生成器1206に記号的に結ばれている。
【0145】 動作時に、前記のように送信側と受信側は安全な送信で暗号化および復号化鍵
として使用するため1回限りの共通の暗号パッドを生成する。暗号化鍵を、平文
メッセージとともに暗号化/復号化手段1203に送る。DES方式や本発明の
楕円曲線方式などの暗号化方式とともに暗号化鍵を使用して、暗号文メッセージ
Cを生成する。乱数生成器1205は、乱数mを生成し、楕円乗算器805に送
る。楕円乗算器805は、数値uを生成し、安全でないチャネル816を介して
受信側に送る。暗号文メッセージCは、乱数mとourPriとともにハッシュ
生成器1207に送られる。ハッシュ生成器1207は、点Pを生成し、安全で
ないチャネル816に送る。暗号文メッセージは、署名(u,P)とともに、安
全でないチャネル816上で受信側1202に送信される。
【0146】 受信側1202は、受信側の秘密鍵theirPriを使用して復号化鍵DK を生成する、theirPriが、送信側の公開鍵ourPub(公開ソース8
13からの)とともに、秘密鍵ソース808から楕円乗算器806に送られる。
復号化鍵DK は、(theirPri)°(ourPub)(mod p)から
生成される。復号化鍵DKは、楕円乗算機能の可換性のため、暗号化鍵eKに等し
い。したがって、受信側1202は、復号化鍵DK を使用して暗号化方式を逆に
し、暗号文メッセージCから平文メッセージを復元する。
【0147】 受信側1202の楕円乗算器806は、安全でないチャネル816から数値u
を受信する。楕円乗算器806は、点Qを生成し、比較器1208に送る。ハッ
シュ生成器は、安全でないチャネル816から暗号文メッセージCと点P、ソー
ス813から意図されている送信側の公開鍵ourPubを受信して、点Rを生
成し、点Rを比較器1208に送る。比較器1208は、点QとRを比較し、一
致している場合には、署名は有効であると仮定する。本発明では、前記のx値を
使用して最適化されている方式により点QとRの比較を実行する。
【0148】 送信側1201と受信側の1202の暗号化/復号化手段および楕円乗算器は
、プログラム・ステップとして実装し、マイクロプロセッサ上で実行させること
ができる。
【0149】 直接埋め込み 本発明では、2つの曲線E±のうちの一方にテキスト・パーセルをマッピング
できるという事実を利用している。受信側の公開鍵を使用し、送信側はメッセー
ジ座標、手がかりの値および符号を生成し、3つ組として受信者側に送信する。
手がかりと受信側の秘密鍵を使用して、メッセージ座標からテキスト・パーセル
を復号化することができる。展開できない形では、送信側と受信側は自分の共有
の暗号パッドを使用して、共有の手がかりを計算し、それぞれのメッセージ座標
が1ビットの符号とともに送信されるようにする。
【0150】 前記の高速楕円代数を使用して生成した楕円曲線は、充分に特別なもの(つま
り、密に定義されている)であり、平文の任意のパーセルが直接埋め込まれ、当
然、可能な2つの曲線のうちの1つに埋め込まれる。この曲線を「+」曲線およ
び「−」曲線と呼んでいる。
【0151】 展開のない直接埋め込み 本発明をさらに精密化した場合、各3つ組の手がかり構成要素をなくすことに
より暗号化されているパーセルのサイズを縮小することができる。これは、送信
側と受信側との間で同期をとる際に手がかりを生成する手段を設定することによ
り実現される。たとえば、前記の直接埋め込みの方法を使用して、送信側から受
信側に2つの乱数r、sを安全に送信することができる。送信側は、第1の手が
かりを clue1=r°ourPri°theirPub として計算し、同様に、受信側は同じ手がかりを clue1=r°theirPri°ourPub として計算する。
【0152】 後の手がかりは、次のように楕円加算を実行して両側に形成することができる
。 cluen+1=cluen+s°P ただし、Pは曲線上の初期点である。
【0153】 直接埋め込みの場合のように、埋め込まれたメッセージ・パーセルの点Ptext はclueに楕円加算されて、メッセージ点を構成し、復元の手がかりgを計算
し、ただ1つのペア(message,g)として送信される。
【0154】 楕円曲線演算 後述のように、直接埋め込まれた平文の送信側は1ビットを送信して、受信側
で復号化できるようにどの曲線を使用するかを識別する。
【0155】 直接埋め込みという考えは、楕円曲線自体に平文のパーセルを埋め込むという
ものである。点Ptextを暗号化する平文のパーセルを含む曲線の点とする。前記
の高速楕円曲線代数を使用することで、点のペアと単一ビットgからなる3つ組
を送信することができる。 (Ptext+r°theirPub,r°P1,g) (実際、本来の曲線点のペアと1ビットではなく、送信するx座標のペアと1ビ
ットだけが送信される)。ただし、rは乱数整数である。この送信を (メッセージ、手がかり、パリティ) として定性的に考える。
【0156】 「相手」側では、受信側は「手がかり」と「パリティ」およびその秘密鍵「t
heirPri」を使用して、「メッセージ」から平文を推論する。パリティ・
ビットは、曲線の曖昧さと2次式の符号曖昧さに応じて全体的な符号の結果とな
る。
【0157】 テキストの直接埋め込みは、次の楕円曲線の関係を検討することにより理解さ
れる。
【0158】 ここでは、体Fpの場合に集中するが、ただし p=2q−1 は、Mersenne数である。注目している楕円曲線をEとすると、これは sy2=x3+cx2+bx+a を満たす点P=(x,y)εFpXFpで構成されるように組み立てられるが、「
無限遠点」Oとともに曲線の符号sは+1または−1、およびc≠2のいずれか
に制限される。実際の曲線点には太字を使用していることに注意されたい。つま
り、ここまでの記法は、 x、yは両方とも整数(mod p)である 曲線上の点Pはペア(x,y)である または抽象的な「無限遠点」Oの場合もある Eは、すべてのPの集合である。
【0159】 強力な古典的結果がHasseの定理であり、曲線の位数|E|である、つま
り点Pの総数は
【数2】 が成立するという意味でp自体に近いということである。
【0160】 点の間にある種の演算が用意されている場合、楕円曲線Eは加法群になる。点
Oは加法的な単位要素であるが、加法の群の公理は次のように働く。2つのOで
ない点 P1=(x1,y1) P2=(x2,y2) について、曲線の加法を P3=P1+P2=(x3,y3) で定義し、減法を P4=P1−P2=(x4,y4) で定義し、その際にMontgomeryパラメータ化a=1、b=0の関係式
【数3】 とともに、否定の規則 −P1=(x1,−y1) を使用している。
【0161】 そこで、x1≠x2について、和と差のx座標は、
【数4】 を使用して、関係付けられることが導かれる。
【0162】 これらの定義済み関数F、Gは、直接埋め込みの理論で計算される。特にG関
数は別に
【数5】 と書くことができ、Q関数は楕円曲線の定義2次形式、つまり Q(z)=z2+cz+1 であることに注意されたい。
【0163】 楕円乗算はしご 実際の実装では、y座標を無視する[Montgomery 1987]の逆
変換のないパラメータ化を使用して、高速楕円曲線乗算を実行する。いくつかの
点P=(X1,y)について、Pのn回乗算をPのn個のコピーの楕円和として 定義し、n°Pと表す。(整数n=0の時、0°Pを抽象点0と解釈する。)そ
こで、Z1 =1がわかっているとして、複数のn°Pのx座標をXn/Znと表す
。整数Xn、Znは、いくつかの加算−2倍規則に従って2進はしご法により評価
することができる。これらの規則は前記の基本的な加法/減法の法則から導くこ
とができ、上の式21、22、23、および24の形式をとる。
【0164】 Mersenne mod演算 楕円乗算はしご法では、加算−2倍規則を通じて乗算−mod演算が関わる。
これらの演算は、効率化することができる。さらに、鍵または暗号パッドを解決
するために必要な単一の逆変換Z-1も高速に実行できる。いずれにせよ、すべて
の算術演算は乗算、シフト演算、加算で実行することができ、そのため除算を使
用しないシステムができあがる。
【0165】 高速Mersenne mod演算は、上の式17、18、および19に関し
て説明したように実行できる。逆(mod p)は、上述のように式19に従っ
て計算することができる。
【0166】 さらに、多項式GCD法に基づく再帰的逆変換アルゴリズムもあり、これは実
際に、ある小さな整数mについてO(qlogmq) の時間がかかる。逆変換の
時間は、上述のような累積FFT乗算手法と競合する。
【0167】 定理 次の定理は、本発明の直接埋め込み方式を補助するものである。
【0168】 定理1 楕円曲線E上の点Pと整数m、nについて、 mn°P=nm°P=m(n°P)=n(m°P) が成り立つ。
【0169】 これは、可換性と結合性の規則を示している。 定理2 与えられたパラメータa=0、b=1、c≠2について、任意の正数xは、2
つの高速楕円曲線 E±:±y2=xQ(x) の1つに存在するある点の有効なx座標である。 pはMersenne数で、したがって=3(mod 4)なので、整数s=
xQ(x)は平方またはその負の値であることに注意されたい。
【0170】 定理3 P1=(x1,y1)、P2=(x2,y2)とし、P3=P1+P2=(x3,y3
と仮定する。このとき、x3は、次の式を満たさなければならない。 x1≠x2の場合:2次関係式x3(G(x1,x2)−x3)=F(x1,x22 a x1=x2の場合:関係式x3=(x1 2−1)2/4x1Q(x1))
【0171】 定理4 P1=(x1,y1)、P2=(x2,y2)、x1≠x2とする。次のように表記
する。 P3=P1+P2=(x3,y3) P4=P1−P2=(x4,y4) このとき、x3は次の2つの値のうちの1つである。 (x1Q(x2)+x2Q(x1)±2(x1Q(x1)x2Q(x2))(p+1)/4)/ ((x1−x22) ただし、x4は他の値である。
【0172】 上の定理3の2次関係式を解くと、
【数6】 が得られる。
【0173】 p=3(mod 4)について、aの平方(mod p)の平方根は常にプラ
スまたはマイナスa(P+1)/4(mod p)である。
【0174】 定理5 曲線E±の1つの上の任意の整数x(mod p)について、正しい符号+ま
たは−が次の式で成立するいずれかの符号により与えられる。 (xQ(x))(P+1)/2=±xQ(x)(mod p) xQ(x)が0であれば、+曲線が使用される。
【0175】 直接埋め込みアルゴリズム 次のように仮定する。 パラメータq、a=0、b:=±1、c≠2で、2つの可能な楕円曲線E±
が得られる。 2つの点 P1 +=(X1 +,?) P1 -=(X1 -、?) が曲線E±上にそれぞれ存在するような2つの公開されている初期x座標X1±
。y座標(「?」で表されている)は、高速楕円代数を使用する場合には無視で
きる。 公開鍵のペアが存在している。theriPub±は (theirPub±、?)=theirPri°P1 ± に従って、単一の秘密鍵theirPriから生成される。 平文を、それぞれqビット以下のパーセルに分ける。つまり、パーセルは値
(mod p)である。 符号sを使用して上の定理4からまたはまれなケースであるx1=x2の場合
は定理3から、x3またはx4のうちの1つを計算する関数elliptic_a
dd(x1,x2,s)が存在すること。
【0176】 平文パーセルxtextを暗号化するには、次のようにする。 1.定理5からパーセルxtextが有効なx座標である2つの曲線E±のうちの
いずれかを決定する。前記曲線を符号s=±1で表す。 2.乱数rを選択し、前記のはしご算術演算を使用して(xq,?):=r° (theirPub±,?)を計算する。 3.メッセージ座標xm:=elliptic_add(xtext,xq,+1)
を計算する。 4.乱数rを使用して手がかりxcを計算し、公開点を(xc,?):=r°P 1 ± として計算する。 5.elliptic_add(xm,xq,±1)=xtext内で有効な符号を
決定し、これを符号gとする。 6.メッセージ座標の3つ組、手がかり、および符号を送信側に(xm,xc
g)として送信する。
【0177】 1パーセルの平文を復号化するには、次のようにする。 1.(xm,xc,g)を受信すると仮定して、手がかりxcを使用し、 (xq,?)=theirPri°(xc,?) からx座標xqを計算する。 2.次の式を使用して平文を復元する。 xtext=elliptic_add(xm,xc,g)
【0178】 アルゴリズム3をソフトウェアで実現したものを本書巻末に付録コードとして
添付した。実際の実施では、乱数整数楕円乗算(rによる)は定期的にしか実行
しないので、実行時間が短縮する。事実、rの乗算は、たとえば定理4で具現化
されているべき乗以上に実際にコストがかかることがわかっている。
【0179】 直接埋め込みの流れ図 図13は、直接埋め込みを使用して平文メッセージを暗号化する流れ図である
。ステップ1301で、平文をそれぞれqビット以下のパーセルに分割する。各
パーセルxtextについて、ステップ1302で、2つの曲線E±のうちのどれに
対してパーセルが有効なx座標であるかを決定する。これは、前記の定理5を使
用して実行できる。ステップ1303で、しかるべき曲線を符号=±1で表す。
【0180】 ステップ1304で、乱数rを選択する。ステップ1305で、(xq,?) =r°(theirPub±,?)を計算する。これは、はしご算術演算を使用
して実行できる。ステップ1306で、メッセージ座標xmを計算する。これは 、xm:=elliptic_add(xtext,xq,+1)または他の適当な方
法により実行できる。ステップ1307で、手がかりを計算する。これは、(x c ,?):=r°P1 ±で実行できる。
【0181】 ステップ1308で、xtextについて成立する符号をgと定義する。この符号
は、elliptic_add(xm,xq,+1)がxtextに等しいかどうかを
テストして決定することができる。ステップ1309で、メッセージ座標、手が
かり、および符号を3つ組として(xm,xc,g)という形式で受信側に送信す
る。
【0182】 図14は、図13の暗号化されたメッセージを復号化する流れ図である。ステ
ップ1401で、送信側から3つ組(xm,xc,g)を受信する。ステップ14
02で、(xq,?):=theirPri°(xc,?)からx座標xqを計算 する。次にステップ1403で、xtext:=elliptic_add(xm, xc,g)により平文を復元することができる。
【0183】 拡張のない直接埋め込みアルゴリズム 一連の平文パーセルxtextnを暗号化するには、次のようにする。 1.2つの乱数r、s∈Fpkを選択して、たとえば、直接埋め込みアルゴリ ズムを使用して受信側に送信する。 2.式 clue=r°ourPri°theirPub± s=s°P± を計算して、両方の曲線の初期手がかりを計算する。 3.平文パーセルxtextiについて、2つの曲線のうちどれに関してxtextiが有
効な点か(またはxtextiが有効な座標であるものはどれか)を決定する。 4.正しい曲線点を使用して、メッセージ座標 mi:=elliptic_add(xtexti,cluei,+1) を計算する。 5.elliptic_add(mi,cluei,±1)のどの符号でxtexti を復元するかを決定し、この符号をgとする。 6.ペア(mi,g)を送信する。 7.後のパーセルについて、 cluei+1=elliptic_add(r°cluei,s,+1) を計算し、ステップ3−6を繰り返す。
【0184】 一連のペア(m,g)を復号化するには、次のようにする。 1.乱数r、sを復元し、初期手がかりを次のように計算する。 clue=r°theirPri°ourPub± s=s°P± 2.各ペア(m,g)について、どの曲線に点mがあるかを決定する。 3.決定された曲線から次の点に対する演算を使用して平文を復元する。 elliptic_add(clue,m,g) 4.後続のペアの手がかりを再計算する。 cluei+1=elliptic_add(r°cluei,s,+1)
【0185】 拡張なしの直接埋め込みの流れ図 図15は、拡張なしの直接埋め込みを使用して平文メッセージを暗号化する流
れ図である。ステップ1500で、平文をそれぞれqビット以下のパーセルに分
割する。ステップ1501で2つの乱数rとsを選択し、ステップ1502で受
信側に送信する。ステップ1503で、乱数rとsを使用して両方の曲線につい
て初期手がかりclueとsを決定する。
【0186】 ステップ1504で、それぞれのパーセルxtextについて、送信側はパーセル
が有効なx座標になるのは2つの曲線E±のうちどちらであるかを決定する。ス
テップ1505で、mi:=elliptic_add(xtexti,cluei, +1)を使用してメッセージ座標を計算する。ステップ1506で、送信側は、
elliptic_add(mi,cluei,±1)内のどの符号でxtextiを 復元するかを決定し、この符号をgとする。
【0187】 ステップ1507で、現在のペア(m,g)を受信側に送信し、前の手がかり
と乱数rとsを使用してステップ1508で次の手がかりを計算する。ステップ
1508の後で、プロセスはステップ1504に戻り、次のパーセルを暗号化す
る。
【0188】 図16は、図15の暗号化されているメッセージを復号化する流れ図である。
ステップ1600で、受信側は、受信側によって送信された乱数rとsを復元し
、ステップ1601で、乱数rとsを使用して、初期手がかりを決定する。ステ
ップ1602で、受信側は送信側が送信したペア(m,g)を復元する。現在の
ペア(m、g)について、ステップ1603で、受信側はどの楕円曲線に点mが
あるかを決定する。決定された曲線の点を使用して、ステップ1604でell
iptic_add(clue、m,g)を使って平文パーセルを復元する。ス
テップ1605で、前の手がかりおよび乱数rとsに基づいて次の手がかりを計
算する。ステップ1605の後で、プロセスはステップ1602に戻り、次のパ
ーセルに取りかかる。
【0189】 コード 直接埋め込みを使用して暗号化と復号化を実装するコードで、Mathema
ticaを使って書いたコード例を以下に示す。
【表1】
【表2】
【表3】
【0190】 最適化された方式を使用して署名を比較する関数を以下に示す。
【表4】
【0191】 Qを計算し、(P+M(暗号文,P)°ourPub)と比較する関数を以下に
示す。
【表5】
【0192】 暗号化/復号化 本発明の暗号化/復号化方式は、プログラミング言語Cを用いて実装すること
ができる。以下は、本発明の暗号化/復号化の実装に適したプログラム・インタ
フェース(.hファイル)とテスト・プログラム(.cファイル)の例である。
【表6】
【表7】
【表8】
【表9】
【0193】
【表10】
【表11】
【0194】
【表12】
【0195】
【表13】
【図面の簡単な説明】
【図1】 従来技術による公開鍵交換システムのブロック図である。
【図2】 従来技術による公開鍵交換トランザクションの流れ図である。
【図3】 本発明の鍵交換を説明する流れ図である。
【図4】 本発明を実装することが可能なコンピュータ・システムのブロック図である。
【図5】 Mersenne数を使用しpを法とする算法を実行するシフトおよび加算演
算を説明する図である。
【図6】 Fermat数を使用しpを法とする算法を実行する動作を説明する図である
【図7】 高速クラス数を使用しpを法とする算法を実行する動作を説明する図である。
【図8】 本発明のブロック図である。
【図9】 本発明の一実施形態の動作を説明する流れ図である。
【図10】 本発明を使用して電子署名を生成する方法を説明する流れ図である。
【図11】 本発明における電子署名の認証を説明する流れ図である。
【図12】 本発明の電子署名方式を実装するためのブロック図である。
【図13】 直接埋め込みを使用して平文メッセージを暗号化する流れ図である。
【図14】 図13の暗号化されたメッセージを復号化する流れ図である。
【図15】 展開なしの直接埋め込みを使用して平文メッセージを暗号化する流れ図である
【図16】 図15の暗号化されたメッセージを復号化する流れ図である。
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5J104 AA25 JA25 NA16 9A001 BB01 BB02 BB03 BB04 CC05 CC07 CZ06 DD02 EE03 GG01 GG02 GG22 HH03 KK11 KK56 LL03

Claims (34)

    【特許請求の範囲】
  1. 【請求項1】 送信側コンピュータ・システム内で平文メッセージを暗号化
    する方法であって、 平文xtextのパーセルを選択するステップと、 2つの楕円曲線E+とE-のどちらについて平文xtextが有効な座標であるかを
    決定するステップと、 乱数r、公開鍵/秘密鍵ペアからの公開鍵、および平文xtextを使用してメッ
    セージ座標xmを生成するステップと、 手がかり値xcを生成するステップと、 符号値gを生成するステップと、 前記の暗号化されたメッセージを、前記メッセージ座標、前記手がかり、およ
    び前記符号で表すステップ を含む方法。
  2. 【請求項2】 前記メッセージ座標、前記手がかり、および前記符号が受信
    者に送信されることを特徴とする請求項1に記載の方法。
  3. 【請求項3】 前記公開鍵が前記受信側の公開鍵であることを特徴とする請
    求項2に記載の方法。
  4. 【請求項4】 2つの曲線のうちどれについてxtextが有効な座標であるか
    を決定する前記のステップを q、a=0、b=±1、c≠2を仮定して、2つの可能な楕円曲線E±を得る
    ステップと、 2つの点P1 +およびP1 -がそれぞれ曲線E+とE-上にあるような2つの公開座
    標x1±を仮定するステップと、 xtextが有効な座標となる曲線の符号を、 (xtextQ(xtext))(p+1)/2=±xtextQ(xtext)(mod p) p=3(mod 4) によって決定するステップにより実行することを特徴とする請求項1に記載の方
    法。
  5. 【請求項5】 メッセージ座標を生成するステップを、 乱数rを選択し、(xq,?):=r°(theirPub±,?)を計算す るステップと、 メッセージ座標xm:=elliptic_add(xtext,xq,+1)を計
    算するステップにより実行することを特徴とする請求項4に記載の方法。
  6. 【請求項6】 手がかりxcを生成する前記ステップを(xc,?):=r°
    1 ±で実行することを特徴とする請求項5に記載の方法。
  7. 【請求項7】 前記符号gを決定する前記ステップを、どの符号がelli
    ptic_add(xm,xq,+1)=xtext内で成立するかを決定することで
    実行することを特徴とする請求項6に記載の方法。
  8. 【請求項8】 さらに、 前記受信側で、前記手がかりxcからxqを生成するステップと、 xtext:=elliptic_add(xm,xc,g)で平文を復元するステ
    ップを含むことを特徴とする請求項7に記載の方法。
  9. 【請求項9】 楕円曲線代数を使用して平文メッセージを暗号化するために
    コンピュータ読み取り可能なプログラム・コードが埋め込まれているコンピュー
    タ使用可能媒体を含む製品であって、前記製造品内のコンピュータ可読プログラ
    ム・コードが、 コンピュータに1パーセルの平文xtextを選択させるように構成されたコンピ
    ュータ読み取り可能なプログラム・コードと、 コンピュータに2つの楕円曲線E+とE-のうちどちらについてxtextが有効な
    座標であるかを決定させるように構成されたコンピュータ読み取り可能なプログ
    ラム・コードと、 コンピュータに乱数r、公開鍵/秘密鍵ペアからの公開鍵、およびxtextを使
    用してメッセージ座標xm を生成させるように構成されたコンピュータ読み取り
    可能なプログラム・コードと、 コンピュータに手がかり値xcを生成させるように構成されたコンピュータ読 み取り可能なプログラム・コードと、 コンピュータに符号値gを生成させるように構成されたコンピュータ読み取り
    可能なプログラム・コードと、 コンピュータに前記メッセージ座標、前記手がかり、および前記符号によって
    前記の暗号化されたメッセージを表現させるように構成されたコンピュータ・プ
    ログラム読み取り可能なプログラム・コードと を含むことを特徴とする製品。
  10. 【請求項10】 前記メッセージ座標、前記手がかり、および前記符号を受
    信側に送信することを特徴とする請求項9に記載の製造品。
  11. 【請求項11】 前記公開鍵が前記受信側の公開鍵であることを特徴とする
    請求項10に記載の製造品。
  12. 【請求項12】 コンピュータに2つの曲線のうちどちらについてxtext
    有効な座標であるかを決定させるように構成された前記のコンピュータ読み取り
    可能なプログラム・コードが、コンピュータに q、a=0、b=±1、c≠2と仮定して、2つの可能な楕円曲線E± を得 るステップと、 2つの点P1 +とP1 -がそれぞれ曲線E+とE-上にあるような2つの公開座標x 1 ± を仮定するステップと、 xtextが有効な座標である曲線の符号を、 (xtextQ(xtext))(p+1)/2=±xtextQ(xtext)(mod p) p=3(mod 4) により決定するステップを実行させるように構成されたコンピュータ読み取り可
    能なプログラム・コードを含むことを特徴とする請求項9に記載の製造品。
  13. 【請求項13】 コンピュータにメッセージ座標を生成させるように構成さ
    れたコンピュータ読み取り可能なプログラム・コードが コンピュータに乱数rを選択し、(xq,?):=r°(theirPub± ,?)を計算させるように構成されたコンピュータ読み取り可能なプログラム・
    コードと、 コンピュータにメッセージ座標xm:=elliptic_add(xtext, xq,+1)を計算させるように構成されたコンピュータ読み取り可能なプログ ラム・コードを含むことを特徴とする請求項12に記載の製造品。
  14. 【請求項14】 コンピュータに手がかりxc を生成させるように構成され
    た前記のコンピュータ読み取り可能なプログラム・コードが、コンピュータに(
    c,?):=r°P1 ± を計算させるように構成されたコンピュータ読み取り 可能なプログラム・コードを含むことを特徴とする請求項13に記載の製造品。
  15. 【請求項15】 コンピュータに前記符号gを決定させるように構成された
    前記のコンピュータ読み取り可能なプログラム・コードが、コンピュータにel
    liptic_add(xm,xq,+1)=xtextでどの符号が成立するかを決
    定させるように構成されたコンピュータ読み取り可能なプログラム・コードを含
    むことを特徴とする請求項14に記載の製造品。
  16. 【請求項16】 コンピュータに前記受信側で、前記手がかりxcからxq
    生成させるように構成されたコンピュータ読み取り可能なプログラム・コードと
    、 コンピュータに前記受信側で、xtext:=elliptic_add(xm, xc,g)によって平文を復元させるように構成されたコンピュータ読み取り可 能なプログラム・コードを含むことを特徴とする請求項15に記載の製造品。
  17. 【請求項17】 平文メッセージを暗号化する方法であって、 2つの乱数rとsを選択するステップと、 前記乱数r、第1の公開鍵/秘密鍵ペアからの公開鍵、第2の公開鍵/秘密鍵
    ペアからの秘密鍵を使用して初期手がかりclue0を生成するステップと、 1パーセルの平文xtextiを選択するステップと、 2つの楕円曲線E+とE-のうちどちらについてxtextiが有効な座標であるか を決定するステップと、 xtextiと現在の手がかりclueiを使用してメッセージ座標miを生成する ステップと、 符号値gを生成するステップと、 ペア(mi,g)で前記の暗号化されたメッセージを表すステップと、 後続のパーセルについて、前記の現在の手がかりcluei および前記の乱数
    rとsを使用して後続の手がかりcluei+1を生成するステップ を含む方法。
  18. 【請求項18】 さらに、送信側から受信側に前記乱数rとsを送信するス
    テップと、 前記送信側から前記受信側に前記の暗号化されたメッセージを送信するステッ
    プを含む請求項17に記載の方法。
  19. 【請求項19】 前記公開鍵が前記受信側の公開鍵であり、前記秘密鍵が前
    記送信側の秘密鍵であることを特徴とする請求項18に記載の方法。
  20. 【請求項20】 前記の初期手がかりclue0を生成する前記ステップが clue0=r°ourPri°theirPub± を計算するステップを含み、ourPriが前記秘密鍵を含み、theirPu
    ±が前記公開鍵を含むことを特徴とする請求項17に記載の方法。
  21. 【請求項21】 2つの楕円曲線E+とE-のうちどちらについてxtextiが 有効な座標であるかを決定する前記ステップが q、a=0、b=±1、c≠2を仮定して、2つの可能な楕円曲線E±を得る
    ステップと、 2つの点P1 +とP1 -がそれぞれ曲線E+およびE-上にあるような2つの公開座
    標x1 ±を仮定するステップと、 xtextiが有効な点である曲線の符号を (xtextiQ(xtexti))(p+1)/2=±xtextiQ(xtexti)(mod p) p=3(mod 4) により決定するステップを含むことを特徴とする請求項17に記載の方法。
  22. 【請求項22】 前記メッセージ座標を生成するステップが mi:=elliptic_add(xtexti,cluei,+1) を計算するステップを含むことを特徴とする請求項17に記載の方法。
  23. 【請求項23】 前記符号gを生成する前記ステップが、elliptic
    _add(mi,cluei,±1)の計算時にどの符号でxtextiを復元するか を決定するステップを含むことを特徴とする請求項17に記載の方法。
  24. 【請求項24】 前記の後続の手がかりcluei+1を生成する前記ステッ プが、 s=s°P±を計算するステップと、 cluei+1=elliptic_add(r°cluei,s,+1)を計算
    するステップを含むことを特徴とする請求項17に記載の方法。
  25. 【請求項25】 前記受信側で実行される、 前記乱数r、前記の第1の公開鍵/秘密鍵ペアの秘密鍵、前記の第2の公開鍵
    /秘密鍵の公開鍵から初期手がかりclue0を決定するステップと、 どの楕円曲線に点miが含まれるかを決定するステップと、 xtextiを決定するためにelliptic_add(cluei,mi,g) を計算するステップと、 現在の手がかりclueiと前記乱数rおよびsを使用して後続の手がかりc luei+1を計算するステップを含むことを特徴とする請求項18に記載の方法 。
  26. 【請求項26】 コンピュータに楕円曲線代数を使用して平文メッセージを
    暗号化させるためのコンピュータ読み取り可能なプログラム・コードが埋め込ま
    れているコンピュータ使用可能媒体を含む製造品であって、前記コンピュータ可
    読プログラム・コードが、 コンピュータに2つの乱数rとsを選択させるように構成されたコンピュータ
    読み取り可能なプログラム・コードと コンピュータに前記乱数r、第1の公開鍵/秘密鍵ペアからの公開鍵、および
    第2の公開鍵/秘密鍵ペアからの秘密鍵を使用して初期手がかりclue0 を生
    成させるように構成されたコンピュータ読み取り可能なプログラム・コードと、 コンピュータに1パーセルの平文xtexti を選択させるように構成されたコン
    ピュータ読み取り可能なプログラム・コードと、 コンピュータに2つの楕円曲線E+とE-のうちどちらについてxtexti が有効
    な座標であるかを決定させるように構成されたコンピュータ読み取り可能なプロ
    グラム・コードと、 コンピュータにxtextiと現在の手がかりclueiを使用してメッセージ座標
    i を生成させるように構成されたコンピュータ読み取り可能なプログラム・コ
    ードと、 コンピュータに符号値gを生成させるように構成されたコンピュータ読み取り
    可能なプログラム・コードと、 コンピュータにペア(mi ,g)で前記の暗号化されているメッセージを表現
    させるように構成されたコンピュータ・プログラム読み取り可能なプログラム・
    コードと、 コンピュータに後続のパーセルについて、前記の現在の手がかりcluei
    よび前記乱数rとsを使用して後続の手がかりcluei+1 を生成させるように
    構成されたコンピュータ読み取り可能なプログラム・コードを含むコンピュータ
    読み取り可能なプログラム・コードを特徴とする製造品。
  27. 【請求項27】 さらに、コンピュータに送信側から受信側に前記乱数rと
    sを送信させるように構成されたコンピュータ読み取り可能なプログラム・コー
    ドと、 コンピュータに前記送信側から前記受信側に前記の暗号化されたメッセージを
    送信させるように構成されたコンピュータ読み取り可能なプログラム・コードを
    特徴とする請求項26に記載の製造品。
  28. 【請求項28】 前記公開鍵が、前記受信側の公開鍵であり、前記秘密鍵が
    前記送信側の秘密鍵であることを特徴とする請求項27に記載の製造品。
  29. 【請求項29】 コンピュータに前記初期手がかりclue0 を生成させる
    ように構成されたコンピュータ読み取り可能なプログラム・コードが、 clue0=r°ourPri°theirPub± をコンピュータに計算させるように構成されたコンピュータ読み取り可能なプロ
    グラム・コードを含み、ourPriに前記秘密鍵が含まれ、theirPub
    ±には公開鍵が含まれることを特徴とする請求項26に記載の製造品。
  30. 【請求項30】 コンピュータに2つの楕円曲線E+とE-のうちどちらにつ
    いてxtexti が有効な座標であるかを決定させるように構成された前記のコンピ
    ュータ読み取り可能なプログラム・コードが、コンピュータに q、a=0、b=±1、c≠2と仮定して、2つの可能な楕円曲線E±を得、 2つの点P1 +とP1 -がそれぞれ曲線E+およびE-上にあるような2つの公開座
    標x1 ±を仮定し、 xtextiが有効な座標である曲線の符号を (xtextiQ(xtexti))(p+1)/2=±xtextiQ(xtexti)(mod p) p=3(mod 4) により決定させるように構成されたコンピュータ読み取り可能なプログラム・コ
    ードを含むことを特徴とする請求項26に記載の製造品。
  31. 【請求項31】 コンピュータに前記メッセージ座標を生成させるように構
    成された前記のコンピュータ読み取り可能なプログラム・コードが、コンピュー
    タにmi:=elliptic_add(xtexti,cluei ,+1)を計算さ
    せるように構成されたコンピュータ読み取り可能なプログラム・コードを含むこ
    とを特徴とする請求項26に記載の製造品。
  32. 【請求項32】 コンピュータに前記符号gを生成させるように構成された
    前記のコンピュータ読み取り可能なプログラム・コードが、elliptic_
    add(mi,cluei ,±1)の計算時にコンピュータにどの符号でxtexti を復元するかどうかを決定させるように構成されたコンピュータ読み取り可能な
    プログラム・コードを含むことを特徴とする請求項26に記載の製造品。
  33. 【請求項33】 コンピュータに前記の後続の手がかりcluei+1 を生成
    させるように構成された前記のコンピュータ読み取り可能なプログラム・コード
    が コンピュータにs=s°P± を計算させるように構成されたコンピュータ読 み取り可能なプログラム・コードと、 コンピュータにcluei+1 =elliptic_add(r°cluei
    s,+1)を計算させるように構成されたコンピュータ読み取り可能なプログラ
    ム・コードを含むことを特徴とする請求項26に記載の製造品。
  34. 【請求項34】 さらに、前記受信側のコンピュータに 前記乱数r、前記の第1の公開鍵/秘密鍵ペアの秘密鍵、および前記の第2の
    公開鍵/秘密鍵ペアの公開鍵から前記の初期手がかりclue0を決定するステ ップと、 どの楕円曲線に点miが含まれるかを決定するステップと、 elliptic_add(cluei,mi,g)を計算して、xtextiを決 定するステップと、 現在の手がかりcluei と前記の乱数rおよびsを使用して後続の手がかり
    cluei+1 を計算するステップを実行させるように構成されたコンピュータ読
    み取り可能なプログラム・コードを含む請求項27に記載の製造品。
JP2000503629A 1997-07-18 1998-07-17 直接埋め込み方式による高速楕円曲線暗号化の方法と装置 Expired - Lifetime JP3862500B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/896,993 US6307935B1 (en) 1991-09-17 1997-07-18 Method and apparatus for fast elliptic encryption with direct embedding
US08/896,993 1997-07-18
PCT/US1998/014892 WO1999004531A1 (en) 1997-07-18 1998-07-17 Method and apparatus for fast elliptical encryption with direct embedding

Publications (2)

Publication Number Publication Date
JP2001510912A true JP2001510912A (ja) 2001-08-07
JP3862500B2 JP3862500B2 (ja) 2006-12-27

Family

ID=25407187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000503629A Expired - Lifetime JP3862500B2 (ja) 1997-07-18 1998-07-17 直接埋め込み方式による高速楕円曲線暗号化の方法と装置

Country Status (6)

Country Link
US (1) US6307935B1 (ja)
EP (1) EP0997016B1 (ja)
JP (1) JP3862500B2 (ja)
CA (1) CA2297059A1 (ja)
DE (1) DE69829967T2 (ja)
WO (1) WO1999004531A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301886B2 (en) 2001-08-24 2012-10-30 Zih Corp. Method and apparatus for article authentication
USRE44220E1 (en) 1998-06-18 2013-05-14 Zih Corp. Electronic identification system and method with source authenticity

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5271061A (en) * 1991-09-17 1993-12-14 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
EP0917047B1 (en) * 1997-11-04 2004-10-13 Nippon Telegraph and Telephone Corporation Apparatus for modular inversion for information security
JPH11242434A (ja) * 1998-02-26 1999-09-07 Hitachi Ltd 楕円曲線暗号実行方法及び暗号処理システム
JP3796993B2 (ja) * 1998-12-22 2006-07-12 株式会社日立製作所 楕円曲線暗号実行方法及び装置並びに記録媒体
US6611597B1 (en) * 1999-01-25 2003-08-26 Matsushita Electric Industrial Co., Ltd. Method and device for constructing elliptic curves
FR2791497B1 (fr) * 1999-03-26 2001-05-18 Gemplus Card Int Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique
US20020038420A1 (en) * 2000-04-13 2002-03-28 Collins Timothy S. Method for efficient public key based certification for mobile and desktop environments
EP1410555A4 (en) * 2000-09-11 2004-12-22 Jinglong F Zhang METHOD AND DEVICE, THE OR THE SINGLE-SIDED TRANSFORMATIONS USED
JP3794266B2 (ja) * 2000-11-08 2006-07-05 株式会社日立製作所 楕円曲線スカラー倍計算方法及び装置並びに記憶媒体
WO2003017559A2 (en) * 2001-08-13 2003-02-27 Board Of Trustees Of The Leland Stanford Junior University Systems and methods for identity-based encryption and related cryptographic techniques
JP4067818B2 (ja) 2001-12-10 2008-03-26 富士通株式会社 楕円曲線暗号装置、楕円曲線暗号プログラム及び楕円曲線暗号の演算方法
US7228417B2 (en) * 2002-02-26 2007-06-05 America Online, Inc. Simple secure login with multiple-authentication providers
US20080144834A1 (en) * 2004-04-30 2008-06-19 Steven Barnett Rakoff Security System Communications Including Encryption
US20060013387A1 (en) * 2004-07-14 2006-01-19 Ruei-Shiang Suen Method and system for implementing KASUMI algorithm for accelerating cryptography in GSM/GPRS/EDGE compliant handsets
US7483533B2 (en) * 2004-08-05 2009-01-27 King Fahd University Of Petroleum Elliptic polynomial cryptography with multi x-coordinates embedding
US7483534B2 (en) * 2004-08-05 2009-01-27 King Fahd University Of Petroleum Elliptic polynomial cryptography with multi y-coordinates embedding
US7607019B2 (en) * 2005-02-03 2009-10-20 Apple Inc. Small memory footprint fast elliptic encryption
WO2006076800A1 (en) * 2005-01-18 2006-07-27 Certicom Corp. Accelerated verification of digital signatures and public keys
CA2594670C (en) 2005-01-21 2014-12-23 Certicom Corp. Elliptic curve random number generation
TWI305548B (en) * 2005-05-09 2009-01-21 Nippon Steel Corp Low core loss grain-oriented electrical steel sheet and method for producing the same
US7587047B2 (en) * 2005-06-22 2009-09-08 Apple Inc. Chaos generator for accumulation of stream entropy
US7664258B2 (en) * 2005-12-28 2010-02-16 Microsoft Corporation Randomized sparse formats for efficient and secure computation on elliptic curves
US8160245B2 (en) * 2007-03-07 2012-04-17 Research In Motion Limited Methods and apparatus for performing an elliptic curve scalar multiplication operation using splitting
US20080273695A1 (en) * 2007-05-02 2008-11-06 Al-Gahtani Theeb A Method for elliptic curve scalar multiplication using parameterized projective coordinates
US8102998B2 (en) * 2007-05-02 2012-01-24 King Fahd University Of Petroleum And Minerals Method for elliptic curve scalar multiplication using parameterized projective coordinates
DE102008061483A1 (de) * 2008-12-10 2010-06-24 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Verarbeiten von Daten
US8184803B2 (en) * 2008-12-29 2012-05-22 King Fahd University Of Petroleum And Minerals Hash functions using elliptic curve cryptography
US20100169658A1 (en) * 2008-12-30 2010-07-01 Lahouari Ghouti Elliptic curve-based message authentication code
US8705740B2 (en) 2008-12-30 2014-04-22 King Fahd University Of Petroleum And Minerals Elliptic curve-based message authentication code system and method
US8165287B2 (en) * 2008-12-30 2012-04-24 King Fahd University Of Petroleum & Minerals Cryptographic hash functions using elliptic polynomial cryptography
FR2947404B1 (fr) * 2009-06-30 2011-12-16 Sagem Securite Cryptographie par parametrisation sur une courbe elliptique
US8385541B2 (en) * 2010-02-18 2013-02-26 King Fahd University Of Petroleum And Minerals Method of performing elliptic polynomial cryptography with elliptic polynomial hopping
IT1401937B1 (it) * 2010-09-16 2013-08-28 St Microelectronics Srl Metodo di generazione di una firma digitale
US8954749B2 (en) 2012-04-06 2015-02-10 At&T Intellectual Property I, L.P. Methods, systems, and product for hashing using twisted tabulation
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
US9366396B2 (en) 2013-01-30 2016-06-14 Cree, Inc. Optical waveguide and lamp including same
US9690029B2 (en) 2013-01-30 2017-06-27 Cree, Inc. Optical waveguides and luminaires incorporating same
US9519095B2 (en) 2013-01-30 2016-12-13 Cree, Inc. Optical waveguides
US9442243B2 (en) 2013-01-30 2016-09-13 Cree, Inc. Waveguide bodies including redirection features and methods of producing same
US9291320B2 (en) 2013-01-30 2016-03-22 Cree, Inc. Consolidated troffer
US9869432B2 (en) 2013-01-30 2018-01-16 Cree, Inc. Luminaires using waveguide bodies and optical elements
US9625638B2 (en) 2013-03-15 2017-04-18 Cree, Inc. Optical waveguide body
DE102013002184A1 (de) 2013-02-06 2014-08-07 Florian Thie Computerimplementiertes Verfahren zum Verschlüsseln von Daten
US9920901B2 (en) 2013-03-15 2018-03-20 Cree, Inc. LED lensing arrangement
US10400984B2 (en) 2013-03-15 2019-09-03 Cree, Inc. LED light fixture and unitary optic member therefor
US10436970B2 (en) 2013-03-15 2019-10-08 Ideal Industries Lighting Llc Shaped optical waveguide bodies
US10209429B2 (en) 2013-03-15 2019-02-19 Cree, Inc. Luminaire with selectable luminous intensity pattern
US9366799B2 (en) 2013-03-15 2016-06-14 Cree, Inc. Optical waveguide bodies and luminaires utilizing same
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
US10416377B2 (en) 2016-05-06 2019-09-17 Cree, Inc. Luminaire with controllable light emission
US11719882B2 (en) 2016-05-06 2023-08-08 Ideal Industries Lighting Llc Waveguide-based light sources with dynamic beam shaping
US20180063095A1 (en) * 2016-09-01 2018-03-01 AtCipher.com Limited Data encipherment prior to recipient selection
US10484173B2 (en) * 2017-01-03 2019-11-19 Nxp B.V. X-only generic mapping function for PACE protocol
US11146397B2 (en) * 2017-10-31 2021-10-12 Micro Focus Llc Encoding abelian variety-based ciphertext with metadata
CN108446101A (zh) * 2018-06-06 2018-08-24 北京信任度科技有限公司 多物理噪声源的随机数产生方法及产生系统
CN110348229B (zh) * 2019-06-11 2021-09-21 北京思源理想控股集团有限公司 数据的加密方法及装置、数据的解密方法及装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69113245D1 (de) * 1991-03-14 1995-10-26 Omnisec Ag Regensdorf Verschlüsselungssystem mit öffentlichem Schlüssel unter Verwendung elliptischer Kurven über Ringe.
US5351297A (en) * 1991-06-28 1994-09-27 Matsushita Electric Industrial Co., Ltd. Method of privacy communication using elliptic curves
US5272755A (en) * 1991-06-28 1993-12-21 Matsushita Electric Industrial Co., Ltd. Public key cryptosystem with an elliptic curve
US5159632A (en) * 1991-09-17 1992-10-27 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
US5271061A (en) * 1991-09-17 1993-12-14 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
US5442707A (en) * 1992-09-28 1995-08-15 Matsushita Electric Industrial Co., Ltd. Method for generating and verifying electronic signatures and privacy communication using elliptic curves
CA2150683C (en) * 1992-12-22 1999-09-07 Nicholas Demytko A cryptographic method
US5497423A (en) 1993-06-18 1996-03-05 Matsushita Electric Industrial Co., Ltd. Method of implementing elliptic curve cryptosystems in digital signatures or verification and privacy communication
CA2129203C (en) * 1994-07-29 2010-01-12 Gordon B. Agnew Public key cryptography utilizing elliptic curves
US5737424A (en) * 1996-06-04 1998-04-07 Software Security, Inc. Method and system for secure distribution of protected data using elliptic curve systems
JP2001526416A (ja) * 1997-12-05 2001-12-18 シキュアード インフォメイション テクノロジー、 インコーポレイテッド 楕円曲線暗号化演算の最適化用変換方法
CN100380860C (zh) * 1998-02-18 2008-04-09 因芬尼昻技术股份公司 用于在计算机上借助于椭圆曲线加密处理的方法和装置
CN1235446A (zh) * 1998-03-05 1999-11-17 松下电器产业株式会社 椭圆曲线变换装置、利用装置和利用系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE44220E1 (en) 1998-06-18 2013-05-14 Zih Corp. Electronic identification system and method with source authenticity
US8301886B2 (en) 2001-08-24 2012-10-30 Zih Corp. Method and apparatus for article authentication
US8667276B2 (en) 2001-08-24 2014-03-04 Zih Corp. Method and apparatus for article authentication

Also Published As

Publication number Publication date
WO1999004531A1 (en) 1999-01-28
DE69829967D1 (de) 2005-06-02
EP0997016A1 (en) 2000-05-03
JP3862500B2 (ja) 2006-12-27
DE69829967T2 (de) 2006-04-27
US6307935B1 (en) 2001-10-23
CA2297059A1 (en) 1999-01-28
EP0997016B1 (en) 2005-04-27

Similar Documents

Publication Publication Date Title
JP3862500B2 (ja) 直接埋め込み方式による高速楕円曲線暗号化の方法と装置
US5805703A (en) Method and apparatus for digital signature authentication
US5159632A (en) Method and apparatus for public key exchange in a cryptographic system
US6490352B1 (en) Cryptographic elliptic curve apparatus and method
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
JPS5950068B2 (ja) 公開キ−式の暗号装置
KR20000071078A (ko) 유한 필드상의 이산 대수 암호시스템의 원분 다항식 구조
Vanstone et al. Elliptic curve cryptosystems using curves of smooth order over the ring Z/sub n
KR19990077606A (ko) 타원곡선변환장치,이용장치및이용시스템
US6480606B1 (en) Elliptic curve encryption method and system
Jeng et al. An ECC-based blind signature scheme
CN111865555A (zh) 一种基于k-Lin假设的同态加密方法
Zhang et al. An Improved Public Key Cryptographic Algorithm Based on Chebyshev Polynomials and RSA
JP2004246350A (ja) 暗号化装置および復号化装置、並びにこれらを備えた暗号システム、暗号化方法および復号化方法
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
JP3278790B2 (ja) 公開鍵暗号方法及び公開鍵暗号システム
JP3050313B2 (ja) 楕円曲線変換装置、利用装置及び利用システム
JPH0798563A (ja) 楕円曲線による署名、認証及び秘密通信方式
JP3240723B2 (ja) 通信方法、秘密通信方法及び署名通信方法
Ghadi Improving the Robustness of RSA Encryption Through Input-Based Key Generation.
KR100368204B1 (ko) 정규 기저를 이용한 역원 계산 알고리즘
Diko et al. RSA & EXTENDED EUCLIDEAN ALGORITHM WITH EXAMPLES OF EXPONENTIAL RSA CIPHERS, RSA EXAMPLE SOLUTION WITH EXTENDED EUCLIDEAN ALGORITHM
Alsheikhy et al. Parallelized Multi-Key Multi-Stage Cryptography
KR20030043448A (ko) 엔티알유 암/복호화 장치
Satpathy Some cryptographic algorithms

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050817

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20051117

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20051125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060808

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060926

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Free format text: PAYMENT UNTIL: 20091006

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20091006

Year of fee payment: 3

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

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

Free format text: PAYMENT UNTIL: 20091006

Year of fee payment: 3

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

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

Free format text: PAYMENT UNTIL: 20091006

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101006

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111006

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121006

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20131006

Year of fee payment: 7

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

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