首页 > 其他分享 >DES简记

DES简记

时间:2023-10-06 11:34:02浏览次数:38  
标签:算法 DES 简记 Alice 素数 签名 mod DSA

一、历史
  1991年8月,NIST(Nation Institute of Standards and Technology,美国国家标准技术研究所)提出了数字签名算法(DSA)用于他们的数字签名标准(DSS)中。

DSA是算法,DSS是标准。标准采用算法,算法是标准的一部分。

但是NIST的通告引起了大量谴责,这些谴责的政治性多于学术性。许多已经取得RSA算法专利许可权的大型软件公司也站出来反对DSS,他们已经投入大量的资金来实现RSA算法,他们当然不希望这些资金白白流失。
  1994年5月19日,该标准最终颁布。

二、DSA算法的描述
  DSA是Schnorr和ElGamal签名算法的变形,该算法的安全性依赖于计算模数的离散对数的难度。
DSA签名中的公开密钥:

p 512~1024位的素数(可以在一组用户中共享)
q 160位长,并与 p-1 互素的因子(可以在一组用户中共享)
g g=h(p-1)/q mod p,其中 h 小于 p-1 并且 h(p-1)/q mod p > 1
y y=gx mod p (一个p位的数)
在标准最初版本中,p的长度固定为512位,这引起了许多批评,之后NIST改变了它。

DSA签名中的私人密钥:

x x<q
DSA签名算法中的签名过程:

k选取小于q的随机数
r(签名)= (gk mod p) mod q
s(签名) = (k-1 ( H(m)+xr ))mod q
DSA签名算法中的验证过程:

w = s-1 mod q
u1 = (H(m)×w)mod q
u2 = (rw) mod q
v = ((gu1 × yu2) mod p) mod q
如果 v=r ,则签名被验证
对消息m签名时:
(1)Alice产生一个的随机数 k,k<q。
(2)Alice产生:
       r = (gk mod p) mod q
       s = (k-1 ( H(m)+xr ))mod q
其中,r 和 s 就是她的签名,她将它们发给 Bob。
(3)Bob通过计算来验证签名:
       w = s-1 mod q
       u1 = (H(m)×w) mod q
       u2 = (rw) mod q
       v = ((gu1 × yu2) mod p) mod q
如果, v=r,则签名有效。

过程:

三、 DSA的素数的产生
NIST在【1154】中推荐了一种产生素数 p 和q 的方法,其中 q 能整除 p-1。
素数 p 为 L 位,介于 512~1024 位,是 64 的倍数。
素数 q 为 160 位。
设 L-1=160n+6
(1)选取一个至少 160 位的任意序列,称为 S。设 g 是 S 的位长度。
(2)计算 U=SHA(S)⊕ SHA((S+1)mod 2g),SHA是安全散列算法
(3)将U的 最高位 和 最低位 置为 1 形成 q
(4)检验 q 是否是素数
(5)如果 q 不是素数,则回到(1)
(6)设 C=0,N=2
(7)对 k=0,1,·······,n,令Vk = SHA((S+N+k)mod 2g )
(8)令W=V0 + 2160V1+······+2160(n-1)Vn-1 + 2160n(Vn mod 2b),W为整数,且X=W+2L-1。注意 X 是 L 为长的数。
(9)令p=X-((X mod 2q)-1)。注意 p 同余1 模 2q。
(10)若 p<2L-1,转到(13)步
(11)检测 p 是否为素数
(12)如果 p 是素数,转到(15)步
(13)令C=C+1,N=N+n+1
(14)如C=4096,转到第(1)步;否则,转到第(7)步
(15)将用于产生 p 和 q 的 S 和 C 值保存起来
在文献【1154】中,变量S称为“种子”,C称为“计数”,N称为“偏差”
单向散列函数SHA的使用能防止他人在背后做手脚。
这样做的安全性比RSA高,在RSA中,素数是秘密保存的。某人可能产生假素数或容易分解的特殊形式的素数,除非你知道私人密钥,否则你不知道这一点。而这里,即使你不知道私人密钥,你也可以确信 p 和 g 是随机产生的。

四、DSA的安全性
512位的DSA不能提供长期的安全性,但是1024位可以。

