• 标 题:[译]RSA Tool Help
  • 作 者:cnbragon
  • 时 间:2004-10-05,15:46
  • 链 接:http://bbs.pediy.com

[[译者]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.