数字签名算法的密码分析方法研究

目录

一、问题背景

1 数字签名算法的产生

1.1产生背景

1.2数字签名的用途

2 密码分析现状

3 数字签名与密码分析的联系

1 数字签名算法的类别

1.1.1MD2、MD4、MD5算法

1.1.2SHA-1算法

1.1.3SHA-2算法

1.1.4SHA-2算法

1.2DSA数字签名算法

1.3ECDSA椭圆曲线数字签名算法

2 密码分析四大类型和三种方法

2.1.3选择明文攻击

2.1.4选择密文攻击

2.2.1穷举攻击法

2.2.2统计分析法

2.2.3数学分析法

1 问题描述

1.1密钥管理问题

1.2假冒身份问题

1.3消息确定性问题

1.4可靠时间戳问题

1.5量子计算机威胁问题

2 数字签名漏洞

2.1中间人攻击

2.2对单向散列函数攻击

2.3利用数字签名攻击公钥密码

2.4潜在伪造

1 中间人攻击

2 对单向散列函数攻击

3 利用数字签名攻击公钥密码


一、问题背景

1 数字签名算法的产生

1.1产生背景

现代网络与通讯技术的发展和迅速普及,使得电子计算机和通信网络已经广泛的应用于社会的各个领域,以此为基础建立起来的各种信息系统极大地便利了人们的生活、工作和学习等。信息安全系统的应用,加速了社会自动化的进程,减轻了日常繁杂的重复劳动,同时也提高了生产率,创造了经济效益。

但是信息技术发展的同时,当今社会的信息安全问题也愈发的严重,这使得维护信息安全变得尤为重要,从个人信息安全到国家情报安全,都是需要得到重视和保障的,所以数字签名对信息安全来说有着极其重要的意义,在信息安全不受侵犯的过程中虽然能够使用访问控制技术,加密技术等。但是这些技术大多数都是预防作用,假如信息被攻破,信息的完整性就无法得到保障,因此数字签名技术是一种能够保证信息完整性的安全技术。

1.2数字签名的用途

数字签名的作用是验证数据的完整性、认证数据来源、防抵赖。当今网络社会技术众多,目前,数字签名作为必备的关键技术应用于电子商务、电子政务、电子邮件系统、电子银行等方面。数字签名又称为数字签字、电子签章等。“数字签名”用来保证信息传输过程中信息的完整和提供信息发送者的身份认证和不可抵赖性,数字签名技术的实现基础是公开密钥加密技术,是用某人的私钥加密的消息摘要用于确定消息的来源和内容。

2 密码分析现状

密码分析和破解一直是密码学中的一个重要内容,目前国内外非常热衷于密码分析研究,并且取得了一些令人瞩目的成绩。我国著名的密码学专家、山东大学信息安全研究所所长王小云教授带领的密码研究团队在国家自然科学基金“网络与信息安全”重大研究计划的资金支持下,经过一年多的研究,先后破译了包含MD5与SHA-1在内的系列Hash函数算法。

目前,由于黑客技术的发展和普及,网络安全受到很大挑战,各种密码算法和标准广泛应用。在各类信息系统中获取的机密信息很大部分都是经过加密处理的,因而密码分析与破解成为网络信息获取中的一个必须面对的问题。结合实际的密码应用,通过对密码分析的研究将会大大提高电子取证工作的成效。密码破解技术将成为一个重要研究热点,应用前景非常可观。

3 数字签名与密码分析的联系

密码分析技术的发展和密码加密技术的发展是分不开的。目前,密码加密技术的方向向量子密码、生物密码等新一代密码加密技术发展,因此,密码分析技术也会随之进入一个新的领域。提高密码分析的准确度、减少密码分析消耗的资源也是研究的重点。

密码分析的研究可以找出数字签名算法所存在的漏洞,从而可以针对漏洞对数字签名算法加以完善,推动数字签名的完善提高其安全性。

  • 数字签名算法和密码分析

1 数字签名算法的类别

1.1RSA数字签名算法

