freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

探索PKI——什么是加密密钥?
2023-10-13 11:06:25

什么是加密密钥?


在上篇《探索PKI——十分钟带你认识什么是PKI》文章中,我们已经了解了PKI的概念和作用。现在,让我们深入探索一下PKI的技术关键要素之一,也就是加密密钥

什么是加密密钥,我们该如何使用它们?

面对这一问题,此前Hashed Out发布了一篇名为“Cryptographic Keys 101: What They Are & How They Secure Data”的文章,里面详细介绍了关于加密密钥的故事。

以下为原文,经公钥密码开放社区编译。

什么是加密密钥?

加密密钥是一串字符(通常是随机生成的或经过数学计算的),与加密算法配对使用来保护数据的安全。算法是执行多个重要的加密功能的数学公式。涉及加密密钥的两个最常见的功能是数据加密和解密:

  • 加密使用密钥将明文(可读)数据打乱为不可读的乱码(称为密文)。这可以保护数据的机密性免遭窥探。
  • 解密则使用正确的加密密钥将密文重新计算为原始的明文数据,只有拥有正确加密密钥的人才能读取信息。


当加密密钥被暴露或泄露时,这意味着用于保护的任何内容现在都面临泄露的风险。

在近4000年的人类历史中,有许多使用密钥来传递秘密信息的实例。这包括从古埃及墓碑铭文到第一次世界大战后英国政府通信总部(GCHQ)的活动。最著名(也是最简单)的密钥应用示例之一是凯撒移位密码。这种基本替换密码将字母表“移动”一定数量的空格(例如,A变为D,N变为P)。在这种情况下,“密钥”就是知道要移动多少个位置才能解密消息。

当你登录你最喜欢的网站时,可以看到一个常见的加密示例。如果你看到安全挂锁图标(如下图所示),则意味着你正在访问使用公钥加密(SSL/TLS)保护的网站。(我们稍后将在文章中更详细地讨论此内容。)

加密密钥分为两大类:对称密钥和非对称密钥

不同的加密方法涉及使用一个或两个密码密钥。在深入了解其用途之前,让我们先来探讨一下这两种密钥。

对称密钥 = 用于加密和解密数据的单个私钥

对称加密使用单个密钥,称为对称密钥。发送者和接收者都需要拥有该密钥的副本以加密和解密数据。因此,这个私钥必须保密,以防止任何意外的第三方使用它来解密他们的秘密消息。

想象一下,你刚刚完成了房屋装修,该项目包括用你在当地五金店购买的门锁更换所有内门和外门。因此,你安装的每扇门都有自己单独的锁,需要单独的钥匙才能打开。(这与非对称加密更为接近,因为每个钥匙只适合于对应的锁,我们稍后将深入探讨这一点。)

然而,使用对称钥匙就像重新设置家中所有门锁的钥匙,以便用一把钥匙就可以打开它们。这非常方便,因为你只需要一把钥匙,但这也意味着你必须付出很大努力来保证钥匙的安全。否则,如果有人拿到了那把钥匙,你家里的一切都会受到损害。

对称密钥的一个棘手之处在于,它们要求两个通信方以安全的方式会面,以便他们每个人都有一份钥匙的副本。(想象一下电影或书籍中那些典型的秘密间谍会面场景)如果你和对方在同一地理区域,这并不太糟糕。但是,如果你现在需要共享敏感信息但没有时间见面交换密钥怎么办?或者,当你尝试与位于另一个州、国家或世界另一端的人进行安全通信时会发生什么?那将是非常糟糕的局面。

上个世纪,数字通信的兴起改变了通信格局。现在,你可以在美国使用电话,几乎能即时与任何地理位置的人进行通信。你可以在网页表单中输入信息,会立即通过互联网将其发送到世界另一边的某人手中。

但是,它有一个缺点:如果你以明文形式发送该数据,则它不安全,并且可能会被爱管闲事或恶意的第三方拦截。

为了避免这种安全风险,你和对方需要一种安全的加密通信方式。但这需要交换你们的对称密钥,对吗?是的。这就是公钥加密技术发挥作用的地方……

非对称密钥 = 用于加密和解密数据的单独密钥(并启用身份验证)

在现代密码学中,另一种类型的加密密钥是非对称密钥——一对两个不同但相关的密钥。公钥是公开的,不必保密。它与一个保密的私钥相关联。

(非对称=不相同)是以数学相关的对形式生成的,其中包含一个公钥和一个私钥。在公钥加密中:

公钥可供几乎所有人使用,用于加密数据。私钥必须受到保护和保密,用于解密密文。你还会在网上看到一个常见的类比来描述非对称加密中分离密钥的角色,就是一个邮箱,你有一把钥匙放置物品(公钥),还有一把不同的钥匙取出物品(私钥)。

