低指数加密指数广播攻击

原型介绍:

低指数加密指数广播攻击(Low-Exponent RSA Broadcast Attack)是一种针对低指数RSA加密算法的攻击方法。

例题引入:

下面展示一些 内联代码片
NSS复现

[鹤城杯 2021]Crazy_Rsa_Tech
from Crypto.Util.number import *
from Crypto.Util.Padding import *FLAG = bytes_to_long(pad(b"flag{??????}",64))
def init_key():p, q = getPrime(512), getPrime(512)n = p*qe = 9while(GCD((p-1)*(q-1),e)!=1):p, q = getPrime(512), getPrime(512)n = p*qd = inverse(e,(p-1)*(q-1))return n,e,dn_list=list()
c_list=list()
for i in range(9):N,e,d=init_key()n_list.append(N)c=pow(FLAG,e,N)c_list.append(pow(FLAG,e,N))assert(pow(c,d,N)==FLAG)
print("n_list:",n_list)
print("c_list:",c_list)

output

n_list: [71189786319102608575263218254922479901008514616376166401353025325668690465852130559783959409002115897148828732231478529655075366072137059589917001875303598680931962384468363842379833044123189276199264340224973914079447846845897807085694711541719515881377391200011269924562049643835131619086349617062034608799, 92503831027754984321994282254005318198418454777812045042619263533423066848097985191386666241913483806726751133691867010696758828674382946375162423033994046273252417389169779506788545647848951018539441971140081528915876529645525880324658212147388232683347292192795975558548712504744297104487514691170935149949, 100993952830138414466948640139083231443558390127247779484027818354177479632421980458019929149817002579508423291678953554090956334137167905685261724759487245658147039684536216616744746196651390112540237050493468689520465897258378216693418610879245129435268327315158194612110422630337395790254881602124839071919, 59138293747457431012165762343997972673625934330232909935732464725128776212729547237438509546925172847581735769773563840639187946741161318153031173864953372796950422229629824699580131369991913883136821374596762214064774480548532035315344368010507644630655604478651898097886873485265848973185431559958627423847, 66827868958054485359731420968595906328820823695638132426084478524423658597714990545142120448668257273436546456116147999073797943388584861050133103137697812149742551913704341990467090049650721713913812069904136198912314243175309387952328961054617877059134151915723594900209641163321839502908705301293546584147, 120940513339890268554625391482989102665030083707530690312336379356969219966820079510946652021721814016286307318930536030308296265425674637215009052078834615196224917417698019787514831973471113022781129000531459800329018133248426080717653298100515701379374786486337920294380753805825328119757649844054966712377, 72186594495190221129349814154999705524005203343018940547856004977368023856950836974465616291478257156860734574686154136925776069045232149725101769594505766718123155028300703627531567850035682448632166309129911061492630709698934310123778699316856399909549674138453085885820110724923723830686564968967391721281, 69105037583161467265649176715175579387938714721653281201847973223975467813529036844308693237404592381480367515044829190066606146105800243199497182114398931410844901178842049915914390117503986044951461783780327749665912369177733246873697481544777183820939967036346862056795919812693669387731294595126647751951, 76194219445824867986050004226602973283400885106636660263597964027139613163638212828932901192009131346530898961165310615466747046710743013409318156266326090650584190382130795884514074647833949281109675170830565650006906028402714868781834693473191228256626654011772428115359653448111208831188721505467497494581]
c_list: [62580922178008480377006528793506649089253164524883696044759651305970802215270721223149734532870729533611357047595181907404222690394917605617029675103788705320032707977225447998111744887898039756375876685711148857676502670812333076878964148863713993853526715855758799502735753454247721711366497722251078739585, 46186240819076690248235492196228128599822002268014359444368898414937734806009161030424589993541799877081745454934484263188270879142125136786221625234555265815513136730416539407710862948861531339065039071959576035606192732936477944770308784472646015244527805057990939765708793705044236665364664490419874206900, 85756449024868529058704599481168414715291172247059370174556127800630896693021701121075838517372920466708826412897794900729896389468152213884232173410022054605870785910461728567377769960823103334874807744107855490558726013068890632637193410610478514663078901021307258078678427928255699031215654693270240640198, 14388767329946097216670270960679686032536707277732968784379505904021622612991917314721678940833050736745004078559116326396233622519356703639737886289595860359630019239654690312132039876082685046329079266785042428947147658321799501605837784127004536996628492065409017175037161261039765340032473048737319069656, 1143736792108232890306863524988028098730927600066491485326214420279375304665896453544100447027809433141790331191324806205845009336228331138326163746853197990596700523328423791764843694671580875538251166864957646807184041817863314204516355683663859246677105132100377322669627893863885482167305919925159944839, 2978800921927631161807562509445310353414810029862911925227583943849942080514132963605492727604495513988707849133045851539412276254555228149742924149242124724864770049898278052042163392380895275970574317984638058768854065506927848951716677514095183559625442889028813635385408810698294574175092159389388091981, 16200944263352278316040095503540249310705602580329203494665614035841657418101517016718103326928336623132935178377208651067093136976383774189554806135146237406248538919915426183225265103769259990252162411307338473817114996409705345401251435268136647166395894099897737607312110866874944619080871831772376466376, 31551601425575677138046998360378916515711528548963089502535903329268089950335615563205720969393649713416910860593823506545030969355111753902391336139384464585775439245735448030993755229554555004154084649002801255396359097917380427525820249562148313977941413268787799534165652742114031759562268691233834820996, 25288164985739570635307839193110091356864302148147148153228604718807817833935053919412276187989509493755136905193728864674684139319708358686431424793278248263545370628718355096523088238513079652226028236137381367215156975121794485995030822902933639803569133458328681148758392333073624280222354763268512333515]