RSA是目前计算机密码学中最经典算法,也是目前为止使用最广泛的数字签名算法,RSA数字签名算法的密钥实现与RSA的加密算法是一样的,算法的名称都叫RSA。密钥的产生和转换都是一样的,包括在售的所有SSL数字证书、代码签名证书、文档签名以及邮件签名大多都采用RSA算法进行加密。

1.1.1MD2MD4MD5算法

最常见的是我们熟知的MD5加密算法,MD5全称Message-Digest Algorithm 5(信息-摘要算法 5),目前比较普遍的Hash算法,是散列算法的基础原理,MD5的前身有MD2、MD3和MD4。MD5算法法是输入任意长度字符,输出固定长度128位的算法。经过程序流程,生成四个32位数据,最后联合起来成为一个128位Hash值,主要方式是通过求余、取余、调整长度、与链接变量进行循环运算进而得出结果。

1.1.2SHA-1算法

SHA-1是由NIST NSA设计为同DSA一起使用的,SHA-1设计时基于和MD4相同原理,并且模仿了该算法,SHA-1抗穷举(brute-force)性更好,它产出160位的Hash值,对于非线性运算、移位和加法运算也与MD5类似。SHA-1也应用于包括TLS和SSL、PGP、SSH、S/MIME和IPsec等多种协议中,曾被视为是MD5的后继者。SHA-1的如今已经明确不具备安全性可言了。

在2016年1月1日后基于SHA-1签发的SSL和代码签名的X.509证书已不具备安全性可言,多个操作系统、浏览器都建议将基于SHA-1而签发的证书、代码签名替换至SHA-2的产品,但目前在Windows XP(官方已停更)操作系统上仍然只兼容基于SHA-1算法的SSL和代码签名产品。

就在2017年2月23日Google宣布实现了对SHA-1算法的碰撞破解,所以SHA-1算法已经正式被宣布为不安全的算法,主流厂商对自身产品及安全要求都提升至了SHA-2算法。

1.1.3SHA-2算法

SHA-224、SHA-256、SHA-384和SHA-512并称为SHA-2,发布于2001年,目前比较广泛应用的SSL数字证书和代码签名证书签名算法均采用SHA-256算法,相较于SHA-1算法而言,至今SHA-2算法还未被破解,从某种意义上SHA-2延用了SHA-1算法,所以至少发文时间起是安全的。目前顶级CA和Google、苹果等公司都采用基于SHA-256算法作为SSL证书和代码签名证书的主流签名算法。

1.1.4SHA-2算法

SHA-3算法正式发布于2015年,SHA-3并不是要取代SHA-2,因为SHA-2目前并没有出现明显的弱点。由于对MD5、SHA-0和SHA-1出现成功的破解,NIST感觉需要一个与之前算法不同的,可替换的加密Hash算法,也就是现在的 SHA-3。

SHA-3选用keccak算法为标准,以太坊便是采用keccak算法。

1.2DSA数字签名算法

DSA全称Digital Signature Algorithm,DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,只用于签名,所以它比RSA要快很多,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。

1.3ECDSA椭圆曲线数字签名算法

ECDSA是用于数字签名,是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。而ECC(全称Elliptic Curves Cryptography)是一种椭圆曲线密码编码学。

ECDH每次用一个固定的DH key,导致不能向前保密(forward secrecy),所以一般都是用ECDHE(ephemeral)或其他版本的ECDH算法。ECDH则是基于ECC的DH( Diffie-Hellman)密钥交换算法。

ECC与RSA 相比,有以下的优点:

a. 相同密钥长度下,安全性能更高,如160位ECC已经与1024位RSA、DSA有相同的安全强度。

b. 计算量小,处理速度快,在私钥的处理速度上(解密和签名),ECC远 比RSA、DSA快得多。

c. 存储空间占用小 ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多, 所以占用的存储空间小得多。

d. 带宽要求低使得ECC具有广泛得应用前景。

 

数字签名流程图

2 密码分析四大类型和三种方法

2.1.1唯密文攻击

攻击者手中除了截获的密文外,没有其他任何辅助信息。唯密文攻击是最常见的一种密码分析类型,也是难度最大的一种。

2.1.2已知明文攻击