使用这两个密码密钥使两个方能够建立安全的加密连接。想象一下当你连接到一个网站时,服务器和客户端使用非对称密钥来安全交换信息,这些信息用于建立对称会话密钥。这些对称密钥需要更少的计算资源,使数据交换在大规模情况下更快速。

要了解有关公钥和私钥对如何在各种加密用途中工作的更多信息,请查看我们的另一篇文章《公钥与私钥对的工作原理?5个场景告诉你答案》,该文章更深入地探讨了该主题。

但为什么要费心切换到对称加密呢?难道不能一直使用非对称密钥吗?从技术上讲,是的,你可以单独使用非对称加密在开放通道上安全地进行通信。然而,在处理数千或数百万个连接时,为热门网站实现这一点所需的资源成本太高这就是为什么我们使用非对称密钥来交换对称密钥加密会话以提高可扩展性。

电气和电子工程师协会 (IEEE) 的研究人员此前对不对称和对称应用进行的成本进行了比较分析。他们的研究表明,通过采用对称密钥系统,“基于公钥的应用程序的全球能源成本节省了 58%”

对称密钥和非对称密钥的快速比较——

密钥也可以通过其用途和应用来识别

有时,加密密钥是指它们在加密过程中所扮演的角色。我们不会讨论所有这些,因为它们根据你正在执行的加密过程的类型而有所不同,但以下是几个示例的快速概述:

·会话密钥——这些密钥用于在各个会话(例如,连接到网站或 Web 应用程序)期间加密数据。

·HMAC密钥——这些密钥用于创建基于哈希的消息身份验证代码中使用的数字签名。

·数据加密密钥 (DEK)——这些密钥使你能够加密服务器上的静态数。DEK也可以是主密钥。

·密钥加密密钥 (KEK)——这些密钥也称为密钥包装密钥,用于加密执行静态和传输中数据加密的其他加密密钥。这意味着它们可以是对称的或不对称的,具体取决于任务。

·流量加密密钥 (TEK)——这些加密密钥用于加密传输中的数据,防止中间人攻击和其他拦截方法。

·主密钥——“主密钥”的含义根据其用途而有所不同。它也称为密钥派生密钥,因为它部分用于使用密钥派生方法计算其他密钥。

大密钥比小密钥更安全(但可扩展性较差)

一般来说,密钥越大,就越安全。例如,256位AES对称密钥比128位对称密钥更强,3078位RSA非对称密钥比2048位非对称密钥更安全。较大的密钥有助于阻止试图猜测你的密钥的暴力攻击者,因为使用现代计算机资源几乎不可能猜测所有可能的组合。

如果你将对称密钥与非对称密钥进行比较,你可能会惊讶地发现密钥大小在安全强度方面并不相同。例如,256位AES对称密钥比3072位RSA 非对称密钥更安全。美国国家标准与技术研究院 (NIST)在其“密钥管理建议:第1部分”中列出了AES256位密钥,大致相当于15360位RSA密钥。此外,由于非对称加密需要使用两个密钥,因此它比只需要一个密钥的对称加密慢。

只有你的密钥安全,加密才是安全的

加密密钥的安全性取决于你如何管理和保护它们。如果一把密钥丢失或被盗,那对你没有任何好处,因为它有被威胁的风险。一旦密钥被威胁,它所用于保护的任何内容的安全性都将受到威胁。这对你来说是个坏消息,却是网络犯罪分子的好消息。

你可以使用密钥管理系统并遵循密钥管理的最佳实践来保护你的密码学密钥。

加密密钥的作用

加密密钥是公钥基础设施的关键要素,在几个关键的加密功能中发挥着重要作用:

加密和解密

我们已经讨论过这一点,但回顾一下,加密是一种将明文数据混淆成密文的方法。根据所使用的加密类型(非对称加密与对称加密),加密密钥被用于加密、解密或加密和解密数据。

身份验证

通过使用公钥密码学,验证一个实体(例如个人、客户端或设备)是否真实。基本上,这是一种确保某人的身份真实性的方式,并且没有冒名顶替者,因为只有授权用户应该可以访问私钥。(这与双方共享的对称密钥不同。)

数字签名

数字签名是一种证明某些内容(例如软件、代码、文档)自数字签名以来未被修改或篡改的值。将加密函数(散列)和加密密钥应用于数据以生成签名。因此,它还有助于提供不可否认性,这意味着稍后向你发送某些内容的人无法否认发送了该内容。这类似于在公证人在场的情况下签署一份文件:你以后无法反驳签署该文件,因为他们目睹了你的签署过程。

