Board logo

标题: [原创]说说数字签名 [打印本页]

作者: x86    时间: 2005-4-6 19:49     标题: [原创]说说数字签名

[这个贴子最后由x86在 2005/04/06 07:52pm 第 1 次编辑]

[watermark]为什么要用到数字签名?
因为现代的交易的需求,比如在一桩生意中,交易对方需要得到你的一份签署的电子文挡才可能与你进行下一步的交易。所以这份文挡就显得尤其重要。但是在数据传输过程中,可能会遇到骇客的恶意拦截,修改等等。而对方需要获取这份文件,并且能够证明他没有被经过修改,或者确实是来自你。所以你需要用某种方法来证明这份电子文挡是你亲自签署的。而且这种方法是经过公众认证的,有一定法律效应的,即你签署了的文件,你不能抵赖,而别人修改了就可以看出来的。就像你的指纹一样,当你按了手印之后,合同就生效了,你不能说你没有按手印,因为文件上存在你的指纹,而其他人根本不可能伪造一个跟你一摸一样的指纹。数字签名,就相当于你的指纹!
下面说说RSA签名。
假设甲和乙 在做生意啊,呵呵,甲现在需要乙签一个文件,首先乙要做的是生成2个大的素数a,b。并且计算出c=a*b。然后计算出d=(a-1)*(b-1),然后再选一个e,使得gcd(e,d)=1即他们的最大公约数为1。然后在计算一个f,使得f*e=1(注意这里求得的1是mod d以后的值,mod是一个简单的取余运算,即10mod3=1)现在假设要签署 的文件的文件的内容为g,乙要计算出签署后的文件内容为h=g的f次方,然后再把h mod c一下就得到签名后的文挡i了。不过为了保密和安全,乙需要做的是把(e,c)公开一下。把f,a,b秘密保存。
甲需要做的先知道乙 公开的数对(e,c),并且受到乙已经签署的文件(f,i)。首先计算z=i的e次方(注意这里也要取余 mod c)如果z=f,则甲能够确认文件是由乙签署的,否则文件无效!
下面简单的举一个例子:
乙选2个素数,(这里我们取得很小,取大素数主要是加大分解复杂性,保证安全)假设为3和5 ,然后得到他们的乘积15。然后再选一个数3使得gcd(3,8)=1,8=(3-1)*(5-1)。然后再计算一个数使他乘3的积mod8=1,假设为3。现在假设要签名的内容为10,计算10的3次方1000,然后再mod15=10,所以发送给甲的签名的文档为10。
现在甲要验证这分文件了,计算10的3次方,注意此3并非甲用来签名时给数据用的3,而是刚开始计算出来 的跟8互质的3,得到1000,然后再mod15=10=原本要签署的内容,所以得到确认是乙签的!!!
[/watermark]
作者: 坏的刚刚好    时间: 2005-4-6 22:40     标题: [原创]说说数字签名

向高科技看齐,同时更加精密了(呵呵,现在Hack多)。。。
作者: evilove    时间: 2005-4-28 16:48     标题: [原创]说说数字签名

MD5在未来可能不会有市场了
我们要想安全得另找他途了





欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/) Powered by Discuz! 7.2