攻击者除了掌握密文,还掌握了部分明文和密文的对应关系。举例来看,如果是遵从通信协议的对话,由于协议中使用固定的关键字,如“login”“password”等,通过分析可以确定这关键字对应的密文。如果传输的是法律文件、单位通知等类型的公文,由于大部分公文有固定的格式和一些约定的文字,在截获的公文较多的条件下,可以推测出一些文字、词组对应的密文。

2.1.3选择明文攻击

攻击者知道加密算法,同时能够选择明文并得到相应明文所对应的密文。这是比较常见的一种密玛分析类型。例如,攻击者截获了有价值的密文,并获取了加密使用设备,向设备中输入任意明文可以得到对应的密文,以此为基础,攻击者尝试对有价值的密文进行破解。选择明文攻击常常被用于破解采用公开密钥密码系统加密的信息内容。

2.1.4选择密文攻击

攻击者知道加密算法,同时可以选择密文并得到对应的明文。采用选择密文攻击这种攻击方式,攻击者的攻击目标通常是加密过程使用的密钥。基于公开密钥密码系统的数字签名,容易受到这种类型的攻击。

2.2.1穷举攻击法

穷举攻击法的破解思路是尝试所有的可能以找出明文或者密钥。穷举攻击法可以划分为穷举密钥和穷举明文两类。穷举密钥是指攻击者依次使用各种可能的解密密钥对截收的密文,进行试译,如果某个解密密钥能够产生有意义的明文,则判断相应的密钥就是正确的解密密钥。穷举明文是指攻击者在保持加密密钥不变的条件下,对所有可能的明文进行加密,如果某段明文加密的结果与截获的密文一致,则判断相应的明文就是发送者发送的信息。

  为了对抗穷举攻击,现代密码系统在设计时往往采用扩大密钥空间或者提高加密、解密算法复杂度的方法。当密钥空间扩大以后,采用穷举密钥的方法,在破解的过程中需要尝试更多的解密密钥;提高加密、解密算法的复杂度,将使攻击者无论采用穷举密钥还是穷举明文的方法对密码系统进行破解,每次破解尝试都需要付出更加高昂的计算开销6对于一个完善的现代密码系统,采用穷举攻击法进行破解需要付出的代价很可能超过密文破解产生的价值。

2.2.2统计分析法

统计分析法是通过分析明文和密文的统计规律来破解密文的一种方法。一些古典密码系统加密的信息,密文中字母及字母组合的统计规律与明文完全相同,此类密码系统容易被统计分析法破解。统计分析法首先需要获得密文的统计规律,在此基础上,将密文的统计规律与已知的明文统计规律对照比较,提取明、密文的对应关系,进而完成密文破解。

要对抗统计分析攻击,密码系统在设计时应当着力避免密文和明文在统计规律上存在一致,从而使攻击者无法通过分析密文的统计规律来推断明文内容。

2.2.3数学分析法

大部分现代密码系统以数学难题作为理论基础。数学分析法是指攻击者针对密码系统的数学基础和密码学特性,利用一些已知量,如一些明文和密文的对应关系,通过数学求解破译密钥等未知量的方法。对于基于数学难题的密码系统,数学分析法是一种重要的破解手段。

  • 问题分析

1 问题描述

1.1密钥管理问题

密钥的管理非常重要,因为私钥泄露可能会导致签名的信息被篡改。因此,密钥的生成、存储和分发都需要进行严格的控制和管理。

1.2假冒身份问题

签名者的身份是非常重要的,因为签名的真实性取决于签名者的身份。然而,数字签名算法无法解决身份验证问题,如果签名者的身份被冒充,那么签名的真实性将无法得到保障。

1.3消息确定性问题

签名的内容是确定的,也就是说,对于相同的消息,数字签名算法会生成相同的签名。这种确定性可能导致攻击者对签名的信息进行重放攻击。

1.4可靠时间戳问题

数字签名中,时间戳通常用于确定签名的时效性和可信度,但是如果时间戳不可靠,就会导致签名的可信度和时效性无法得到保障。

1.5量子计算机威胁问题

