您现在的位置是:主页 > 云安全 > 计算 >

新云主机_人工智能 人的智能

2020-11-05 19:52计算 人已围观

简介几个月前,我们宣布将提供一种新的公共计时服务。我们提供的部分内容是新的网络时间安全(NTS)协议的首次主要部署,以及新编写的在Rust中的NTS实现。在这个过程中,我们收到了...

宣布cfnts:Cloudflare在Rust中实施NTS

几个月前,我们宣布将提供一种新的公共计时服务。我们提供的部分内容是新的网络时间安全(NTS)协议的首次主要部署,以及新编写的在Rust中的NTS实现。在这个过程中,我们收到了来自NTP社区的有用建议,特别是来自NTPSec和Chrony项目。我们还参加了一些互操作性活动。现在我们向社区返回一些东西:我们的实现cfnts现在是开源的,我们欢迎您的pull请求和问题从一个空白的源文件到一个有效的部署服务的过程是一个漫长的过程,它涉及多个团队中的许多人,"正确的时间是互联网上使用的大多数安全协议的必要条件。尽管如此,互联网上的安全时间传输以前需要根据具体情况进行复杂的配置。随着NTS的引入,安全的时间同步最终将为每个人提供。在所有依赖精确时间的系统中,这是朝着提高安全性迈出的一小步,但却是重要的一步。我很高兴Cloudflare正在分享他们的NTS实现。支持NTS的多种软件对于快速采用新协议非常重要。"-Marcus Dansarie,NTS规范的合著者如下图所示,NTS worksNTS是由两个子协议组成的。第一种是网络时间安全密钥交换(NTS-KE),它总是在传输层安全(TLS)上进行,并为第二个协议处理密钥材料的创建和参数协商。第二个是NTPv4,NTP协议的当前版本,它允许客户端从远程同步它们的时间服务器。输入为了保持NTPv4的可伸缩性,服务器不能维护每个客户端的状态。一个非常小的服务器可以为数百万NTP客户机提供服务。在提供安全性的同时维护此属性是通过服务器向包含服务器的客户端提供的cookie实现的州。在第一阶段,返利淘客,客户端向NTS-KE服务器发送请求并通过TLS获得响应。这个交易所进行了一些功能:协商AEAD算法将用于第二个阶段。谈判第二个协议。目前,该标准仅定义NTS与NTPv4的工作方式端口。创建第二次使用的cookies舞台。创造来自TLS会话的两个对称密钥(C2S和S2C)通过出口商第二阶段,客户机与协商的NTP服务器安全地同步时钟。为了安全地同步,客户端发送带有四个特殊e的NTPv4包xtensions:唯一标识符扩展包含用于阻止重播的随机nonce攻击.NTSCookie扩展包含客户端存储的一个Cookie。由于目前只有客户端记住两个AEAD密钥(C2S和S2C),服务器需要使用此扩展中的cookie来提取密钥。每个cookie包含在服务器的密钥下加密的密钥有.NTSCookie占位符扩展是来自客户端的一个信号,用于从服务器请求其他Cookie。需要这个扩展来确保响应不会比请求长太多,以防止放大攻击.NTSAuthenticator and Encrypted Extension Fields Extension包含来自AEAD算法的密文,C2S作为密钥,NTP报头、时间戳和前面提到的所有扩展都作为关联数据。其他可能的扩展可以作为加密数据包含在该字段中。没有这个扩展名,时间戳可以是欺骗。之后收到请求后,云服务器服务商,服务器将响应发送回客户端,手游返利折扣,以响应唯一标识符扩展以防止重播攻击,NTS Cookie扩展用于向客户端提供更多Cookie,并向NTS Authenticator和加密扩展字段扩展发送AEAD密文以S2C为键。但是在服务器响应中,它不需要以明文形式发送NTS Cookie扩展,而是需要用AEAD加密以提供NTP的非链接性请求第二次握手可以重复多次,而不必回到第一阶段,因为每个请求和响应都会给客户端一个新的cookie。因此,TLS中昂贵的公钥操作在大量请求中分摊。此外,像FPGA这样的专用计时设备只需要实现几个对称的密码功能,并且可以将复杂的TLS堆栈委托给不同的设备。为什么生锈?虽然我们的许多服务都是用Go编写的,而且我们在Go的加密团队中有相当丰富的经验,但是在响应NTP包的过程中出现垃圾收集暂停会对准确性产生负面影响。我们选锈是因为它的零开销和有用性特色。记忆安全性继心血、云出血和C缺乏内存安全性导致的漏洞不断增加之后,显然C不是处理不可信输入的新软件的好选择。内存安全的明显解决方案是使用垃圾收集,但是垃圾收集有大量的运行时开销,而Rust的运行时开销较小间接费用。非-空指针是一种边缘情况,通常处理不当。Rust明确标记了可选性,因此可以安全地取消引用Rust中的所有引用。类型系统确保选项类型正确已处理。线程安全数据防竞争是防锈的另一个关键特性。Rust的所有权模型确保默认情况下所有跨线程访问都是同步的。虽然不是灵丹妙药,但它消除了错误。不变性将类型分为可变和不可变对于减少bug非常重要。例如,在Java中,当您将一个对象作为参数传递给一个函数时,在函数完成之后,您将永远不知道该对象是否发生了变化。Rust允许您将对象引用传递到函数中,并且仍然可以确保对象不是变异。错误处理Rust结果类型有助于确保识别出可能产生错误的操作,并对错误做出选择,即使选择通过了错误开着。一会儿Rust提供安全性,淘客app原生,零开销,编码对于我们来说,线性类型和新的理解涉及到新的理解。在本例中,安全性和性能的重要性意味着我们在去吧。依赖关系我们使用因为我们的规模和DDoS保护我们需要一个高度可扩展的服务器。对于没有连接概念的UDP协议,服务器一次可以轻松地响应一个数据包,但是对于TCP来说,这就更复杂了。最初我们想用东京。然而,当时东条英机的调度问题给其他团队带来了一些问题。因此,我们决定直接使用Mio,以中的示例为基础沙沙声。我们决定在OpenSSL或BoringSSL上使用Rustls,因为机箱的一致错误代码和对身份验证的默认支持很难意外禁用。虽然有一些功能尚不受支持,但它完成了我们的工作服务。其他工程选择比编程语言的选择更重要的是我们的实现策略。一个工作的、功能齐全的NTP实现是一个涉及锁相环的复杂程序。除了通常的闭环控制的复杂性之外,由于它们的非线性特性,它们的声誉很难被接受。当锁相环被锁定且干扰较小时,云品,可以估计出锁相环对干扰的响应。然而,在NTP中,锁捕获、大干扰和必要的滤波都很难从数学上进行分析,因为它们没有被用于小规模分析的线性模型中捕捉到。与电气工程中的锁相环不同,NTP与全相位工作时仍存在非线性元件。对于NTP测试,对该循环的更改需要数周的操作才能确定性能,因为环路的响应非常快慢慢来。电脑时钟通常在短时间内是准确的,而网络则受到不一致延迟的困扰。这需要一个缓慢的反应。由于客户慢慢适应新的环境,我们对服务所做的改变需要数小时才能产生效果。虽然rfc5905提供了许多关于调整时钟的算法的详细信息,但是后来的实现(如chrony)通过更复杂的非线性改进了算法过滤器比起实现这些更复杂的算法,我们让chrony调整服务器的时钟,并从chrony复制报头中的状态变量,根据RFC中给出的公式调整离散度和根延迟。这个策略让我们专注于协议.PraguePart互联网工程任务组(IETF)所做的就是组织一些活动,比如黑客竞赛,在那里,新标准的实施者可以聚在一起,努力使他们的工作相互配合。这暴露了标准和实现中语言的错误和错误。我们参加了ietf104黑客大会,开发我们的服务器,并使它与其他实现一起工作。NTP工作组成员非常慷慨地投入了他们的时间,在这个过程中,我们发现了一些与使用旧的OpenSSL处理ALPN的确切方式有关的问题版本。在在布拉格的IETF104,在黑客竞赛结束时,我们已经为NTS-KE提供了一个工作的客户端和服务器。考虑到我们一开始什么都没有,这是一个很大的进步。然而,如果没有实现NTP,我们实际上并不知道我们的服务器和客户机的计算是正确的。那就得等下一轮测试。Wireshark在NTS调试加密周期间,我们正在忙着编写代码。所有的NTP协议都必须实现,以及NTP和服务器的NTP-KE部分之间的连接。我们还必须部署进程来同步世界各地的票证加密密钥,并重新配置我们自己的时间i

Tags: 宣布  实施  Rust  cfnts  Cloudflare 

站点信息

  • 文章统计32550篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们