1. 程式人生 > >Given d and e, factorize N to attack RSA

Given d and e, factorize N to attack RSA

題目如下:

RSA演算法的使用一般要求每個不同的使用者有一個獨立的模數N。有天,Bob腦洞大開,認為似乎沒有必要這樣做。只需要一個模數N,然後給不同的使用者分發不同的e和d就好了。可惜這種做法有嚴重的安全漏洞。

給定Alice的公鑰(e1,N),Adv為了破解Alice的密文,他也註冊一個公私鑰對,得到(e2, d2, N),然後他就可以巧妙地計算出Alice的解密私鑰。注意:Adv得到的私鑰不一定與Alice的相同,只是它確實可以解密。

(e1 =

44379563805854841580307748547737435172564831877127303051909203409873174780389273150966396080375621148040275710628408649117613085199533826455458312376264659153842853015345496268736337902730232293424031775369541079662258443836020140399047886828048837071536578243295077689245549921524765222192270061081366989243

N = 

188115669939527035644766943794256836704505079895306601119938518634078379404429524926183546093986493443422022468844644307633083886388295943602507953702360632321739073592477683222131866451975315695813478098524853358977564134499058448438525811837376172990710150323209055804682074564005014776547535959114226010493

(e2 =

112465763139808984065405993827008716763974555200543206549100182421914260511395374512318119557311872118857352370325610769529155517454000609905909538235321637165438962672069969201523246380106126889874030417878823876408727390390051948217715186480658609481138938023687641185709391304878382079926539531855678365763

 d2 =

55881649455902117785162844948995531081646760354831350250450328774662614334096209227124014992837725793190883247171284132768863157972472923057215962250425474753160669444247876851199006665484502793278672692761545198268608005712388135980371518592854149756626148424994498979112285655516912703587302199972664162731

 N = 

188115669939527035644766943794256836704505079895306601119938518634078379404429524926183546093986493443422022468844644307633083886388295943602507953702360632321739073592477683222131866451975315695813478098524853358977564134499058448438525811837376172990710150323209055804682074564005014776547535959114226010493

)

 

求解(e1, N)加密得到的密文(沒有編碼,是一個整數):

166834578157098529809222592291594342260836191039081705782260506690911922650094691879568641873546447862853989518762075081785381252999566333779425586950217410876199240677942391128773211264433855236931134494842223272683014826519273429450763047329625425561073729238027952900168036140503255431512655421527963913597

 

請解釋過程,給出明文及其解密用的私鑰。

 

一開始想,給定的N相同,是不是共模攻擊,看並不滿足共模攻擊的條件

後來看到一篇部落格(http://jackyc.top/2018/10/27/RSA-3/#more),裡面有個參考文件(https://www.di-mgt.com.au/rsa_factorize_n.html),看完後知道原來知道(e,d,N)可以分解N,但是原理還不是很理解

找到了一個PDF,裡面有原理的講解,不過裡面有些小地方和我的理解有出入,要麼我錯了,要麼PDF出現小錯誤,最後還是按自己的理解和各種參考資料用python寫了一下