JP7443217B2 - 暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラム - Google Patents

暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラム Download PDF

Info

Publication number
JP7443217B2
JP7443217B2 JP2020188737A JP2020188737A JP7443217B2 JP 7443217 B2 JP7443217 B2 JP 7443217B2 JP 2020188737 A JP2020188737 A JP 2020188737A JP 2020188737 A JP2020188737 A JP 2020188737A JP 7443217 B2 JP7443217 B2 JP 7443217B2
Authority
JP
Japan
Prior art keywords
polynomial
variable
plaintext
unit
factors
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.)
Active
Application number
JP2020188737A
Other languages
English (en)
Other versions
JP2022077754A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2020188737A priority Critical patent/JP7443217B2/ja
Priority to US17/459,320 priority patent/US20220150064A1/en
Publication of JP2022077754A publication Critical patent/JP2022077754A/ja
Application granted granted Critical
Publication of JP7443217B2 publication Critical patent/JP7443217B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system

Landscapes

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

Description

本発明の実施形態は暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラムに関する。
電子メールを始めとする多くの情報がネットワークを行き交うことにより、人々がコミュニケーションを行なうネットワーク社会において、暗号技術は情報の機密性や真正性を守る手段として広く活用されている。一方で、現在広く利用されているRSA暗号や楕円曲線暗号であっても量子計算機が出現すれば解読される危険に晒されている。
特開2010―204466号公報
駒野雄一、秋山浩一郎、後藤泰宏、縫田光司、花岡悟一郎、"多項式の近似GCDを利用した代数曲面暗号方式"、信学技報、116(130)、pp.217‐222 (2016).
本発明が解決しようとする課題は、量子計算機が出現しても安全性が確保できる暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラムを提供することである。
実施形態の暗号化装置は、公開鍵取得部と平文埋め込み部と多項式演算部と多項式生成部と暗号化部とを備える。公開鍵取得部は、有限体F上の1変数多項式環F[t]の一定次数以下の元を係数に持つn変数不定方程式X(x,・・・,x)を、公開鍵として取得する。平文埋め込み部は、平文mを前記1変数多項式環F[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m(x,・・・,x)(i=1,・・・,m)の係数に埋め込む。多項式演算部は、前記n変数平文多項式因子m(x,・・・,x)を掛け合わせたn変数平文多項式M(x,・・・,x)を生成する。多項式生成部は、前記1変数多項式環F[t]の一定次数以下の元を係数に持つn変数多項式s(x,・・・,x)(k=1,2)をランダムに生成し、前記1変数多項式環F[t]の一定次数以下の元を係数に持つn変数多項式r(x,・・・,x)をランダムに生成し、前記1変数多項式環F[t]の一定次数以下の元を係数に持つノイズ多項式e(x,・・・,x)をランダムに生成する。暗号化部は、前記n変数平文多項式M(x,・・・,x)に対し、前記n変数多項式s(x,・・・,x)と、前記n変数多項式r(x,・・・,x)と、前記ノイズ多項式e(x,・・・,x)と、前記n変数不定方程式X(x,・・・,x)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理によって、暗号文c(x,・・・,x)を生成する。
実施形態の近似GCDアルゴリズムの例を示す図。 実施形態のイデアル分解アルゴリズムの例を示す図。 実施形態の不定方程式X(x,y)の係数を調整するアルゴリズムの例を示す図。 実施形態の暗号化装置の機能構成の例を示す図。 実施形態の暗号化方法の例を示すフローチャート。 実施形態の復号装置の機能構成の例1(復号(その1)の場合)を示す図。 実施形態の復号方法の例1(復号(その1)の場合)を示すフローチャート。 実施形態の復号装置の機能構成の例2(復号(その2)の場合)を示す図。 実施形態の復号方法の例2(復号(その2)の場合)を示すフローチャート。 実施形態の鍵生成装置の機能構成の例を示す図。 実施形態の鍵生成方法の例を示すフローチャート。 実施形態の次数削減処理(ステップS65の詳細)の例を示すフローチャート。 実施形態の変形例の復号方法の例を示すフローチャート。 実施形態の変形例の復号方法の例を示すフローチャート。 実施形態の変形例のノイズ多項式の復号方法の例を示すフローチャート。 実施形態の暗号化装置、復号装置及び鍵生成装置のハードウェア構成の例を示す図。
以下に添付図面を参照して、暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラムの実施形態を詳細に説明する。
暗号技術は大きく共通鍵暗号技術と公開鍵暗号技術に分けることができる。共通鍵暗号はデータの攪拌アルゴリズムに基づいた暗号方式で、高速に暗号化/復号ができる一方で、予め共通の鍵を持った2者間でしか秘密通信や認証通信ができない。公開鍵暗号は数学的なアルゴリズムに基づいた暗号方式で、共通鍵暗号ほど暗号化/復号が高速でないが、事前の鍵共有を必要としない。公開鍵暗号は、通信の際は送信相手が公開している公開鍵を利用して秘密通信を実現し、送信者の秘密鍵を利用してデジタル署名を施すことで(成りすましを防ぐ)認証通信が可能となるという特徴がある。
このため共通鍵暗号は主に有料デジタル放送のように受信後リアルタイムで復号されなければならない情報の暗号化に利用され、その復号鍵は別途限定受信システムと呼ばれる鍵配信システムを用いて視聴契約者だけに配信する方法が採用されている。一方、インターネットに開設されているオンラインサイトでは顧客情報(クレジットカード番号や住所など)を盗聴から守るために暗号化を行う必要があるが、その暗号鍵は予め交付しておくことが必ずしも可能でないため、公開鍵暗号が用いられることが多い。
代表的な公開鍵暗号にはRSA暗号と楕円曲線暗号がある。RSA暗号は素因数分解問題の困難性が安全性の根拠となっており、冪乗剰余演算が暗号化演算として用いられている。楕円曲線暗号は楕円曲線上の離散対数問題の困難性が安全性の根拠となっており、楕円曲線上の点演算が暗号化演算に用いられている。これらの公開鍵暗号は特定の鍵(公開鍵)に関する解読法は提案されているものの、一般的な解読法は知られていないため、安全性に関する重大な問題は、後に述べる量子計算機による解読法を除き、現在までのところ見つかっていない。
この他の公開鍵暗号には(NP問題として知られている)ナップサック問題の困難性に安全性の根拠をおいたナップサック暗号、体の拡大理論を利用して構成され、連立方程式の求解問題に安全性の根拠をおいた多次多変数暗号などがある。しかし、ナップサック暗号に関しては既にほとんど全ての実現形態において解読法が知られており、安全性はかなり疑問であると言わざるを得ない。
多次多変数暗号に関しては有力な攻撃方法が知られている一方で知られている解読法が通用しない実現形態も存在するため、安全性に関してはかなり損なわれているが、決定的なものとはなっていない。しかし、知られている解読法を避けるために必要な鍵サイズが大きくなっており、問題視されはじめている。
一方で、現在広く利用されているRSA暗号と楕円曲線暗号であっても量子計算機が出現すれば解読される危険に晒されている。量子計算機とは量子力学で知られているエンタングルメントという物理現象を利用して、(現在の計算機とは違った原理に基づいて)超並列計算を行わせることができる計算機である。量子計算機は、現在までのところ実験レベルでしか動作が確認されていない仮想の計算機であるが、実現に向けた研究開発が進められている。この量子計算機を用いて1994年にShorは素因数分解や離散対数問題を効率的に解くアルゴリズムが構成できることを示した。即ち、量子計算機が実現すれば素因数分解に基づくRSA暗号や、(楕円曲線上の)離散対数問題に基づく楕円曲線暗号は解読できることになる。
このような状況の下、量子計算機が実現されてもなお安全である可能性を秘めた公開鍵暗号の研究が近年行われるようになってきた。現時点でも実現可能な公開鍵暗号で量子計算機でも解読が難しいとされているものに格子暗号がある。格子暗号は格子という離散的なn次元ベクトル空間(線形空間)の中で原点以外の点の中で最も原点に近い点を求める問題(最短ベクトル問題)を安全性の根拠にしている公開鍵暗号である。
最短ベクトル問題はNP困難な問題ではあるが、線形問題であるため、小さなサイズの問題は容易に解けてしまう。そこで、安全性を実現するための次元数が大きくなり、公開鍵や秘密鍵といった鍵サイズが大きくなり、特にローエンドデバイスへの適用が危ぶまれている。更に、公開鍵暗号は共通鍵暗号と比較して、回路規模が大きく、処理時間も掛かるため、モバイル端末などの小電力環境では実現できないか実現しても処理時間が掛かるという問題があった。このため、小電力環境でも実現できる公開鍵暗号が求められている。
一般に公開鍵暗号は(素因数分解問題や離散対数問題などの)計算困難な問題を見出し、(秘密鍵を知らずに)暗号文を解読しようとする場合、当該計算困難な問題を解くことと同等になるように構成する。しかし、逆に計算困難な問題を1つ定めたとしても、必ずその問題を安全性の根拠とするような公開鍵暗号が容易に構成できる訳ではない。なぜなら、計算が困難すぎる問題に安全性の根拠をおくと鍵を生成する問題も困難になり、構成ができない。一方で問題を鍵生成が可能となる程度に容易とすると、解読も容易になってしまう。
従って、公開鍵暗号を構成するには計算困難な問題を見つけるとともに、鍵生成できる程には容易だが、(生成した秘密鍵を知らずに)解読できる程には容易でないという絶妙なバランスを持つ問題に作り変えるという創造性が必要であり、この部分の構成が難しいために現在まで数えるほどの公開鍵暗号しか提案されてこなかった。そのような中で、量子計算機による計算でも効率的に解読できない可能性があり、小電力環境でも高速に処理できることが期待される公開鍵暗号に代数曲面を用いた公開鍵暗号(特許文献1)が提案されている。
特許文献1の公開鍵暗号は、秘密鍵を代数曲面X(x,y,t)に対応する2つのセクションとし、公開鍵を代数曲面X(x,y,t)とし、多項式生成手段と暗号化手段とを備える。多項式生成手段は、平文mを平文多項式m(x,y,t)に埋め込む処理と、3変数x,y,tのランダムな多項式h(x,y,t),s(x,y,t),s(x,y,t),r(x,y,t),r(x,y,t)を生成する処理とを行う。暗号化手段は、各多項式と定義式X(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、平文多項式m(x,y,t)から2つの暗号文c=Epk(m,s,r,h,X),c=Epk(m,s,r,h,X)を生成する。特許文献1の公開鍵暗号は、暗号文に非線形性はあるものの、暗号文が2つあり、かつノイズ項がなかったため、解読された。
非特許文献1では、ノイズを載せた暗号方式が提案されている。この暗号方式は、秘密鍵を代数曲面X(x,y,t)に対応する1つのセクションとし、第1の多項式生成手段と、第2の多項式生成手段と、暗号化手段とを備える。第1の多項式生成手段は、公開鍵を代数曲面X(x,y,t)とする時、平文mを平文多項式m(x,y,t)に埋め込む処理と、3変数x,y,tのランダムな多項式s(x,y,t),s(x,y,t),r(x,y,t),r(x,y,t)を生成する処理とを行う。第2の多項式生成手段は、ノイズ多項式e(x,y,t),e(x,y,t)を生成する。暗号化手段は、上記各多項式と上記定義式X(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、平文多項式m(x,y,t)から2つの暗号文c=Epk(m,s,r,e,X),c=Epk(m,s,r,e,X)を生成する。この暗号方式は暗号文にm(x,y)s(x,y),m(x,y)s(x,y)という未知部分の積を取った非線形性はあるものの、平文多項式m(x,y)とランダム多項式s(x,y),s(x,y)との単純な積であった。そのため、本実施形態で述べるような安全性解析をした際、復号可能でかつ安全なパラメータを取ることができないという問題があった。
以下、実施形態では、このような現状に鑑み、量子計算機が出現しても安全性が確保できる可能性を秘め、脆弱性を解消できる公開鍵暗号について説明する。具体的には、秘密を非線形な多項式に隠すことにより、1つの暗号文に非線形構造を持たせ、かつノイズを付加することにより、脆弱性を解消できる公開鍵暗号を構成する。
[代数の説明]
はじめに実施形態で利用する代数を定義する。まず、整数の集合をZで表し、自然数pでの整数Zの剰余類をZと記す。Zは剰余類なので、通常、
={[0],[1],・・・,[p-1]}
と記す。ここで、Zの各元は以下のような性質を満たすことから、加減乗算が定義される。
[a]+[b]=[a+b]
[a]-[b]=[a-b]
[a]・[b]=[a・b]
このように加減乗算が定義でき、結合法則が成り立つとともに、加法の単位元0を含み且つ0以外の元xに対して足し合わせると0となる逆元[-x]([x]+[-x]=[0])を有する集合を環という。更に、可換則([a]+[b]=[b]+[a]、[a]・[b]=[b]・[a])が成り立つ環を可換環といい、加えて乗法の単位元[1]を持つとき単位元を持つ可換環という。
除算に関しては、[b]・[x]=[x]・[b]=[1]を満たす元[x]が存在する[b]についてのみ定義でき、このような元[x]が存在するとき、[x]を[b]の逆元といい[b-1]とかく。即ち、逆元が存在する[b]について除算[a]/[b]は
[b]・[b-1]=[1]
を満たす逆元[b-1]を[a]に掛ける([a]・[b-1])ことにより計算される。
の元[b]に逆元[b-1]が存在するための必要十分条件はGCD(b,q)=1である。即ち、Zの元bはbとpが互いに素となるとき、かつ、その時に限り逆元[b-1]を持つ。例えば、p=5としたとき、b=3は、3と5が互いに素であることから、[3-1]=[2]となる。しかし、p=6とした場合はGCD(3,6)=3となり、互いに素にならず、逆元が存在しないことから、除法は実現できない。
さて、[0]はpで割ったときの余りが0となる集合を表している。明示的に書けば
[0]={・・・,-2p,-p,0,p,2p,・・・}
を意味する。Zに演算を定義するに際しては、集合[0]の要素のどの元で計算しても答えは一致することから、簡単のために集合[0]に含まれる1つの要素(代表元)で代表させて計算することを考える。この代表元は(その性格から)この集合に含まれている元であれば何でも良いのではあるが、実施形態では簡単のため、0で代表させる。同様に、[1]を1、[2]を2のように最小の正整数で代表させ、Zを{0,1,・・・,q-1}で代表させることとする。
ここで、pを素数とすると、0以外の全ての代表元はpと互いに素となり、除法が定義できる。即ち、pを素数とするとZにおいて加減乗除が定義できる。このように可換環であり、0以外の元が乗法に関して逆元を持つ集合を体という。特にpを素数にしたときのZのように有限個の元からなる体を有限体という。有限体はその元の数が素数か素数の冪となるものしかなく、前者を素体と呼ぶ。ここで述べたZは素体である。
次に、多項式に関わる記法と定義を示す。素体Fを係数とする一変数多項式の集合をF[t]と記載する。容易に分かるようにF[t]は加減乗算が可能ではあるが、多項式の除算は定数項のみからなる多項式を除いて逆元が存在しないため成立しない。
[多変数多項式の記法]
次に、2変数多項式に関する用語と記号を定義する。まず、環R上の2変数多項式を下記式(1)により記載する。
Figure 0007443217000001
ここで、τi,j(t)は一変数多項式環F[t]の元である。集合Γξは多項式ξ(x,y)に含まれる非零の単項式の指数の組(i(x指数),j(y指数))の集合で、2変数多項式ξ(x,y)の項集合と呼ぶ。
たとえば、下記式(2)のZ上の多項式の項集合は、下記式(3)となる。
Figure 0007443217000002
Figure 0007443217000003
ここで、Γξの要素数は2変数多項式ξ(x,y)の単項式の数と一致する。また以下では、2変数多項式であることが明らかな場合、ξ(x,y)を単にξと書くことがある。
なお、実施形態では、簡単のため次数Dの2変数多項式の項集合をその最大項集合として定め、Γと表記する。即ち、D=2のときは、下記式(4)となり、D=3のときは、下記式(5)となる。
Figure 0007443217000004
Figure 0007443217000005
このΓは、上記式(3)の項集合Γξを部分集合として含んでいる。
項集合Γが与えられたとき、この項集合Γを持つ一変数多項式環F[t]上の2変数多項式の集合を下記式(6)により定義する。
Figure 0007443217000006
ここでai,j(t)はF[t]上の元である。尚、上記式(6)の左辺を単にFΓDと書くことがある。また、その係数ai,j(t)の次数がd以下に限定される場合を、下記式(7)で表し、同様に単にFΓD,dと書くことがある。
Figure 0007443217000007
一変数多項式環F[t]上の2変数多項式を3変数多項式として、下記式(8)により表す。
Figure 0007443217000008
ここで、μi,j,kは有限体Fの元である。集合Δξは多項式ξ(x,y,t)に含まれる非零の単項式の指数の組(i(x指数),j(y指数),k(t指数))の集合で、3 変数多項式ξ(x,y,t)の項集合と呼ぶ。
たとえば、F上の多項式(9)の項集合は、下記式(10)となる。
Figure 0007443217000009
Figure 0007443217000010
ここで、Δξの要素数は3変数多項式ξ(x,y,t)の単項式の数と一致する。また以下では、3変数多項式であることが明らかな場合、ξ(x,y,t)を単にξと書くことがある。
尚、最大項集合の表記は、2変数多項式の際の表記に倣い、3変数多項式のx,yに関する次数Dで各係数ai,j(t)の次数がd以下に限定される最大項集合をΔD,dと記載することとする。
例えば、D=2,d=1の場合は、下記式(11)となる。
Figure 0007443217000011
[解と零点]
一変数多項式環F[t]上の方程式X(x,y)=0を満たす一変数多項式環F[t]上の元の対(u(t),u(t))を方程式X(x,y)=0の解という。また、X(x,y)を多項式と見たとき、方程式X(x,y)=0の解をX(x,y)の零点という。
[一変数多項式における近似GCD計算]
一変数多項式環F[t]の多項式f(t),g(t)の最大公約式(GCD:Greatest Common Divisor)をa(t)とすると、a(t)はユークリッド互除法によって求められることは良く知られている事実である。これらf(t),g(t)に小さな次数のノイズe1(t),e2(t)がそれぞれ付加された場合の近似GCD計算について説明する。この近似GCD計算の演算は、実施形態の暗号方式の復号において重要な役割を果たす。
下記式(12)のF[t]の多項式f(t),g(t)が、下記式(13)の条件を満たすときに次数dのGCDa(t)を図1に示すAlgorithm1で求めることができることが知られている。
Figure 0007443217000012
Figure 0007443217000013
このアルゴリズムは拡張ユークリッド互除法のアイデアを利用しており、効率的に処理が可能である。本実施形態では、このa(t)のことをf(t),g(t)の近似GCD(Approximate GCD)と呼ぶ。
[多変数多項式のイデアル分解]
多変数多項式環Fp[t][x,y]におけるイデアルを利用した因数分解(イデアル分解)問題を定義し、その1つの解法アルゴリズムを示す。イデアル分解とはF[t][x,y]の2つの元Xとf(=Πj=1 +X)が与えられたときh(∈Fp[t][x,y])(j=1,・・・,n)を求める問題である。ここで、rもF[t][x,y]の元であり、いわば、剰余環F[t][x,y]/(X)における多項式f の因数分解問題である。
多変数多項式環F[t][x,y]の有限集合をG={g,・・・,g}とする。このとき、任意の多項式f(∈Fp[t][x,y])に対して、多項式q(h(∈Fp[t][x,y])が存在して、下記式(14)が、r=0、または、任意のiに対して、LM(r)がLM(g)で割り切れないことが知られている。
Figure 0007443217000014
ここで、LM(r)は多変数多項式環F[t]に定めた単項式順序において先頭順序となる単項式を意味する。例えば、x>y>tなる順序を定めた場合、単項式の順序はx,y,tの順に優先され、同じ変数が入った単項式の場合はこの順で指数が高いものが先にくる。式(9)の多項式をrとすると、rの単項式順序はt,2tx,6x,4tx,x,3ty,5y,4t,t,3となり、LM(r)=tとなる。
有限集合Gを使って、fを上記式(14)のように変形することをfのGによる正規化といい、rをGの正規形(Normal Form)と呼んで、NF(f)と書く。また、多項式のイデアルJに対して集合Gをグレブナ基底と呼ばれる集合にすると、イデアルJに含まれる任意の要素fの正規形が0となる。即ち、下記式(15)と書けることが知られている。
Figure 0007443217000015
ここでqはFp[t][x,y]の元である。
さて、fとXの終結式を計算すると、下記式(16)となることが知られている。
Figure 0007443217000016
ここでRes(f,X)は変数xに関する終結式である。ここで変数yについても同様に下記式(17)により、終結式が計算できる。
Figure 0007443217000017
ここで、イデアルJを下記式(18)とする。
Figure 0007443217000018
Jは(h,X)とほぼ一致し、h∈Jとなることから、イデアルJのグレブナ基底Gを計算し、Gの下でhの正規形を計算すると0となる。いま、簡単のためにhを単にhと書き、hを下記式(19)により表す。
Figure 0007443217000019
ここでμijkはFを値とする変数である。hのGにおける正規形を計算すると下記式(20)になる。
Figure 0007443217000020
この両辺のxの係数を比較することで連立一次方程式を導出し、これを解いてμijkを得ることによって、hを復元することができる。
一方で、実際にはRes(h,X)、Res(h,X)はそれぞれRes(f,X)、Res(f,X)の因子であり、それらの正しい組み合わせでなければhは復元しない。それらの点を考慮すると、イデアル分解は図2に示すAlgorithm2で実現されることが分かる。
[不定方程式とその求解問題]
不定方程式は変数の数が(方程式に含まれる)式の数よりも多い方程式と定義できる。不定方程式はその束縛条件が少ない一方で解の自由度が大きいため、解を持てば複数(場合によっては無数)となることが多い(これが「不定」の意味するところである。)。実際、整数係数の不定方程式の実数解(或いは複素数解)は無数に存在し、その幾つかを近似解として求めることは容易である。一方で、整数係数の不定方程式の整数解など離散的な集合に解を持つ方程式については、通常このような手法は使えない。そこで、何らかの理論的な絞り込みが必要になるが、そのような絞り込みを行っても、一般的には有限回の手段では解の存在、非存在を判定することができないことが知られている(非可解問題)。
実施形態で提案する不定方程式暗号は1変数多項式環F[t]上定義された不定方程式X(x,y)=0の一変数多項式解を求める求解問題を安全性の基盤としており、この問題は以下のように定義される。
定義1(一変数多項式環F[t]上の不定方程式の求解問題)
1変数多項式環F[t]上定義された不定方程式X(x,y)=0が与えられた時、F[t]上の一変数多項式解u(t),u(t)を求める問題を一変数多項式環F[t]上の不定方程式の求解問題、もしくは有限体F上定義された代数曲面X(x,y)上の求セクション問題という。
以下では、実施形態の不定方程式暗号の鍵生成アルゴリズムと暗復号アルゴリズムとを示す。本方式においては平文Mを複数の平文多項式因子m(x,y)に分散して埋め込む。即ち、平文をその係数にそのまま埋め込んだ平文多項式がM(x,y)であるとすると、m(x,y)に対してk個の平文多項式因子と呼ぶ多項式m(x,y)(i=1,・・・,k)を用意して、下記式(21)となるように分散して埋め込む。
Figure 0007443217000021
具体的な埋め込み方法は、後述の[平文の埋め込み]で説明する。一方で、復号においても積Πi=1 (x,y)を復元した後、因数分解を行って、因子m(x,y)(i=1,・・・,k)を求めない限りは平文が復元できない構造となっている。以下では簡単のためにm(x,y)のx,yの多項式として見たときの次数を1とし、m(x,y)=mx,i(t)x+my,i(t)y+m1,i(t)の形に書ける多項式のみを因子とする平文多項式のみを考える。
また、以下に示すアルゴリズムでは、理解を助ける目的で小さなサイズの数値例を添えるが、この数値例では暗号の安全性は保てないことをお断りしておかなければならない。
[システムパラメータ]
システムパラメータとは、各アルゴリズムで利用されるパラメータで、安全性や復号可能性を保証するためのパラメータである。システムパラメータは任意に設定可能な独立パラメータと、独立パラメータから導出される従属パラメータからなり、以下の通りに定められる。独立パラメータは以下の1~7である。
1.p:素体Fのサイズを示す素数
(例)p=7
2.d:解(u(t),u(t))の次数
実施形態ではd=degu(t)=degu(t)とする。
(例)d=9
3.下記式(22)により表される(非線形)不定方程式X(x,y)の次数:D
(例)D=2
Figure 0007443217000022
4.下記式(23)により表される平文多項式M(x,y)の次数:D
(例)D=2
Figure 0007443217000023
5.下記式(24)により表されるランダム多項式r(x,y)の次数:D
(例)D=1
Figure 0007443217000024
6.下記式(25)により表されるランダム多項式s(x,y)の次数:D
(例)D=1
Figure 0007443217000025
7.下記式(26)により表されるノイズ多項式e(x,y)の次数:D
(例)D=0
Figure 0007443217000026
ここで、後述する線形代数攻撃を回避するために、下記式(27)の条件を満たすようにする必要がある。
Figure 0007443217000027
上述の独立パラメータに従属する従属パラメータは以下の1~5である。
1.d:不定方程式X(x,y)(i=1,・・・,D)の各係数τij(t)の次数。
(例)d=d-1
2.d:平文多項式因子m(x,y)(j=1,・・・,D)の各係数の次数。
(例)d=2
3.d:ランダム多項式r(x,y)(k=1,2)の各係数rij(t)の次数。
(例)d=2
4.d:ランダム多項式s(x,y)(k=1,2)の各係数sij(t)の次数。
(例)d=2
5.d:ノイズ多項式e(x,y)(k=1,2)の各係数eij(t)の次数。
(例)d=2
ここで、後述する線形代数攻撃を回避するために、下記式(28)の条件を満たすようにする必要がある。
Figure 0007443217000028
<鍵>
公開鍵暗号の鍵は秘密鍵と公開鍵からなる。以下では、実施形態における鍵を具体的に示す。まず秘密鍵は、下記式(29)により表される不定方程式Xの解uである。
Figure 0007443217000029
(例)ここでd=9,p=7のとき、解uは下記式(30)により表される。
Figure 0007443217000030
公開鍵は、下記式(31)により表される不定方程式X(x,y)である。
Figure 0007443217000031
ここで、X(x,y)=0は秘密鍵uを解に持つ。即ち、X(u(t),u(t)=0である。
<鍵生成>
秘密鍵及び公開鍵は、上述のシステムパラメータを入力として、以下の処理を行うことで生成される。秘密鍵(多項式u(t),u(t)(∈F[t]))は、degu(t)=degu(t)=dの条件で、一様ランダムに生成される。
(例)d=9,p=7の場合、秘密鍵は上述の式(30)により表される。
尚、この秘密鍵u(t),u(t)(∈F[t])はu(t)(∈F[t])のみに圧縮することができる。なぜなら、u(t)さえ分かれば、F[t]上の1変数方程式X(u(t),y)=0を解くことにより、u(t)が比較的容易に導出できるからである。そこで、実施形態ではu(t)を圧縮された秘密鍵とする。
公開鍵は以下の方法1~3で生成できる。
1.不定方程式の項集合ΓDx,dxから定数項τ00(t)以外の項を一様ランダムに生成
具体的な生成方法は、
(a)X(x,y)=0
(b)ΓDxの各要素(i,j)(但し、(0,0)は除く)に対して以下を実行する。
i.次数dの多項式τij(t)をF[t]から一様ランダムに生成。
ii.X(x,y)=X(x,y)+τij(t)x
(例)p=7,d=9,D=2のとき、X(x,y)は下記式(32)により表される。
Figure 0007443217000032
2.定数項τ00(t)を下記式(33)により計算
Figure 0007443217000033
上記式(32)の例の場合には、定数項τ00(t)は、下記式(34)により表される。
Figure 0007443217000034
上記式(32)に上記式(34)の定数項τ00(t)を加えると、X(x,y)は、下記式(35)により表される。
Figure 0007443217000035
ここでX(x,y)の係数に着目すると定数項の係数の次数が26となっており他の項の次数8をはるかに上回っている。これはτ00(t)の計算式(33)により、次数がd・degX(x,y)+dとなるためである。本実施形態ではこれを他の係数の次数に合わせるため、以下の方法3によって調整を行う。
3.不定方程式X(x,y)の調整
解(u(t),u(t))を持つ不定方程式X(x,y)は任意の一変数多項式q(t)に対してX(x,y)+q(t)x-q(t)u(t)(t)という変形を施しても同一の解(u(t),u(t))を持つ。ここで、iを0≦i≦degX(x,y)なる範囲の整数とし、下記式(36)とする。
Figure 0007443217000036
このとき、τ00(t)=q(t)u(t)+τ00’(t)かつdegτ00’(t)<degu(t)と書けるので、X’(x,y)=X(x,y)+q(t)x-q(t)u(t)という変形によって定数項をτ00’(t)とすることができ、次数を減らすことができる。
尚、d=d-1として、この方法を用いると、全ての係数の次数は一致し、調整されたx,xの項と定数項以外の項はステップ1でランダムに選択されたものとなる。そこで、d=d-1として、ステップ1,2でX(x,y)を生成し、本変形を次数の高い項から順に行うことで、各係数の次数を上げることなく定数項τ00(t)の次数を順次下げて任意の(i,j)(∈Γ)に対してdegτij(t)=d-1とすることができる。具体的なアルゴリズムは図3に示すAlgorithm3の通りである。
これにより、X(x,y)は下記式(37)により表される。
Figure 0007443217000037
[公開鍵の圧縮]
上述の公開鍵の生成アルゴリズムから明らかなように、公開鍵となる不定方程式X(x,y)の各項の係数(x(i=0,・・・D)の項以外)はランダムに生成される。したがって、この部分は乱数のシードだけを公開して、特定の疑似乱数生成関数やハッシュ関数などを利用して生成することができる。よって、公開するのはこのシードと調整された部分の係数のみとすることにすることができ、公開鍵のサイズが圧縮される。上記式(37)の例では、下記式(38)の部分のみ実際の係数を公開し、その他の項はシード(通常はセキュリティパラメータだけのビット長をもつ)を公開することにより生成できる。
Figure 0007443217000038
これによれば、次数2であれば約半分に、次数3であれば約2/5、次数4であれば約1/3に圧縮できる。
[暗号化]
次に、実施形態の暗号化処理について説明する。
[平文の埋め込み]
実施形態では、平文を埋め込む平文多項式は上述の式(23)のような積構造をしているため、直接埋め込むことができない。そこで、実施形態の暗号化装置は、平文を平文多項式因子m(x,y)(i=1,・・・,D)に分散して埋め込む。平文多項式の因子m(x,y)は前述の通り、m(x,y)=mj,x(t)x+mj,y(t)y+mj,1(t)と書ける。係数mj,x(t),mj,y(t)及びmj,1(t)はそれぞれd次である。実施形態の暗号化装置は、平文Mをp進展開して、下記式(39)によって表す。
Figure 0007443217000039
このとき、平文Mは下記式(40)のようにF[t]の元に埋め込まれる。
Figure 0007443217000040
即ち、p=7,d=1とすると、実施形態の暗号化装置は、平文(3,0,1,1,5)(7)を平文多項式の因子として分散して埋め込む。例えば、ここではD=3のとき、平文(3,0,1,1,5)(7)は、m=(2,5,5,2,3)(7),m=(6,6,5,1,2)(7),m=(2,3,5,5,0)(7)のように分散する。平文は、これらのベクトルの要素ごとの和m+m+m=(3,0,1,1,5)(7)を取ることで復元される。
このように平文を複数の要素の和に分散するために、例えば実施形態の暗号化装置は、平文Mをm,・・・,mDmに分散するときm,・・・,mDm-1を平文Mと同じサイズのランダムなデータとして生成し、mDm=m-(m+m+・・・+mDm-1)とする。
[暗号化アルゴリズム]
1.平文を、上述の方法で次数d次の平文多項式の因子m(x,y)(j=1,・・・,D)に分散して埋め込む。平文(3,0,1,1,5)(7)を、m=(2,5,5,2,3)(7),m=(6,6,5,1,2)(7),m=(2,3,5,5,0)(7)のように分散する場合、下記のようになる。
(x,y)=(2t+1)x+(5t+5)y+2t+3
(x,y)=(6t+1)x+(6t+5)y+t+2
(x,y)=(2t+1)x+(3t+5)y+5t
ここで、項xの係数は平文多項式因子の定数倍の曖昧性を除去するため1に固定し、項xの係数には平文は埋め込まない。
2.ランダム多項式r(x,y)(k=1,2)の生成
次以下の係数を持つD次の2変数ランダム多項式r(x,y)をランダムに項集合ΓDr、drから生成する。具体的な生成方法は、以下の通りである。
(a)r(x,y)=0(rに初期値0を代入)
(b)各(i,j)∈ΓDrに対して以下を実行する。
i.次数dの多項式rij(t)をF[t]から一様ランダムに生成する。
ii.r=r+rij(t)x(rに右辺の式を代入)
(例)p=7,D=2,d=1のとき、生成されるランダム多項式rは、例えば下記式(41)により表される。
Figure 0007443217000041
3.ランダム多項式s(x,y)の生成
次以下の係数を持つD次の2変数ランダム多項式s(x,y)をランダムに項集合ΓDs、dsから生成する。具体的な生成方法は、以下の通りである。
(a)s(x,y)=0(sに初期値0を代入)
(b)各(i,j)∈ΓDsに対して以下を実行する。
i.次数dの多項式sij(t)をF[t]から一様ランダムに生成。
ii.s=s+sij(t)x(sに右辺の式を代入)
(例)p=7,D=1,d=1のとき、生成されるランダム多項式sは、例えば下記式(42)により表される。
Figure 0007443217000042
4.ノイズ多項式e(x,y)の生成
次以下の係数を持つノイズ多項式e(x,y)をノイズ多項式の形式ΓDe,deから生成する。具体的な生成方法は、以下の通りである。
(a)e(x,y)=0(eに初期値0を代入)
(b)各(i,j)∈ΓDeに対して以下を実行する。
i.次数dの多項式eij(t)をF[t]から一様ランダムに生成。
ii.e=e+eij(t)x(eに右辺の式を代入)
(例)p=7,D=0,d=3のとき、生成されるノイズ多項式eは、例えば下記式(43)により表される。
Figure 0007443217000043
5.暗号文c(x,y)の生成
下記式(44)によって暗号文c(x,y)=Epk(M,s,r,e,X)を計算する。
Figure 0007443217000044
(例)本例の場合、暗号文cは下記式(45)によって表され、暗号文cは下記式(46)によって表される。
Figure 0007443217000045
Figure 0007443217000046
[復号(その1)]
次に、実施形態の1つ目の復号処理について説明する。
解u:(x,y)=(u(t),u(t))を不定方程式X(x,y)に代入するとX(u(t),u(t))=0となる関係があることに注意する。
[復号アルゴリズム]
復号アルゴリズムは以下の通りである。
1.解の代入
解uをc(x,y)に代入して下記式(47)を計算する。
Figure 0007443217000047
本例の場合、c(u(t),u(t))は下記式(48)によって表され、c(u(t),u(t))は下記式(49)によって表される。
Figure 0007443217000048
Figure 0007443217000049
2.平文多項式の積M(u(t),u(t))(=Πi=1 Dm(u(t),u(t)))を近似GCD計算によって算出
これは、上述の式(13)の条件が成り立つときに成立するが、上述の式(13)の条件は後述の条件(62)によって保証される。本例では、下記式(50)により表される。
Figure 0007443217000050
3.M(u(t),u(t))を因数分解
本例の場合は下記式(51)に分解される。
Figure 0007443217000051
4.ステップ3で得られた因子の組合せから平文多項式を復元
本例の場合は、因子(t+2)(t+3)(t+5t+3t+t+6t+4t+t+1)から(2t+1)x+(5t+5)y+2t+3が復元できる。また、因子(t+t+4)(t+3t+6t+6t+4t+t+4t+6t+5)から(5t+1)x+(4t+4)y+5t+3が復元できる。また、(t10+4t+4t+2t+5t+5t+5t+t+2)から(2t+1)x+(3t+5)y+5tが復元できる。因子の組み合わせの求め方と平文多項式因子の復元についての詳細は、[平文多項式因子の絞り込み]及び[平文多項式因子の復元]で後述する。
[平文多項式因子の復元]
次に、復号アルゴリズムのステップ4で得られた因子の組み合わせから平文多項式の因子m(x,y)を復元する方法を示す。ここでは記述を簡略化するため、添え字を付けず、m(u(t),u(t))から平文多項式の因子m(x,y)を復元するアルゴリズムを示す。
まず、正しい(即ち、正しい平文多項式m(x,y)に対応した)因子m(u(t),u(t))が得られた場合、平文多項式は下記式(52)により与えられる。
Figure 0007443217000052
ここで、degm(t),degm(t),degm(t)≦dであることから、下記式(53)と書ける。
Figure 0007443217000053
そこで、mx,j,my,j,m1,j(j=0,・・・,d)を変数として、秘密鍵である(x,y)=(u(t),u(t))を代入し、得られた式をm(u(t),u(t))と比較する(下記式(54))。
Figure 0007443217000054
即ち、上記式(54)は右辺にのみ変数があり、左辺には変数がないことから、右辺と左辺の係数比較により連立方程式が成立する。しかも右辺の変数は相互に乗算されることがないので、連立一次方程式となり、これを解くことにより、平文多項式が復元できる。
尚、上記式(54)から導出される方程式は変数が3(d+1)、式は平文多項式が上記式(52)の形であり、全体でd+d次あることを考えると、定数項も含めた項の数はd+d+1となるので、同じ数だけの式が存在する。
ここで、解が1つに定まるためには、式の数が変数の数以上にならなければならないので、下記式(55)の条件を満たさなければならない。
Figure 0007443217000055
上述の[復号アルゴリズム]で扱った例もd=9,d=1(d+d=10)であり、この条件を満たしている。ここで、解が求まらなかったときは対象とした因子m(u(t),u(t))が正しい因子ではなかったことを意味し、この因子は棄却する。
[平文多項式の因子の絞り込み]
次に、M(u(t),u(t))を因数分解したときに得られる因子から、平文多項式の因子に対応する因子m(u(t),u(t))の候補を抽出して、絞り込む方法について、実施形態で利用している例に基づいて詳しく説明する。
まず、m(u(t),u(t))の次数はd+dであり、本例ではd=9,d=1なので、10次となる。これと上述の式(51)で示した因数分解を対照すると、下記式(56)により表される因子が1つ確定する。
Figure 0007443217000056
後の2つの因子は、下記式(57)により表されるペアか、下記式(58)により表されるペアのどちらかとなる。
Figure 0007443217000057
Figure 0007443217000058
実際、前者について平文を復元すると、下記式(59)が復元できるが、後者は上述の式(54)から導出される方程式の解が存在せず棄却される。
Figure 0007443217000059
本例においては、m(u(t),u(t))の因子の次数がそれぞれ(1,1,2,8,8,10)であったため、このような比較的単純な組み合わせとなったが、例えば因子の次数が(1,1,2,2,2,2,4,6,10)のような場合は、より複雑となる。このような場合には(ここでは詳しく述べないが)部分和問題を解くアルゴリズムを活用する。部分和問題とは長さlの自然数の数列a,a,・・・,aがあったとき、この要素の中から幾つかを選んで足した結果が特定の数Nとなるような部分数列を求める問題である。この例ではN=10として足した結果が10になるような部分数列のうち重なりのないものを求める問題となる。
ここで、数列(1,1,2,2,2,2,4,6,10)の個々の数字に対応する因子があるので、これらを区別するために、それぞれの要素に番号を付けて[1,2,3,4,5,6,7,8,9]と表記する。ここで、例えば[1,2,3,4,5,6]は対応する数列が(1,1,2,2,2,2)であるから、足したら10となる。[7,8]、[9]も足したら10になり、これらの組み合わせが候補の1つとなる。この他にも[1,2,3,4,7]などという組み合わせもあり、これには[5,6,8]、[9]が対応するペアとなる。部分和問題は一般にはNP困難な問題となるが、このように小さなサイズの問題は比較的短時間で求められることが知られている。
[復号と安全性を両立させるためのパラメータ要件]
復号(その1)においては、ステップ2で実行する近似GCD計算を成立させる条件(13)を成立させるため、下記式(60)及び(61)の条件が必要である。
Figure 0007443217000060
Figure 0007443217000061
上記式(60)及び(61)の条件を上述のシステムパラメータで表現すると、下記式(62)により表される。
Figure 0007443217000062
上記式(62)の条件に、安全性確保のための上述の条件(27)(28)と、平文とランダム要素を復元するための上述の条件(55)とを加えて、パラメータの条件は下記式(63)となる。
Figure 0007443217000063
[復号(その2)]
次に、実施形態の2つ目の復号処理について説明する。上述の復号(その1)では暗号文(c,c)に秘密鍵である解(u(t),u(t))を代入して得られた2つの式の近似GCD計算によってΠj=1 Dm(u(t),u(t))を求めた。更にこれを因数分解することによって、個々の因子m(u(t),u(t))を求め、対応する因子m(x,y)を復元している。しかし、この方法では復元するためにd≧(d+1)なる条件を満たさなければならず、dを固定するとdmが制約を受け、各m(x,y)の係数の次数を下げる必要がある。
そこで復号(その2)では、m(x,y)の復元にm(u(t),u(t))を用いない方法について説明する。この方法によれば、上述の条件(55)の制約条件がなくなり、例えば、d=3,d=1のようなパラメータも取ることができる。このような場合でも、公開鍵と秘密鍵は上述の方法と同じ方法で生成できる。
以下では、このパラメータに基づいて生成した公開鍵X(x,y)と秘密鍵(u(t),u(t))を例示する。
(例)p=7,d=3,D=2のとき、下記式(64)により表される。
Figure 0007443217000064
また、この公開鍵の下で、平文M=(2,2,2,3,3)(7)を(6,5,6,1,3)(7)+(3,4,3,2,0)(7)と分散し、それぞれ平文多項式因子m(x,y)、m(x,y)に下記式(65)のように埋め込む。
Figure 0007443217000065
ここで、項txの係数は平文多項式因子の定数倍の曖昧性を除去するため2に固定する必要から平文は埋め込まない。この平文多項式因子に対する暗号文(c,c)はランダム多項式を、下記式(66)とし、ノイズ多項式をe=t+1、e=3t+6とすることにより、下記式(67)のように生成できる。
Figure 0007443217000066
Figure 0007443217000067
[復号アルゴリズム]
復号(その2)の復号アルゴリズムは以下の通りである。
1.解の代入
解uをc(x,y)に代入して下記式(68)を計算する。
Figure 0007443217000068
本例では、下記式(69)となる。
Figure 0007443217000069
2.平文多項式の積M(u(t),u(t))(=Πi=1 Dm(u(t),u(t)))を近似GCD計算によって算出
これは、上述の式(13)の条件が成り立つときに成立するが、上述の式(13)の条件は上述の条件(62)によって保証される。本例では、M(u(t),u(t))は下記式(70)により表される。
Figure 0007443217000070
3.e(u(t),u(t))を計算してe(x,y)を復元
ステップ2で計算したM(u(t),u(t))から下記式(71)によりe(u(t),u(t))を計算し、上述の復号(その1)で述べた復元方法によりe(x,y)を復元する。
Figure 0007443217000071
本例の場合はD(= degx,ye(x,y))=0なので、下記式(72)がそれぞれe(x,y)、e(x,y)にあたる。
Figure 0007443217000072
>0の場合であっても、条件d≧2(d+1)条件が整えば復元可能となる。
4.Πj=1 Dmj・+Xrkを導出
‐eを計算することでこれを導出する。本例では、下記式(73)及び(74)となる。
Figure 0007443217000073
Figure 0007443217000074
5.c‐eをイデアル分解することでm、sを導出
イデアル分解の具体的な方法は、上述のイデアル分解の説明の通りである。本例では、c‐eから、下記式(75)に分解され、c‐eから、下記式(76)に分解される。
Figure 0007443217000075
Figure 0007443217000076
これらの共通部分が下記式(77)に示すm(x,y)、m(x,y)となるが、これは上述の式(65)において生成したものと一致している。
Figure 0007443217000077
また、共通部分以外の(2t+3)x+(5t+2)y+3t+5と(2t+6)x+(4t+6)y+t+2はそれぞれs(x,y)、s(x,y)となり、これも上述の式(66)と一致する。尚、イデアル分解では複数分解候補が出ることがあるが、正
しい平文多項式以外は次のステップ6でほとんど棄却可能である。
6.rの復元
=(c‐e‐Πj=1 Dm・s)/Xにより、rを復元する。
7.平文Mの復元
,s,r,eの全てが復元された場合、平文多項式因子m(x,y)から上述の式(21)によってM(x,y)を復元し、その係数から平文Mを復元する。m,s,r,eの全てが復元された場合、平文多項式因子から平文Mを復元する。
[復号と安全性を両立させるためのパラメータ要件]
復号(その2)においてもステップ2で実行する近似GCD計算を成立させる条件(62)は必要だが、多項式を復元するための条件(55)はノイズ多項式復元のための条件d≧2(d+1)に変わる。これと安全性を確保するための条件を合わせると下記式(78)が復号と安全性を両立させるための条件となる。
Figure 0007443217000078
尚、D=0の場合は条件d≧2(d+1)はなくなり、下記式(79)となる。
Figure 0007443217000079
[復号に関する注意]
復号(その1)及び復号(その2)は、共通して近似GCD計算を利用しており、これが成功するための条件(62)がそれぞれパラメータの条件(63)(78)に反映されている。
しかし、実際の復号の際には、degΠj=1 Dm(u(t),u(t))やdegs(u(t),u(t))が(計算の途中で最高次の係数が0となることによって)下がることにより、条件(62)の元となる2つの不等式(60)(61)のどちらか一方が成り立たなくなり、近似GCD計算に失敗することがある。そこで、近似GCD計算の失敗確率を一定以下に設定するとともに、近似GCD計算に入力するGCDの次数をdegΠj=1 Dm(u(t),u(t))よりも小さいところから始めなくてはならない。一方で、gcd(s(u(t),u(t)),s(u(t),u(t)))≠1の場合、s(u(t),u(t)),s(u(t),u(t))が互いに素ではないので共通因子ν(t)が存在して、ν(t)Πj=1 Dm(u(t),u(t))がGCDとなることから、degΠj=1 Dm(u(t),u(t))よりも少し大きいところまでGCDの次数を設定しなくてはならない。
[復号失敗確率]
次に、degΠj=1 Dm(u(t),u(t))やdegs(u(t),u(t))の各係数の分布がそれぞれ独立の一様分布であると仮定して、条件(60)(61)が成り立たなくなる確率を求める。
不等式(60)が成り立たなくなる確率Probmfailは、下記式(80)であり、不等式(61)が成り立たなくなる確率Probmfailは、下記式(81)である。下記式(80)及び(81)のうち大きい方が復号失敗確率となる。
Figure 0007443217000080
Figure 0007443217000081
以下では本実施形態の幾つかのバリエーション(変形例)を述べる。
[暗号文のバリエーション]
本実施形態における暗号文は式(44)で定義されるが、これを下記式(82)としても、同様に、実施形態の暗号化方法及び復号方法は成立し、後述の安全性検証も成り立つ。
Figure 0007443217000082
[公開鍵X(x,y)の圧縮に関するバリエーション]
上述の実施形態では公開鍵である不定方程式X(x,y)の係数は定数項以外を一様ランダムに取り、一部の項(上述の実施形態ではx(i=0,・・・,D)の項)のみを調整した。調整には秘密鍵の情報が必要だが、調整していない項はランダムのままであるので、生成に利用したシードを公開すれば、特定の疑似乱数生成関数やハッシュ関数などを指定して生成することができる。従って、公開するのはこのシードと調整された部分の係数のみとすることにすることができ、公開鍵のサイズが圧縮される。そのようにすると上述の実施形態では、下記式(83)の部分のみ実際の係数を公開し、その他の項はシード(通常はセキュリティパラメータだけのビット長をもつ)を公開することにより、次数2であれば約半分に、次数3であれば約2/5、次数4であれば約1/3に圧縮できる。
Figure 0007443217000083
このバリエーションはメモリ容量の小さいローエンド機器への活用を広げることを可能とする。
[公開鍵X(x,y)の係数に関するバリエーション]
実施形態では公開鍵である不定方程式X(x,y)の係数は定数項以外を一様ランダムに取り、一部の項(上述の実施形態ではx(i=0,・・・,D)の項)のみを調整した。ここで各係数はF[t]の元であり、この係数は全て非ゼロとは限らない。仮に非ゼロの係数があった場合は、暗号文のX(x,y)r(x,y)において一部の項の係数が常にゼロとなる可能性があり、その場合は線形代数攻撃や係数比較攻撃において(全部の情報は洩れなくても)暗号文を構成するランダム多項式の一部の情報が洩れ、そこから平文の情報の一部が漏れる可能性がある。そこで、本バリエーションでは公開鍵X(x,y)の各項の係数τij(t)の係数を非ゼロにする方法について説明する。
これを実現するにはまず、係数τij(t)を一様ランダムに選択する際にランダムに値を取る範囲を1からpまでとする。更に調整する係数に関しては、調整の結果、一部の係数がゼロとなった場合、秘密鍵u(t),u(t)を取り直すか、一様ランダムに選択した際に利用したシードを変更して再度取り直すことによって非ゼロとすることが可能となる。
[項集合の取り方に関するバリエーション]
上述の実施形態では簡単のために項集合を最大項集合に限定していた。これは未知係数を持つ多項式によって平文を効果的に隠すためには十分ではあるが、暗号文c(x,y)における平文項Πj=1 Dm(x,y)s(x,y)と公開鍵項X(x,y)r(x,y)が同じ式の形となることが条件となるので、必要とまでは言えない。そこで、これらの式の形を指定するため、パラメータDξ,dξに変えてΔξを定めることができる(ここでξにはs,r,e,Xが入る)。このように設定することで、最大項集合よりも小さな項集合で実現できるため、公開鍵、暗号文などのサイズを抑えることができる。
[復号(その1)においてs,r,eを求めるバリエーション]
復号(その1)では復号(その2)のようにs,r,eを求めていないが、平文多項式因子mを求める方法と同じ方法でs,eを復元することが可能であり、rについても復号(その2)における方法が利用できる。但し、この場合は前者の復元のため、条件(63)に加えて下記式(84)の条件が必要になる。
Figure 0007443217000084
このように構成することで、復号の候補が複数あった場合、それらに対応したs,r,e復元できるか否かで絞り込むことが可能となり、複数の候補が存在することによる復号の失敗を防ぐことができる。
[平文情報をs,r,eにも埋め込むバリエーション]
上述のs,r,eを復元するバリエーションを利用すると、平文情報もしくは平文情報の一部をこれらに埋め込むことができる。このようにすることによって一度に暗号化できるビット長を大きくできるだけでなく、認証子としての情報を加えることで、暗号文を改竄する攻撃にも耐性を有する暗号方式を実現できる。尚、平文多項式に埋め込む場合も含めて、平文を埋め込む際、埋め込む領域を予め決めておくことも可能である。この場合は埋め込まない部分にはランダム値か、解読されても影響がない情報を埋め込むことにより、暗号文としての整合を保つことができる。更に、サイドチャネル攻撃のような実装によって生じた脆弱性によって一部の情報が漏洩する状況にも情報漏洩が起こる可能性がある部分には平文を埋めないことにより対応可能となる。
[平文を分散しないバリエーション]
本実施形態では、平文項を積構造とするため、復号結果から暗号化で埋め込んだ平文の順番が分からなくなる。本実施形態において平文を分散する理由は、安全性を向上させるという理由とともに、平文をどの順番で定義しても正しい復号結果を得るようにするためである。その観点に立って考えると平文多項式因子の一部に順番を示す情報を入れておけば良く、例えば上述の式(65)に示す平文多項式因子の定数項にその情報を入れると下記式(85)のようになる。
Figure 0007443217000085
上記(85)では、定数項がそれぞれ0,1となっており、この順番で平文となっていることを意味している。本例においてはtxの項が定数倍の曖昧性を解決するために2に固定していることと、本例の平文の順番とを考慮すると、65613432(7)となり、暗号化できる平文のサイズが大きくなる。
尚、順番を表す数値は0からp-1の範囲であれば0,1,2,・・・と付与しなくても特定の順番でランダムに並べることができる。例えばp=7の場合は3,5と振ることもできる。このようにすることにより、特定の係数が固定されるのを避け、暗号解析に有利となる情報を与えることなく、安全性の高い暗号が構成できる。
[平文多項式因子を用いないバリエーション]
本実施形態では平文を平文多項式因子に分散して埋め込んだが、復号(その2)を前提とすると平文多項式因子を前提とせず、平文多項式をm(x,y)として下記式(86)としても同様の構成ができる。
Figure 0007443217000086
ここで、c(u(t),u(t))、c(u(t),u(t))の近似GCD計算を行うため、条件(60)が必要になるため、m(x,y)は実質上2次以上となる。このため、復号(その1)では復号が困難となるが、復号(その2)ではイデアル分解を利用するため分解が可能となる。このように構成することにより、復号におけるイデアル分解の因子が少なくなるので、処理を高速化することが可能となる。
[近似GCD計算における近似GCDの次数を変化させるバリエーション]
上述の[復号に関する注意]において述べたように近似GCD計算における入力となる近似GCDの次数dはほとんどの場合はd=D(d+d)であるが、それよりも小さい場合や逆に大きい場合が存在する。本バリエーションではこれを考慮した実施形態を示す。これを実施するには復号(その1)、復号(その2)のいずれにおいても、近似GCD計算のステップにおいて、D(d+d)よりも小さい値から次数dを設定して実行し、平文が復元されない場合は当該dを徐々に上げて、最終的にD(d+d)を超える値まで上げて実行する。このようにすることで、d=D(d+d)として実行した場合に復号失敗となっていた暗号文が復号可能となる。
[変数に関するバリエーション]
本実施形態では一貫してF[t]上の2変数多項式を扱ってきたが、これを一般のn変数としても本実施形態と同様に暗号化アルゴリズム、復号アルゴリズム、鍵生成アルゴリズムが成り立つ。変数の数が3つより多くなっても不定方程式X(x,・・・,x)が1つであれば不定方程式であることに変わりはなく、その求解問題は計算困難である。それどころか、変数が増えると多くの場合より計算困難な問題となり、安全性が強化される。そのため鍵サイズが削減可能となるだけでなく、変数が多いため、埋め込める平文のサイズは増える。一方で、復元する係数が増えるためシステムパラメータはd=n(d+1)に変更しなければならない。
[ノイズ多項式の係数eij(t)の次数を項毎に変えるバリエーション]
本実施形態ではD=0に限定して単純化して説明していたが、D>0とすると、復号(その2)においてはe(x,y)を復元するには、e(u(t),u(t))から上述の式(54)に基づく線型連立方程式を立てて、これを解くアルゴリズムを適用することになる。この際に一意解を導出するためには方程式の数が変数の数以上であることが必要である。式の数は一変数多項式e(u(t),u(t))の次数と一致する。一方で、e(x,y)の高次の項(次数の高い項)はD=3であればx,xy,xy,yとなるなど、低次の項よりも数が多い。したがって、e(x,y)における係数の次数を高次の項の係数の次数を低くし、低次の項の係数の次数を高くすることで、変数の数を抑えながら式の数を増やすことができる。また、このように構成することで、Dを一律に決めた場合よりも復号条件(61)を満たすように構成しやすくなるという利点もある。
[ノイズ多項式の係数e(x,y)に積構造を導入するバリエーション]
本実施形態では、平文多項式には積構造を持たせていたが、ノイズ多項式には積構造を持たせていなかった。これはD=0であったことにも起因している。D>0の場合は、上述の[ノイズ多項式の係数eij(t)の次数を項毎に変えるバリエーション]でも示したようにe(x,y)を復元するためにe(u(t),u(t))から線型連立方程式を立てて、これを解く必要があった。ここで、積構造を導入するとノイズ多項式は複数のノイズ多項式因子の積となり、暗号文は下記式(87)となる。
Figure 0007443217000087
上記式(87)ではノイズ多項式因子ek,j(x,y)は1次式だと仮定している。復号については復号(その2)において、ノイズ多項式を復元する際に、上述の[平文多項式因子の復元]で示したように、e(u(t),u(t))を因数分解して因子毎に連立方程式が組めば良い。これにより、より高い次数の1変数多項式を係数に持つノイズ多項式が構成でき、安全性の向上につながる。
[ノイズ多項式と平文多項式の役割を変えるバリエーション]
本実施形態では平文を平文多項式因子に分散して埋め込んでいたが、上述の[ノイズ多項式の係数e(x,y)に積構造を導入するバリエーション]を踏まえると、平文多項式とノイズ多項式の役割を変更することができる。即ち、暗号文は下記式(88)となる。
Figure 0007443217000088
このようにすることで、平文MはMとMに分割し、それぞれm(x,y)=Πj=1 Dmk,1(x,y)、m(x,y)=Πj=1 Dmk,2(x,y)に埋め込むことができる。
上述のバリエーションの一部又は全部を併用して、実施形態に適用してもよい。例えば、[ノイズ多項式の係数e(x,y)に積構造を導入するバリエーション]と、[ノイズ多項式と平文多項式の役割を変えるバリエーション]とを組み合わせてもよい。すなわち、ノイズ多項式と平文多項式との役割を交換し、かつノイズ多項式に積構造を導入してもよい。
[具体的な構成]
次に本実施形態の公開鍵暗号における暗号化装置、復号装置及び鍵生成装置の具体的な構成とその動作方法を示す。
まず、本実施形態の暗号化装置の構成と処理の流れを図5に示すフローチャートに沿って図4に示す全体構成図を参照しながら示す。
実施形態の暗号化装置10は、平文取得部1、公開鍵取得部2、平文埋め込み部3、記憶部4、暗号化部5、多項式生成部6、ランダム値生成部7、多項式演算部8及び暗号文出力部9を備える。
まず、平文取得部1が、平文mを取得する(ステップS1)。平文取得部1は、例えば他のアプリケーション又は他の装置等から取得された暗号化対象データを、平文mとして取得する。平文取得部1は、平文mを平文埋め込み部3に入力する。
次に、平文埋め込み部3が、記憶部4からシステムパラメータp,D,dを取得する(ステップS2)。
次に、公開鍵取得部2が、公開鍵として、2変数不定方程式X(x,y)を取得する(ステップS3)。公開鍵取得部2は、例えば後述の鍵生成装置等の他の装置から公開鍵を取得する。
次に、平文埋め込み部3が、平文取得部1から入力された平文mを|p|ビット(|p|はpのビット長)の3(d+1)個のサブブロックに分割する。次に、平文埋め込み部3が、各サブブロックをD個の平文断片に分割する(ステップS4)。
なお、分割方法は、D個の平文断片が揃ったときに復元できる方法であれば何でも良いが、一例として上述の和を利用した方法が挙げられる。
平文埋め込み部3は、平文断片を順次D個の平文多項式因子に埋め込む(ステップS5)。本実施形態では平文多項式因子は1次式としているため、m(x,y)=mj,x(t)x+mj,y(t)y+mj,1(t)(j=1,・・・,D)であり、各係数mj,x(t)、mj,y(t)、mj,1(t)の次数がdであり、これら多項式の係数はFの元である。平文埋め込み部3は、平文断片を、この1次式の平文多項式因子にそれぞれ埋め込み、平文多項式因子m(x,y),・・・,mDm(x,y)を生成する。
尚、このように本実施形態の暗号方式のブロックサイズは、3(|p|)(d+1)であり、これより大きな平文が入力された際には、まずはこのブロックサイズに分割した上で、ブロック毎に暗号化する。
平文埋め込み部3は、生成されたD個の平文多項式因子を暗号化部5に入力する。
一方、暗号化部5は、公開鍵取得部2から公開鍵を受け付けると、記憶部4から当該公開鍵に適合するシステムパラメータp,D,D,D,d,d,dを取得する。
また、暗号化部5はシステムパラメータp,D,dを多項式生成部6に入力し、ここから形成される最大項集合(以下では単に項集合)Γに従ってd次の多項式を係数に持つ2つのランダムな多項式s(x,y)、s(x,y)の生成を多項式生成部6に指示する。多項式生成部6は、ランダム値生成部7に指示して係数sij(t)の係数となるような0からp-1までの整数を必要な数(この場合は2d#Γ個)だけランダム値生成部7に生成させ、これらの整数に基づいてs(x,y)、s(x,y)を生成する(ステップS6)。なお、#Γは集合Γの要素数を示す。
次に、暗号化部5は、引き続きシステムパラメータp,D,dを多項式生成部6に入力し、ランダム多項式s(x,y)、s(x,y)の生成方法と同じ方法で、ランダム多項式r(x,y)、r(x,y)を生成する(ステップS7)。
次に、暗号化部5は、引き続きシステムパラメータp,D,dを多項式生成部6に入力し、ランダム多項式s(x,y)、s(x,y)の生成方法と同じ方法で、ランダム多項式e(x,y)、e(x,y)を生成する(ステップS8)。
最後に、暗号化部5は、多項式s(x,y)、r(x,y)、e(x,y)(k=1,2)と、公開鍵X(x,y)、及び、D個の平文多項式因子m(x,y),・・・,mDm(x,y)から暗号文c(x,y)(k=1,2)を、下記式(89)に従って生成する(ステップS9)。ここで、D個の平文多項式因子m(x,y),・・・,mDm(x,y)の乗算は、多項式演算部8によって実行される。暗号化部5は、暗号文c(x,y)(k=1,2)を暗号文出力部9に入力する。
Figure 0007443217000089
次に、暗号文出力部9は、暗号化装置10の出力として、暗号文c(x,y)(k=1,2)を(必要ならば予め定められたフォーマットに合わせて変形してから)出力する(ステップS10)。
次に本実施形態の復号(その1)を実行する復号装置の構成と処理の流れを図7に示すフローチャートに沿って図6に示す全体構成図を参照しながら説明する。
実施形態の復号装置20は、暗号文取得部21、鍵取得部22、復号部23、零点代入部24、近似GCD計算部25、因数分解部26、記憶部27、組合せ計算部28、平文多項式因子復元部29及び平文出力部30を備える。
まず、暗号文取得部21が、暗号文c(x,y)(k=1,2)を取得する(ステップS21)。暗号文取得部21は、例えばネットワークを介して他の装置から暗号文c(x,y)を取得する。
次に、鍵取得部22が、公開鍵(X(x,y))と、秘密鍵(零点u:(u(t),u(t))とを取得する(ステップS22)。鍵取得部22は、例えばネットワークを介して他の装置等から公開鍵(X(x,y))を取得し、復号装置の記憶部27等から秘密鍵(零点u:(u(t),u(t))を取得する。
次に、復号部23が、暗号文取得部21から暗号文c(x,y)(k=1,2)を受け付け、鍵取得部22から公開鍵(X(x,y))と、秘密鍵(零点u:(u(t),u(t))とを受け付けると、復号処理が開始される。
復号部23はまず、零点代入部24に暗号文c(x,y)(k=1,2)と零点uとを入力する。零点代入部24は、零点uをc(x,y)に代入し、h(t)(k=1,2)を計算する(ステップS23)。零点代入部24は、h(t)を復号部23に入力する。
次に、復号部23は、零点代入部24からh(t)を受け付けると、h(t)(k=1,2)と、Πj=1 Dm(u(t),u(t))の次数dとを近似GCD計算部25に入力する。近似GCD計算部25は、復号部23からh(t)(k=1,2)と、Πj=1 Dm(u(t),u(t))の次数dとを受け付けると、h(t)(k=1,2)のd次の近似GCDを計算し、近似GCD(M(u(t),u(t)))を復号部23に入力する(ステップS24)。ここで、d=Dm(d+dm)とする。
次に、復号部23は、近似GCD計算部25から近似GCD(M(u(t),u(t)))を受け付けると、当該近似GCDを因数分解部26に入力する。因数分解部26は、復号部23から近似GCD(M(u(t),u(t)))を受け付けると、当該近似GCDの因数分解を実行し(ステップS25)、因数分解の結果を、因子の順序付けられた因子配列として復号部23に入力する。
次に、復号部23は、記憶部27から、システムパラメータd,dを抽出し、因数分解部26から入力された因子配列から、それぞれの因子の次数を取り出して対応する次数配列を生成する。更に、復号部23は、次数配列と平文多項式因子の次数に対応するN(=d+d)を組合せ計算部28に入力する。組合せ計算部28は、次数が丁度Nとなるような因子の組み合わせ(因子系列)を全て抽出し(ステップS26)、当該因子系列のリストを復号部23に入力する。
復号部23は、組合せ計算部28から因子系列のリストを受け付けると、当該リストから因子系列を抽出して、零点u及びシステムパラメータd,dとともに平文多項式因子復元部29に入力する。平文多項式因子復元部29は、復号部23から入力された因子系列と零点uとシステムパラメータdとから上述の方法で平文多項式因子m(x,y),・・・,mDm(x,y)を復元し(ステップS27)、当該平文多項式因子を復号部23に入力する。
次に、平文多項式因子復元部29は、平文多項式因子を全て復元できたか否かを判定する(ステップS28)。
平文多項式因子を全て復元できた場合(ステップS28,OK)、復号部23は、平文多項式因子復元部29から平文多項式因子m(x,y),・・・,mDm(x,y)を受け付けると、当該平文多項式因子の係数から分割された平文を抽出して、平文mを復元する(ステップS28)。次に、平文出力部30が、mを復号結果として出力し(ステップS32)、復号処理を終了する。
一方で、平文多項式因子を全て復元できなかった場合(ステップS28,NG)、復号部23は、次の平文多項式因子候補があるか否かを判定する(ステップS30)。
次の平文多項式因子候補がある場合(ステップS30,Yes)、復号部23は、次の平文多項式因子候補を抽出し(ステップS31)、ステップS27の処理に戻る。具体的には、平文多項式因子復元部29が、平文多項式因子を全て復元できなかった場合に復号部23にエラーを送信する。復号部23は、平文多項式因子復元部29からエラーを受信すると、因子系列のリストを参照して次の候補となる因子系列を零点u及びシステムパラメータd,dとともに平文多項式因子復元部29に送付する。
尚、次の平文多項式因子候補がない場合(ステップS30,No)、復号部23が復号エラーを平文出力部30に通知し、平文出力部30が、復号失敗を示すエラーと空の復号結果とを出力し(ステップS33)、復号処理を終了する。
復号失敗の原因としては通信路上で暗号文が壊れてしまった、或いは改竄されてしまったことが考えられる。もちろん上述の[復号失敗確率]で示したような不可避な場合も考えられるが、復号失敗確率を十分小さく(例えば2-64以下)することによって、例外的な可能性までに下げることが可能となる。
次に本実施形態の復号(その2)を実現する復号装置の構成と処理の流れを図9に示すフローチャートに沿って図8に示す全体構成図を参照しながら説明する。
実施形態の復号装置20-2は、暗号文取得部21、鍵取得部22、復号部23、零点代入部24、近似GCD計算部25、記憶部27、平文出力部30、剰余計算部31、ノイズ多項式復元部32、多項式減算部33及びイデアル分解部34を備える。
ステップS41~S44の処理の説明は、復号(その1)のステップS21~S24(図7参照)と同じなので省略する。
復号部23は、近似GCD計算部25から近似GCDa(t)を受け付けると、剰余計算部31を用いてh(t) mod a(t)を計算し、e(u(t),u(t))を得る(ステップS45)。復号部23は、e(u(t),u(t))を零点u及びシステムパラメータd,dとともにノイズ多項式復元部32に入力する。
次に、ノイズ多項式復元部32は、因子系列と零点uとシステムパラメータdから上述の方法でノイズ多項式e(x,y)、e(x,y)を復元し(ステップS46)、e(x,y)、e(x,y)を復号部23に入力する。
次に、復号部23は、多項式減算部33を用いて、e(x,y)からc(x,y)-e(x,y)を計算し、c(x,y)-e(x,y)をイデアル分解部34に入力する。イデアル分解部34は、c(x,y)-e(x,y)をそれぞれイデアル分解して、m(x,y),・・・,mDm(x,y),s(x,y)、及び、m(x,y),・・・,mDm(x,y),s(x,y)を導出し(ステップS46)、復号部23に入力する。
復号部23は、これらの共通部分として平文多項式因子m(x,y),・・・,mDm(x,y)を特定し、その他の因子としてランダム多項式の組s(x,y)、s(x,y)を特定する。尚、イデアル分解部34は、ここで複数の候補が得られた場合は、平文多項式因子の組とランダム多項式の組とを一組とする因子系列を出力する。
復号部23は、平文多項式因子の組とランダム多項式の組とを一組とする因子系列が計算されると、ステップS46の処理により計算されたe(x,y)(k=1,2)を利用して下記式(90)を計算し、下記式(90)をX(x,y)で割ることによってr(x,y)(k=1,2)を復元する(ステップS48)。
Figure 0007443217000090
次に、復号部23は、r(x,y)(k=1,2)を全て復元できたか否かを判定する(ステップS49)。具体的には、X(x,y)で割った余りが0でなかった場合、正しくr(x,y)(k=1,2)を復元できなかったことを意味する。
(x,y)(k=1,2)を全て復元できなかった場合(ステップS49,NG)、復号部23は、次候補の因子系列(平文多項式因子の組m(x,y),・・・,mDm(x,y)と、ランダム多項式の組s(x,y)(k=1,2))があるか否かを判定する(ステップS50)。
次候補の因子系列がある場合(ステップS50,Yes)、復号部23は、次候補の因子系列を抽出し(ステップS51)、処理はステップS47に戻る。
次候補の因子系列がない場合(ステップS50,No)、復号部23が復号エラーを平文出力部30に通知し、平文出力部30が、復号失敗を示すエラーと空の復号結果とを出力し(ステップS53)、復号処理を終了する。
(x,y)(k=1,2)を全て復元できた場合(ステップS49,OK)、復号部23は、平文mを復元して、平文出力部30が、mを復号結果として出力し(ステップS52)、復号処理を終了する。
次に本実施形態の鍵生成装置の構成と処理の流れを図11に示すフローチャートに沿って図10に示す全体構成図を参照しながら示す。
実施形態の鍵生成装置40は、システムパラメータ取得部41、制御部42、多項式生成部43、ランダム値生成部44、不定方程式生成部45、多項式演算部46及び鍵出力部47を備える。
まず、システムパラメータ取得部41が、システムパラメータp,d,D,dを取得する(ステップS61)。システムパラメータp,d,D,dは、例えばユーザからの入力を受け付けることによって取得される。また例えば、システムパラメータp,d,D,dは、システムパラメータp,d,D,dを含む設定データ等を読み込むことにより取得される。
システムパラメータ取得部41は、システムパラメータを制御部42に入力する。制御部42では、システムパラメータ取得部41から入力されたシステムパラメータに基づいて他の処理部と連携して以下のような処理を行う。
まず、制御部42は、システムパラメータ取得部41から入力されたシステムパラメータのうちp,dを多項式生成部43に入力し、F[t]に含まれる2つの多項式u(t),u(t)の生成を指示する。次に、多項式生成部43が、ランダム値生成部44に2(d+1)個の0からp-1までの整数の生成を指示する。ランダム値生成部44は、疑似乱数生成器などを使って2(d+1)個の0からp-1までの乱数を生成し、多項式生成部43に入力する。多項式生成部43は、ランダム値生成部44から入力された2(d+1)個の乱数を係数として持つ多項式u(t),u(t)を生成し(ステップS62)、当該多項式u(t),u(t)を制御部42に入力する。
制御部42は、多項式生成部43から受け付けた多項式u(t),u(t)を秘密鍵として保持(格納)する。
また、制御部42は、公開鍵(下記式(91)により表される不定方程式X(x,y))の生成を実施する。
Figure 0007443217000091
制御部42は、公開鍵を生成するため、X(x,y)の定数項以外の係数τij(t)をF[t]から抽出する。具体的には、制御部42は、上述の多項式u(t),u(t)を生成したときと同様に、多項式生成部43にパラメータp,dを入力し、F[t]に含まれる#Γ-1個の多項式τij(t)の生成を指示する。多項式生成部43は、ランダム値生成部44を利用して多項式τij(t)を生成し、#Γ-1個の多項式τij(t)を生成する。多項式生成部43は、#Γ-1個の多項式τij(t)を制御部42に入力する。
制御部42は、多項式生成部43により生成された多項式τij(t)、システムパラメータp,d,Γ,d及び秘密鍵u(t),u(t)を不定方程式生成部45に入力する。
不定方程式生成部45は、多項式演算部46を利用しながら、まず定数項のない不定
方程式X′(x,y)を生成する(ステップS63)。次に、不定方程式生成部45は、秘密鍵(多項式u(t),u(t))をX′(x,y)の変数x,yにそれぞれ代入することで、定数項τ00(t)=-X′(u(t),u(t))を計算する(ステップS64)。
次に、不定方程式生成部45は、定数項τ00(t)の次数を削減する処理を行う(ステップS65)。
この次数削減の処理に関しては、その一例を図12に従って詳しく説明する。この次数削減処理は定数項τ00(t)と秘密鍵u(t),u(t)を入力とし、同じ零点を持つ不定方程式の中で次数がd以下の定数項を持つ別の不定方程式に変換する処理である。
基本的な原理は秘密鍵(零点)を利用して、同じ零点を持つ定数項の次数が小さな不定方程式に置き換えていくことにあり、理論的な背景は上述の通りである。
簡単のため、以下の説明ではX(x,y)にはx(i=1,・・・,degX)の項が全て含まれているとする。まず、不定方程式生成部45は、i=degX(x,y)と設定して(ステップS71)、τ00(t) mod u(t)を計算し、τ00(t)を置き換えるとともに、τi0′(t)=τ00(t)/u(t)を計算し(ステップS72)、X′(x,y)をX′(x,y)+τi0′(t)xに置き換える(ステップS73)。この操作を、iを1つずつデクリメントしながら(ステップS74)、1になるまで続ける(ステップS75)。
さて、図11に戻り、図12の処理をX′(x,y)について行うと以下のようになる。τ00(t)がτ00(t)=-X′(u(t),u(t))と設定されており、X′(x,y)の各係数の次数dがd-1であるとすると、τ00(t)の次数はd(degX(x,y)+1)-1を超えず、ほぼd(degX(x,y)+1)-1となることが期待される。一方で、図12の処理によりτ00(t)の次数はddegX(x,y)-1未満となり、当初のτ00(t)と比較して概ねd次だけ削減される。また、τi0′(t)はτ00(t)をu(t)degX(x,y)で割った商であるため次数はd-1以下となり、τi0(t)の次数を超えない。このことを踏まえると、図12の処理により、不定方程式X′(x,y)は定数項以外の係数の次数を変更せずに定数項の次数をdだけ削減できたことが分かる。この操作をiが0になるまで続けることで、最終的にX′(x,y)の定数項以外の係数の次数を変更せずに定数項のみd-1以下とすることができる。
次に、不定方程式生成部45は、X(x,y)=X′(x,y)+τ00(t)によって不定方程式を生成する(ステップS66)。
ここで生成されたX(x,y)が当初の不定方程式X′(x,y)+τ00(t)と同じ零点(u(t),u(t))を持つことを示す。そのためには各ステップで得られる不定方程式が零点(u(t),u(t))を持つことを示せばよい。各ステップで得られる不定方程式はX′(x,y)+τi0′(t)x+(τ00(t) mod u(t))である。ここに零点(u(t),u(t))を代入すると、下記式(92)となり、零点となっていることが分かる。
Figure 0007443217000092
このように生成された不定方程式X(x,y)は不定方程式生成部45から制御部42に出力される。制御部42は以上の一連の処理が完了したことを確認し、生成された公開鍵(X(x,y))及び秘密鍵(u(t),u(t))を鍵出力部47に入力する。鍵出力部47は、制御部42から入力された公開鍵(X(x,y)及び秘密鍵(u(t),u(t))を鍵生成装置40の外部に出力する(ステップS48)。
[上述のバリエーションに関する具体的な構成]
次に、上述のバリエーション(変形例)に関する具体的な構成について説明する。
暗号文のバリエーションは、暗号化装置10の暗号化部5において暗号文を作成するステップにおいて上述の式(82)で計算し、復号装置20ではこれを考慮して自明な変形を行えば実現可能となる。
公開鍵圧縮に関するバリエーションは、鍵生成装置40においてランダム値生成部44への入力に乱数シードを追加するか、ランダム値生成部44からの出力にランダム値生成部44で生成に利用した乱数シードを追加し、最終的に鍵出力部47から公開鍵X(x,y)に変えて調整された係数と当該乱数シードとを出力することで実現ができる。尚、暗号化装置10及び復号装置20においては、公開鍵が入力された際に、当該乱数シードを使って調整されていない係数を復元するとともに、公開鍵に含まれる調整された係数を加えることによって、本来の公開鍵X(x,y)を復元できる。
公開鍵係数に関するバリエーションは、鍵生成装置40におけるランダム値生成部44において公開鍵X(x,y)の係数τij(t)の係数を生成する際に乱数の範囲を1からp-1とする。係数の調整のステップ(不定方程式の定数項τ00(t)の次数を零点(u(t),u(t))により削減するステップ)においては、調整された係数τi0(t)(i=0,・・・,D)に非ゼロの係数を含む場合、再度不定方程式X(x,y)の定数項以外の係数をランダムに生成する部分からやり直すことによって実現される。
項集合の取り方に関するバリエーションは、鍵生成装置40、暗号化装置10のそれぞれにおいて、システムパラメータDξ、dξを指定された項集合Γξに変更し、Γξに基づいて公開鍵やランダム多項式、ノイズ多項式を生成することにより実現される。ここで、ξはX,s,r,eである。
復号(その1)においてs,r,eを求めるバリエーションは、図13に示すフローチャートのように実現する。即ち、図6に示した復号装置20における図7に示したフローチャートの処理において、復号部23は図7の因子系列を全て抽出するステップ(ステップS26)の後に、因子系列を1つ抽出して、零点u及びシステムパラメータd,dとともに平文多項式因子復元部29に入力する。
具体的には、平文多項式因子復元部29は、復号部23から入力された因子系列と零点uとシステムパラメータdとから上述の方法で平文多項式因子m(x,y),・・・,mDm(x,y)を復元する(ステップS81)。
次に、平文多項式因子復元部29は、平文多項式因子を全て復元できたか否かを判定する(ステップS82)。
ここで、復元できない平文多項式因子があった場合(ステップS82,No)、平文多項式因子復元部29は、復号部23にエラーを送信し、復号部23は、次候補の因子系列があるか否かを判定する(ステップS83)。次候補の因子系列がない場合(ステップS83,No)、復号部23は、復号エラーを平文出力部30に通知し、平文出力部30は復号エラーと空の復号結果を出力して(ステップS85)、処理は終了する。
次候補の因子系列がある場合(ステップS83,Yes)、復号部23は、因子系列のリストを参照して次候補の因子系列を抽出し(ステップS84)、次候補の因子系列を零点u及びシステムパラメータd,dとともに平文多項式因子復元部29に入力し、処理はステップS81に戻る。
一方、復元できない平文多項式因子がなかった場合(ステップS82,Yes)、平文多項式因子復元部29は、復元された平文多項式因子を復号部23に入力する。復号部23は、h(t)/M(u(t),u(t))(k=1,2)からs(u(t),u(t))を計算し、これを零点u及びシステムパラメータd,dとともに平文多項式因子復元部29に入力する。平文多項式因子復元部29は、s(x,y)を復元し(ステップS86)、s(x,y)を復号部23に入力する。尚、復元できなかった場合(ステップS87,No)、平文多項式因子復元部29は、復号部23にエラーを送信し、処理は上述のステップS83に進む。
ランダム多項式s(x,y)が復元できた場合(ステップS87,Yes)、復号部23は、h(t) mod M(u(t),u(t))(k=1,2)からe(u(t),u(t))を計算し、これを零点u及びシステムパラメータd,dとともに平文多項式因子復元部29に入力する。平文多項式因子復元部29は、e(x,y)を復元し(ステップS88)、e(x,y)を復号部23に入力する。尚、復元できなかった場合(ステップS89,No)、平文多項式因子復元部29は、復号部23にエラーを送信し、処理は上述のステップS83に進む。
ノイズ多項式e(x,y)が復元できた場合(ステップS89,Yes)、復号部23は、下記式(93)からr(x,y)を復元し(ステップS91)、この下記式(93)による除算における剰余(余り)が0であることをもってr(x,y)の復元を確認する。
Figure 0007443217000093
尚、復元できなかった場合(ステップS91,No)、平文多項式因子復元部29は、復号部23にエラーを送信し、処理は上述のステップS83に進む。
以上により、m,s,e,rが全て復元できた場合(ステップS91,Yes)、ステップS92に進む。ステップS92及びS93の説明は、上述のステップS29及びS32(図7参照)と同じなので省略する。
平文情報をs,r,eにも埋め込むバリエーションに関しては、暗号部5においてs(x,y),s(x,y),e(x,y),e(x,y),r(x,y),r(x,y)をランダムに生成するのではなく、平文(の一部)を平文の多項式への埋め込みと同様の方法で埋め込む。復号装置20においては、復号(その2)に関しては当該平文(の一部)が上述の通りに復元され、復号(その1)に関しては当該平文(の一部)が上述のバリエーションで説明した通りの方法で復元される。そして、平文出力部30が、平文多項式因子から出力された平文mとともに、当該平文(の一部)を出力する。
尚、平文多項式m(x,y)も含めて平文をこれらの一部に埋め込むときには、復号したのち、復号部23において、平文情報を含む全ての項や因子が復号されたのち、平文が埋め込まれた部分の情報を抽出して、抽出された情報のみが平文出力部30に出力される。平文を分散しないバリエーションに関しては、暗号化装置10における平文埋め込み部3において、平文多項式因子に順序情報を埋め込むように変更するとともに、復号装置20では平文多項式因子を復元した際に、順番情報を参照して、その指示する順番に並べることによって実現できる。
平文多項式因子を用いないバリエーションに関しては、暗号化装置10における平文埋め込み部3において、平文を平文多項式に単純に埋め込むだけで良く、復号(その2)を実現する図8に示す復号装置20-2においても出力された平文多項式から係数情報を引き出すだけで平文が復元できる。
近似GCD計算における近似GCDの次数を変化させるバリエーションに関しては、復号(その2)を例としてそのフローチャートを図14に示して説明する。ここでは近似GCDの次数をdとして、dを、期待値であるd=D(d+d)よりもL小さいところからL大きいところまでに設定して近似GCDを求める例を示している。
ステップS101及びS102の説明は、復号(その2)のステップS41及びS42(図9参照)と同じなので省略する。
零点代入部24は、復号(その2)における零点(u(t),u(t))を暗号文c(x,y)に代入してh(t)を計算したのち(ステップS103)、dをその最小値であるD(d+d)-Lに設定する(ステップS104)。
近似GCD計算部25が、このdで近似GCD計算を行う(ステップS105)。
近似GCDが導出できなかった場合(ステップS106,No)、零点代入部24は、dを1つ増加させ(ステップS107)、dが、上限値D(d+d)+L以下であるか否かをチェックする(ステップS108)。上限値D(d+d)+L以下である場合(ステップS108,Yes)、近似GCD計算部25が、再び近似GCD計算を行う(ステップS105)。
上限値D(d+d)+Lを超える場合(ステップS108,No)、平文出力部30が、復号失敗を示すエラーと空の復号結果とを出力し(ステップS109)、復号処理を終了する。
近似GCDが導出できたら(ステップS106,Yes)、復号(その2)と同様の方法で復号を継続するが(ステップS110~S117)、ステップS115が、上述の図9に示す復号(その2)の実施形態とは異なる。
ステップS115で次候補の因子系列がないと判定された場合、上述の図9に示す復号(その2)の実施形態のようにエラーを出力するのではなく(ステップS53)、dを1つ増やして処理を継続する(ステップS107)。これは誤ったdでも復号が進み間違った平文多項式因子を導出することがあるからである。このように近似GCD計算における近似GCDの次数を変化させることにより、復号失敗の確率を極限まで減らすことができる。
変数に関するバリエーションについて本実施形態を変更する部分は暗号化アルゴリズム、復号アルゴリズム、鍵生成アルゴリズムのうちで変数の数に関する部分のみとなる。即ち、変数をx,yとしている部分を変数x,・・・,xに変更し、それに伴ってこれに代入する秘密鍵を(ux1(t),・・・,uxl(t))とするなど自明な変更を施すだけで実現可能となる。
ノイズ多項式の係数eij(t)の次数を項毎に変えるバリエーションについて、本実施形態を変更する部分は以下の通りである。まず、暗号化において、暗号化部5がノイズ多項式e(x,y),e(x,y)を生成するときにシステムパラメータp,D,dを多項式生成部6に入力するところを、次数毎にp,de,De,de,De-1,・・・,de,1,de,0のように次数を指定して多項式生成部6に指示を出す。ここでde,iはe(x,y)のi次の係数の次数を表している。
復号においては復号(その2)において、ランダム多項式s(x,y)が復元できた場合、復号部23はh(t) mod M(u(t),u(t))(k=1,2)からe(u(t),u(t))を計算し、これを零点u及びシステムパラメータd,de,De,de,De-1,・・・,de,1,de,0とともに平文多項式因子復元部29に入力する。平文多項式因子復元部29ではこれを復元し、e(x,y)を復号部23に入力する。尚、平文多項式因子復元部29は、e(x,y)を復元できなかった場合はエラーを復号部23に入力する。
ノイズ多項式の係数e(x,y)に積構造を導入するバリエーションについて本実施形態を変更する部分は暗号化アルゴリズムと復号アルゴリズムである。暗号化アルゴリズムは暗号化部5においてシステムパラメータp,d,Dを多項式生成部6に入力したのち、d次の多項式を係数に持つ2つのD次のランダムな多項式e(x,y),e(x,y)を生成するところを、d次の多項式を係数に持つD個の多項式e1,0(x,y),e1,1(x,y),・・・,e1,De(x,y)を生成し、これらを掛け合わせてe(x,y)を生成し、更に同様にd次の多項式を係数に持つD個の多項式e2,0(x,y),e2,1(x,y),・・・,e2,De(x,y)を生成し、これらを掛け合わせてe(x,y)を生成するアルゴリズムに変更すればよい。
復号については復号(その2)において、ランダム多項式s(x,y)が復元できた場合、復号部23ではh(t) mod M(u(t),u(t))(k=1,2)からe(u(t),u(t))を計算し、ノイズ多項式e(x,y)を復元するが、この時の処理について図15に記載のフローチャートと図6のブロック図を用いて説明する。
因数分解部26は、e(u(t),u(t))を因数分解し(ステップS121)、因数分解の結果を因子の順序付けられた配列により復号部23に入力する。復号部23は、記憶部27からd,dを抽出し、因数分解部26から入力された因子配列からそれぞれの因子の次数を取り出して対応する次数配列を生成する。
更に復号部23は、次数配列と、ノイズ多項式因子の次数に対応するN(=d+d)とを組合せ計算部28に入力し、組合せ計算部28は次数が丁度Nとなるような因子の組み合わせ(因子系列)を全て抽出し(ステップS122)、因子系列のリストを復号部23に入力する。
復号部23は、リストから因子系列を抽出して、零点u及びシステムパラメータd,dとともに平文多項式因子復元部29に入力する。平文多項式因子復元部29は、入力された因子系列と零点uとシステムパラメータdとから、本実施形態に示した方法でノイズ多項式因子ek,1(x,y),・・・,ek,De(x,y)を復元する(ステップS123)。
ノイズ多項式因子を全て復元できた場合(ステップS124,Yes)、ノイズ多項式因子の積によってノイズ多項式e(x,y)を復元する(ステップS127)。
ここで、復元できないノイズ多項式因子があった場合(ステップS124,No)、平文多項式因子復元部29は復号部23にエラーを送信し、復号部23は因子系列のリストを参照して次候補の因子系列があるか否かを判定する(ステップS125)。次候補の因子系列がある場合(ステップS125,Yes)、復号部23は、次候補の因子系列を抽出し(ステップS126)、当該次候補の因子系列を零点u及びシステムパラメータd,dとともに平文多項式因子復元部29に入力し、処理はステップS123に戻る。
尚、ここで次候補の因子系列がなかった場合(ステップS125,No)、復号部23は、復号エラーを平文出力部30に通知し、平文出力部30は、復号エラーと空の復号結果とを出力する(ステップS128)。復号失敗の原因としては通信路上で暗号文が壊れてしまった、或いは改竄されてしまったことが考えられる。上述の[復号失敗確率]で示したような不可避な場合も考えられるが、復号失敗確率を十分小さく(例えば2-64以下)することによって、例外的な可能性までに下げることが可能となる。
ノイズ多項式と平文多項式の役割を変えるバリエーションに関しては、バリエーションの平文多項式とノイズ多項式の役割を変えるだけで良い。このようにすることで、本実施形態においてノイズ多項式を最初に復元し、平文多項式因子の復元を行わないという選択肢も出てくる。これによって処理時間が大幅に削減できる。
以上で、本実施形態における本発明の暗号化装置10、復号装置20,20-2及び鍵生成装置40の具体的構成の説明を終了する。
[安全性の検討]
以下では本実施形態で構成した公開鍵暗号の安全性に関して考察する。尚、公開鍵から秘密鍵を復元する鍵復元攻撃に関しては一般的な解法アルゴリズムがない不定方程式の求解問題であるため、総当たり攻撃においてのみ考察する。
[係数比較攻撃]
係数比較攻撃は暗号文における平文多項式やランダム多項式、ノイズ多項式の未知部分を変数において計算し、実際の暗号文と係数比較することによって生じる連立方程式を解くことにより、平文多項式を他の未知部分とともに導出する攻撃手法である。本方式の場合は既知部分は下記式(94)のみである。
Figure 0007443217000094
未知部分は下記式(95)となる。
Figure 0007443217000095
これらを利用して上述の式(44)に基づいて暗号文を作るとb=1,2のそれぞれに対して下記式(96)が得られる。
Figure 0007443217000096
上記式(96)と、下記式(97)で表される実際の暗号文と係数比較を行う。ここで、μijk,c(l) ijkは既知である。
Figure 0007443217000097
ここでは簡単のため、公開鍵Xと、これに対応したF[t]上の多項式c(=Πl=1 Dm+Xr+e)が以下の条件の下で与えられたとして議論する。このようにc,cのうち一方だけを解析する攻撃を片側攻撃と呼ぶ。ここでは簡単のため下記式(98)として議論を進める。
Figure 0007443217000098
すると、m,r,s,eは下記式(99)とかけ、mijk,s(1) ijk,r(1) ijk,e(1) ijkはFに値を取る変数である。
Figure 0007443217000099
また、Xおよびcはそれぞれ下記式(100)と書け、τijk(1) ijkはFに値を持つ定数である。
Figure 0007443217000100
ここで、x、xy、y、x、yの項および定数項を比較すると、下記式(101)の連立方程式が導出できる。
Figure 0007443217000101
この連立方程式は変数が10、式が6であることから非線形不定方程式となっている。
一般には変数の個数が#ΔDm,Dmdm+#ΔDr,dr+#ΓDs,ds+#ΓDe,deであり、式の個数が#ΓDx+Dr,dx+drである。d、dが大きくなると不定方程式ではなくなるが、NP困難として知られる非線形な多変数連立方程式の求解問題となる。これは、c,cともに考慮に入れた場合でも同様である。
[線形代数攻撃]
線形代数攻撃は係数比較攻撃において非線形部分を線形化することで、本来非線形連立方程式が導出されるところを、線形連立方程式に変える攻撃手法である。これによって攻撃の計算量を飛躍的に下げることが可能となる。非線形部分を線形化するとは非線形部分(即ち、積となっている部分)をひと塊の多項式としてみて未知部分を設定することを意味する。本方式で言えば、平文が埋め込まれている項(平文項)がΠj=1 Dm(x,y)s(x,y)のように非線形となっているため、この部分をまとめて1つの多項式M(x,y)とおく、即ち、暗号文を下記式(102)とおく。
Figure 0007443217000102
未知部分をM,r,s,eとし、これを上述の式(98)に示したパラメータを用いてc(x,y)に適用して、下記式(103)とし、既知部分Xおよびcをそれぞれ下記式(104)とすると、係数比較攻撃と同様の考察により、以下の連立方程式(105)が導出される。
Figure 0007443217000103
Figure 0007443217000104
Figure 0007443217000105
この連立方程式は変数が10、式が6であることから線形不定方程式となっている。一般には変数の個数が#ΔDx+Dr,dx+dr+#ΔDr,dr+#ΓDe,deであり、式の個数が#ΓDx+Dr,dx+drである。このことから、#ΔDr,dr+#ΓDe,de次元だけの解空間を持つ。実際、変数rijk、eijkに任意のFの元を代入すると、これに対応するMijkが求まる。しかし、復号結果として正しいMijkはそのうち1つであり、これを決定するには導出されたM(x,y)を因数分解したときΠj=1 Dm(x,y)s(x,y)となることを確かめる手段しかなく、これには今のところ(係数比較攻撃による以外は)解空間を総当たりするほか方法しか知られていない。よって、総当たり攻撃が回避するに十分な大きさの解空間が取れれば、本攻撃は防ぐことが可能となる。
尚、線形代数攻撃にも両側攻撃が存在するが、解空間を総当たりするという意味では片側攻撃の方が有効となる。
[総当たり攻撃]
前節までに述べた各種攻撃への耐性は基本的に連立方程式を解く計算量で評価したが、本節ではこれらを総当たり攻撃の観点で再考する。係数比較攻撃では片側攻撃の場合、e(x,y)を総当たりすることにより、復号と同じ手段でイデアル分解によりΠj=1(x,y)を求めることが可能となる。そのように考えるとe(x,y)の総当たり回数は(有限体の標数pの変数の個数乗なので)pde+1となり、これもまた計算量が指数関数的に増大する。これは線形代数攻撃でも同様である。
また、鍵復元攻撃においても、多変数連立方程式を解くときには(u(t),u(t))を両方求める必要があったが、これは片方(例えばu(t))を総当たりして、これに対応する(この場合はu(t))をX(u(t),y)=0を解くことによって求めることが可能となる。これらのことを考え合わせるとu(t)の総当たりを検討する必要があり、総当たり回数はpd+1となり、やはり指数関数的に増大する。
以上の考察により、既存のいずれの攻撃においても計算量は指数関数的に増大することが分かる。
最後に、実施形態の暗号化装置10、復号装置20、20-2及び鍵生成装置40のハードウェア構成の例について説明する。
[ハードウェア構成の例]
図16は実施形態の暗号化装置10、復号装置20、20-2及び鍵生成装置40のハードウェア構成の例を示す図である。
実施形態の暗号化装置10、復号装置20、20-2及び鍵生成装置40は、制御装置301、主記憶装置302、補助記憶装置303、表示装置304、入力装置305及び通信装置306を備える。制御装置301、主記憶装置302、補助記憶装置303、表示装置304、入力装置305及び通信装置306は、バス310を介して接続されている。
制御装置301は、補助記憶装置303から主記憶装置302に読み出されたプログラムを実行する。主記憶装置302は、ROM(Read Only Memory)、及び、RAM(Random Access Memory)等のメモリである。補助記憶装置303は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、及び、メモリカード等である。
表示装置304は表示情報を表示する。表示装置304は、例えば液晶ディスプレイ等である。入力装置305は、コンピュータを操作するためのインタフェースである。入力装置305は、例えばキーボードやマウス等である。コンピュータがスマートフォン及びタブレット型端末等のスマートデバイスの場合、表示装置304及び入力装置305は、例えばタッチパネルである。通信装置306は、他の装置と通信するためのインタフェースである。
コンピュータで実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、メモリカード、CD-R及びDVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記憶媒体に記録されてコンピュータ・プログラム・プロダクトとして提供される。
またコンピュータで実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。またコンピュータで実行されるプログラムをダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
またコンピュータで実行されるプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
コンピュータで実行されるプログラムは、実施形態の暗号化装置10、復号装置20、20-2及び鍵生成装置40の機能構成(機能ブロック)のうち、プログラムによっても実現可能な機能ブロックを含むモジュール構成となっている。当該各機能ブロックは、実際のハードウェアとしては、制御装置301が記憶媒体からプログラムを読み出して実行することにより、上記各機能ブロックが主記憶装置302上にロードされる。すなわち上記各機能ブロックは主記憶装置302上に生成される。
なお上述した各機能ブロックの一部又は全部をソフトウェアにより実現せずに、IC(Integrated Circuit)等のハードウェアにより実現してもよい。
また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち1つを実現してもよいし、各機能のうち2つ以上を実現してもよい。
また実施形態の暗号化装置10、復号装置20、20-2及び鍵生成装置40を実現するコンピュータの動作形態は任意でよい。例えば、暗号化装置10(復号装置20、20-2、鍵生成装置40)を1台のコンピュータにより実現してもよい。また例えば、暗号化装置10、復号装置20、20-2及び鍵生成装置40を、ネットワーク上のクラウドシステムとして動作させてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 平文取得部
2 公開鍵取得部
3 平文埋め込み部
4 記憶部
5 暗号化部
6 多項式生成部
7 ランダム値生成部
8 多項式演算部
9 暗号文出力部
10 暗号化装置
20 復号装置
21 暗号文取得部
22 鍵取得部
23 復号部
24 零点代入部
25 近似GCD計算部
26 因数分解部
27 記憶部
28 組合せ計算部
29 平文多項式因子復元部
30 平文出力部
31 剰余計算部
32 ノイズ多項式復元部
33 多項式減算部
34 イデアル分解部
40 鍵生成装置
41 システムパラメータ取得部
42 制御部
43 多項式生成部
44 ランダム値生成部
45 不定方程式生成部
46 多項式演算部
47 鍵出力部
301 制御装置
302 主記憶装置
303 補助記憶装置
304 表示装置
305 入力装置
306 通信装置
310 バス

Claims (17)

  1. 有限体F上の1変数多項式環F[t]の一定次数以下の元を係数に持つn変数不定方程式X(x,・・・,x)を、公開鍵として取得する公開鍵取得部と、
    平文mを前記1変数多項式環F[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m(x,・・・,x)(i=1,・・・,m)の係数に埋め込む平文埋め込み部と、
    前記一つ以上m個のn変数平文多項式因子m(x,・・・,x)を掛け合わせたn変数平文多項式M(x,・・・,x)を生成する多項式演算部と、
    前記1変数多項式環F[t]の一定次数以下の元を係数に持つn変数多項式s(x,・・・,x)(k=1,2)をランダムに生成し、前記1変数多項式環F[t]の一定次数以下の元を係数に持つn変数多項式r(x,・・・,x)をランダムに生成し、前記1変数多項式環F[t]の一定次数以下の元を係数に持つノイズ多項式e(x,・・・,x)をランダムに生成する多項式生成部と、
    前記n変数平文多項式M(x,・・・,x)に対し、前記n変数多項式s(x,・・・,x)と、前記n変数多項式r(x,・・・,x)と、前記ノイズ多項式e(x,・・・,x)と、前記n変数不定方程式X(x,・・・,x)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理によって、暗号文c(x,・・・,x)を生成する暗号化部と、
    を備える暗号化装置。
  2. 前記多項式生成部は、一つ以上d個のノイズ多項式因子ek,j(x,・・・,x)(j=1,・・・,d)を生成し、前記一つ以上d個のノイズ多項式因子ek,j(x,・・・,x)の積によって前記ノイズ多項式e(x,・・・,x)を生成し、
    前記暗号化部は、前記ノイズ多項式e(x,・・・,x)と前記n変数多項式s(x,・・・,x)との積を含む演算を行う暗号化処理によって、暗号文c(x,・・・,x)を生成する、
    請求項1に記載の暗号化装置。
  3. 前記暗号化部は、前記n変数多項式s(x,・・・,x)と前記ノイズ多項式e(x,・・・,x)との積、前記n変数不定方程式X(x,・・・,x)と前記n変数多項式r(x,・・・,x)との積、及び、前記n変数平文多項式M(x,・・・,x)に、加算及び減算のうち少なくとも一つを含む演算を行う暗号化処理によって、暗号文c(x,・・・,x)を生成する、
    請求項1又は2に記載の暗号化装置。
  4. 有限体F上の1変数多項式環F[t]の一定次数以下の元を係数に持つn変数不定方程式X(x,・・・,x)の1つ以上の零点uを、秘密鍵として取得する鍵取得部と、
    暗号文c(x,・・・,x)(k=1,2)に前記零点uを代入することにより、1変数多項式h(t)を生成する零点代入部と、
    前記1変数多項式h(t)の近似GCD(Greatest Common Divisor)を計算することにより、n変数平文多項式M(x,・・・,x)に前記零点uを代入した1変数多項式M(u)を求める近似GCD計算部と、
    前記1変数多項式M(u)を前記有限体F上で、複数の第1の因子に因数分解する因数分解部と、
    前記第1の因子を組み合わせて、前記零点uが代入された前記n変数平文多項式M(x,・・・,x)の複数の第2の因子の組み合わせを求める組合せ計算部と、
    前記複数の第2の因子の組み合わせと、前記零点uとから導かれた連立1次方程式を解くことにより、前記1変数多項式環F[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m(x,・・・,x)(i=1,・・・,m)を得る平文多項式因子復元部と、
    前記一つ以上m個のn変数平文多項式因子m(x,・・・,x)の係数から平文mを復号する復号部と、
    を備える復号装置。
  5. 有限体F上の1変数多項式環F[t]の一定次数以下の元を係数に持つn変数不定方程式X(x,・・・,x)を、公開鍵として取得し、前記n変数不定方程式X(x,・・・,x)の1つ以上の零点uを、秘密鍵として取得する鍵取得部と、
    暗号文c(x,・・・,x)(k=1,2)に前記零点uを代入することにより、1変数多項式h(t)を生成する零点代入部と、
    前記1変数多項式h(t)の近似GCD(Greatest Common Divisor)を計算することにより、n変数平文多項式M(x,・・・,x)に前記零点uを代入した1変数多項式M(u)を求める近似GCD計算部と、
    前記1変数多項式h(t)を前記1変数多項式M(u)で割った剰余e(u)を計算する剰余計算部と、
    前記剰余e(u)と、前記零点uとから導かれた連立1次方程式を解くことにより、前記1変数多項式環F[t]の一定次数以下の元を係数に持つノイズ多項式e(x,・・・,x)を復元するノイズ多項式復元部と、
    前記ノイズ多項式e(x,・・・,x)を暗号文c(x,・・・,x)から引いて多項式c-eを求める多項式減算部と、
    前記多項式c-eをイデアル分解することにより、前記1変数多項式環F[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m(x,・・・,x)(i=1,・・・,m)と、前記1変数多項式環F[t]の一定次数以下の元を係数に持つn変数多項式s(x,・・・,x)と、を抽出するイデアル分解部と、
    前記多項式c-eと、前記n変数平文多項式因子m(x,・・・,x)と、前記n変数多項式s(x,・・・,x)とに基づく多項式を、前記n変数不定方程式X(x,・・・,x)で割った余りが0の場合、前記n変数平文多項式因子m(x,・・・,x)の係数から平文mを復元する復号部と、
    を備える復号装置。
  6. 前記暗号文c(x,・・・,x)は、ノイズ多項式e(x,・・・,x)とn変数多項式s(x,・・・,x)との積を含み、
    前記ノイズ多項式e(x,・・・,x)は、一つ以上d個のノイズ多項式因子ek,j(x,・・・,x)(j=1,・・・,d)の積により表され、
    前記復号装置は、
    前記剰余e(u)を、一つ以上の因子に因数分解する因数分解部と、
    前記一つ以上の因子を組み合わせて、前記一つ以上d個のノイズ多項式因子ek,j(x,・・・,x)(j=1,・・・,d)を求める組合せ計算部と、を更に備え、
    前記復号部は、前記一つ以上d個のノイズ多項式因子ek,j(x,・・・,x)(j=1,・・・,d)から、前記ノイズ多項式e(x,・・・,x)を復元する、
    請求項に記載の復号装置。
  7. 前記暗号文c(x,・・・,x)は、前記n変数多項式s(x,・・・,x)と前記ノイズ多項式e(x,・・・,x)との積、前記n変数不定方程式X(x,・・・,x)とn変数多項式r(x,・・・,x)との積、及び、前記n変数平文多項式M(x,・・・,x)の加算及び減算のうち少なくとも一つを含む演算によって表される、
    請求項又はに記載の復号装置。
  8. 暗号化装置が、有限体F上の1変数多項式環F[t]の一定次数以下の元を係数に持つn変数不定方程式X(x,・・・,x)を、公開鍵として取得するステップと、
    前記暗号化装置が、平文mを前記1変数多項式環F[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m(x,・・・,x)(i=1,・・・,m)の係数に埋め込むステップと、
    前記暗号化装置が、前記一つ以上m個のn変数平文多項式因子m(x,・・・,x)を掛け合わせたn変数平文多項式M(x,・・・,x)を生成するステップと、
    前記暗号化装置が、前記1変数多項式環F[t]の一定次数以下の元を係数に持つn変数多項式s(x,・・・,x)(k=1,2)をランダムに生成し、前記1変数多項式環F[t]の一定次数以下の元を係数に持つn変数多項式r(x,・・・,x)をランダムに生成し、前記1変数多項式環F[t]の一定次数以下の元を係数に持つノイズ多項式e(x,・・・,x)をランダムに生成するステップと、
    前記暗号化装置が、前記n変数平文多項式M(x,・・・,x)に対し、前記n変数多項式s(x,・・・,x)と、前記n変数多項式r(x,・・・,x)と、前記ノイズ多項式e(x,・・・,x)と、前記n変数不定方程式X(x,・・・,x)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理によって、暗号文c(x,・・・,x)を生成するステップと、
    を備える暗号方法。
  9. 復号装置が、有限体F上の1変数多項式環F[t]の一定次数以下の元を係数に持つn変数不定方程式X(x,・・・,x)の1つ以上の零点uを、秘密鍵として取得するステップと、
    前記復号装置が、暗号文c(x,・・・,x)(k=1,2)に前記零点uを代入することにより、1変数多項式h(t)を生成するステップと、
    前記復号装置が、前記1変数多項式h(t)の近似GCD(Greatest Common Divisor)を計算することにより、n変数平文多項式M(x,・・・,x)に前記零点uを代入した1変数多項式M(u)を求めるステップと、
    前記復号装置が、前記1変数多項式M(u)を前記有限体F上で、複数の第1の因子に因数分解するステップと、
    前記復号装置が、前記第1の因子を組み合わせて、前記零点uが代入された前記n変数平文多項式M(x,・・・,x)の複数の第2の因子の組み合わせを求めるステップと、
    前記復号装置が、前記複数の第2の因子の組み合わせと、前記零点uとから導かれた連立1次方程式を解くことにより、前記1変数多項式環F[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m(x,・・・,x)(i=1,・・・,m)を得るステップと、
    前記復号装置が、前記一つ以上m個のn変数平文多項式因子m(x,・・・,x)の係数から平文mを復号するステップと、
    を備える復号方法。
  10. 復号装置が、有限体F上の1変数多項式環F[t]の一定次数以下の元を係数に持つn変数不定方程式X(x,・・・,x)を、公開鍵として取得し、前記n変数不定方程式X(x,・・・,x)の1つ以上の零点uを、秘密鍵として取得するステップと、
    前記復号装置が、暗号文c(x,・・・,x)(k=1,2)に前記零点uを代入することにより、1変数多項式h(t)を生成するステップと、
    前記復号装置が、前記1変数多項式h(t)の近似GCD(Greatest Common Divisor)を計算することにより、n変数平文多項式M(x,・・・,x)に前記零点uを代入した1変数多項式M(u)を求めるステップと、
    前記復号装置が、前記1変数多項式h(t)を前記1変数多項式M(u)で割った剰余e(u)を計算するステップと、
    前記復号装置が、前記剰余e(u)と、前記零点uとから導かれた連立1次方程式を解くことにより、前記1変数多項式環F[t]の一定次数以下の元を係数に持つノイズ多項式e(x,・・・,x)を復元するステップと、
    前記復号装置が、前記ノイズ多項式e(x,・・・,x)を暗号文c(x,・・・,x)から引いて多項式c-eを求めるステップと、
    前記復号装置が、前記多項式c-eをイデアル分解することにより、前記1変数多項式環F[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m(x,・・・,x)(i=1,・・・,m)と、前記1変数多項式環F[t]の一定次数以下の元を係数に持つn変数多項式s(x,・・・,x)と、を抽出するステップと、
    前記復号装置が、前記多項式c-eと、前記n変数平文多項式因子m(x,・・・,x)と、前記n変数多項式s(x,・・・,x)とに基づく多項式を、前記n変数不定方程式X(x,・・・,x)で割った余りが0の場合、前記n変数平文多項式因子m(x,・・・,x)の係数から平文mを復元するステップと、
    を備える復号方法。
  11. コンピュータを、
    有限体F上の1変数多項式環F[t]の一定次数以下の元を係数に持つn変数不定方程式X(x,・・・,x)を、公開鍵として取得する公開鍵取得部と、
    平文mを前記1変数多項式環F[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m(x,・・・,x)(i=1,・・・,m)の係数に埋め込む平文埋め込み部と、
    前記一つ以上m個のn変数平文多項式因子m(x,・・・,x)を掛け合わせたn変数平文多項式M(x,・・・,x)を生成する多項式演算部と、
    前記1変数多項式環F[t]の一定次数以下の元を係数に持つn変数多項式s(x,・・・,x)(k=1,2)をランダムに生成し、前記1変数多項式環F[t]の一定次数以下の元を係数に持つn変数多項式r(x,・・・,x)をランダムに生成し、前記1変数多項式環F[t]の一定次数以下の元を係数に持つノイズ多項式e(x,・・・,x)をランダムに生成する多項式生成部と、
    前記n変数平文多項式M(x,・・・,x)に対し、前記n変数多項式s(x,・・・,x)と、前記n変数多項式r(x,・・・,x)と、前記ノイズ多項式e(x,・・・,x)と、前記n変数不定方程式X(x,・・・,x)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理によって、暗号文c(x,・・・,x)を生成する暗号化部、
    として機能させるためのプログラム。
  12. 前記多項式生成部は、一つ以上d個のノイズ多項式因子ek,j(x,・・・,x)(j=1,・・・,d)を生成し、前記一つ以上d個のノイズ多項式因子ek,j(x,・・・,x)の積によって前記ノイズ多項式e(x,・・・,x)を生成し、
    前記暗号化部は、前記ノイズ多項式e(x,・・・,x)と前記n変数多項式s(x,・・・,x)との積を含む演算を行う暗号化処理によって、暗号文c(x,・・・,x)を生成する、
    請求項11に記載のプログラム。
  13. 前記暗号化部は、前記n変数多項式s(x,・・・,x)と前記ノイズ多項式e(x,・・・,x)との積、前記n変数不定方程式X(x,・・・,x)と前記n変数多項式r(x,・・・,x)との積、及び、前記n変数平文多項式M(x,・・・,x)に、加算及び減算のうち少なくとも一つを含む演算を行う暗号化処理によって、暗号文c(x,・・・,x)を生成する、
    請求項11又は12に記載のプログラム。
  14. コンピュータを、
    有限体F上の1変数多項式環F[t]の一定次数以下の元を係数に持つn変数不定方程式X(x,・・・,x)の1つ以上の零点uを、秘密鍵として取得する鍵取得部と、
    暗号文c(x,・・・,x)(k=1,2)に前記零点uを代入することにより、1変数多項式h(t)を生成する零点代入部と、
    前記1変数多項式h(t)の近似GCD(Greatest Common Divisor)を計算することにより、n変数平文多項式M(x,・・・,x)に前記零点uを代入した1変数多項式M(u)を求める近似GCD計算部と、
    前記1変数多項式M(u)を前記有限体F上で、複数の第1の因子に因数分解する因数分解部と、
    前記第1の因子を組み合わせて、前記零点uが代入された前記n変数平文多項式M(x,・・・,x)の複数の第2の因子の組み合わせを求める組合せ計算部と、
    前記複数の第2の因子の組み合わせと、前記零点uとから導かれた連立1次方程式を解くことにより、前記1変数多項式環F[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m(x,・・・,x)(i=1,・・・,m)を得る平文多項式因子復元部と、
    前記一つ以上m個のn変数平文多項式因子m(x,・・・,x)の係数から平文mを復号する復号部、
    として機能させるためのプログラム。
  15. コンピュータを、
    有限体F上の1変数多項式環F[t]の一定次数以下の元を係数に持つn変数不定方程式X(x,・・・,x)を、公開鍵として取得し、前記n変数不定方程式X(x,・・・,x)の1つ以上の零点uを、秘密鍵として取得する鍵取得部と、
    暗号文c(x,・・・,x)(k=1,2)に前記零点uを代入することにより、1変数多項式h(t)を生成する零点代入部と、
    前記1変数多項式h(t)の近似GCD(Greatest Common Divisor)を計算することにより、n変数平文多項式M(x,・・・,x)に前記零点uを代入した1変数多項式M(u)を求める近似GCD計算部と、
    前記1変数多項式h(t)を前記1変数多項式M(u)で割った剰余e(u)を計算する剰余計算部と、
    前記剰余e(u)と、前記零点uとから導かれた連立1次方程式を解くことにより、前記1変数多項式環F[t]の一定次数以下の元を係数に持つノイズ多項式e(x,・・・,x)を復元するノイズ多項式復元部と、
    前記ノイズ多項式e(x,・・・,x)を暗号文c(x,・・・,x)から引いて多項式c-eを求める多項式減算部と、
    前記多項式c-eをイデアル分解することにより、前記1変数多項式環F[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m(x,・・・,x)(i=1,・・・,m)と、前記1変数多項式環F[t]の一定次数以下の元を係数に持つn変数多項式s(x,・・・,x)と、を抽出するイデアル分解部と、
    前記多項式c-eと、前記n変数平文多項式因子m(x,・・・,x)と、前記n変数多項式s(x,・・・,x)とに基づく多項式を、前記n変数不定方程式X(x,・・・,x)で割った余りが0の場合、前記n変数平文多項式因子m(x,・・・,x)の係数から平文mを復元する復号部、
    として機能させるためのプログラム。
  16. 前記暗号文c(x,・・・,x)は、ノイズ多項式e(x,・・・,x)とn変数多項式s(x,・・・,x)との積を含み、
    前記ノイズ多項式e(x,・・・,x)は、一つ以上d個のノイズ多項式因子ek,j(x,・・・,x)(j=1,・・・,d)の積により表され、
    前記プログラムは、前記コンピュータを、
    前記剰余e(u)を、一つ以上の因子に因数分解する因数分解部と、
    前記一つ以上の因子を組み合わせて、前記一つ以上d個のノイズ多項式因子ek,j(x,・・・,x)(j=1,・・・,d)を求める組合せ計算部、として更に機能させ、
    前記復号部は、前記一つ以上d個のノイズ多項式因子ek,j(x,・・・,x)(j=1,・・・,d)から、前記ノイズ多項式e(x,・・・,x)を復元する、
    請求項15に記載のプログラム。
  17. 前記暗号文c(x,・・・,x)は、前記n変数多項式s(x,・・・,x)と前記ノイズ多項式e(x,・・・,x)との積、前記n変数不定方程式X(x,・・・,x)とn変数多項式r(x,・・・,x)との積、及び、前記n変数平文多項式M(x,・・・,x)の加算及び減算のうち少なくとも一つを含む演算によって表される、
    請求項15又は16に記載のプログラム。
JP2020188737A 2020-11-12 2020-11-12 暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラム Active JP7443217B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020188737A JP7443217B2 (ja) 2020-11-12 2020-11-12 暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラム
US17/459,320 US20220150064A1 (en) 2020-11-12 2021-08-27 Encryption device, decryption device, encryption method, decryption method, and computer program products

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020188737A JP7443217B2 (ja) 2020-11-12 2020-11-12 暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラム

Publications (2)

Publication Number Publication Date
JP2022077754A JP2022077754A (ja) 2022-05-24
JP7443217B2 true JP7443217B2 (ja) 2024-03-05

Family

ID=81453886

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020188737A Active JP7443217B2 (ja) 2020-11-12 2020-11-12 暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラム

Country Status (2)

Country Link
US (1) US20220150064A1 (ja)
JP (1) JP7443217B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022187959A1 (en) * 2021-03-10 2022-09-15 Quantropi Inc. Quantum-safe cryptographic methods and systems

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010204466A (ja) 2009-03-04 2010-09-16 Toshiba Corp 暗号装置、復号装置、鍵生成装置及びプログラム
US20160119120A1 (en) 2014-07-03 2016-04-28 Huawei Technologies Co.,Ltd. Method and apparatus for public-key encrypted communication
JP2017532598A (ja) 2014-09-24 2017-11-02 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 公開鍵暗号化システム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740250A (en) * 1995-12-15 1998-04-14 Moh; Tzuong-Tsieng Tame automorphism public key system
JP2001255814A (ja) * 2000-03-10 2001-09-21 Murata Mach Ltd 復号方法、復号装置、及び復号プログラムの記録媒体
US20040151307A1 (en) * 2003-02-03 2004-08-05 Lih-Chung Wang Tractable rational map public-key system
IL207918A0 (en) * 2010-09-01 2011-01-31 Aviad Kipnis Attack-resistant multivariate signature scheme

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010204466A (ja) 2009-03-04 2010-09-16 Toshiba Corp 暗号装置、復号装置、鍵生成装置及びプログラム
US20160119120A1 (en) 2014-07-03 2016-04-28 Huawei Technologies Co.,Ltd. Method and apparatus for public-key encrypted communication
JP2017532598A (ja) 2014-09-24 2017-11-02 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 公開鍵暗号化システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
駒野 雄一, 他,多項式の近似GCDを利用した代数曲面暗号方式,電子情報通信学会技術研究報告,日本,電子情報通信学会,2016年07月07日,Vol.116, No.132,pp.217-222

Also Published As

Publication number Publication date
JP2022077754A (ja) 2022-05-24
US20220150064A1 (en) 2022-05-12

Similar Documents

Publication Publication Date Title
JP6720424B1 (ja) 鍵共有デバイス及び方法
EP3566385B1 (en) Homomorphic white box system and method for using same
US9264406B2 (en) Public key cryptography with reduced computational load
US11323255B2 (en) Methods and systems for encryption and homomorphic encryption systems using Geometric Algebra and Hensel codes
EP3494663B1 (en) Methods and systems for enhanced data-centric encryption systems using geometric algebra
KR20020025630A (ko) 비밀 정보의 처리 장치, 프로그램 또는 시스템
EP2742644B1 (en) Encryption and decryption method
JP2008252299A (ja) 暗号処理システム及び暗号処理方法
JP4282546B2 (ja) 暗号装置、復号装置、鍵生成装置、プログラム及び方法
US20190044697A1 (en) Methods and systems for enhanced data-centric homomorphic encryption searching using geometric algebra
EP4376350A2 (en) Computer implemented system and method for distributing shares of digitally signed data
Ghazanfaripour et al. Designing a digital image encryption scheme using chaotic maps with prime modular
US20180294951A1 (en) Methods and systems for enhanced data-centric scalar multiplicative homomorphic encryption systems using geometric algebra
Biksham et al. A lightweight fully homomorphic encryption scheme for cloud security
US20210248928A1 (en) Encryption device, decryption device, encryption method, decryption method, encryption program product, and decryption program product
JP7443217B2 (ja) 暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラム
JP2020053860A (ja) 秘匿計算装置、秘匿計算方法及び秘匿計算プログラム
Dawson et al. An enhanced RSA algorithm using Gaussian interpolation formula
JP6266130B2 (ja) 暗号システム、マスター鍵更新装置及びマスター鍵更新プログラム
JP2007187908A (ja) サイドチャネル攻撃に耐性を有するモジュラーべき乗算計算装置及びモジュラーべき乗算計算方法
JP5323196B2 (ja) 演算装置、方法およびプログラム
Fu et al. An efficient implementation of RSA digital signature algorithm
Ariffin et al. AA β public key cryptosystem-A comparative analysis against RSA and ECC
US20240195607A1 (en) Encryption device, key generation device, and computer program product for encryption
US20240205006A1 (en) Encryption device, decryption device, key generation device, encryption method, decryption method, key generation method, computer program product for encryption, computer program product for decryption, and computer program product for key generation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240116

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240221

R151 Written notification of patent or utility model registration

Ref document number: 7443217

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151