日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

格密码学基础

發(fā)布時(shí)間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 格密码学基础 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

格密碼學(xué)—Lattice-based Crypto 是現(xiàn)在比較火的一個(gè)密碼學(xué)分支,而且本身擁有抵抗量子計(jì)算的特性。在即將到來的NIST后量子時(shí)代加密算法標(biāo)準(zhǔn)化討論中,基于格的加密體系就是其中的一個(gè)選擇之一。其實(shí)想要理解格密碼學(xué)非常簡(jiǎn)單,只需要一些最基本的線性代數(shù)知識(shí)。

格密碼學(xué)就是基于格(Lattice)和格上的一些問題而定義的一套密碼學(xué)體系。

關(guān)于基礎(chǔ)數(shù)學(xué)知識(shí)及入門可參考:https://zhuanlan.zhihu.com/p/150920501

格密碼

線性獨(dú)立空間上有集合 v1,?,vn∈Rnv_1,\cdots,v_n \in \mathbb{R}^nv1?,?,vn?Rn,格(Lattices)就是這些向量的線性組合,用公式表示為:

L={a1v1+a2v2+?+anvn∣a1,a2,?,an∈Z}L=\{a_1v_1+a_2v_2+\cdots+a_nv_n \mid a_1,a_2,\cdots,a_n \in \mathbb{Z}\}L={a1?v1?+a2?v2?+?+an?vn?a1?,a2?,?,an?Z}

LLL 的維數(shù)等于格中向量的個(gè)數(shù)。

假定 v1,v2,?,vnv_1,v_2,\cdots,v_nv1?,v2?,?,vn? 是格 LLL 的基,w1,w2,?,wn∈Lw_1,w_2,\cdots,w_n \in Lw1?,w2?,?,wn?L,則必然存在整系數(shù) aija_{ij}aij? 使得:

{w1=a11v1+a12v2+?+a1nvnw2=a21v1+a22v2+?+a2nvn?wn=an1v1+an2v2+?+annvn\begin{cases} w_1=a_{11}v_1+a_{12}v_2+\cdots+a_{1n}v_n \\ w_2=a_{21}v_1+a_{22}v_2+\cdots+a_{2n}v_n \\ \vdots \\ w_n=a_{n1}v_1+a_{n2}v_2+\cdots+a_{nn}v_n \end{cases}????????????w1?=a11?v1?+a12?v2?+?+a1n?vn?w2?=a21?v1?+a22?v2?+?+a2n?vn??wn?=an1?v1?+an2?v2?+?+ann?vn??

這樣,格的問題就是矩陣運(yùn)算了。

最短向量問題(SVP,The Shortest Vector Problem):

尋找一個(gè)格 LLL 中最短的非零向量。即,尋找一個(gè) v∈Lv \in LvL 滿足其歐幾里德范數(shù) ∣∣v∣∣\mid\mid v \mid\midv 最小。

最接近向量問題(CVP,The Closest Vector Problem):

對(duì)于一個(gè)非格 LLL 中的向量 www,在格中尋找一個(gè)向量 vvv,使得 ∣∣w?v∣∣\mid\mid w-v \mid\midw?v 最小。

NTRU格密碼

NTRU(Number Theory Research Unit)是一種基于多項(xiàng)式環(huán)構(gòu)造的公鑰密碼體制,1996年由J.Hofftstein、J.Pipher、J.H.Sliverman三位數(shù)學(xué)教授設(shè)計(jì),可抵抗量子計(jì)算機(jī)的攻擊。NTRU的優(yōu)點(diǎn)是密鑰短且容易生成,加密、解密的速度快,所需存儲(chǔ)空間小,不足之處是解密可能出錯(cuò)。

NTRU是一個(gè)帶有專利保護(hù)的開源公開密鑰加密系統(tǒng),使用基于格的加密算法來加密數(shù)據(jù)。它包括兩部分算法:NTRUEncrypt用來加密,NTRUSign用來進(jìn)行數(shù)字簽名。與其他流行的公鑰加密系統(tǒng)不同,它可以防止被Shor算法破解,并顯著提升了性能。在同等加密強(qiáng)度下,NTRU執(zhí)行大開銷的私鑰操作比RSA算法快得多。

NTRU密碼體制,需要三個(gè)整數(shù)參數(shù) (n,p,q)(n,p,q)(n,p,q) 和四個(gè)次數(shù)為 n?1n-1n?1 的整系數(shù)多項(xiàng)式集合 Lf,Lg,Lφ,LmL_f,L_g,L_{\varphi},L_mLf?,Lg?,Lφ?,Lm?;其中 nnn 為素?cái)?shù),p,qp,qp,q 可以不必為素?cái)?shù),但要求 gcd?(p,q)=1\gcd(p,q)=1gcd(p,q)=1,且 qqq 遠(yuǎn)大于 ppp。其中n=263,503n=263,503n=263,503時(shí),安全性分別與RSA1024、RSA2048相當(dāng)。

