(转) RSA-Tool 2 使用简介

http://bbs.pediy.com/showthread.php?t=5464&highlight=%E8%AF%91%E8%80%85+Cnbragon+TT

[[译者]Cnbragon[TT]
[说两句]也不知道现在还有没有兄弟在用RSA Tool翻译了这
篇帮助文档很简单。也不知道能不能给兄弟们带来帮助 *_^
----------------------
[译文]
RSA-Tool 2 ?2000-2002 tE! [TMG]版权所有

介绍

    请仔细地阅读本文档。这个应用程序是为了想在他们的程序中使用RSA公钥算法的人准备的。它提供
创造出强壮的密钥对和使用了包括MPQS在内的各种不同的因数分解方法而生成的整数因子。
    它可以分解256位大小的整数,但是要记住这会占用大量的内存和时间!因此不推荐在速度很慢和只


很少MB的物理内存的机器上分解大数。更别想分解512位的了...

PS: 看来采用 RSA 的注册方式,也是不安全的,除了私钥外泄的可能外,也还是有工具可以算的,只是时间问题。
   

  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/c...ng/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!

posted @ 2007-11-18 14:33  禹过天晴  阅读(4373)  评论(0编辑  收藏  举报