acm-header
登录

ACM通信

实践

VPN的一切都是新的


首字母为“VPN”的锁

图片来源:Den Rise

回到顶部

VPN (virtual private network)已经存在24年了。这个概念——加密安全隧道用作网络的虚拟线路——是为一个与我们今天所知的互联网截然不同的互联网而创造的。随着互联网的发展和变化,VPN用户和应用程序也在变化。VPN在21世纪初的互联网中经历了一个尴尬的青春期,它与其他广泛流行的抽象概念(如多用户操作系统)的交互很差。在过去的十年中,互联网再次发生了变化,这种新的互联网为vpn提供了新的用途。一种全新的协议,WireGuard的开发,提供了一种构建这些新vpn的技术。

这篇文章是对VPN历史的叙述。所有的叙述都必然是概括的,不能捕捉每一个细微差别,但它是一个善意的努力(批判性地)庆祝一些最近的网络技术历史,并捕捉软件工程师和网络管理员对VPN的情绪和态度。

回到顶部

第一时代:封地和租界

在因特网出现之前,有网络:公司网络、大学网络、政府网络。这些网络由相对昂贵的计算机组成,信任的人相对较少(至少以如今拥有数十亿用户的互联网的标准来看),由全职网络管理员管理,地理上集中在建筑物或校园中。

当一个组织被拆分到多个站点时,它会用租用线路连接其网络。在20世纪70年代,这是由电话网络提供的专用无交换铜线,用于运行DECnet等专有协议。3.租用一条跨越数百或数千英里的电线并不便宜。随着电话网络变得越来越复杂,租赁线路演变为帧中继和连接到ATM(异步传输模式)网络。这些网络降低了租用线路的成本,从只有最大的企业才能负担得起的天文数字的价格降到少数大公司也能负担得起的非常高的价格。

安全模式是物理的和契约的。现场网络是安全的,因为进入网络的墙上插孔有警卫和门禁卡把守。据推测,租赁线路也同样受到了电话公司的保护。大合同当然让人感到安全。

在20世纪80年代和90年代期间,互联网在不同的地方以不同的名字忙于建设,一些组织使用租用的线路互连他们的网络,isp提供相对便宜的拨号接入这些对等网络之一。许多分布在多个站点上的小型组织负担不起租用线路的费用,但可以将每个站点连接到本地ISP。

这就提出了一个有趣的可能性:一个较小的组织是否可以从通过互联网连接其站点的租用线路中获益?VPN诞生了。

PPTP。20世纪90年代早期的几个项目致力于ip层安全。第一个可以被称为VPN的是swIPe。6该标准草案追溯到1993年。在swIPe中,IP数据报被封装以进行加密,然后在另一个网络上传输,因此您可以宣称这是一个VPN。它从未被广泛应用。

第一个明确的VPN是点对点隧道协议。它于1996年创建,并于1999年在RFC 2637中标准化。5

PPTP是一家公司的产品,该公司当时生产的是小型企业使用的网络软件:微软。(上世纪90年代,作为一家网络公司,微软的声誉并不好,但就营收而言,如今它是第二大云服务提供商。)

PPTP以自己的方式发挥了作用。它玩了一个很好的假装游戏,打包点到点协议(PPP),加密流,并在TCP(传输控制协议)套接字上运行它。作为一种虚拟的PPP, PPTP能够封装几种网络协议,包括当时在小型组织中流行的TCP/IP的替代方案:Internet Packet Exchange (IPX),这是Novell的NetWare所使用的协议。

PPTP使用的加密算法——rc4 (Rivest Cipher 4)和DES(数据加密标准)——早就过时了,但即使这些算法被认为是足够的,PPTP实现中的几个缺陷也造成了安全漏洞。这样的漏洞将成为VPN的一根挥之不去的刺。

IPSec。20世纪90年代是忙碌的。1993年,互联网工程任务小组(IETF),一个开放标准组织,刚刚成功地标准化了TCP/IP的第4版,在那一年的排行榜上排名第一的歌曲是《心痛破碎的心》,在一片阴霾中成立了一个IPSec (IP安全)委员会。IETF的目标是为IP带来安全。这是一个比创建我们今天所知道的VPN更广泛的关注点,其结果是一个可以做很多事情的标准。

