基本上,我認為目前業界的能力,還沒有辦法破解,所以對於ninja我還是懷疑。但是MK團隊系列已經看到了,不得不佩服。有人說,直接從wifi切入,不過我還是覺得不可能,因為那兒還是被encrypted。
另,又聽人說,是利用預先編碼,然後到了那兒解碼,但是、、、、如果、、、、、
預先編碼,那豈不是早就知道已經破了私鑰。
再不然,還有個可能,利用WIFI的運算後不發出,從匯徘流出去,然後再由主機板解密、、、、
看來,我還必須在下一點苦心去研究一下了。
RSA加密演算法
維基百科,自由的百科全書
RSA加密演算法是一種非對稱加密演算法。在公鑰加密標準和電子商業中RSA被廣泛使用。RSA是1977年由羅納德·李維斯特、阿迪·薩莫爾和倫納德·阿德曼一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人名字開頭字母拼在一起組成的。
1973年,在英國政府通訊總部工作的數學家克利福德·柯克斯在一個內部檔案中提出了一個相應的演算法,但他的發現被列入機密,一直到1997年未被發表。
RSA演算法的可靠性基於分解極大的整數是很困難的。假如有人找到一種很快的分解因子的演算法的話,那麼用RSA加密的信息的可靠性就肯定會極度下降。但找到這樣的演算法的可能性是非常小的。今天只有短的RSA鑰匙才可能被強力方式解破。到2004年為止,世界上還沒有任何可靠的攻擊RSA演算法的方式。只要其鑰匙的長度足夠長,用RSA加密的信息實際上是不能被解破的。
1983年麻省理工學院在美國為RSA演算法申請了專利。這個專利2000年9月21日失效。由於該演算法在申請專利前就已經被發表了,在世界上大多數其它地區這個專利權不被承認。
操作
公鑰和私鑰的產生
假設Alice想要通過一個不可靠的媒體向Bob輸送一條私人訊息。她可以用下面的方式來產生一個公鑰和一個密鑰:
- 隨意選擇兩個大的質數p和q,p不等於q,計算N=pq。
- 選擇一個大於1小於N的自然數e,e必須與(p-1)(q-1)互素。
- 用以下這個公式計算d:d× e ≡ 1 (mod (p-1)(q-1))
- 將p和q的記錄銷毀。
N和e是公鑰,d是私鑰。d是秘密的,而N是公眾都知道的。Alice將她的公鑰傳給Bob,而將她的私鑰藏起來。
加密消息
假設巴哥想給阿黃送一個消息m,他知道阿黃產生的N和e。他使用起先與阿黃約好的格式將m轉換為一個小於N的整數n,比如他可以將每一個字轉換為這個字的Unicode碼,然後將這些數字連在一起組成一個數字。假如他的信息非常長的話,他可以將這個信息分為幾段,然後將每一段轉換為n。用下面這個公式他可以將n加密為c:
計算c並不複雜。巴哥算出c後就可以將它傳遞給阿黃。
解密消息
阿黃得到巴哥的消息c後就可以利用她的密鑰d來解碼。她可以用下面這個公式來將c轉換為n:
得到n後,她可以將原來的信息m重新複原。
解碼的原理是
以及ed ≡ 1 (mod p-1)和ed ≡ 1 (mod q-1)。費馬小定理證明
和
這說明(因為p和q是不同的質數)
簽名消息
RSA也可以用來為一個消息署名。假如阿黃想給巴哥傳遞一個署名的消息的話,那麼她可以為她的消息計算一個散列值,然後用她的密鑰加密這個散列值並將這個「署名」加在消息的後面。這個消息只有用她的公鑰才能被解密。巴哥獲得這個消息後可以用阿黃的公鑰解密這個散列值,然後將這個資料與他自己為這個消息計算的散列值相比較。假如兩者相符的話,那麼他就可以知道發信人持有阿黃的密鑰,以及這個消息在傳播路徑上沒有被篡改過。
安全
假設偷聽者娥妹獲得了阿黃的公鑰N和e以及巴哥的加密消息c,但她無法直接獲得阿黃的密鑰d。要獲得d,最簡單的方法是從c算出n,然後將N分解為p和q,這樣她可以計算(p-1)(q-1)並從而由e推算出d。至今為止還沒有人找到一個多項式時間的計算方法來分解一個大的整數的因子,但至今為止也還沒有人能夠證明這種演算法不存在(見因式分解)。
至今為止也沒有人能夠證明對N進行分解因式是唯一的從c導出n的方法,但今天還沒有找到比它更簡單的方法。(至少沒有公開的方法。)
因此今天一般認為只要N足夠大,那麼娥妹就沒有辦法了。
假如N的長度小於或等於256位,那麼用一臺個人電腦在幾個小時內就可以分解它的因子了。1999年,數百臺電腦合作分解了一個512位長的N。今天對N的要求是它至少要1024位長。
1994年彼得·秀爾證明一臺量子電腦可以在多項式時間內進行因式分解。假如量子電腦有朝一日可以成為一種可行的技術的話,那麼秀爾的演算法可以淘汰RSA和相關的演算法。
假如有人能夠找到一種有效的分解因式的演算法的話,或者假如量子電腦可行的話,那麼在解密和製造更長的鑰匙之間就會展開一場競爭。但從原理上來說RSA在這種情況下是不可靠的。
實現細節
密鑰生成
首先要使用可能性演算法來實驗隨即產生的大的整數是否質數,這樣的演算法比較快而且可以消除掉大多數非質數。假如有一個數通過了這個測試的話,那麼要使用一個精確的測試來保證它的確是一個質數。
除此之外這樣找到的p和q還要滿足一定的要求,首先它們不能太靠近,此外p-1或q-1的因子不能太小,否則的話N也可以被很快地分解。
此外尋找質數的演算法不能給攻擊者任何信息,這些質數是怎樣找到的,尤其產生隨即數的軟體必須非常好。要求是隨即和不可預測。這兩個要求並不相同。一個隨即過程可能可以產生一個不相關的數的系列,但假如有人能夠預測出(或部分地預測出)這個系列的話,那麼它就已經不可靠了。比如有一些非常好的隨即數演算法,但它們都已經被發表,因此它們不能被使用,因為假如一個攻擊者可以猜出p和q一半的位的話,那麼他們就已經可以輕而易舉地推算出另一半。
此外密鑰d必須足夠大,1990年有人證明假如p大於q而小於2q(這是一個很經常的情況)而d < N1/4/3,那麼從N and e可以很有效地推算出d。此外e = 2永遠不應該被使用。
速度
比起DES和其它對稱演算法來RSA要慢得多。實際上巴哥一般使用一種對稱演算法來加密他的信息,然後用RSA來加密他的比較短的對稱密碼,然後將用RSA加密的對稱密碼和用對稱演算法加密的消息送給阿黃。
這樣一來對隨即數的要求就更高了,尤其對產生對稱密碼的要求非常高,因為否則的話娥妹可以越過RSA來直接攻擊對稱密碼。
密鑰分配
和其它加密過程一樣,對RSA來說分配公鑰的過程是非常重要的。分配公鑰的過程必須能夠抵擋一個從中取代的攻擊。假設娥妹可以交給巴哥一個公鑰,並使巴哥相信這是阿黃的公鑰,並且她可以截下阿黃和巴哥之間的信息傳遞,那麼她可以將她自己的公鑰傳給巴哥,巴哥以為這是阿黃的公鑰。娥妹可以將所有巴哥傳遞給阿黃的消息截下來,將這個消息用她自己的密鑰解密,讀這個消息,然後將這個消息再用阿黃的公鑰加密後傳給阿黃。理論上阿黃和巴哥都不會發現娥妹在偷聽他們的消息。今天人們一般用數字認證來防止這樣的攻擊。
時間攻擊
1995年有人提出了一種非常意想不到的攻擊方式:假如娥妹對阿黃的硬體有充分的瞭解,而且知道它對一些特定的消息加密時所需要的時間的話,那麼她可以很快地推導出d。這種攻擊方式之所以會成立,主要是因為在進行加密時所進行的模指數運算是一個位元一個位元進行的,而位元為1所花的運算比位元為0的運算要多很多,因此若能得到多組訊息與其加密時間,就會有機會可以反推出私鑰的內容。
操作
典型密鑰長度
1997年後開發的系統,用戶應使用1024位密鑰,證書認證機構應用2048位或以上。
已公開的或已知的攻擊方法
針對RSA最流行的攻擊一般是基於大數因數分解。1999年,RSA-155(512 bits)被成功分解,花了五個月時間(約8000 MIPS 年)和224 CPU hours 在一臺有3.2G中央記憶體的Cray C916電腦上完成 。
2002年,RSA-158也被成功因數分解。
RSA-158表示如下:
No comments:
Post a Comment