由题目代码我们可以得到九组n,c数据,以及知晓加密指数e为9
一眼鉴定为低指数加密广播攻击
已知条件为
c 1 ≡ m 9 m o d n 1 c 2 ≡ m 9 m o d n 2 c 3 ≡ m 9 m o d n 3 c 4 ≡ m 9 m o d n 4 ⋯ c 9 ≡ m 9 m o d n 9 m b i t s = 48 ∗ 8 = 512 m b i t s 9 = 512 ∗ 9 n b i t s = 1024 c_1 \equiv m^9 mod\ n_1\\ c_2 \equiv m^9 mod\ n_2\\ c_3 \equiv m^9 mod\ n_3\\ c_4 \equiv m^9 mod\ n_4\\ \cdots\\ c_9 \equiv m^9 mod\ n_9\\ m_{bits}\ = 48*8=512 \\m^9_{bits}=512*9 \\n_{bits}=1024 c1​≡m9mod n1​c2​≡m9mod n2​c3​≡m9mod n3​c4​≡m9mod n4​⋯c9​≡m9mod n9​mbits​ =48∗8=512mbits9​=512∗9nbits​=1024
由CRT定理,理论上仅需要5组n,c的数据即可获取 m 9 m^9 m9,因为仅需5组数据即可将范围化到512*10个bit

下面开始代码测试