加密密钥的应用场景

不确定你当前是否在IT环境中使用任何加密密钥?以下是你的组织或其他人可能已经如何使用它们的几大场景:

保护传输中的数据免受拦截攻击

通过在网站上启用HTTPS,你可以使用传输层安全性来保护数据在传输过程中的安全性。你可以通过在Web服务器上安装SSL/TLS证书来实现这一点。在你的网站上使用SSL/TLS证书可以确保你的网站用户的数据通过安全、加密的连接传输。

这些连接保护了传输中的数据,阻止了中间人攻击者窃听、读取、修改或窃取客户敏感数据的企图,这些数据在他们的客户端和你的服务器之间传输。

为了增加安全性,你可以在服务器上最低支持TLS1.2。此外,你还可以使用HTTP严格传输安全(HSTS)作为另一层安全性,以防止降级攻击(即防止网络犯罪分子将网站从HTTPS降级到HTTP)。

保护硬盘和服务器上的静态数据

加密不仅用于保护数据在传输过程中的安全性(即使用公钥加密)。相反,加密也常用于保护静态数据的安全性。这包括在计算机系统上以数字方式存储的几乎所有类型的数据。例如,这包括计算机、数据库服务器、云存储的消息。

为了加密静态数据,通常会使用对称密码密钥,因为它速度快,需要的资源较少,而不像非对称密钥需要成对使用。

但是,数据加密和解密并不是密码学密钥的唯一用途。这些数字密钥还有其他用途...

在安全开放的网络上对客户端、用户和设备进行身份验证

数字通信中的数字身份验证是数据安全的关键。它可以验证你的真实身份,因为值得信赖的权威机构已经审查了你的数字身份。

但是,如果你想验证试图访问你保护的资源的用户是否合法怎么办呢?传统上,这将涉及用户输入他们的用户名和密码。然而,登录凭据很容易通过网络钓鱼和恶意软件来破坏,这意味着这种方式已经不再是知道某人是否真实的可行方式。

一个替代方法是使用数字证书通过公钥密码学来验证你的数字身份:

  • 客户端身份验证证书在访问安全的Web应用程序、虚拟私人网络(VPN)或其他受保护的资源时,验证你的身份。这可以是你安装在计算机或移动设备上的证书。
  • 设备证书(也被称为PKI设备证书)使被覆盖的自主设备能够在你的网络上进行身份验证并安全地传输数据。例如,在医疗机构、机场和制造厂等地,经常使用这种类型的证书对物联网设备进行身份验证。

在每种情况下,与证书相关的密码学密钥证明了你的数字身份,因为只有你应该能够访问它。因此,一旦通过身份验证,你可以访问你被授权查看和使用的资源。

在发布之前对代码、软件和更新进行数字签名

通过对软件进行数字签名,你可以向客户和软件用户证明你的产品不仅是真实的,而且自签名以来没有被篡改。这对于维护客户系统的软件开发人员、发布者和服务提供商来说非常重要。

你可以使用代码签名证书将数字签名附加到你的代码上。这涉及对代码应用加密哈希函数,并使用你的私密加密密钥对生成的哈希值进行数字签名。当有人下载你的软件时,他们的浏览器或操作系统会检查哈希值是否匹配。当匹配时,它将显示你的经过验证的组织信息。

下图为两个用户访问控制(UAC)屏幕的并排对比,显示关于未知出版商(左侧)和经过验证的出版商(右侧)的信息:

如果你决定进一步提升你的身份的安全性,你可以使用扩展验证代码签名证书。使用该数字证书对软件进行签名可以确保Windows操作系统和Edge浏览器自动信任你的软件。因此,它不会显示类似于以下当用户尝试在Windows计算机上安装未签名软件时的警告:

写在最后

安全地存储加密密钥不是一项选择题。事实上,它是许多行业和地区法规的要求。除非你愿意因数据泄露而支付数千或数百万美元的合规罚款、法律费用和诉讼解决费用,否则我们建议你引起足够的重视。

从历史上看,只有扩展验证(EV)代码签名证书在硬件安全令牌上预装。现在,所有组织验证(OV)代码签名证书也将默认通过安全令牌交付。

你还可以使用硬件安全模块(HSM)来保护其他密码学密钥。这些本地设备和基于云的存储机制为你的授权用户提供了一种使用密码学密钥的方式,而不需要直接访问。

关于加密密钥相关仍有很多疑问,譬如往后退一步——到底什么是加密?或者再进一步——加密密钥里的对称加密和非对称加密的应用差异有哪些?这些问题,我们将在后续的文章中进行探讨。

# 网络安全 # 数据安全 # 企业安全 # 加密 # 加密密钥
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录