CrypTen——基于pytorch的隐私保护机器学习框架

目录

一、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 Linux,WSL,推荐 Ubuntu 环境)。

·Python 版本:要求 Python 3.6 及以上版本。

二、安装依赖库

·PyTorch:Crypten 基于 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个份额S1,S2,…,Sn,并分发给n个参与者。只有当至少k个参与者(其中k≤n)将他们的份额组合在一起时,才能重构出原始秘密S。这种方案通常被称为(k,n)-门限方案。

Shamir 的秘密共享方案


 本篇对隐私计算深度学习新范式crypten进行了简单的总结与介绍,希望能够帮助更多的人了解crypten。

上述内容借鉴来源探索CrypTen:深度学习的安全与隐私保护新范式-CSDN博客

豆包 - 字节跳动旗下 AI 智能助手

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/957920.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

他把智能科技引入现代农业领域

江苏田倍丰农业科技有限公司(以下简称“田倍丰”)是一家专注于粮油种植的农业科技公司,为拥有300亩以上田地的大户提供全面的解决方案。田倍丰通过与当地政府合作,将土地承包给大户,并提供农资和技术,实现利…

电池预测 | 第22讲 基于GRU-Attention的锂电池剩余寿命预测

电池预测 | 第22讲 基于GRU-Attention的锂电池剩余寿命预测 目录 电池预测 | 第22讲 基于GRU-Attention的锂电池剩余寿命预测预测效果基本描述程序设计参考资料 预测效果 基本描述 电池预测 | 第22讲 基于GRU-Attention的锂电池剩余寿命预测 锂电池作为现代电子设备的重要动力…

Spring Boot AOP实现动态数据脱敏

