JP2000081841A - 暗号管理装置及び暗号化方法 - Google Patents
暗号管理装置及び暗号化方法Info
- Publication number
- JP2000081841A JP2000081841A JP10249722A JP24972298A JP2000081841A JP 2000081841 A JP2000081841 A JP 2000081841A JP 10249722 A JP10249722 A JP 10249722A JP 24972298 A JP24972298 A JP 24972298A JP 2000081841 A JP2000081841 A JP 2000081841A
- Authority
- JP
- Japan
- Prior art keywords
- hyperelliptic curve
- genus
- finite field
- integer
- elements
- 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
Links
Abstract
のヤコビ多様体をJ(C,Fq )とする時、上記ヤコビ
多様体J(C,Fq )の要素の数#J(C,Fq)が大
きな素数で割り切れるように、CPUビット幅Nに基づ
いて、超楕円曲線C生成部30が上記超楕円曲線Cを生
成する。上記ヤコビ多様体J(C,Fq )における演算
が、多倍長精度演算を必要としない通常の整数演算で行
うことができる。また、上記ヤコビ多様体J(C,
Fq )上定義される離散対数問題の困難さを安全性の根
拠に持つ。
Description
暗号化して安全に暗号通信する技術に関する。
ついて説明する。従来の超楕円曲線を用いた暗号化方法
には、Neal Koblitz著,“Hyperel
liptic Cryptosystems”,J.C
ryptology Vol.1,(1989),pp
139−150がある。また、公開鍵暗号及び離散対数
問題については、岡本龍明、太田和夫著、“暗号ゼロ知
識証明数論”、共立出版(1995)に記載されてい
る。
号、離散対数問題、超楕円曲線及びヤコビ多様体につい
て簡単に説明する。公開鍵暗号通信においては、利用者
毎に秘密鍵xと公開鍵Yの組が用意され、秘密鍵xは、
各利用者が秘密に保持しておく。公開鍵Yは、利用者自
身以外の一般に公開する。利用者Bが利用者Aに秘密に
データを送りたい時は、利用者Bは、利用者Aに対応す
る公開鍵Yを用いてデータを暗号化する。この暗号文
は、秘密鍵xを知る利用者Aにしか復号できない。離散
対数問題とは群Gの2つの要素g1 ,g2 に対して、g
1 =mg2 (mは整数)を満たすようなmを求める問題
である。群Gの要素の数が大きい場合、離散対数問題を
解くことは、計算量的に非常に困難になることが知られ
ている。この事実を利用して公開鍵暗号を設計すること
ができ、本発明においても離散対数問題を解く困難さを
暗号の安全性の根拠にして暗号化を行う。超楕円曲線C
とは、v2 +h(u)v=f(u)と表される方程式
で、曲線の種数をgとすると、f(u)は次数2g+1
のモニック多項式、h(u)は次数が高々gの多項式で
ある。種数gとは、曲線の特徴を表すパラメータであ
る。例えば、種数g=3の場合の超楕円曲線は、次数が
2g+1=2・3+1=7となり、例えば、v2 +v=
u7 となる。超楕円曲線Cと有限体Fq を決めると、超
楕円曲線Cに付随する有限体Fq 上のヤコビ多様体J
(C,Fq )(以下、単にJともいう)が構成される。
ヤコビ多様体J(C,Fq )の要素数#J(C,Fq )
(以下、単に#Jともいう)は、およそ#J=qg にな
ることが知られている。即ち、ヤコビ多様体の要素数#
Jが同じならば、種数gが大きくなるほど有限体Fq の
要素数qは小さくなる。
楕円曲線について説明する。楕円曲線とは、例えば、y
2 +xy=x3 +a1 x2 +a2 と表される3次式の方
程式で、種数gは1であり、次数は3(2g+1=2+
1=3)である。超楕円曲線は、種数が1以上の値をと
るのに対し、楕円曲線は、種数gは必ず1である。そし
て、超楕円曲線の種数g=1の場合は、楕円曲線とな
る。また、実際の計算は有限体(Fq )上で行われる
が、楕円曲線の群の要素は点(x,y)で表されるのに
対し、超楕円曲線に付随する有限体Fq 上のヤコビ多様
体J(C,Fq )の要素は、有限体Fq 係数の2つ多項
式a(u),b(u)により表現される。ここで、a
(u)の次数はg以下、b(u)の次数はa(u)の次
数未満である。また、有限体Fq の要素は、q=2n の
ときnビットの整数で表される。従って、超楕円曲線の
計算は、楕円曲線に比べて複雑となる。
を用いた暗号化方法を示すフローチャートである。図8
は、暗号鍵生成方法を示すフローチャートである。図9
は、暗号化方法を示すフローチャートである。図10
は、復号化方法を示すフローチャートである。図におい
て、S401は超楕円曲線C:v2 +h(u)v=f
(u)と、q個の要素を持つ有限体Fq と、ヤコビ多様
体Jの要素Dを選択するステップである。超楕円曲線C
の種数gは、この従来例ではg=2が選ばれている。S
402は整数xを選択し、整数xを秘密鍵とするステッ
プ、S403はヤコビ多様体J上でY=xDを計算し、
Yを公開鍵とするステップ、S501は平文mと整数r
を選択するステップ、S502はヤコビ多様体J上でC
1 =rDとC2 =rY+mを計算するステップ、S50
3は(C1 ,C2 )を平文mを暗号化した暗号文とする
ステップ、S601は暗号文(C1 ,C2 )と秘密鍵x
とからヤコビ多様体J上でm=C2 −xC1 を計算する
ステップ、S602はmを平文とするステップである。
方法を図8に基づいて説明する。暗号通信の利用者は、
まず、S401において、q個の要素を持つ有限体Fq
と、超楕円曲線C:v2 +h(u)v=f(u)を選択
する。この際、ヤコビ多様体の要素数#Jが大きな素数
で割り切れるように、超楕円曲線C及び有限体Fq を選
択しなければならない。これは、超楕円曲線を用いた公
開鍵暗号の解読を困難にするための条件である。次に、
ヤコビ多様体Jの要素Dを選択する。次に、S402に
おいて、整数xを選択する。整数xを秘密鍵として秘密
に保存しておく。S403において、公開鍵Yを計算す
る。公開鍵Yは、Y=xDとして計算される。次に、暗
号化方法を図9に基づいて説明する。まず、S501に
おいて、暗号化したいデータm(これを平文と呼ぶ)と
整数rを選択する。次に、S502において、ヤコビ多
様体J(C,Fq )上で、C1 =rDと、C2 =rY+
mを計算する。次に、S503において、C1 とC2の
組(C1 ,C2 )を暗号文とする。
する。まず、S601において、暗号文(C1 ,C2 )
と秘密鍵xとから、有限体Fq 上でm=C2 −xC1
(m=C2 −rY=C2 −rxD=C2 −xC1 )を計
算する。S602において、mを平文とする。
に、演算は全て有限体Fq 上で行われる。有限体Fq の
要素は、q=2n とすると、計算機上ではnビットの整
数として表現される。また、暗号が安全であるために
は、ヤコビ多様体J(C,Fq)の要素数#Jの大きさ
は、2160 程度なければならない。#Jは、曲線の種数
をgとすると、qg 程度であることから、従来のように
g=2の場合、十分安全な暗号化方法を得るためには、
有限体Fq の要素数qは、qg =2160 =(280)2 と
なり、q=280程度の大きさが必要であった。つまり、
従来の有限体Fqの要素は、計算機上では80ビット程
度の大きさの整数として表現されていた。従って、パー
ソナルコンピュータ等の32ビットCPU(セントラル
・プロセッシング・ユニット)を持つ計算機や、IC
(インテグレーテッド・サーキット)カード等の16ビ
ットCPUを持つ計算機では、有限体Fq の演算を行う
ためには、“多倍長演算”と呼ばれる技術が必要であっ
た。多倍長演算は、通常の整数演算よりも、演算速度が
遅くなるという問題がある。
いた暗号化方法は、以上のように構成されているため、
安全な暗号化方法を得るためには、有限体上の演算を多
倍長演算を用いて行わなければならず、暗号化及び復号
化の速度が遅くなるという課題があった。この暗号化及
び復号化の速度が遅くなるという課題があるため、超楕
円曲線を用いた暗号化方法は、研究レベルの段階であ
り、現在のところ実用化されていないという課題があっ
た。
になされたもので、ヤコビ多様体J(C,Fq )の有限
体Fq の要素数qを小さくし、多倍長演算を必要としな
い通常の整数演算で高速に暗号化及び復号化を行うこと
ができ、かつ、安全な暗号を得ることにある。即ち、本
発明の目的は、超楕円曲線を用いた暗号処理の実用的速
度の達成を目的とする。
装置は、超楕円曲線Cに付随する有限体Fq 上のヤコビ
多様体をJ(C,Fq )とするとき、CPUビット幅N
に基づいて超楕円曲線Cを生成する超楕円曲線C生成部
を備えたことを特徴とする。
幅Nに基づいて種数gを計算する種数g計算部と、CP
Uビット幅N以下の素数を拡大次数nとして選択する拡
大次数n選択部と、種数gから次数を決定して超楕円曲
線Cを順次生成するとともに、選択された拡大次数nに
基づく有限体Fq と上記超楕円曲線Cとからヤコビ多様
体J(C,Fq )の要素数#J(C,Fq )を計算し、
最大の素因数を求め、最大の素因数が暗号の安全性の目
安となる目安整数K以上となるような超楕円曲線Cを選
択する超楕円曲線C決定部とを備えたことを特徴とす
る。
の目安となる目安整数Kを入力し、CPUビット幅Nと
目安整数Kから種数gを計算することを特徴とする。
が目安整数Kより大きな値を持つ最大の素因数を求めら
れないとき、種数gの値を大きくすることを特徴とす
る。
#J(C,Fq )が大きな素数で割り切れるように上記
超楕円曲線Cと上記有限体Fq をとり、上記ヤコビ多様
体J(C,Fq )における演算が、多倍長精度演算を必
要としない通常の整数演算で行うことができることを特
徴とするとともに、上記ヤコビ多様体J(C,Fq )上
定義される離散対数問題の困難さを安全性の根拠に持つ
ことを特徴とする。
する。
であることを特徴とする。
であることを特徴とする。
11+u7 +u3 +1であり、上記有限体Fq は、F2 29
であることを特徴とする。
11+u9 +u5 +1であり、上記有限体Fq は、F2 29
であることを特徴とする。
り、上記有限体Fq は、F2 13 であることを特徴とす
る。
ト幅Nをメモリから取得する工程と、ヤコビ多様体Jの
目安整数Kをメモリから取得する工程と、CPUビット
幅Nと目安整数Kから種数gを計算する工程と、CPU
ビット幅Nから素数を拡大次数として選択する工程と、
種数gから次数を計算し、計算した次数に基づく超楕円
曲線Cを生成し、選択した拡大次数に基づく有限体Fq
と生成した超楕円曲線Cとから要素数#Jを計算し、最
大の素因数を検出し、メモリに記憶する工程と、メモリ
に記憶された最大の素因数が目安整数Kより大きい場合
に、メモリに記憶された最大の素因数を生成した超楕円
曲線Cを暗号に用い入る超楕円曲線Cとして決定する工
程とを備えたことを特徴とする。
化方法の一実施の形態を図1,図2,図3,図4に基づ
いて説明する。図1は、本実施の形態による暗号化方法
における鍵生成の方法を説明したフローチャートであ
る。図において、S101は本発明の特徴となる超楕円
曲線Cと有限体Fq とヤコビ多様体Jの要素Dを選択す
るステップ、S102は整数xを選択し、整数xを秘密
鍵とするステップ、S103はヤコビ多様体J上でY=
xDを計算し、Yを公開鍵とするステップである。
説明したフローチャートである。図において、S201
はデータmと整数rを選択するステップで、データmは
平文mとも呼ばれる。S202はヤコビ多様体J上で、
C1 =rDとC2 =rY+mを計算するステップ、S2
03はC1 とC2 の組(C1 ,C2 )を平文mを暗号化
した結果である暗号文とするステップである。
説明したフローチャートである。図において、S301
は暗号文(C1 ,C2 )と秘密鍵xとから、ヤコビ多様
体J上でm=C2 −xC1 を計算するステップで、S3
02は計算されたmを平文とするステップである。
用いた公開鍵暗号通信を説明した図である。図におい
て、701はデータ受信装置、702は整数x生成手
段、703はY=xD計算手段、704は公開鍵Y出力
手段、705は秘密鍵x記憶手段、706は暗号文入力
手段、707はデータm=C2 −xC1 計算手段、70
8はデータ送信装置、709はデータ入力手段、710
は公開鍵入力手段、711は整数r生成手段、712は
C1 =rDとC2 =rY+mを計算する計算手段、71
3は暗号文(C1 ,C2 )生成手段、714は暗号文出
力手段、715は暗号処理を管理する暗号管理装置、7
16は超楕円曲線及び有限体及びヤコビ多様体の要素D
を生成する生成手段、717は公開鍵記憶手段である。
方法を説明する。まず、S101において、超楕円曲線
Cと有限体Fq とヤコビ多様体J(C,Fq )の要素D
を選択する。超楕円曲線Cは、v2 +h(u)v=f
(u)と表される方程式で、曲線の種数をgとすると、
f(u)は次数2g+1のモニック多項式、h(u)は
次数が高々gの多項式である。gは、超楕円曲線Cの性
質を特徴付けるパラメータで種数と呼ばれる。超楕円曲
線Cと有限体Fq を決めると、それに付随するヤコビ多
様体J(C,Fq )が構成される。ヤコビ多様体Jの要
素において、加法を定義することができ、この加法に関
してヤコビ多様体は群をなす。ヤコビ多様体及び加法の
演算方法に関しては、前述の文献、Koblitz著、
“Hyperelliptic Cryptosyst
ems”,Journal of Cryptolog
y,(1988)に詳しく記載されている。有限体Fq
の要素は、q=2n の場合、nビットの整数として計算
機上で表現される。nが計算機のCPUのレジスタの大
きさを超える場合、有限体上の演算のために、多倍長演
算と呼ばれる技術が必要になり、演算が遅くなる。従っ
て、多倍長演算を必要とせず、通常の整数演算だけです
むように、有限体Fq を選択する。また、暗号通信の安
全性のために、ヤコビ多様体Jの要素の数#Jが大きな
素数で割り切れるように、ヤコビ多様体Jを構成する必
要がある。つまり、この条件を満たすように、超楕円曲
線Cと有限体Fq を選択しなければならない。超楕円曲
線Cと有限体Fq の選択については、後述する。次に、
S102において、整数xを選択する。この整数xは、
公開鍵暗号通信における秘密鍵として使用され、公開鍵
暗号通信の利用者各自に秘密に保持される。次に、S1
03において、ヤコビ多様体J上で、Y=xDを計算す
る。計算されたYは、公開鍵暗号通信において公開鍵と
して使用され、公開鍵Yは秘密に保持する必要はなく、
一般に公開される。
ず、S201において、暗号化したいデータmと整数r
を選択する。次に、S202において、S101におい
て選択されたヤコビ多様体J上で、Jの要素Dと公開鍵
Yを用いて、C1 =rDとC2 =rY+mを計算する。
S203において、C1 とC2 の組(C1 ,C2 )を暗
号文とした生成する。このように、暗号文は公開鍵Yを
用いて生成される。
ず、S301において、暗号文(C1 ,C2 )と、秘密
に保持された秘密鍵xとから、S101において、生成
されたヤコビ多様体J上でm=C2 −xC1を計算す
る。S302において、これを平文mとする。
化方法、復号化方法を用いて実際に公開鍵暗号通信を行
う方法を図4に基づいて説明する。データ送信装置70
8からデータ受信装置701へデータが送信される。ま
た、暗号管理装置715では暗号通信に使用されるシス
テム全体の共通パラメータである超楕円曲線C及び有限
体Fq 及びヤコビ多様体Jの要素Dが生成され、更に、
データ暗号化に使用される公開鍵Yの管理が行われる。
公開鍵Yは、システムの利用者全員が利用できるように
公開される。但し、秘密鍵xは、利用者各自が秘密に保
持しておかなくてはならない。
のパラメータを生成する。生成手段716において、超
楕円曲線Cと有限体Fq とヤコビ多様体JとJの要素D
を生成する。これらのパラメータは、前述のように、ヤ
コビ多様体Jの要素の数が大きな素数で割り切れるよう
に設定する。
生成手段716は、メモリ10と回路部20から構成さ
れている。メモリ10は、CPUビット幅Nレジスタ1
1と目安整数Kレジスタ12と最大素因数レジスタ13
から構成されている。回路部20は、超楕円曲線C生成
部30とヤコビ多様体Jの要素D生成部25から構成さ
れている。超楕円曲線C生成部30は、種数g計算部2
1と拡大次数n選択部22と超楕円曲線C決定部23と
から構成されている。
暗号演算処理を行うデータ送信装置708とデータ受信
装置701のCPUビット幅Nを記憶するレジスタであ
る。目安整数Kレジスタ12は、安全性の目安となるヤ
コビ多様体Jの要素数#Jの最大素因数の大きさを記憶
するレジスタである。最大素因数レジスタ13は、最大
素因数を記憶するレジスタである。CPUビット幅Nレ
ジスタ11に記憶されるCPUビット幅Nは、予めN=
32という値が設定されているものとする。目安整数K
レジスタ12に記憶される整数も予めK=2160 という
値が設定されているものとする。
る。安全な暗号通信を行うためのヤコビ多様体J(C,
Fq )は、ヤコビ多様体の要素数#Jを素因数分解した
際の最大素因数の大きさが、大きくなければならない。
本実施の形態では、2160 以上であればよいとしてい
る。ヤコビ多様体は、超楕円曲線Cの方程式と、有限体
Fq を決めれば一意に決まり、要素数#Jも一意に決ま
る。つまり、超楕円曲線Cと有限体Fq を適切に(ヤコ
ビ多様体の要素数#Jの最大素因数が大きくなるよう
に)決めることが必要である。本実施の形態では、qは
2のべき乗2n に設定し、かつ、nをCPUビット幅以
下にとることがFq を決める上での制約条件である(な
お、F2 nのnのことを数学では“拡大次数”と呼ぶ)。
ヤコビ多様体の要素数#Jは、だいたいqg (=2ng)
の大きさとなる。つまり、有限体F2 nの拡大次数nと、
超楕円曲線Cの種数g(超楕円曲線の次数は2g+1と
なる)を決めれば、ヤコビ多様体の要素数#Jの大きさ
はだいたい決まる。ここで重要なのは、ヤコビ多様体の
要素数#Jの大きさがだいたい決まる(だいたい2ngに
なる)ということで、正確なヤコビ多様体の要素数#J
の値は、2ng前後の値をとるということである。結果と
して、拡大次数nと種数gが同じでも超楕円曲線Cの方
程式を変えると、ヤコビ多様体の要素数#Jの大きさは
だいたい同じであっても、ヤコビ多様体の要素数#Jの
最大素因数の大きさは全く異なる。例えば、仮に、2ng
=100になったとすると、超楕円曲線Cのとり方によ
ってヤコビ多様体の要素数#Jは、102になったり、
99になったりする。102=2×51,99=3×3
×11であるから、ヤコビ多様体の要素数#Jの最大素
因数は、それぞれ51,11となり、暗号として好まし
いのはヤコビ多様体の要素数#J=102になる超楕円
曲線Cの方ということになる。従って、ヤコビ多様体J
の生成手順は、まず、種数gと拡大次数nを決めておい
て、超楕円曲線Cの方程式をいろいろ変えてヤコビ多様
体の要素数#Jとその最大素因数を計算し、最大素因数
が安全性を決めるパラメータ(目安整数K、K=
2160 )よりも大きくなる超楕円曲線Cが得られたら終
了とする。種数gと拡大次数nは、ヤコビ多様体の要素
数#Jの大きさはだいたい2ng前後なので、2ng>K
(=2160 )になるようにしておけばよい。なぜなら、
ヤコビ多様体の要素数#Jの最大素因数の大きさは、必
ずヤコビ多様体の要素数#Jより小さくなり、ヤコビ多
様体の要素数#Jがヤコビ多様体の要素数#Jに近い大
きさの最大素因数を持つようなヤコビ多様体Jを得るこ
とを期待するからである。拡大次数nは、CPUのレジ
スタ幅以下にする。種数gは、小さい方が暗号化速度が
速いので、2ng>K(=2160 )を満たす最小の整数g
を選ぶ。
いて詳細に説明する。図6は、図1に示したS101の
詳細なフローチャート図である。種数g計算部21は、
S11において、CPUビット幅Nレジスタ11からC
PUビット幅Nを取得する。例えば、ここでは、CPU
ビット幅N=32が取得されたものとする。次に、種数
g計算部21は、目安整数Kレジスタ12から目安整数
Kを取得する。ここでは、目安整数K=2160 とする。
次に、種数g計算部21は、S13において、種数gを
計算する。種数gは、K<2N(g)を満足する最小の整数
である種数gを選択する。この例においては、2160 <
(232)g =232g であるから、g>160/32=5
となり、g=6となる。即ち、種数g=6が求められ
る。種数g計算部21は、種数g=6を超楕円曲線C決
定部23に出力する。次に、拡大次数n選択部22は、
S14において、CPUビット幅N以下の最大素数を選
択する。この例においては、Nが32であるから、3
1,29,23,19,17,・・・という素数の中で
最大素数31が選択される。この素数31が拡大次数n
となる。また、こうして有限体Fq =F2 nが決定する。
超楕円曲線C決定部23は、S15において、種数gか
ら次数を計算する。次数は、2g+1である。超楕円曲
線C決定部23は、この次数を持つ超楕円曲線Cを1つ
生成する。超楕円曲線C決定部23は、超楕円曲線の方
程式を満足し、かつ、種数gから計算された次数を満足
する超楕円曲線Cを生成する。この際、いろいろな超楕
円曲線Cが考えられるが、とりあえず、ある1つの超楕
円曲線Cを生成するものとする。次に、超楕円曲線C決
定部23は、超楕円曲線Cと有限体F2 nとから要素数#
Jを計算する。この要素数#Jの計算は、既に知られて
いる計算方法を用いることにより、ある1つの要素数#
Jが計算される。次に、超楕円曲線C決定部23は、要
素数#Jを素因数分解し、素因数分解された素因数の
内、最大の素因数を最大素因数レジスタ13に記憶す
る。この時点で、素数31を用いた場合の要素数#Jの
最大の素因数が最大素因数レジスタ13に記憶される。
もし、この最大素因数の値が目安整数Kよりも大きな値
なら、生成した超楕円曲線Cを求めたかった超楕円曲線
Cとして決定する。もし、この最大素因数の値が目安整
数Kよりも小さな値なら、S15に戻り別な超楕円曲線
Cを生成して、S16,S17を繰り返す。最大素因数
レジスタ13は、これらの繰り返し処理の中で生じる最
大素因数の最大の値を保持するものとする。もし、超楕
円曲線Cを変えても、最大素因数の値が目安整数Kより
も大きな値をとらない場合は、S13に戻り種数gを大
きくして(例えば、g=g+1として)S14からS1
7を実行する。もし、それでも、この最大素因数の値が
目安整数Kよりも大きな値をとらない場合は、S13に
おいて、更に大きな値の種数gを生成してS14からS
17を繰り返す。最大素因数レジスタ13は、これらの
繰り返し処理の中で生じる最大素因数の最大の値を保持
するものとする。もし、これらの繰り返し処理により最
大素因数の値が目安整数Kよりも大きな値をとらない場
合は、超楕円曲線Cの生成の失敗を報告する。又は、安
全性は満たさないという警告を発しながら、最大素因数
レジスタ13に記憶された最大素因数の中の最大の値を
生成した超楕円曲線Cを取り敢えず選択する。超楕円曲
線Cが決定したら、次に、ヤコビ多様体Jの要素D生成
部25は、S18において、最大素因数レジスタ13に
記憶された最大素因数を位数として持つ、ヤコビ多様体
Jの要素Dを選択して出力する。また、有限体Fq と超
楕円曲線Cを出力する。以上が、生成手段716の動作
である。
x生成手段702で整数xが生成される。このxが、デ
ータ復号の際に使用される秘密鍵xとなる。秘密鍵x
は、秘密鍵x記憶手段705において秘密に保持し、他
の暗号通信利用者に知られないようにしておく。次に、
703において、秘密鍵xに対応する公開鍵Y=xDを
計算する。ヤコビ多様体の要素Dは、暗号管理装置71
5から受け取ったものを使用する。計算された公開鍵Y
は、公開鍵Y出力手段704から暗号管理装置715へ
送信され、公開鍵Yを暗号管理装置715が管理してお
く。以上で、データ送信装置708がデータ受信装置7
01へデータを送信するための前準備が終了する。
号化する処理を行う。まず、データ入力手段709に暗
号化したいデータmが入力される。次に、公開鍵入力手
段710に、暗号管理装置715の公開鍵記憶手段71
7から公開鍵Yを入力する。次に、整数r生成手段71
1において、整数rを生成する。次に、計算手段712
において、データmの暗号化処理を行う。計算手段71
2では、C1 =rDとC2 =rY+mが計算される。計
算されたC1 とC2 の組を、暗号文(C1 ,C2 )生成
手段713において(C1 ,C2 )として暗号文とす
る。生成された暗号文を暗号文出力手段714からデー
タ受信装置701へ出力する。
た暗号文をデータ受信装置701で復号する処理を説明
する。まず、暗号文(C1 ,C2 )が暗号文入力手段7
06へ入力される。入力された暗号文(C1 ,C2 )
は、予め保持されていた秘密鍵xを用いて、707にお
いて、m=C2 −xC1 を計算することにより、もとの
平文mに復号される。
よって送信すれば、秘密鍵xを知っているデータ受信者
のみが暗号文を平文mに復号できるため、安全な秘密通
信を行うことができる。また、超楕円曲線Cに付随する
ヤコビ多様体Jの群で構成される離散対数問題を解く難
しさに安全性の根拠をおいているので、安全な秘密通信
を行うことができ、かつ、有限体Fq 上の演算を多倍長
演算によらない通常の整数演算で行うことができるの
で、高速な暗号化復号化処理を行うことができる。
を介してデータ送信装置に送られたが、データ受信装置
から直接データ送信装置へ送ってもよい。
て決まる。また、有限体Fq の要素は、q=2n のとき
nビットの整数で表現することができる。もし、暗号の
安全性を一定値とするならば、即ち、qg を一定の値
(例えば、2160 )とするならば、図7に示すように、
種数gが大きくなれば要素数qは小さな値となる。即
ち、nの値は小さくなり、結果として、CPUビット幅
を小さくすることができる。例えば、図7に示すよう
に、種数g=5とすれば、要素数q=232となる。この
ように、有限体Fq の要素数q=2n をn≦32とすれ
ば、有限体の要素を32ビット以下の整数として計算機
上で表現でき、パーソナルコンピュータ等の32ビット
CPUを持つ計算機では通常の整数演算だけで、暗号化
演算行うことができる。
すれば、要素数q=216となる。このように、有限体F
q の要素数q=2n をn≦16とすれば、有限体の要素
を16ビット以下の整数として計算機上で表現でき、I
Cカード等の16ビットCPUを持つ計算機では通常の
整数演算だけで、暗号化演算行うことができる。
の暗号の安全性を確保する場合に、即ち、qg を一定と
する場合に、種数gを大きくすれば、要素数qが小さく
て済むという超楕円曲線Cの特性に着目したものであ
る。種数gが大きくなればなるほど、要素数qは小さく
て済み、ビット幅が少ない演算で暗号化を行うことがで
きる。現在のCPUビット幅Nは、16ビット、32ビ
ット、64ビットのように16の倍数、或いは、32の
倍数で増加している。要素数q=2n のnがこのCPU
ビット幅N(16の倍数、或いは、32の倍数)に限り
なく近い大きな値をとることにより、多倍長演算を全く
用いない通常の整数演算だけで暗号化演算を行うことが
できる。図7に示すように、種数g=5又は種数g=1
0を選択する場合に、32ビット、或いは、16ビット
のCPUで多倍長演算を用いない通常の整数演算だけで
暗号化演算を行うことが可能となる。
円曲線Cを1つだけ選択したが、複数の超楕円曲線Cを
選択して、選択した複数の超楕円曲線Cに対して並列的
にS15からS17までの演算を行っても構わない。ま
た、上記図6のS14において、最大の素数をしたが、
上位3つの素数を選択しても構わない。或いは、全ての
素数を用いても構わない。
スタ11には、1つのCPUビット幅を記憶するように
していたが、複数種類のデータ送信装置及びデータ受信
装置に対応して複数のCPUビット幅を記憶できるよう
にしても構わない。同様に、目安整数Kレジスタ12に
も暗号通信に要求される安全性に対応して、複数の目安
整数Kを記憶できるようにしても構わない。このよう
に、複数のCPUビット幅と複数の要素数を記憶してお
くことにより、データ送信装置及びデータ受信装置が使
用しているCPUビット幅にマッチした暗号演算を行う
ことができる。なお、データ送信装置及びデータ受信装
置のCPUビット幅が異なる場合は、CPUビット幅の
最大値、最小値又は最大公約数のいずれかをCPUビッ
ト幅Nレジスタ11に設定すればよい。
算だけで暗号化演算を行う場合に限らず、多倍長演算の
回数を減少させるためにも本思想を利用することができ
る。例えば、16ビットCPUにおいて、q=240の場
合の計算を行うと、3回の多倍長演算が必要となるが、
q=32以下ならば2回の多倍長演算で済む。従って、図
7に示す16ビットCPUに対して、最大素因数が小さ
くなってしまう等の理由によりq=216を選択できない
場合、217≦q≦232の範囲で種数を選択すれば、240
以上を選択するより多倍長演算が少なくて済む。
に記憶するCPUビット幅Nを32とし、目安整数Kレ
ジスタ12に記憶する整数の大きさを2160 とし、超楕
円曲線Cが、種数6のv2 +v=u13+u11+u7 +u
3 +1という曲線で、有限体Fq がF2 2 9 である場合を
説明する。この場合、ヤコビ多様体J(C,F2 29 )の
要素の数#Jは、次の値となる。 #J=2394273090206828340277
0955928504778901744426001
835009 また、#Jを素因数分解すると、 #J=23×1040988300089925365
3378676490654251696410620
00079783 となる。#J(C,F2 29 )の最大素因数は、170ビ
ットであり十分大きい。従って、このヤコビ多様体J
(C,F2 29 )上の離散対数問題を解くことは困難で、
このヤコビ多様体を用いれば、安全な暗号通信を行うこ
とができる。また、有限体F2 29 の要素は、29ビット
の整数として計算機上で表現でき、パーソナルコンピュ
ータ等の32ビットCPUを持つ計算機上では、多倍長
演算を用いない通常の整数演算だけで暗号化演算を行う
ことができるので、高速に暗号化復号化が行える。
に記憶するCPUビット幅Nを32とし、目安整数Kレ
ジスタ12に記憶する整数の大きさを2160 とし、超楕
円曲線Cが、種数6のv2 +v=u13+u11+u9 +u
5 +1という曲線で、有限体Fq がF2 2 9 である場合を
説明する。この場合、ヤコビ多様体J(C,F2 29 )の
要素の数#Jは、次の値となる。 #J=2394140667133746827470
2665025654849476018243620
483073 また、#Jを素因数分解すると、 #J=13×1841646667025959098
0540511558196038058475572
01575621 となる。#J(C,F2 29 )の最大素因数は、171ビ
ットであり十分大きい。従って、このヤコビ多様体J
(C,F2 29 )上の離散対数問題を解くことは困難で、
このヤコビ多様体を用いれば、安全な暗号通信を行うこ
とができる。また、有限体F2 29 の要素は、29ビット
の整数として計算機上で表現でき、パーソナルコンピュ
ータ等の32ビットCPUを持つ計算機上では、多倍長
演算を用いない通常の整数演算だけで暗号化演算を行う
ことができるので、高速に暗号化復号化が行える。
に記憶するCPUビット幅Nを32とし、目安整数Kレ
ジスタ12に記憶する整数の大きさを2160 とし、超楕
円曲線Cが、種数15のv2 +v=u31いう曲線で、有
限体Fq がF2 13 である場合を説明する。この場合は、
種数gの値を大きくしていった場合である。この場合、
ヤコビ多様体J(C,F2 13 )の要素の数#Jは、次の
値となる。 #J=5021681384921108766426
0612220617357860044193750
157493641217 また、#Jを素因数分解すると、 #J=31×853×189905887566505
6448370480362312043181940
180529824811619 となる。#J(C,F2 13 )の最大素因数は、181ビ
ットであり十分大きい。従って、このヤコビ多様体J
(C,F2 13 )上の離散対数問題を解くことは困難で、
このヤコビ多様体を用いれば、安全な暗号通信を行うこ
とができる。また、有限体F(213)の要素は、13ビ
ットの整数として計算機上で表現でき、ICカード等の
16ビットCPUを持つ計算機上では、多倍長演算を用
いない通常の整数演算だけで暗号化演算を行うことがで
きるので、高速に暗号化復号化が行える。
数問題を構成するヤコビ多様体Jの要素数#Jの最大素
因数が大きいので、安全な暗号通信を行うことができ
る。また、本発明によれば、ヤコビ多様体Jにおける有
限体Fq 上の演算を、多倍長演算を必要としない通常の
整数演算で行えるため、高速に暗号化復号化できる。
ト図である。
ト図である。
ト図である。
ト図である。
ある。
図である。
図である。
ト図である。
目安整数Kレジスタ、13 最大素因数レジスタ、2
0 回路部、21 種数g計算部、22 拡大次数n選
択部、23 超楕円曲線C決定部、25 ヤコビ多様体
Jの要素D生成部、30 超楕円曲線C生成部。
Claims (12)
- 【請求項1】 超楕円曲線Cに付随する有限体Fq 上の
ヤコビ多様体をJ(C,Fq )とするとき、 CPUビット幅Nに基づいて超楕円曲線Cを生成する超
楕円曲線C生成部を備えたことを特徴とする暗号管理装
置。 - 【請求項2】 上記超楕円曲線C生成部は、CPUビッ
ト幅Nに基づいて種数gを計算する種数g計算部と、 CPUビット幅N以下の素数を拡大次数nとして選択す
る拡大次数n選択部と、 種数gから次数を決定して超楕円曲線Cを順次生成する
とともに、選択された拡大次数nに基づく有限体Fq と
上記超楕円曲線Cとからヤコビ多様体J(C,Fq )の
要素数#J(C,Fq )を計算し、最大の素因数を求
め、最大の素因数が暗号の安全性の目安となる目安整数
K以上となるような超楕円曲線Cを選択する超楕円曲線
C決定部とを備えたことを特徴とする請求項1記載の暗
号管理装置。 - 【請求項3】 上記種数g計算部は、更に、暗号の安全
性の目安となる目安整数Kを入力し、CPUビット幅N
と目安整数Kから種数gを計算することを特徴とする請
求項2記載の暗号管理装置。 - 【請求項4】 上記種数g計算部は、超楕円曲線C決定
部が目安整数Kより大きな値を持つ最大の素因数を求め
られないとき、種数gの値を大きくすることを特徴とす
る請求項3記載の暗号管理装置。 - 【請求項5】 上記ヤコビ多様体J(C,Fq )の要素
数#J(C,Fq )が大きな素数で割り切れるように上
記超楕円曲線Cと上記有限体Fq をとり、 上記ヤコビ多様体J(C,Fq )における演算が、多倍
長精度演算を必要としない通常の整数演算で行うことが
できることを特徴とするとともに、上記ヤコビ多様体J
(C,Fq )上定義される離散対数問題の困難さを安全
性の根拠に持つことを特徴とする超楕円曲線を用いた請
求項1記載の暗号管理装置。 - 【請求項6】 上記種数gは、6以上であることを特徴
とする請求項1記載の暗号管理装置。 - 【請求項7】 上記有限体Fq の要素の数qは、232以
下であることを特徴とする請求項1記載の暗号管理装
置。 - 【請求項8】 上記有限体Fq の要素の数qは、216以
下であることを特徴とする請求項1記載の暗号管理装
置。 - 【請求項9】 上記超楕円曲線Cは、v2 +v=u13+
u11+u7 +u3 +1であり、上記有限体Fq は、F2
29 であることを特徴とする請求項7記載の暗号管理装
置。 - 【請求項10】 上記超楕円曲線Cは、v2 +v=u13
+u11+u9 +u5+1であり、上記有限体Fq は、F2
29 であることを特徴とする請求項7記載の暗号管理装
置。 - 【請求項11】 上記超楕円曲線Cは、v2 +v=u31
であり、上記有限体Fq は、F2 13 であることを特徴と
する請求項8記載の暗号管理装置。 - 【請求項12】 CPUビット幅Nをメモリから取得す
る工程と、 ヤコビ多様体Jの目安整数Kをメモリから取得する工程
と、 CPUビット幅Nと目安整数Kから種数gを計算する工
程と、 CPUビット幅Nから素数を拡大次数として選択する工
程と、 種数gから次数を計算し、計算した次数に基づく超楕円
曲線Cを生成し、選択した拡大次数に基づく有限体Fq
と生成した超楕円曲線Cとから要素数#Jを計算し、最
大の素因数を検出し、メモリに記憶する工程と、 メモリに記憶された最大の素因数が目安整数Kより大き
い場合に、メモリに記憶された最大の素因数を生成した
超楕円曲線Cを暗号に用いる超楕円曲線Cとして決定す
る工程とを備えたことを特徴とする暗号化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24972298A JP4243874B2 (ja) | 1998-09-03 | 1998-09-03 | 暗号管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24972298A JP4243874B2 (ja) | 1998-09-03 | 1998-09-03 | 暗号管理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000081841A true JP2000081841A (ja) | 2000-03-21 |
JP4243874B2 JP4243874B2 (ja) | 2009-03-25 |
Family
ID=17197234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP24972298A Expired - Lifetime JP4243874B2 (ja) | 1998-09-03 | 1998-09-03 | 暗号管理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4243874B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008053980A1 (en) * | 2006-10-27 | 2008-05-08 | Panasonic Corporation | Cryptographic method and apparatus for enhancing computation performance of a central processing unit |
-
1998
- 1998-09-03 JP JP24972298A patent/JP4243874B2/ja not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008053980A1 (en) * | 2006-10-27 | 2008-05-08 | Panasonic Corporation | Cryptographic method and apparatus for enhancing computation performance of a central processing unit |
US8204219B2 (en) | 2006-10-27 | 2012-06-19 | Panasonic Corporation | Cryptographic method and apparatus for enhancing computation performance of a central processing unit |
Also Published As
Publication number | Publication date |
---|---|
JP4243874B2 (ja) | 2009-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0997016B1 (en) | Method and apparatus for fast elliptical encryption with direct embedding | |
US6751318B2 (en) | Method and apparatus for digital signature authentication | |
US7961874B2 (en) | XZ-elliptic curve cryptography with secret key embedding | |
US20100020964A1 (en) | Key generation method using quadratic-hyperbolic curve group | |
US8184808B2 (en) | Chaotic asymmetric encryption process for data security | |
EP2460310B1 (en) | Symmetric-key encryption method and cryptographic system employing the method | |
WO1993006672A1 (en) | Method and apparatus for public key exchange in a cryptographic system | |
EP1330702B1 (en) | Method and system of using an insecure crypto-accelerator | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
US6175850B1 (en) | Scheme for carrying out modular calculations based on redundant binary calculation | |
US20040228484A1 (en) | Public key generation apparatus, shared key generation apparatus, key exchange apparatus, and key exchanging method | |
JP4690819B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置 | |
CA2298995C (en) | Apparatus and method for generating expression data for finite field operation | |
JP2001051832A (ja) | 乗算剰余演算方法および乗算剰余回路 | |
CN116488806A (zh) | 一种密钥封装方法、装置、设备及存储介质 | |
JP4243874B2 (ja) | 暗号管理装置 | |
JP3615405B2 (ja) | 素体上楕円曲線上の点の演算方法およびその装置 | |
JP2000132096A (ja) | スカラー倍算方法およびその装置 | |
Zhang et al. | High-Speed and High-Security Hybrid AES-ECC Cryptosystem Based on FPGA | |
Shams et al. | Cryptosystem an Implementation of RSA using Verilog | |
JP4237306B2 (ja) | 超楕円曲線c生成装置、暗号管理装置、データ送信装置及びデータ受信装置 | |
JP3278790B2 (ja) | 公開鍵暗号方法及び公開鍵暗号システム | |
US7480380B2 (en) | Method for efficient generation of modulo inverse for public key cryptosystems | |
JP4676071B2 (ja) | べき乗剰余演算方法、逆数演算方法およびそれらの装置 | |
JP2011254385A (ja) | 共通鍵生成システム及び共通鍵生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20050818 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050822 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080722 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080825 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080924 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081120 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20081128 |
|
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: 20081224 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081224 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120116 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130116 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130116 Year of fee payment: 4 |
|
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 |