同态加密及HElib

news2024/11/15 9:29:53

一、实验原理

1.同态加密概念

同态加密是密码学领域自1978年以来的经典难题,也是实现数据隐私计算的关键技术,在云计算、区块链、隐私计算等领域均存在着广泛的应用需求和一些可行的应用方案。

同态加密(Homomorphic Encryption)是很早之前密码学界就提出来的一个Open Problem。早在1978年,Ron Rivest, Leonard Adleman, 以及Michael L. Dertouzos就以银行为应用背景提出了这个概念。

提出第一个构造出全同态加密(Fully Homomorphic Encryption)的Craig Gentry给出的直观定义最好:

A way to delegate processing of your data, without giving away access to it.

这是什么意思呢?一般的加密方案关注的都是数据存储安全。即,我要给其他人发个加密的东西,或者要在计算机或者其他服务器上存一个东西,我要对数据进行加密后在发送或者存储。没有密钥的用户,不可能从加密结果中得到有关原始数据的任何信息。只有拥有密钥的用户才能够正确解密,得到原始的内容。我们注意到,这个过程中用户是不能对加密结果做任何操作的,只能进行存储、传输。对加密结果做任何操作,都将会导致错误的解密,甚至解密失败。

同态加密方案最有趣的地方在于,其关注的是数据处理安全。同态加密提供了一种对加密数据进行处理的功能。也就是说,其他人可以对加密数据进行处理,但是处理过程不会泄露任何原始内容。同时,拥有密钥的用户对处理过的数据进行解密后,得到的正好是处理后的结果。

同态加密(Homomorphic Encryption, HE)是指满足密文同态运算性质的加密算法,即数据经过同态加密之后,对密文进行特定的计算,得到的密文计算结果在进行对应的同态解密后的明文等同于对明文数据直接进行相同的计算,实现数据的“可算不可见”。

目前,同态加密算法已在区块链、联邦学习等存在数据隐私计算需求的场景实现了落地应用。由于全同态加密仍处于方案探索阶段,现有算法存在运行效率低、密钥过大和密文爆炸等性能问题,在性能方面距离可行工程应用还存在一定的距离。

2.同态加密构成

同态加密(Homomorphic EncryptionHE)是将数据加密后,对加密数据进行运算处理,之后对数据进行解密,解密结果等同于数据未进行加密,并进行同样的运算处理。

·  KeyGen函数:密钥生成函数。这个函数应该由Alice运行,用于产生加密数据Data所用的密钥Key。当然了,应该还有一些公开常数PP(Public Parameter);

·  Encrypt函数:加密函数。这个函数也应该由Alice运行,用Key对用户数据Data进行加密,得到密文CT(Ciphertext);

·  Evaluate函数:评估函数。这个函数由Cloud运行,在用户给定的数据处理方法f下,对密文进行操作,使得结果相当于用户用密钥Key对f(Data)进行加密。

·  Decrypt函数:解密函数。这个函数由Alice运行,用于得到Cloud处理的结果f(Data)。

3.同态加密的主要类型

具有同态性质的加密函数是指两个明文a、b满足Dec(En(a)⊙En(b))=a⊕b的加密函数,其中En是加密运算,Dec是解密运算,⊙、⊕分别对应明文和密文域上的运算。