NTRU工作于多項(xiàng)式整數(shù)環(huán) R=Z[x]/(xn?1)\mathbb{R}=\mathbb{Z}[x]/(x^n-1)R=Z[x]/(xn?1),表示系數(shù)小于N的整系數(shù)多項(xiàng)式全體,環(huán)中的元素f(x)=fn?1xn?1+…+f1x+f0,g(x)=gn?1xn?1+…+g1x+g0f(x)=f_{n-1}x^{n-1}+…+f_1x+f_0,g(x)=g_{n-1}x^{n-1}+…+g_1x+g_0f(x)=fn?1?xn?1++f1?x+f0?,g(x)=gn?1?xn?1++g1?x+g0?,定義運(yùn)算為

f(x)+g(x)=(fn?1+gn?1)xn?1+…+(f1+g1)x+(f0+g0)f(x)+g(x)=(f_{n-1}+g_{n-1})x^{n-1}+…+(f_1+g_1)x+(f_0+g_0)f(x)+g(x)=(fn?1?+gn?1?)xn?1++(f1?+g1?)x+(f0?+g0?)
f(x)?g(x)=f(x)g(x)(modxn?1)=∑i=1n?1(∑s+t≡i(modn)fsgt)xif(x)*g(x)=f(x)g(x) (mod x^n-1)=\sum\limits_{i=1}^{n-1}(\sum\limits_{s+t\equiv i \pmod n} f_sg_t)x^if(x)?g(x)=f(x)g(x)(modxn?1)=i=1n?1?(s+ti(modn)?fs?gt?)xi

L(d1,d2)={F∈R:FL(d_1,d_2)=\{F \in \mathbb{R}:FL(d1?,d2?)={FR:Fd1d_1d1? 個(gè)系數(shù)為 111d2d_2d2? 個(gè)系數(shù)為 ?1-1?1,其余為 0}0\}0},選取三個(gè)確定的整數(shù) df,dg,dφd_f,d_g,d_{\varphi}df?,dg?,dφ?,多項(xiàng)式集合 Lf=L(df,df?1),Lg=L(dg,dg),Lφ=L(dφ,dφ)L_f=L(d_f,d_{f-1}),L_g=L(d_g,d_g),L_{\varphi}=L(d_{\varphi},d_{\varphi})Lf?=L(df?,df?1?),Lg?=L(dg?,dg?),Lφ?=L(dφ?,dφ?),而 Lm={m∈R:mL_m=\{m \in \mathbb{R}:mLm?={mR:m 的系數(shù)位于區(qū)間 [?p?12,p?12][-\cfrac{p-1}{2},\cfrac{p-1}{2}][?2p?1?,2p?1?],其中 ppp 為素?cái)?shù) }\}}

密鑰生成

隨機(jī)選擇兩個(gè)小多項(xiàng)式 fffggg(系數(shù)時(shí)稀疏的,即系數(shù)中0的比例很高),f∈Lf,g∈Lgf\in L_f,g\in L_gfLf?,gLg?

可算出fff對(duì)modp\mod pmodpmodq\mod qmodq 的逆元FpF_pFp?FqF_qFq?

Fq?f≡1(modq)和Fp?f≡1(modp)Fq*f≡1\pmod q和Fp*f≡1\pmod pFq?f1(modq)Fp?f1(modp)

因此, fff 首先應(yīng)滿足 gcd?(f(1),pq)=1\gcd(f(1),pq)=1gcd(f(1),pq)=1,如果有一個(gè)逆不存在,需重新選擇 fff

然后,計(jì)算 h≡pFq?g(modq)h \equiv pF_q * g \pmod qhpFq??g(modq),則公鑰為 hhh,私鑰為 (f,Fq)(f,F_q)(f,Fq?)

加密

假設(shè)A想發(fā)送信息 m∈Lmm \in L_mmLm? 給B,他將根據(jù)參數(shù) dφd_{\varphi}dφ? 隨機(jī)選擇一個(gè) φ∈Lφ\varphi \in L_{\varphi}φLφ?,然后,利用B的公鑰 hhh 計(jì)算密文 c≡φ?h+m(modq)c \equiv \varphi * h+m \pmod qcφ?h+m(modq)

解密

當(dāng)B收到密文 ccc 后,他首先利用私鑰 fff 計(jì)算 a≡f?c(modq)a \equiv f * c \pmod qaf?c(modq)

