网络攻击解疑:密码学上的攻击

有不少密码学里的方案被用来加密在有线或者无线的通信协议上的传输数据。然而这些技术已被证实容易受到攻击,且加密的数据可能会被窃取。本文探讨了各种能保护网络基础设施的加强加密技术的方法,包括使用基于 FOSS (自由开源软件)方案的方法

众所周知,密码网络通信的核心是公钥密码系统(PKI),后者被用于加密两个网络端点之间的 TCP / IP 通信。PKI 会使用各种加密算法来确保数据安全。加密算法背后的思想是让穷尽所有可能的密钥成为一项非常困难且耗时的任务。例如,若用 8 位密钥对消息进行加密,则意味着需要尝试 256 种不同的密钥组合才能破解出密钥,并解密数据。对此,任何计算机都可以在不到一秒的时间内完成这个任务。不过,如果密钥长度扩展到了 16 位,那就需要尝试 65,536 个组合,而穷尽这些组合会需要几秒钟。再往前一步,若使用 256 位密钥,那么其全部组合即使是使用最强大的计算机也需要几年才能穷尽。

虽然密钥长度是一个重要因素,但用于处理加密和解密的数学算法也同样重要。该算法理应能快速执行加密和解密操作,同时必须保持的数据完整和密钥的安全性。这类算法有很多,如 SHA1 和 3DES 等。加密算法能细分出两种:对称加密和不对称加密。对称加密算法只会使用一个密钥进行加密和解密,而非对称加密算法则有两个不同的密钥,这两个密钥互为补充。请参考下图,其中呈现了加密功能,该功能旨在保证数据的保密性和完整性,并实现身份验证的功能。

了解密码学对互联网的意义非常重要。互联网在基于 SSL(安全套接层)和 TLS(传输层安全)协议的前提下,可对用户发送的数据进行加密和解密,以便用户能安全地交换信用卡号等个人信息。SSL 和 TLS 的原理基于非对称密钥的交换。网络空间的安全性要求主要有两个:出于安全原因,传输的数据必须进行加密;并且用户必须能得知所访问的网站是否为合法的。其中后者非常重要,因为攻击者可以操控不合法的网站来窃取个人信息。为证实网站的合法性,Web 服务器应该具有 SSL 证书,这一证书会让网站可以接收基于 HTTPS 协议的流量,并使用 TCP 端口 443 进行通信。此 SSL 证书会由 Verisign 或 Thawte 等可信证书颁发机构提供并签署,这些证书颁发机构会确保网站的持有者是否真实、可靠、会遵守安全标准,并能够获得证书并将其安装在其服务器上。SSL 证书会被绑定到域名(如 abcd.com)上。

为了理解所有的安全问题,我们需要先研究证书的工作方式。使用非对称 PKI 的数字证书有两个密钥:一个公钥和一个私钥。私钥会保留在网站服务器上,后者的 URL 应该使用 SSL 来进行保护。公钥会提供给所有支持 SSL 的浏览器。为了支持多个证书颁发机构,浏览器会配备它们的公钥以及各种密码算法(加密和解密算法)。每个公钥都有一个截止日期,一旦到期即需要更新。当我们在 Web 服务器上安装数字证书时,我们本质上是在安装一个专门的密钥,其由可信的认证颁布机构创建。

现在让我们来看看这个机制是如何在更高层次上对浏览器起作用的。当一个用户试图访问一个 SSL 安全的网站时,浏览器会首先通过发送自己的密码强度来测试服务器。服务器会执行相同的操作,同时会发送自己安装的 SSL 证书的副本(对应网站的 URL 的证书)来作为响应。接着浏览器会通过使用这一证书上的一组公钥来检查证书的有效性和真实性。在验证通过之后,浏览器会发回一个带有数字签名的响应给服务器来启动接下来的安全通信。如果无法验证服务器证书的真实性,那么浏览器就会向用户提示这种情况。这里要指出一个重点:尽管 SSL 有利于实现安全性,但是其所基于的 TCP/IP 协议栈在默认情况下是没有加密层的,而若在这之上再加一个加密层,就会产生很多额外的开销。

针对加密算法的攻击

网络管理员通常会投入很多时间和资金来实现围绕应用程序,服务器和其他基础架构组件的安全性,但往往不太重视密码学上的安全性。在介绍各种网络攻击之前,让我们首先了解密码学是一门关于密钥,数据以及数据的加密 / 解密,还有使用密钥的学问。有一些密码学上的攻击方式会试图破解密钥,而另一些攻击方法则会试图通过一些高端技巧来窃取数据。我们先来看看一些常见的针对加密算法的攻击。

