明 細 書
暗号化 Z複号化プログラム、暗号化 Z複号化装置及び拡大体の乗算装 置
技術分野
[0001] 本発明は、暗号化/複号化プログラム、暗号化/複号化装置、及び暗号化または 復号化における乗算処理を実行する拡大体の乗算装置に関する。
背景技術
[0002] 従来、インターネットなどの電気通信回線を利用した情報通信において、送受信さ れるデータの秘匿性を保持するために、データの暗号化が行われている。すなわち 、平文データを送信する送信者は、平文データに暗号化処理を施して暗号データを 生成し、この暗号データを受信者に送信している。一方、暗号データを受信した受信 者は、暗号データに復号化処理を施して平文データを生成することにより、平文デー タを受け取ることができる。
[0003] このような暗号化及び復号化の方法として、昨今では公開鍵暗号と呼ばれる方法 が用いられている。公開鍵暗号では、公開鍵と秘密鍵があらかじめ設定され、所定の 平文データを送信する送信者に公開鍵を開示しており、送信者は公開鍵を用いて平 文データを暗号化することにより暗号データを生成し、受信者に送信している。受信 者は、暗号データを受信すると、秘密鍵を用いて暗号データを復号化して平文デー タを生成している。
[0004] ここで、平文データを暗号化する場合には、平文データを暗号化に用いる公開鍵 の鍵長に合わせた所定のデータ長ごとに分断して複数の単位長平文データを生成 し、各単位長平文データと公開鍵を用いて乗算処理を行うことにより単位長喑号デ一 タを生成し、所定数の単位長暗号データで構成された暗号データを生成してレ、る。
[0005] 一方、暗号データを復号化する場合には、暗号データを復号化に用いる秘密鍵の 鍵長に合わせた所定のデータ長ごとに分断して複数の単位長暗号データを生成し、 各単位長暗号データと秘密鍵を用いて乗算処理を行うことにより単位長平文データ を生成し、所定数の単位長平文データで構成された平文データを生成してレ、る。
[0006] このような公開鍵喑号には様々な方式が提案されており、 Rivest Shamir Adleman ( RSA)喑号、楕円曲線喑号、 E1G讓 al喑号などが知られている。
[0007] 昨今、パーソナルコンピュータなどの電子計算機の性能向上にともなって、各種の 暗号方法で暗号化された暗号データが解読されるおそれが高まってレ、る。すなわち 、暗号データは、秘密鍵さえ分かれば解読できることから、電子計算機によって手当 たり次第に秘密鍵を生成して復号化を試みることにより、時間はかかるものの解読さ れるおそれがあった。
[0008] そこで、各暗号方法では、安全性を高めるために公開鍵及び秘密鍵の鍵長を長く することが行われている。すなわち、公開鍵及び秘密鍵の鍵長を長くすると、解読に 用いる秘密鍵の数が飛躍的に増大し、現実的な時間内での解読を不可能とすること 力 Sできる力、らである。そのため、現在では、 RSA喑号では 1024ビット以上、楕円曲線 喑号では 160ビット以上、 ElGamal喑号では 1024ビット以上の鍵長が求められている
[0009] しかしながら、公開鍵及び秘密鍵の鍵長を長くした場合には、公開鍵を用いた乗算 処理による暗号化、及び秘密鍵を用いた乗算処理による復号化に多大な時間を要 することとなっていた。この場合、処理時間の短縮のためには、乗算処理の演算速度 が高速な演算手段が必要となることにより、安全性を高めるためのコストが増大するこ ととなつていた。
[0010] 一方で、現実的には、電気通信回線中を流れているデータにおいては重要度が様 々に異なっており、利用価値が高いために高度の秘匿性が必要なデータから、利用 価値が低レ、ために秘匿性を必要としなレ、データまでが存在して!/、る。
[0011] したがって、何れのデータに対しても同等の安全性で暗号化する必要はなぐ高い 安全性が要求されるデータには長レ、鍵長の公開鍵及び秘密鍵を用い、高!/、安全性 が要求されなレ、データには短レ、鍵長の公開鍵及び秘密鍵が用いられて!/、る。
[0012] また、パーソナルコンピュータなどのような高速な演算処理の実行が可能な装置で は、できるだけ長い鍵長の公開鍵及び秘密鍵による暗号化が利用されており、携帯 電話機や ICカードなどのような演算処理能力の乏しい装置では、比較的短い鍵長の 公開鍵及び秘密鍵による暗号化が利用され、保証され得る安全性の範囲内でデー
タの送受信が行われてレ、る。
[0013] 特に、パーソナルコンピュータなどの電子計算機では、複数種類の鍵長の公開鍵 及び秘密鍵が利用可能となっており、送信するデータに応じた安全性、あるいは送 信先の装置における乗算処理の処理能力などに応じて鍵長を変えて暗号化すること も行われており、鍵長に汎用性を持たせることが提案されている(例えば、特許文献 1 参照。)。
特許文献 1 :特開 2001— 051832号公報
発明の開示
発明が解決しょうとする課題
[0014] しかしながら、通常、鍵長の決定にともなって、乗算処理などの演算処理に必要と なる拡大体が、所定の拡大体に特定されてしまうために、鍵長に汎用性を持たせた 場合には、鍵長ごとの拡大体をあらかじめ準備しておかなければならなかった。した がって、鍵長の汎用性を高めようとすればするほど、鍵長に対応した拡大体を記憶し ておくためのより大きな記憶領域が必要となっていた。
[0015] したがって、現実的には、準備できる記憶領域の大きさの制限から、鍵長は 3〜5種 類程度しか準備されておらず、必ずしも十分な汎用性が提供できてはいなかった。そ のため、準備された鍵長の公開鍵及び秘密鍵では安全性が十分に保証できなレヽ状 態となつた場合に、安全性をさらに高めることはできなかった。
[0016] しかも、従来の暗号化または復号化における乗算処理では、多項式積の計算の後 に多項式剰余算の計算が必要であって、多項式積の計算が終了するまでは多項式 剰余算の計算を開始することができなかった。したがって、このような乗算処理を演算 回路を構成して実行する場合には、演算回路の並列化が困難であって、処理速度 の高速化を図りにくいとレ、う問題もあった。
[0017] 本発明者らは、このような現状に鑑み、任意な鍵長を選択可能としながら高速に乗 算処理を実行可能とすることにより、利便性の高い暗号化及び復号化のシステムを 構築可能とするために研究を行って、本発明を成すに至ったものである。
課題を解決するための手段
[0018] 本発明の暗号化/複号化プログラムでは、素数 pを標数とし、拡大次数 mの拡大体
Fmの 2つの元 A = {a,a,a,·.·, a }、 B = {b,b,b, · . ·, b }を、平文データと暗号化 p 0 1 2 m-1 0 1 2 m- 1
鍵、または暗号データと復号化鍵として、電子計算機で、平文データと暗号化鍵とを 乗算して暗号データの元 C = {c,c,c,···, c }を生成させる、または暗号データと復
0 1 2 m-1
号化鍵とを乗算して平文データの元 C = {c,c,c,···, c }を生成させる暗号化/復
0 1 2 m-1
号化プログラムにおいて、 km+1が素数であって、 F で pが原始元となる正整数 kを
km+1
特定する第 1のステップと、 2つの元 A, Bを、正整数 kを用いて素数 pを標数とする拡 大次数 kmの拡大体 F kmにおける 2つの元として乗算を行う第 2のステップと、この乗算
P
の結果を用いて部分体である拡大次数 mの拡大体 F mの元における乗算の結果を求
P
める第 3のステップとを有することとした。
[0019] さらに、本発明の暗号化/複号化プログラムでは、
0≤i≤m-l, 0≤j≤k-lとし、
く x〉力 Sxの mod(km+l)をとるものとして、
第 2のステップが、
0≤t≤k-lで、く pmt〉 = K[t]となる各 K[t]をそれぞれ求めるステップと、
0≤i≤ kmで、それぞれ 0 = q [く i〉]とするステップと、
0≤i≤m-l"C\ abmodp = q[< >]をそれぞれ求めるステップと、
0≤i<j≤m-lで、(a_a)(b-b)modp = Mをそれぞれ求めて、 0≤t≤k_lで q [く ρ (ρ]Κ i j i j
[t])>]に Mをそれぞれ足し込むステップと
を有することにも特徴を有するものであり、
第 3のステップが、
0≤i≤m-lで、かつ l≤t≤k_lで、 q [く ρ¾に q [く ( 1¾])〉]をそれぞれ足し込むステツ プと、
0≤i≤m-l \ kq [く 0〉]_q [く pi〉] = cをそれぞれ求めるステップと
を有することにも特徴を有するものである。
[0020] さらに、本発明の暗号化/複号化プログラムでは、
k=2k'の場合に、
F で pが原始元あるいは位数力 ¾'mかつ k'mが奇数となる正整数 k'とし、
2k'm+l
0≤i≤m-l, 0≤j≤2k,-lとし、
く x〉力 Sxの mod(2k'm+l)をとるものとして、
第 2のステップが、
0≤t≤k'-lT\く pmt〉=K[t]となる各 K[t]をそれぞれ求めるステップと、
0≤i≤ 2k'mで、それぞれ 0 = q [く i〉]とするステップと、
0≤i≤m-l"C\ ab modp = q[< >]をそれぞれ求めるステップと、
0≤i<j≤m-lで、(a -a)(b -b )modp = Mをそれぞれ求めて、 0≤t≤k'_lで q [く pi+(pj i j i j
K[t])〉]に Mをそれぞれ足し込むとともに、 q [く pi-(pjK[t])〉]に Mをそれぞれ足し込むス を有することにも特徴を有し、
第 3のステップが、
0≤i≤m-lで、かつ l≤t≤k'_lで、 q [く ρ に q [く ( 1¾])〉]をそれぞれ足し込むととも
を有することにも特徴を有するものである。
[0021] また、本発明の暗号化/複号化装置では、素数 pを標数とし、拡大次数 mの拡大 体 F mの 2つの元 A = {a,a,a,· . ·, a }、 B = {b,b,b, · . ·, b }を、平文データと喑号 p 0 1 2 m-1 0 1 2 m- 1
化鍵、または暗号データと復号化鍵として、平文データと暗号化鍵とを乗算させて元 C = {c,c,c,· · ·, c }を生成することにより暗号化する、または暗号データと復号化
0 1 2 m-1
鍵とを乗算させて元 C = {c,c,c,· · ·, c }を生成することにより復号化する演算器を
0 1 2 m-1
備えた暗号化/複号化装置において、元をそれぞれ記憶する第 1の記憶部と、拡大 次数 mを記憶する第 2の記憶部と、 km+1が素数であって、 F で pが原始元となる正 km+1
整数 kを演算器による演算に基づいて特定して記憶する第 3の記憶部と、 2つの元 A , Bを、正整数 kを用いて素数 pを標数とする拡大次数 kmの拡大体 F kmにおける 2つ
P
の元として演算器で乗算した結果を記憶する第 4の記憶部と、拡大次数 kmの拡大体 F kmの元の乗算結果を用いて演算器で所定の演算を行って、部分体である拡大次
P
数 mの拡大体 F mの元における乗算の結果を求めて記憶する第 5の記憶部とを有す
P
ることとした。
[0022] さらに、本発明の暗号化/複号化装置では、
0≤i≤m-l , 0≤j≤k-lとし、
く x〉力 Sxの mod(km+l)をとるものとして、
第 4の記憶部が、
0≤t≤k-lで、く pmt〉 = K[t]となる各 K[t]をそれぞれ求めて記憶する記憶部と、 0≤i≤kmT\それぞれ 0 = q [く i〉]として記憶する記憶部と、
0≤i≤m-lで、 ab modp = q [く ρ¾をそれぞれ求めて記憶する記憶部と、
0≤i<j≤m-l-C\ (a -a)(b -b )modp = Mをそれぞれ求めて記憶する記憶部と、
0≤ t≤ k- 1で q [く pi+(pjK[t])〉]に Mをそれぞれ足し込んで記憶する記憶部と を有することにも特徴を有し、
第 5の記憶部が、
0≤i≤m-lで、かつ l≤t≤k_lで、 q [く ρ に q [く ( 1¾])〉]をそれぞれ足し込んで記 憶する記憶部と、
0≤i≤m-lで、 kq [く 0〉]_q [く 〉] =(^をそれぞれ求めて記憶する記憶部と
を有することにも特徴を有するものである。
さらに、本発明の暗号化/複号化装置では、
k=2k'の場合に、
F で pが原始元あるいは位数力 ¾'mかつ k'mが奇数となる正整数 k'として、この正
2k'm+l
整数 k'を記憶する記憶部を有し、
0≤i≤m-l , 0≤j≤2k'-lとし、
く x〉力 Sxの mod(2k'm+l)をとるものとして、
第 4の記憶部が、
0≤t≤k'-lT\く pmt〉=K[t]となる各 K[t]をそれぞれ求めて記憶する記憶部と、
0≤i≤2k'mで、それぞれ 0 = q [く i〉]として記憶する記憶部と、
0≤i≤m-lで、 ab modp = q [く ρ¾をそれぞれ求めて記憶する記憶部と、
0≤i<j≤m-l-C\ (a -a)(b -b )modp = Mをそれぞれ求めて記憶する記憶部と、
0≤t≤k'-lで q [く pi+(pjK[t])〉]に Mをそれぞれ足し込し込んで記憶するとともに、 q[< pi_(pjK[t])〉]に Mをそれぞれ足し込んで記憶する記憶部と
を有することにも特徴を有し、
第 5の記憶部が、
0≤i≤m-lで、かつ l≤t≤k'_lで、 q [く ρ¾に q [く ( 1¾])〉]をそれぞれ足し込むととも に、 q [く p¾に q [く- (ρ ΐ])〉]をそれぞれ足し込んで記憶する記憶部と、
0≤i≤m-lで、 _q [く pi〉] = cをそれぞれ求めて記憶する記憶部と
を有することにも特徴を有するものである。
[0024] また、本発明の乗算装置では、素数 pを標数とし、拡大次数 mの拡大体 F mの 2つの
P
兀 A = {a ,a ,a ,· · ·, a }、 B = {b ,b ,b ,· · ·, b }を乗算して兀 C = {c ,c ,c ,· · ·, c }
0 1 2 m-1 0 1 2 m- 1 0 1 2 m- 1 を生成する演算器を備えた拡大体の乗算装置にお!/、て、元をそれぞれ記憶する第 1 の記憶部と、拡大次数 mを記憶する第 2の記憶部と、 km+1が素数であって、 F で p km+1 が原始元となる正整数 kを演算器による演算に基づいて特定して記憶する第 3の記 憶部と、 2つの元 A, Bを、正整数 kを用いて素数 pを標数とする拡大次数 kmの拡大 体 F kmにおける 2つの元として演算器で乗算した結果を記憶する第 4の記憶部と、拡
P
大次数 kmの拡大体 F kmの元の乗算結果を用いて演算器で所定の演算を行って、部
P
分体である拡大次数 mの拡大体 F mの元における乗算の結果を求めて記憶する第 5
P
の記憶部とを有することとした。
発明の効果
[0025] 本発明では、素数 pを標数とし、拡大次数 mの拡大体 F mの 2つの元 A={a ,a ,a , · · p 0 1 2
· , a }、 B二 {b ,b ,b ,· · ·, b }を乗算して元 C二 {c ,c ,c ,· · ·, c }を生成する際に、 m-l 0 1 2 m-1 0 1 2 m-1
km+1が素数であって、 F で pが原始元となる正整数 kを用いて、素数 pを標数とす
km+1
る拡大次数 kmの拡大体 F kmを定義体として想定して演算を行うことにより、拡大次数
P
mを任意の整数とすること力 Sできる。
[0026] すなわち、任意の拡大次数 mを用いても、 km+1が素数であって、 F で pが原始元
km+1
となる正整数 kを用いた拡大次数 kmの拡大体によって、演算に必要な拡大体を極め て容易に準備できるので、拡大次数 mごとに対応した拡大体を準備する必要がなぐ 拡大次数 mを無制限に選択することができる。
[0027] この拡大次数 mは、暗号化及び復号化における鍵長であって、鍵長を任意に選択 することができるので、必要に応じて暗号データの安全性を任意に選択可能とするこ と力できる。特に、安全性を高めたければ拡大次数 mをできるだけ大きくするだけで
よぐ暗号データの解読行為に対して極めて容易に対応できる。
[0028] しかも、拡大次数 kmの拡大体を定義体として用いることにより、乗算を、所定の元の 加算または減算と、乗算との繰り返しに分解して演算することができ、並列処理化が 容易であって、高速演算を可能とすることができる。
[0029] さらに、 k = 2k'となる k'を用いた場合には、所定の元の加算または減算と、乗算との 繰り返し回数を削減できることにより、演算のさらなる高速化を図ることができる。
図面の簡単な説明
[0030] [図 1]本発明に係る暗号化/複号化装置のブロック図である。
[図 2]本発明に係る暗号化/複号化プログラムにおけるフローチャートである。
[図 3]本発明に係る暗号化/複号化プログラムにおけるフローチャートである。
[図 4]他の実施形態のフローチャートである。
[図 5]既約多項式を求めるフローチャートである。
符号の説明
[0031] 10 演算器
20 不揮発性記憶部
30 揮発性記憶部
40 データ入出力部
50 データバス
発明を実施するための最良の形態
[0032] 本発明の暗号化/複号化プログラム、暗号化/複号化装置、及び拡大体の乗算 装置では、素数 pを標数とする拡大体を定義体とし、拡大次数 mの拡大体 F mの 2つ
P
の元 A={a,a,a,· · ·, & }、 B = {b,b,bパ · ·, b }を乗算して元 C = {c,c,c,· · ·,。
0 1 2 m-1 0 1 2 m- 1 0 1 2 m-
}を生成する際に、拡大次数 mに対応し、 km+1が素数であって、 F で pが原始元と
1 km+1
なる正整数 kを用いて素数 pを標数とする拡大次数 kmの拡大体 F kmを新たな定義体
P
として乗算を行い、この乗算の結果を用いて部分体である拡大次数 mの拡大体 F mの
P
元における乗算の結果を求めている。
[0033] すなわち、任意の拡大次数 mに対応して、 km+1が素数であって、 F で pが原始元 km+1
となる正整数 kを用いることにより、素数 pを標数とする拡大次数 mの拡大体 F mを部
分体とする拡大次数 kmの拡大体 F kmを定義体として用いることができ、拡大次数 m及 び標数 Pを任意としても 2つの元 A、 Bの乗算を行うことができる。
[0034] ここで、拡大次数 mは、暗号化及び復号化における鍵長に当たり、任意の拡大次 数 mが選択できるということは、鍵長を任意に選択できることを示しており、必要に応 じて適宜の鍵長として暗号データを生成することができる。
[0035] したがって、状況に応じて鍵長を選択することにより、暗号データの安全性と、暗号 化及び復号化の演算の負荷をバランスさせながら適宜の鍵長とした暗号データを生 成できる。
[0036] 例えば、標数 p = 25°°— 863の 500ビットの素数を用いた場合には、下表に示すように 、拡大次数 m、ノ ラメータとなる正整数 k、鍵長の組み合わせを選択できる。
[表 1]
[0037] ここで、鍵長が短くなる組み合わせを用いれば、暗号化及び復号化の演算速度を 向上させることができ、鍵長が長くなる組み合わせを用いれば、解読困難な暗号化デ ータを生成して安全性を向上させることができる。
[0038] 特に、拡大次数 mは、任意な正整数とすることができ、いくらでも大きくすることもで きる。また、標数 pも任意の素数とすること力できる。
[0039] なお、暗号化に必要となる鍵は、 Diffie— Hellman鍵交換アルゴリズムを用いて受け 渡すことにより、安全に受け渡すことができる。
[0040] すなわち、アリスとボブが鍵交換を行う場合、まず、アリスからボブに鍵データとして g, A:^^ ? 1 "を送信している。
[0041] ボブは、 Aを受信すると、 C =Ab = gab e F mを計算して、 B = gb e F mを計算し、 B = gb をアリスに送信している。
[0042] アリスは、 Bを受信して C = Ba=gabE F mを計算することにより、アリスとボブとを接続 するネットワーク上に鍵 gabを流すことなく共有することができる。
[0043] なお、 ICカードにおける認証用データに用いる鍵の場合には、 ICカードの作成時 にあらかじめ ICカードに鍵データを記憶させておくことにより、ネットワーク上に鍵を流 すことなく共有すること力 Sでさる。
[0044] あるいは、一般的な公開鍵暗号の場合であれば、ボブがアリスから所要のデータを 受け取る際に、ボブは予め公開鍵を公開しておく。
[0045] 例えば、 Elgamal喑号の場合であれば、ボブは秘密鍵 sを用いて、 g, B = g≡F mを
P
計算して公開しておく。
[0046] メッセージ Mを送信するアリスは、ボブの公開鍵データ g, Bをダウンロードして、メッ セージ Mに対して、
を計算することにより暗号化を行っている。ここで、 tは乱数である。
[0047] また、 Cの演算を行うに当たり、後述する本発明の暗号化/複号化プログラム、喑
1
号化/複号化装置、あるいは拡大体の乗算装置を用いて!/、る。
[0048] アリスは、 C、 Cをボブに送信し、ボブは、受信した C、 Cを用いて、 C /C sを演算
1 2 1 2 1 2 することによりメッセージ Mの復号化を行っている。すなわち、
C /C s = MBt/gts = Mgts/gts。
1 2
[0049] この復号化においても、後述する本発明の暗号化/複号化プログラム、暗号化/ 復号化装置、あるいは拡大体の乗算装置を用いて!/、る。
[0050] このようにメッセージ Mの復号化は、 sを秘密にもつボブのみが行える計算であり、 対称鍵喑号のようにある一つのパスワードを互いに共有する必要がなぐかつ安全性 が確保される長さの鍵を使用することで高い信頼性を有することができる。
[0051] 図 1は、本実施形態の暗号化/複号化装置のブロック図である。なお、この暗号化 /復号化装置は拡大体の乗算装置でもある。
[0052] 暗号化/複号化装置は、 CPU (中央演算装置)などの演算器 10と、この演算器 10 が実行するプログラムなどを記憶した不揮発性記憶部 20と、プログラムの実行にとも なって必要となるデータを一時的に格納する揮発性記憶部 30とを備えている。不揮 発性記憶部 20は、いわゆる ROM (Read Only Memory)あるいはハードディスクなど の不揮発性の記憶手段で構成し、揮発性記憶部 30はいわゆる RAM (Random Acces
s Memory)で構成して!/、る。
[0053] 特に、揮発性記憶部 30は、複数のレジスタを備えており、それぞれのレジスタで所 要のデータを記憶している。
[0054] 不揮発性記憶部 20には、本実施形態の暗号化/複号化プログラムを記憶しており
、この暗号化/複号化プログラムを起動させることにより、必要に応じて暗号化/復 号化プログラムを揮発性記憶部 30に展開して、暗号化あるいは復号化の演算を行つ ている。
[0055] さらに、暗号化/複号化装置にはデータ入出力部 40を設けており、このデータ入力 部 40を介して任意の拡大次数 mの値を入力可能とし、入力された拡大次数 mの値に 基づいて暗号化を実行可能としている。あるいは、拡大次数 mの値だけでなぐ標数 pの値を変更可能とすることもできる。
[0056] また、データ入出力部 40では、公開鍵となる鍵データの出力や、暗号化されたデー タの入出力などを行っている。図 1中、 50はデータバスである。
[0057] 演算器 10では、必要に応じて、揮発性記憶部 30に記憶されている所要の鍵データ 、標数 Pの値、拡大次数 mなどを不揮発性記憶部 20に記憶させてもよい。
[0058] 暗号化/複号化装置あるいは拡大体の乗算装置は、このように暗号化/復号化プ ログラムを実行する電子計算機などの装置に限定するものではなぐ暗号化/復号 化プログラムに相当する演算を実行する演算回路を備えた演算用デバイスとして、演 算処理の高速化を図ることもできる。
[0059] 以下において、暗号化あるいは復号化における 2つの元の乗算について説明する
[0060] まず、第 1実施形態として、以下の条件下における元 Aと元 Bの積の演算について 説明する。ここで、この積の演算が暗号化である場合には、元 Aと元 Bのいずれか一 方が暗号化鍵であって、他方が暗号化鍵の鍵長ごとに分断された単位長平文デー タであり、積の演算が復号化である場合には、元 Aと元 Bのいずれか一方が復号化 鍵であって、他方が復号化鍵の鍵長ごとに分断された単位長暗号データである。
[0061] ·素数 pを標数とする拡大体を定義体とする。
•拡大次数 mに対し、 km+1が素数であって、 F で pが原始元となる適当な正整数 k
• 0≤i≤m-l, 0≤j≤k-lo
•く x〉が xの mod(km+l)をとるものとする。
• ωを 1の原始 km+1乗根とする。
}を拡大次数 mの拡大体 F mの元 A
0 1 2 m-1 p
•{b ,b ,b ,···, b }を拡大次数 mの拡大体 F mの元 B
0 1 2 m-1 p
[0062] なお、任意の正整数 mに対して、 km+1が素数となる正整数 kが少なくとも k<mの範 囲に存在していることは一般的に証明済みの事実であり、正整数 kを特定する専用 プログラムを用いて容易に見つけ出すことができる。
[0063] 通常、元 Aと元 Bの積 C=ABは、 CVMA (Cyclic Vector Multiplication Algorithm) で計算されるが、部分体における演算の閉性から元 Aと元 Bの積 Cも部分体 F mの元
P
なること力、ら、積 Cのベクトル表現においても、基底ベクトル ω'と ω"のベクトル係数が 等しくなる。
であ ·ο。
[0065] したがって、求める必要があるのは 0≤i≤m-lでの ω 'の各係数 cのみであり、 [数 5コ
C =
として、係数 Ciは、図 2に示すフローチャートに基づく暗号化/複号化プログラムによ り、パーソナルコンピュータなどの電子計算機での演算によって求めることができる。
[0066] ただし、この場合、直接、 8p|m(p-l)となる拡大体を構成することはできない。そこで 、 8p|m(p_l)となる拡大体を構成する場合には、拡大次数 mの偶数因数部分 mと奇数
E
因数部分 mとに分けて (m = m -m )、それぞれを逐次拡大体に分けて拡大すること
0 E 0
により、 8p|m(p-l)となる拡大体にも対応可能とすることができる。なお、場合によって は後述する第 2実施形態を組み合わせて用いることが必要となることもある。
[0067] 暗号化の場合には、まず、電子計算機では拡大次数 mを設定する(ステップ S l)。
なお、復号化の場合には、電子計算機は、秘密鍵または公開鍵の鍵長から拡大次 数 mを特定することもできる。
[0068] 次いで、電子計算機は、設定された拡大次数 mに基づいて、 km+1が素数であって 、 F で pが原始元となる適当な正整数 kを専用プログラムを用いて特定する(ステツ km+1
プ S2)。なお、前述したように、 k< mの範囲で km+1が素数となる正整数 kは少なくと も 1つは特定でき、電子計算機は、比較的短時間で正整数 kの特定処理を終了する こと力 Sでさる。
[0069] 次いで、電子計算機は、 0≤t≤k-lで、く pmt〉 = K[t]となる各 K[t]をそれぞれ求め(ス テツプ S3)、さらに、 0≤i≤kmで、それぞれ 0 = q [く i〉]とする(ステップ S4)。
[0070] 次いで、電子計算機は、 0≤i≤m-lで、 ab modp = q [く ρ¾をそれぞれ求め(ステップ S 5)、その後、 0≤i<j≤m-lで、(a-a)(b -b )modp = Mをそれぞれ求めて、 0≤t≤k_ i j i j
[0071] その後、電子計算機は、拡大次数 mの拡大体 F mではなぐ拡大次数 kmの拡大体
P
を定義体として用いていることによる処理として、 0≤i≤m-lで、かつ l≤t≤k_lで、 q [く ρ¾への q [く (ρ ΐ])〉]の足し込みをそれぞれ行って(ステップ S 7)、最後に、 0≤i≤ m-1で、 kq [く 0〉]_q [く p = cを求めて!/、る(ステップ S8)。
[0072] このように、 cは、拡大次数 kmの拡大体 F kmにおける所定の元の加算または減算と
、乗算との繰り返しに分解して演算を行うことができ、並列処理化が容易であって、高 速演算を可能とすることができる。
[0073] 特に、演算の負荷が小さいことにより、携帯電話機や ICカードなどの演算機能の乏 しい装置でも容易に乗算処理を実行でき、し力、も公開鍵及び秘密鍵の鍵長の変更を 可倉 とすること力 Sでさる。
[0074] さらに、乗算処理における演算は、演算処理回路として半導体基板上に形成して 乗算処理用半導体デバイスとすることもでき、この乗算処理用半導体デバイスを備え た暗号化/複号化装置として、暗号化及び復号化のさらなる高速化を図ることができ
、しかも、並列処理化が可能であって、一層の高速化を図ることができる。また、拡大 体の乗算装置として乗算処理用半導体デバイスを用いることもできる。
[0075] すなわち、乗算処理用半導体デバイスでは、半導体基板上に、所要の演算を実行 可能とした演算器を形成するとともに、各記憶部として以下のレジスタ及びレジスタ群 を形成している。
-標数 Pを記憶するレジスタ。
•拡大次数 mを記憶するレジスタ。
•拡大次数 mに基づく拡大体 F mの元 Aを記憶するレジスタ群。
•拡大次数 mに基づく拡大体 F mの元 Bを記憶するレジスタ群。
•設定された拡大次数 mに対応した正整数 kを特定して記憶するレジスタ。
•0≤t≤k-lで、く pmt〉 = K[t]となる各 K[t]をそれぞれ求めて記憶するレジスタ群。 .0≤ i≤ km- 1で、それぞれ 0 = q [く i〉]として記憶するレジスタ群。
•0≤i≤m-lで、 ab modp = q [く ρ¾をそれぞれ求めて記憶するレジスタ群。
•0≤i<j≤m-l-C\ (a -a)(b -b )modp = Mをそれぞれ求めて記憶するレジスタ群。
• 0≤ t≤ k-1で q [く pi+(pjK[t])〉]に Mをそれぞれ足し込んで記憶するレジスタ群。
•0≤i≤m-lで、かつ l≤t≤k_lで、 q [く p に q [く (ρ ΐ])〉]をそれぞれ足し込んで記 'I思 レン タ 。
• 0≤ i≤m-lで、 kq [く 0〉]_q [く ρ = cをそれぞれ求めて記憶するレジスタ群。
[0076] これらのレジスタ及びレジスタ群を設けることにより、各演算は並列化が可能である
ので、並列処理を行うことにより乗算処理をさらに高速化することができる。したがって 、高速な暗号化及び復号化を可能とする暗号化/複号化装置、あるいは拡大体の 乗算装置を提供できる。
[0077] この乗算処理用半導体デバイスを所要の実装ボードに装着することにより、高速な 乗算処理を可能とする実装ボードを提供でき、この実装ボードを用いて携帯電話機 や電子計算機などを構成することにより、高速な暗号化及び復号化が可能であって 、しかも公開鍵及び秘密鍵の鍵長の長さを自在に可変とした携帯電話機や電子計 算機などを提供することができる。
[0078] 以下において、第 2実施形態として、以下の条件下における元 Aと元 Bの積の演算 について説明する。ここで、第 1実施形態との違いは、 k= 2k'となる k'を用いて演算を 行うことである。すなわち、
•素数 pを標数とする拡大体を定義体とする。
•拡大次数 mに対し、 2k'm+ lが素数であって、 F で pが原始元あるいは位数力 ¾'m
2k'm+l
かつ k'mが奇数となる適当な正整数 k'。
• 0≤i≤m - l , 0≤j≤2k' - l o
.く x〉が xの mod(2k'm+ l)をとるものとする。
• ωを 1の原始 2k'm+ l乗根として、 τ = ω + ω— 1とする。
}を拡大次数 mの拡大体 F mの元 A
0 1 2 m-1 p
[数 6]
'
' {b,b,b, · . ·, b }を拡大次数 mの拡大体 F mの元 B
部分体における演算の閉性から元 Aと元 Bの積 Cも部分体 F mの元なることから、積
P
Cのベクトル表現においても、基底ベクトル τ 'と τ "のベクトル係数が等しくなる。
[0080] ここで、表記の便宜上、
[数 8コ
, (ρ' )
て = '
及び、
[数 9コ て''二て \ 1
である。
[0081] したがって、求める必要があるのは 0≤i≤m- lでの τ 'の係数 cのみであり、
として、係数 cは、図 3に示すフローチャートに基づくプログラムにより、パーソナルコ ンピュータなどの電子計算機での演算によって求めることができる。
[0082] ただし、この場合には、 4p|m(p- l)となる拡大体を構成することはできない。そこで、 4 p|m(p- l)となる拡大体を構成する場合には、拡大次数 mの偶数因数部分 mと奇数因
E
数部分 mとに分けて (m = m - m )、それぞれを逐次拡大体に分けて拡大することに
0 E 0
より、 4p|m(p- l)となる拡大体にも対応可能とすることができる。なお、場合によっては 前述した第 1実施形態を組み合わせて用いることが必要となることもある。
[0083] 暗号化の場合には、まず、電子計算機では拡大次数 mを設定する(ステップ Tl)。
なお、復号化の場合には、電子計算機は、秘密鍵または公開鍵の鍵長から拡大次 数 mを特定する。
[0084] 次いで、電子計算機は、設定された拡大次数 mに基づいて、 2k'm+ lが素数であつ て、 F で pが原始元あるいは位数力 ¾'mかつ k'mが奇数となる適当な正整数 k'を専
2k'm+l
用プログラムを用いて特定する(ステップ T2)。なお、前述したように、 2k' < mの範囲 で 2k'm+ lが素数となる正整数 k'は少なくとも 1つは特定でき、電子計算機は、比較的 短時間で正整数 k'の特定処理を終了することができる。
[0085] 次いで、電子計算機は、 0≤t≤k'- l T\く pmt〉 = K[t]となる各 K[t]をそれぞれ求め(
ステップ T3)、さらに、 0≤i≤2k'm \それぞれ 0 = q [く i〉]とする(ステップ T4)。
[0086] 次いで、電子計算機は、 0≤i≤m-l \ ab modp = q [く ρ¾をそれぞれ求め(ステップ T5)、その後、 0≤i<j≤m-lで、(a -a)(b -b )modp = Mをそれぞれ求めて、 0≤t≤k' i j i j
-1で q [く pi+(pjK[t])〉]への Mの足し込みをそれぞれ行うとともに、 q [く pi— (p]K[t])〉]への [0087] その後、電子計算機は、拡大次数 mの拡大体 F mではなぐ拡大次数 k'mの拡大体 を定義体として用いていることによる処理として、 0≤i≤m-lで、かつ l≤t≤k_lで、 q [く p¾への q [く (ρ ΐ])〉]の足し込みをそれぞれ行うとともに、 q [く ρ¾への q [く- (ρ ΐ])〉] の足し込みをそれぞれ行って (ステップ Τ7)、電子計算機は、最後に、 0≤i≤m-l-e 、 - q [く pi〉] = cを求めている(ステップ T8)。
[0088] このように、 cは、所定の元の加算または減算と、乗算との繰り返しに分解して演算 を行うことができ、並列処理化が容易であって、高速演算を可能とすることができる。
[0089] また、図 3に示したフローチャートの乗算処理の演算も、演算処理回路として半導 体基板上に形成して乗算処理用半導体デバイスとすることもでき、この乗算処理用 半導体デバイスを備えた暗号化/複号化装置として、暗号化及び復号化のさらなる 高速化を図ることができ、しかも、並列処理化が可能であって、一層の高速化を図る こと力 Sでさる。また、拡大体の乗算装置として乗算処理用半導体デバイスを用いること もできる。
[0090] この場合、乗算処理用半導体デバイスでは、半導体基板上に、所要の演算を実行 可能とした演算器を形成するとともに、各記憶部として以下のレジスタ及びレジスタ群 を形成している。
-標数 Ρを記憶するレジスタ。
•拡大次数 mを記憶するレジスタ。
•拡大次数 mに基づく拡大体 F mの元 Aを記憶するレジスタ群。
•拡大次数 mに基づく拡大体 F mの元 Bを記憶するレジスタ群。
•設定された拡大次数 mに対応した正整数 k'を特定して記憶するレジスタ。
•0≤t≤k'-lで、く pmt〉 = K[t]となる各 K[t]をそれぞれ求めて記憶するレジスタ群。 •0≤i≤ 2k'm_lで、それぞれ 0 = q [く i〉]として記憶するレジスタ群。
•0≤i≤m-lで、 ab modp = q [く ρ¾をそれぞれ求めて記憶するレジスタ群。
•0≤i<j≤m-l-C\ (a -a)(b -b )modp = Mをそれぞれ求めて記憶するレジスタ群。
•0≤t≤k'-lで q [く pi+(pjK[t])〉]に Mをそれぞれ足し込し込んで記憶するとともに、 q[< pi-(pjK[t])〉]に Mをそれぞれ足し込んで記憶するレジスタ群。
•0≤i≤m-lで、かつ l≤t≤k'_lで、 q [く ρ¾に q [く ( 1¾])〉]をそれぞれ足し込んで記 憶するとともに、さらに、 q [く p¾に q [く- (ρ ΐ])〉]をそれぞれ足し込んで記憶するレジス タ群。
• 0≤ i≤m_lで、 _q [く ρ¾ = cをそれぞれ求めて記憶するレジスタ群。
[0091] これらのレジスタ及びレジスタ群を設けることにより、第 1の実施形態の場合と同様 に、各演算は並列化が可能であるので、並列処理を行うことにより乗算処理をさらに 高速化すること力できる。したがって、高速な暗号化及び復号化を可能とする暗号化
/復号化装置、あるいは拡大体の乗算装置を提供できる。
[0092] さらに、 km+1を素数とし、 Sを mod km+1における位数 kの部分巡回乗法群として、 k m次の AOP (All One Polynominal) (xkm+1— 1) / (x— 1)の零点を ωとして、
[数 11] =∑ωα
aeS
で与えられる γを用い、次の集合を考える。
[0093] ほ女 12]の集合が拡大体 F mにおいて正規基底を成すことは、 km/eが mと互いに素
P
となることと必要十分である。ここで、 eは pの mod km+1での位数である。前述した第 1 実施形態及び第 2実施形態は、この正規基底を用いた乗算に適用可能となっている
[0094] すなわち、
•eを F における元 pの位数とする。
km+ 1
•e =km e
·lの原始k乗根ε eF とする。
km+1
* \3. ,3. ,3. , * * * , 3. }を拡大次数 mの拡大体 F mの元 A
0 1 2 m-1 p
[数 13]
m-ι
•{b,b,b, · . ·, b }を拡大次数 mの拡大体 F mの元 B
0 1 2 m-1 p
[数 14] B二∑ '
[0095] このとき、部分体における演算の閉性から元 Aと元 Bの積 Cは、
[数 15]
C = AB = YCirpi
(=0
として、係数 cは、図 4に示すフローチャートに基づくプログラムにより、パーソナルコ ンピュータなどの電子計算機での演算によって求めることができる。
[0096] ここで、暗号化の場合には、まず、電子計算機では拡大次数 mを設定する(ステツ プ Ul)。なお、復号化の場合には、電子計算機は、秘密鍵または公開鍵の鍵長から 拡大次数 mを特定する。
[0097] 次いで、電子計算機は、設定された拡大次数 mに基づいて、 km+1が素数であって 、 e'( = km/e)と mとが互いに素となる適当な正整数 kを専用プログラムを用いて特 定する(ステップ U2)。正整数 kの特定にともなって、 1の原始 k乗根の εを特定する( ステップ U3)。
[0098] 次いで、電子計算機は、 1= [0], 0 = r[0]とする(ステップ U4)。
[0099] 次いで、電子計算機は、 0≤i≤mで、 0 = q [く i〉]とする(ステップ U5)。
[0100] 次いで、電子計算機は、 l≤t≤k-lで、く K[t_l] ε〉 = K[t]とする(ステップ U6)。
[0101] 次いで、電子計算機は、 0≤t≤m-lであって、 0≤t≤k-lで、 1+1= く 1¾]〉]とす る(ステップ U7)。
[0102] 次いで、電子計算機は、 0≤t≤m-l \ abmodp = q[i+l]をそれぞれ求める(ステツ
プ U8)。
[0104] 最後に、電子計算機は、 0≤i≤m-lで、 kq [く 0〉]_q[i+l] = cを求めてい
U10) o
[0105] なお、 kが偶数の場合には、ステップ U9において kq [く 0〉] = 0とすることができる。
[0106] このように、より多くの正規基底に対して適用可能とすることができる。しかも、 kの値 をより小さくすることができるので、演算回数の削減による演算処理の高速化を図るこ ともできる。
[0107] なお、前述したように、 8p|m(p-l)あるいは 4p|m(p-l)などのように、 mが pの倍数であ る場合には拡大体を構成できないことがあるが、拡大次数 mを偶数因数部分 mと奇
E
数因数部分 mとに分けて、それぞれを逐次拡大体に分けて拡大することにより、奇
0
標数 Pに対しての拡大体の構成を可能とすることができ、上記の制限を排除すること ができる。
[0108] すなわち、例えば、 F 4Pを構成する場合を考える。この場合には、最初に F 4の拡大
P P
体を構成し、次いで、この拡大体を p次逐次拡大することにより、奇標数 pが 4と互い に素であることから F 4Pで表される拡大体を構成できる。すなわち、任意の奇標数及
P
び任意次数の拡大体を構成することが可能である。
[0109] 本発明は数学的に見た場合には、既約多項式として法多項式を準備することなく 拡大体における乗算や除算を行えるものであり、見方を変えれば本発明の考え方を 利用することにより、任意次数の既約多項式を生成することができることを示している
[0110] ここで、例えば F 4の (1,2,1,2)というベクトル表現を持つ元は F 2の元である。真部分
P P
体に含まれないような元を真性元と呼ぶこととして、 F mの真性元を αとした場合、そ
Ρ
の αの最小多項式、すなわち αを零点にもつ F上の最小次数の多項式 Μ (X)が求
P
まれば、それは F上の m次既約多項式となっている。
[0111] なお、 M (X)は、次式で表される。
Ma (x) =(x- - p)...[x- ap"'リニ "' + am_xxm~x +--- + a{+a a0,al,a2,--,am_l eFp
[0112] ここで、次式の計算式を考えることにする c
[数 17] am.x = -Trio)
(- lk— ( -'·_·/
Tr(x) = x + xp +xp2 +·.. + ;
[0113] 上式で、 i = m-2,m-3,' · ·,2,1,0の順に計算されることにより既約多項式が求められ ることとなる。
[0114] すなわち、拡大体 F mの任意の真性元 αの最小多項式は、図 5に示すフローチヤ一
Ρ
トに基づくプログラムにより、下のようにして求めることができる。
[0115] まず、電子計算機では、真性元 αのベクトル表現 (X を設
0,χ
1,χ
2, · · ·,χ ) 定する(ス m-1
テツプ Wl)。ここで、真性元 αの最小多項式 Μ (X)は次式となるものとする。
[0116] 次いで、電子計算機は、 l≤i≤mで、 T[i] = Tr ')とし(ステップ W2)、 a[m-l]=-T[l
[0117] 次いで、電子計算機は、 m-2≥i≥0で、 0 = Mとし、 0≤j≤m-l-iで、 -a[m-j]Tr( a '
[0118] 次いで、電子計算機は、
(ステップ W5)。
[0119] これにより、 p〉mを満たす任意の既約多項式を求めることができる。なお、前述し た処理は、素体 Fではない部分体に関する最小多項式の特定に用いることもできる
[0120] このように任意の既約多項式を求めることができることによって、異なる定義体間の 基底変換を可能とすることができる。
[0121] 基底変換を行うためには変換行列を特定する必要がある力 ここで変換行列を生 成したい拡大体 F' mがあり、これと同型の拡大体として F mを考える。なお、本明細書 にお!/、ては、数学にお!/、て通常使用されてレ、る「」記号付きの表現が利用できなレ、 ため、以下においては「」の代わりに「'」を代用している。
[0122] 第 1実施形態の方法を用いた基底変換行列の生成方法を考える。このとき、パラメ ータ kによって (xkm+1— l)/(x_l)という法多項式を考え、その零点 ωを用いて次式で表 される γを考え、この γを用いて次式の正規基底を考える。ここで、 ωは F kmに真性 元として存在する。
[数 21] , …, ,- '}
[0123] この γに相当する元 γ 'を拡大体 F' mの中から見つけることができれば拡大体 F' m における正規基底を特定し、基底間での対応関係から変換行列を特定することがで きる。この変換行列の逆行列を求めれば基底変換を可能とすることができる。
[0124] ここで、元 γ 'を求めるためには ωに相当する ω 'を拡大体 F' kmにお!/、て特定すれ ばよく、 ω 'を拡大体 F' kmにおいて特定するためには拡大体 F' m k次逐次拡大して
F kmと同型な F' kmを構成する。
[0125] ここで、 kと mが互いに素になるようにして、
(1) k'k+lが素数である。
(2) pのF における位数が k'kである(すなわち原始元である)
ことを満たす k'を求めることができると、(xk k+1— l)/(x-l)を法として、 F' m k次逐次拡 大して F' mkを構成することができる。ここで、「 」の「 は「」の代用ではない。
[0126] この逐次拡大体 F' kmから次式を満たす元 B'を探し、 ω 'を求める。
[数 22]
'" - 1)/( !+1 )≠ j 1 )/ ( +ι )
[0127] ここで、 ω 'は位数 km+1の元となるので、 F kmの位数 km+1の元 ωに対応することとな
[0128] したがって、次式で与えられる元 γ 'により以下の集合を考えると、この集合を F mの 基底と対応づけることができる。これを用いて変換行列及びその逆行列を求めること ができ、基底変換を可能とすることができる。
[0129] このように基底変換が可能なことから、既約多項式の因数分解を可能とすることが できる。
[0130] すなわち、まず、 F上の m次既約多項式 ί(χ)を考え、その零点 Θ 'による多項式基底
{ 1 , θ ', Θ '\ · · · , Θ —1}を用いて F' 1 "を構成することができる。ここで、「'」はに」に よる表示の代わりに用いてレ、る。
[0131] そして、 F' mの元 Θ 'を基底変換行列によって F mの対応する元 Θに写像すれば、 F 上の m次既約多項式 ί(χ)の 1つの解を F m上で求めたこととなる。
[0132] したがって、共役元まで考えれば、 ί(χ)を F m上で因数分解できることとなるので、任 意の拡大体上で因数分解できることとなる。
産業上の利用可能性
[0133] パーソナルコンピュータや携帯電話、あるいは ICチップ付きのクレジットカードのよう
に、他の機器とデータの送受信が行われる機器において、鍵長を任意に変更可能と して、要求される安全性と、暗号化または復号化の処理負荷を調整ながら、暗号化 データの送受信を可能とする。