增强型Rabin签名算法

本文章是一个对于增强型Rabin的讲解

1. 算法综述

​ Rabin算法是基于求合数n的平方根问题的困难性设计的算法。但是存在不确定性的问题。而增强的Rabin算法便在Rabin算法那的基础上增加了细节和限定条件解决了这个问题。其原理是基于二次剩余方面的数学知识。公开系数为2,签名检验较简单。

2. 算法结构
  1. 密钥生成

    随机选择两个BLUM整数p与q,计算公钥n=pq,私钥d=(n−q−q+5)/8随机选择两个BLUM整数p与q,计算公钥n=pq,私钥d=(n-q-q+5)/8随机选择两个BLUM整数p与q,计算公钥n=pq,私钥d=(n−q−q+5)/8:

    这里选择的p和q应该都为大素数,因为只有p,q足够大的时候才能保证n的分解是NP难问题这里选择的p和q应该都为大素数,因为只有p,q足够大的时候才能保证n的分解是NP难问题这里选择的p和q应该都为大素数,因为只有p,q足够大的时候才能保证n的分解是NP难问题

  2. 签名生成

    给出冗余函数使得h(m)=m~:这里的冗余函数必须使得m~∈Zn给出冗余函数使得h(m)= \widetilde{m}:这里的冗余函数必须使得\widetilde{m}\in Z_n给出冗余函数使得h(m)=m:这里的冗余函数必须使得m∈Zn​

    计算m~的雅各比符号J,s={(m~/2)dmodn,J=1m~dmodn,J=−1:这里是为了保证s∈Jn(部分签名中还有a,b参数,但并不需要)计算\widetilde{m}的雅各比符号J,s= \begin{cases} (\widetilde{m}/2)^{d}modn,J=1\\\widetilde{m}^{d}mod n,J=-1\end{cases}:这里是为了保证s\in J_n(部分签名中还有a,b参数,但并不需要)计算m的雅各比符号J,s={(m/2)dmodn,J=1mdmodn,J=−1​:这里是为了保证s∈Jn​(部分签名中还有a,b参数,但并不需要)

    签名s生成,交给B进行验证签名s生成,交给B进行验证签名s生成,交给B进行验证

  3. 签名验证

    m1=s2modn,m~={m1,m1=6mod82m1,m1=3mod8n−m1,m1=7mod82(n−m1),m1=2mod8:如果签名中有a,b,参数则不需要做判断m_{1}=s^{2}modn,\widetilde{m}=\begin{cases}m_1,m_1=6mod8\\2m_1,m_1=3mod8\\n-m_1,m_1=7mod8\\2(n-m_1),m_1=2mod8 \end{cases}:如果签名中有a,b,参数则不需要做判断m1​=s2modn,m=⎩⎪⎪⎪⎨⎪⎪⎪⎧​m1​,m1​=6mod82m1​,m1​=3mod8n−m1​,m1​=7mod82(n−m1​),m1​=2mod8​:如果签名中有a,b,参数则不需要做判断

    如果h(m)=m~,则验证成功如果h(m)=\widetilde{m},则验证成功如果h(m)=m,则验证成功

总体上来看,Rabin数字签名一个显而易见的好处就是过程简单且计算量不高。它的安全性保证来源于QRP被公认为与整数分解具有相同的困难性。具体的算法构造思路与其他公钥算法如RSA较为类似。但是从上面也可以看出,它对冗余函数的要求还比较高,一是需要满足冗余函数的输出应该在Qn上,二是冗余函数也需要保证一定的安全性。同时消息同样也存在限制。这是其缺点。

3. 安全性分析

​ 增强的Rabin算法由于是Rabin算法的优化,其安全性与Rabin算法类似。

​ 前面提到冗余函数需要保证一定的安全性。原因有下:1.当这个冗余函数不是一个单向的函数如哈希函数时,此算法只能保证对选择明文攻击安全,而对选择密文攻击完全不安全。但当这个函数时一个单向陷门函数的时候,则保证了对于选择密文攻击的安全性。2. 冗余函数不能使两个不同的字符串映射到相同的数,这样会极大的降低整个系统的安全性。

​ 而对于输入消息的要求,同样也与冗余函数有关。当消息的总数达到其种类数达到n的Qn的元素的总个数时,根据生日悖论,无论冗余函数如何变化,始终满足不了冗余函数的第二个需求。但是这种情况只限于在消息m的数量级很高的时候,因为当m的数量级低的时候,即使冗余函数面对整个消息的空间存在多对一的情况,很少的消息中的两个消息的输入一样的概率依然很小。从这里也能看出,n的数量级应该取得合适的很大(这个合适指满足需求和效率的情况下),这样同时也会使n的分解问题的复杂度变得更高,一箭双雕。

4. 算法小结

​ 总的来说,增强的Rabin算法解决了Rabin算法存在的问题,继承了其有点,提高了安全性,是一个非常成功的优化。且对标RSA等算法时,可以看出在保证了安全性的前提下极大的优化了签名的检验和效率。但是同时也对冗余函数的选取提出了更高的要求。但是,可以看出,不管是Rabin,RSA还是增强后的Rabin,最终的安全性都是依赖于NP问题,或许在计算机或者数学发展到一定高度的一天,只要这个NP问题如大整数的分解问题被破解,这些密码体制的安全性终将不复存在。因此,密码学和数学乃至整个科学的发展都是密切相关的,互相服务互相促进。

增强型Rabin签名算法相关推荐

  1. python生日悖论分析_生日悖论

    python生日悖论分析 If you have a group of people in a room, how many do you need to for it to be more like ...

  2. 谁再问我加密算法、签名算法、我上去就是一jio

    前言 作为一个已经在互联网公司工作了一段时间的咸鱼来说,从当初一脸懵逼到现在似懂非懂的这段期间始终有一些问题困扰着我,由于工作原因又很少有时间去了解这些问题,导致自己欠下的技术债也是越来越多.于是准备 ...

  3. 数字签名系列一:签名简介与RSA签名算法

    数字签名系列一 写在前面 数字签名作用 数字签名发展史 带属性的数字签名 RSA数字签名方案 写在前面 学了一年的数字签名方案,一直都在一个点进行专研,虽然还是有所收获,总感觉还差点感觉,上了一年研究 ...

  4. elgamal签名算法c语言,elgamal数字签名方案

    Elgamal算法由T.E1Gamal在1985年发表的一篇论文中提出,是Rabin体制的一种变型.其修正形式已被美国国家标准技术研究所作为数字签名标准(DS),其核心就是著名是数字签名方法(DSA) ...

  5. RSA签名算法,计算调用加密报文,安全传输

    RSA签名算法 1. 获取当前的时间戳参数 2. 计算参数签名 3. 获取请求对象的MD5密文 4. 通过私钥计算某个参数的RSA签名 5. 转换字符集到utf8 6. MD5加密字符串 7. bas ...

  6. 增强型固态硬盘支持人工智能工作负载

    增强型固态硬盘支持人工智能工作负载 Enhanced SSDs support AI workloads 多伦多--关于人工智能(AI)和机器学习工作负载所需的内存和架构已经有很多讨论,而Micron ...

  7. java签名算法阻止 设置_java数字签名算法之RSA

    © 版权声明:本文为博主原创文章,转载请注明出处 实例 1.项目结构 2.pom.xml xsi:schemaLocation="http://maven.apache.org/POM/4. ...

  8. Go 语言实现字符串匹配算法 -- BF(Brute Force) 和 RK(Rabin Karp)

    今天介绍两种基础的字符串匹配算法,当然核心还是熟悉一下Go的语法,巩固一下基础知识 BF(Brute Force) RK(Rabin Karp) 源字符串:src, 目标字符串:dest: 确认des ...

  9. cocos2dx小游戏数据签名算法破解

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 快速破解小游戏常见的数据签名算法." 最近在分析各种小游戏的协议,本文以<我不是无双>这款小游戏为样例介绍这类小游戏的 ...

最新文章

  1. Python的re模块 --- 正则表达式操作
  2. codevs 2075 yh女朋友的危机
  3. Cell重磅发布15万人体微生物基因组!超大规模宏基因组研究揭示数千计人体微生物新物种...
  4. postman关闭ssl验证_【第5期】springboot:苹果内购服务端验证
  5. 使用RAID增加传统机器硬盘的性能
  6. eclipse中的WEB项目打包部署到tomcat .
  7. Django编写RESTful API(二):请求和响应
  8. 素数类型C语言题目总结
  9. Zookeeper应用场景
  10. 印度神曲之五(Ayka dajiba)
  11. 免费计算机网络基础ppt,计算机网络基础概念课件.ppt
  12. oracle 应收 系统选项,Oracle财务系统应收账款模块操作手册
  13. 几个主要软件调试方法及调试原则
  14. ESD介绍及TVS的原理和应用-USB等
  15. 透气清爽的高回弹跑鞋,跑步轻松畅快,咕咚逐日21K体验
  16. 2008-2020年上市公司环境信息披露质量指数EDI、环境绩效明细、环境排放明细、资源消耗明细
  17. 句子重写任务近年有哪些值得关注的工作?看这一篇就够了!
  18. 原生js+css3实现点击图片正方体旋转展现图片
  19. Android MediaPlayer控制进度播放音频
  20. 【iOS】设置背景渐变色

热门文章

  1. 利用python进行数据分析数据集_《利用Python进行数据分析》终章·数据分析案例·学习笔记(二)...
  2. SDN开源,从你的全世界路过
  3. 82540em 无盘服务器,千兆网卡
  4. DHCP动态分配ip地址
  5. 网络属性检查和设置-getsockopt()
  6. 卡迪夫大数据专业排名_大数据分析:英超大数据!布莱顿vs卡迪夫
  7. 写论文文章之怎么写引言
  8. 北航 计算机学院 讲师 清华大学,楚中毅 中文主页 北京航空航天大学教师个人主页系统...
  9. Linux教程 Linux的故事
  10. 程序员,吃什么对身体好