from functools import reduce
import gmpy2
n_list=[71189786319102608575263218254922479901008514616376166401353025325668690465852130559783959409002115897148828732231478529655075366072137059589917001875303598680931962384468363842379833044123189276199264340224973914079447846845897807085694711541719515881377391200011269924562049643835131619086349617062034608799, 92503831027754984321994282254005318198418454777812045042619263533423066848097985191386666241913483806726751133691867010696758828674382946375162423033994046273252417389169779506788545647848951018539441971140081528915876529645525880324658212147388232683347292192795975558548712504744297104487514691170935149949, 100993952830138414466948640139083231443558390127247779484027818354177479632421980458019929149817002579508423291678953554090956334137167905685261724759487245658147039684536216616744746196651390112540237050493468689520465897258378216693418610879245129435268327315158194612110422630337395790254881602124839071919, 59138293747457431012165762343997972673625934330232909935732464725128776212729547237438509546925172847581735769773563840639187946741161318153031173864953372796950422229629824699580131369991913883136821374596762214064774480548532035315344368010507644630655604478651898097886873485265848973185431559958627423847, 66827868958054485359731420968595906328820823695638132426084478524423658597714990545142120448668257273436546456116147999073797943388584861050133103137697812149742551913704341990467090049650721713913812069904136198912314243175309387952328961054617877059134151915723594900209641163321839502908705301293546584147, 120940513339890268554625391482989102665030083707530690312336379356969219966820079510946652021721814016286307318930536030308296265425674637215009052078834615196224917417698019787514831973471113022781129000531459800329018133248426080717653298100515701379374786486337920294380753805825328119757649844054966712377, 72186594495190221129349814154999705524005203343018940547856004977368023856950836974465616291478257156860734574686154136925776069045232149725101769594505766718123155028300703627531567850035682448632166309129911061492630709698934310123778699316856399909549674138453085885820110724923723830686564968967391721281, 69105037583161467265649176715175579387938714721653281201847973223975467813529036844308693237404592381480367515044829190066606146105800243199497182114398931410844901178842049915914390117503986044951461783780327749665912369177733246873697481544777183820939967036346862056795919812693669387731294595126647751951, 76194219445824867986050004226602973283400885106636660263597964027139613163638212828932901192009131346530898961165310615466747046710743013409318156266326090650584190382130795884514074647833949281109675170830565650006906028402714868781834693473191228256626654011772428115359653448111208831188721505467497494581]
c_list=[62580922178008480377006528793506649089253164524883696044759651305970802215270721223149734532870729533611357047595181907404222690394917605617029675103788705320032707977225447998111744887898039756375876685711148857676502670812333076878964148863713993853526715855758799502735753454247721711366497722251078739585, 46186240819076690248235492196228128599822002268014359444368898414937734806009161030424589993541799877081745454934484263188270879142125136786221625234555265815513136730416539407710862948861531339065039071959576035606192732936477944770308784472646015244527805057990939765708793705044236665364664490419874206900, 85756449024868529058704599481168414715291172247059370174556127800630896693021701121075838517372920466708826412897794900729896389468152213884232173410022054605870785910461728567377769960823103334874807744107855490558726013068890632637193410610478514663078901021307258078678427928255699031215654693270240640198, 14388767329946097216670270960679686032536707277732968784379505904021622612991917314721678940833050736745004078559116326396233622519356703639737886289595860359630019239654690312132039876082685046329079266785042428947147658321799501605837784127004536996628492065409017175037161261039765340032473048737319069656, 1143736792108232890306863524988028098730927600066491485326214420279375304665896453544100447027809433141790331191324806205845009336228331138326163746853197990596700523328423791764843694671580875538251166864957646807184041817863314204516355683663859246677105132100377322669627893863885482167305919925159944839, 2978800921927631161807562509445310353414810029862911925227583943849942080514132963605492727604495513988707849133045851539412276254555228149742924149242124724864770049898278052042163392380895275970574317984638058768854065506927848951716677514095183559625442889028813635385408810698294574175092159389388091981, 16200944263352278316040095503540249310705602580329203494665614035841657418101517016718103326928336623132935178377208651067093136976383774189554806135146237406248538919915426183225265103769259990252162411307338473817114996409705345401251435268136647166395894099897737607312110866874944619080871831772376466376, 31551601425575677138046998360378916515711528548963089502535903329268089950335615563205720969393649713416910860593823506545030969355111753902391336139384464585775439245735448030993755229554555004154084649002801255396359097917380427525820249562148313977941413268787799534165652742114031759562268691233834820996, 25288164985739570635307839193110091356864302148147148153228604718807817833935053919412276187989509493755136905193728864674684139319708358686431424793278248263545370628718355096523088238513079652226028236137381367215156975121794485995030822902933639803569133458328681148758392333073624280222354763268512333515]
def chinese_remainder(n, a):#sum = 0prod = reduce(lambda a, b: a * b, n)for n_i, a_i in zip(n, a):p = prod // n_isum += a_i * gmpy2.invert(p, n_i) * preturn int(sum % prod)
m_9=chinese_remainder(n_list[:5],c_list[:5])
m=gmpy2.iroot(m_9,9)[0]
print(bytes.fromhex(hex(m)[2:]))
#b'flag{H0w_Fun_13_HAstads_broadca5t_AtTack!}\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16'

测试成功,确实是如此
下面将进行进一步的延伸学习

进阶学习