IETF关于通用安全IP封装标准的第一份rfc(征求意见)草案于1995年发布。PPTP之后出现了一个工作原型,规范于1998年在RFC 2401中发布7此后不久就会出现实现。

抛开历史不谈:IPSec的初稿规范早于PPTP,而第一个原型则晚于PPTP,这就提出了这两个项目之间是否有任何联系的问题。这似乎不太可能;相反,这似乎是历史突然发生的一个例子。事实上,在PPTP于1996年创建到1999年标准化之间,开发了另外两个VPN协议。L2F(二层转发)是一种思科的PPP-over-IP协议,开发于1997年,并在RFC 2341中标准化。11L2TP(二层隧道协议)是另一种借鉴了L2F和PPTP的协议,但直到后来才被标准化。更令人困惑的是,第一个使用VPN术语的RFC是1997年发布的RFC 2194。1在这一点上,VPN只存在了一年,但这个RFC提到了三个不同的协议:PPTP、L2F和L2TP(但没有IPSec)。

IPSec可以做任何事情,而且它所做的一切都是可配置的。它有两种操作模式—隧道和传输—多个加密套件和多个独立实现。其结果是一个构建网络的万能工具包,至今仍在使用。然而,就像所有试图为每个人提供一切服务的事物一样,对我们中的许多人来说,设置它(更重要的是维护它)的前景令人生畏。

回到顶部

第二时代:卫星办公室和消费者隐私

到21世纪初,在美国,几乎所有的台式电脑和笔记本电脑都可以接入互联网,但由于政策、价格敏感或缺乏足够的网络软件等原因,许多台式电脑和笔记本电脑仍然无法上网。(通常情况下,缺乏软件并不意味着不可能将本地网络接入互联网,而是意味着这样做需要专家进行大量的人工干预,而专家供不应求。)

更多的人想把办公室连接在一起;小企业希望他们的员工从卫星办公室连接到他们的交换服务器;早期(当时很少)的远程工作者希望在家里或路上获得和在办公室一样的体验。VPN必须变得更容易配置,并与用户友好的身份验证方案集成。

SSL / TLS。在另一项发展中,Web浏览器开发了一种健壮的通信加密方法:SSL(安全套接字层),后来是TLS(传输层安全),这涉及到向用于识别服务器的客户机分发一组受信任的根证书。由于Web浏览器可以进入所有计算机,因此为VPN重用这些证书提供了一种简单的方式来部署VPN网关,远程用户和卫星办公室可以以中心辐射式安排连接到这些网关。

基于这些原则构建的一个著名的开源VPN产品是OpenVPN,它允许用户使用用户名/密码进行身份验证,并连接到使用TLS证书进行身份验证的VPN网关。这个项目是活跃的,并形成了今天许多企业和消费者vpn的基础。

消费者的vpn。随着越来越多的消费者活动转移到互联网上,依赖于限制消费者跨地域访问以实现收入最大化的传统企业开始引入锁定区域的服务,通过查看用户的IP地址机械地执行。与此同时,一种新的定向广告行业也发展起来了,它通过用户的IP地址来追踪用户的兴趣和消费习惯。

针对这些行业,消费者VPN产品被开发出来,并逐渐流行起来。这与企业VPN非常不同,后者的目标是在两个受信任的端点之间移动数据包,而不向中间运营商透露它。另一方面,消费者VPN将从消费者到VPN网关的流量隐藏起来,然后作为消费者的代理将报文发送到公共服务器。这隐藏了消费者的IP地址,混淆了这些新兴行业。

当谈论vpn时,这个新产品引入了一个有趣的术语挑战。技术是一样的——一个封装的IP隧道——但是应用是完全不同的。消费者VPN只保证消费者设备和VPN网关之间传输的部分流量的“隐私”;之后再公开。但是消费者VPN广泛且有用,所以业界现在把这两种产品都称为VPN。

限制:身份。VPN在对公共网络上的流量进行加密方面做得不错,但该模型传统上的一个弱点是IP地址与授权身份不一致。这个问题有两种变体。

首先,在一台计算机上的多个用户都共享一个IP地址。网络堆栈传统上被认为是由操作系统内核提供的计算机范围的服务。因此,计算机上的任何用户都可以充当VPN隧道的IP地址。

