隐私保护深度学习技术综述

本文综述了隐私保护深度学习技术,包括同态加密和安全多方计算,探讨了如何在不泄露隐私的情况下进行深度学习训练。文章分析了不同方法的优缺点,指出隐私和性能之间的权衡,以及未来面临的挑战,如降低计算复杂性和确保数据与模型隐私。

摘要

 

当机器学习算法需要为训练过程访问高度敏感的数据时,存在挑战和问题。为了解决这些问题,人们发展了几种保护隐私的深度学习技术,包括安全多方计算和神经网络中的同态加密。也有几种方法可以对神经网络进行改进,使其适用于隐私保护环境。然而,在各种技术之间存在隐私和性能之间的权衡。本文讨论了隐私保护深度学习的研究现状,对各种方法进行了评价,比较了每种方法的优缺点,指出了深度学习在隐私保护领域存在的挑战和问题。

前言

机器学习,即人工智能(AI)的发明,开启了人类生活的一个新纪元。我们可以训练一台机器像人类一样做决策。机器学习一般分为训练阶段和测试阶段,为了利用机器学习取得更好的效果,在训练阶段需要大量的数据集。机器学习在社会工程、图像识别、医疗服务等领域都有应用的趋势。要想获得令人满意的机器学习结果,一个主要的挑战就是数据集的收集。由于数据将分散在个人身上,因此需要付出大量努力来收集这些数据。

敏感用户倾向于不情愿地将他们的私有数据提交给第三方。由于服务器端受到危害,将会发生数据泄露的风险,例如当我们使用云计算时。用户选择不将其机密数据存储在云中,因为他们担心有人会查看他们的私有数据,为了说服用户相信他们的数据安全和隐私,需要一种使用隐私保护数据的方法来输入深度学习中的训练过程。为此,发送到服务器的数据必须加密,并且在训练阶段也应该保持加密。这里的挑战是修改当前的深度学习技术,使其能够处理加密数据。在本文中,我们将讨论隐私保护深度学习(PPDL)技术的发展现状,对他们进行评估,比较每种技术的优缺点,并提出PPDL中存在的问题和挑战。

经典隐私保护技术

隐私保护技术被归类为能够处理加密数据的特殊工具。隐私保护技术的重要性在于能够在不泄露原始内容的情况下对数据进行计算。因此,它可以保证高度机密数据的隐私。关于在处理个人数据方面保护个人的第95/46/EC号指令是欧洲联盟根据人权法管理个人数据库处理的指令。该指令规定,“[数据]控制员必须实施适当的技术和组织措施,以保护个人数据免受意外或非法破坏或意外丢失、更改、未经授权的披露或访问,特别是在处理涉及通过网络传输数据的情况下,以及防止所有其他非法形式的处理。”隐私保护的目标就是基于这一规定。

同态加密

1978年,Rivest et al.质疑是否存在任何加密方案来支持在不知道秘密信息的情况下对加密数据进行计算。例如,教科书上的RSA加密支持在没有私钥的情况下对加密数据进行乘法运算,我们称之为乘法同态加密(HE)。同样,如果一个系统支持在没有密钥的情况下对加密数据进行加法运算,我们称之为加法同态加密。

安全多方计算

安全计算的概念于1986年由姚期智院士正式提出,并发明了乱码电路(GC)。在GC中,所有函数都被描述为一个布尔电路,并且使用不经意传输协议来不经意地传递信息。然后,Goldreich等人在1987年将该概念扩展到安全多方计算(MPC)。MPC的目的是解决在不使用任何可信第三方的情况下保护一组不可信用户中的用户隐私的协作计算问题。

 

差分隐私处理受信任的数据管理者想要发布关于他/她的数据的一些统计数据而不泄露关于该数据的任何信息的情况。因此,无论是否包括用户数据,有权访问某些算法的输出的对手都会获得几乎相同的信息。应用差分隐私技术,对机器学习算法进行了大量的研究,如决策树、支持向量机、Logistic回归等。

深度学习中的隐私保护技术

这一节描述了深度学习技术的原始结构和隐私保护环境下必要的改动。

深度神经网络(DNN)

激活层(Activation layer)

如图1所示,激活层(Activation layer)决定是否激活数据(值1)或不激活(值0)。激活层是对卷积层的输出进行数学处理的非线性函数。有几种众所周知的激活函数,例如整流线单元(RELU)、Sigmoid和tanh。由于这些函数是非线性的,如果我们使用这些函数来计算HE加密的数据,复杂度会变得非常高。因此,我们需要找到一个只包含乘法和加法的替换函数。替换函数将在稍后讨论。