对于上面的
c 1 ≡ m 9 m o d n 1 c 2 ≡ m 9 m o d n 2 c 3 ≡ m 9 m o d n 3 c 4 ≡ m 9 m o d n 4 ⋯ c 9 ≡ m 9 m o d n 9 c_1 \equiv m^9 mod\ n_1\\ c_2 \equiv m^9 mod\ n_2\\ c_3 \equiv m^9 mod\ n_3\\ c_4 \equiv m^9 mod\ n_4\\ \cdots\\ c_9 \equiv m^9 mod\ n_9\\ c1​≡m9mod n1​c2​≡m9mod n2​c3​≡m9mod n3​c4​≡m9mod n4​⋯c9​≡m9mod n9​
若改为:
c 1 ≡ ( a ∗ m + x 1 ) 9 m o d n 1 c 2 ≡ ( a ∗ m + x 2 ) 9 m o d n 2 c 3 ≡ ( a ∗ m + x 3 ) 9 m o d n 3 c 4 ≡ ( a ∗ m + x 4 ) 9 m o d n 4 ⋯ c 9 ≡ ( a ∗ m + x 9 ) 9 m o d n 9 c_1 \equiv (a*m+x_1)^9 mod\ n_1\\ c_2 \equiv (a*m+x_2)^9 mod\ n_2\\ c_3 \equiv (a*m+x_3)^9 mod\ n_3\\ c_4 \equiv (a*m+x_4)^9 mod\ n_4\\ \cdots\\ c_9 \equiv (a*m+x_9)^9 mod\ n_9\\ c1​≡(a∗m+x1​)9mod n1​c2​≡(a∗m+x2​)9mod n2​c3​≡(a∗m+x3​)9mod n3​c4​≡(a∗m+x4​)9mod n4​⋯c9​≡(a∗m+x9​)9mod n9​
对m的明文进行一个拓展,再次进行加密
又该如何解决呢?

论文参考

论文参考

解决方法

例题引入

[羊城杯 2020]INVITATIONS

from Crypto.Util.number import getPrime, bytes_to_long
from secret import flag
import gmpy2
import randomdef pad(s,i):return i * pow(3,s.bit_length()) + s**2def gen_N():return getPrime(512) * getPrime(512)assert len(flag) == 54
invite = bytes_to_long(flag)e_list = [random.choice([3,5,7]) for i in range(14)]
N_list = [gen_N() for i in range(14)]with open('./invitations','w') as f:for i in range(14):invis = pow(pad(invite,i+1),e_list[i],N_list[i])f.write('Invitation%d: %d \n'%(i+1,invis))f.write('Wait a minute! \n')for i in range(14):f.write('[e%d,N%d]: [%d,%d]\n'%(i+1,i+1,e_list[i],N_list[i]))

invitations