SSL MITM 攻击(中间人攻击):在这种攻击方式中,攻击者会侵入网络并建立一个可用的中间人连接。攻击者可以暗中观察流经它这一中间人的 HTTPS 流量,并等待目标网站响应某些浏览器的 HTTPS 请求。如前所述,作为 SSL 握手过程的一部分,服务器应该将其数字证书发送到浏览器。攻击者在这里可以获取该证书并记下各种详细信息,例如域名,截止日期,密码强度等。随后攻击者就能创建自己的证书(也称为自签证书),这一自签证书会包含与拦截的证书相同的信息。从这一刻起,作为中间人的攻击者就能拦截每一个浏览器请求并用假证书进行响应。在这种情况下,Web 浏览器会正常地向用户弹出警告,但在大多数情况下这些警告都会被用户所忽略,从而让攻击者得逞。不过攻击者还能更进一步,他能对服务端另外建立一个单独的 HTTPS 连接来完成请求,并且把服务端的响应反馈给已建立连接的浏览器。这使得攻击者可以完全控制 SSL 流量,并帮助他们窃取个人信息。由于这种攻击需要攻击者侵入到网络的结构里面,因此其发生的可能性较小,但一旦发生,就可能导致严重的数据丢失。而且,由于攻击者没有破坏请求 - 响应这种通信模式,因此探测中间人攻击的存在会很困难。

SSL MITB 攻击(劫持浏览器的中间人攻击):这与上面提到的攻击类似,在这种情况下,攻击者会在浏览器中注入 JavaScript 代码段以创建一个 “浏览器里的中间人(man-in-the-browser)”。这段代码能让攻击者监控所有 SSL 活动并记录会话。在发生这种情况时,攻击者还能记录同一会话的加密版本,并编写程序来查找密钥长度和密钥,并最终窃取数据。由于现在有了不少开源的浏览器,而且这些开源浏览器又有种种安全漏洞,因此这种攻击在最近变得越来越流行。

密钥劫持:这是基于另一种类型的侵入的攻击,需要攻击者访问并控制网站的 Web 服务器(可以通过使用本系列前几篇文章中已经讨论过的许多入侵技术之一)。一旦服务器受到攻击者的控制,攻击者就能使用提升特权攻击获得对证书存储的访问权限,然后从中获取私钥。然后通过抓取数据报来下载整个 HTTPS 会话,并将其存储起来以供离线解密。解密过程需要私钥(该私钥已被窃取)以及浏览器的可信授权密钥库中可用的公钥。假设入侵的目标是使用电商技术在线销售商品的一个网站,那么破译出来的数据集可能会将重要的个人信息泄露出去,例如用户 ID,地址,信用卡号码等。

SSL 生日攻击:这种攻击基于一个叫做生日问题的数学理论。就统计意义上来说,在一组随机选择的人中,往往会有一些人会有相同的生日。随着人数的增长,出现生日相同的人的可能性会相应地增加。在密码学中,数据完整性是由在传输两端计算出来的散列或校验和来确定的,是它们确保了数据不会被篡改。生日攻击的目标是散列算法,并且往往需要多个攻击者的合作。这些攻击者可以分别捕获数据块并在它们之间共享。然后对每个块进行编程分析以创建一组额外的数据,使得它的散列与数据块的散列匹配。换句话说,对于给定的数据块和散列组合,可以编写一个算法来创建一个散列值完全一样但内容相差很远的数据集。将原始数据块和输出的数据集结合起来进行进一步分析更有助于破解加密密钥。这种攻击非常耗时且复杂,但可以通过使用多个功能强大的计算机和软件来完成。

选择数据集攻击:正如前面所讨论的那样,攻击者总会想方设法破解数据以及密钥来破解整个密码系统。选择数据集攻击方式由两种不同的类型组成:

  • 第一种叫选择明文攻击。假设攻击者可以拿到原始数据及其加密密文。攻击者就可以穷举多个加密密钥来加密原始数据,并且用加密的输出逐一与已加密的版本进行比较。如果结果是肯定的,那就意味着破解出了密钥。
  • 第二种叫选择密文攻击。假设攻击者拥有密文及其解密出来的明文。攻击者就能再次穷举多个密钥,直到输出与已获得的明文相匹配。

这些攻击方式相对不那么耗时,但需要攻击者能获得大量的数据,以及能在规定时间内得到结果的庞大算力。

SSL 暴力破解:在这里,攻击者会发送非常小的数据集来通过 SSL 协议进行加密。然后攻击者会抓取加密结果并将其与原来的数据集进行对比。通过为大量的数据进行加密和对比的操作,最终就可以破解出密钥来。这个过程非常缓慢,破解密钥可能需要数天的时间,并且我们已经发现这种攻击往往需要一个集团组成的网络来进行。为了加速这个过程,这种攻击方式常常与组密钥解密攻击方式相结合。

组密钥破解:如前所述,基于密钥的加密的可靠性取决于密钥的长度,因为密钥越长,破解它就要越多时间。在针对组密钥破解攻击中,会有多个有着一台具有强大算力的机器的攻击者聚集在一起。这一方法不会像暴力破解那样要大量数据。在组方法中,攻击者只需要捕获一组数据和密文,然后穷尽所有可能的密钥来尝试解密数据。由于使用 256 位密钥的加密会需要很多年才能破解,因此应该使用多台强大的计算机来缩短这一时间。攻击者还可以在不同的机器上分组尝试不同的密钥来以进一步加快进程。过去有一些实验表明破解 128 位密钥会需要好几天。不过,随着 CPU 速度和吞吐量的提高,快速破解一个 1024 位的密钥恐怕也指日可待了。

