JPWO2008013154A1 - 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置 - Google Patents

暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置 Download PDF

Info

Publication number
JPWO2008013154A1
JPWO2008013154A1 JP2008526767A JP2008526767A JPWO2008013154A1 JP WO2008013154 A1 JPWO2008013154 A1 JP WO2008013154A1 JP 2008526767 A JP2008526767 A JP 2008526767A JP 2008526767 A JP2008526767 A JP 2008526767A JP WO2008013154 A1 JPWO2008013154 A1 JP WO2008013154A1
Authority
JP
Japan
Prior art keywords
storage unit
encryption
storing
decryption
extension
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
JP2008526767A
Other languages
English (en)
Other versions
JP4836208B2 (ja
Inventor
保之 野上
保之 野上
良孝 森川
良孝 森川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Okayama University NUC
Original Assignee
Okayama University NUC
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 Okayama University NUC filed Critical Okayama University NUC
Priority to JP2008526767A priority Critical patent/JP4836208B2/ja
Publication of JPWO2008013154A1 publication Critical patent/JPWO2008013154A1/ja
Application granted granted Critical
Publication of JP4836208B2 publication Critical patent/JP4836208B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/724Finite field arithmetic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3026Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to polynomials generation, e.g. generation of irreducible polynomials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7209Calculation via subfield, i.e. the subfield being GF(q) with q a prime power, e.g. GF ((2**m)**n) via GF(2**m)

Landscapes

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

Abstract

任意な鍵長を選択可能としながら高速に拡大体の乗算処理を実行可能とした暗号化/復号化プログラム、暗号化/復号化装置、及び拡大体の乗算装置を提供する。素数pを標数とし、拡大次数mの拡大体Fpmの2つの元A={a0,a1,a2,・・・,am-1}、B={b0,b1,b2,・・・,bm-1}を乗算する際に、km+1が素数であって、Fkm+1でpが原始元となる正整数kを特定し、2つの元A,Bを、正整数kを用いて素数pを標数とする拡大次数kmの拡大体Fpkmにおける2つの元として演算し、この演算結果を用いて部分体である拡大次数mの拡大体Fpmの元における乗算の結果を求める。

Description

本発明は、暗号化/復号化プログラム、暗号化/復号化装置、及び暗号化または復号化における乗算処理を実行する拡大体の乗算装置に関する。
従来、インターネットなどの電気通信回線を利用した情報通信において、送受信されるデータの秘匿性を保持するために、データの暗号化が行われている。すなわち、平文データを送信する送信者は、平文データに暗号化処理を施して暗号データを生成し、この暗号データを受信者に送信している。一方、暗号データを受信した受信者は、暗号データに復号化処理を施して平文データを生成することにより、平文データを受け取ることができる。
このような暗号化及び復号化の方法として、昨今では公開鍵暗号と呼ばれる方法が用いられている。公開鍵暗号では、公開鍵と秘密鍵があらかじめ設定され、所定の平文データを送信する送信者に公開鍵を開示しており、送信者は公開鍵を用いて平文データを暗号化することにより暗号データを生成し、受信者に送信している。受信者は、暗号データを受信すると、秘密鍵を用いて暗号データを復号化して平文データを生成している。
ここで、平文データを暗号化する場合には、平文データを暗号化に用いる公開鍵の鍵長に合わせた所定のデータ長ごとに分断して複数の単位長平文データを生成し、各単位長平文データと公開鍵を用いて乗算処理を行うことにより単位長暗号データを生成し、所定数の単位長暗号データで構成された暗号データを生成している。
一方、暗号データを復号化する場合には、暗号データを復号化に用いる秘密鍵の鍵長に合わせた所定のデータ長ごとに分断して複数の単位長暗号データを生成し、各単位長暗号データと秘密鍵を用いて乗算処理を行うことにより単位長平文データを生成し、所定数の単位長平文データで構成された平文データを生成している。
このような公開鍵暗号には様々な方式が提案されており、Rivest Shamir Adleman(RSA)暗号、楕円曲線暗号、ElGamal暗号などが知られている。
昨今、パーソナルコンピュータなどの電子計算機の性能向上にともなって、各種の暗号方法で暗号化された暗号データが解読されるおそれが高まっている。すなわち、暗号データは、秘密鍵さえ分かれば解読できることから、電子計算機によって手当たり次第に秘密鍵を生成して復号化を試みることにより、時間はかかるものの解読されるおそれがあった。
そこで、各暗号方法では、安全性を高めるために公開鍵及び秘密鍵の鍵長を長くすることが行われている。すなわち、公開鍵及び秘密鍵の鍵長を長くすると、解読に用いる秘密鍵の数が飛躍的に増大し、現実的な時間内での解読を不可能とすることができるからである。そのため、現在では、RSA暗号では1024ビット以上、楕円曲線暗号では160ビット以上、ElGamal暗号では1024ビット以上の鍵長が求められている。
しかしながら、公開鍵及び秘密鍵の鍵長を長くした場合には、公開鍵を用いた乗算処理による暗号化、及び秘密鍵を用いた乗算処理による復号化に多大な時間を要することとなっていた。この場合、処理時間の短縮のためには、乗算処理の演算速度が高速な演算手段が必要となることにより、安全性を高めるためのコストが増大することとなっていた。
一方で、現実的には、電気通信回線中を流れているデータにおいては重要度が様々に異なっており、利用価値が高いために高度の秘匿性が必要なデータから、利用価値が低いために秘匿性を必要としないデータまでが存在している。
したがって、何れのデータに対しても同等の安全性で暗号化する必要はなく、高い安全性が要求されるデータには長い鍵長の公開鍵及び秘密鍵を用い、高い安全性が要求されないデータには短い鍵長の公開鍵及び秘密鍵が用いられている。
また、パーソナルコンピュータなどのような高速な演算処理の実行が可能な装置では、できるだけ長い鍵長の公開鍵及び秘密鍵による暗号化が利用されており、携帯電話機やICカードなどのような演算処理能力の乏しい装置では、比較的短い鍵長の公開鍵及び秘密鍵による暗号化が利用され、保証され得る安全性の範囲内でデータの送受信が行われている。
特に、パーソナルコンピュータなどの電子計算機では、複数種類の鍵長の公開鍵及び秘密鍵が利用可能となっており、送信するデータに応じた安全性、あるいは送信先の装置における乗算処理の処理能力などに応じて鍵長を変えて暗号化することも行われており、鍵長に汎用性を持たせることが提案されている(例えば、特許文献1参照。)。
特開2001−051832号公報
しかしながら、通常、鍵長の決定にともなって、乗算処理などの演算処理に必要となる拡大体が、所定の拡大体に特定されてしまうために、鍵長に汎用性を持たせた場合には、鍵長ごとの拡大体をあらかじめ準備しておかなければならなかった。したがって、鍵長の汎用性を高めようとすればするほど、鍵長に対応した拡大体を記憶しておくためのより大きな記憶領域が必要となっていた。
したがって、現実的には、準備できる記憶領域の大きさの制限から、鍵長は3〜5種類程度しか準備されておらず、必ずしも十分な汎用性が提供できてはいなかった。そのため、準備された鍵長の公開鍵及び秘密鍵では安全性が十分に保証できない状態となった場合に、安全性をさらに高めることはできなかった。
しかも、従来の暗号化または復号化における乗算処理では、多項式積の計算の後に多項式剰余算の計算が必要であって、多項式積の計算が終了するまでは多項式剰余算の計算を開始することができなかった。したがって、このような乗算処理を演算回路を構成して実行する場合には、演算回路の並列化が困難であって、処理速度の高速化を図りにくいという問題もあった。
本発明者らは、このような現状に鑑み、任意な鍵長を選択可能としながら高速に乗算処理を実行可能とすることにより、利便性の高い暗号化及び復号化のシステムを構築可能とするために研究を行って、本発明を成すに至ったものである。
本発明の暗号化/復号化プログラムでは、素数pを標数とし、拡大次数mの拡大体Fp mの2つの元A={a0,a1,a2,・・・,am-1}、B={b0,b1,b2,・・・,bm-1}を、平文データと暗号化鍵、または暗号データと復号化鍵として、電子計算機で、平文データと暗号化鍵とを乗算して暗号データの元C={c0,c1,c2,・・・,cm-1}を生成させる、または暗号データと復号化鍵とを乗算して平文データの元C={c0,c1,c2,・・・,cm-1}を生成させる暗号化/復号化プログラムにおいて、km+1が素数であって、Fkm+1でpが原始元となる正整数kを特定する第1のステップと、2つの元A,Bを、正整数kを用いて素数pを標数とする拡大次数kmの拡大体Fp kmにおける2つの元として乗算を行う第2のステップと、この乗算の結果を用いて部分体である拡大次数mの拡大体Fp mの元における乗算の結果を求める第3のステップとを有することとした。
さらに、本発明の暗号化/復号化プログラムでは、
0≦i≦m-1、0≦j≦k-1とし、
<x>がxのmod(km+1)をとるものとして、
第2のステップが、
0≦t≦k-1で、<pmt>=K[t]となる各K[t]をそれぞれ求めるステップと、
0≦i≦kmで、それぞれ0=q[<i>]とするステップと、
0≦i≦m-1で、aibimodp=q[<pi>]をそれぞれ求めるステップと、
0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて、0≦t≦k-1でq[<pi+(pjK[t])>]にMをそれぞれ足し込むステップと
を有することにも特徴を有するものであり、
第3のステップが、
0≦i≦m-1で、かつ1≦t≦k-1で、q[<pi>]にq[<(piK[t])>]をそれぞれ足し込むステップと、
0≦i≦m-1で、kq[<0>]-q[<pi>]=ciをそれぞれ求めるステップと
を有することにも特徴を有するものである。
さらに、本発明の暗号化/復号化プログラムでは、
k=2k'の場合に、
F2k'm+1でpが原始元あるいは位数がk'mかつk'mが奇数となる正整数k'とし、
0≦i≦m-1、0≦j≦2k'-1とし、
<x>がxのmod(2k'm+1)をとるものとして、
第2のステップが、
0≦t≦k'-1で、<pmt>=K[t]となる各K[t]をそれぞれ求めるステップと、
0≦i≦2k'mで、それぞれ0=q[<i>]とするステップと、
0≦i≦m-1で、aibimodp=q[<pi>]をそれぞれ求めるステップと、
0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて、0≦t≦k'-1でq[<pi+(pjK[t])>]にMをそれぞれ足し込むとともに、q[<pi-(pjK[t])>]にMをそれぞれ足し込むステップと
を有することにも特徴を有し、
第3のステップが、
0≦i≦m-1で、かつ1≦t≦k'-1で、q[<pi>]にq[<(piK[t])>]をそれぞれ足し込むとともに、q[<pi>]にq[<-(piK[t])>]をそれぞれ足し込むステップと、
0≦i≦m-1で、-q[<pi>]=ciをそれぞれ求めるステップと
を有することにも特徴を有するものである。
また、本発明の暗号化/復号化装置では、素数pを標数とし、拡大次数mの拡大体Fp mの2つの元A={a0,a1,a2,・・・,am-1}、B={b0,b1,b2,・・・,bm-1}を、平文データと暗号化鍵、または暗号データと復号化鍵として、平文データと暗号化鍵とを乗算させて元C={c0,c1,c2,・・・,cm-1}を生成することにより暗号化する、または暗号データと復号化鍵とを乗算させて元C={c0,c1,c2,・・・,cm-1}を生成することにより復号化する演算器を備えた暗号化/復号化装置において、元をそれぞれ記憶する第1の記憶部と、拡大次数mを記憶する第2の記憶部と、km+1が素数であって、Fkm+1でpが原始元となる正整数kを演算器による演算に基づいて特定して記憶する第3の記憶部と、2つの元A,Bを、正整数kを用いて素数pを標数とする拡大次数kmの拡大体Fp kmにおける2つの元として演算器で乗算した結果を記憶する第4の記憶部と、拡大次数kmの拡大体Fp kmの元の乗算結果を用いて演算器で所定の演算を行って、部分体である拡大次数mの拡大体Fp mの元における乗算の結果を求めて記憶する第5の記憶部とを有することとした。
さらに、本発明の暗号化/復号化装置では、
0≦i≦m-1、0≦j≦k-1とし、
<x>がxのmod(km+1)をとるものとして、
第4の記憶部が、
0≦t≦k-1で、<pmt>=K[t]となる各K[t]をそれぞれ求めて記憶する記憶部と、
0≦i≦kmで、それぞれ0=q[<i>]として記憶する記憶部と、
0≦i≦m-1で、aibimodp=q[<pi>]をそれぞれ求めて記憶する記憶部と、
0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて記憶する記憶部と、
0≦t≦k-1でq[<pi+(pjK[t])>]にMをそれぞれ足し込んで記憶する記憶部と
を有することにも特徴を有し、
第5の記憶部が、
0≦i≦m-1で、かつ1≦t≦k-1で、q[<pi>]にq[<(piK[t])>]をそれぞれ足し込んで記憶する記憶部と、
0≦i≦m-1で、kq[<0>]-q[<pi>]=ciをそれぞれ求めて記憶する記憶部と
を有することにも特徴を有するものである。
さらに、本発明の暗号化/復号化装置では、
k=2k'の場合に、
F2k'm+1でpが原始元あるいは位数がk'mかつk'mが奇数となる正整数k'として、この正整数k'を記憶する記憶部を有し、
0≦i≦m-1、0≦j≦2k'-1とし、
<x>がxのmod(2k'm+1)をとるものとして、
第4の記憶部が、
0≦t≦k'-1で、<pmt>=K[t]となる各K[t]をそれぞれ求めて記憶する記憶部と、
0≦i≦2k'mで、それぞれ0=q[<i>]として記憶する記憶部と、
0≦i≦m-1で、aibimodp=q[<pi>]をそれぞれ求めて記憶する記憶部と、
0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて記憶する記憶部と、
0≦t≦k'-1でq[<pi+(pjK[t])>]にMをそれぞれ足し込し込んで記憶するとともに、q[<pi-(pjK[t])>]にMをそれぞれ足し込んで記憶する記憶部と
を有することにも特徴を有し、
第5の記憶部が、
0≦i≦m-1で、かつ1≦t≦k'-1で、q[<pi>]にq[<(piK[t])>]をそれぞれ足し込むとともに、q[<pi>]にq[<-(piK[t])>]をそれぞれ足し込んで記憶する記憶部と、
0≦i≦m-1で、-q[<pi>]=ciをそれぞれ求めて記憶する記憶部と
を有することにも特徴を有するものである。
また、本発明の乗算装置では、素数pを標数とし、拡大次数mの拡大体Fp mの2つの元A={a0,a1,a2,・・・,am-1}、B={b0,b1,b2,・・・,bm-1}を乗算して元C={c0,c1,c2,・・・,cm-1}を生成する演算器を備えた拡大体の乗算装置において、元をそれぞれ記憶する第1の記憶部と、拡大次数mを記憶する第2の記憶部と、km+1が素数であって、Fkm+1でpが原始元となる正整数kを演算器による演算に基づいて特定して記憶する第3の記憶部と、2つの元A,Bを、正整数kを用いて素数pを標数とする拡大次数kmの拡大体Fp kmにおける2つの元として演算器で乗算した結果を記憶する第4の記憶部と、拡大次数kmの拡大体Fp kmの元の乗算結果を用いて演算器で所定の演算を行って、部分体である拡大次数mの拡大体Fp mの元における乗算の結果を求めて記憶する第5の記憶部とを有することとした。
本発明では、素数pを標数とし、拡大次数mの拡大体Fp mの2つの元A={a0,a1,a2,・・・,am-1}、B={b0,b1,b2,・・・,bm-1}を乗算して元C={c0,c1,c2,・・・,cm-1}を生成する際に、km+1が素数であって、Fkm+1でpが原始元となる正整数kを用いて、素数pを標数とする拡大次数kmの拡大体Fp kmを定義体として想定して演算を行うことにより、拡大次数mを任意の整数とすることができる。
すなわち、任意の拡大次数mを用いても、km+1が素数であって、Fkm+1でpが原始元となる正整数kを用いた拡大次数kmの拡大体によって、演算に必要な拡大体を極めて容易に準備できるので、拡大次数mごとに対応した拡大体を準備する必要がなく、拡大次数mを無制限に選択することができる。
この拡大次数mは、暗号化及び復号化における鍵長であって、鍵長を任意に選択することができるので、必要に応じて暗号データの安全性を任意に選択可能とすることができる。特に、安全性を高めたければ拡大次数mをできるだけ大きくするだけでよく、暗号データの解読行為に対して極めて容易に対応できる。
しかも、拡大次数kmの拡大体を定義体として用いることにより、乗算を、所定の元の加算または減算と、乗算との繰り返しに分解して演算することができ、並列処理化が容易であって、高速演算を可能とすることができる。
さらに、k=2k'となるk'を用いた場合には、所定の元の加算または減算と、乗算との繰り返し回数を削減できることにより、演算のさらなる高速化を図ることができる。
本発明に係る暗号化/復号化装置のブロック図である。 本発明に係る暗号化/復号化プログラムにおけるフローチャートである。 本発明に係る暗号化/復号化プログラムにおけるフローチャートである。 他の実施形態のフローチャートである。 既約多項式を求めるフローチャートである。
符号の説明
10 演算器
20 不揮発性記憶部
30 揮発性記憶部
40 データ入出力部
50 データバス
本発明の暗号化/復号化プログラム、暗号化/復号化装置、及び拡大体の乗算装置では、素数pを標数とする拡大体を定義体とし、拡大次数mの拡大体Fp mの2つの元A={a0,a1,a2,・・・,am-1}、B={b0,b1,b2,・・・,bm-1}を乗算して元C={c0,c1,c2,・・・,cm-1}を生成する際に、拡大次数mに対応し、km+1が素数であって、Fkm+1でpが原始元となる正整数kを用いて素数pを標数とする拡大次数kmの拡大体Fp kmを新たな定義体として乗算を行い、この乗算の結果を用いて部分体である拡大次数mの拡大体Fp mの元における乗算の結果を求めている。
すなわち、任意の拡大次数mに対応して、km+1が素数であって、Fkm+1でpが原始元となる正整数kを用いることにより、素数pを標数とする拡大次数mの拡大体Fp mを部分体とする拡大次数kmの拡大体Fp kmを定義体として用いることができ、拡大次数m及び標数pを任意としても2つの元A、Bの乗算を行うことができる。
ここで、拡大次数mは、暗号化及び復号化における鍵長に当たり、任意の拡大次数mが選択できるということは、鍵長を任意に選択できることを示しており、必要に応じて適宜の鍵長として暗号データを生成することができる。
したがって、状況に応じて鍵長を選択することにより、暗号データの安全性と、暗号化及び復号化の演算の負荷をバランスさせながら適宜の鍵長とした暗号データを生成できる。
例えば、標数p=2500−863の500ビットの素数を用いた場合には、下表に示すように、拡大次数m、パラメータとなる正整数k、鍵長の組み合わせを選択できる。
Figure 2008013154
ここで、鍵長が短くなる組み合わせを用いれば、暗号化及び復号化の演算速度を向上させることができ、鍵長が長くなる組み合わせを用いれば、解読困難な暗号化データを生成して安全性を向上させることができる。
特に、拡大次数mは、任意な正整数とすることができ、いくらでも大きくすることもできる。また、標数pも任意の素数とすることができる。
なお、暗号化に必要となる鍵は、Diffie−Hellman鍵交換アルゴリズムを用いて受け渡すことにより、安全に受け渡すことができる。
すなわち、アリスとボブが鍵交換を行う場合、まず、アリスからボブに鍵データとしてg,A=ga∈Fp mを送信している。
ボブは、Aを受信すると、C=Ab=gab∈Fp mを計算して、B=gb∈Fp mを計算し、B=gbをアリスに送信している。
アリスは、Bを受信してC=Ba=gab∈Fp mを計算することにより、アリスとボブとを接続するネットワーク上に鍵gabを流すことなく共有することができる。
なお、ICカードにおける認証用データに用いる鍵の場合には、ICカードの作成時にあらかじめICカードに鍵データを記憶させておくことにより、ネットワーク上に鍵を流すことなく共有することができる。
あるいは、一般的な公開鍵暗号の場合であれば、ボブがアリスから所要のデータを受け取る際に、ボブは予め公開鍵を公開しておく。
例えば、Elgamal暗号の場合であれば、ボブは秘密鍵sを用いて、g,B=gs∈Fp mを計算して公開しておく。
メッセージMを送信するアリスは、ボブの公開鍵データg,Bをダウンロードして、メッセージMに対して、
C1=M×Bt、 C2=gt
を計算することにより暗号化を行っている。ここで、tは乱数である。
また、C1の演算を行うに当たり、後述する本発明の暗号化/復号化プログラム、暗号化/復号化装置、あるいは拡大体の乗算装置を用いている。
アリスは、C1、C2をボブに送信し、ボブは、受信したC1、C2を用いて、C1/C2 sを演算することによりメッセージMの復号化を行っている。すなわち、
C1/C2 s=MBt/gts=Mgts/gts
この復号化においても、後述する本発明の暗号化/復号化プログラム、暗号化/復号化装置、あるいは拡大体の乗算装置を用いている。
このようにメッセージMの復号化は、sを秘密にもつボブのみが行える計算であり、対称鍵暗号のようにある一つのパスワードを互いに共有する必要がなく、かつ安全性が確保される長さの鍵を使用することで高い信頼性を有することができる。
図1は、本実施形態の暗号化/復号化装置のブロック図である。なお、この暗号化/復号化装置は拡大体の乗算装置でもある。
暗号化/復号化装置は、CPU(中央演算装置)などの演算器10と、この演算器10が実行するプログラムなどを記憶した不揮発性記憶部20と、プログラムの実行にともなって必要となるデータを一時的に格納する揮発性記憶部30とを備えている。不揮発性記憶部20は、いわゆるROM(Read Only Memory)あるいはハードディスクなどの不揮発性の記憶手段で構成し、揮発性記憶部30はいわゆるRAM(Random Access Memory)で構成している。
特に、揮発性記憶部30は、複数のレジスタを備えており、それぞれのレジスタで所要のデータを記憶している。
不揮発性記憶部20には、本実施形態の暗号化/復号化プログラムを記憶しており、この暗号化/復号化プログラムを起動させることにより、必要に応じて暗号化/復号化プログラムを揮発性記憶部30に展開して、暗号化あるいは復号化の演算を行っている。
さらに、暗号化/復号化装置にはデータ入出力部40を設けており、このデータ入力部40を介して任意の拡大次数mの値を入力可能とし、入力された拡大次数mの値に基づいて暗号化を実行可能としている。あるいは、拡大次数mの値だけでなく、標数pの値を変更可能とすることもできる。
また、データ入出力部40では、公開鍵となる鍵データの出力や、暗号化されたデータの入出力などを行っている。図1中、50はデータバスである。
演算器10では、必要に応じて、揮発性記憶部30に記憶されている所要の鍵データ、標数pの値、拡大次数mなどを不揮発性記憶部20に記憶させてもよい。
暗号化/復号化装置あるいは拡大体の乗算装置は、このように暗号化/復号化プログラムを実行する電子計算機などの装置に限定するものではなく、暗号化/復号化プログラムに相当する演算を実行する演算回路を備えた演算用デバイスとして、演算処理の高速化を図ることもできる。
以下において、暗号化あるいは復号化における2つの元の乗算について説明する。
まず、第1実施形態として、以下の条件下における元Aと元Bの積の演算について説明する。ここで、この積の演算が暗号化である場合には、元Aと元Bのいずれか一方が暗号化鍵であって、他方が暗号化鍵の鍵長ごとに分断された単位長平文データであり、積の演算が復号化である場合には、元Aと元Bのいずれか一方が復号化鍵であって、他方が復号化鍵の鍵長ごとに分断された単位長暗号データである。
・素数pを標数とする拡大体を定義体とする。
・拡大次数mに対し、km+1が素数であって、Fkm+1でpが原始元となる適当な正整数k。
・0≦i≦m−1、0≦j≦k−1。
・<x>がxのmod(km+1)をとるものとする。
・ωを1の原始km+1乗根とする。
・{a0,a1,a2,・・・,am-1}を拡大次数mの拡大体Fp mの元A
Figure 2008013154
・{b0,b1,b2,・・・,bm-1}を拡大次数mの拡大体Fp mの元B
Figure 2008013154
なお、任意の正整数mに対して、km+1が素数となる正整数kが少なくともk<mの範囲に存在していることは一般的に証明済みの事実であり、正整数kを特定する専用プログラムを用いて容易に見つけ出すことができる。
通常、元Aと元Bの積C=ABは、CVMA(Cyclic Vector Multiplication Algorithm)で計算されるが、部分体における演算の閉性から元Aと元Bの積Cも部分体Fp mの元なることから、積Cのベクトル表現においても、基底ベクトルω'とω”のベクトル係数が等しくなる。
ここで、表記の便宜上、
Figure 2008013154
及び、
Figure 2008013154
である。
したがって、求める必要があるのは0≦i≦m-1でのω'の各係数ciのみであり、
Figure 2008013154
として、係数ciは、図2に示すフローチャートに基づく暗号化/復号化プログラムにより、パーソナルコンピュータなどの電子計算機での演算によって求めることができる。
ただし、この場合、直接、8p|m(p-1)となる拡大体を構成することはできない。そこで、8p|m(p-1)となる拡大体を構成する場合には、拡大次数mの偶数因数部分mEと奇数因数部分mOとに分けて(m=mE・mO)、それぞれを逐次拡大体に分けて拡大することにより、8p|m(p-1)となる拡大体にも対応可能とすることができる。なお、場合によっては後述する第2実施形態を組み合わせて用いることが必要となることもある。
暗号化の場合には、まず、電子計算機では拡大次数mを設定する(ステップS1)。なお、復号化の場合には、電子計算機は、秘密鍵または公開鍵の鍵長から拡大次数mを特定することもできる。
次いで、電子計算機は、設定された拡大次数mに基づいて、km+1が素数であって、Fkm+1でpが原始元となる適当な正整数kを専用プログラムを用いて特定する(ステップS2)。なお、前述したように、k<mの範囲でkm+1が素数となる正整数kは少なくとも1つは特定でき、電子計算機は、比較的短時間で正整数kの特定処理を終了することができる。
次いで、電子計算機は、0≦t≦k-1で、<pmt>=K[t]となる各K[t]をそれぞれ求め(ステップS3)、さらに、0≦i≦kmで、それぞれ0=q[<i>]とする(ステップS4)。
次いで、電子計算機は、0≦i≦m-1で、aibimodp=q[<pi>]をそれぞれ求め(ステップS5)、その後、0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて、0≦t≦k-1でq[<pi+(pjK[t])>]へのMの足し込みをそれぞれ行う(ステップS6)。
その後、電子計算機は、拡大次数mの拡大体Fp mではなく、拡大次数kmの拡大体を定義体として用いていることによる処理として、0≦i≦m-1で、かつ1≦t≦k-1で、q[<pi>]へのq[<(piK[t])>]の足し込みをそれぞれ行って(ステップS7)、最後に、0≦i≦m-1で、kq[<0>]-q[<pi>]=ciを求めている(ステップS8)。
このように、ciは、拡大次数kmの拡大体Fp kmにおける所定の元の加算または減算と、乗算との繰り返しに分解して演算を行うことができ、並列処理化が容易であって、高速演算を可能とすることができる。
特に、演算の負荷が小さいことにより、携帯電話機やICカードなどの演算機能の乏しい装置でも容易に乗算処理を実行でき、しかも公開鍵及び秘密鍵の鍵長の変更を可能とすることができる。
さらに、乗算処理における演算は、演算処理回路として半導体基板上に形成して乗算処理用半導体デバイスとすることもでき、この乗算処理用半導体デバイスを備えた暗号化/復号化装置として、暗号化及び復号化のさらなる高速化を図ることができ、しかも、並列処理化が可能であって、一層の高速化を図ることができる。また、拡大体の乗算装置として乗算処理用半導体デバイスを用いることもできる。
すなわち、乗算処理用半導体デバイスでは、半導体基板上に、所要の演算を実行可能とした演算器を形成するとともに、各記憶部として以下のレジスタ及びレジスタ群を形成している。
・標数pを記憶するレジスタ。
・拡大次数mを記憶するレジスタ。
・拡大次数mに基づく拡大体Fp mの元Aを記憶するレジスタ群。
・拡大次数mに基づく拡大体Fp mの元Bを記憶するレジスタ群。
・設定された拡大次数mに対応した正整数kを特定して記憶するレジスタ。
・0≦t≦k-1で、<pmt>=K[t]となる各K[t]をそれぞれ求めて記憶するレジスタ群。
・0≦i≦km-1で、それぞれ0=q[<i>]として記憶するレジスタ群。
・0≦i≦m-1で、aibimodp=q[<pi>]をそれぞれ求めて記憶するレジスタ群。
・0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて記憶するレジスタ群。
・0≦t≦k-1でq[<pi+(pjK[t])>]にMをそれぞれ足し込んで記憶するレジスタ群。
・0≦i≦m-1で、かつ1≦t≦k-1で、q[<pi>]にq[<(piK[t])>]をそれぞれ足し込んで記憶するレジスタ群。
・0≦i≦m-1で、kq[<0>]-q[<pi>]=ciをそれぞれ求めて記憶するレジスタ群。
これらのレジスタ及びレジスタ群を設けることにより、各演算は並列化が可能であるので、並列処理を行うことにより乗算処理をさらに高速化することができる。したがって、高速な暗号化及び復号化を可能とする暗号化/復号化装置、あるいは拡大体の乗算装置を提供できる。
この乗算処理用半導体デバイスを所要の実装ボードに装着することにより、高速な乗算処理を可能とする実装ボードを提供でき、この実装ボードを用いて携帯電話機や電子計算機などを構成することにより、高速な暗号化及び復号化が可能であって、しかも公開鍵及び秘密鍵の鍵長の長さを自在に可変とした携帯電話機や電子計算機などを提供することができる。
以下において、第2実施形態として、以下の条件下における元Aと元Bの積の演算について説明する。ここで、第1実施形態との違いは、k=2k'となるk'を用いて演算を行うことである。すなわち、
・素数pを標数とする拡大体を定義体とする。
・拡大次数mに対し、2k'm+1が素数であって、F2k'm+1でpが原始元あるいは位数がk'mかつk'mが奇数となる適当な正整数k'。
・0≦i≦m−1、0≦j≦2k'−1。
・<x>がxのmod(2k'm+1)をとるものとする。
・ωを1の原始2k'm+1乗根として、τ=ω+ω-1とする。
・{a0,a1,a2,・・・,am-1}を拡大次数mの拡大体Fp mの元A
Figure 2008013154
・{b0,b1,b2,・・・,bm-1}を拡大次数mの拡大体Fp mの元B
Figure 2008013154
部分体における演算の閉性から元Aと元Bの積Cも部分体Fp mの元なることから、積Cのベクトル表現においても、基底ベクトルτ'とτ”のベクトル係数が等しくなる。
ここで、表記の便宜上、
Figure 2008013154
及び、
Figure 2008013154
である。
したがって、求める必要があるのは0≦i≦m-1でのτ'の係数ciのみであり、
Figure 2008013154
として、係数ciは、図3に示すフローチャートに基づくプログラムにより、パーソナルコンピュータなどの電子計算機での演算によって求めることができる。
ただし、この場合には、4p|m(p-1)となる拡大体を構成することはできない。そこで、4p|m(p-1)となる拡大体を構成する場合には、拡大次数mの偶数因数部分mEと奇数因数部分mOとに分けて(m=mE・mO)、それぞれを逐次拡大体に分けて拡大することにより、4p|m(p-1)となる拡大体にも対応可能とすることができる。なお、場合によっては前述した第1実施形態を組み合わせて用いることが必要となることもある。
暗号化の場合には、まず、電子計算機では拡大次数mを設定する(ステップT1)。なお、復号化の場合には、電子計算機は、秘密鍵または公開鍵の鍵長から拡大次数mを特定する。
次いで、電子計算機は、設定された拡大次数mに基づいて、2k'm+1が素数であって、F2k'm+1でpが原始元あるいは位数がk'mかつk'mが奇数となる適当な正整数k'を専用プログラムを用いて特定する(ステップT2)。なお、前述したように、2k'<mの範囲で2k'm+1が素数となる正整数k'は少なくとも1つは特定でき、電子計算機は、比較的短時間で正整数k'の特定処理を終了することができる。
次いで、電子計算機は、0≦t≦k'-1で、<pmt>=K[t]となる各K[t]をそれぞれ求め(ステップT3)、さらに、0≦i≦2k'mで、それぞれ0=q[<i>]とする(ステップT4)。
次いで、電子計算機は、0≦i≦m-1で、aibimodp=q[<pi>]をそれぞれ求め(ステップT5)、その後、0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて、0≦t≦k'-1でq[<pi+(pjK[t])>]へのMの足し込みをそれぞれ行うとともに、q[<pi−(pjK[t])>]へのMの足し込みをそれぞれ行う(ステップT6)。
その後、電子計算機は、拡大次数mの拡大体Fp mではなく、拡大次数k'mの拡大体を定義体として用いていることによる処理として、0≦i≦m-1で、かつ1≦t≦k-1で、q[<pi>]へのq[<(piK[t])>]の足し込みをそれぞれ行うとともに、q[<pi>]へのq[<-(piK[t])>]の足し込みをそれぞれ行って(ステップT7)、電子計算機は、最後に、0≦i≦m-1で、-q[<pi>]=ciを求めている(ステップT8)。
このように、ciは、所定の元の加算または減算と、乗算との繰り返しに分解して演算を行うことができ、並列処理化が容易であって、高速演算を可能とすることができる。
また、図3に示したフローチャートの乗算処理の演算も、演算処理回路として半導体基板上に形成して乗算処理用半導体デバイスとすることもでき、この乗算処理用半導体デバイスを備えた暗号化/復号化装置として、暗号化及び復号化のさらなる高速化を図ることができ、しかも、並列処理化が可能であって、一層の高速化を図ることができる。また、拡大体の乗算装置として乗算処理用半導体デバイスを用いることもできる。
この場合、乗算処理用半導体デバイスでは、半導体基板上に、所要の演算を実行可能とした演算器を形成するとともに、各記憶部として以下のレジスタ及びレジスタ群を形成している。
・標数pを記憶するレジスタ。
・拡大次数mを記憶するレジスタ。
・拡大次数mに基づく拡大体Fp mの元Aを記憶するレジスタ群。
・拡大次数mに基づく拡大体Fp mの元Bを記憶するレジスタ群。
・設定された拡大次数mに対応した正整数k'を特定して記憶するレジスタ。
・0≦t≦k'-1で、<pmt>=K[t]となる各K[t]をそれぞれ求めて記憶するレジスタ群。
・0≦i≦2k'm-1で、それぞれ0=q[<i>]として記憶するレジスタ群。
・0≦i≦m-1で、aibimodp=q[<pi>]をそれぞれ求めて記憶するレジスタ群。
・0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて記憶するレジスタ群。
・0≦t≦k'-1でq[<pi+(pjK[t])>]にMをそれぞれ足し込し込んで記憶するとともに、q[<pi-(pjK[t])>]にMをそれぞれ足し込んで記憶するレジスタ群。
・0≦i≦m-1で、かつ1≦t≦k'-1で、q[<pi>]にq[<(piK[t])>]をそれぞれ足し込んで記憶するとともに、さらに、q[<pi>]にq[<-(piK[t])>]をそれぞれ足し込んで記憶するレジスタ群。
・0≦i≦m-1で、-q[<pi>]=ciをそれぞれ求めて記憶するレジスタ群。
これらのレジスタ及びレジスタ群を設けることにより、第1の実施形態の場合と同様に、各演算は並列化が可能であるので、並列処理を行うことにより乗算処理をさらに高速化することができる。したがって、高速な暗号化及び復号化を可能とする暗号化/復号化装置、あるいは拡大体の乗算装置を提供できる。
さらに、km+1を素数とし、Sをmod km+1における位数kの部分巡回乗法群として、km次のAOP(All One Polynominal)(xkm+1−1)/(x−1)の零点をωとして、
Figure 2008013154
で与えられるγを用い、次の集合を考える。
Figure 2008013154
[数12]の集合が拡大体Fp mにおいて正規基底を成すことは、km/eがmと互いに素となることと必要十分である。ここで、eはpのmod km+1での位数である。前述した第1実施形態及び第2実施形態は、この正規基底を用いた乗算に適用可能となっている。
すなわち、
・eをFkm+1における元pの位数とする。
・e'=km/e
・1の原始k乗根ε∈Fkm+1とする。
・{a0,a1,a2,・・・,am-1}を拡大次数mの拡大体Fp mの元A
Figure 2008013154
・{b0,b1,b2,・・・,bm-1}を拡大次数mの拡大体Fp mの元B
Figure 2008013154
このとき、部分体における演算の閉性から元Aと元Bの積Cは、
Figure 2008013154
として、係数ciは、図4に示すフローチャートに基づくプログラムにより、パーソナルコンピュータなどの電子計算機での演算によって求めることができる。
ここで、暗号化の場合には、まず、電子計算機では拡大次数mを設定する(ステップU1)。なお、復号化の場合には、電子計算機は、秘密鍵または公開鍵の鍵長から拡大次数mを特定する。
次いで、電子計算機は、設定された拡大次数mに基づいて、km+1が素数であって、e'(=km/e)とmとが互いに素となる適当な正整数kを専用プログラムを用いて特定する(ステップU2)。正整数kの特定にともなって、1の原始k乗根のεを特定する(ステップU3)。
次いで、電子計算機は、1=K[0],0=r[0]とする(ステップU4)。
次いで、電子計算機は、0≦i≦mで、0=q[<i>]とする(ステップU5)。
次いで、電子計算機は、1≦t≦k-1で、<K[t-1]ε>=K[t]とする(ステップU6)。
次いで、電子計算機は、0≦t≦m-1であって、0≦t≦k-1で、i+1=r[<piK[t]>]とする(ステップU7)。
次いで、電子計算機は、0≦t≦m-1で、aibimodp=q[i+1]をそれぞれ求める(ステップU8)。
次いで、電子計算機は、0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて、0≦t≦k-1でq[r[<pi+(pjK[t])>]]へのMの足し込みをそれぞれ行う(ステップU9
)。
最後に、電子計算機は、0≦i≦m-1で、kq[<0>]-q[i+1]=ciを求めている(ステップU10)。
なお、kが偶数の場合には、ステップU9においてkq[<0>]=0とすることができる。
このように、より多くの正規基底に対して適用可能とすることができる。しかも、kの値をより小さくすることができるので、演算回数の削減による演算処理の高速化を図ることもできる。
なお、前述したように、8p|m(p-1)あるいは4p|m(p-1)などのように、mがpの倍数である場合には拡大体を構成できないことがあるが、拡大次数mを偶数因数部分mEと奇数因数部分mOとに分けて、それぞれを逐次拡大体に分けて拡大することにより、奇標数pに対しての拡大体の構成を可能とすることができ、上記の制限を排除することができる。
すなわち、例えば、Fp 4pを構成する場合を考える。この場合には、最初にFp 4の拡大体を構成し、次いで、この拡大体をp次逐次拡大することにより、奇標数pが4と互いに素であることからFp 4pで表される拡大体を構成できる。すなわち、任意の奇標数及び任意次数の拡大体を構成することが可能である。
本発明は数学的に見た場合には、既約多項式として法多項式を準備することなく拡大体における乗算や除算を行えるものであり、見方を変えれば本発明の考え方を利用することにより、任意次数の既約多項式を生成することができることを示している。
ここで、例えばFp 4の(1,2,1,2)というベクトル表現を持つ元はFp 2の元である。真部分体に含まれないような元を真性元と呼ぶこととして、Fp mの真性元をαとした場合、そのαの最小多項式、すなわちαを零点にもつFp上の最小次数の多項式Mα(x)が求まれば、それはFp上のm次既約多項式となっている。
なお、Mα(x)は、次式で表される。
Figure 2008013154
ここで、次式の計算式を考えることにする。
Figure 2008013154
Figure 2008013154
上式で、i=m-2,m-3,・・・,2,1,0の順に計算されることにより既約多項式が求められることとなる。
すなわち、拡大体Fp mの任意の真性元αの最小多項式は、図5に示すフローチャートに基づくプログラムにより、下のようにして求めることができる。
まず、電子計算機では、真性元αのベクトル表現(x0,x1,x2,・・・,xm-1)を設定する(ステップW1)。ここで、真性元αの最小多項式Mα(x)は次式となるものとする。
Figure 2008013154
次いで、電子計算機は、1≦i≦mで、T[i]=Tr(αi)とし(ステップW2)、a[m-1]=-T[1]とする(ステップW3)。
次いで、電子計算機は、m-2≧i≧0で、0=Mとし、0≦j≦m-1-iで、-a[m-j]Tr(αm-i-j)のMへの足し込みをそれぞれ行う(ステップW4)。
次いで、電子計算機は、a[i]=(m-i)-1{M-Tr(αm-i)}を求めている(ステップW5)。
これにより、p>mを満たす任意の既約多項式を求めることができる。なお、前述した処理は、素体Fpではない部分体に関する最小多項式の特定に用いることもできる。
このように任意の既約多項式を求めることができることによって、異なる定義体間の基底変換を可能とすることができる。
基底変換を行うためには変換行列を特定する必要があるが、ここで変換行列を生成したい拡大体F'p mがあり、これと同型の拡大体としてFp mを考える。なお、本明細書においては、数学において通常使用されている「^」記号付きの表現が利用できないため、以下においては「^」の代わりに「’」を代用している。
第1実施形態の方法を用いた基底変換行列の生成方法を考える。このとき、パラメータkによって(xkm+1−1)/(x-1)という法多項式を考え、その零点ωを用いて次式で表されるγを考え、このγを用いて次式の正規基底を考える。ここで、ωはFp kmに真性元として存在する。
Figure 2008013154
Figure 2008013154
このγに相当する元γ’を拡大体F'p mの中から見つけることができれば拡大体F'p mにおける正規基底を特定し、基底間での対応関係から変換行列を特定することができる。この変換行列の逆行列を求めれば基底変換を可能とすることができる。
ここで、元γ’を求めるためにはωに相当するω’を拡大体F'p kmにおいて特定すればよく、ω’を拡大体F'p kmにおいて特定するためには拡大体F'p mをk次逐次拡大してFp kmと同型なF'p kmを構成する。
ここで、kとmが互いに素になるようにして、
(1)k'k+1が素数である。
(2)pのFk'k+1における位数がk'kである(すなわち原始元である)
ことを満たすk'を求めることができると、(xk'k+1−1)/(x-1)を法として、F'p mをk次逐次拡大してF'p mkを構成することができる。ここで、「k'」の「'」は「^」の代用ではない。
この逐次拡大体F'p kmから次式を満たす元B'を探し、ω'を求める。
Figure 2008013154
ここで、ω'は位数km+1の元となるので、Fp kmの位数km+1の元ωに対応することとなる。
したがって、次式で与えられる元γ’により以下の集合を考えると、この集合をFp mの基底と対応づけることができる。これを用いて変換行列及びその逆行列を求めることができ、基底変換を可能とすることができる。
Figure 2008013154
Figure 2008013154
このように基底変換が可能なことから、既約多項式の因数分解を可能とすることができる。
すなわち、まず、Fp上のm次既約多項式f(x)を考え、その零点θ'による多項式基底{1,θ',θ'2,・・・,θ'm-1}を用いてF'p mを構成することができる。ここで、「'」は「^」による表示の代わりに用いている。
そして、F'p mの元θ'を基底変換行列によってFp mの対応する元θに写像すれば、Fp上のm次既約多項式f(x)の1つの解をFp m上で求めたこととなる。
したがって、共役元まで考えれば、f(x)をFp m上で因数分解できることとなるので、任意の拡大体上で因数分解できることとなる。
パーソナルコンピュータや携帯電話、あるいはICチップ付きのクレジットカードのように、他の機器とデータの送受信が行われる機器において、鍵長を任意に変更可能として、要求される安全性と、暗号化または復号化の処理負荷を調整ながら、暗号化データの送受信を可能とする。

Claims (11)

  1. 素数pを標数とし、拡大次数mの拡大体Fp mの2つの元A={a0,a1,a2,・・・,am-1}、B={b0,b1,b2,・・・,bm-1}を、平文データと暗号化鍵、または暗号データと復号化鍵として、
    電子計算機で、前記平文データと前記暗号化鍵とを乗算して暗号データの元C={c0,c1,c2,・・・,cm-1}を生成させる、または前記暗号データと前記復号化鍵とを乗算して平文データの元C={c0,c1,c2,・・・,cm-1}を生成させる暗号化/復号化プログラムにおいて、
    km+1が素数であって、Fkm+1でpが原始元となる正整数kを特定する第1のステップと、
    前記の2つの元A,Bを、前記正整数kを用いて素数pを標数とする拡大次数kmの拡大体Fp kmにおける2つの元として乗算を行う第2のステップと、
    この乗算の結果を用いて部分体である前記拡大次数mの拡大体Fp mの元における乗算の結果を求める第3のステップと
    を有することを特徴とする暗号化/復号化プログラム。
  2. 0≦i≦m-1、0≦j≦k-1とし、
    <x>がxのmod(km+1)をとるものとして、
    前記第2のステップは、
    0≦t≦k-1で、<pmt>=K[t]となる各K[t]をそれぞれ求めるステップと、
    0≦i≦kmで、それぞれ0=q[<i>]とするステップと、
    0≦i≦m-1で、aibimodp=q[<pi>]をそれぞれ求めるステップと、
    0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて、0≦t≦k-1でq[<pi+(pjK[t])>]にMをそれぞれ足し込むステップと
    を有することを特徴とする請求項1記載の暗号化/復号化プログラム。
  3. 前記第3のステップは、
    0≦i≦m-1で、かつ1≦t≦k-1で、q[<pi>]にq[<(piK[t])>]をそれぞれ足し込むステップと、
    0≦i≦m-1で、kq[<0>]-q[<pi>]=ciをそれぞれ求めるステップと
    を有することを特徴とする請求項2記載の暗号化/復号化プログラム。
  4. k=2k'の場合に、
    F2k'm+1でpが原始元あるいは位数がk'mかつk'mが奇数となる正整数k'とし、
    0≦i≦m-1、0≦j≦2k'-1とし、
    <x>がxのmod(2k'm+1)をとるものとして、
    前記第2のステップは、
    0≦t≦k'-1で、<pmt>=K[t]となる各K[t]をそれぞれ求めるステップと、
    0≦i≦2k'mで、それぞれ0=q[<i>]とするステップと、
    0≦i≦m-1で、aibimodp=q[<pi>]をそれぞれ求めるステップと、
    0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて、0≦t≦k'-1でq[<pi+(pjK[t])>]にMをそれぞれ足し込むとともに、q[<pi-(pjK[t])>]にMをそれぞれ足し込むステップと
    を有することを特徴とする請求項1記載の暗号化/復号化プログラム。
  5. 前記第3のステップは、
    0≦i≦m-1で、かつ1≦t≦k'-1で、q[<pi>]にq[<(piK[t])>]をそれぞれ足し込むとともに、q[<pi>]にq[<-(piK[t])>]をそれぞれ足し込むステップと、
    0≦i≦m-1で、-q[<pi>]=ciをそれぞれ求めるステップと
    を有することを特徴とする請求項4記載の暗号化/復号化プログラム。
  6. 素数pを標数とし、拡大次数mの拡大体Fp mの2つの元A={a0,a1,a2,・・・,am-1}、B={b0,b1,b2,・・・,bm-1}を、平文データと暗号化鍵、または暗号データと復号化鍵として、
    前記平文データと前記暗号化鍵とを乗算させて元C={c0,c1,c2,・・・,cm-1}を生成することにより暗号化する、または前記暗号データと前記復号化鍵とを乗算させて元C={c0,c1,c2,・・・,cm-1}を生成することにより復号化する演算器を備えた暗号化/復号化装置において、
    前記元をそれぞれ記憶する第1の記憶部と、
    前記拡大次数mを記憶する第2の記憶部と、
    km+1が素数であって、Fkm+1でpが原始元となる正整数kを前記演算器による演算に基づいて特定して記憶する第3の記憶部と、
    前記の2つの元A,Bを、前記正整数kを用いて素数pを標数とする拡大次数kmの拡大体Fp kmにおける2つの元として前記演算器で乗算した結果を記憶する第4の記憶部と、
    前記拡大次数kmの拡大体Fp kmの元の乗算結果を用いて前記演算器で所定の演算を行って、部分体である前記拡大次数mの拡大体Fp mの元における乗算の結果を求めて記憶する第5の記憶部と
    を有することを特徴とする暗号化/復号化装置。
  7. 0≦i≦m-1、0≦j≦k-1とし、
    <x>がxのmod(km+1)をとるものとして、
    前記第4の記憶部は、
    0≦t≦k-1で、<pmt>=K[t]となる各K[t]をそれぞれ求めて記憶する記憶部と、
    0≦i≦kmで、それぞれ0=q[<i>]として記憶する記憶部と、
    0≦i≦m-1で、aibimodp=q[<pi>]をそれぞれ求めて記憶する記憶部と、
    0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて記憶する記憶部と、
    0≦t≦k-1でq[<pi+(pjK[t])>]にMをそれぞれ足し込んで記憶する記憶部と
    を有することを特徴とする請求項6記載の暗号化/復号化装置。
  8. 前記第5の記憶部は、
    0≦i≦m-1で、かつ1≦t≦k-1で、q[<pi>]にq[<(piK[t])>]をそれぞれ足し込んで記憶する記憶部と、
    0≦i≦m-1で、kq[<0>]-q[<pi>]=ciをそれぞれ求めて記憶する記憶部と
    を有することを特徴とする請求項7記載の暗号化/復号化装置。
  9. k=2k'の場合に、
    F2k'm+1でpが原始元あるいは位数がk'mかつk'mが奇数となる正整数k'として、この正整数k'を記憶する記憶部を有し、
    0≦i≦m-1、0≦j≦2k'-1とし、
    <x>がxのmod(2k'm+1)をとるものとして、
    前記第4の記憶部は、
    0≦t≦k'-1で、<pmt>=K[t]となる各K[t]をそれぞれ求めて記憶する記憶部と、
    0≦i≦2k'mで、それぞれ0=q[<i>]として記憶する記憶部と、
    0≦i≦m-1で、aibimodp=q[<pi>]をそれぞれ求めて記憶する記憶部と、
    0≦i<j≦m-1で、(ai-aj)(bi-bj)modp=Mをそれぞれ求めて記憶する記憶部と、
    0≦t≦k'-1でq[<pi+(pjK[t])>]にMをそれぞれ足し込し込んで記憶するとともに、q[<pi-(pjK[t])>]にMをそれぞれ足し込んで記憶する記憶部と
    を有することを特徴とする請求項6記載の暗号化/復号化装置。
  10. 前記第5の記憶部は、
    0≦i≦m-1で、かつ1≦t≦k'-1で、q[<pi>]にq[<(piK[t])>]をそれぞれ足し込むとともに、q[<pi>]にq[<-(piK[t])>]をそれぞれ足し込んで記憶する記憶部と、
    0≦i≦m-1で、-q[<pi>]=ciをそれぞれ求めて記憶する記憶部と
    を有することを特徴とする請求項9記載の暗号化/復号化装置。
  11. 素数pを標数とし、拡大次数mの拡大体Fp mの2つの元A={a0,a1,a2,・・・,am-1}、B={b0,b1,b2,・・・,bm-1}を乗算して元C={c0,c1,c2,・・・,cm-1}を生成する演算器を備えた拡大体の乗算装置において、
    前記元をそれぞれ記憶する第1の記憶部と、
    前記拡大次数mを記憶する第2の記憶部と、
    km+1が素数であって、Fkm+1でpが原始元となる正整数kを前記演算器による演算に基づいて特定して記憶する第3の記憶部と、
    前記の2つの元A,Bを、前記正整数kを用いて素数pを標数とする拡大次数kmの拡大体Fp kmにおける2つの元として前記演算器で乗算した結果を記憶する第4の記憶部と、
    前記拡大次数kmの拡大体Fp kmの元の乗算結果を用いて前記演算器で所定の演算を行って、部分体である前記拡大次数mの拡大体Fp mの元における乗算の結果を求めて記憶する第5の記憶部と
    を有することを特徴とする拡大体の乗算装置。
JP2008526767A 2006-07-24 2007-07-24 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置 Expired - Fee Related JP4836208B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008526767A JP4836208B2 (ja) 2006-07-24 2007-07-24 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2006200946 2006-07-24
JP2006200946 2006-07-24
JP2007010072 2007-01-19
JP2007010072 2007-01-19
JP2008526767A JP4836208B2 (ja) 2006-07-24 2007-07-24 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置
PCT/JP2007/064474 WO2008013154A1 (en) 2006-07-24 2007-07-24 Extension filed multiplication program and extension filed multiplication device

Publications (2)

Publication Number Publication Date
JPWO2008013154A1 true JPWO2008013154A1 (ja) 2009-12-17
JP4836208B2 JP4836208B2 (ja) 2011-12-14

Family

ID=38981465

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008526767A Expired - Fee Related JP4836208B2 (ja) 2006-07-24 2007-07-24 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置

Country Status (3)

Country Link
US (1) US8090099B2 (ja)
JP (1) JP4836208B2 (ja)
WO (1) WO2008013154A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112010005842T8 (de) 2010-10-05 2014-07-17 Hewlett-Packard Development Company, L.P. Verwürfeln einer Adresse und Verschlüsseln von Schreibdaten zum Speichern in einer Speichervorrichtung
WO2012047199A1 (en) * 2010-10-05 2012-04-12 Hewlett-Packard Development Company, L.P. Modifying a length of an element to form an encryption key
JP6146725B2 (ja) * 2013-07-12 2017-06-14 パナソニックIpマネジメント株式会社 暗号通信装置、暗号通信方法およびそのコンピュータプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001034167A (ja) * 1999-07-23 2001-02-09 Toshiba Corp 演算装置及び暗号処理装置
JP2001016196A (ja) * 1999-04-28 2001-01-19 Fuji Soft Abc Inc 多重アファイン鍵を用いる暗号化・復号化方法、認証方法、及びこれを用いる各装置
JP4177526B2 (ja) * 1999-08-05 2008-11-05 富士通株式会社 乗算剰余演算方法および乗算剰余回路
JP2002304120A (ja) * 2001-04-06 2002-10-18 Japan Science & Technology Corp 楕円曲線暗号の処理方法および装置
JP2003084666A (ja) * 2001-09-07 2003-03-19 Japan Science & Technology Corp 楕円曲線暗号の処理方法および装置
US7346159B2 (en) * 2002-05-01 2008-03-18 Sun Microsystems, Inc. Generic modular multiplier using partial reduction
JP2004233428A (ja) * 2003-01-28 2004-08-19 Nec Corp 逆元演算装置、逆元演算方法、及び逆元演算プログラム
JP2005284111A (ja) * 2004-03-30 2005-10-13 Japan Science & Technology Agency 楕円曲線暗号の高速演算処理方法および装置
JP4664850B2 (ja) * 2006-03-30 2011-04-06 株式会社東芝 鍵生成装置、プログラム及び方法

Also Published As

Publication number Publication date
US20090323929A1 (en) 2009-12-31
JP4836208B2 (ja) 2011-12-14
US8090099B2 (en) 2012-01-03
WO2008013154A1 (en) 2008-01-31

Similar Documents

Publication Publication Date Title
JP6083234B2 (ja) 暗号処理装置
US8300811B2 (en) Method and device for processing data
US11798435B2 (en) Executing a cryptographic operation
KR101861089B1 (ko) 근사 복소수 연산을 지원하는 복수 개의 메시지의 동형 암호화 방법
JP5966877B2 (ja) 復号方法、復号プログラム、復号装置、および鍵生成方法
JP6244728B2 (ja) 情報処理方法及びプログラム
US11283608B2 (en) Executing a cryptographic operation
JP4137385B2 (ja) 公開鍵および秘密鍵による暗号化方法
JP5814880B2 (ja) 暗号システム、暗号方法、暗号プログラム及び復号装置
JP2011164607A (ja) シンボルシーケンスの編集距離のプライバシーを保護した計算の方法およびシステム
JPWO2012057134A1 (ja) 代理計算システム、計算装置、能力提供装置、代理計算方法、能力提供方法、プログラム、及び記録媒体
US20070211894A1 (en) Encryption processing apparatus, encryption processing method, and computer program
JP2002229445A (ja) べき乗剰余演算器
EP3352411B1 (en) Method of generating cryptographic key pairs
JP4836208B2 (ja) 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置
Tahat et al. Hybrid publicly verifiable authenticated encryption scheme based on chaotic maps and factoring problems
CN111712816B (zh) 使用密码蒙蔽以用于高效地使用蒙哥马利乘法
JP2007187908A (ja) サイドチャネル攻撃に耐性を有するモジュラーべき乗算計算装置及びモジュラーべき乗算計算方法
JP5679344B2 (ja) 署名鍵難読化システム、署名鍵難読化方法、難読化された署名鍵を用いた暗号化署名システム、難読化された署名鍵を用いた暗号化署名方法とプログラム
EP3675088B1 (en) Share generating device, share converting device, secure computation system, share generation method, share conversion method, program, and recording medium
Kim et al. An efficient public key functional encryption for inner product evaluations
Oder Efficient and side-channel resistant implementation of lattice-based cryptography
Poulakis et al. A Digital Signature Scheme based on two hard problems
JP5038868B2 (ja) 鍵共有方法、第1装置、第2装置、及びそれらのプログラム
US20220385448A1 (en) Methods and systems for public and private-key leveled fully homomorphic encryption without bootstrapping with hensel codes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100609

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20110712

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20110722

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

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

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

Free format text: PAYMENT UNTIL: 20141007

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4836208

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees