当前位置: 首页 > news >正文

基于量子同态的安全多方量子求和加密

摘要
安全多方计算在经典密码学中一直扮演着重要的角色。量子同态加密(QHE)可以在不解密的情况下对加密数据进行计算。目前,大多数协议使用半诚实的第三方(TP)来保护参与者的秘密。我们使用量子同态加密方案代替TP来保护各方的隐私。在量子同态加密的基础上,提出了一种安全的多方量子和方案,其中N个参与者可以委托一个具有强大量子计算能力的服务器协助计算。通过将计算和密钥更新过程委托给服务器和半诚实的密钥中心,参与者使用泡利算子加密他们的私有信息数据以获得总和。此外,服务器可以自行设计和优化求和线,即使秘密信息为负,也能得到正确的结果。正确性分析表明,参与者能够正确地获得计算结果。安全性分析证明,该方案既能抵抗外部攻击,又能抵抗参与者自身的攻击,并能抵抗多达N-2个参与者的合谋攻击。从理论上讲,该协议可以推广到其他安全的多方计算问题。

QOTP

量子同态加密方案包括四种算法,每种算法的实现过程如下。

  1. 密钥生成算法。客户端使用安全参数的一元表示作为算法的输入,获得一组密钥,即经典公开加密密钥pk、经典秘密解密密钥sk和量子评估密钥 ρ e v k ρ_evk ρevk
  2. 加密算法。客户端根据加密密钥pk的值对明文信息M进行加密,并将加密后的信息C发送给服务器。加密是由多个X和Z门组合后形成的结果。
  3. 同态求值算法。服务器对接收到的加密信息C执行一元算子U,并将评估信息E发送给客户端。这个过程将消耗量子评估密钥。
  4. 解密算法。由于服务器执行了幺正算子U,客户端更新解密密钥sk对接收到的求值信息e进行解密,客户端的解密信息本质上就是作用于明文信息M的幺正算子U。

OTP的加密公式如下所示
在这里插入图片描述
基于该加密公式的变式如下所示:
在这里插入图片描述
当服务器执行T或Ty门的评估时,会发生意外的s错误
在这里插入图片描述
如果只对求值结果执行X和Z,则不能完全得到T|φ >,可能会出现s误差。为了消除s误差,Gong等基于u旋转贝尔测量的思想,设计了如图所示的量子电路来完成t门的同态评价过程。
在这里插入图片描述
根据加密密钥a的值,客户端进行Sa旋转贝尔测量,得到r和t的值。根据密钥更新算法,客户端将解密密钥更新为 a ⊕ r a\oplus r ar a ⊕ r ⊕ t a\oplus r \oplus t art,用于解密算法,完成t门的求值。
在这里插入图片描述

量子全加法器电路

在本节中,我们描述了如何构建一个基于经典二进制加法的量子全加法器电路。假设有两个无符号二进制数,A=(a0,a1,…,an-1)和B=(b0,b1,…,bn-1)。这两个数的和是C = (c0, c1,…,cn),其中q是进位量子位。
在这里插入图片描述
二进制加法包括异或运算和与运算。量子电路中的CNOT和Toffoli门完成这两种操作。由CNOT门和Toffoli门组成的两个参与者的全加法器电路,一个两位量子全加法器电路如下图所示。
在这里插入图片描述
Toffoli门可分解为2个H门、1个S门、6个CNOT门、3个t门和4个ty门,详细电路如下图所示。
在这里插入图片描述
Toffoli门的详细分解电路是实现2位量子全加法器的基本元件。它将三量子位门的实现转化为单量子位和双量子位门的组合,在一定程度上易于实验和技术实现。

在我们的协议中,要加密的参与者的消息是经典的二进制数据,可以通过利用水平和垂直极化来表示。垂直偏振光子|1 >表示1,水平偏振光子|0 >表示0。在传输这些光子之前,所有的光子都是使用QOTP加密。请注意,如果加密消息是经典的,则可以使用QOTP生成完全安全的密文。
在这里插入图片描述

