尾巴有点容易

2021-06-13 10:59:55

Taildrop是我们在Tailscale v1.8中推出的主要新功能。 人们似乎喜欢它。 这太酷了。 指向点拖& 将文件(手机到Desktop,iPhone到Android,Windows到Linux ...)使用Wiguard安全性。 原因#376为什么你应该跟踪@tailscale。 https://t.co/tu0txtdltf. - 肯尼特白(@Kennwhite)5月28日,2021年5月28日 Taildrop工作适用于大型文件,它可以指向点而不是通过云,它使用现有的身份提供者安全,并且最好的是,它不需要任何蓝牙。 我刚刚将一个3GB文件从MacBook分享到iPhone使用@TailScale来测试它是否能够妥善处理大文件,它是! 不再试图发现AirDrop设备或处理破碎的蓝牙来发送媒体! - Felipe O. Carvalho(@_Felipe)5月30日,2021年 俄亥俄州!!! 能够在加密的套接字上轻松共享设备之间的文件是惊人的! https://t.co/pibdpmk6w5

- May 25,2021的Yosh(@Yoshuawuyts)

它导致一些用户推断世界统治计划,即使我们实际上是非常好的人,任何人都会这么说:

虽然,尾随是允许您在各种不同的OS平台上传输自己的设备之间的文件之间的文件。它永远不会将文件存储在云中或将它们发送给我们。他们的结尾是用我们从未看到的键加密的结尾加密。它有效地花费了我们,没有什么可以运行,因为它是你的带宽(大多数LAN带宽),而不是我们的。我们只是破坏了一些NAT,并谈判了会议。这就是为什么我们可以将尾随远离每个人,无限制使用,没有文件大小限制,作为尾部自由计划的一部分。它也是开源......

......虽然很少的代码很难发现。这是这篇文章的主题。

当我们写的时候,我们如何有效地遍历遍历遍历,我们有一个不那么微妙的目标,以解释这一目标,事实上,使这些事情变得很难。我们花了数千个人的时间,也许你应该只使用尾部。你知道这个故事是如何发展的。

但尾巴是不同的。它只是尾部高档顶部的未经身份验证的文件传输层。它可以是未经认真验证的,因为TailScale已经经过身份验证,并且控件可以访问每个端口以及那些允许的人,它安全地告诉您谁现在正在连接。尾随本身可以未加密,因为尾部足版本已经是端到端加密(一个名为零信任网络的架构)。

我试图写一篇叫做拖曳方式的文章,但它只是下图,他们不会让我发布它。我不得不在标题中放置一个花哨的字体来分散你的剩余图表的厌恶。

您可以实现iOS或Windows共享窗格吗?您能提供HTTP PUT请求吗? [1]那么很棒,你已经建立了尾巴。

作为一名“互联网内幕”笑话,我们想在FTP(4月16日)的50周年(4月16日),但可悲的是,我们的发布日期下滑了,这只是一个太过分了。不过,FTP对我们来说是一个很大的灵感来源:

与Telnet(SSH的前体)一起,FTP是互联网上使用的前两个应用协议之一。

将大文件从一台计算机转移到另一台计算机是我们所有人都想做的基本事物之一,而且,在这几十年前的情况下,现在越来越难以做到。

尾随代码线比FTP命令更少,比FTP更安全,而且比FTP更容易使用,即使它比FTP更容易发明。

简而言之,对我来说,尾巴是一个可能的标志,只许也许,互联网终于再次在正确的方向发展。在第一次比我记得的时间里,我们可以编写一个只要传输一些数据的应用程序,而不是担心托管费用,或隐私问题,或登录或密码或帐户恢复或DNS或打开的端口或过期的TLS证书。我们使一个接受PUT请求的服务器,以及生成所请求的GUI,我们发布了它。

但艾弗里,你可能会问自己,如果它很容易,为什么需要7周才能发展和发射?我敢肯定,你对自己说,我相信我可以在不到7周的时间内制作一个单页HTTP服务器。,你继续,我猜你没有花整数7周工作美丽的Windows GUI:

的确,你是正确的。 Windows Gui可能需要几天(并且应该得到超过几天)。 HTTP PUT响应者最多需要几个小时。那么时间在哪里?

在真理中,我们没有出发只是为了建立另一个FTP。我们想向自己展示如何建立另一个FTP。我们希望让它成为一个不会成为我们的下一个人,以简单的方式建立下一个应用程序。

在该HTTP PUT请求的场景后面,我们需要添加一些机器:

新的TailScale“localapi”让本地应用程序在HTTP上查询本地TailScale实例。例如,它可以获得可能是尾随目标的对等设备列表,或者在这些对等体上运行的服务。

新的“WHOIS”[2]服务允许您了解在尾部谱网络上建立的安全TCP或UDP会话的用户身份。 (尾部目前限制文件转账,才能允许您自己自己拥有的设备,即使在多用户网络上也可以安全地延迟一堆隐私和安全问题,例如当有人送你时该怎么办,呃,不需要的照片。当我们稍后允许用户间传输时,我们必须做更多的工作。)

新的“Peerapi”让TyperScale节点通过加密的TailScale链路彼此发送消息。第一个有用的Peerapi终点是尾随,并且有一种用于检查大猩无型状态的东西。它很快就会扩展到包括至少几个额外的诊断功能。