Invitation1: 2726880165485794753015221799903015469859604350960070462389832770775190258204902795671085685627736110579803076064313238826997962227132535666379117171603278182417820587346210511971127809627876548907651538393737303011542136469304569045407566630840981287558726831003180186144633381044057099863505591978316576331
Invitation2: 52844103418322232725177561034428083147725292376614668718220523666259095447694889972949103379829470432332480992707892007073319952276490981511612735696207090391646476749895265951654074573797235607971038590694835782189124391368712277613425337912212240432011011071881837734857743183367019103096901117395938690572
Invitation3: 129274519334082165644106292383763271862424981496822335330342328217347928093592453953990448827969549377883054831490973006383371688359344675312001881631556371220779971357039899721241880304156884612458373310254854821837978876725801047977081900824202659636258168216028784656056334358157381820784576207338479493823
Invitation4: 56852637683122735164568970875066131746509133403072354742812890131597805562226047560392266004050592533316793038372256396537829143627478792510526346644756590135871716813976819138793368813440386409129373327577756689416990858633825538766694242123021009535005392002648416127869437948525458000795891155650312894218
Invitation5: 24933581882539143383805596779774030477763512752520375486982562296903063067503747125713029403793101373585417342942950790457235350083784905974251188305010098928244056980941419687746319300184530161551239060873604405554973757867815783641391659818219177575212360602858057667033472530286856616676363511656764861866
Invitation6: 7491476722927235473944826192371870577426352529433316210668760004930228302472920679959949471665143237333356259221787618020560963460668303766902416340056446225333025453011937952801159044781738493694911250765543392959285625650198325627539546777165439291150376527665779894748453633305704694635029402487576286720
Invitation7: 46994515206702516116723205176259615067102717099690856936455392000070823814544052445278146449282379251128163008476565339875497253781717590664182753552262233895322322657625202522815172174432182181682631558679857615390973133346476079858014623412440411395083299226947371458955797627789607079672039131280242758091
Invitation8: 8140023566779187828652447593867705813386781164538611122714708931585587727699213769519135028841126072130625547328311301696554048174772606261707345115571968105138543476580875347239912760797035694220505996377127309341770427102697008350472060971360460756799310951343070384766137332401117333917901167639276168214
Invitation9: 8385766476371753553977800353128766303065572190592509929058486984964439147256960481698015327599879810752997804957814193113184978479627127131318723231581432235920975812354556190022727375961505764199831794239507708621401077801662954349957627630157786326057704380977697746043041515978455150985893713987598581167
Invitation10: 25434511525127530194830986592289179576070740435049947678930286998924519588985583799757299734846614343604661534391991096353170465467791358514448923161460366596251448937540153262731348684727026598527904328268639060306102090278287818149679940661579357649191023269947102746200467430583428889484549034314463114080
Invitation11: 9435583236354598287661880148272717764447540972316605192855157484524753847806158586224733743434644389385148450722945845355791145016665856388503878165725148745517696840251674049929524448078129458846254866804153080766917319923905682824180976106679633180818527967145571143203594244851742143986040226240019541346
Invitation12: 42653412322252936189967169320174001935456500265020295381235749570735595316912049949245536609634786767873783560657460914097412643705264107040560389003526999720357122717443215007182355846769697457076620951388839672721527406861414375682603373503445636748304326212654026233985520038237509837611802457243967916967
Invitation13: 50163996128508874413636370533324079468893191391677157815578286348174669089976633631417431754505804284298354381223186985949160012660340790440711469708712479223582014168361667639570586425626182863344576254691662799762136734638820942002509860333817967414572002225418810272184173820322912928927789061077468994953
Invitation14: 55181712049788569218094734913693030675622116883683701002270524678292896232044695586872582672159854063365203462010143885417632291300773699604618481578372258936513301821561273604986211363808846581429372811764533701610119228124866223770584249909429743735157839245622925997548481946831963456454939343358587988983
Wait a minute!
[e1,N1]: [5,90361246179367799606636863352077187566064794796456461177972505143929614628873639223638940051613378291778175724735519020067052934403115774679961661481160141872257338930620863078688082915958381094674423803586734810828570206667419458295735288184697613296663226516640069281835035704453280781694226293902395215269]
[e2,N2]: [5,83202136479583179143205059354864808364257451670037867814548678142629716115373207061455185843132942837300718212806534861585785041547496145915392175827479376792813058845422044909477892978293495048968520853100992244672416436363272286740068846609018921112995562647093952700070707124842514243806528982910520604851]
[e3,N3]: [3,146694460234280339612721415368435987068740712812770728817136582256341063038147863645902264969297892447333024201649306207442798919845916187823646745721109151386096190207317810424580842120750075213595282979568495342617919336417068886973047979116994072272482630372638964064972815256237040541007947708358680368391]
[e4,N4]: [7,145212137982314671207105886550619275956842416412937060552686822638155412950680057688522218990023473104787006548449644240065948769143660097622695125682017688804838701293738298008178105057147539522368965730223561911750657089352591376219016726977232279206451303896573325330139830440927228125810665303608828462177]
[e5,N5]: [5,69335368232766044823545542187513771534967902179150417021053554241638095909666122935053210964003511014870892979205875153115719406287728162111662254890513324436473313860142126335197489227724691042286796058111753972895113145188906829975189506125997319609609974126645475084944238417929532560409919420929255247813]
[e6,N6]: [5,93889543065608951579836429313520485233295158467296710329997599807630401722519056218864031741675898621375735347229494633577571323057785261271373295860331130588582231771193563731092603614818963592931492474988532068227153492022582339704874613690044001529412669510094771064646843676765163737757104643318364446839]
[e7,N7]: [7,66174700839404221060785862467924299511645570336361033287335855493589093141782896451863402373425798838446538369142584932156150350565382116869446083154097803842190010954019565857767923584979615770650706675094209251111816761431713779074557571353022624477001770694207393369796369620048999514683357963227119554487]
[e8,N8]: [3,65031485534704406281490718325237831433086480239135617407356760819741796565231283220528137697949585150709734732370203390254643835828984376427852793969716489016520923272675090536677771074867975287284694860155903327351119710765174437247599498342292671117884858621418276613385329637307269711179183430246951756029]
[e9,N9]: [5,72454311940971803130612024751128556938725737742029062979349607787083978826668706819793864356790325653817555839762732164812521831864626411495002267399139766907846534945632792910468487287154661692733986224962564621615361536373173705359255153606552352581704159462310354407361311378558150604159961029937052901709]
[e10,N10]: [3,126172075578367446151297289668746433680600889845504078949758568698284471307000358407453139846282095477016675769468273204536898117467559575203458221600341760844973676129445394999861380625435418853474246813202182316736885441120197888145039130477114127079444939102267586634051045795627433724810346460217871661901]
[e11,N11]: [3,75691424835079457343374072990750986689075078863640186724151061449621926239051140991748483370587430224317778303489124525034113533087612981452189061743589227565099659070008017454957304620495920813121234552401715857719372861565651204968408267740732475458128601061676264465241188491988485848198323410127587280471]
[e12,N12]: [7,88063052818271125442049408332053226451497067720511502513828848476569985821115735898897947439175727789641390104005400308936768495751619165683456550165811034670341697022370415202614387373196086237042577737857259724530596416810462125219296930758592032765843338961894697491961439584875235274163072466474940670589]
[e13,N13]: [5,86478932133708863968749977073639049451666195461247968321317885106346907736572028122496476049748246757185316498949163898915427948597498506162230927380667345132742891001640364064647368394822175742973968167028656790729030556005407153405955458636780270673780720333871959638216946584461925553782697695137132507853]
[e14,N14]: [7,137641493263428303662262187582231235637921833879366309318941383348412296182252654397496377642861646991438721153462001357875169325595544056465299787575422581289053630686684843044593163904089201855371863459503176022957832807726507152235818181000484878683030989944063049622694810207054366378176225221479695833371]