其次,如果使用VPN网关将机器的两个子网连接在一起,则没有办法将用于建立VPN的凭据映射到识别它路由的子网中的机器。您已经将您的网络扩展到包括VPN另一端的所有网络。如果您不自己管理两个网络,那么您只是创建了一个新的网络管理员。

这些限制令人沮丧,因为这意味着传统的企业VPN不能提供用户安全。所有用于在VPN两端管理凭据的工作都必须在VPN上的用户之间的一层之上完成。

幻灭:BeyondCorp和零信任。互联网的规模给第二时代VPN的安全模式带来了压力。较小的组织使用VPN作为更便宜的租赁线路,然后让他们的出差员工从任何酒店房间使用这条租赁线路,面临一个日益严重的问题:由于资源远远少于大型组织,小型组织需要保护一个访问其网络的接入点,而这种接入点的攻击成本越来越低。随着互联网用户数量从数百万增长到数十亿,企业VPN网关从数千增长到(潜在的)数百万。这些网关都运行少数实现之一,使用公共用户名,缺乏双因素身份验证,并具有公共的非托管密码。针对现有目标的一部分编写的攻击,随着目标数量的增长,将变得更具有成本效益。

日益增长的威胁与传统企业VPN的“蛋壳”安全模型(硬的外部,软的内部)相互作用很差:该模型认为VPN可以保证你的网络安全,所以你可以对你传输的内容松懈。随着vpn数量的增长,它们成为了更具成本效益的目标,企业vpn更容易受到攻击。

这导致一些安全专家呼吁拆除vpn。10提出了新的安全模型来取代VPN。两种著名的方法是BeyondCorp,12谷歌为其公司网络基础设施提供安全保障的项目;还有一个发展中的产业理念叫做零信任网络


IPSec可以做任何事情,而且它所做的一切都是可配置的。它有两种操作模式—隧道和传输—多个加密套件和多个独立实现。


BeyondCorp和零信任在概念上有很多重叠,可以将它们总结为计算机网络中令人尊敬的端到端原则的应用。具体来说,当任何两个服务通信时,每个服务都必须相互验证与它通信的对象,并确保该服务获得通信的授权。

这种相互认证的概念与传统的企业VPN“网关”或“集中器”是不兼容的,“集中器”是一种位于网络上的设备,通过网络路由所有的流量,因为网关两端的设备不能确定它们是谁。

企业VPN的第二个时代即将结束。它的安全模式与现代互联网规模不兼容。然而,现在宣布VPN的死亡还为时过早。消费者vpn继续是有用的工具,虽然配置企业vpn的传统方式显然已经过时,但封装IP包的基本概念仍然有效。换句话说,企业应用程序需要重新思考,但该技术仍然可能有用得上的地方。

回到顶部

第三时代:一次性设备和虚拟网络命名空间

过去几年里最令人兴奋的VPN开发是WireGuard,4使用最新的密码算法和原理的IP封装的全新实现。

WireGuard,是建立在密码原语curve25519和chacha20之上的。13该协议在两个对等体之间创建了一条隧道,每个对等体都使用公私钥对标识,而不是使用带有网关和集中器的vpn的常见客户机-服务器体系结构。它采用了噪声协议的握手技术和原理9使得对手几乎不可能知道一台机器正在运行一个Wire-Guard终端。网络上没有要扫描的标准端口。

然而,WireGuard的激进之处并不在于它采用了最新的加密算法(许多人认为这是从零开始开发产品的经典优点)。WireGuard非常简单。它只有一个加密套件。协议没有版本协商阶段,在这个阶段,多个实现试图就如何通信达成一致。它只尝试做一件事:两个端点之间的安全加密隧道。

在一个网络软件试图成为所有人的一切,配置语言需要自己独立的标准委员会的世界里,2WireGuard带来了一股新鲜空气。它简化了加密隧道,使您可以不再将其视为最终产品,而是将其视为可以围绕软件和网络进行设计的基本抽象。

一次性使用设备和零信任vpn。除了令人兴奋的新VPN协议之外,计算机的使用方式也发生了根本性的变化,为VPN创造了新的用途,并解决了老的安全问题。

