(转) RSA-Tool 2 使用简介
[[译者]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!