在这里我们可以获得多组n,c数据,其中一共由4组e=3的数据,
由此可知晓,我们可以取e=3的四组数据作为求解数据,由此通过CRT定理可以划出的范围得到我们需要的数据。
c i ≡ M i 3 m o d n i M i = i ∗ 3 b i t _ l e n g t h + m 2 c i − M i 3 = k n i 转化为 c 1 − M 1 3 = k n 1 c 2 − M 2 3 = k n 2 c 3 − M 3 3 = k n 3 通过 C R T 获得数组 T = [ t 1 , t 2 , t 3 , t 4 ] 使得满足 : t 1 ≡ 1 m o d n 1 t 1 ≡ 0 m o d n 2 t 1 ≡ 0 m o d n 3 t 1 ≡ 0 m o d n 4 ⋯ t 4 ≡ 0 m o d n 1 t 4 ≡ 0 m o d n 2 t 4 ≡ 0 m o d n 3 t 4 ≡ 1 m o d n 4 c_i \equiv M_i^3 mod \ n_i\\ M_i=i*3^{bit\_length}+m^2\\ c_i-M_i^3= kn_i\\ 转化为\\ c_1-M_1^3= kn_1\\ c_2-M_2^3= kn_2\\ c_3-M_3^3= kn_3\\ 通过CRT获得数组T=[t_1,t_2,t_3,t_4] 使得满足:\\ t_1 \equiv 1 mod n_1\\ t_1 \equiv 0 mod n_2\\ t_1 \equiv 0 mod n_3\\ t_1 \equiv 0 mod n_4\\ \cdots\\ t_4 \equiv 0 mod n_1\\ t_4 \equiv 0 mod n_2\\ t_4 \equiv 0 mod n_3\\ t_4 \equiv 1 mod n_4\\ ci​≡Mi3​mod ni​Mi​=i∗3bit_length+m2ci​−Mi3​=kni​转化为c1​−M13​=kn1​c2​−M23​=kn2​c3​−M33​=kn3​通过CRT获得数组T=[t1​,t2​,t3​,t4​]使得满足:t1​≡1modn1​t1​≡0modn2​t1​≡0modn3​t1​≡0modn4​⋯t4​≡0modn1​t4​≡0modn2​t4​≡0modn3​t4​≡1modn4​
再次构建多项式环 p o l y n o m i a l R i n g ( Z m o d ( n 1 n 2 n 3 n 4 ) polynomialRing(Zmod(n_1n_2n_3n_4) polynomialRing(Zmod(n1​n2​n3​n4​)
满足
f = t 1 ( c 1 − M 1 3 ) + t 2 ( c 2 − M 2 3 ) + t 3 ( c 3 − M 3 3 ) + t 4 ( c 4 − M 4 3 ) f=t_1(c_1-M_1^3)+t_2(c_2-M_2^3)+t_3(c_3-M_3^3)+t_4(c_4-M_4^3) f=t1​(c1​−M13​)+t2​(c2​−M23​)+t3​(c3​−M33​)+t4​(c4​−M43​)
此时是一个关于m的一个多项式环,
m b i t = 531 m_{bit}=531 mbit​=531
达到可以进行coppersmith攻击的范围
由此,理论已经达成,开始码代码时间

SOLVE

完整代码如下

from Crypto.Util.number import *
flag=b'GWTH{'+b'x'*49
flag=bytes_to_long(flag)
k=Integer(flag).nbits()
n = [146694460234280339612721415368435987068740712812770728817136582256341063038147863645902264969297892447333024201649306207442798919845916187823646745721109151386096190207317810424580842120750075213595282979568495342617919336417068886973047979116994072272482630372638964064972815256237040541007947708358680368391,65031485534704406281490718325237831433086480239135617407356760819741796565231283220528137697949585150709734732370203390254643835828984376427852793969716489016520923272675090536677771074867975287284694860155903327351119710765174437247599498342292671117884858621418276613385329637307269711179183430246951756029,  126172075578367446151297289668746433680600889845504078949758568698284471307000358407453139846282095477016675769468273204536898117467559575203458221600341760844973676129445394999861380625435418853474246813202182316736885441120197888145039130477114127079444939102267586634051045795627433724810346460217871661901,75691424835079457343374072990750986689075078863640186724151061449621926239051140991748483370587430224317778303489124525034113533087612981452189061743589227565099659070008017454957304620495920813121234552401715857719372861565651204968408267740732475458128601061676264465241188491988485848198323410127587280471]
c = [129274519334082165644106292383763271862424981496822335330342328217347928093592453953990448827969549377883054831490973006383371688359344675312001881631556371220779971357039899721241880304156884612458373310254854821837978876725801047977081900824202659636258168216028784656056334358157381820784576207338479493823,    8140023566779187828652447593867705813386781164538611122714708931585587727699213769519135028841126072130625547328311301696554048174772606261707345115571968105138543476580875347239912760797035694220505996377127309341770427102697008350472060971360460756799310951343070384766137332401117333917901167639276168214, 25434511525127530194830986592289179576070740435049947678930286998924519588985583799757299734846614343604661534391991096353170465467791358514448923161460366596251448937540153262731348684727026598527904328268639060306102090278287818149679940661579357649191023269947102746200467430583428889484549034314463114080,    9435583236354598287661880148272717764447540972316605192855157484524753847806158586224733743434644389385148450722945845355791145016665856388503878165725148745517696840251674049929524448078129458846254866804153080766917319923905682824180976106679633180818527967145571143203594244851742143986040226240019541346]
e=3
num=[3,8,10,11]
s_=pow(3,k)
P.<x>= PolynomialRing(Zmod(prod(n)))
f0=(num[0]*s_+x**2)**e-c[0]
f1=(num[1]*s_+x**2)**e-c[1]
f2=(num[2]*s_+x**2)**e-c[2]
f3=(num[3]*s_+x**2)**e-c[3]
temp = [[1 if k == i else 0 for k in range(len(num))] for i in range(len(num))]
T =[crt(temp[i] , n) for i in range(len(num))]
f=T[0]*f0+T[1]*f1+T[2]*f2+T[3]*f3
roots=f.monic().small_roots(X=2^k,epsilon=0.05)
for i in roots:print(long_to_bytes(int(i)))

完结撒花

至此,我们对于低指数加密广播攻击学习结束,有错误的地方欢迎各位师傅前来交流。

如果我们有一个伟大的理想,有一颗善良的心,我们一定能把很多琐碎的日子堆砌起来,变成一个伟大的生命。

基于低加密指数广播攻击(Hastad攻击)的更深一步学习相关推荐

  1. 攻防世界-crypto-OldDriver(RSA低加密指数广播攻击) 方法总结

    今天遇到了一个新题型感觉有点意思记录一下; 开始 有个年轻人得到了一份密文,身为老司机的你能帮他看看么? 从题目下载附件打开~ 嗯? 这一大串是啥东西?以前没做过这种题阿?果断看WP了; RSA低加密 ...

  2. Extremely hard RSA 低加密指数攻击

    题目说明 没想到RSA4096都被你给破了,一定是我的问题,给了你太多信息,这次我只给你一个flag的加密值和公钥(Extremely hard RSA),仍然是RSA4096,我就不信你还能解出来. ...

  3. RSA进阶之低加密指数攻击

    适用场景: n很大,4000多位,e很小,e=3 一般来说,e选取65537.但是在RSA加密的时候有可能会选用e=3(不要问为什么,因为选取e =3省时省力,并且他可能觉得n在4000多位是很安全的 ...

  4. 低解密指数攻击_CTF中RSA的一些攻击思路

    本文为看雪论坛优秀文章看雪论坛作者ID:丿feng本文简略总结了前人的一些RSA攻击思路,代码或来源于网上或本人原创.并已在GitHub上开源,github地址:https://github.com/ ...

  5. 基于低代码平台实现的知识管理系统

    编者按:随着信息化时代的到来,人们对于信息化技术也有了不同的认识.目前我国大部分企业也在积极引进知识管理系统,但是一些中小企业,对于知识文档管理的认知不够全面,也不够重视,对其的认知只是在表层上,导致 ...

  6. RSA密码——Wiener的低解密指数攻击(利用连分数理论)

    RSA密码--Wiener的低解密指数攻击 先描述一下RSA密码体制: RSA密码体制: 大素数p,qp,qp,q,模数n=pqn=pqn=pq,加密指数bbb,解密指数aaa,满足ab≡1(modϕ ...

  7. 羊城杯 Crypto RRRRRRRSA (连分数,低解密指数攻击原理)

    题面 import hashlib import sympy from Crypto.Util.number import *flag = 'GWHT{************}'flag1 = fl ...

  8. 【知识补充】对称加密、非对称加密、数字签名与DDoS攻击

    文章目录 一. 对称加密 1)知识点 2)具体算法 1. DES 2. 3DES 3. AES 二. 非对称加密(公钥密码) 1)知识点 2)具体算法 RSA 三. 数字签名 1)知识点 四. DDo ...

  9. 基于无保护AES芯片的 CPA攻击

    基于无保护AES芯片的 CPA攻击 王立敏 1,丁洁 2 1中国科学院信息工程研究所 第五实验室 北京 中国 100093 2 中国科学院信息工程研究所 第五实验室 北京 中国 100093 摘要 高 ...

