第八章-第一节-加密与签名

加密和签名

当我们研究保护数据的方式时,无论是静态还是动态,我们讨论的许多方法都将以加密方式保护数据。

”密码学是使用数学来加密和解密数据的科学。密码学使你能够存储敏感信息或通过不安全的网络(像互联网这样的线路)传输它,这样除了预期的接收者之外,任何人都无法读取它。“

– 密码学概论,Network Associates 公司

作为我们将在本章讨论的事情的基础,我们必须首先了解密码学如何工作的,不是需要我们有数学学位,而是只到涉及所涉及的部分的程度。密码学与所涉及的密钥的安全性差不多,我们需要知道哪些密钥可以自由分发,哪些密钥需要用我们的生命去保护。

对称密钥加密

对称密钥加密也称为秘密密钥或传统密码术:一个密钥用于数据的加密和解密。要使远端能够解密此信息,它必须首先拥有密钥,并且必须安全地保存此密钥,因为一个服务器的单一泄密将危害共享此密钥的所有服务器。它还会使密钥管理变得更加复杂,因为当你需要更改密钥时,你应该经常更改它,你需要在整个磁盘中推出此更改。

公钥加密

公钥加密由 Whitfield Diffie 和 Martin Hellman 于 1975 年引入,以满足双方需要了解秘密的需要。事实上,他们并不是第一个发明这一点的人;它是几年前英国特勤局开发的,但却保留了军事秘密。

公钥加密使用一对密钥进行加密;你也会听到称它为非对称加密。公钥用于加密信息,而私钥只能用于解密。由于无法从公钥中确定私钥,因此公钥通常会发布到全世界。

数字签名

公钥加密还使我们能够使用数字签名。数字签名工作方式是,通过使用私钥加密消息然后传输签名消息。如果可以使用公钥解密消息,则消息必须源自私钥的持有者。由于加密消息的计算时间和有效载荷大小的增加,标准方法是创建消息的单向哈希,然后使用私钥对其进行加密。接收方将使用公钥解密哈希,并从消息中生成相同的哈希;那么,该消息可以被认为来自可信赖的来源。

X.509 数字证书

公钥的一个问题是你必须确保你认为属于收件人的密钥确实由收件人拥有。如果密钥通过公共网络传输,则始终存在中间人攻击的可能性。攻击者可能会伪造一个虚假的公钥,因为你认为它是你信任的收件人;但是,他们可以用他们的密钥替换。这意味着你认为安全传输的消息实际上可能被恶意第三方解密和读取。

为了避免这些问题,数字证书出现了,它简化了确定公钥是否属于报告所有者的任务。

数字证书包含三件事:

  • 一个公钥

  • 证书信息,例如所有者的姓名或 ID

  • 一个或多个数字签名

使证书值得信赖的是数字签名。证书由受信任的第三方或证书颁发机构(CA)签名,该机构担保你的身份和你的公钥是属于你的。任何人都可以创建 CA 根证书并签署他们的证书,对于诸如微服务间通信等系统的非公共访问,这是一种常见的做法。但是,对于公共证书,你需要向 CA 支付签署证书的费用。定价的目的是 CA 将会确保你确实是你所说的人;目前,最受欢迎的 CA 是 Comodo、 Symantec (前身为 Verisign)和GoDaddy。你在浏览器中看到挂锁的原因不仅仅是因为你使用的是安全通信,而且您的浏览器已经验证了证书的签名是否与 100 个左右的可信第三方之一捆绑在一起。

TSL/SSL

SSL 是两个系统之间安全传输数据的常用术语,它是对 Mozilla 于 1995 年首次开发的弃用标准的引用。它已被 2008 年 8 月发布的 TLS 1.2 取代;虽然 SSL 3.0 在技术上仍然有效,但在针对 POODLE(Paddling Oracle On Downgraded Legacy Encryption)攻击的漏洞后,它在 2015 年 6 月被弃用。2014 年,Google 安全研究团队发现的 POODLE 攻击工作原理是攻击者向服务器发出多个请求,然后分析和使用这些数据,这些数据使他们能够解密传输中的数据。平均而言,只需要进行 256 次 SSL 3.0 调用即可解密 1 字节的信息。

这意味着该漏洞在公开披露之前已存在 18 年;你可能会问为什么人们在强大的 TLS 1.0 发布 15 年后仍在使用 SSL 3.0?这是由于某些浏览器和服务器不支持 TLS 1.0 的问题,因此存在一个回退到较低级别加密的回退。尽管在发现时,几乎没有人仍在使用 SSL 3.0,但回退仍然在协议中,因此可被黑客利用。解决方案非常简单:在服务器配置中禁用低于 TLS 1.0 的任何内容。我们了解了一些 TLS 和 SSL 的历史,但它如何保证您的数据安全?

TLS 使用对称加密,其中客户端和服务器都有一个用于加密和解密的密钥。如果你还记得上一节,我们介绍了对称加密和分发密钥的问题。TLS 通过在握手的第一部分使用非对称加密来解决这个问题。客户端从服务器检索包含公钥的证书并生成随机数;它使用公钥加密此随机数并将其发送回服务器。现在双方都有随机数,他们使用它来生成对称密钥,用于传输过程中对数据加密和解密。

0%