<think>我们正在讨论在C#中进行安全的JSON反序列化时设置MaxDepth参数的含义。用户特别询问了当MaxDepth设置为128时,最大深度限制的具体含义。 根据引用[1]中的示例,MaxDepth用于限制JSON反序列化时可以处理的最大嵌套深度。在示例中,当MaxDepth设置为2时,尝试反序列化深度为3的嵌套列表([ [ [ '3', 'Three', 'III' ] ] ])会抛出异常。这表明MaxDepth参数用于防止过深的嵌套结构,以避免可能导致的栈溢出或拒绝服务(DoS)攻击。 因此,MaxDepth=128的含义是:允许反序列化的JSON数据结构的最大嵌套深度为128层。超过此深度的JSON数据将导致反序列化失败并抛出异常。 具体来说: - 在JSON中,深度是指嵌套的层级。例如: - 一个简单的对象:{} 深度为1 - 对象中包含一个数组:{ "a": [] } 深度为2 - 数组中包含对象:[ { "b": {} } ] 深度为3 - 设置MaxDepth=128意味着允许最多128层这样的嵌套。 这种限制对于安全至关重要,因为恶意用户可能会构造深度嵌套的JSON数据来消耗大量内存或导致栈溢出,从而引发DoS攻击。 在C#中,无论是使用System.Text.Json还是Newtonsoft.Json,都可以设置MaxDepth属性: - 在System.Text.Json中,通过JsonSerializerOptions.MaxDepth属性设置。 - 在Newtonsoft.Json中,通过JsonSerializerSettings.MaxDepth属性设置。 注意:默认情况下,Newtonsoft.Json的MaxDepth为64(根据引用[1]的示例推断),而System.Text.Json的默认MaxDepth为0(表示无限制,但在.NET Core 3.0及更高版本中,默认限制为64)。因此,显式设置为128可以允许比默认更深的嵌套,但需要确保这个深度在安全可控范围内。 总结:MaxDepth=128为JSON反序列化设置了最大嵌套深度为128层,以防止深度嵌套导致的资源耗尽攻击。 §§相关问题§§ 1. 如何确定合适的MaxDepth值? 2. 在System.Text.Json中设置MaxDepth与Newtonsoft.Json有何不同? 3. 超出MaxDepth限制时,如何捕获并处理异常? </think>### C# JSON反序列化中 `MaxDepth = 128` 的含义解析 在 JSON 反序列化中设置 `MaxDepth = 128` 是指限制 JSON 结构的**最大嵌套深度**为 128 层。这是防范深度嵌套攻击(一种常见 DoS 攻击手段)的关键安全措施。 #### 深度限制原理 1. **嵌套层级计算** - 每层 `{}`(对象)或 `[]`(数组)增加 1 层深度 - 示例:`{ "a": [ { "b": {} } ] }` 的深度为 3 - 当深度超过设定值(如 128)时立即抛出异常[^1] 2. **安全防护机制** - 阻止恶意构造的超深 JSON(如深度 10,000+) - 避免递归解析导致栈溢出(StackOverflowException) - 防止内存耗尽型攻击(Memory Exhaustion) #### 配置示例 ```csharp // System.Text.Json 配置 var options = new JsonSerializerOptions { MaxDepth = 128, // 关键安全设置 PropertyNameCaseInsensitive = true }; var data = JsonSerializer.Deserialize<MyModel>(jsonString, options); // Newtonsoft.Json 配置 var settings = new JsonSerializerSettings { MaxDepth = 128, // 同作用 TypeNameHandling = TypeNameHandling.None }; var data = JsonConvert.DeserializeObject<MyModel>(jsonString, settings); ``` #### 深度限制的数学原理 JSON 解析的复杂度与深度呈指数关系: $$O(d) = k^d$$ 其中: - $d$ 为嵌套深度 - $k$ 为平均子节点数量 当 $d=128$ 且 $k\geq2$ 时,最坏情况需处理 $2^{128} \approx 3.4 \times 10^{38}$ 个节点(理论上不可行)。设置 `MaxDepth` 直接阻断此类攻击[^1]。 #### 典型场景建议值 | 场景 | 建议 MaxDepth | 依据 | |---------------------|--------------|--------------------------| | 用户输入表单 | 8-16 | 人工输入极少超过 5 层嵌套 | | 内部 API 通信 | 32-64 | 业务数据通常 < 20 层 | | 第三方数据集成 | 128 | 平衡安全性与兼容性 | | 高风险数据源 | ≤32 | 优先安全防护 | > **最佳实践**: > 1. 对不可信数据源(如用户上传)至少设置 `MaxDepth ≤ 64` > 2. 128 适用于可信但结构复杂的业务数据 > 3. 结合 `MaxDepth` 和 `SizeLimit`(数据长度限制)双防护[^3]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值