opentdf/spec
GitHub: opentdf/spec
定义了一种开放互操作的 JSON 编码数据格式规范,用于在零信任环境中实现以数据为中心的安全保护。
Stars: 33 | Forks: 9
# OpenTDF 规范
**以数据为中心的安全开放互操作标准**
[](https://semver.org/spec/v2.0.1.html)
## 简介
OpenTDF(Trusted Data Format,可信数据格式)定义了一种开放且可互操作的格式,用于将数据保护直接嵌入到数据对象本身(如文件或电子邮件)中。这实现了稳健的**以数据为中心的安全性**,确保数据无论传输到何处都能受到保护。
本仓库包含 OpenTDF 的官方规范,包括数据格式、加密和协议。它是以下对象的权威参考:
* **开发者**:构建用于创建、使用或管理 TDF 对象的应用程序或 SDK。
* **组织**:实施数据保护解决方案,需要互操作性和集成标准的组织。
* **合作伙伴**:参与联邦生态系统,其中跨组织边界的一致数据保护至关重要的合作伙伴。
[客户端 SDK 和服务端服务](https://github.com/opentdf/platform) 可以基于此 OpenTDF 规范构建,确保基于标准的安全性,并实现联邦环境中不同系统和组织之间的无缝交互。
OpenTDF 的现代 JSON 编码格式源自原始的 [TDF XML 规范](https://www.dni.gov/index.php/who-we-are/organizations/ic-cio/ic-technical-specifications/trusted-data-format)。有关与传统 TDF XML 格式的互操作性的详细信息,请[联系我们](mailto:support@opentdf.io)。
**版本控制:** 本规范遵循 [语义化版本 2.0.0](https://semver.org/) 标准。
## 导航
- [OpenTDF 规范](#opentdf-specification)
- [简介](#introduction)
- [导航](#navigation)
- [规范详情](#specification-details)
- [源流与用法](#lineage-and-usage)
- [关键概念](#key-concepts)
- [核心功能与能力](#core-features--capabilities)
- [安全原则:C.I.A. 三要素](#security-principles-the-cia-triad)
- [TDF 结构](#tdf-structure)
- [参考实现与 SDK](#reference-implementation--sdks)
- [联系方式](#contact)
## 规范详情
详细的技术规范分为以下几个部分:
* **[Schema (`schema/`)](schema/):** 定义了 `manifest.json` 及其组成对象(如 `EncryptionInformation`、`KeyAccess`、`PolicyObject` 等)的 JSON schema。这是数据结构格式的参考。
* **[协议 (`protocol/`)](protocol/):** 描述了高层架构、流程工作流(例如密钥请求、解包)以及客户端、Key Access Servers (KAS) 和 Identity Providers 之间的交互。
* **[概念 (`concepts/`)](concepts/):** 包含核心概念的详细解释,包括访问控制和安全原则。
开发者应参考这些部分,获取有关数据格式、加密操作和协议交互的实现细节。
## 源流与用法
OpenTDF 代表了最初在 **IC-TDF** (Intelligence Community Trusted Data Format,情报界可信数据格式) 规范中建立的数据中心安全概念的现代化。虽然 IC-TDF 使用基于 XML 的结构,但 OpenTDF 采用更现代的方法,使用 JSON 作为其清单,增强了灵活性以及与现代 Web 技术集成的便捷性。
此外,OpenTDF 作为其他专用数据格式的基础层。值得注意的是,在北约背景下开发的 **ZTDF** (Zero Trust Data Format,零信任数据格式) 直接建立在 OpenTDF 规范之上。ZTDF 扩展了 OpenTDF,通过强制包含北约用例所需的特定加密断言,确保符合其操作要求。
IC-TDF 和 ZTDF 的详细规范单独维护,不在本文档中赘述。
## 关键概念
OpenTDF 的核心是将敏感数据封装在一个保护层中。该层包括:
1. **加密载荷:** 原始数据,经过强加密。
2. **元数据清单:** 一个 `manifest.json` 文件,包含关键信息,例如:
* 载荷是如何被加密的。
* 在哪里检索解密密钥(Key Access 信息)。
* 管理该数据的访问控制策略。
* 可选的,关于数据或策略的加密断言。
这种结构允许独立于底层存储或传输系统进行细粒度的控制和审计。
要了解更多关于访问控制以及 OpenTDF 安全性的内容,请参考以下部分:
* [访问控制](./concepts/access_control.md)
* [安全性](./concepts/security.md)
## 核心功能与能力
OpenTDF 旨在通过以下功能提供全面的数据安全:
* **强加密:** 利用稳健的现代加密算法来保护数据载荷和加密密钥本身。
* **基于属性的访问控制 (ABAC):** 基于在 TDF 策略中定义的用户、数据和环境的属性,实现高度可扩展且灵活的访问控制。
* **持久策略执行:** 访问策略与数据绑定,允许数据所有者或管理员即使在数据共享到组织边界之外后也能管理访问权限。
* **端到端可审计性:** 该协议有助于对密钥请求进行全面记录,提供可靠的数据访问尝试审计跟踪。
* **大文件与流支持:** 通过安全流机制高效处理大型数据对象,在整个过程中保持完整性。
* **策略完整性:** 将清单中定义的访问策略与密钥访问信息进行加密绑定,防止创建后策略被篡改。
* **离线创建:** 得益于策略绑定保证,允许客户端即使在未立即连接到密钥服务器的情况下也能安全地创建 TDF 对象。
* **联邦密钥管理:** 支持由不同组织托管的多个 Key Access Servers (KAS) 协作管理单个 TDF 对象访问的场景,从而以零信任方式实现安全的跨域协作。
## 安全原则:C.I.A. 三要素
OpenTDF 的设计核心包含机密性、完整性和可用性 (C.I.A.) 这三项基本安全原则:
* **机密性:** 确保敏感数据只能通过强加密和基于属性的访问控制供授权用户访问。
* **完整性:** 通过策略和载荷的加密绑定,维护数据真实性并防止未经授权的修改。
* **可用性:** 通过分布式密钥管理和离线创建功能,实现对受保护数据的安全访问。
这些原则协同工作,在为授权用户保持可用性和可访问性的同时,提供全面的数据保护。
## TDF 结构
默认情况下,TDF 对象被打包为标准的 Zip 归档文件,通常在原始文件名后附加 `.tdf` 扩展名。此归档包含两个主要组件:
1. **`manifest.json`:** 关键概念部分中描述的元数据清单。它包含解密和访问控制指令。
2. **`payload`:** 加密的数据载荷本身。
然而,TDF 也可以用其他方式编码。例如,作为 HTML 文档:

_一个 TDF 对象可以打包为标准 ZIP,或者作为 HTML 文档_
## 参考实现与 SDK
OpenTDF 规范的一个稳健的开源参考实现正在 **[opentdf/platform](https://github.com/opentdf/platform)** 积极开发和维护。
该平台提供:
* **客户端 SDK:** 即用型库,用于将 TDF 功能集成到应用程序中:
* **Java**
* **JavaScript**
* **Go**
* **服务端组件:** 后端服务(如 Key Access Server (KAS))的示例实现。
开发者可以将此平台作为实践指南、自己实现的起点,或直接利用提供的 SDK。
## 联系方式
有关 OpenTDF、互操作性或规范的问题,请联系 [support@opentdf.io](mailto:support@opentdf.io)。
标签:ABAC, Homebrew安装, JSON, JSONLines, OpenTDF, ProjectDiscovery, Streamlit, TDF, 互操作性, 信息保护, 加密, 协议, 可信数据格式, 多模态安全, 属性访问控制, 开源, 数据为中心的安全, 数据保护, 数据治理, 文件加密, 标准, 漏洞扫描器, 网络安全, 网络安全, 联邦学习, 规范, 访问控制, 邮件安全, 隐私保护, 隐私保护, 零信任