六安住房和城乡建设部网站,网站建设+廊坊,wordpress怎样做手机站,vvic一起做网站目录
一、CrypTen概述
二、应用场景
三、CrypTen优势
四、CrypTen技术解析
1.基于pytorch的构建基础
2.核心密码学原语
3.加密模型训练流程
五、传统隐私保护技术与CrypTen的对比
1.传统隐私保护技术介绍
2.CrypTen与传统隐私保护技术的区别
六、CrypTen的环境配置…目录
一、CrypTen概述
二、应用场景
三、CrypTen优势
四、CrypTen技术解析
1.基于pytorch的构建基础
2.核心密码学原语
3.加密模型训练流程
五、传统隐私保护技术与CrypTen的对比
1.传统隐私保护技术介绍
2.CrypTen与传统隐私保护技术的区别
六、CrypTen的环境配置
七、简单代码示例
八、相关基础概念
密码学原语
同态加密
秘密共享
Shamir 的秘密共享方案 CrypTen a framework for Privacy Preserving Machine Learning built on PyTorch. facebookresearch/CrypTen: A framework for Privacy Preserving Machine Learning 一、CrypTen概述
Crypten 是由 Facebook 人工智能研究院开源的一个深度学习框架扩展专注于提供加密的深度学习计算能力。它基于 PyTorch 构建将加密技术深度集成使得模型训练与推理能够在密文数据上直接进行确保数据在整个计算流程中的隐私性。
其核心技术包括同态加密、秘密共享等多种密码学原语。这些技术允许数据以加密形式参与运算计算结果解密后与明文计算结果相同从而实现在不暴露原始数据的前提下完成复杂的深度学习任务。 二、应用场景
隐私保护的机器学习在机器学习领域数据隐私是一个重要的问题。Crypten 可以用于构建隐私保护的机器学习模型使得模型在训练和推理过程中不泄露数据隐私。例如在联邦学习中多个参与方可以使用 Crypten 加密自己的数据然后共同训练一个模型而无需将数据集中到一个中心服务器上从而保护了各方的数据隐私。
数据共享与分析在数据共享和分析场景中Crypten 可以确保数据在共享过程中的隐私。例如政府部门之间需要共享统计数据以进行联合分析但又不想泄露具体的个体数据。通过 Crypten 的加密技术各方可以将数据加密后共享然后在加密数据上进行分析最终得到的结果也是加密的只有授权方可以解密查看从而实现了数据的隐私保护。
金融领域的隐私计算在金融领域数据隐私和安全性至关重要。Crypten 可以用于实现金融交易的隐私保护例如在多方参与的金融衍生品定价中各方可以使用 Crypten 加密自己的敏感数据然后共同计算出一个公平的定价结果而无需泄露各自的交易策略和资产信息。
...... 三、CrypTen优势
1.以机器学习为中心。框架通过CrypTensor对象呈现协议这与PyTorch的Tensor对象看起来和感觉一样。这允许用户像在PyTorch中那样利用自动微分和神经网络模块。
2.基于库的设计。就像PyTorch一样CrypTen实现了一个张量库。这使得实践者更便于调试、实验和探索机器学习模型。
3.考虑到现实世界挑战。CrypTen不简化或削弱安全协议的实现。意味着它不会为了追求诸如提升计算速度、降低资源占用或者方便开发等目标而在密码学安全协议的实施环节偷工减料。 四、CrypTen技术解析
1.基于pytorch的构建基础
Crypten 依托 PyTorch 这一广泛使用的深度学习框架继承了其诸多优秀特性。这使得开发者能够利用 PyTorch 成熟的张量计算、自动求导等功能无缝过渡到加密计算领域。例如在定义神经网络模型结构时沿用 PyTorch 的 nn.Module 类来构建仅需在数据处理与模型运算环节引入 Crypten 的加密操作大大降低了学习成本与开发难度。
2.核心密码学原语
同态加密
同态加密允许在密文上直接进行特定的数学运算结果解密后与明文运算结果相符。Crypten 利用同态加密实现密文数据的加法和乘法操作这对于深度学习中的线性层计算、卷积计算等至关重要。以线性层为例权重与加密后的输入数据可在密文状态下相乘再加上加密的偏置项整个过程无需解密保障数据隐私。不过同态加密的计算开销较大随着计算复杂度提升性能瓶颈愈发明显。
秘密共享
秘密共享将秘密数据拆分成多个份额分发给不同的参与方。只有当足够数量的份额组合在一起时才能重构出原始秘密。在 Crypten 中常用于模型参数或数据的分布式存储与计算例如在多方联合训练模型时各方持有模型参数的不同份额通过交互计算中间结果最终协同完成训练任务有效防止单点数据泄露风险。
3.加密模型训练流程
·数据加密在训练前使用 Crypten 提供的加密函数对原始训练数据进行加密将其转化为密文张量这些密文张量可在后续计算中替代明文数据确保数据在传输与初始计算阶段的安全性。
·加密运算模型的前向传播、反向传播过程中的计算都基于加密数据与加密模型参数进行。如在反向传播求梯度时利用同态加密特性计算密文梯度保证梯度信息不泄露进而更新加密后的模型参数。
·结果解密可选在某些需要查看中间结果或最终预测结果的场景下对加密计算结果进行解密但这一步骤通常在受信任环境或满足隐私合规条件下进行避免随意解密带来的数据暴露风险。 五、传统隐私保护技术与CrypTen的对比
1.传统隐私保护技术介绍
差分隐私
·原理通过向查询结果或数据分析输出中添加精心设计的噪声使得攻击者难以从输出中推断出个体数据的具体信息。例如在统计数据库查询时每次查询结果都会附带一定随机噪声即使攻击者多次查询并对比结果也很难还原出某一特定个体的数据。
·应用场景广泛应用于数据挖掘、统计分析领域。像一些互联网公司收集用户行为数据进行群体分析时利用差分隐私技术在公开聚合数据结果的同时保护用户个人隐私防止通过数据分析定位到具体用户行为模式。
·优势简单易行对原始数据的处理相对直接不需要复杂的加密体系构建计算开销较小能快速应用于大规模数据的初步隐私保护。
·劣势添加噪声可能会导致数据准确性下降尤其在对精度要求极高的场景如精准医疗诊断、高精度金融风险建模等噪声带来的误差可能使结果失去实用价值。
访问控制
·原理基于身份认证和授权机制限定只有经过授权的用户或系统才能访问特定数据资源。常见的如企业内部系统员工通过用户名和密码登录根据其岗位角色被赋予不同的数据访问权限研发人员可能有权访问产品研发数据而财务人员只能访问财务相关数据。
·应用场景各类企业、机构的信息管理系统。政府部门存储公民敏感信息的数据库通过严格的访问控制确保只有合法的公务人员在执行公务时依据流程获得相应权限才能查看、处理特定公民信息防止信息泄露。
·优势针对性强直接从数据访问源头把关能有效防止未经授权的访问易于理解与管理通过常规的权限管理策略就能实施。
·劣势无法防范授权用户的恶意操作若内部人员违规泄露数据访问控制机制难以察觉且对于数据在授权使用过程中的隐私保护相对薄弱一旦数据流出访问控制边界如被下载到本地设备后续流向难以监管。
2.CrypTen与传统隐私保护技术的区别
隐私保护方式
传统技术如差分隐私侧重于数据结果层面的模糊化Crypten 则聚焦于计算过程中的数据加密。在多方计算场景下使用差分隐私的各方共享带有噪声的数据进行分析而 Crypten 让各方以加密数据交互数据全程不暴露真实值计算结果由加密运算得出。
数据可用性
差分隐私牺牲部分数据准确性换取隐私Crypten 由于采用加密计算只要解密正确数据原始分布与精度得以保留在如医疗影像识别训练模型、复杂金融模型训练等对数据精度敏感场景Crypten 更具优势能提供高质量的隐私保护计算服务。
应用复杂性
访问控制相对简单直观依赖于身份认证与权限分配体系Crypten 基于复杂的密码学原语需要一定的密码学知识与深度学习框架基础来开发应用但其能应对更复杂的分布式、协作式计算隐私挑战如跨机构的联合模型训练传统访问控制很难满足这种动态、多方的数据交互隐私需求。 六、CrypTen的环境配置
一、系统与软件要求
·操作系统Crypten 支持多种主流操作系统包括 Linux、macOS以及 Windows需安装 Windows Subsystem for LinuxWSL推荐 Ubuntu 环境。
·Python 版本要求 Python 3.6 及以上版本。
二、安装依赖库
·PyTorchCrypten 基于 PyTorch 构建首先需安装合适版本的 PyTorch。
·加密库Crypten 依赖一些加密相关的库如 crypten-ckks用于同态加密、crypten-mpc用于多方计算相关加密操作等。
三、安装 Crypten
在确保依赖库安装正确后通过 pip 安装 Crypten 主库。 七、简单代码示例
import torch
import crypten
#torch 是 PyTorch 深度学习框架用于创建和操作张量Tensor它是 Crypten 的基础。crypten 是用于加密操作的库。
crypten.init() #初始化 Crypten 环境。在使用 Crypten 进行加密操作之前需要先调用 crypten.init() 来设置加密环境包括初始化加密密钥等。x torch.tensor([1.0, 2.0, 3.0])
x_enc crypten.cryptensor(x) # 加密将张量 x 加密创建了一个加密张量 x_enc。crypten.cryptensor 是 Crypten 中用于将明文数据加密为密文数据的函数。在这里张量 x 被加密其内容变得无法直接读取只有通过相应的解密操作才能恢复原始数据。x_dec x_enc.get_plain_text() # 解密将加密张量 x_enc 解密得到原始的明文张量 x_dec。get_plain_text() 方法是 Crypten 中用于解密密文数据并获取明文数据的函数。解密后的张量 x_dec 与原始张量 x 相同即 [1.0, 2.0, 3.0]。y_enc crypten.cryptensor([2.0, 3.0, 4.0]) #创建了一个新的加密张量 y_enc其中包含三个浮点数 [2.0, 3.0, 4.0]。与 x_enc 类似y_enc 也是通过 crypten.cryptensor 函数加密得到的其内容同样无法直接读取。
sum_xy x_enc y_enc # 加密张量相加对两个加密张量 x_enc 和 y_enc 进行加法运算得到一个新的加密张量 sum_xy。Crypten 支持对加密数据进行加法运算这意味着可以在不泄露原始数据的情况下对加密数据进行计算。这里的加法运算是逐元素进行的即 x_enc 中的每个元素与 y_enc 中对应位置的元素相加。
sum_xy_dec sum_xy.get_plain_text() # 解密求和结果将加密张量 sum_xy 解密得到求和结果的明文张量 sum_xy_dec。通过 get_plain_text() 方法我们可以查看加法运算的结果。解密后的 sum_xy_dec 应该是 [3.0, 5.0, 7.0]这是 x 和 y 对应元素相加的结果。 八、相关基础概念
密码学原语
密码学原语是构建密码系统和实现各种加密任务的基础组件它们是一些最基本、最核心的密码学算法或操作就如同搭建高楼大厦的基石。
从广义上来说像哈希函数、对称加密算法、非对称加密算法等都属于密码学原语。哈希函数可以将任意长度的数据映射为固定长度的哈希值用于数据完整性验证等场景例如常见的 MD5、SHA-256 等算法对称加密算法使用相同的密钥对数据进行加密和解密加密速度快适合大量数据的加密场景像 AES 算法在很多领域广泛应用非对称加密算法则有公钥和私钥之分公钥可公开用于加密私钥保密用于解密常用于数字签名、密钥交换等经典的如 RSA 算法。
在 Crypten 的语境下同态加密和秘密共享就是其关键的密码学原语。
同态加密
同态加密是一种特殊的加密技术允许对加密数据密文进行特定的运算而无需先将数据解密。运算后的密文结果在解密后与对原始明文数据进行相同运算的结果相同。这一特性使得同态加密在保护数据隐私的同时能够进行有意义的计算。
同态加密基于复杂的数学难题如代数几何、编码理论等通过这些难题的计算复杂性来确保加密的强度和安全性。具体来说同态加密允许对加密数据进行加法、乘法等运算后得到加密结果而这个结果在解密后与对原始数据进行相同运算的结果一致。
根据支持的运算类型和次数同态加密可以分为以下几类
部分同态加密Partially Homomorphic Encryption, PHE只支持加法运算或乘法运算中的一种。例如Paillier 同态加密算法支持加法和数乘运算。
有些同态加密Somewhat Homomorphic Encryption, SWHE同时支持加法和乘法运算但运算次数有限。
全同态加密Fully Homomorphic Encryption, FHE支持任意次数的加法和乘法运算是最强大的同态加密形式。
同态加密的显著缺点就是计算开销极大相较于传统明文计算无论是计算时间还是资源消耗都要高出数倍甚至数十倍。这主要源于加密算法本身的复杂性以及为了保障计算准确性所引入的额外操作。
秘密共享
秘密共享Secret Sharing是一种密码学技术它将一个秘密分割成多个部分称为“份额”或“分片”并将这些部分分发给不同的参与者。只有当一定数量的参与者将他们的份额组合在一起时才能重构出原始秘密。这种技术可以有效地提高秘密的安全性和可靠性防止秘密被单一实体泄露或丢失。
秘密共享的核心思想是将一个秘密S分割成 n个份额S1S2…Sn并分发给n个参与者。只有当至少k个参与者其中k≤n将他们的份额组合在一起时才能重构出原始秘密S。这种方案通常被称为(k,n)-门限方案。
Shamir 的秘密共享方案 本篇对隐私计算深度学习新范式crypten进行了简单的总结与介绍希望能够帮助更多的人了解crypten。
上述内容借鉴来源探索CrypTen深度学习的安全与隐私保护新范式-CSDN博客
豆包 - 字节跳动旗下 AI 智能助手