五、攻击k
  每个签名都需要一个新值 k,并且该值必须是随机选择的。
  如果 Eve 恢复了 Alice 用来签名消息的 k,她就可以恢复 Alice 的私人密钥 x (目前我还不清楚怎么恢复的ღ,有知道的可以评论我一下哈,Thanks♪(・ω・)ノ)。如果Eve获得了使用同一个 k 签名的两个消息,即使她不知道 k 的任何情况,也可以恢复 x 。拥有了 k ,Eve 就可以产生 Alice 的签名。在DSA实现中,一个好的随机数发生器对系统安全是至关重要的。

补充:可以使用DSA函数进行 ElGamal加密 和 RSA加密。

标签:算法,DES,简记,Alice,素数,签名,mod,DSA
From: https://www.cnblogs.com/JustGo12/p/17744370.html

相关文章

  • Adobe_InDesign_2023_18.4.0.056图文安装教程及下载
    AdobeInDesign是Adobe公司的一个桌面出版(DTP)应用程序,简称“Id”,主要用于各种印刷品的排版编辑。InDesign是一款功能强大的出版物创作、排版和打印软件,可以帮助出版物和广告创作者提高效率,节省时间,改善印刷质量。InDesign可以满足广泛的创作需求,使您可以从其他应用程序快速访问......
  • delphi中FormDestroy和FormClose的区别和联系
    在Delphi中,FormDestroy和FormClose是用于处理窗体关闭事件的两个不同的事件处理程序。它们有一些区别和联系,下面我将详细解释它们之间的差异和关联:FormDestroy事件:FormDestroy事件是一个在窗体销毁时触发的事件。这个事件通常用于释放在窗体生命周期内创建的资源,如对象、......
  • Sentinel系列之SlotChain、NodeSelectorSlot、ClusterBuilderSlot分析
    本文基于Sentinel1.8.6版本分析1.SlotChain我们从入口com.alibaba.csp.sentinel.SphU#entry(java.lang.String)开始分析。一路走读下来,会进入到这个方法com.alibaba.csp.sentinel.CtSph#lookProcessChain,查找该资源对应的SlotChain。接下来看如何构建这个SlotChain.Se......
  • "Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/n
    docker-compose搭建elasticsearch出现问题例子如下version:'3'services:elasticsearch:image:elasticsearch:7.14.0container_name:elasticsearchenvironment:-"discovery.type=single-node"-"xpack.sec......
  • C/C++学习 -- 分组加密算法(DES算法)
    数据加密标准(DataEncryptionStandard,DES)是一种对称密钥加密算法,是信息安全领域的经典之作。本文将深入探讨DES算法的概述、特点、原理,以及提供C语言和C++语言实现DES算法的代码案例。一、DES算法概述DES算法是一种对称密钥加密算法,由IBM于1977年开发并于1977年被美国国家标准局(NI......
  • QFluentWidgets: 基于 C++ Qt 的 Fluent Design 组件库
    简介QFluentWidgets是一个基于Qt的FluentDesigner组件库,内置超过150个开箱即用的FluentDesigner组件,支持亮暗主题无缝切换和自定义主题色。搭配所见即所得的FluentDesigner软件,只需拖拖拽拽,不用编写一行QSS,就能快速搭建现代化软件界面。官网地址:https://qfluentw......
  • destoon 列表页面增加手动选择排序方式
    在mobile/include/mall.inc.php 行60 $order=$MOD['order'];  之前增加排序方式判断如果有order参数则$order接受参数,没有就用默认  $order=$MOD['order'];  1、增加排序以后的mobileurl函数,伪静态规则  ViewCode 伪静态规则 ViewCode  2、模......
  • DESTOON做中英双语言(多语言)切换版本具体详解
    第一次发原创好激动,该注意点什么?在开发过程中用户有许多要求,比如这个多语言切换就是一个需求。首先讲解一下DESTOON(DT)后台系统如何做这个中英、甚至多语言切换的这个功能。DT本身不自带多语言切换功能,但是强大的DT可以切换默认语言和默认模板的。首先登陆后台系......
  • destoon运行流程二次开发必看
    <?php代码首先包含common.inc.php文件在common.inc.php文件中,首先定义常量。define('IN_DESTOON',true);define('IN_ADMIN',defined('DT_ADMIN')?true:false);define('DT_ROOT',str_replace("\",'/',dirname(__F......
  • destoon短信接口修改方法
    destoon是很优秀的B2B行业站程序。程序模块化开发契合度很高,二次开发起来也很顺畅。数据缓存,权限分配,SEO功能方面都不错。但是在使用这套程序的时候,常常要用到发送短信的功能,而destoon本身只接入了自己的短信接口。一些初接触destoon的开发者不知道如何修改。所以铁牛特此写个文......