量子计算机威胁问题:目前使用的数字签名算法大都基于RSA、DSA和ECDSA等算法体系,这些算法可能会受到未来量子计算机的威胁。因此,需要研究新的安全算法来应对未来的威胁。

2 数字签名漏洞

2.1中间人攻击

对数字签名中间人攻击,具体来说就是主动攻击者Mallory介入发送者和接收者中间,对发送者伪装成接收者,对接收者伪装成发送者,从而能够在无需要破译数字签名算法的前提下完成攻击。

例子:

A给B发消息会使用非对称加密,为了接下来的对话,先要把公钥发送给B,结果被X中间人攻击了。

A:“我是A,这是我的公钥key_pubA,你收好” ----->B

X截获了这个请求,修改一下:“我是A,这是我的公钥key_pubX,你收好” ----->B

接着A发消息时用A的私钥签名,X截获后随便篡改别的信息再自己生成签名,而B拿着所谓的"A的公钥" key_pubX,B验证签名也不会有问题。

A找B借钱1000到A账户,结果被X修改为借钱5000到X账户,B验证签名没问题。

这样防止事后否认的特性给A挖了个大坑。

2.2对单向散列函数攻击

数字签名中所使用的单向散列函数必须具有抗碰撞性,否则攻击者就可以生成另外一条不同的消息,使其与签名所绑定的消息具有相同散列值。

2.3利用数字签名攻击公钥密码

在RSA中,生成签名的公司是:

签名= 消息^D mod N

这个公式和公钥密码中解密的操作是等同的,也就是说可以将“请对消息签名”这一请求理解为你“请解密消息”。利用这一点,攻击者可以发动一种巧妙的攻击,即利用数字起那么来破译密码。

我们假设现在Alice 和Bob进行通信,主动攻击者Mallory正在窃听。Alice用Bob的公钥加密消息后发送给Bob,发送的密文是用下面的公式计算出来的。

密文=消息 ^E mod N

Mallory窃听到Alice发送的密文并将其保存袭来,由于Mallory想要破译这段信息,因此他给Bob写了这样一封信。

Mallory将刚刚窃听到的密文作为上述邮件的附件一起发送给Bob,即

附件数据=密文

当Bob看到了Mallory的邮件,发现附件数据的确只是随机数据,于是Bob对附件数据进行了签名,具体情形如下:

签名 = 附件数据^D mod N (RSA生成签名)

= 密文^D mod N (附件数据实际上是密文)

= 消息 (进行了解密操作)

Bob的本意是对随机的附件数据施加数字签名,但结果却无意中解密了密文。如果不小心将上述签名的内容发送给了Mallory,那么Mallory就这么破译了密文了。

对于这样的攻击,我们应该采取怎样的对策呢?

首先,不要直接对象进行签名,对散列值进行签名比较安全;

其次,公钥密码和数字签名最好分别使用不同的密钥对。

实际上,GnuPG和PGP都可以生成多个密钥对。

然后,最重要的是就是绝对不要对意思不清楚的消息进行签名,尤其是不要对看起来只是随机数据消息进行签名。

2.4潜在伪造

如果一个没有私钥的攻击者能够对有意义的消息生成合法的数字签名,那么这个数字签名的算法一定是不安全的,因为这样的签名时可以被伪造的。

然而,即使签名的对象是无意义的消息,如果攻击者能够生成合法的数字签名,我们也应该讲其当成是对这种签名算法的一种潜在威胁。这种情况称为对数字签名的潜在伪造。

为了应对潜在伪造,人们在改良RSA的基础上开发出一种签名算法,叫作RSA-PSS。其不是对消息本身进行签名,而是对其散列值进行签名。另外,为了提高安全性,在计算散列值的时候还要对消息加盐。

  • 解决方案

1 中间人攻击

使用数字证书来验证签名。数字证书是由可信任的证书机构颁发的,用于证明证书持有者的身份。通过证书验证,可以确定签名数据的真实性和完整性。

在通信时使用TLS/SSL协议来加密通信内容。TLS/SSL协议通过证书验证和密钥交换,确保了通信双方之间的数据安全,防止中间人对通信内容进行篡改和窃取。

