RLWE_LPR10 - toyofuku/flp GitHub Wiki
https://eprint.iacr.org/2012/230.pdf
代æ°çæ°è«ã¯ä»£æ°äœã®ç ç©¶ã§ããããã®ã»ã¯ã·ã§ã³ã§ã¯ãå¿ èŠãªçè«çèæ¯ãååäœãå®äŸã«åãäžããæ°åŠãšèšç®çè«ãã¿ãŠãããååäœã®ç¹å¥ãªæ§è³ªã2.4ã«ãŸãšããã
代æ°äœã¯ãæçæ°äœã«æœè±¡èŠçŽ Î¶
ãæ·»å ããäœã®æ¡å€§ K = Q(ζ)
ãšããŠå®çŸ©ããããšãã§ãããã㮠ζ
ã¯ãããæ¢çŽå€é
åŒ f(x) â Q[x]
ã§é¢ä¿ f(ζ) = 0
ãæºè¶³ããããã®å€é
åŒf
ã¯äžè¬æ§ã倱ãããšãªãã¢ããã¯ã«ã§ããããã®å€é
åŒ f
㯠ζ
ã®æå°å€é
åŒãšåŒã°ããã代æ°äœã®æ¬¡æ° n
㯠f
ã®æ¬¡æ°ã§ããã f(ζ) = 0
ããã代æ°äœ K
㯠{1,ζ,...,ζ^(n-1)}
ãåºåºãšãã Q
äžã® n次å
ãã¯ãã«ç©ºéãšã¿ãªãããããã¯Kã®"power basis"ãšåŒã°ããããã¡ãããζ
ãäžå®å
x
ã«é¢é£ã¥ãããšãK
ãš Q[x]/f(x)
ã®éã®èªç¶ãªååååãããããããã
泚ïŒã¢ããã¯: æé«æ¬¡ä¿æ°ã1ã®1倿°å€é åŒã
m
ãæ£ã®æŽæ°ãζ = ζ_m
ãäœæ° m
ã®èŠçŽ ãããªãã¡1ã®åå§n乿 ¹ãšãããm次ã®ååäœã¯ K = Q(ζ)
ã§ãããζ
ã®æå°å€é
åŒã¯æ¬¡ã® m次ååå€é
åŒã§ããã
Ί_m(x) = prod(x - Ï^i_m) â Z[x] for i in Z*_m
ããã§ Ï_m â C
ã¯1ã®åå§m乿 ¹ãšãªãè€çŽ æ°ãã€ãŸã Ï_m = exp(2*Ï*sqrt(-1)/m)
ã§ãããΊ_m(x)
ã®è€çŽ æ°æ ¹ Ï^i_m
ã¯ãC
ïŒè€çŽ æ°ïŒã«ããã1ã®åå§m乿 ¹ã§ãããΊ_m(x)
ã®æ¬¡æ°ã¯ n=Ï(m)
ã§ãã(Ïã¯ãªã€ã©ãŒã®Ï颿°)ããã®è«æã§ã¯ã (åé
ã§)äžããããmã«å¯ŸããŠÎŠ_m(x)
ãå€é
åŒæéã§èšç®ãããç¹ãé€ãã°ã圹å²ãããããã§ã¯ãªãã
代æ°äœã®åã蟌ã¿ã«ã€ããŠèª¬æãããåã蟌ã¿ã¯ä»£æ°äœäžã®èªç¶ãª(canonical)幟äœåŠãèªå°ããã
次æ°nã®ä»£æ°äœ K = Q(ζ)
ã¯nåã®ç°åã蟌ã¿(åå°ãªç°æºåå) Ï_i: K -> C
ããã€ããããã®åã蟌ã¿ã¯ ζ
ããã®æå°å€é
åŒ f
ã®è€çŽ æ°æ ¹ã«å¯Ÿå¿ã¥ãããf(Ï_i(ζ)) = Ï_i(f(ζ)) = 0
ãªã®ã§ãKããCãžã®ç°åã蟌ã¿ãäžæã§ããããšã¯èªæãåãRã«ããåã蟌ã¿ã¯å®åã蟌ã¿ãšåŒã°ãã(fã®å®æ ¹ã«å¯Ÿå¿)ãfã®è€çŽ æ°æ ¹ã¯è€çŽ åã蟌ã¿ãšåŒã°ãããf(x)
ã®è€çŽ æ ¹ã¯å
±åœ¹ããã€ã®ã§ãè€çŽ åã蟌ã¿ãåæ§ã§ãããå®åã蟌ã¿ã®æ°ãs1
ãšããè€çŽ åã蟌ã¿ã®çµã®æ°ãs2
ãšãããšãn = s1 + 2 * s2
ãæãç«ã€ãå®åã蟌ã¿ã{Ï_j} for j â [s1]
ã§èšãã
Ï_{s1+s2+j} = conjugate(Ï_{s1+j}) for j â [s2]
ãšãªãããã«è€çŽ åã蟌ã¿ãæŽåãããæšæºåã蟌ã¿(canonical embedding) Ï: K -> R^{s1} à C^{2*s2}
ã¯æ¬¡ã®ããã«å®çŸ©ãããã
Ï(x) = (Ï_1(x),...,Ï_n(x))
ããã¯ç°æºååã§ããã乿³ãšå æ³ã¯ã©ã¡ããèŠçŽ ããšã«è¡ããããè€çŽ åã蟌ã¿ã¯å
±åœ¹ããã€ã®ã§ãÏ
㯠H
ãžã®ååã«ãªãã
Kã®èŠçŽ ãHãžã®æšæºåã蟌ã¿ã§èå¥ããã°ãããã¯Käžã®å¹ŸäœåŠãã«ã ïŒãŠãŒã¯ãªãããã«ã ãªã©ïŒãšåŒã¹ããH
äžã®ãã«ã ãC^n
ããã®èªå°ã§å®çŸ©ããã®ã§ãä»»æã® x â K
ãšä»»æã® p â [1,â]
ã«å¯ŸããŠãxã®l_pãã«ã ã¯p < â
ã«å¯ŸããŠ
||x||_p = ||Ï(x)||_p = ( Σ |Ï_i(x)|^p for i â [n] )^{1/p}
ã§ãããl_â 㯠max |Ï_i(x)| for i â [n]
ã§ãããpãçç¥ãããå Žå㯠l_2 ãã«ã ãšãããåã蟌ãŸããèŠçŽ ã®ä¹æ³ã¯ïŒÏã¯ç°æºååã§ããããïŒèŠçŽ ããšã«è¡ãããã®ã§ãä»»æã® x,y â K
ãšä»»æã® p â [1,â]
ã«å¯ŸããŠ
||x * y||_p <= ||x||_â * ||y||_p
ãåŸããããl_â ãã«ã ã¯Kã®çµ¶å¯Ÿå€ã«çžåœãã乿³ã«ãã£ãŠä»ã®èŠçŽ ãã©ãã ããæ¡å€§ããããã瀺ãã
æšæºåã蟌ã¿ã䜿ãã°ãHäžã® r â (R^+)^n
ã®ã¬ãŠã¹ååž D_r ããããã¯Hã®æ Œåã«ããã颿£ã¬ãŠã¹ååžã¯ãKäžã®ååžãšèŠãªãããšãã§ãããå³å¯ã«ã¯ååž D_r ã¯Käžã®ååžã§ã¯ãªãããããäœäžã®ãã³ãœã«ç©K_R = K â_Q R
äžã®ååžã§ãããããã¯Hãšååã§ãããä»»æã®èŠçŽ x â K_R
ã«å¯Ÿã㊠x * D_r
ã®ååžã¯D_r'
ã§ãããããã§
r'_i = r_i * |Ï_i(x)|
ãšããïŒãã®ååžã¯è€çŽ åã蟌ã¿ã®å®éšãšèéšã«åã忣ããã€ããšã䜿ã£ãŠããïŒã
æœè±¡çã«ã¯ãx â K
ã®ïŒäœã®ïŒãã¬ãŒã¹Tr = Tr_{K/Q}: K -> Q
ãšïŒäœã®ïŒãã«ã N = N_{K/Q}: K -> Q
ã¯ãããããKïŒãQäžã®ãã¯ãã«ç©ºéãšã¿ãªãããšãïŒã®ç·å倿ã®ãã¬ãŒã¹ãšè¡ååŒã§ãããxã«ãã乿³ã衚çŸãããå
·äœçã«ã¯ããã¬ãŒã¹ãšãã«ã ã¯ããããåã蟌ã¿ã®ç·åãšç·ä¹ã§ç€ºãããšãã§ããã
Tr(x) = Σ Ï_i(x) for i âã[n]
N(x) = Î Ï_i(x) for i âã[n]
ã©ã¡ãã®å®çŸ©ã䜿ã£ãŠãããã¬ãŒã¹ãšãã«ã ã¯ããããå æ³ãšä¹æ³ã§ããããšã¯å®¹æã«ç¢ºèªã§ããã ããã«ããã¹ãŠã®x, y â Kã«å¯ŸããŠ
Tr(x*y) = Σ Ï_i(x)*Ï_i(y) = <Ï(x),conjugate(Ï(y))> for i â [n]
ã§ãããã€ãŸãTr(x*y)ã¯ãxãšyã®åã蟌ã¿ã®å ç©ãšé¡äŒŒãã察称ãªåç·å圢åŒ(bilinear form)ããã€ã
sage: from sage.rings.polynomial.cyclotomic import cyclotomic_coeffs
sage: cyclotomic_polynomial(5)
x^4 + x^3 + x^2 + x + 1
sage: cyclotomic_value(5, 1/2)
31/16
代æ°çæŽæ°ãšã¯ãæçæ°äžã®æå°å€é
åŒãæŽæ°ä¿æ°ãšãªãèŠçŽ ã§ããã代æ°äœKã«å¯ŸããŠKã®ä»£æ°çæŽæ°ã®éåãO_k â K
ãšèšãããã®éåã¯ïŒKã«ãããå æ³ãšä¹æ³ã®äžã§ïŒä»£æ°äœã®æŽæ°ç°ãšåŒã°ããç°ãã€ããã代æ°çæŽæ°ã®ãã«ã ãšãã¬ãŒã¹ã¯ãããèªäœãæçæŽæ°ã§ããïŒã€ãŸãZã«å±ã)ã
O_Kã¯ã©ã³ã¯nïŒããã¯Kã®æ¬¡æ°ïŒã§ããèªç±Zã¢ãžã¥ã©ã«ãªããã€ãŸããããåºåºB = {b1,...,bn} â O_K
ã§ã®ãã¹ãŠã®Zç·åçµåã®éåã§ããããã®ãããªéåã¯æŽæ°åºãšåŒã°ããKã®QåºåºïŒã§ããK_Rã®RåºåºïŒã§ãããéåžžããããåºåºã¯n>1ã®ãšãç¡éã«ååšããã
次æ°n=Ï(m)ã®mçªç®ã®ååäœK=Q(ζ_m)ã®äŸãç¶ãããšãKã®"power basis" {1,ζ_m,...ζ_n^(n-1)}
ãO_K=Z[ζ_m]ã§ãããæŽæ°åºåºãšãªãïŒäžè¬ã«ã代æ°äœã®power basisãæŽæ°ã®ç°å
šäœãçæããããšã¯çããïŒã
(æŽ)ã€ãã¢ã« I â O_K
ã¯èªæã§ãªãå æ³éšå矀ïŒã€ãŸãI â Ïãã€I â {0}ã§ããïŒã§ãããQ_Kã§ã®ä¹æ³ã«ãããŠéããŠãããã€ãŸãä»»æã®r â O_K
ãšx â I^2
ã«å¯ŸããŠr*x â I
ã§ãããO_Kã«ãããã€ãã¢ã«Iã¯ãg1,g2,... â O_K
ã®ç·åœ¢çµåã®éåãšããŠæéçæãããããããI=<g1,g2,...>
ãšèšããïŒå®éã«ã¯ãåžžã«2ã€ã®çæåãããã°ååã§ããããšãç¥ãããŠããïŒãã€ãã¢ã«ã¯ã©ã³ã¯nã®èªç±Zã¢ãžã¥ã©ã§ããããã€ãŸããããåºåº{u1,...,u_n} â Q_K
ã®ããããZç·åœ¢çµåã®éåãšããŠçæãããã
ã€ãã¢ã«Iã®ãã«ã ã¯ãO_Kã®å æ³éšå矀ãšãªãæ·»åã§ãããã€ãŸãN(I) = |O_K/I|
ã2ã€ã®ã€ãã¢ã«ã®åI+J
ã¯ãxâI,yâJ
ã«ããããã¹ãŠã®x+y
ã®éåã§ããã2ã€ã®ã€ãã¢ã«ã®ç©ã¯xâI,yâJ
ã«ãããé
xy
ã®ãã¹ãŠã®æéåã®éåã§ãããã€ãã¢ã«ã®ãã«ã ãšããæŠå¿µã¯ãäžã§å®çŸ©ããäœãã«ã ãäžè¬åãããä»»æã®xâO_K
ã«å¯ŸããŠN()=|N(x)|ã§ããN(IJ)=N(I)N(J)ã§ããã
2ã€ã®ã€ãã¢ã«I,J â O_K
ã¯ãI+J=O_K
ã®ãšãäºãã«çŽ ãšåŒã°ãããã€ãã¢ã«P â O_Kã¯ãããa,b â O_K
ã«å¯ŸããŠã€ãã«ab â p
ãªãã°a â P
ãããã¯b â P
ãæãç«ã€ãšãçŽ ã€ãã¢ã«ã§ãããO_Kã«ãããŠã¯ãã€ãã¢ã«Pãæ¥µå€§ã€ãã¢ã«ã®å Žåã«ã®ã¿çŽ ã€ãã¢ã«ã§ãããã€ãŸããPãå
å«ããã€ãã¢ã«ã¯O_Kèªäœãããªãããšãæå³ãããããã¯åç°O_K/P
ãäœæ°N(P)ã®æéäœã§ããããšã嫿ãããç°O_Kã«ã¯ã€ãã¢ã«ã®äžæåè§£ããããã€ãŸããã€ãã¢ã«I â O_Kã¯çŽ ã€ãã¢ã«ã®åªä¹ã®ç·ç©ãšããŠäžæã«è¡šçŸããããšãã§ããã
åæ°ã€ãã¢ã«I â K
ã¯ãdI â O_K
ãd â O_K
ã«å¯ŸããæŽã€ãã¢ã«ãšãªãéåã§ããããã®ãã«ã ã¯N(I) = N(dI) / |N(d)|
ãšå®çŸ©ããããå°æ°ã€ãã¢ã«ã®éåã¯ä¹æ³çŸ€ãäœãããã®ãã«ã ã¯ãã®çŸ€äžã®ä¹æ³çååååã§ããã
Kã«ãããïŒå°æ°ïŒã€ãã¢ã«ãæšæºåã蟌ã¿ã®äžã§æ Œåãã©ã®ããã«äœããã説æãããã®æ§è³ªãèšè¿°ãããåæ°ã€ãã¢ã«Iã¯ZåºåºãšããŠU={u_1,...,u_n}ãæã€ããã®ãããæšæºåã蟌ã¿Ïã®äžã§ã€ãã¢ã«ã¯ãåºåº{Ï(u_1),...,Ï(u_n)} â H
ããã€ã©ã³ã¯nã®ã€ãã¢ã«æ ŒåÏ(I)ãäœããç°¡ç¥ã®ããããã°ãã°ã€ãã¢ã«ãšãã®åãèŸŒã¿æ Œåãåºå¥ããªããã€ãã¢ã«ã®æå°è·é¢Î»_1(I)ãšãã£ãèšãæ¹ãããã
代æ°äœKã®å€å¥åŒïŒã®çµ¶å¯Ÿå€ïŒâ³_K
ã¯ãÏ(O_K)
ã®åºæ¬äœç©ã®å¹³æ¹æ ¹ãšããŠå®çŸ©ãããããã®ããb_1,...,b_n
ãO_Kã®æŽæ°åºåºã§ãããšãâ³_K = |det(Tr(b_i * b_j))|
ãšåå€ã§ããããã®ããã€ãã¢ã«æ ŒåÏ(I)ã®åºæ¬äœç©ã¯N(I)*sqrt(â³_K)
ã§ãããããšãã°ã次æ°n=Ï(m)ãšãªãmçªç®ã®ååäœK=Q(ζ_m)ã®å€å¥åŒã¯
â³_K = m^n / prod(p^{n/(p-1)} for prime p|m) <= n^n
ããã§å€å¥åŒã«ãããç·ä¹ã¯ãmãå²ãåããã¹ãŠã®çŽ æ°ã«ã€ããŠèšç®ããããã®äžçåŒã¯ãmã2ã®åªä¹ã®ãšããã€ãŸãn=m/2ã®ãšããçå·ãæãç«ã€ã
次ã®å€å
žçè£é¡ã¯ãã€ãã¢ã«æ Œåã®æå°è·é¢ã®äžçãšäžçãäžãããäžçã¯ãã³ã³ãŠã¹ããŒã®ç¬¬1å®çããçŽæ¥åž°çµãããäžçã¯ç·å ç·ä¹å¹³åã®äžçåŒã«åŸããä»»æã®éãŒãx â I
ã«å¯ŸããŠ|N(x)| >= N(I)
ã§ããã
è£é¡2.9 次æ°ãnãšãªã代æ°äœKã®ä»»æã®åæ°ã€ãã¢ã«ã¯ãp â [1,â]
ã®ä»»æã®l_pãã«ã ã«å¯ŸããŠã
n^{1/p} * N(I)^{1/n} <= λ_1(I) <= n^{1/p} * N(I)^{1/n} * sqrt(â³_K^{1/n})
å察ã€ãã¢ã«ã®æŠå¿µã䜿ã£ãŠãéã€ãã¢ã«ãšå察ã€ãã¢ã«ã®éã®å¯æ¥ãªé¢ä¿ã説æããã
Kã«ãããä»»æã®æ ŒåLã«å¯ŸããŠïŒã€ãŸããKã®ä»»æã®Qåºåºã®Zã¹ãã³ã«å¯ŸããŠïŒãæ Œåã®åå¯Ÿãæ¬¡ã®ããã«å®çŸ©ããã
L^âš = {x â K : Tr(xL) â Z}
æšæºåã蟌ã¿ã®äžã§ã¯ãL^âšã¯åå¯Ÿæ Œåã®è€çŽ å
±åœ¹ãããªãã¡Ï(L^âš) = conjugate(Ï(L)^*)
ã«ãªããããã¯Tr(xy) = Σ Ï_i(x)Ï_i(y) = <Ï(x), conjugate(Ï(y))>
ããåŸãããããŸã(L^âš)^âš = L
ã¯å®¹æã«ç¢ºèªã§ãããããLãåæ°ã€ãã¢ã«ã§ããã°ãL^âšã¯1ã«ãªãã
èªæãªä»£æ°äœK = Q
ãé€ããŠãæŽæ°ç°R = O_K
ã¯èªå·±å察ã§ã¯ãªããRãšã€ãã¢ã«ã¯äºãã«éå察ã§ããªãã幞ããã€ãã¢ã«(I)ãšãã®é(I^-1)ã¯ãç°ã®å察ã€ãã¢ã«(R^âš)ãšã®ä¹æ³ã§æ¬¡ã®ããã«é¢ä¿ä»ããããïŒ
ä»»æã®åæ°ã€ãã¢ã« I ã«å¯ŸããŠãå察ã€ãã¢ã«ã¯I^âš = I^-1 * R^âš
ã§ããïŒI = R
ã®ãšãR^-1 = R
ãªã®ã§ããã¯èªæïŒãå åR^âšã®é(R^âš)^-1
ã¯åŸ®åã€ãã¢ã«ãšåŒã°ããã埮åã€ãã¢ã«ã®ç©åãåæ°ã€ãã¢ã«R^âš
ã§ããããã«ã ãN((R^âš)^-1) = â³_K
ã§ãããåæ°ã€ãã¢ã«R^âš
èªäœã¯äœåŸ®å(codifferent)ãšåŒã°ãããm = 2^k
ã®ãšã次æ°n = Ï(m) = m/2
ãšãªãmçªç®ã®ååäœã¯ç¹å¥ã§ããããã®å Žåã«ã¯R^âš = <n^-1>
ã¯Rã®ã¹ã±ãŒã«ã«ãããªãã
ããã§KãšO_Kã®äžã®ãªããžã§ã¯ããã©ã®ããã«è¡šçŸãããã¢ã«ãŽãªãºã ã«ãã£ãŠã©ãæŒç®ãããã®ããäžè¬çãªã±ãŒã¹ã§èª¬æããã代æ°äœKã®æèã«ãããèšç®è€éæ§ã®éã«ã€ããŠã¯ãnã®å€é
åŒãlog(â³_K)
ãä»»æã®å
¥åã®ç·ãããé·ã®æå³ã§ãå€é
åŒãªãŒããŒããšã¿ãªããããïŒæã
ã䜿ãå
·äœçãªä»£æ°äœã®æã«ãããŠãlog(â³_K)
ã¯nã®å°ããªå€é
åŒã§ããïŒã
O_Kã¯ã©ã³ã¯nã®èªç±Zã¢ãžã¥ã©ãªã®ã§ãç°O_Kã¯ããç©ååºåºB = {b_1,...,b_n} â O_K
ãåºæºã«è¡šçŸããããããã¯Kã«ã€ããŠã®Qåºåºã§ããããããªãã¡ãèŠçŽ x â K
ã¯ãã¯ãã«x = (x_1,...,x_n) â Q^n
ã«ãã£ãŠäžæã«è¡šçŸããããããã§x = Σ x_i * b_i for i â [n]
ãšãããšx_i â Z
ã®å Žåã®ã¿x â O_K
ã§ããã
KïŒããã³O_KïŒã§ã®å æ³ã¯ãåçŽã«è¡šçŸãã¯ãã«ã®èŠçŽ ããšã®å æ³ã§ãããK(ããã³O_K)ã§ã®ä¹æ³ã¯ãç·åœ¢æ§ã«ããi,j â [n]
ã«å¯Ÿããç©b_i * b_j â O_K
ã§ãããšç¥ã£ãŠããã°ååã§ããããããã®é
ã®ïŒéåžžã¯Bãåºæºã«ããïŒè¡šçŸã¯ãå€é
åŒãµã€ãºã®ç©åãã¯ãã«ã§ãããKãšO_Kã®å
šäœãæ§ç¯ããããã®èšè¿°ãäžããããŠããã°ã乿³ã®éãå€é
åŒæéã§èšç®å¯èœã§ããã
ç©åã€ãã¢ã«I â O_K ã¯ãIã«å¯ŸããZåºåºã§è¡šçŸããããããã¯I = Σ Z * u_i for i â [n]
ãšãããšãã® U_I = {u_1,...,u_n} â O_K
ã®éåã§ãããïŒããã§ã¯ã€ãã«ãu_iã¯åºå®ãããç©ååºåºBãåºæºã«è¡šçŸãããïŒã
åæ°ã€ãã¢ã«Iã¯ã忝 d â O_K ã«ãã£ãŠç©åã€ãã¢ã«d*I
ãšããŠã衚çŸã§ããã
ãããã®è¡šçŸã䜿ããšã
- äžããããåºåºãã€ãã¢ã«IãçæããŠãããã®æ€æ»
- Iã®ãã«ã ã®èšç®
- éã€ãã¢ã«
I^-1
ãšå察ã€ãã¢ã«I^âš
ã®èšç® - Kã«ãããèŠçŽ ãäžããããIã®åºåºã«ç°¡çŽãã
- Iã®HNF(Hermite normal form)ãèšç®
- å ¥ååºåºã«å¯ŸããŠHNFã«é¢ãããŠãã¢ãžã¥ã©æŽæ°è¡å
- 2ã€ã®ã€ãã¢ã«IãšJãäžãããããšãç©ã€ãã¢ã«IJã¯æ±ºå®çå€é åŒæéã§èšç®ã§ãã
- J â Iã®å Žåãå矀I/Jããã©ã³ãã äžæ§ãªèŠçŽ ãå€é åŒæéã§æœåºã§ãã
- I/JãèŠçŽ ããšã«æ±ºå®çå€é åŒæéã§åæã§ããã
2.2.1ããïŒæšæºåã蟌ã¿ã®äžã§ïŒæ¥åã¬ãŠã¹ååžD_rã¯ãHã®çŽäº€åºåºãã¯ãã«h_iã«ãããç¬ç«ãª1次å ã¬ãŠã¹ååžã®ç©åã«å¯Ÿå¿ããããã®ãããK_Räžã®D_rããã®ïŒä»»æã®ç²ŸåºŠã§ã®ïŒãµã³ããªã³ã°ãå€é åŒæéã§å¯èœã§ãããäžãããrã«å¯ŸããŠBãåºæºã«h_iã衚çŸããããã㯠Ï(B)ã¯Hãžã®power basisã®åã蟌ã¿ã§ããããšãçè§£ããã°ååã§ããã
ã€ãã¢ã«æ Œåäžã®èšç®åé¡ã®ãã¡æ¬¡ã®3ã€ã説æããã
- æå°ãã¯ãã«åé¡ïŒSVPïŒ
- æå°ç¬ç«ãã¯ãã«åé¡(SIVP)
- Bounded-Distance Decoding(BDD)åé¡
äžè¬æ§ãæãªãããšãªãã以äžã®ã¹ã±ãŒãªã³ã°ã«åŸã£ãŠO_Kã®ç©åã€ãã¢ã«ã«ãªãããã«å¶çŽã§ããã
Iã¯åæ¯d â O_Kããã€åæ°ã€ãã¢ã«ã§ãããšãã
N(d) â <D>
ã§ããã®ã§N(d) * I â O_K
ãã¹ã±ãŒã«ãããã€ãã¢ã«ã«ãªãã
å®çŸ©2.10 (SVPãšSIVP) 代æ°äœKã¯ãã幟äœåŠãã«ã ïŒl_2ãã«ã ïŒããã€ãšããγ >= 1ãšãããäžãããããã«ã ã§ã®K-SVP_γåé¡ãšã¯æ¬¡ã®éãïŒKäžã®åæ°ã€ãã¢ã«Iãäžãããããšãã||x|| <= γ * λ_1(I)ãšãªãéãŒãã® x â Iãæ¢ããK-SIVP_γåé¡ãåæ§ã«å®çŸ©ãããããã®ãšããã«ã ãé«ã γ * λ_n(I)ã§ããç·åç¬ç«ãªnåã®èŠçŽ ãIããæ¢ãã
å®çŸ©2.11 (BDD) 代æ°äœKã¯ãã幟äœåŠãã«ã (l_â)ããã€ãšããIã¯Käžã®åæ°ã€ãã¢ã«ã§ãããd < λ_1(I)/2
ãšãããäžãããããã«ã ã§ã®K-BDD_{I,d}åé¡ãšã¯æ¬¡ã®éãïŒIãšx â I
ã«å¯ŸããŠy = x + e
ãäžããããã
代æ°äœKã®æŽæ°ç°R = O_K
ã§ã®äžåœå°äœå®ç(CRT)ãšãã®éèŠãªåž°çµã瀺ãã
è£é¡ 2.12 äžåœå°äœå®ç æŽæ°ç°Rã«ãããäºãã«çŽ ãªã€ãã¢ã«ãI_1,...,I_r
ããšããI = prod(I_i) for i â [r]
ãšãããèªç¶ãªç°åååå R -> â (R/I_i) for i â [r]
ã¯ç°æºåå R/I -> â (R/I_i) for i â [r]
ãèªå°ããã
次ã®è£é¡ãããäºãã«çŽ ãªã€ãã¢ã«I_1,...,T_r
ã«å¯ŸããŠãCRTåºåºããšãªãCãå¹ççã«èšç®ã§ããããšãããããããªãã¡ãã¹ãŠã® i!=j
ã«å¯Ÿã㊠c_i = 1 mod I_i
ã〠c_i = 0 mod I_j
ãšãªã c_1,....,c_r â R
ãåŸãããããã®ãããªåºåºã§ã¯è£é¡2.12ã§èšè¿°ãããæºååãéã«ããããšãã§ãããä»»æã® w = (w_1,...,w_r) âãâ_i (R/I_i)
ãäžãããããšããv = Σ w_i * c_i mod I
ã¯R/Iã«ãããäžæã®èŠçŽ ã§ãããç°æºååã«ããwã«ååãããã
è£é¡ 2.13 (Zåºåºã§è¡šçŸããã)äºãã«çŽ ãªã€ãã¢ã« I,J â R
ãäžãããããšããc = 1 mod I
ãšãªã c â J
ãåºåããæ±ºå®çå€é
åŒæéã¢ã«ãŽãªãºã ãååšãããããäžè¬åãããšãäžããããäºãã«çŽ ãªã€ãã¢ã« I_1,...,I_r
ã«å¯ŸããŠCRTåºåº c_1,...,c_r â R
ãåºåããæ±ºå®çå€é
åŒæéã¢ã«ãŽãªãºã ãååšããã
蚌æ ãã®ã¢ã«ãŽãªãºã ã¯æŽæ°Zã§ã®æ¡åŒµããããŠãŒã¯ãªããäºé€æ³ãäžè¬åãããã®ã§ãããIãšJã«å¯ŸããŠããããé©åœãªZåºåºB_IãšB_JãäžãããããšããI+J=R
ã«å¯ŸããïŒããããåªæ±ºå®ãããïŒåºåºã BïŒB_I ⪠B_J
ãšããããã®BããRã®ãšã«ããŒãæšæºåºåº H = {h_1,...,h_n}
ãèšç®ãããh_iã®è¡šçŸã¯Bã«ãããèŠçŽ ã®ZçµåãšããŠèšç®ããããèŠçŽ 1 â R ãHã«ãããèŠçŽ ã®Zçµåããããã£ãŠ B_I ⪠B_J
ã®èŠçŽ ã®ZçµåãšããŠæžãããããã x + y = 1
ãšãªã x â I, y â J
ãåŸããããæåŸã«èŠçŽ c = y = 1 - x â J
ãåºåããããã㯠1 mod I
ã§ããããã®äž»åŒµã®åŸåã«ã€ããŠã¯ãå c_i ãèšç®ããã«ã¯ I = I_i
ã〠J = prod(I_j) for j!=i
ãèšç®ããã°ããã
次ã®2ã€ã®è£é¡ãçµã¿åããããšãä»»æã®åæ°ã€ãã¢ã«I,Jã«å¯ŸããŠå矀I/qIãšJ/qJã®éã®å šåå°ïŒãããç°äžã®å çŸ€ã®æºååã§ããïŒãå¹ççã«èšç®ã§ãããããã¯4.2ã«ç€ºãBDDããLWEãžã®åž°çã«ãããé©åœãªã€ãã¢ã«Iãåãåºã(clearing out)éèŠãªããŒã«ã«ãªãïŒ4.2ã§ã¯ãããäžè¬åããŠãã€ãã¢ã«æ Œåã«å¯Ÿããææªæå¹³ååž°çã瀺ãïŒããããã®è£é¡ã¯ããããèšç®çæ°è«ã®å°éå®¶ã«ã¯æšæºã§ãããããã®æèã§ã®å¿çšã¯æ°ãããšæã ã¯ä¿¡ããŠããã
è£é¡ 2.14 IãšJãRã«ãããã€ãã¢ã«ãšãããã€ãã¢ã« t * I^-1 â R
ãJãšäºãã«çŽ ãšãªã t â J
ãååšãããããã«IãšJã®çŽ ã€ãã¢ã«åè§£ãäžãããããšãããã®ãããªtã¯å¹ççã«èŠã€ããããšãã§ããã
蚌æ Jã®çŽ å åãšããŠP1,...,Pr
ãäžããããŠãããšãããi â [r]
ã«å¯ŸããŠIãå²ãåãPiã®æå€§ã®åªã e_i >= 0
ãšãããïŒe_iã¯log(N(I))/log(N(Pi))
ãè¶
ããªãã®ã§ãe_iã¯è©Šè¡çé€ç®ãšäºåæ¢çŽ¢ã«ãã£ãŠå¹ççã«èšç®ã§ãããïŒi â [r]
ã«å¯ŸããŠãPi^{e_i+1}
ã§ã¯ãªãé©åœãª t_i â Pi^e_i
ãéžã¶ãäžåœå°äœå®çã«ãããæ¬¡ãæºãã t â R
ãååšããã
t = 0 mod (I/prod(Pi^r_i) for i â [r]) ã〠âi â [r], t = t_i mod Pi^{e_i + 1}
ïŒãã®ã€ãã¢ã«ã¯äºãã«çŽ ã§ããããšã«æ³šæãïŒããã ãã§ãªãããã®tã¯ã€ãã¢ã«Pi^{e_i+1}
ãšI/prod(Pi^{ei} for i
ïŒã«å¯ŸããCRTåºåºã䜿ããšå¹ççã«èŠã€ããããšãã§ãããããã§tã¯ãã¹ãŠã®Pi^{e_i}
ãå²ãåãã®ã§ãt â I
ãåŸãã
æåŸã« t * I^-1
ãã©ã®Piã§ãå²ãåããªãããšã瀺ãå¿
èŠãããããã®åŠå®ã§ããPi*I|<t>
ãæãç«ã€ãšä»®å®ãããšãPi^{e_i+1}|Pi*I
ãªã®ã§ãt â Pi^{e_i+1}
ãåŸãããããããt = t_i != 0 mod Po^{e_i+1}
ãšãªãççŸã
次ã®è£é¡ãã¯ãããŠèªããšãã¯ãã€ãã¢ã«Mã乿³çåäœå (multiplicative identity)ãšèããŠã»ããïŒããªãã¡ç°Rå šäœïŒã
è£é¡ 2.15 IãšJãRã«ãããã€ãã¢ã«ãšãããt*I^-1
ãJ
ãšäºãã«çŽ ã«ãªããããªt
ãéžã¶ãKã«ãããä»»æã®åæ°ã€ãã¢ã«ãMãšããããã®ãšã颿° Î_t: K -> K
ã¯ãç°äžã®å 矀(R-modules)ãšã㊠M/JM ãã IM/IJM ãžã®æºååãèªå°ããÎ_t(u) = t*u
ãšããŠå®çŸ©ãããããã®æºååã¯ãäžãããã IãJãMãt ãå¹ççã«éã«ãããããããªã[this isomorphism may be efficiently inverted given I,J,M,t]ã
蚌æ Î_t
ã¯t â R
ã®ä¹æ³ã§è¡šçŸãããã®ã§ãÎ_t
ã¯ç°äžã®å 矀ãšååã«ãªãã
ãã®é¢æ°ã¯å®çŸ©åMãšç¯å²IM/IJMããã€Î_tããåŸããããšä»®å®ããããã®ã«ãŒãã«ã¯JMã§ããã®ã§ã
Î_t(JM) = t * JM â IJM
-
u â M
ã«å¯ŸããŠÎ_t(u) = 0
ãªãã°ãt*u â IJM
ã§ããã(t*I^-1)*(u*M^-1)âJ
ã嫿ããã
t*I^-1
ãšJã¯Rã«ãããäºãã«çŽ ãªã€ãã¢ã«ã§ããã®ã§ãu*M^-1 â J => u â JM
ãåŸããããÎ_tããåŸãããM/JMããIM/IJMãžã®é¢æ°ã¯åå°ã§ãããããšã¯ãããå
šå°ã§ããããšã瀺ãã ãã ãïŒå®éã«ã¯ãã©ã¡ãã®å矀ãåºæ°N(J)ã§ããã®ã§ãå
šå°ã§ããããšã¯ãããããå¹çããå¯éæ§ã瀺ãããã«æ§æç蚌æãäžãããïŒ
Μ â IM
ãé©åœã«ãšããä»®å®ãããt*T^-1
ãšJ
ã¯äºãã«çŽ ãªã®ã§ãè£é¡2.13ã®ã¢ã«ãŽãªãºã ã䜿ã£ãŠãc = 1 mod J
ãšãªãc â t*I^-1
ãèšç®ã§ããããã®ãšãa = c*Μ â t*M
ãšãããšãa - Μ = Μ * (c-1) â IJM
ãåŸããããÏ = a/t âãM
ãšãããšãÎ_t(Ï) = t*(a/t) = Μ mod IJM
ãªã®ã§ãÏ mod JM
ã¯Îœ mod IJM
ã®çŸå(preimage)ã§ããã
ååäœã®éèŠãªæ§è³ªã瀺ãã5.1ã§ã¯æ¢çŽ¢åé¡ããå€å®åé¡ãžã®åž°çã«ããã䜿ããζ = ζ_m
ã«å¯ŸããŠK=Q(ζ)
ã第mååäœãšãããããã¯æ¬¡æ°n=Ï(m)
ã®æå°å€é
åŒÎŠ_m(x)
ããã€ãR=O_K=Z[ζ]
ãšããã
代æ°äœKã¯nåã®èªå·±åå Ï_k : K -> K
ããã€ãããã¯k â Z*_m
ã«å¯ŸããÏ_k(ζ)=ζ^k
ã«ãã£ãŠå®çŸ©ããããÏ_k
ã¯èªå·±ååã§ããã®ã§ããããç°ååååã§ããéããã€ããšã¯å®¹æã«ç¢ºããããããèªå·±ååã¯æšæºåã蟌ã¿ã®åº§æšã眮æãããããã¯éèŠãªæ§è³ªã§ãããããæ£ç¢ºã«ã¯ãä»»æã®i,kâZ*_m
ã«å¯ŸããŠÏ_i(Ï_k(ζ)) = Ï_{ik}(ζ)
ã§ããã®ã§ãÏ â Ï_k
ã¯ãã®åº§æšã®ããåºå®ããã眮æã«ãããÏã«ãããªãã
æŽæ°ç°q â Z
ã«å¯ŸããŠãã€ãã¢ã«<q> = q*R
ã®åè§£ã¯æ¬¡ã®ããã«ãªããq'ãmãå²ãæå€§ã®åªãšãããe = Ï(q')
ãšããfãq mod m/q'
ã®ä¹æ°çäœæ°(multiplicative order)ãšãããæ¬¡ã«Qiãn/<ef>
åã®çŽ ã€ãã¢ã«ãšãããš<q>=prod(Qi^e)
ãæãç«ã€ãå
·äœçã«ã¯ããããã®ã€ãã¢ã«ã¯Qi=<q,Fi(ζ)>
ã§äžãããããããã§ÎŠ_m(x) = prod(Fi(x))^e
ã¯ãååå€é
åŒÎŠ_m(x) mod q
(ããªãã¡Z_q[x]
)ããã¢ããã¯æ¢çŽå€é
åŒFi(x)
ãžã®åè§£ã§ãããïŒãã®åè§£ã¯å¹ççã«èšç®ã§ããç¹ã«æ³šæãïŒ
ç¹ã«ãæŽæ°ã«ãããŠã¯çŽ æ°qã¯1 mod m
ãšååãªã®ã§ãe = f = 1
ãåŸããããäœZ_q
ã¯åå
Ï
ã®mæ¬¡æ ¹(primitive m-th root of unity omwga)ããã€ïŒãªããªãZ_qã®ä¹æ³çŸ€ã¯äœæ°q-1ã§å·¡åããïŒãZ_q[x]
ã§ÎŠ_m(x)
ã¯ÎŠ(x) = prod(x - Ï^i) for i â Z*_m
ã«åè§£ããããã€ãã¢ã«<q>
ã¯ãnåã®äž»ã€ãã¢ã«ã«å®å
šã«åè§£ããããQi = <q, ζ-Ï^i>
ãçŽ ã§ãããã«ã qããã€ã
次ã®è£é¡ã¯ãèªå·±ååÏ_k
ãçŽ ã€ãã¢ã«Q_iäžã§ãæšç§»çãã§ãããšäž»åŒµãããããªãã¡ãããèªå·±ååÏ_k
ã«ãã£ãŠQiã¯Qjã«çœ®æãããããã®è£é¡ã¯ãååäœãQã®ã¬ãã¢æ¡åŒµã§ããããšããçŽæ¥åŸããããããã§ã¯åºæ¬çãªèšŒæã瀺ãã
è£é¡ 2.16 äžã®è¡šèšã䜿ããšãä»»æã®i,j â Z*_m
ã«å¯ŸããŠÏ_j(Qi) = Q_{i/j}
ãåŸãããã
蚌æ å®çŸ©ããÏ_j(qi) = Ï_j(<q, ζ - Ï^i>) = <q, ζ^j - Ï^i>
ã§ãããæ¬¡ãåŸãããã
ζ^j - Ï^i = ζ^j - (Ï^{i/j})^j = (ζ - Ï^{i/j})*(ζ^{j-1} + Ï^{i/j} * ζ^{j-2} + ... + (Ï^{i/j})^{j-1}) mod q
ããã§å³ã®åèšã¯ O_K ã§èšç®ããããã€ãŸãÏ_j(Qi) â <q, ζ - Ï^{i/j}> = Q_{i/j}
ã§ããã
åæ§ã«Î¶ - Ï^{i/j} = (ζ^j)^{1/j} - (Ï^i)^{1/j}
ã¯Î¶^j - Ï^i
ã®åæ°ãšããŠåè§£ãããã®ã§ãQ_{i/j} â <q, ζ^j - Ï^i> = Ï_j(Qi)
ãæãç«ã€ã