过去十年,网络计算领域最重大的技术转变是一次性设备的兴起。这是由计算的两个变化所驱动的。

首先,交互式用户设备是有效的单用户操作系统,因为它们一次只允许一个用户。最极端的例子是ios——有超过10亿的活动设备——它甚至不支持单个设备上的多个用户账号。但即使是更传统的台式电脑和笔记本电脑通常也只有一个登录用户。支持快速用户切换的较为罕见的设备可以配置为VPN作为一个用户断开连接,并在交换机上作为另一个用户连接。带有终端的大型共享Unix小型机现在是有趣的业余项目,而不是典型的公司设置。

第二个变化是使用虚拟机或容器技术(如Linux名称空间)对服务器进行近乎通用的虚拟化。驱动这种变化的因素有很多,实现这种变化的方法也有很多,但结果是相同的:服务器最终运行在多用户、多任务的Unix操作系统上,实际上只有一个用途的进程和一个用户。


终端用户设备数量的增加和数据中心虚拟化层的增加,微妙但深刻地改变了VPN抽象如何适应网络。


在这两种情况下,结果是操作系统的虚拟隧道IP地址现在与用于授权的服务标识对齐。在最终用户设备上,IP地址就是用户,而在数据中心中,每个服务实例都有自己的IP。Wire-Guard确保每个带有特定IP源的数据包都被密码学地链接到可验证的身份,我们可以开始安全地发出诸如“地址一个是用户u,简化了软件开发。Tailscale8是WireGuard上构建的vpn识别网络的实现。

终端用户设备数量的增加和数据中心虚拟化层的增加,微妙但深刻地改变了VPN抽象如何适应网络。在现代环境下,只需稍加注意,传统上笨拙而无用的VPN安全模型就会突然完美契合,并解决了问题,而不是制造问题。这就是VPN的第三个时代如此令人兴奋的原因:笨拙的90年代的孩子,经常被认为笨拙和不适应的千禧一代,突然间让计算变得更容易和更好。

回到顶部

参考文献

1.Aboba, B.等人。漫游实现的回顾。IETF网络工作组;1997;https://tools.ietf.org/html/rfc2194

2.O. Ben-Kiki, Evans, C., döt Net, I. YAML规范索引,2009;https://yaml.org/spec/

3.数字设备公司:1957年至今,1978年,53年;https://www.computerhistory.org/pdp-1/8a9cb4c9f949fbb3e577016d174499ca/

4.WireGuard为Linux提供了一个更快、更安全的VPN。《连线》杂志(2020年3月2日);https://www.wired.com/story/wireguard-gives-linux-faster-secure-vpn/

5.Hamzeh, K.等。点到点隧道协议。IETF网络工作组,1999;https://tools.ietf.org/html/rfc2637

6.Ioannidis, J., Blaze, M. swIPe安全协议。互联网草案,1993年;https://www.mattblaze.org/papers/swipe.id.txt

7.肯特,S.,阿特金森,R.互联网协议的安全架构。IETF网络工作组,1998年;https://tools.ietf.org/html/rfc2401

8.Pennarun, A. Tailscale的工作原理。Tailscale, 2020;https://tailscale.com/blog/how-tailscale-works/

9.Perrin, T.噪声协议框架,2018;http://noiseprotocol.org/noise.pdf

10.沙利文,P. vpn的消亡——是时候说再见了。SC杂志(2019年3月21日);https://www.scmagazine.com/home/opinion/the-death-of-the-vpn-its-time-to-say-goodbye/

11.瓦伦西亚,A.等。思科第二层转发协议。IETF网络工作组,1998年;https://tools.ietf.org/html/rfc2341

12.沃德,R., Beyer, B. BeyondCorp:企业安全的新方法。登录;39, 6 (2014), 6 - 11;https://research.google/pubs/pub43231/

13.WireGuard;https://www.wireguard.com/protocol/

回到顶部

作者

大卫·克劳他是Tailscale的联合创始人兼首席技术官。此前,他曾参与多种软件项目,包括围棋编程语言。


版权归所有者/作者所有。授权ACM出版权利。
请求发布的权限permissions@acm.org

数字图书馆是由计算机协会出版的。版权所有©2021 ACM, Inc.


没有找到条目

Baidu
map