1.2.2.1.4 数据安全发展技术发展历程:高级公钥加密方案——同态加密
引言
在密码学领域,有一种技术被图灵奖得主、著名密码学家Oded Goldreich誉为"密码学圣杯",那就是全同态加密(Fully Homomorphic Encryption)。今天我们就来聊聊这个神秘而强大的加密方案是如何从1978年的概念提出,历经近三十年才被攻克,以及它背后不断演进的技术路线。
同态加密的神奇之处
同态加密是一种特殊的加密技术,它最引人注目的特性是:在密文上直接进行特定运算,解密后得到的结果与对明文进行相同运算的结果一致。这就像给数据穿上一层保护罩,同时让计算可以直接在保护罩上进行而不需要先解密数据。
这种特性带来了巨大的价值:在云计算环境下,用户可以将加密数据上传到云端,云端执行计算后将密文结果返回给用户,用户解密后得到正确结果,整个过程云端从未接触过明文数据,从根本上解决了云服务的隐私安全问题。
部分同态加密:从1978到千禧年
1978年,密码学三巨头之一的Rivest(与他人共同提出RSA算法)等人在论文中首次提出了同态加密的概念。这个开创性的工作提出了一个核心问题:能否设计出一种加密方案,使得密文能够保持其对应的明文在特定运算下的特性?
随后的几十年中,密码学家们开发出了几种部分同态加密方案,它们能够有效支持单一类型的运算:
-
乘法同态:支持在密文上进行任意次乘法运算
- 代表方案:EIGamal加密方案
- 应用场景:适用于需要保护数据隐私的乘法操作场景
-
加法同态:支持在密文上进行任意次加法运算
- 代表方案:Paillier加密方案
- 应用场景:适用于统计计算、投票系统等需要加法运算的场景
这些部分同态加密方案在各自领域发挥了重要作用,但都有一个共同限制——无法同时支持加法和乘法运算。在实际应用中,我们经常需要同时进行加减乘除等混合运算,这种限制成为了同态加密技术发展的主要瓶颈。
悬而未决的难题:“密码学圣杯”
从1978年到2009年这31年间,如何构造能够同时支持任意次加法和乘法运算的固定加密方案(全同态加密),一直是困扰密码学界的核心难题。这种能完全模拟明文上所有运算的加密方案被称为"全同态加密"。
这一难题的难度在于:要在保证安全性的前提下,设计出能够动态"调整"密文结构的机制,以适应不同运算带来的"噪声"积累问题。随着运算的进行,密文中的噪声会不断累积,超过一定限度后就会导致解密失败。
全同态加密的突破:Gentry的革命性工作
2009年,斯坦福大学的博士生Craig Gentry在其博士论文中实现了突破性进展,他基于理想格(ideal lattice)构造出了第一个全同态加密方案。这个方案具有两个关键创新:
-
自举(Bootstrapping)技术:Gentry提出了一种巧妙的方法,可以在不解密的情况下对密文进行"刷新",重置噪声水平,相当于给加密方案装上了"自我清洁"机制。
-
理想格结构:利用格理论中的理想结构,构造出一种能抵抗特定攻击的数学结构,为实现同态操作提供了基础。
Gentry的方案虽然理论意义重大,但在实际应用中仍面临效率问题。后续研究者们围绕如何提高效率、降低计算复杂度展开了深入研究。
全同态加密的进一步发展
-
容错学习基方案(2014年):Brakerski等人提出的基于容错学习(LWE/Lattice-based)的全同态加密方案,相比理想格方案,具有更好的可证明安全性,并在实际实现中展现出更优的性能。
-
Hensel编码方案(2021年):Sliva等人提出的基于Hensel编码的全同态加密方案,在保持高安全性的同时,进一步优化了计算效率和密文大小。这一进展使得全同态加密距离实际应用又近了一步。
未来展望
虽然全同态加密在技术上取得了显著进展,但要实现大规模实际应用仍面临诸多挑战,包括计算效率、算法优化、硬件加速等。不过,随着量子计算威胁的增加,基于格理论的全同态加密作为后量子密码学的重要候选,正受到越来越广泛的关注。
可以预见,随着技术的进步,全同态加密有望在云计算安全、隐私保护机器学习、数据共享平台等领域发挥革命性作用,真正实现Gentry所说的"保护数据,但允许计算使用数据"的美好愿景。
结语
从1978年的概念提出,到2009年的首次实现,再到2021年不断演进的方案,全同态加密见证了密码学领域半个世纪的技术进步。每一代方案的提出都是对前人工作的继承与创新,共同推动了这一革命性技术的发展。让我们期待在不远的将来,全同态加密能够真正走进我们的日常生活,为数据安全和隐私保护带来质的飞跃。
上一篇:1.2.2.1.3 数据安全发展技术发展历程:高级公钥加密方案——代理重加密
下一篇:1.2.2.1.5 数据安全发展技术发展历程:高级公钥加密方案——安全多方计算
更多推荐阅读内容
大白话解读AI聊天机器人的三大安全隐患(2025版)
人工智能安全三把火:大型语言模型必须防范的三大隐患
三分钟看懂LLM新安全风险:AI的四大隐形炸弹
普通人必备的AI安全验货指南:3分钟避开99%的隐私陷阱
为什么软件产品要做国产化适配?深度解析背后的必要性
黑客帝国觉醒:当网络安全数据开始“说真话“
相关文章:
1.2.2.1.4 数据安全发展技术发展历程:高级公钥加密方案——同态加密
引言 在密码学领域,有一种技术被图灵奖得主、著名密码学家Oded Goldreich誉为"密码学圣杯",那就是全同态加密(Fully Homomorphic Encryption)。今天我们就来聊聊这个神秘而强大的加密方案是如何从1978年的概念提出&…...
dify插件接入fastmcp示例
文章目录 1. 使用python完成mcp服务1.1 准备环境(python安装fastmcp)1.2 mcp服务端示例代码1.3 启动mcp服务端 2. dify接入2.1 安装MCP SSE和 Agent 策略(支持 MCP 工具) 插件2.2 dify agent插件配置mcp:2.3 mcp服务配置ÿ…...
从文本到语义:BERT、Faiss 与 Elasticsearch 的协同实践
从文本到语义:BERT、Faiss 与 Elasticsearch 的协同实践 在自然语言处理(NLP)的技术栈中,BERT、Faiss 和 Elasticsearch 是三个具有代表性的工具,它们各自发挥着独特的作用。BERT 负责文本的语义理解,Fais…...
安装或更新 CUDA Toolkit - Ubuntu - RuntimeError
1、问题 执行 pip install flash-attn --no-build-isolation 时,出错: RuntimeError: FlashAttention is only supported on CUDA 11.7 and above. Note: make sure nvcc has a torch.__version__ 2.4.0cu12 执行 nvcc --version 或 nvcc -V&…...
二、Hive安装部署详细过程
Apache Hive 是一个构建在 Hadoop 之上的数据仓库基础设施。它提供了类似 SQL 的查询语言 (称为 HiveQL 或 HQL),让熟悉 SQL 的开发人员和分析师能够轻松地查询和分析存储在 HDFS 或其他兼容存储系统中的大规模数据集。把结构化或半结构化的数据映射成表,…...
常见的降维算法
作业: 自由作业:探索下什么时候用到降维?降维的主要应用?或者让ai给你出题,群里的同学互相学习下。可以考虑对比下在某些特定数据集上t-sne的可视化和pca可视化的区别。 一、什么时候用到降维? 降维通常…...
Spring Boot 中如何启用 MongoDB 事务
在 Spring Boot 中启用和使用 MongoDB 事务主要依赖于以下几个方面: MongoDB 服务器和部署模式: MongoDB 版本 4.0 或更高版本才支持副本集 (Replica Set) 上的多文档 ACID 事务。MongoDB 版本 4.2 或更高版本才支持分片集群 (Sharded Cluster) 上的多文…...
2025年5月15日前 免费考试了! Oracle AI 矢量搜索专业认证
2025年5月5日前 免费考试了! Oracle AI 矢量搜索专业认证 立刻预约吧 文章目录 2025年5月5日前 免费考试了! Oracle AI 矢量搜索专业认证立刻预约吧🔍 探索 AI 向量搜索的强大功能!🎯 学习路径目标Ὦ…...
初等数论--莫比乌斯反演
1. 定义 假设 f ( n ) g ( n ) f(n)\ g(n) f(n) g(n)是定义在正整数上的两个函数 ,且 f ( n ) ∑ d ∣ n g ( d ) ∑ d ∣ n g ( n d ) f(n)\sum_{d|n}g(d)\sum_{d|n}g(\frac{n}{d}) f(n)d∣n∑g(d)d∣n∑g(dn) 那么 g ( n ) ∑ d ∣ n μ ( d ) f ( n d…...
访问者模式(Visitor Pattern)详解
文章目录 1. 访问者模式概述1.1 定义1.2 基本思想2. 访问者模式的结构3. 访问者模式的UML类图4. 访问者模式的工作原理5. Java实现示例5.1 基本实现示例5.2 访问者模式处理复杂对象层次结构5.3 访问者模式在文件系统中的应用6. 访问者模式的优缺点6.1 优点6.2 缺点7. 访问者模式…...
C++ 关联式容器:map,multimap,set,multiset
目录 引言 一、关联式容器概述 1.1 与序列式容器的区别 1.2 底层结构 二、set容器详解set介绍 2.1 set的特性 2.2 set的模板参数 2.3 set的常用接口 2.4 set使用示例 三、map容器详解map介绍 3.1 map的特性 3.2 map的模板参数 3.3 map的常用接口 3.4 map使用示例 …...
Discriminative and domain invariant subspace alignment for visual tasks
用于视觉任务的判别性和域不变子空间对齐 作者:Samaneh Rezaei,Jafar Tahmoresnezhad 文章于2018年12月4日收到,2019年5月24日被接受,2019年6月3日在线发表于Iran Journal of Computer Science期刊,DOI: 10.1007/s42…...
comfyui 如何优雅的从Hugging Face 下载模型,文件夹
如下图所示 使用git 下载整个仓库然后把需要的放到对应的位置...
【C++】 —— 笔试刷题day_27
一、kotori和气球 题目解析 这道题,有n中气球,每一种气球有无数多个;现在我们需要将这些气球摆成一排,但是,如果相邻的气球是相同的就会发生爆炸(也就是说,相同的气球相邻的摆法是不合法的&…...
2025年“深圳杯”数学建模挑战赛C题国奖大佬万字思路助攻
完整版1.5万字论文思路和Python代码下载:https://www.jdmm.cc/file/2712073/ 引言 本题目旨在分析分布式能源 (Distributed Generation, DG) 接入配电网系统后带来的风险。核心风险评估公式为: R P_{loss} \times C_{loss} P_{over} \times C_{over}…...
大模型微调指南之 LLaMA-Factory 篇:一键启动LLaMA系列模型高效微调
文章目录 一、简介二、如何安装2.1 安装2.2 校验 三、开始使用3.1 可视化界面3.2 使用命令行3.2.1 模型微调训练3.2.2 模型合并3.2.3 模型推理3.2.4 模型评估 四、高级功能4.1 分布训练4.2 DeepSpeed4.2.1 单机多卡4.2.2 多机多卡 五、日志分析 一、简介 LLaMA-Factory 是一个…...
游戏引擎学习第268天:合并调试链表与分组
回顾并为今天的内容设定基调 我们正在直播中开发完整的游戏,目前调试系统的开发已接近尾声。这个调试系统的构建过程经历了较长的时间,中间还暂停过一段时间去做硬件渲染路径的开发,并在已有的软件渲染路径基础上进行了扩展。后来我们又回到…...
【Linux系统编程】进程属性--标识符
1.PID 1.1什么是PID? 区分进程的唯一性 1.2如何查看进程? ps ajx | head -1 ; ps ajx | grep myproc 或者ps ajx | head -1 && ps ajx | grep myproc | grep -v grep(过滤掉grep本身这个进程) 1.3进程有哪两种&#…...
React文档-State数据扁平化
1、选择 State 结构 思考一下: 如果渲染列表, 并更新列表数据在下面展示~ state 过去常常是这样复制的: items [{ id: 0, title: pretzels}, ...]selectedItem {id: 0, title: pretzels} 改了之后是这样的:items [{ id: 0, …...
kotlin flow防抖
一 防抖设计 ✅ 1. 点击事件的防抖:用于防止频繁触发逻辑 🎯 适用场景: 用户连续快速点击按钮,可能会导致多次发送网络请求、CAN 指令或反复切换状态等副作用。所以我们通常在点击函数中处理防抖,例如: …...
基础语法(二)
Mysql基础语法(二) Mysql基础语法(二)主要介绍Mysql中稍微进阶一点的内容,会稍微有一些难度(博主个人认为)。学习完基础语法(一)和基础语法(二)之…...
FreeTex v0.2.0:功能升级/支持Mac
概述 FreeTex在发布之后,迎来很多反馈,本次根据主流的反馈建议,又进行一轮小升级,正式发布v0.2.0版本,主要升级点如下: 新增识别结果预览显示 Latex识别结果支持格式化输出 软件体积更小,并移…...
MacOS 用brew 安装、配置、启动Redis
MacOS 用brew 安装、配置、启动Redis 一、安装 brew install redis 二、启动 brew services start redis 三、用命令行检测 set name tom get name...
大型旋转机械信号分解算法模块
大型旋转机械信号分解算法模块,作为信号处理算法工具箱的主要功能模块,可应用于各类关键机械部件(轴承、齿轮、转子、联轴器等)的信号分析、故障探测、趋势劣化评估等,采用全Python语言,以B/S模式ÿ…...
Java 中的数据类型误导点!!!
在 Java 中,数据类型分为两大类:基本类型(Primitive Types) 和 引用类型(Reference Types)。它们的存储方式和行为完全不同。 1. 基本类型 Java 有 8 种基本数据类型,它们直接存储值ÿ…...
Linux--JsonCpp
1.JsonCpp 简介 JsonCpp 是一个用于 C 的 JSON 解析和生成库,支持 JSON 数据的读写、解析和序列化。它提供了简单的 API 来操作 JSON 对象、数组、字符串、数字等类型,是 C 开发中处理 JSON 数据的常用工具。 核心功能与类 JsonCpp 主要包含以下核心类…...
cv_connection (像halcon一样对区域进行打散)
主题: 分享一个自己用opencv写的小方法, 可以像halcon的connection算子一样, 对cv2.threshold得到的region进行打散, 并返回一个打散后的不相连的region的列表。 代码如下 def cv_connection(region):# he的拓扑信息为 后一…...
ConcurrentHashMap和锁
文章目录 JDK1.7的分段锁JDK1.8的volatileCAS synchronized可重入锁公平锁和非公平锁悲观锁和乐观锁 JDK1.7的分段锁 数据结构:数组(大数组 Segment 和小数组 HashEntry)链表 #mermaid-svg-dfSgz5E7tBmTbx14 {font-family:"trebuchet …...
黑马k8s(二)
集群环境搭建 1.环境规划 2.环境搭建-主机安装 主节点: 软件选择选择 基础设施服务器,这样安装系统完毕之后,会有很多软件我们可以直接使用了 系统点开,点一下完成 ip地址的设置:要跟虚拟网络编辑器,Net…...
LeetCode热题100--240.搜索二维矩阵--中等
1. 题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[1…...
python校园新闻发布管理系统
目录 技术栈介绍具体实现截图系统设计研究方法:设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理,难度适中…...
Spring MVC 视图解析器 (ViewResolver) 如何配置? Spring Boot 是如何自动配置常见视图解析器的?
我们来详细分析一下视图解析器 (ViewResolver) 的配置以及 Spring Boot 是如何自动配置它们的。 视图解析器 (ViewResolver) 是什么? 在 Spring MVC 中,当控制器 (Controller) 方法处理完请求并返回一个逻辑视图名 (String) 时,DispatcherS…...
LeetCode 2918.数组的最小相等和:if-else
【LetMeFly】2918.数组的最小相等和:if-else 力扣题目链接:https://leetcode.cn/problems/minimum-equal-sum-of-two-arrays-after-replacing-zeros/ 给你两个由正整数和 0 组成的数组 nums1 和 nums2 。 你必须将两个数组中的 所有 0 替换为 严格 正…...
C++修炼:stack和queue
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞,关注&am…...
欧拉计划 Project Euler 69(欧拉总计函数与最大值)题解
欧拉计划 Project Euler 69 题解 题干欧拉总计函数与最大值 思路code 题干 欧拉总计函数与最大值 小于 n n n且与 n n n互质的正整数的数量记为欧拉总计函数 φ ( n ) \varphi(n) φ(n),例如, 1 、 2 、 4 、 5 、 7 1、2、4、5、7 1、2、4、5、7和 8 …...
TCP Socket编程
最基本的Socket编程 想客户端和服务器能在网络中通信,就得使用 Socket 编程,它可以进行跨主机间通信。在创建Socket时可以选择传输层使用TCP还是UDP。相对于TCP来说,UDP更为简单,下面以TCP为例。 TCP服务端要先建立起来…...
[CLS] 向量是 BERT 类模型中一个特别重要的输出向量,它代表整个句子或文本的全局语义信息
[CLS] 向量是 BERT 类模型中一个特别重要的输出向量,它代表整个句子或文本的全局语义信息。 ✅ 什么是 [CLS] 在 BERT 模型中,每条输入前会加一个特殊的 token:[CLS](classification 的缩写)。这个 token 没有具体语义…...
47.电压跌落与瞬时中断干扰的防护改善措施
电压跌落与瞬时中断干扰的防护改善措施 1. 电压跌落与瞬时中断的影响机理2. 解决措施 1. 电压跌落与瞬时中断的影响机理 跌落发生的常见场景如下: (1)电源插头接触不良,瞬态中断即刻恢复; (2)电…...
LeetCode热题100 两数之和
目录 两数之和题目解析方法一暴力求解代码 方法二哈希代码 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒 个人主页 🥸🥸🥸 C语言 🐿️🐿️🐿…...
【无标题】I/O复用(epoll)三者区别▲
一、SOCKET-IO复用技术 定义:SOCKET - IO复用技术是一种高效处理多个套接字(socket)的手段,能让单个线程同时监听多个文件描述符(如套接字)上的I/O事件(像可读、可写、异常)&#x…...
【数据结构】子串、前缀
子串 (Substring) 字符串中连续的一段字符序列,例如 "abc" 是 "abcd" 的子串。 特点:必须连续,顺序不可改变。 子序列 (Subsequence) 字符串中不连续但保持顺序的字符序列,例如 "acd" 是 "…...
[docker基础四]容器虚拟化基础之 LXC
目录 一 认识LXC 二 LXC容器操作实战 1)实战目的 2)基础知识 lxc-checkconfig lxc-create lxc-start lxc-ls lxc-info lxc-attach lxc-stop lxc-destory 3)安装LXC(我的是Ubuntu) 4)操作实战 1. 检查 lxc 是否运行…...
leetcode 2918. 数组的最小相等和 中等
给你两个由正整数和 0 组成的数组 nums1 和 nums2 。 你必须将两个数组中的 所有 0 替换为 严格 正整数,并且满足两个数组中所有元素的和 相等 。 返回 最小 相等和 ,如果无法使两数组相等,则返回 -1 。 示例 1: 输入…...
RT-Thread 深入系列 Part 5:物联网与网络应用实战
摘要 本文聚焦 RT-Thread 在物联网场景下的网络应用实战,从网络协议栈集成到 MQTT/CoAP/HTTP 客户端实现,再到 mbedTLS 安全通信与 OTA 升级,最后以阿里云、腾讯云和 OneNet 平台对接为案例,完整呈现端到端的物联网解决方案落地过程。 目录 网络协议栈:LWIP 与网络设备 MQ…...
onGAU:简化的生成式 AI UI界面,一个非常简单的 AI 图像生成器 UI 界面,使用 Dear PyGui 和 Diffusers 构建。
一、软件介绍 文末提供程序和源码下载 onGAU:简化的生成式 AI UI界面开源程序,一个非常简单的 AI 图像生成器 UI 界面,使用 Dear PyGui 和 Diffusers 构建。 二、Installation 安装 文末下载后解压缩 Run install.py with python to setup…...
Linux系统入门第十二章 --Shell编程之正则表达式
一、正则表达式 之前学习了 Shell 脚本的基础用法,已经可以利用条件判断、循环等语句编辑 Shell脚本。接下来我们将开始介绍一个很重要的概念-正则表达式(RegularExpression,RE) 1.正则表达式的定义 正则表达式又称正规表达式、常规表达式。在代码中常…...
Ubuntu22.04怎么退出Emergency Mode(紧急模式)
1.使用nano /etc/fstab命令进入fstab文件下; 2.将挂载项首行加#注释掉,修改完之后使用ctrlX退出; 3.重启即可退出紧急模式!...
IC ATE集成电路测试学习——开尔文连接
首先,我们先了解一下ATE在测试时的PMU测量原理。 驱动线路和感知线路 为了提升 PMU 驱动电压的精确度,常使用 4 条线路的结构:两条驱动线路传输电流,另两条感知线路监测我们感兴趣的点(通常是DUT)的电压。…...
Ubuntu 与 Windows 双系统环境下 NTFS 分区挂载教程
Ubuntu 与 Windows 双系统环境下 NTFS 分区挂载教程 摘要 本技术指南针对Ubuntu与Windows双系统用户,系统阐述NTFS分区挂载的技术原理与操作流程。通过规范的技术说明和专业的故障排除方案,帮助用户在异构操作系统环境下实现文件系统的无缝访问&#x…...
C++学习-入门到精通-【6】指针
C学习-入门到精通-【6】指针 指针 C学习-入门到精通-【6】指针一、指针的初始化二、指针运算符地址运算符&间接引用运算符* 三、使用指针的按引用传递方式四、内置数组标准库函数的begin和end内置数组的局限性 五、使用const修饰指针 一、指针的初始化 指针在声明或赋值时…...