選擇 aaa 的系數(shù)位于 [?q2,q2][-\cfrac{q}{2},\cfrac{q}{2}][?2q?,2q?] 之間,然后計(jì)算

e≡Fp?a(modp)e \equiv F_p* a \pmod peFp??a(modp)

則多項(xiàng)式 eee 就是明文 mmm

例題
(深育杯)

from Crypto.Util.number import * import gmpy2 from flag import flagdef generate():p = getStrongPrime(2048)while True:f = getRandomNBitInteger(1024)g = getStrongPrime(768)h = gmpy2.invert(f, p) * g % preturn (p, f, g, h)def encrypt(plaintext, p, h):m = bytes_to_long(plaintext)r = getRandomNBitInteger(1024)c = (r * h + m) % preturn cp, f, g, h = generate() c = encrypt(flag, p, h) with open("cipher.txt", "w") as f:f.write("h = " + str(h) + "\n")f.write("p = " + str(p) + "\n")f.write("c = " + str(c) + "\n")

from gmpy2 import * h = 3967900409518491437091166715380802161532841159072519563471354336400750930009970177101953304861954502146570721506995224520631716261108071684882841102381144720177664434981608584075201907891964214604246219441325377602163957172642582158192223452845671007585556951922415200415538060247456213608112360361636912703380306386439846269645696750929811607783895294670639202472465920599542568227657152922843001792754116981992696203788298740550812661583820191877594185184758074771316815650833195023325150218113883046328740408517222933980589974912467363367727038230703152354450353199257411964288022409128890352346036423792759938468964462267528727695183747947515480432786669353434638860350849296620606820894819933050645748656981993408399675189724419997805599649975500093890450393421897803267909569938850674774386012819838940544502656293639875120854745249463561940935651895728242282430164407574626178693654713011323376912585958110558532953333 p = 4407206782832544188667944201727813617189883940490534227436068867901196311508151544316989531306678865408607390128649278629254128753967046691736522108356971272311308455619879297358588727267184200777923695048248757115057072357087881336680504033511958280710547178971268670442650871890760916203109226852889599638484429889898210426540567794020013920566784973281560628666918122674783539653720295629054898529900882965691587718212291373734218555167591690910246380516121338139063419587750344469214004539520017140593342859857394308703001939640899189432836134392830208318268131639318655382175643272565186884496188876341460968563623529229713790076050095498053846983536874648190033735162809614805624209827336432223553914651838063614534617044557310972056169869738746432924853953258079006936103497626054364115282007843847693813896856977882285910369660539092462408790126385881581833165309032853389777355480169212478669139225609058338565029211 c = 4052491539376955553220568757544621659293304958837707160681090710624505862889512520190589879197831394720145909992216099963759496125523078969015706069688556356682711471641851937470179182960755800968587551608595725470945584970094036299764623894583379909329996337429067328575804567222496890803396234507278490116354758303807070775249711087938549824010697869930856205244006491475201993228121418890520174179969294094963249013786611889790711801269524919695653453576043288934196952437164829830756439734795068980207758771052483500272264363028346668629397497794792110170275173209377114274164087320163340547019935562316429227119346802124620682293405375798340275679831750482339301440428527223801872439611461272229275824994734898078664180541096159146759378804836952981089673755590353588900522455968721971944276318473421193690310601002295637581030417570868955379815661133148339565983621730401675643094909263098778572081973142223744746526672M = Matrix([[1, h], [0, p]])fg = M.LLL()[0] f, g = abs(fg[0]), abs(fg[1]) m = (c * f % p) * invert(f, g) * invert(f, g) % gprint(bytes.fromhex(hex(m)[2:]))

GGH加密

1997年,Goldreich、Goldwasser、Halevi三人受Ajtai在格難題上的研究所啟發(fā),提出了一個(gè)基于格中最近向量難題的非對(duì)稱密碼學(xué)算法:GGH Cryptosystem。

1999年,Nguyen發(fā)現(xiàn)在這個(gè)密碼學(xué)算法設(shè)計(jì)中,有一個(gè)很大的缺陷,可以使攻擊者從密文中獲取到明文的部分信息,且可以將原來的最近向量難題轉(zhuǎn)化為一個(gè)較為簡(jiǎn)單的最近向量難題。基于這個(gè)觀察,Nguyen解出了設(shè)計(jì)者放在網(wǎng)上的5個(gè)challenge中的4個(gè)(其中有2個(gè)被設(shè)計(jì)者認(rèn)為是不可能攻破的),足以證明該密碼算法是broken的。

定義
GGH包含一個(gè)私鑰和一個(gè)公鑰,選取格 LLL 的一組好基 BBB 和一個(gè)幺模矩陣 UUU 作為私鑰,計(jì)算 LLL 的另一組基 B’=UBB’=UBB=UB 作為公鑰。

