密码学简介

来源:互联网 发布:mac图片ps 编辑:程序博客网 时间:2024/05/18 01:52

原文链接:http://www.nature.com/nature/journal/v549/n7671/full/nature23461.html

当用户访问以https开头的网站时,用户的计算机(笔记本电脑,桌面设备,手机或其他设备)使用传输层安全(TLS)将其安全地连接到Web服务器。TLS结合了一系列加密操作,以确保没有第三方可以理解发送的内容(机密性); 没有第三方可以修改消息而不被检测(完整性); 并且没有第三方可以模仿一个通信方(真实性)。

调用Web服务器“Alice”和用户的计算机“Bob”。Alice和Bob相互识别的是它们共享一个秘密值,一个“密钥”。他们使用这个键执行“对称”加密操作。我们稍后会回到关于他们如何知道秘密钥匙的问题。

假设爱丽丝有一个消息m发送给Bob:一个网页或一个文件。爱丽丝和鲍勃都知道加密密钥enc。爱丽丝使用该密钥enc来应用“对称加密算法” 来加密消息m,产生密文c,Alice通过互联网发送给Bob。Bob使用相同的密钥enc应用匹配的对称解密算法来解密密文c,获得原始消息m

爱丽丝和鲍勃也都知道认证密钥auth。爱丽丝使用这个密钥auth应用密文c,产生一个认证标签,Alice也通过互联网向Bob发送证明她可以访问该密钥。Bob通过使用相同的密钥应用相同的MAC来验证计算。

对称加密确保https中数据的机密性。它确保间谍不能看到消息的内容。验证确保消息的真实性和完整性:它阻止间谍修改消息或替换不同的消息,假装是爱丽丝。

https提供了几种对称加密算法和MAC的选择。一些MAC是从“哈希函数”构建的。散列函数将任意长度的字符串映射到固定长度为n的字符串:例如256位字符串。在本文中,我们仅考虑设计用于使计算上的以下操作的哈希函数:(1)给定h的图像中的值z,找到预图像,即,具有hm)=  z的字符串m ; (2)给出一个字符串mhm),找到第二个预先图像,即一个字符串m '≠  mħ)=  ^ h '); 和(3)发现碰撞,即hm)=  hm ')的串m  ≠  m ' 。散列函数提供消息的紧凑指纹; 消息的一个小变化产生完全不同的指纹。该属性用于MAC的构造。

到目前为止的描述让Alice和Bob到达拥有一个共享的对称密钥。https连接的这一部分使用“公钥加密”。

在公开密钥加密中,每一方都有两个密钥:一个公钥和一个私钥。私钥只有派对才知道,而公钥可以公开。给予爱丽丝的公共加密密钥,任何人都可以加密对她的消息,而只有她拥有她用来解密的匹配私钥。

在https方案中,Alice是一个Web服务器,而Bob是浏览器。Bob首先联系爱丽丝下载公钥,然后对其加密一次性对称密钥,最后在通信的其余部分使用对称密钥进行加密和认证,如上所述。Alice解密Bob的初始消息以获取共享的对称密钥,然后也用于其余的通信。

https中的另一个选择是使用另一个公钥函数“密钥交换”,这个函数非常接近于目前为止所描述的但使用不同的数学函数。Bob而不是Bob将对称密钥加密到Alice的公钥,而Bob和Alice都进行了共同生成对称密钥的计算。

还有一个重要的问题:Bob知道Alice提供的公钥真的属于她吗?在https的情况下,这是由浏览器下载和验证“证书”来处理的。这里使用的加密功能是公共密钥“签名”,其使用公钥加密来验证消息。

在签名系统中,Sam使用他的私有签名密钥将签名算法应用于消息m,产生签名。每个人都可以通过使用Sam的公共签名密钥将验证算法应用于m来验证此签名。在内部,这些算法通常将哈希函数应用于消息,以及涉及密钥的其他数学运算。

像MAC一样,签名系统确保消息的真实性和完整性,但有两个重要的区别。首先,签名可以由任何使用公开密钥的人进行验证,而认证标签则是在双方共享auth之间。第二,只有Sam具有用于生成有效签名的私钥,而Alice到Bob的认证标签可能是由Alice或Bob计算出来的。

在https中,山姆是互联网安全研究小组等知名信托方,大家都知道山姆的公钥。Sam签名的消息是将Alice的身份与Alice的公钥相关联的证书。Bob验证了Sam的签名,然后可以自信地使用Alice的公钥进行加密。