一旦我们将它们达到目的地,尤其是在移动平台上,某些恶化也会围绕文件处理。 (如本撰写,尾随的Android客户端还没有完成,但即将推出。)iOS给了我们一些痛苦,因为尾部后端不允许写入用户可见文件存储,如文件应用程序。相反,我们必须提供一个通知,它在单击时,可以打开前端GUI,可以将文件移动到最终位置。

我们不确定,我们究竟在哪里我们拿走peerapi;也许它将是有用的,主要用于直接在尾部范围内提供的功能,如尾随。毕竟,您倾听的每个其他端口也可以通过P2P网络到达一旦建立,所以如果您正在编写自己的应用程序,您只能使用其他端口,如Retro 20世纪90年代的UNIX程序员发明了Rlogin。走着瞧。

考虑一下如果您在没有所有良好的基础架构的情况下尝试在设备之间传输文件,它可能需要做些什么。

首先,您必须决定是否(a)将所有内容光束到云端,或(b)在两个设备之间建立P2P链路并直接发送文件。

好的,这是一个伎俩问题;几乎没有人再选择选项(b)了。这太难了。如果您可以在设备之间建立安全的直接链接,您可以使用FTP,我们已经知道那些日子已经消失了。

啊,但哪个S3地区?最好做一大堆地区要安全。不想无缘无故地在世界各地传输文件。这意味着我们需要一个负载平衡器。别担心,AWS可以卖给我们一个主要合理的价格。

我们的服务器需要一个DNS名称和HTTPS证书。我猜,让我们使用Letsencrypt。哪个让我们使用的客户?嗯,他们中的任何一个都会做。这很容易,任何带有几年的经验的高级SWE都可以让Letsencrypt在他们的睡眠中。

但等待,允许谁上传文件?是时候添加身份系统了。也许用谷歌登录?好吧,不是每个人都使用谷歌。也许拉在现有的用户账户管理库中。 2FA?帐户恢复电子邮件?我相信这个是NPM。完毕。

我们上传哪个地区?好吧,最接近的,当然!我们将设置负载均衡器以将用户连接到最近的实例。我们是否需要优势计算?我不知道,但是边缘计算听起来很棒,让我们添加一些。我听到飞.IO很好。

如果收件人无法检索它们,我们会在上传后保持文件多长时间?我不知道。选择一些东西。一周。太久了,我们浪费钱;太短,当人们下载太慢时,我们会得到奇怪的错误。别担心,他们可以重试。

我们如何通知收件人有一个等待他们下载的文件?哦,我知道这个!推送通知!好吧,在移动上,我们可以使用推送通知。在桌面上,我们需要使用HTTP Long LOLLS。老实说,我不知道如何做Http Lont Lont的民意调查,似乎是拔出所有头发的好方法。我们怎样怎样辩护。说,每5秒钟。

好的,上传工作,轮询实施,......等等,我们如何使用正确的下载轮询来连接上传流?我想我们需要一个数据库来跟踪上传的文件。并在成功下载后清除数据库中的东西并删除S3文件。那是一个消息队列吗?是的,是的,我觉得它是。没问题,AWS会卖给我一个消息队列,它会很棒,每秒每秒几十次交易,就像一个20世纪60年代的IBM大型机。等等,1960年代大型机可以做的事情比这更好。我在哪里?无论如何,每秒几十一笔交易很多。

毕竟,下载非常简单。它通过相同的身份系统进行认证,定期轮询,并且当文件准备好下载时,会生成经过身份验证的S3重定向,以便它可以安全地......

哦。等待。我忘记了加密!我们不能仅仅存储人们的文件,未加密,在S3中,我们可以吗?安全漏洞将是一场灾难,它会使攻击者访问世界上所有飞行中的文件。让我们阅读关于S3加密 - 休息功能。甜蜜,它有那些!让我们打开它们。但是想到它,为什么加密 - 休息只是一个旗帜?这并不是那么我仍然可以轻松地将文件发送给错误的人?

…是的。如果我想要端到端加密,我必须自己滚动。因此,上传者需要将文件加密,UH,下载程序的公钥,以及...

…不好了。我在哪里可以获得下载的公钥?我们回去吧。好的,下降器提前将他们的公钥上传到服务器,然后再传输任何内容。现在上传客户端,当它想要上传文件时,首先要询问可用下载程序的公钥列表。然后,用户选择一个,它加密文件并上传,我们选择的下载者将有正确的解密密钥。

看。甚至没有跟我说话的键旋转。我没心情。

成功!与那么简单的努力,也许是一些赤土形象,以及一些持续的一体化,你已经建立了一个近似克隆的Firefox发送,现在取消的项目,除了昂贵的运行之外,还有一个僵尸网络和滥用磁铁,因为上面没有探索的一些进一步的设计问题。

如果这是传输文件的情况,毫无疑问,每个服务都需要收取资金,或者对文件大小进行任意限制,或显示您的广告或更糟糕的情况。

你知道什么,第二种想法,这一切都是一个可怕的想法,也许我们应该毕竟应该尝试了P2P方法。 <重新读取Nat Traversal Works>好的,不,不是那样。

[1]安全侧注意:它拒绝HTTP PUT请求不能通过Web浏览器发起而不使用CORS。这可以防止XSRF攻击拖尾。否则我们需要添加会话cookie或其他东西。

[2]为了向旧的致敬,这也许应该被称为识别。互联网的WHOIS服务完全是一种不同(有点误导)的事情。没有人知道识别的内容了。那好吧。