目前根据对其密文执行的数学运算的类型和频率的不同,将同态加密归纳为三种主要类型。

  • 部分同态加密(

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java Web —— 第七天(Mybatis案例1)

环境搭建 准备数据库表(dept、emp) -- 部门管理 create table dept(id int unsigned primary key auto_increment comment 主键ID,name varchar(10) not null unique comment 部门名称,create_time datetime not null comment 创建时间,update_time datetime not null commen…

Ubuntu24.04安装MYSQL8.0

更新源 sudo apt update安装mysql服务 默认安装最新版本 sudo apt install mysql-server检查安装版本 mysql --version检查mysql运行状态 systemctl status mysql开启远程访问,在ubuntu下mysql默认是只允许本地访问 sudo vim /etc/mysql/mysql.conf.d/mysqld.…

jdbc连接池之C3P0

C3P0:JDBC 连接池概述 C3P0 是一个开源的 JDBC 连接池库,用于管理数据库连接的获取与释放。它提供了连接池的自动管理和高效复用,从而减少了创建数据库连接所需的时间和资源消耗。C3P0 的核心功能是优化和管理数据库连接,以提高应…

python : Requests请求库入门使用指南 + 简单爬取豆瓣影评

Requests 是一个用于发送 HTTP 请求的简单易用的 Python 库。它能够处理多种 HTTP 请求方法,如 GET、POST、PUT、DELETE 等,并简化了 HTTP 请求流程。对于想要进行网络爬虫或 API 调用的开发者来说,Requests 是一个非常有用的工具。在今天的博…

如何取消Excel表格的“打开密码”

在日常工作和学习中,Excel表格作为一种强大的数据处理工具,被广泛应用。而我们为了保护excel文件中的数据,会为Excel设置打开密码,但随着时间和需求的变化,当我们需要取消密码保护时要怎么做呢? 方法一&…

【前端基础篇】HTML零基础速通

文章目录 前言HTML结构认识HTML标签 HTML文件基本结构标签层次结构 快速生成代码框架HTML常见标签注释标签标题标签段落标签换行标签格式化标签图片标签超链接标签表格标签基本使用合并单元格 列表标签表单标签form标签input标签 label标签select标签textarea标签无语义标签 HT…

ESP RainMaker OTA 自动签名功能的安全启动

【如果您之前有关注乐鑫的博客和新闻,那么应该对 ESP RainMaker 及其各项功能有所了解。如果不曾关注,建议先查看相关信息,知晓本文背景。】 在物联网系统的建构中,安全性是一项核心要素。乐鑫科技对系统安全给予了极高的重视。ES…

AgileTC测试用例管理平台的基本使用

1. 背景 使用企业微信在线文档对测试用例进行管理,存在以下问题,比如新建版本,每次都要设置下执行测试用例那一栏,要提供通过、失败、阻塞等选项,操作异常繁琐,比如版本管理问题,多个版本之后&a…

【企业高性能web服务器】

目录 一、Nginx 介绍1、 Nginx 功能介绍2、基础特性3、Nginx 模块介绍 二、Nginx 编译安装1、编写systemd服务 三、平滑升级和回滚1、平滑升级的流程2、升级2、回滚 四、 Nginx 核心配置详解1、实现 nginx 的高并发配置2、Nginx 账户认证功能3、nginx作为下载服务器配置 五、re…

为了改善您的网络安全状况,请专注于数据

有效地融合、管理和使用企业数据是一项艰巨的任务。企业拥有大量的数据,但这些数据存在于各自为政的系统和应用程序中,需要高技能的数据科学家进行大量的手动操作。工程师和分析师从所有数据中提取价值。 数据准备是一项基本且必要的任务,但…

IOS 11 通用Base控制器封装

整体规划 BaseController:把viewDidLoad逻辑拆分为三个方法,方便管理。 BaseCommonController:不同项目可以复用的逻辑,例如:设置背景颜色方法等 BaseLogicController:本项目的通用逻辑,主要…

Spring的核心启动流程

前言 Spring启动时候整个入口是这么一个方法 AbstractApplicationContext#refresh 总共有12个方法,也就是启动时的核心步骤 AbstractApplicationContext有众多实现,这里我选择SpringBoot Web应用默认的实现来讲 AnnotationConfigServletWebServerAppli…

MySQL系列—MySQL编译安装常见问题(或缺少依赖)及解决方法,MySQL 编译安装时需要安装的依赖(全)

MySQL系列—MySQL编译安装常见问题(或缺少依赖)及解决方法 MySQL 编译安装时需要安装的依赖(全): yum install -y cmake yum install ncurses ncurses-devel -y yum install -y libarchive yum install -y gcc gcc-c yum install -y openssl openssl-devel yum inst…

Python.NET:打开Python与.NET世界互通的大门

Python.NET 是一个强大的工具,它为 Python 程序员提供了一种与 .NET 公共语言运行时 (CLR) 无缝集成的途径。它就像一座桥梁,将 Python 的灵活性与 .NET 的强大功能连接起来,为开发者提供了前所未有的自由和可能性。 1. Python.NET 的核心价值…

内核代码中的路障宏

路障宏包含: mb()/rmb()/wmb barrier() __asm__:GCC关键字,用来声明一个内联汇编表达式。 __volatile__:告诉编译器,不要优化后面表达式中的内联汇编代码。 内联汇编表达式中的(“memory”):告诉GCC如下两个条件 If your assembler ins…

Flink常见数据源开发(DataStream API)

前言 一个 Flink 程序,其实就是对 DataStream 的各种转换。具体来说,代码基本上都由以下几部分构成,如下图所示: 获取执行环境(execution environment)读取数据源(source)定义基于数据的转换操作(transformations)定义计算结果的输出位置(sink)触发程序执行(exec…

Veritas NBU8.3.0.2安装Media Server(篇三)

一、环境自检阶段 1、Media角色地址为192.168.189.3,计算机名称为bakmedia,域名为sszz.com 2、防火墙均已关闭 二、hosts解析配置 在安装之前需要在hosts文件中配置解析,master和media都需要配置;后期如果备份客户端也需要为客户…

虚幻游戏开发| 编辑器内正常运行但打包出错

示例错误1 在编辑器里可以正常跳转关卡,但是在打包模式不能。 需要去projectsetting把需要跳转的关卡添加到maps list 编辑器内运行正常,但打包后出现报错或者不同的表现,其他原因汇总: 1. 资源加载问题 延迟加载:…

STM32 内部FLASH详解

目录 STM32 内部FLASH详解 1. STM32 FLASH简介 2. STM32 FLASH与SRAM 3. STM32 FLASH 容量、内容介绍 4. STM32 FLASH 读写注意事项 5. STM32 FLASH 基本结构 6. STM32 FLASH 读写步骤 6.1 FLASH 解除或添加 读、写保护的方法 6.2 FLASH 如何使用指针 读写存储器的方法…

Java | Leetcode Java题解之第354题俄罗斯套娃信封问题

题目&#xff1a; 题解&#xff1a; class Solution {public int maxEnvelopes(int[][] envelopes) {if (envelopes.length 0) {return 0;}int n envelopes.length;Arrays.sort(envelopes, new Comparator<int[]>() {public int compare(int[] e1, int[] e2) {if (e1[…