假设有N个参与者(P1, P2,…,Pn),每个参与者都持有一个只有他们自己知道的m长度的秘密信息Ii(i = 1,2,…,N)。它们可以借助服务器和可信密钥中心计算出Ii的总和,它们与TP之间的通信模型如上图所示。为了防止计算溢出,需要一个安全参数K,其中K = [log2(N)] + 2。在下图中,我们展示了该方案的流程图。
在这里插入图片描述

  1. 密钥中心随机生成N个长度为2m的密钥,并通过安全的密钥分发协议(如BB84协议)将 K e y i 0 Key^0_i Keyi0发送给参与者Pi。
  2. 如果参与者的秘密信息 I i I_i Ii的数量为正或零,参与者不必对他们的0-1代码做任何事情。否则,它们将0-1代码转换为2的补码。然后他们准备光子序列 ∣ ψ 1 i ⟩ . . . ∣ ψ M i ⟩ |\psi^i_1\rangle...|\psi^i_M\rangle ψ1i...∣ψMi基于它们的0-1编码,如果 B i n j i = 1 Bin^i_j=1 Binji=1,则 ∣ ψ j i ⟩ = ∣ 1 ⟩ |\psi^i_j\rangle=|1\rangle ψji=∣1;如果 B i n j i = 0 Bin^i_j=0 Binji=0,则 ∣ ψ j i ⟩ = ∣ 0 ⟩ |\psi^i_j\rangle=|0\rangle ψji=∣0。然后使用 K e y i 0 Key^0_i Keyi0对光子序列进行加密,基于QOTP得到 ∣ Ψ 1 i ⟩ . . . ∣ Ψ M i ⟩ |\Psi^i_1\rangle...|\Psi^i_M\rangle Ψ1i...∣ΨMi= X a 1 ( 0 ) Z b 1 ( 0 ) ∣ ψ 1 i ⟩ . . . X a M + L ( 0 ) Z b M + L ( 0 ) ∣ ψ M i ⟩ X^{a_1(0)}Z^{b_1(0)}|\psi^i_1\rangle...X^{a_{M+L}(0)}Z^{b_{M+L}(0)}|\psi^i_M\rangle Xa1(0)Zb1(0)ψ1i...XaM+L(0)ZbM+L(0)ψMi。最后,密钥中心根据安全参数k添加2K零密钥。
    参与者在光子序列前加上k长度为|0>的光子,则新光子序列为 ∣ 0 1 ⟩ . . . ∣ 0 k ⟩ ∣ Ψ 1 i ⟩ . . . ∣ Ψ M i ⟩ |0_1\rangle...|0_k\rangle|\Psi^i_1\rangle...|\Psi^i_M\rangle 01...∣0kΨ1i...∣ΨMi.信息为负的参与者在光子序列前添加k长度|1 >个光子,新光子序列为 ∣ 1 1 ⟩ . . . ∣ 1 k ⟩ ∣ Ψ 1 i ⟩ . . . ∣ Ψ M i ⟩ |1_1\rangle...|1_k\rangle|\Psi^i_1\rangle...|\Psi^i_M\rangle 11...∣1kΨ1i...∣ΨMi
  3. 为了防止被窃听,参与者准备了Di个诱饵光子,并随机插入到自己的光子序列中,每个光子从{|0 >,|1 >,|+ >,|−>}中选择,并将新的光子序列发送给服务器。
  4. 一旦服务器获得他们的光子序列,参与者宣布插入的诱饵光子的位置 P o i Po^i Poi b a s e B a i base Ba^i baseBai。如果插入诱饵为|0 >或|1 >,则测量基为{|0 >,|1 >};若插入诱饵为|+>或|−>,则测量基为|+>或|−>。服务器根据测量结果计算准确度,如果准确度低于预设的阈值,则表示存在窃听者,然后终止协议。否则,服务器将丢弃这些诱饵光子并继续下一步。
  5. 服务器构建一个量子全加法器电路,每个参与者的光子序列作为电路的输入。在评估操作中,密钥中心根据服务器执行的量子门和量子门的密钥更新算法更新密钥。在服务器执行完量子电路中的所有量子门后,密钥中心获得最终更新的 K e y i f i n a l Key^{final}_i Keyifinal,即解密密钥。服务器将计算结果发送到密钥中心。
  6. 密钥中心使用解密密钥对光子序列中的所有光子进行解密和测量,然后将测量结果释放给所有参与者。然后参与者计算比特序列,得到他们的秘密信息的总和。

