1. TUF (The Update Framework)

TUF

TUF -- The Update Framework,中文翻译过来就是安全更新框架(或规范)。因为 TUF 是一种设计上的规范,它实际上并不包括任何实现。实现 TUF 需要自行编码去实现 TUF 中的理念与规范。所以, TUF 并不是一个实际可调用的框架或能集成到你项目或产品中的东西,它是规范与理念,如果你认同 TUF 的规范,那你就得基于它的规范自行去实现它这一套安全机制。

在2017年, TUF 成为CNCF的托管项目,在2019年底从CNCF毕业。

该项目在 CNCF 托管:

  • CNCF 分层:供应层
  • CNCF 分类:安全与合规性
  • CNCF 成熟度:已毕业

1.1. TUF 目标

TUF项目诞生于约十年之前,旨在增强系统防御能力,顺利抵御各类可能传播恶意软件或破坏代码库的高强度攻击。TUF项目的主要设计目标包括:

  • 建立一套可用于保护现有及新型软件更新系统的框架(框架中包含多种库、文件格式及实用工具)。
  • 降低各类高强度攻击行为的潜在影响。
  • 提供出色的灵活性,满足多种软件更新系统的不同需求。
  • 可轻松与各类现有软件更新系统相集成。

1.2. TUF 关注什么

TUF 关注与想解决的是网络中的分发的二进制的安全性。在 TUF 列举的一些不安全的网络行为,包括:

  • 任意软件安装:你可能认为下载了一个可信的安装包,但它可能是伪造的。
  • 回滚攻击:你更新了一个新的版本,但实际上它是有漏洞的旧版本。
  • 快进攻击:攻击者修改软件的预期更新版本号为一个非常高的值,导致软件无法更新到当前最新的版本,因为最新的版本小于这个值。
  • 无休止的数据攻击:攻击者提供一个更新下载,这个下载的数据永远没有尽头,导致软件一直不断的下载。

1.3. TUF 的核心概念

前面已经解释过了, TUF 并不是实现。它更多的是规范,它提出了一个它认为足够防止这些不安全行为的规范,如果你想使用 TUF ,你可能需要使用自己的语言来实现 TUF 中的这些规范。当然有一些已经实现的语言版本,比如 python 的 python-tuf

想要简明清晰的讲清楚 TUF 的理念与规范,并不是个容易的事, TUF 中的核心理念包括:

  • 多重签名
  • 角色机制
  • 频繁的更新

1.3.1. 多重签名

保证二进制安全,有一个重要的措施是我们大家都知道的,就是使用公私钥,用私钥对需要发行的二进制文件进行签名。下载二进制的一方使用公钥进行检验。

但这个其实并不足够安全,因为私钥是非常容易传播,共享与泄露的。比如我以前在负责iOS开发时,iOS打包都是需要一堆相关联的证书(包含私钥)的,我们当时的策略就是在团队内部共享这些证书及私钥。相信这种行为在很多公司或团队中是个比较普遍的。

所以,光是签名,并不足够安全。而 TUF 也是基于认为私钥可能会传播及泄露这个不安全的基础之上, TUF 设计了一种看似比较笨但也非常实际的思路,那就是:不共享密钥,取而代之的是产生足够多的私钥并进行频繁的更新,以及支持一个文件需要多个签名才有效

私钥虽然会泄露,但基于频繁的更新及要求多个签名的双重保证之上,单个私钥的泄露不足以影响安全。这个设计不得不说有点夸张,但仔细想想确实能解决问题。

1.3.2. 角色机制

要支持多重签名, TUF 设计了 Role 角色这个概念。 TUF 自己设计了几种角色,包括Root,Targets,Snapshot,Timestamp。

上面这些角色对应一些固定的 JSON 配置,每个 JSON 中可以对角色的公钥及能做的可以进一步定义。每个角色承担的任务也不同,比如 Root 是根角色,用来定义其它角色的,Timestamp 是定义有效期的, TUF 认为任何一个授权不应该永远有限,一定要有有效期。

而最重要的是 Targets 角色,Target 角色有两个作用,一个是定义当前 Role 允许的发行二进制文件及其 hashs 值等;二个是定义 Delegated Targets,Delegated Targets相当于子角色,Delegated Targets又可以定义自己的Delegated Targets,这样相当于分级授权。

1.3.3. 频繁的更新

TUF 认为,为了保证安全,密钥不应该永久有效,而应该频繁的更新。所以 TUF 提出了频繁更新密钥的理念。也就是上面所讲的各种多重签名也好,角色也好,都应该是定期更新以获取最新的授权机制。

举例说明,比如每周更新一次所有的密钥。这样下载安全更新的一方,需要定期更新最新的 TUF 配置文件。

基于这种理念的设计之下,就算个别的密钥被传播,影响也几乎可以忽略不计。因为很快这个密钥就会失败。

1.4. 适用场景

  • Docker开源了自己的 Notary,Notary 是基于 TUF 实现的并在 Docker 中保证镜像的安全。
  • 微软的 Microsoft Azure 中的镜像管理服务也实现了 TUF 。
  • Cappos 与来自密歇根大学交通研究所和西南研究所的研究团队一起开发了 TUF 的汽车应用 Uptane,Uptane 已经被汽车制造商所广泛使用。

1.5. 案例

使用基于 TUF 实现 Notray,结合 OPA 在 Kubernetes 中实现内容信任机制,保障容器镜像更新的安全

1.6. 源码和官网

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2025-02-08 11:34:15

results matching ""

    No results matching ""