最新文章

  1. 从Win8预览版的发布来选择最合适的虚拟机软件
  2. Xamarin Essentials教程安全存储SecureStorage
  3. 用unescape反编码得出汉字
  4. python【进阶】5.一等函数(注销)
  5. innerHTML的用法
  6. 每天进步一点点《ML - 线性回归》
  7. oracle数据导入/导出
  8. 在linux系统中下载thchs30,aishell数据处理为thchs30格式
  9. 微信小程序开发入门与实践
  10. 用PROTUES来演示80C51的的16MHZ晶振的示波器演示
  11. 一个基于百度云和图灵的人工智能程序
  12. u盘删不掉Android文件夹,U盘文件删不掉怎么办完全解决教程
  13. unity将预制体写成fbx_Unity3d 动态加载fbx模型文件
  14. Java随笔-线程stop与interrupt
  15. 九爷带你部署Mfs分布式文件系统
  16. Remix部署契约时出现错误:creation of Ballot errored: Error encoding arguments: Error: expected array value (ar
  17. 微信内置浏览器直接下载APP的解决方法
  18. LeetCode. 拿硬币
  19. 【django】如何获取字段最大值,最新的记录
  20. 手把手建项目 PrimeNG安装使用

热门文章

  1. C程序设计(谭浩强)--学习笔记
  2. 超全面!Verilog入门到实战系列(1)
  3. 使用PlayCanvas制作一个简单的小游戏(四)
  4. android 4.4打开MTP模式以及USB CD Rom模式打开方法
  5. 【图割】最大流/最小割算法详解(Yuri Boykov and Vladimir Kolmogorov,2004 )
  6. java环境变量user.home详解
  7. iOS实现服务器原生推送
  8. VSCode、notepa++列选择(垂直选中)快捷键方法
  9. 山科大数字高程模型(朱红春版)复习 2021
  10. 关于ES自定义script painless的问题