依赖&配置 <!-- Spring Boot AOP起步依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>/*** Author: 说淑人* Date: 2025/1/18 23:03* Desc…

UE虚幻引擎No Google Play Store Key:No OBB found报错如何处理?

问题描述&#xff1a; UE成功打包APK并安装过后&#xff0c;启动应用时提示&#xff1a; No Google Play Store KeyNo OBB found and no store key to try to download. Please setone up in Android Project SettingsUE配置默认在打包APK时会附加生成一个OBB文件&#xff0c;…

Github 2025-01-20 开源项目周报 Top15

根据Github Trendings的统计,本周(2025-01-20统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10Rust项目2TypeScript项目1C++项目1Jupyter Notebook项目1Go项目1Tabby: 自托管的AI编码助手 创建周期:310 天开发语言:Rust协议类…

给工作流穿上漂亮的衣服,创建用户交互界面并调用工作流,可定制的工作流,奶奶都能看明白的扣子智能体免费系列教程(10)

创建工作流看这个 搭建小红书梗图、歪理生成器工作流搭建 效果 欢迎来到滔滔讲AI。本教程为免费系列教程&#xff0c;感谢关注&#xff0c;以防找不到。 一、新建应用 方式一&#xff0c;点击左侧导航的加号 方式二、在工作空间面板选择右上角的创建按钮 选择创建应用 二、…

Python网络自动化运维---用户交互模块

文章目录 目录 文章目录 前言 实验环境准备 一.input函数 代码分段解析 二.getpass模块 前言 在前面的SSH模块章节中&#xff0c;我们都是将提供SSH服务的设备的账户/密码直接写入到python代码中&#xff0c;这样很容易导致账户/密码泄露&#xff0c;而使用Python中的用户交…

免费送源码:Java+springboot+MySQL 婴儿疫苗接种管理系统的设计与实现 计算机毕业设计原创定制

目 录 摘要 1 1 绪论 1 1.1概述 1 1.2课题意义 1 1.3研究思路及创新之处 1 1.4springboot框架介绍 1 1.5论文结构与章节安排 1 2 婴儿疫苗接种管理系统分析 3 2.1 可行性分析 3 2.1.1 技术可行性分析 3 2.1.2 经济可行性分析 3 2.1.3 法律可行性分析 3 2.2 系统功…

三相电变为家庭220V,市电火线和零线关系,为什么用三相电输送

参考&#xff1a; https://www.zhihu.com/question/30555841/answer/85723024 上面是电力系统的主要组成&#xff0c;发电站发电后升压传输&#xff0c;然后到各大城市再降压使用。 我们看到电塔上都是三根线&#xff0c;那么因为整个过程都是三相电。 为什么用三相电&#xff…

CIMRTS材质美化--放大采样、缩小采样

最新的CIMRTS v1.0.10中在要素管理中的材质美化增加「放大采样」和「缩小采样」参数&#xff0c;对于透明树叶可以达到较好效果。 在CesiumLab中&#xff0c;一棵树处理完成后&#xff0c;在EarthSDK中&#xff0c;就是呈现这样缩小就会有树叶丢失的情况。效果如下&#xff1a…

SQL-leetcode—1179. 重新格式化部门表

1179. 重新格式化部门表 表 Department&#xff1a; ---------------------- | Column Name | Type | ---------------------- | id | int | | revenue | int | | month | varchar | ---------------------- 在 SQL 中&#xff0c;(id, month) 是表的联合主键。 这个表格有关…

城市生命线安全保障:技术应用与策略创新

城市生命线工程是维系城市正常运行、满足群众生产生活需要的重要基础设施。随着城市化进程的加快&#xff0c;城市基础设施生命线安全运行的复杂性日益加剧&#xff0c;保障城市居民日常生活正常运行的水、电、气、热等各类地下管线以及桥梁、市政设施、轨道交通等城市基础设施…

vue2的$el.querySelector在vue3中怎么写

这个也属于直接操作 dom 了&#xff0c;不建议在项目中这样操作&#xff0c;不过我是在vue2升级vue3的时候遇到的&#xff0c;是以前同事写的代码&#xff0c;也没办法 先来看一下对比 在vue2中获取实例是直接通过 this.$refs.xxx 获取绑定属性 refxxx 的实例&#xff0c;并且…

Genetic Prompt Search via Exploiting Language Model Probabilities

题目 利用语言模型概率的遗传提示搜索 论文地址&#xff1a;https://www.ijcai.org/proceedings/2023/0588.pdf 项目地址&#xff1a;https://github.com/zjjhit/gap3 摘要 针对大规模预训练语言模型(PLMs)的即时调优已经显示出显著的潜力&#xff0c;尤其是在诸如fewshot学习…

如何引导LabVIEW项目相关方合理参与项目?

引导 LabVIEW 项目相关方合理参与项目&#xff0c;是保障项目顺利推进的关键所在。合理引导&#xff0c;既能显著提升项目执行效率&#xff0c;又能让各方清晰知晓自身在项目中的角色与责任。以下为具体策略与建议&#xff1a; ​ 一、明确项目目标与需求 清晰沟通项目目标&a…

Maven的下载安装配置

maven的下载安装配置 maven是什么 Maven 是一个用于 Java 平台的 自动化构建工具&#xff0c;由 Apache 组织提供。它不仅可以用作包管理&#xff0c;还支持项目的开发、打包、测试及部署等一系列行为 Maven的核心功能 项目构建生命周期管理&#xff1a;Maven定义了项目构建…

光谱相机在智能冰箱的应用原理与优势

食品新鲜度检测 详细可点击查看汇能感知团队实验报告&#xff1a;高光谱成像技术检测食物新鲜度 检测原理&#xff1a;不同新鲜程度的食品&#xff0c;其化学成分和结构会有所不同&#xff0c;在光谱下的反射、吸收等特性也存在差异。例如新鲜肉类和蔬菜中的水分、蛋白质、叶…

MySQL可直接使用的查询表的列信息

文章目录 背景实现方案模板SQL如何查询列如何转大写如何获取字符位置如何拼接字段 SQL适用场景 背景 最近产品找来&#xff0c;想让帮忙出下表的信息&#xff0c;字段驼峰展示&#xff0c;每张表信息show create table全部展示&#xff0c;再逐个粘贴&#xff0c;有点太耗费时…

设计模式的艺术-享元模式

结构性模式的名称、定义、学习难度和使用频率如下表所示&#xff1a; 1.如何理解享元模式 当一个软件系统在运行时产生的对象数量太多&#xff0c;将导致运行代价过高&#xff0c;带来系统性能下降等问题。 在享元模式中&#xff0c;存储这些共享实例对象的地方称为享元池&…

汇编与逆向(二)-汇编基础

一、汇编入门 &#xff08;一&#xff09;x86体系的CPU的工作模式 有两种基本的工作模式&#xff1a;实模式和保护模式。 实模式&#xff1a;也称为实地址模式&#xff0c;该模式最早被DOS&#xff0c;win9x所支持。可访问1M内存&#xff0c;可直接访问硬件&#xff0c;如对…