密码学复习笔记:数字签名(digital signature)

数字签名就是类似电子版的手写签名,首先你要明确你签的东西,不能说你签在购房合同上的签名明天让别人剪下来贴在欠条上了;其次,这个签名只有你能签出来,就比如你的字体,是你签的就是你签的,你抵不了赖,别人也伪造不了;当然,签名要简单,不能说为了证明这是你出得合同,你手写再把上面抄一遍,这个不实际,在电子版中,如果太长或者太难算,那就直接等于增加了网络或CPU的负担,影响用户体验,这样你的安全产品是没人用的。以上是对于签名者,对于其他人呢,你的签名要好认,你给我出个数独,解出来之后答案再拿到什么什么东西里算之类的,这样的签名就不合适;但同时,你的签名还不能让别人能够轻易伪造;还有一点,就是得好存,怎么说呢,数字签名经常用于一些权限的验证,比如你买了某个公司的软件,你有好多终端,如果你的数字签名不好存,那我就只能用这个获取DS的电脑使用你的服务,这样影响用户体验。

说了这么多DS的要求,下面说一下实现DS的两种方法,RSA和DSS。

RSA Approach

sender先把m哈希后,用自己的 k d k_d kd加密,然后发送m|| k d ( h ( m ) ) k_d(h(m)) kd(h(m))给receiver,然后receiver利用sender的公钥和公开的hash function来验证,这个方法我没有进行验证,但是我觉得一直用同一套key的话,如果一直在被passive attack,你的secret key可能是会泄漏的(只是个想法 懒癌有空会去想这个问题的 看不完了 别学我别学我。。。)

DSS Approach

这个厉害,这里有两种key,大家(global)公有的key是p,q和g,p取很大,长度在512到1024之间;(p-1)要能被q整除,并且q要是一个160bits的数,为啥160呢,因为发过去的签名要用于partition,要用q参与验证部分的计算,为啥要整除呢,因为 g = h ( p − 1 ) / q g=h^{(p-1)/q} g=h(p1)/q,h是 Z p Z_p Zp中随机的,这就是global public key,是属于某个group才有的,如果你不属于这个group又想sniff他们的信息,好的,第一步你先把这三个数算出来吧,512到102

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值