選定 MMM 值,明文向量 (m1,m2,?,mn),mi∈(?M,M)(m_1,m_2,\cdots,m_n), \quad m_i \in(-M,M)(m1?,m2?,?,mn?),mi?(?M,M)

加密
給定明文 m=(m1,m2,?,mn)m=(m_1,m_2,\cdots,m_n)m=(m1?,m2?,?,mn?),誤差向量 eee,和公鑰 B’B’B,計(jì)算 v=m?B’=∑mibi’v=m \cdot B’=\displaystyle\sum m_ib_i’v=m?B=mi?bi?
密文 c=v+e=m?B’+ec=v+e=m \cdot B’+ec=v+e=m?B+e

解密
計(jì)算 c?B?1=(m?B’+e)B?1=m?U?B?B?1+e?B?1=m?U+e?B?1c \cdot B^{-1}=(m \cdot B’+e)B^{-1}=m \cdot U \cdot B \cdot B^{-1}+e \cdot B^{-1}=m \cdot U+e \cdot B^{-1}c?B?1=(m?B+e)B?1=m?U?B?B?1+e?B?1=m?U+e?B?1
如果 e?B?1e \cdot B^{-1}e?B?1 足夠小,可利用Babai最近平面算法的變種Babai rounding technique去除;
最后計(jì)算 m=m?U?U?1m=m \cdot U \cdot U^{-1}m=m?U?U?1 得到明文。

GGH中的誤差向量的選取是3或者-3。

參考
https://lazzzaro.github.io/2020/11/07/crypto-%E6%A0%BC%E5%AF%86%E7%A0%81/

https://4xwi11.github.io/posts/a2b6ecd3/

總結(jié)

以上是生活随笔為你收集整理的格密码学基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 大尺度摸揉捏胸床戏视频 | 陪读偷伦初尝小说 | 九九热视频精品 | 日韩中文字幕在线观看视频 | 韩国av免费观看 | 又黄又爽在线观看 | 色婷婷激情av | 国产黄av| 六月丁香综合网 | 亚洲成人中文字幕 | 欧美黑人狂野猛交老妇 | 糖心av | 国内精品视频在线观看 | 欧美熟妇精品黑人巨大一二三区 | 精品亚洲aⅴ无码一区二区三区 | 黄色一级视频在线观看 | 国产成人综合视频 | 亚洲国产果冻传媒av在线观看 | 天天舔天天操 | 18男女无套免费视频 | 中文字幕在线官网 | 一区二区三区色 | 国产三级影院 | 日本成人一区二区三区 | 国产3p精品一区 | 国产女人水真多18毛片18精品 | 一级特黄毛片 | 女人性做爰24姿势视频 | 国产午夜精品福利 | 亚洲丁香| 国产又粗又猛又爽又黄91精品 | 依人成人| 成人在线国产 | 美女mm131爽爽爽免费动视频 | 高清国产一区二区 | 天天做天天射 | 一区二区三区xxx | 天天干网址 | 欧美激情片在线观看 | 女同一区二区 | 色婷婷国产 | 黄色正能量网站 | 午夜在线一区二区三区 | 成人网在线视频 | 精品网站999 | 一区二区精品视频 | 久久99国产精品 | 伊人久久综合影院 | 影音先锋中文字幕第一页 | av直播在线观看 | 日韩欧美中出 | 亚欧精品在线观看 | www中文字幕 | 青青草原影视 | 啪啪免费视频网站 | 免费av看片 | 欧美在线免费视频 | 自拍视频网址 | 亚洲天堂影院在线观看 | 欧美com| 久久激情小说 | 国产欧美一区二区在线观看 | 免费黄色小视频 | 久久综合91| 3级av | 丰满少妇一区二区三区专区 | av黄色网址| 日韩无码精品一区二区三区 | 国产一区二区观看 | 综合色播 | 91在线公开视频 | 国产又粗又猛又爽又黄的网站 | 国产精品国产精品国产 | 狂野少女电影在线观看国语版免费 | 午夜精品av | 国产精品www | 特及毛片 | 五月少妇 | 综合久久精品 | 亚洲精品国产精品国自产 | 一级裸体片 | 久久99久久99精品 | 久久国产精品网 | 亚洲色成人www永久网站 | 三级视频在线 | 免费观看毛片网站 | 欧美成人免费一级人片100 | 色偷偷网站 | 日本福利在线观看 | 欧美精品手机在线 | 国产老女人乱淫免费可以 | 五月天天| av中文字幕一区二区 | 九九久久国产 | 韩国精品av | 少妇免费看 | 一区二区在线免费观看视频 | 91看片在线看 | 国产精品成人自拍 |