spindle-health/spindle-token

GitHub: spindle-health/spindle-token

Spindle Token 是一个基于 PySpark 的开源库,实现了 OPPRL 协议,用于在保护隐私的前提下进行跨数据集的记录链接。

Stars: 26 | Forks: 4

# Spindle 令牌 [![PyPI version](https://badge.fury.io/py/spindle-token.svg)](https://badge.fury.io/py/spindle-token) 基于 Spark 构建的开放隐私保护记录链接(OPPRL)协议的开源实现。 ## 基本原理 隐私保护记录链接(PPRL)是数据去标识化系统的关键组件。PPRL 通过使用加密令牌,在混淆数据集中记录所描述主体的标识属性或其他敏感信息的同时,仍然保留链接可能属于同一主体的记录的能力。这种实践有时被称为“令牌化”,是数据去标识化的组成部分之一。 PPRL 的任务是使用单向密码函数生成的令牌替换每条记录中标记个人可识别信息(PII)的属性。这可以防止令牌化数据的观察者获取 PII。令牌的生成具有确定性,即具有相同或相似 PII 属性的输入记录将产生相同的令牌。这使得实践者能够在不访问 PII 的情况下,关联跨数据集且极有可能属于同一数据主体的记录。 令牌化也用于在组织间共享数据时,以限制或在某些情况下完全消除在不受信任的第三方访问包含敏感数据的数据集时发生主体重识别的风险。每一方使用不同的密钥生成加密令牌,因此任何被泄露的数据资产,在最坏的情况下,也只能与同一方维护的其他数据集匹配。在数据共享事务中,会使用特定的“转码”数据流将发送方的令牌重新加密为临时令牌,这些临时令牌与任何其他数据集中的令牌都不匹配,并且只能使用接收方的密钥进行接收。在“转码”数据流的任何阶段都不会使用原始 PII。 spindle-token 是[开放隐私保护记录链接](https://token.spindlehealth.com/opprl/PROTOCOL/)(OPPRL)协议的规范实现。该协议提出了一种标准化的令牌化方法,可以在任何数据系统中实现,以提高互操作性。spindle-token 实现是一个 Python 库,它使用 Apache [Spark](https://spark.apache.org/) 在高性能计算集群中的多个核心或多台机器上分发令牌化工作负载,从而高效地对任意规模的数据集进行令牌化。 对于基于 Spark 的令牌化和转码工作流,请安装可选的 Spark 扩展: ``` pip install "spindle-token[spark]" ``` 基础的 `spindle-token` 包在没有 Spark 的情况下仍然可以导入,因此非 Spark 环境和无服务器依赖项检查无需引入 PySpark。 仅需 OPPRL 令牌元数据的应用程序可以在没有 Spark 的情况下检查支持的 V2 令牌名称: ``` from spindle_token.opprl.metadata import get_opprl_v2_tokens token_columns = {token.token_id: token.name for token in get_opprl_v2_tokens()} ``` 此库的 v1.0 之前版本以“carduus”为名发布,已弃用的 API 可以在[这里](https://token.spindlehealth.com/carduus/api/)找到。 ## 入门指南 请参阅项目网页上的[入门指南](https://token.spindlehealth.com/guides/getting-started/),了解如何使用 spindle-token 的详细说明,包括示例代码片段。 项目网页上还提供了完整的 [API](https://token.spindlehealth.com/api/) 和[在 Databricks 上的使用示例](https://token.spindlehealth.com/guides/databricks/)。 ## 从 OPPRL V1 迁移到 V2 新的集成应使用 `OpprlV2`。本存储库中的当前示例使用 V2,除非它们明确是历史版本。 如果您已有导入 `OpprlV1` 的代码,迁移路径通常是一个小的机械性更改: 1. 将 `OpprlV1` 导入替换为 `OpprlV2`。 2. 保持相同的属性映射和令牌选择。 3. 针对现有数据重新运行令牌化和转码测试。 `OpprlV2` 保留了 V1 的令牌结构和规范化规则,但它在派生 AES 密钥之前对私钥进行了规范化。这意味着当您希望相同的逻辑协议行为在相同 RSA 密钥的等效 PEM 编码之间产生稳定结果时,V2 是正确的选择。 如果需要与历史 V1 令牌输出进行逐字节兼容,请在这些流程中继续使用 `OpprlV1`。 ## 独立安全审查 Spindle 聘请了[独立领先的网络安全公司 Echelon Risk + Cyber](https://echeloncyber.com/) 对 Spindle Token 实现进行审计。该审查评估并确认了其在安全软件开发、加密算法选择和令牌化方法方面与行业最佳实践保持一致。 [查看完整报告](https://echeloncyber.com/spindle-health-security-certification-report)。 本报告反映了 Echelon Risk + Cyber 在审查日期的独立专业意见,并不构成对未来性能或安全性的保证、认证或担保。评估的范围仅限于截至 2025 年 5 月 30 日审查过的制品、文档和研讨会讨论,不包括未公开的代码、后续修改或第三方依赖项。 ### 为 spindle-token 做出贡献的组织 Spindle Health
Echelon Risk + Cyber ### 为 spindle-token 做出贡献的个人 * [Julie Ferris](https://github.com/queenofclaims) - @queenofclains * [Rich Ferris](https://github.com/rtferris) - @rtferris * [Erik Dreyer](https://github.com/edreyer) - @edreyer * [Eddie Pantridge](https://github.com/erp12) - @erp12
标签:OPPRL, PII 保护, ProjectDiscovery, PySpark, Python, Spark, 令牌化, 分布式计算, 加密, 医疗数据, 大数据, 安全数据共享, 开源, 异常处理, 数据保护, 数据去标识化, 数据隐私, 无后门, 漏洞扫描器, 目录扫描, 记录链接, 逆向工具, 隐私保护记录链接