在步骤5中,在同态求值算法中,当服务器对密文进行Clifford gate运算时,根据Clifford gate与泡利矩阵之间的交换规则,无需额外的经典资源或量子资源即可获得新的中间密钥。假设服务器执行的第i次Clifford gate操作定义为Gi,作用于光子序列 G i X a k ( j ) Z b k ( j ) ∣ ψ ⟩ G_iX^{a_k(j)}Z^{b_k(j)}|\psi\rangle GiXak(j)Zbk(j)ψ中的第k个,(如果Gi = CNOT,输入量子位分别为k和l,则 G i X a k ( j ) Z b k ( j ) ∣ ψ ⟩ ⊗ G i X a l ( j ) Z b l ( j ) ∣ ψ ⟩ G_iX^{a_k(j)}Z^{b_k(j)}|\psi\rangle\otimes G_iX^{a_l(j)}Z^{b_l(j)}|\psi\rangle GiXak(j)Zbk(j)ψGiXal(j)Zbl(j)ψ,其中Gi∈{X, Y, Z, H, T, S, CNOT}, ak(j), bk(j)为(j+1)-中间密钥。对于操作Gi和密钥更新算法,第j+1中间密钥的计算过程如下:
在这里插入图片描述
任何任意的酉算子都可以由H、S、CNOT和T门组成,并且客户端需要T门键更新才能在服务器上执行任何酉操作。但是当t门作用于加密的量子位时,就会发生s错误。

相关文章:

基于量子同态的安全多方量子求和加密

摘要安全多方计算在经典密码学中一直扮演着重要的角色。量子同态加密(QHE)可以在不解密的情况下对加密数据进行计算。目前,大多数协议使用半诚实的第三方(TP)来保护参与者的秘密。我们使用量子同态加密方案代替TP来保护各方的隐私。在量子同态加密的基础上&#xff…...

前端自动化测试:确保质量和稳定性的关键步骤

文章目录 测试金字塔与前端测试层级1. 单元测试(Unit Testing)2. 组件测试(Component Testing)3. 集成测试(Integration Testing)4. 端到端测试(End-to-End Testing) 单元测试、集成…...

《Ansible自动化工具篇:Centos操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》

一、部署背景 由于业务系统的特殊性,我们需要针对不同的客户环境部署二进制版K8S集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了 基于a…...

Java实现十大经典排序算法之快速排序

0 算法简介 快速排序是一种高效率排序算法,它是对冒泡排序的一种改进,它也是一种不稳定排序算法。快速排序的核心是比较、交换和递归。 在待排序数组中指定一个基准元素pivot(一般选取数组首元素),使得数组排序之后基…...

【0803作业】创建两个线程:其中一个线程拷贝图片的前半部分,另一个线程拷贝后半部分(4种方法)

方法一:使用pthread_create、pthread_exit、pthread_join函数【两个线程不共用同一份资源】 先在主函数创建并清空拷贝的目标文件,再创建两个线程,在两个线程内部同时打开要读取的文件以及要拷贝的目标文件(两个线程不共用同一份资…...

php运算符的短路特性

php运算符的短路特性 1、逻辑运算符:逻辑与(&&)和逻辑或(||),存在着短路特性 PHP中有以下两个运算符具有短路的特性,他们是逻辑运算符的逻辑与(&&)和逻辑或(||&am…...

C语言假期作业 DAY 13

一、选择题 1、如果 x2014 ,下面函数的返回值是( ) int fun(unsigned int x) { int n 0; while(x 1) { n; x x | (x 1); } return n; } A: 20 B: 21 C: 23 D 25 答案解析 正确答案:C 这个作用是对整型中0的个数进行统计&…...

以产品经理的角度去讲解原型图---会议OA项目

目录 一.前言 二.原型图 2.1 原型图是什么 3.1 原型图的作用 三.演示讲解 3.1 项目背景 3.2 项目介绍 3.2.1 会议管理(会议的发起,通知) 3.2.2 投票管理(会议的流程重大决策记录) 3.2.3 会议室管理 3.2.4 系统管…...

C++ 外部变量和外部函数

1.外部变量 如果一个变量除了在定义它的源文件中可以使用外,还能被其他文件使用,那么就称这个变量为外部变量。命名空间作用域中定义的变量,默认情况下都是外部变量,但在其他文件中如果需要使用这一变量,需要用extern…...

C# Onnx Paddle模型 OCR识别服务

效果 项目 可运行程序exe下载 Demo(完整源码)下载...

MCUXpresso for VS Code -- 基于VSCode开发RT1176

MCUXpresso for VS Code 是nxp推出插件,旗下MCX LPC, Kinetis和i.MX rt等MCU,都能在VS Code平台进行嵌入式开发。功能框图如下: 前期准备: 软件环境: windows(实际可以跨系统,linux和mac没有测试) VS Code ninja CMa…...

MySQL的使用——【初识MySQL】第二节

MySQL的使用——【初识MySQL】第二节 文章目录 MySQL环境变量的配置(如使用Navicat可忽略)使用命令行连接MySQL(如使用Navicat可忽略)步骤注意 NavicatNavicat的下载Navicat的使用连接MySQL新建表 总结总结 MySQL环境变量的配置&a…...

MySQL最终弹-并发(脏读,不可重复读,幻读及区别),JDBC的使用和安装,最全万字

一、💛并发基本概念 并发的基本意思: 什么是并发呢?简单的理解就是同一时间执行 服务器同一时刻,给多个客户端提供服务~~,这两个客户端都可以给服务器提交事务。 如果提交两个事务,改…...

⌈C++⌋从无到有了解并掌握C++面向对象三大特性——封装、继承、多态

前置知识:类和对象 参考书籍:《C Primer 第五版》 目录 什么是面向过程?什么是面向对象? 一、封装 1、封装的含义以及如何实现封装 1.1 访问限定符(访问说明符) 1.2 什么是封装? 2、封装的优点…...

Element的el-select下拉框多选添加全选功能

先看效果图 全选: 没有选中时: 选中部分: 作者项目使用的是vue3写法,如果是vue2的自己转换一下 html代码: js代码: 拓展 另一种方法,如果不想使用勾选框,可以试试下面的方…...

python调用pytorch的clip模型时报错

使用python调用pytorch中的clip模型时报错:AttributeError: partially initialized module ‘clip’ has no attribute ‘load’ (most likely due to a circular import) 目录 现象解决方案一、查看项目中是否有为clip名的文件二、查看clip是否安装成功 现象 clip…...

MySQL 数据库 binLog 日志的使用

一、概念与作用 binlog(二进制日志)是MySQL数据库中的一种日志类型。它记录了数据库中的所有更改操作,例如插入、更新、删除操作。binlog以二进制形式存储,因此可以更高效地进行读取和解析。 binlog通常用于以下几个方面&#x…...

Apache Storm入门介绍之三分钟看懂Apache Storm

文章目录 0.前言1. 什么是 Apache Storm?1.1. Nimbus1.2. Zookeeper1.3. Supervisor1.4. Worker1.5 集群模式下各组件职责 2. 核心概念2.1基本架构和任务模型2.2 工作流程 3. 源码地址3.1. 代码结构3.1. 核心模块介绍 4. Storm入门实例0.创建java工程并引入依赖1. 创…...

RF手机天线仿真介绍(三):调谐开关分析

目录 简介调谐开关RON、COFF的影响分析不同位置的调谐器件coff影响分析不同位置的调谐器件Ron影响分析Coff引起谐振的解决示例 调谐开关VPEAK分析调谐开关Vpeak示例 简介 孔径调谐能调节天线的电长度,可将其谐振点切换到所需支持的工作频段。天线孔径调谐器通过改变…...

Ubuntu20.04 + QT5.14.2 + VTK8.2.0 + PCL 1.10 环境配置

目录 Ubuntu20.04 QT5.14.2 VTK8.2.0 PCL 1.10 环境配置一、VTK 编译和安装1、库依赖:2、下载资源:[下载VTK8.2.0](https://www.vtk.org/files/release/8.2/VTK-8.2.0.tar.gz)3、编译:4、安装5、qtcreator 配置编译的libQVTKWidgetPlugin.…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言:多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

MySQL的pymysql操作

本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

数据库正常,但后端收不到数据原因及解决

从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化? 在数据科学和分析领域,可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具,如 Matplotlib、Seaborn、Plotly 等,但 Pandas 内置的可视化功能因其与数据结…...

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除

目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作&#xf…...