[[譯者]Cnbragon[TT]
[說兩句]也不知道現在還有沒有兄弟在用RSA Tool翻譯了這
篇幫助文件很簡單。也不知道能不能給兄弟們帶來幫助 *_^
----------------------
[譯文]
RSA-Tool 2 ?2000-2002 tE! [TMG]版權所有
介紹
請仔細地閱讀本文件。這個應用程式是為了想在他們的程式中使用RSA公鑰演算法的人準備的。它提供
創造出強壯的金鑰對和使用了包括MPQS在內的各種不同的因數分解方法而生成的整數因子。
它可以分解256位大小的整數,但是要記住這會佔用大量的記憶體和時間!因此不推薦在速度很慢和只有
很少MB的實體記憶體的機器上分解大數。更別想分解512位的了...
RSA-Tool 2 特點:
- 安全生成金鑰對
- 金鑰測試對話方塊
- 支援複合進位制
- 自動進行選擇的數制轉換
- 支援到4096位元組
1.關於RSA
RSA是由Ronald Rivest,Adi Shamir和Leonard Adleman在1977年開發的公開金鑰演算法。直到2000年9
月20日這個演算法的美國專利權才到期!這就意味著這個演算法是公開的了,可以被任何人免費的使用,
甚至用於商業軟體。
2. 引數
P= 第一個大素數
Q= 第二個大素數 (P和Q的長度不能相差太大!)
E= 公鑰 (一個隨機數,必須滿足:GCD(E,(P-1)*(Q-1))==1)(譯者注:即E和(p-1)(Q-1)互素)
N= 公用模數,由P和Q生成:N=P*Q
D= 私鑰:D=E^(-1) mod ((P-1)*(Q-1))
引數N和E是公開的但是D是私有的並且絕不能公開!P和Q在生成金鑰後便不再需要了,但是必須銷燬。
為了從公鑰(N,E)得到D,需要試圖分解N為它的兩個素數因子。對於一個很大的模數N(512位或更大)
要想分解出它的P和Q是件非常困難的事。
RSA 加密模式的所有安全性都依賴於大數分解(但是還沒有數學上的證明)。
請參閱:http://www.rsasecurity.com/rsalabs/challenges/factoring/rsa155.html獲得更多的資訊.
3. 加密
加密一個資訊塊(M)(必須小於N),計算:
密文=C=M^E mod N.
注意:如果整個資訊(M)大於N,它會被分解為幾個大小小於N的資訊塊。
4. 解密
為了解密一個給定的密文(C)從而得到它的明文結果,計算: M=C^D mod N
上面幾個等式中的'^'是'乘方'的意思,不是'XOR'!
注意RSA加密模式用其它的方法也可以:
C=M^D mod N 和 M=C^E mod N. 它取決於你怎樣補充它.只需要確定你從沒有公開私鑰D,P並且或者Q!
5. 怎樣使用...?
...生成一組RSA金鑰對
1)按下'Start'按鈕,透過移動你的滑鼠指標來收集一些隨機資料.
這必須一次完成,因為收集的資料會被儲存在你的RSA-Tool資料夾裡面的一個檔案中。
2)選擇要建立的金鑰的長度(等於N的長度)。最大為4096位.
3)選擇你的公鑰(E)並把它輸入到相應的編輯框作為十進位制數。
常用的E有(考慮到計算速度的原因):3,17,257和65537(十進位制).
4)按下'Generate',等到金鑰生成完成。
注意,生成很大的數需要一些時間,取決於你的CPU的計算能力。
特別說明:你可以常按'Generate'.做為金鑰生成過程的一個組成部分的內建隨機數生成系統會在執行的
時候重新進行初始化。這是故意這麼做的,這樣可使那些濫用這個工具做其它事情變得更困難...
注意兩次或兩次以上生成相同的金鑰對是不可能的。
...分解一個數?
1)選擇正確的進位制
2)在Modules(N)編輯框中輸入或複製這個數。這會啟用'Factor'按鈕。
3)然後按Factor按鈕.注意分解大於240位的數會花很大的記憶體和時間!
甚至很小的數也會需要幾個小時。如果你不相信的話你可以試試用這個工具分解一個240位的N...
如果用Multiple Polynomial Quadratic Sieve(MPQS)演算法來分解整數,需要大量的記憶體.
原因是這個演算法的設計,而不是編碼風格。
例如:分解一個給定大小的N的記憶體使用情況(使用MPQS演算法)...
256位:~89MB, 280 位:~140MB,296位:~185MB等等.
...由素數因子P和Q計算私鑰D
1)選擇引數P和Q的正確進位制
2)在相應的文字區域中輸入或貼上P和Q
3)按下'Calc.D'
...得到整數的精確位長度
1)為你要進行檢查的數選擇正確的進位制
2)在Modules(N)文字框中輸入或貼上整數
3)按小的'Bits'按鈕.這會顯示出這個數使用的精確的位數。
6. 說明
- 用於金鑰生成的素數是強壯的和精心計算的。如果你不相信這個工具,就不要使用它或者更好的逆向
出金鑰生成引擎並且告訴我你擔心的問題;-)
- 這個程式使用Shamus 軟體公司的Miracl 4.45.C/CPP形式的原始碼和手冊可以從
http://indigo.ie/~mscott/獲得.在商業軟體中使用Miracl庫不是免費的.更糟的是授權費相當高.
當然你可以換著使用其它的大數運算庫-比如Freelib.
- 使用了Base60轉換表(Miracl支援)
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx
- 使用了Base64轉換表
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
特別說明:Miracl不支援Base64資料格式.我使用自己的方法。從每個數的十六進位制表示方法的MSB到LSB進行
轉換的。這可能和你用的庫不匹配。Base64轉換的C語言原始碼將會和這個工具一起發放。
7. 致謝
這個工具是tE!用C語言編碼,MSVC5編譯。
感謝Ousir - Quantico - Ivanopulo - GriYo - Daemon - MackT - Recca - Analyst
Dimedrol - Snacker - SAC - VAG - +SplAj - Snaker - Seifer - Sab - NoodleSpa
f0dder - The Owl - Lorian - Defiler - Ultraschall - Seir - Risc - MackT
viruz666 - neoman - TMG所有的朋友和你
tE!
You cannot achieve the impossible without attempting the absurd.非