采用强密码学算法来确保签名数据的安全性。采用强密码学算法,可以保证签名数据的机密性、完整性和真实性,防止攻击者对签名数据进行篡改或窃取。

2 对单向散列函数攻击

采用更安全的哈希算法。与MD5、SHA-1等算法相比,SHA-256、SHA-512等更安全的哈希算法可以提高信息摘要的强度和抗攻击能力,降低哈希碰撞的风险。

使用哈希链技术增加哈希的复杂度。哈希链技术是将多个消息摘要进行迭代和相互链接,从而增加消息摘要的难度和安全性,抵御生日攻击和时空折中攻击。

后置编码。后置编码是在消息摘要之后添加一些数据来增加哈希的多样性和随机性,降低哈希碰撞的概率。这些数据可以是时间戳、随机数、长度等,从而提高哈希的随机性和不可预测性。

采用盐值技术。盐值技术是在密码学中用于加固密码的一种技术,可以将随机数或者非密钥数据与明文数据进行组合,从而增加密码的多样性和随机性,增强密码的抗攻击能力。在数字签名算法中,可以采用盐值技术来加固单向散列函数,在摘要计算过程中引入随机数等数据,降低哈希碰撞的可能性。

3 利用数字签名攻击公钥密码

密钥管理。密钥在数字签名算法中扮演着重要的角色,因此必须加强密钥的存储和管理。可以采用密钥分离、密钥轮换、密钥定期更换等策略来保护密钥的安全性。

密钥加密保护。可以采用对称加密算法或非对称加密算法对密钥进行加密保护,以增强密钥的安全性。

增强签名算法的安全性。可以采用更安全的数字签名算法,如DSA、RSA、ECDSA等,增加密钥长度,增强密钥的随机性和复杂性,从而提高签名算法的安全性和强度。

增加身份验证。可以采用基于身份证明的数字签名算法,如基于证书机构的数字签名算法、基于PKI的数字签名算法等,从而增加签名数据的真实性和完整性,避免伪造签名攻击。

  • 总结

数字签名是一种机密技术,通常用于保护数据完整性和认证。创建数字签名需要使用一种密码算法。这些密码算法中的大多数都是基于数学难题的复杂性,使得解决问题非常困难,因此破解密码非常困难,但并非不可能。

密码分析方法是研究密码系统以找到破解密码的方法。数字签名算法的密码分析方法可以分为以下几类:

1. Brute-Force攻击。这是一种最基本的密码破解技术。它需要对所有可能的密码进行尝试,直到找到一个有效的密码。但是这种方式需要非常大的计算资源和时间,因此只适用于小型密码系统。

2. Differential Cryptanalysis。这是一种可以攻击许多块密码算法的技术,包括AES和DES等。它利用通常被认为是“差异性”的密钥变化属性来攻击密码。一旦差异性被找到,攻击者可以轻松地推断出密钥。

3. Linear Cryptanalysis。这种方法利用密码算法线性映射的性质来攻击密码。这种攻击方法只适用于一些特定的密码算法,如FEAL和N-Queens等。

4. Side Channel攻击。这种攻击方法利用密码算法在内存、CPU时间或其他物理资源中留下的不可避免的痕迹(称为“侧信道”),如功耗、电磁辐射或热量来攻击密码。由于这些攻击不依赖于密码的复杂性,因此它们通常可以成功地攻击密码系统。

总的来说,为了有效地保护数字签名算法,需要采用多种密码技术来减少密码分析的风险。这些技术包括使用更复杂的密码算法、保护密码密钥、使用随机数生成器等等。

  • 参考文献
  1. 作者:Invincibled 来源:简书 链接: 密码技术(九、二)之数字签名 - 简书
  2. 作者:NuoHui 来源:知乎 链接:基础密码学入门:数字签名算法 - 知乎
  3. 作者: qq_5275017来源:CSDN

     链接:数字签名概述_qq_52750170的博客-CSDN博客

     4.作者:砖业洋_ 来源:CSDN 

     链接:五、数字签名及存在的问题_数字签名的痛点_砖业洋__的博客-CSDN博客

     5. 作者:kumata 来源:博客园 链接:https://www.cnblogs.com/kumata/p/10495689.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值