交易密钥攻击:密码学是门信任的学问,而证书必须由可信的证书颁发机构签署。这一机构本身应该是极其安全可靠的。然而就以往来看,证书提供者自己的私钥被攻击者暴露或窃取的例子已有不少。攻击者在拿到机构的私钥后就能使用该私钥签署为自己的域名(他们自己的网站)创建的证书。访问这种网站的任何浏览器都不会怀疑此类网站,毕竟它们的证书会通过可靠性测试,并且此类证书的公钥已经存在于浏览器证书存储之中。这可以并且已经在过去导致了个人信息被人所窃取。

SSL DoS 攻击:攻击者的主要目标通常是窃取数据。由于这在密码学中是一个十分麻烦且讲究技巧的过程,因此一些攻击者会倾向于使用传统方法,例如拒绝服务攻击。SSL 协议的存在增加了 TCP 协议通信的开销,也就是以减慢通信速度为代价实现了安全性。在 SSL 拒绝服务攻击中,攻击者会通过浏览器建立 SSL 通信,然后在该通道上发送大量不同长度的伪造数据包。由于每个数据包都要在服务器端解密和处理,因此 CPU 资源最终会被这些数据包耗尽,并导致服务中断。也有针对 OSI 第 3 层的一种攻击形式,在其中会有大量伪造的分片的数据包朝着 TCP 端口 443 一哄而上,从而产生类似的效果。

保护 FOSS 系统

在自由和开放源码软件领域,为了保护 Web 服务器,一般需要通过采用密码学的技术来实施 SSL 协议。此外,开源项目的开发者可以在将代码发送给受信任方之前对其进行数字签名以防止窃听和篡改。对 Web 服务器而言,确保安全的第一步是使用来自可信机构的数字证书。它还应该具有最新最强的密码算法,密钥长度至少应为 256 位。第二步是保护好在 Web 服务器上存储了网站私钥证书存储区,保证只有管​​理员和网络管理员才能访问它。为了保护自由 / 开放源码软件网络免受暴力方式的攻击,其他网络安全防护也应该到位(本系列以前的文章已经讨论过这点)。虽然大多数关键的基础设施都会采用防火墙、UTM 设备和功能强大的防病毒或反木马软件,不过它们还必须内置入侵检测系统(IDS)。这一系统能够拦截拒绝服务攻击还有暴力攻击,并为阻止其他严重异常提供帮助。在使用 Linux 工作站的时候,加密也可用于加密文件或整个磁盘。

本文的版权归 Tnecesoc 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Scott_Mr 个人专栏

iOS App签名的原理

567100
来自专栏企鹅号快讯

什么是多域名通配符SSL证书?

多域名通配符SSL – 安全多域名和子域名 多域名通配符SSL证书是结合通配符SSL和多域名SSL两者的组合特征而成。在多域名通配符SSL证书下,用户可以保护多...

66680
来自专栏阮一峰的网络日志

图解SSL/TLS协议

本周,CloudFlare宣布,开始提供Keyless服务,即你把网站放到它们的CDN上,不用提供自己的私钥,也能使用SSL加密链接。 ? 我看了CloudFl...

34950
来自专栏IT派

HTTPS 到底加密了什么?

关于 HTTP 和 HTTPS 这个老生常谈的话题,我们之前已经写过很多文章了,比如这篇《从HTTP到HTTPS再到HSTS》,详细讲解了 HTTP 和 HTT...

21310
来自专栏MelonTeam专栏

IOS签名机制详解

背景 在开发手Q需要真机调试的时候经常有同事抱怨签名报错的问题,一方面是手Q工程非常庞大、有很多Target每个都需要签名,另一方面IOS签名本身就非常繁琐复杂...

42680
来自专栏Java架构沉思录

深入浅出密码学(上)

前言 无论你有没有意识到,日常生活中我们几乎每天都在跟密码学打交道。只要你接触过互联网,那么基本上离不开密码学。举个最简单的例子,现在的很多网站都是通过HTTP...

44950
来自专栏java思维导图

为何你会被强插广告/盗号?谈HTTPS连接的那些事

作者:PConline原创 链接:http://pcedu.pconline.com.cn/980/9804194.html 相信很多朋友...

33460
来自专栏即时通讯技术

一分钟理解 HTTPS 到底解决了什么问题

但对于程序员,很有必要了解下 HTTP 到底有什么问题?以及HTTPS 是如何解决这些问题的?其背后的解决思路和方法是什么?

13130
来自专栏FreeBuf

首个Linux勒索软件马失前蹄:加密存在漏洞可被人攻破

在Windows里很早就有了ransomware(赎金勒索软件),直到Linux中的Linux.Encoder.1,也就是第一个linux勒索软件的出现。这款软...

41780
来自专栏女程序员的日常

SSD的传输总线、传输协议、传输接口

前言:关于SSD,有众多总线类型、协议类型、接口类型,每个接口还包括不同型号,在这里花点时间全部整理一下,整理日期2017-08-08。 1.传输总线 总线就像...

31310

扫码关注云+社区

领取腾讯云代金券