JP7273753B2 - 数論変換処理装置、数論変換処理方法及びプログラム - Google Patents

数論変換処理装置、数論変換処理方法及びプログラム Download PDF

Info

Publication number
JP7273753B2
JP7273753B2 JP2020038923A JP2020038923A JP7273753B2 JP 7273753 B2 JP7273753 B2 JP 7273753B2 JP 2020038923 A JP2020038923 A JP 2020038923A JP 2020038923 A JP2020038923 A JP 2020038923A JP 7273753 B2 JP7273753 B2 JP 7273753B2
Authority
JP
Japan
Prior art keywords
transformation
noise
theoretic
constants
product
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
JP2020038923A
Other languages
English (en)
Other versions
JP2021140074A (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 JP2020038923A priority Critical patent/JP7273753B2/ja
Priority to US17/005,390 priority patent/US11922135B2/en
Publication of JP2021140074A publication Critical patent/JP2021140074A/ja
Application granted granted Critical
Publication of JP7273753B2 publication Critical patent/JP7273753B2/ja
Active 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
    • G06F7/725Finite field arithmetic over elliptic curves
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L21/00Speech or voice signal processing techniques to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
    • G10L21/02Speech enhancement, e.g. noise reduction or echo cancellation
    • G10L21/0208Noise filtering
    • 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/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Algebra (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Complex Calculations (AREA)

Description

本発明の実施形態は数論変換処理装置、数論変換処理方法及びプログラムに関する。
近年、大手IT企業の参入により量子計算機に関する研究が加速している。現在広く利用されている公開鍵暗号であるRSA暗号や楕円曲線暗号を解読する量子計算機が実現すれば、RSA暗号や楕円曲線暗号を用いた情報セキュリティシステムは安全ではなくなる。そこで、RSA暗号や楕円曲線暗号から耐量子計算機暗号(耐量子計算機公開鍵暗号、ポスト量子暗号とも呼ばれる)への移行が必要となる場合に備えて、格子暗号等の耐量子計算機暗号の研究開発が進められている。格子暗号の処理では、多項式環上で計算を行う数論変換が行われている。
NewHope Algorithm Specifications and Supporting Documentation (NIST PQC Round2)、[online]、[令和2年2月17日検索]、インターネット<URL:https://csrc.nist.gov/CSRC/media/Projects/Post-Quantum-Cryptography/documents/round-2/submissions/NewHope-Round2.zip>
しかしながら、従来の技術では、数論変換処理をより高速に行うことが難しかった。
実施形態の数論変換処理装置は、格子暗号のノイズの数論変換処理装置であって、有限体Zqの部分空間に属する前記ノイズの係数を示す1つ以上の元から選択された乗算対象の1つの元と、1つ以上の数論変換定数から選択された乗算対象の1つの数論変換定数との組み合わせを乗算させることにより得られた1つ以上の積を含む事前計算テーブルを用いて、前記ノイズの数論変換を実行する処理部を備える。
第1実施形態の数論変換処理装置の機能構成の例を示す図。 第1実施形態の数論変換処理方法の例を示すフローチャート。 第1実施形態の数論変換処理方法の例を説明するための図。 第1実施形態の数論変換処理方法の変形例を説明するための図。 第2実施形態の数論変換処理方法の例を説明するための図。 第3実施形態の数論変換処理方法の例を説明するための図。 第3実施形態の数論変換処理方法の変形例1を説明するための図。 第3実施形態の数論変換処理方法の変形例2を説明するための図。 第1乃至第3実施形態の数論変換処理装置のハードウェア構成の例を示す図。
以下に添付図面を参照して、数論変換処理装置、数論変換処理方法及びプログラムの実施形態を詳細に説明する。
(第1実施形態)
耐量子計算機暗号の有力な候補の一つにLWE(Learning With Errors)問題等に安全性の根拠を置く格子暗号がある。例えば、NIST(米国国立標準技術研究所)による耐量子計算機暗号の標準化候補方式には、NewHope等がある。これらの耐量子計算機暗号の標準化候補方式は、多項式環上のLWE問題であるring-LWE問題やmodule-LWE問題に安全性の根拠を置き、多項式環上で計算が行われる。
多項式環上で計算を行う格子暗号は鍵生成、暗号化、復号、及び鍵カプセル化メカニズムにおける、カプセル化、デカプセル化の実行サイクル数が、他の格子暗号、RSA暗号や楕円曲線暗号と比較して少ないという特長がある。そこで、第1実施形態の暗号処理装置は、この特長を強化するために多項式環上で計算を行う格子暗号の主な処理である数論変換を高速化する。
多項式環上で計算を行う格子暗号の主な処理は多項式環上の乗算である。多項式環Rq=Zq[x]/f(x)とする。ここで、qは素数、有限体Zq=Z/qZ={0,1,・・・,q-1}、Zq[x]はZq係数の多項式、法多項式f(x)はZq係数n次の多項式である。
多項式環Rqの元aはZq係数(n-1)次の多項式である。多項式環Rqの元bも同様にZq係数(n-1)次の多項式である。このとき、多項式環Rqの元aと元bとの乗算は、多項式aと多項式bとの積を計算し、法多項式f(x)で割った剰余多項式cを求める操作である。多項式aと多項式bとの積の計算では、多項式aの係数a(i=0,1,…,(n-1))と、多項式bの係数b(i=0,1,…,(n-1))との積をn回の有限体Zq上の乗算(Zq乗算)として計算する。
多項式環Rq上の乗算に関する高速化方法に数論変換がある。数論変換を行うと多項式の積を同じ次数の係数同士の積(つまりn回のZq乗算)で計算できる。法多項式f(x)=x+1、法qについて2nが(q-1)を割り切るとき(2n|(q-1))の数論変換は、離散フーリエ変換と同様に計算できる。次数nを2のベキ乗とすると高速計算法で計算でき、数論変換にかかるZq乗算はO(n*log(n))回となる。つまり、数論変換では多項式環Rq上の乗算コストをO(n)回のZq乗算からO(n*log(n))回のZq乗算へと減らしている。
多項式環Rq上の乗算を更に高速化するために数論変換を高速化することを考える。多項式aの数論変換においては、数論変換定数のベキ乗と多項式aの係数a(i=0,1,…,(n-1))との積をZq乗算として計算する。数論変換定数のベキ乗を事前計算しておく方法は非特許文献1で既に示されている。
多項式環Rq上で計算を行う格子暗号では、多項式aとノイズeとの乗算を行うことが本質的に必須である。多項式aがランダムの場合、数論変換を行ってもランダムなので、ランダムな多項式aの数論変換を省略する方法は非特許文献1に既に示されている。一方、ノイズeについては多項式環Rqの多項式eとして数論変換を行うのが通常の方法である。
ノイズeとは、その係数e(i=0,1,…,(n-1))がある分布に従って得られる多項式環Rq上の元eである。係数e(i=0,1,…,(n-1))は、絶対値が制約された小さい値をとる。また、係数e(i=0,1,…,(n-1))の分布は離散ガウス分布や、一様分布などである。
第1実施形態では、ノイズの数論変換を高速化する暗号処理装置について説明する。なお、第1実施形態では、簡単のため、数論変換定数そのものだけではなく、数論変換定数のべき乗も、数論変換定数と称呼して説明する場合がある。
[機能構成の例]
図1は第1実施形態の数論変換処理装置10の機能構成の例を示す図である。第1実施形態の数論変換処理装置10は、記憶部1、処理部2及び出力部3を備える。
記憶部1は事前計算テーブルを記憶する。事前計算テーブルは、数論変換処理の計算に含まれる積の事前計算値を含む。事前計算テーブルの詳細については後述する。
処理部2は、事前計算テーブルを用いて、格子暗号のノイズの数論変換を実行する。
出力部3は、処理部2による数論変換結果を出力する。
[数論変換処理方法の例]
図2は第1実施形態の数論変換処理方法の例を示すフローチャートである。はじめに、処理部2が、記憶部1から事前計算テーブルを読み出す(ステップS1)。次に、処理部2が、事前計算テーブルを用いて、格子暗号のノイズの数論変換を実行する(ステップS2)。次に、出力部3が、ステップS2の数論変換処理によって得られた数論変換結果を出力する(ステップS3)。
次に、事前計算テーブルを用いたノイズの数論変換処理の詳細及びバリエーションについて説明する。
数論変換定数ω及びγを、ω≡1(mod q)、γ≡ω(mod q)とする。多項式aを下記式(1)とする。
Figure 0007273753000001
多項式aの数論変換NTT(a)を下記式(2)とする。
Figure 0007273753000002
このとき、多項式NTT(a)の係数は下記式(3)となる。
Figure 0007273753000003
図3は計算方法の例を説明するための図である。
<方法1>
方法1は、工夫しない方法である。方法1では、数論変換の上記式(3)の計算に当たって、γのベキ乗γ(i=2,3,…,(n-1))及びωのベキ乗ω(i=2,3,…,(n-1))を事前計算しておく場合の例について説明する。
数論変換の上記式(3)をそのまま計算すると、j=0では、γ=ω=1のため、Zq乗算なし、j=1,2,…,(n-1)ではZq乗算がそれぞれ2回ずつ(γ及びaωij)となり、数論変換全体で2n(n-1)回のZq乗算となる。つまり、O(n)回のZq乗算となり、数論変換の上記式(3)をそのまま計算すると、γのベキ乗γ(i=2,3,…,(n-1))及びωのベキ乗ω(i=2,3,…,(n-1))を事前計算しても、多項式環Rq上の乗算として高速化できない。
<方法2>
方法2は、高速計算法を用いる方法である。数論変換の上記式(3)は次数nを2のベキ乗とすると高速計算法で計算できる。前処理としてγのベキ乗γと係数aとの積u=γ*aを事前計算すると、j=0ではZq乗算なし、j=1,2,…,(n-1)ではZq乗算がそれぞれ1回ずつとなる。
次に高速フーリエ変換におけるパス計算と同様にして、パス1においてj=0,1,…,(n/2-1)ではu=u+u(j+n/2)、j=n/2,…,(n-1)ではu=u(j-n/2)+ω(n/2)*uとすると、Zq乗算がn/2回となる。パス2においてj=0,1,…,n/4-1ではu=u+u(j+n/4)、j=n/4,…,n/2-1ではu=u(j-n/4)+ω(n/2)*u、j=n/2,…,3n/4-1ではu=u+ω(n/4)*u(j+n/4)、j=3n/4,…,(n-1)ではu=u(j-n/4)+ω(3n/4)*uとすると、Zq乗算が3n/4回となる。
以下同様に、パスiにおいてZq乗算が(n-n/2)回となる。パス数はlog(n)なので、高速計算法では(n-1)+n/2+3n/4+…+(n-1)≒(n-1)+n*log(n)-n=n*log(n)-1回のZq乗算となる。つまり、数論変換の高速計算法が用いられる場合には、O(n*log(n))回のZq乗算となり多項式環Rq上の乗算として高速化できる。
次に、ノイズeの数論変換を更に高速化する場合について説明する。
<方法3>
方法3は、ノイズeの性質を利用して高速計算法を用いる方法である。高速計算方法であるパス計算に、ノイズの係数e(i=0,1,…,(n-1))が、絶対値が制約された小さい値をとる性質を適用する。ノイズの係数eは、例えば集合{-k,-(k-1),・・・,0,1,・・・,k}に含まれる2k+1個の元によって表される。また例えば、ノイズの係数eを正の数で表す場合、ノイズの係数eは、例えば集合{q-k,q-(k-1),・・・,0,1,・・・,k}に含まれる2k+1個の元によって表される。ここで、kは正の数(例えばk=8)、qはk<<qとなる数である。
ノイズの係数eが正整数kとして2k+1通りに制約されているとすると、γのベキ乗γと係数eとの積u=γ*eはn*(2k+1)通りとなる。このn*(2k+1)通りを事前計算しておくと、前処理におけるZq乗算は不要となる。パス1の積ω(n/2)*uもω(n/2)が1通りのためn*(2k+1)通りとなる。このn*(2k+1)通りも事前計算しておくと、パス1におけるZq乗算は不要となる。パス2以降はZq乗算がn回とすると、n*log(n)-n回のZq乗算となるので、数論変換処理が高速化される。
<方法4>
方法4は、第1実施形態の数論変換処理方法である。上記のノイズの高速計算法(方法3)は事前計算の大きさの割に高速化の恩恵が少ない。同じ事前計算サイズでより高速に計算する方法を考える。上記では、γのベキ乗γとωのベキ乗ωを別々に考えて積を計算していた。ところが、γ≡ω(mod q)であるので、上記式(3)にあるγ*ω(ij)は実はωのベキ乗ωとωのベキ乗ωにγを掛けた値である。上記式(3)を次数n=4の例で書き下すと下記式(4)となる。数論変換定数のベキ乗は{1,ω,ω,ω}及び{γ,γω,γω,γω}の2n通りである。
Figure 0007273753000004
数論変換の上記式(4)をnについて一般化した式に、ノイズの係数e(i=0,1,…,(n-1))が、絶対値が制約された小さい値をとる性質を適用する。ノイズの係数が正整数kとして2k+1通りに制約されているとすると、数論変換定数のベキ乗と係数eとの積は2n*(2k+1)通りとなる。第1実施形態の数論変換処理装置10では、この2n*(2k+1)通りの事前計算された値を、事前計算テーブルに記憶する。処理部2が、この事前計算テーブルを用いて、ノイズの数論変換を実行することにより、上記式(4)をnについて一般化した式の計算におけるZq乗算は不要となる。
以上、説明したように、第1実施形態の数論変換処理装置10では、処理部2が、有限体Zqの部分空間に属するノイズeの係数を示す1つ以上の元と、1つ以上の数論変換定数(第1実施形態では、例えばn=4の場合、{1,ω,ω,ω}及び{γ,γω,γω,γω})との積の組み合わせを含む事前計算テーブルを用いて、ノイズの数論変換を実行する。
これにより第1実施形態の数論変換処理装置10によれば、多項式環Rq上のノイズeの数論変換におけるZq乗算回数を減らすことができるので、数論変換処理をより高速に行うことができる。これにより、多項式環Rq上で計算を行う格子暗号の鍵生成、暗号化、復号、及び鍵カプセル化メカニズムにおける、カプセル化及びデカプセル化の実行サイクル数を減らすことができる。
(第1実施形態の変形例)
次に第1実施形態の変形例について説明する。変形例の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。変形例では、事前計算テーブルのサイズを削減する場合について説明する。
図4は第1実施形態の数論変換処理方法の変形例を説明するための図である。方法5~9が、第1実施形態の変形例に対応する。
<方法5>
方法5は、0を除外する方法である。ノイズeの係数が2k+1通りに制約されていて、2k+1個の元の中に0が含まれるとする。ωのベキ乗ωと0との積は0となる。また、ωのベキ乗ωにγを掛けた値と0との積は0となる。このとき、事前計算テーブルから、ノイズeの係数0と数論変換定数との積を除外すると、事前計算テーブルのサイズは2n*2kとなる。
ノイズeの係数として取りうる値が離散ガウス分布の良い近似である中心二項分布(原点0で最大値をとる二項分布)に従うとする。係数として取る確率が閾値より小さい値については、事前計算に含めないとすると、Zq乗算回数を抑えたまま事前計算サイズを小さくできる。例えば、次数n=512、k=8のとき、係数として取る確率が小さい順に事前計算から除外すると図4の方法6~9となる。
なお、図4では、図1のZq乗算回数をオーダーで表現し、オーダーで表現されたZq乗算回数に数値n=512,k=8が代入されている。例えば、方法1のZq乗算回数2n(n-1)は、O(n)であるので、512nと表現されている。
<方法6>
方法6の事前計算テーブルは、ノイズeの係数{±1,±2,±3,±4,±5,±6,±7}と、数論変換定数との積のみを含む。ここで、記法{±1,±2,±3,±4,±5,±6,±7}は、ノイズeの集合{q-7,q-6,q-5,q-4,q-3,q-2,q-1,1,2,3,4,5,6,7}を表す。なお、方法7以降の同様の記法についても、方法6の場合と同様である。
方法6では、事前計算テーブルから、ノイズeの係数{q-8,0,8}と数論変換定数との積が除外されている。
<方法7>
方法7の事前計算テーブルは、ノイズeの係数{±1,±2,±3,±4,±5,±6}と、数論変換定数との積のみを含む。方法7では、事前計算テーブルから、ノイズeの係数{q-8,q-7,0,7,8}と数論変換定数との積が除外されている。
<方法8>
方法8の事前計算テーブルは、ノイズeの係数{±1,±2,±3,±4,±5}と、数論変換定数との積のみを含む。方法8では、事前計算テーブルから、ノイズeの係数{q-8,q-7,q-6,0,6,7,8}と数論変換定数との積が除外されている。
<方法9>
方法9の事前計算テーブルは、ノイズeの係数{±1,±2,±3,±4}と、数論変換定数との積のみを含む。方法9では、事前計算テーブルから、ノイズeの係数{q-8,q-7,q-6,q-5,0,5,6,7,8}と数論変換定数との積が除外されている。なお、方法9の場合は、Zq乗算回数及び事前計算サイズの両方が大きいので、例えば方法2(高速計算法)の方が方法9よりも効率がよい。
Zq乗算の計算コストをM、Zq加算の計算コストをAと表記すると、例えば方法4(第1実施形態の数論変換処理方法)は、512A<10M+10Aの場合(つまり50A<Mとなり、Zq乗算の計算コストがZq加算の計算コストの50倍より大きい場合)、方法2(高速計算法)より速くなる。
なお、図4では、説明のため、n=512,k=8の場合を例示しているが、n=512,k=8以外の場合についても同様である。
(第2実施形態)
次に第2実施形態について説明する。第2実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。第2実施形態では、Zq乗算をZq加算で計算することによって、ノイズeの数論変換処理を高速化する場合について説明する。
ノイズeの係数が、絶対値が制約された小さい値をとり、最大値がk、最小値が-kとする。なお、実際は負の値についてはmod qしてq-kと表記される。
図5は第2実施形態の数論変換処理方法の例を説明するための図である。ノイズeの係数として取りうる値が中心二項分布に従うとする。図5では、図4の場合と同様に、Zq乗算回数及びZq加算回数はオーダーで表現し、オーダーで表現されたZq乗算回数に数値n=512,k=8が代入されている。
例えば、ノイズeの係数(q-k)と、数論変換定数ωとの積は、下記のようにして、Zq乗算をZq減算に置き換えることができる。
(q-k)×ω=qω-kω
=0-kω (mod q)
=-ω-ω・・・-ω (k個のωの減算)
なお、絶対値が制約された小さな値ほど、数論変換定数との積をより少ない回数の加算(減算)で実行できることに基づいて加算(減算)回数が見積もられている。値によっては、より少ない加算(減算)回数で積を実行できる。
<方法10>
方法10は、第2実施形態の数論変換処理方法である。数論変換の上記式(4)をnについて一般化した式の数論変換定数のベキ乗と係数eとの積において、Zq乗算をZq加算で計算するとk*(n-1)*n回のZq加算となる。ただし、係数が負の値についてはZq減算する。なお、第2実施形態の説明では、Zq減算回数も、図5のZq加算回数に含める。
<方法11>
方法11は、0を除外する方法である。ノイズeの係数が2k+1通りに制約されていて、2k+1個の元の中に0が含まれるとする。係数として0をとるとき、数論変換定数のベキ乗と係数eとの積は0となるので、Zq加算を省くとZq加算回数を小さくできる。
<方法12>
方法12は、一部を加算する方法である。方法12では、数論変換定数のベキ乗と係数eとの積の一部を加算で実行し、一部を乗算で実行する。例えば、処理部2は、ノイズeの係数{±1,±2,±3,±4,±5}と、数論変換定数との積を加算で実行し、ノイズeの係数{±6,±7,±8}と数論変換定数との積を乗算で実行する。なお、第1実施形態の数論変換処理方法(方法4)が、高速計算法(方法2)より速くなるZq乗算とZq加算とのコスト比の条件の下では、一部を加算する方法12の効率は悪い。
(第3実施形態)
次に第3実施形態について説明する。第3実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。第3実施形態では、第1実施形態と、第2実施形態とを組み合わせる場合について説明する。
具体的には、第3実施形態では、数論変換定数のベキ乗とノイズeの係数eとの積の一部を加算で実行し、数論変換定数のベキ乗とノイズeの係数eとの積の一部を、事前計算テーブルを用いて実行する。すなわち、第3実施形態では、数論変換定数とノイズeの係数との積は、事前計算テーブルに記憶されている第1の積と、事前計算テーブルに記憶されていない第2の積とを含む。処理部2は、第1の積を事前計算テーブルから読み出し、第2の積を、有限体Zq上での複数回の加算又は減算によって算出する。
図6は第3実施形態の数論変換処理方法の例を説明するための図である。ノイズeの係数として取りうる値が中心二項分布に従うとする。
<方法13>
方法13の事前計算テーブルは、方法6の事前計算テーブルと同じである。すなわち、方法13では、事前計算テーブルから、ノイズeの係数{q-8,0,8}と数論変換定数との積が除外されている。方法13では、ノイズeの係数{q-8,0,8}と数論変換定数との積が、Zq乗算ではなく、Zq加算によって実行される。
<方法14>
方法14の事前計算テーブルは、方法7の事前計算テーブルと同じである。すなわち、方法14では、事前計算テーブルから、ノイズeの係数{q-8,q-7,0,7,8}と数論変換定数との積が除外されている。方法14では、ノイズeの係数{q-8,q-7,0,7,8}と数論変換定数との積が、Zq乗算ではなく、Zq加算によって実行される。
<方法15>
方法15の事前計算テーブルは、方法8の事前計算テーブルと同じである。すなわち、方法15では、事前計算テーブルから、ノイズeの係数{q-8,q-7,q-6,0,6,7,8}と数論変換定数との積が除外されている。方法15では、ノイズeの係数{q-8,q-7,q-6,0,6,7,8}と数論変換定数との積が、Zq乗算ではなく、Zq加算によって実行される。
<方法16>
方法16の事前計算テーブルは、方法9の事前計算テーブルと同じである。すなわち、方法16では、事前計算テーブルから、ノイズeの係数{q-8,q-7,q-6,q-5,0,5,6,7,8}と数論変換定数との積が除外されている。方法16では、ノイズeの係数{q-8,q-7,q-6,q-5,0,5,6,7,8}と数論変換定数との積が、Zq乗算ではなく、Zq加算によって実行される。
<方法17>
方法17の事前計算テーブルは、ノイズeの係数{±1,±2,±3}と、数論変換定数との積のみを含む。すなわち、方法17は、事前計算テーブルから、ノイズeの係数{q-8,q-7,q-6,q-5,q-4,0,4,5,6,7,8}と数論変換定数との積が除外されている。方法17では、ノイズeの係数{q-8,q-7,q-6,q-5,q-4,0,4,5,6,7,8}と数論変換定数との積が、Zq乗算ではなく、Zq加算によって実行される。
<方法18>
方法18の事前計算テーブルは、ノイズeの係数{±1,±2}と、数論変換定数との積のみを含む。すなわち、方法18は、事前計算テーブルから、ノイズeの係数{q-8,q-7,q-6,q-5,q-4,q-3,0,3,4,5,6,7,8}と数論変換定数との積が除外されている。方法18では、ノイズeの係数{q-8,q-7,q-6,q-5,q-4,q-3,0,3,4,5,6,7,8}と数論変換定数との積が、Zq乗算ではなく、Zq加算によって実行される。
<方法19>
方法19の事前計算テーブルは、ノイズeの係数{±1}と、数論変換定数との積のみを含む。すなわち、方法19は、事前計算テーブルから、ノイズeの係数{q-8,q-7,q-6,q-5,q-4,q-3,q-2,0,2,3,4,5,6,7,8}と数論変換定数との積が除外されている。方法19では、ノイズeの係数{q-8,q-7,q-6,q-5,q-4,q-3,q-2,0,2,3,4,5,6,7,8}と数論変換定数との積が、Zq乗算ではなく、Zq加算によって実行される。
すなわち、方法19では、処理部2は、ノイズeの係数{q-1,1}と、数論変換定数との積を事前計算する。方法19における{q-1,1}と数論変換定数との積の事前計算は、数論変換定数のベキ乗そのもの、及び、数論変換定数のベキ乗と-1との積である。数論変換定数のベキ乗と-1との積を事前計算テーブルから読み出してZq加算するより、数論変換定数のベキ乗そのものをZq減算する方法(方法11の0を除外する方法)の方が事前計算サイズ2nとなる分だけ効率が良い。
(第3実施形態の変形例1)
次に第3実施形態の変形例1について説明する。変形例1の説明では、第3実施形態と同様の説明については省略し、第3実施形態と異なる箇所について説明する。変形例1では、ノイズeの係数が0のとき、処理部2が、Zq加算を行わず、事前計算テーブルも用いない。また、処理部2は、ノイズeの係数の符号がマイナスの値のとき、絶対値を取得することによってプラスの値に変換し、当該プラスの値の事前計算をZq減算で計算する。
図7は第3実施形態の数論変換処理方法の変形例1を説明するための図である。図7の例では、第3実施形態と同様に、k=8の場合を示す。方法20~26の事前計算テーブルでは、正負の符号変換によって値が変換される積の組については一方のみを含む。図7の例では、正の場合のみ記憶されているので、正負の値両方を保持する場合に比べて、事前計算テーブルのサイズを半分にすることができる。
<方法20>
方法20は、0を除外する方法である。すなわち、方法20では、ノイズeの係数{1,2,3,4,5,6,7,8}と数論変換定数との積が事前計算テーブルに記憶される。処理部は、事前計算テーブルを用いて、ノイズeの係数{1,2,3,4,5,6,7,8}と数論変換定数との積を、Zq乗算ではなく、Zq加算(又はZq減算)によって実行する。
<方法21>
方法21では、ノイズeの係数{1,2,3,4,5,6,7}と数論変換定数との積が事前計算テーブルに記憶される。処理部は、事前計算テーブルを用いて、ノイズeの係数{1,2,3,4,5,6,7}と数論変換定数との積を、Zq乗算ではなく、Zq加算(又はZq減算)によって実行する。
<方法22>
方法22では、ノイズeの係数{1,2,3,4,5,6}と数論変換定数との積が事前計算テーブルに記憶される。処理部は、事前計算テーブルを用いて、ノイズeの係数{1,2,3,4,5,6}と数論変換定数との積を、Zq乗算ではなく、Zq加算(又はZq減算)によって実行する。
<方法23>
方法23では、ノイズeの係数{1,2,3,4,5}と数論変換定数との積が事前計算テーブルに記憶される。処理部は、事前計算テーブルを用いて、ノイズeの係数{1,2,3,4,5}と数論変換定数との積を、Zq乗算ではなく、Zq加算(又はZq減算)によって実行する。
<方法24>
方法24では、ノイズeの係数{1,2,3,4}と数論変換定数との積が事前計算テーブルに記憶される。処理部は、事前計算テーブルを用いて、ノイズeの係数{1,2,3,4}と数論変換定数との積を、Zq乗算ではなく、Zq加算(又はZq減算)によって実行する。
<方法25>
方法25では、ノイズeの係数{1,2,3}と数論変換定数との積が事前計算テーブルに記憶される。処理部は、事前計算テーブルを用いて、ノイズeの係数{1,2,3}と数論変換定数との積を、Zq乗算ではなく、Zq加算(又はZq減算)によって実行する。
<方法26>
方法26では、ノイズeの係数{1,2}と数論変換定数との積が事前計算テーブルに記憶される。処理部は、事前計算テーブルを用いて、ノイズeの係数{1,2}と数論変換定数との積を、Zq乗算ではなく、Zq加算(又はZq減算)によって実行する。
なお、ノイズeの係数{1}と数論変換定数との積を事前計算する場合は、言い換えると数論変換定数のベキ乗のみを事前計算テーブルに保持することである。そのため、ノイズeの係数{1}と数論変換定数との積を事前計算する場合は、方法11に等しい。
図5乃至7の例では、方法20(0を除外する方法)が、方法10から方法26までの中で最も計算コストが小さい。
(第3実施形態の変形例2)
次に第3実施形態の変形例2について説明する。変形例2の説明では、第3実施形態と同様の説明については省略し、第3実施形態と異なる箇所について説明する。変形例2では、処理部2が、数論変換定数のベキ乗とノイズeの係数eとの積の一部を事前計算で実行し、一部を加算で実行し、一部を乗算で実行する場合について説明する。
変形例2では、ノイズの係数eとして取りうる値が中心二項分布に従うとする。処理部2は、例えば出現頻度が出現閾値より高いノイズeの係数は、数論変換定数との積を事前計算テーブルに記憶する。すなわち、変形例2の事前計算テーブルでは、有限体Zqの部分空間に属する元のうち、ノイズeの係数として出現する頻度が出現閾値より大きい1つ以上の元と、1つ以上の数論変換定数との積の組み合わせを含む。
また変形例2では、例えば、処理部2は、Zq乗算をZq加算で実現する場合の計算コストが、コスト閾値より高いノイズeの係数と数論変換定数との積は、Zq乗算で計算する。
図8は第3実施形態の数論変換処理方法の変形例2を説明するための図である。図8の方法27~30では、図4の方法6~9と比べると、事前計算テーブルのサイズが小さいという点で効率が良い。ただし、方法30は、方法2(高速計算法)よりZq乗算回数、及び、事前計算テーブルのサイズの両方が大きいので効率が悪い。
最後に、第1及び第2実施形態の数論変換処理装置10のハードウェア構成の例について説明する。
[ハードウェア構成の例]
図9は第1及び第2実施形態の数論変換処理装置10のハードウェア構成の例を示す図である。
数論変換処理装置10は、制御装置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の機能構成(機能ブロック)のうち、プログラムによっても実現可能な機能ブロックを含むモジュール構成となっている。当該各機能ブロックは、実際のハードウェアとしては、制御装置301が記憶媒体からプログラムを読み出して実行することにより、上記各機能ブロックが主記憶装置302上にロードされる。すなわち上記各機能ブロックは主記憶装置302上に生成される。
なお上述した各機能ブロックの一部又は全部をソフトウェアにより実現せずに、IC(Integrated Circuit)等のハードウェアにより実現してもよい。
また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち1つを実現してもよいし、各機能のうち2つ以上を実現してもよい。
また数論変換処理装置10を実現するコンピュータの動作形態は任意でよい。例えば、数論変換処理装置10を1台のコンピュータにより実現してもよい。また例えば、数論変換処理装置10を、ネットワーク上のクラウドシステムとして動作させてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 記憶部
2 処理部
3 出力部
301 制御装置
302 主記憶装置
303 補助記憶装置
304 表示装置
305 入力装置
306 通信装置
310 バス

Claims (9)

  1. 格子暗号のノイズの数論変換処理装置であって、
    有限体Zqの部分空間に属する前記ノイズの係数を示す1つ以上の元から選択された乗算対象の1つの元と、1つ以上の数論変換定数から選択された乗算対象の1つの数論変換定数との組み合わせを乗算させることにより得られた1つ以上の積を含む事前計算テーブルを用いて、前記ノイズの数論変換を実行する処理部、
    を備える数論変換処理装置。
  2. 前記事前計算テーブルは、前記部分空間に属する全ての元から選択された乗算対象の1つの元と、前記1つ以上の数論変換定数から選択された乗算対象の1つの数論変換定数との組み合わせを乗算させることにより得られた1つ以上の積を含む、
    請求項1に記載の数論変換処理装置。
  3. 前記事前計算テーブルは、前記部分空間に属する元のうち、0を除く1つ以上の元から選択された乗算対象の1つの元と、前記1つ以上の数論変換定数から選択された乗算対象の1つの数論変換定数との組み合わせを乗算させることにより得られた1つ以上の積を含む、
    請求項1に記載の数論変換処理装置。
  4. 前記組み合わせを乗算させることにより得られる積は、複数あり、
    前記事前計算テーブルは、正負の符号変換によって値が変換される積の組については一方のみを含む、
    請求項1に記載の数論変換処理装置。
  5. 前記事前計算テーブルは、部分空間に属する元のうち、前記ノイズの係数として出現する頻度が出現閾値より大きい1つ以上の元から選択された乗算対象の1つの元と、前記1つ以上の数論変換定数から選択された乗算対象の1つの数論変換定数との組み合わせを乗算させることにより得られた1つ以上の積を含む、
    請求項1に記載の数論変換処理装置。
  6. 前記処理部は、前記数論変換定数と前記ノイズの係数との積を、有限体Zq上での複数回の加算又は減算によって算出する、
    請求項1に記載の数論変換処理装置。
  7. 前記数論変換定数と前記ノイズの係数との積は、前記事前計算テーブルに記憶されている第1の積と、前記事前計算テーブルに記憶されていない第2の積とを含み、
    前記処理部は、前記第1の積を前記事前計算テーブルから読み出し、前記第2の積を、有限体Zq上での複数回の加算又は減算によって算出する、
    請求項6に記載の数論変換処理装置。
  8. 格子暗号のノイズの数論変換処理方法であって、
    有限体Zqの部分空間に属する前記ノイズの係数を示す1つ以上の元から選択された乗算対象の1つの元と、1つ以上の数論変換定数から選択された乗算対象の1つの数論変換定数との組み合わせを乗算させることにより得られた1つ以上の積を含む事前計算テーブルを記憶部から読み出すステップと、
    前記事前計算テーブルを用いて、前記ノイズの数論変換を実行するステップと、
    を含む数論変換処理方法。
  9. 格子暗号のノイズの数論変換処理を実行するコンピュータを、
    有限体Zqの部分空間に属する前記ノイズの係数を示す1つ以上の元から選択された乗算対象の1つの元と、1つ以上の数論変換定数から選択された乗算対象の1つの数論変換定数との組み合わせを乗算させることにより得られた1つ以上の積を含む事前計算テーブルを用いて、前記ノイズの数論変換を実行する処理部、
    として機能させるためのプログラム。
JP2020038923A 2020-03-06 2020-03-06 数論変換処理装置、数論変換処理方法及びプログラム Active JP7273753B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020038923A JP7273753B2 (ja) 2020-03-06 2020-03-06 数論変換処理装置、数論変換処理方法及びプログラム
US17/005,390 US11922135B2 (en) 2020-03-06 2020-08-28 Number-theoretic transform processing apparatus, number-theoretic transform processing method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020038923A JP7273753B2 (ja) 2020-03-06 2020-03-06 数論変換処理装置、数論変換処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2021140074A JP2021140074A (ja) 2021-09-16
JP7273753B2 true JP7273753B2 (ja) 2023-05-15

Family

ID=77555712

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020038923A Active JP7273753B2 (ja) 2020-03-06 2020-03-06 数論変換処理装置、数論変換処理方法及びプログラム

Country Status (2)

Country Link
US (1) US11922135B2 (ja)
JP (1) JP7273753B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220078155A (ko) * 2020-12-03 2022-06-10 삼성전자주식회사 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치
US11444767B1 (en) * 2021-03-03 2022-09-13 Nxp B.V. Method for multiplying polynomials for a cryptographic operation
US11792004B2 (en) * 2021-09-17 2023-10-17 Intel Corporation Polynomial multiplication for side-channel protection in cryptography
CN116308989B (zh) * 2022-12-09 2023-10-13 杭州后量子密码科技有限公司 一种全同态快速数论变换的gpu加速方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10075288B1 (en) * 2014-02-28 2018-09-11 The Governing Council Of The University Of Toronto Systems, devices, and processes for homomorphic encryption
US10791123B2 (en) * 2015-11-25 2020-09-29 Yaron Gvili Selectivity in privacy and verification with applications
CN106685663B (zh) * 2017-02-15 2019-07-19 华中科技大学 一种环域上误差学习问题的加密方法及电路
DE102017117907B4 (de) * 2017-08-07 2023-04-27 Infineon Technologies Ag Durchführen einer kryptografischen Operation
JP7125857B2 (ja) * 2018-05-18 2022-08-25 日本電信電話株式会社 暗号化システム、暗号化装置、復号装置、暗号化方法、復号方法、及びプログラム
DE102019108095A1 (de) * 2019-03-28 2020-10-01 Infineon Technologies Ag Ausführen einer kryptografischen Operation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BORTOS, L., KANNWISCHER, M. J. and SCHWABE, P.,Memory-Efficient High-Speed Implementation of Kyber on Cortex-M4,Cryptology ePrint Archive,Paper 2019/489,[online],2019年05月20日,pp.1-20,URL:https://eprint.iacr.org/2019/489
POPPELMANN, T., ODER, T. and GUNEYSU, T.,High-Performance Ideal Lattice-Based Cryptography on 8-bit ATxmega Microcontrollers,Cryptology ePrint Archive,Paper 2015/382 ver:20150619:151641,[online],2015年06月19日,pp.1-20,URL:https://eprint.iacr.org/archive/2015/382/20150619:151641

Also Published As

Publication number Publication date
JP2021140074A (ja) 2021-09-16
US20210279040A1 (en) 2021-09-09
US11922135B2 (en) 2024-03-05

Similar Documents

Publication Publication Date Title
JP7273753B2 (ja) 数論変換処理装置、数論変換処理方法及びプログラム
Pöppelmann et al. Towards practical lattice-based public-key encryption on reconfigurable hardware
US11509454B2 (en) Apparatus for processing modular multiply operation and methods thereof
CN110199338B (zh) 秘密计算系统、秘密计算装置、秘密计算方法、记录介质
Das Computational number theory
WO2018135566A1 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、プログラム
WO2020071187A1 (ja) 秘密シグモイド関数計算システム、秘密ロジスティック回帰計算システム、秘密シグモイド関数計算装置、秘密ロジスティック回帰計算装置、秘密シグモイド関数計算方法、秘密ロジスティック回帰計算方法、プログラム
US20240152331A1 (en) Residue number system in a photonic matrix accelerator
Bos et al. Efficient SIMD arithmetic modulo a Mersenne number
US20230254115A1 (en) Protection of transformations by intermediate randomization in cryptographic operations
JP6585846B2 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
US8909689B2 (en) Arithmetic device
US20230119749A1 (en) Large-precision homomorphic comparison using bootstrapping
US20220147595A1 (en) Faster matrix multiplication via sparse decomposition
Nti et al. Asic design of low area rsa cryptocore based on montgomery multiplier
WO2016114292A1 (ja) 乱数生成装置、乱数生成方法、およびプログラム
Lou et al. Fast exponentiation by folding the signed-digit exponent in half
JP2015135452A (ja) ペアリング演算装置、マルチペアリング演算装置、プログラム
Eriksson Implementing and Evaluating the Quantum Resistant Cryptographic Scheme Kyber on a Smart Card
Tchernykh et al. Cryptographic Primitives Optimization Based on the Concepts of the Residue Number System and Finite Ring Neural Network
KR102491902B1 (ko) 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법
EP3982282B1 (en) Secret division system, secret calculation device, secret division method, and program
JP3875183B2 (ja) 演算装置
US20230327849A1 (en) Apparatus and method with homomorphic encryption operation
Hirsch et al. Improving deduplication techniques by accelerating remainder calculations

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230315

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230428

R151 Written notification of patent or utility model registration

Ref document number: 7273753

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151