全球旧事资料 分类
哈希函数中的数字签名技术
文中所讲的数字签名技术,就是我们在密码学中保证身份同一性所用到的最重要的工具。身份同一性的意思即是,如何证明某条消息就是“我”发出的,别人不能伪造,我也不能抵赖。虽然数字签名技术也会用到成对的密钥对,但与我们所说的公钥密码学重点却有所不同。(2)可以将本文视为思考密码学工具的一个教程或者范本,能耐心读下去,也就明白了密码学是怎么样一回事、我们在密码学中是如何思考的。回首近几年,我有幸经历了两个相互冲突、却又令人着迷的时代潮流变迁。第一个潮流变迁是:专家学者们耗费四十年设计的密码学,终于派上用场;从信息加密、电话安全、到加密数字货币,我们可以在生活的方方面面发现使用密码学的例子。第二个潮流变迁是:所有密码学家已经做好准备,迎接以上美好的幻灭。正文开始之前我得重申一下,本文所讲的不是所谓量子计算启示录(末日预言),也不是要讲21世纪密码学的成功。我们要谈论的是另一件未成定局的事情密码学有史以来最简单的(也是最酷炫的)技术之一:基于散列函数的签名。
在20世纪70年代末,LeslieLamport发明了基于哈希函数(HashFu
ctio
,又称散列函数)的签名,并经过RalphMerkle等人进一步改进。而后的很多年,这被视为密码学领域一滩有趣的“死水”,因为除了相应地产生冗长的(对比其他复杂方案)签名,基于哈希函数的签名好像没有什么作用。然而近几年来,这项技术似乎有了复苏的迹象。这很大程度归因于它的特性不同于其他基于RSA或离散对数假设的签名,哈希函数签名被视为可以抵抗量子计算攻击(如Shor‘s算法)。首先,我们进行一些背景介绍。背景:哈希函数和签名方法在正式介绍哈希函数签名之前,首先你得知道密码学中的哈希函数是什么。哈希函数可以接受一串字符(任意长度)作为输入,经过“消化”后,产生固定长度的输出。常见的密码学哈希运算,像是SHA2、SHA3或Blake2等,经运算会产生长度介于256512位
f的输出。一个函数H(。)要被称作“密码学”哈希函数,必须满足一些安全性的要求。这些要求有很多,不过我们主要聚焦在以下三个方面:抗原像攻击Preimageresista
ce(或俗称“单向性”):给定输出YH(X),想要找到对应的输入X使得H(X)Y是一件“极度费时”的工作。(这里当然存在许多例外,但最棒的部分在于,不论X属于什么分布,找到X的时间成本和暴力搜寻相同。)抗次原像攻击:这和前者有些微的差别。给定输入X,对于攻击者来r
好听全球资料 返回顶部