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

Shamir 秘密共享、GMW和BGW方案

一、Shamir秘密共享

Shamir秘密共享方案是一种将秘密拆分成多份并分配给多个参与者保存,只有在满足特定条件下才能恢复原始秘密的密码学方案。它具有良好的容错性、加法同态性和无条件安全性等特点。

具体地,Shamir秘密共享方案可以概括为以下步骤:

  1. 首先,选择一个大质数 p p p s < p s<p s<p,并选择一个随机数 a 0 a_0 a0,并生成 n − 1 n-1 n1个不同的随机数 a 1 , a 2 , ⋯ , a t − 1 a_1,a_2,\cdots,a_{t-1} a1,a2,,at1。这些数可用于定义一个 t − 1 t-1 t1阶多项式 f ( x ) = a 0 + a 1 x + a 2 x 2 + ⋯ + a t − 1 x t − 1 f(x) = a_0 + a_1x + a_2x^2 + \cdots + a_{t-1}x^{t-1} f(x)=a0+a1x+a2x2++at1xt1。多项式中除了 a 0 a_0 a0以外的系数都是随机生成的。

  2. 然后,将需要共享的秘密 s s s作为多项式中的常量项,即 f ( 0 ) = s f(0)=s f(0)=s,并计算出 f ( 1 ) , f ( 2 ) , . . . , f ( n − 1 ) f(1),f(2),...,f(n-1) f(1),f(2),...,f(n1)。每个参与者 i i i将会收到一个秘密分片 ( i , f ( i ) ) (i, f(i)) (i,f(i)),其中 i i i是参与者的编号。

  3. 如果我们至少获得了 t t t个秘密分片,我们就可以使用拉格朗日插值公式重建出原始秘密 s s s。具体地,可以使用以下公式:
    s = ∑ j = 1 t f ( j ) ∏ i ≠ j , i = 1 t k − i j − i s = \sum\limits_{j=1}^t f(j)\prod\limits_{i\neq j,\; i=1}^t \frac{k-i}{j-i} s=j=1tf(j)i=j,i=1tjiki
    其中, k k k是需要重建秘密的参与者数。

下面以一个简单的例子来说明Shamir秘密共享方案的应用。假设Alice和Bob想要合作保管一个密码,他们希望确保只有在两者都同意时才能访问该密码。为了实现这一目标,他们使用Shamir秘密共享方案进行分割。

首先,他们共同决定一个秘密值,并将其分解成两个部分: s 1 s_1 s1 s 2 s_2 s2。然后,他们随机生成两个随机数 a 0 a_0 a0 a 1 a_1 a1,并计算出一个 t − 1 t-1 t1阶多项式 f ( x ) = a 0 + a 1 x f(x) = a_0 + a_1x f(x)=a0+a1x。通过将 x = 1 x=1 x=1 x = 2 x=2 x=2代入多项式,他们分别获得了 ( 1 , f ( 1 ) ) = ( 1 , s 1 + a 0 + a 1 ) (1, f(1))=(1, s_1+a_0+a_1) (1,f(1))=(1,s1+a0+a1) ( 2 , f ( 2 ) ) = ( 2 , s 2 + 2 a 0 + 4 a 1 ) (2, f(2))=(2, s_2+2a_0+4a_1) (2,f(2))=(2,s2+2a0+4a1)两个秘密分片。

现在,如果他们想要检索这个密码,只有当他们两个人共同持有各自的秘密分片时,他们才能还原出原始的秘密值。因为他们两个人各有一个秘密分片,只需要使用拉格朗日插值公式即可还原出原始的秘密值:

s = ( 2 − 1 ) ( s 2 + 2 a 0 + 4 a 1 ) + ( 1 − 2 ) ( s 1 + a 0 + a 1 ) ( 1 − 2 ) = s 1 + s 2 s = \frac{(2-1)(s_2+2a_0+4a_1) + (1-2)(s_1+a_0+a_1)}{(1-2)} = s_1+s_2 s=(12)(21)(s2+2a0+4a1)+(12)(s1+a0+a1)=s1+s2

从这个例子中可以看出,Shamir秘密共享方案是一种实用而高效的方法,可以帮助多个参与者在保护隐私的前提下对敏感信息进行安全的共享和计算。它的容错性能力很好,可以适应各种网络条件和故障情况,并且具有无条件安全性。


在这里插入图片描述在这里插入图片描述
在这里插入图片描述

二、GMW方案

GMW和BGW方案是两种秘密共享的基本方案,它们都可以用来将一个秘密拆分成多份并分配给多个参与者保存。它们的主要区别在于使用的加密算法不同。

GMW方案也被称为Shamir秘密共享的扩展方案,它使用了广泛的家族算法来进行私钥共享,具有高效的性质和通用的安全证明。

GMW方案的核心思想是将秘密拆分成多份,并分配给多个参与者。每个参与者在本地留存一个秘密分片,并使用插值算法将它们组合起来,还原出秘密。此外,为了保护参与者之间的数据隐私,在这个过程中应用了RSA算法或其他家族算法来加密每个参与者的秘密分片,使得单个参与者无法获得其他任何参与者手上的信息。

例如,假设Alice、Bob和Charlie希望合作保管一个密钥,他们使用Shamir秘密共享方案进行分割。首先,他们共同决定一个秘密值,并将其分解成三个部分( s 1 , s 2 , s 3 s_1, s_2, s_3 s1,s2,s3),然后将这些部分秘密地分配给他们三个人。

Alice收到 s 1 s_1 s1、Bob收到 s 2 s_2 s2和Charlie收到 s 3 s_3 s3。现在,当Alice、Bob和Charlie需要通过组合他们的密钥部分生成原始密钥时,他们使用秘密共享方案中的插值算法,并确保每个步骤都进行加密来防止信息泄露。


GMW方案的核心思想是将秘密拆分成与者持有一个秘密分片,然后使用插值算法重新聚合这些分片,得到原始秘密。

具体来说,假设我们有一个秘密 s s s需要共享给 t t t个参与者(其中至少需要 k k k个参与者才能重建秘密)。对于每个参与者 i = 1 , 2 , . . . , t i = 1,2,...,t i=1,2,...,t,首先选择一个随机数 a i a_i ai,并计算出一个函数 f ( x ) = s + ∑ i = 1 t a i x i f(x) = s + \sum\limits_{i=1}^ta_ix^i f(x)=s+i=1taixi。每个参与者 i i i都会获得一对(x, y),其中x为随机数,y为 x x x代入 f ( x ) f(x) f(x)得到的结果。因此,每个参与者 i i i都可独立存储自己的秘密分片 ( x i , y i ) (x_i, y_i) (xi,yi)

接下来,为了重建原始秘密,参与者之间需要交换信息以恢复出秘密值。具体来说,每个参与者都需要将自己的秘密分片发送给其他参与者。一旦所有参与者收到了足够数量的秘密分片,他们可以通过多项式插值算法计算出完整的多项式,并从中恢复出秘密值 s s s。根据Lagrange插值定理,可以使用以下公式计算多项式:

f ( x ) = ∑ i = 1 t y i ∏ j ≠ i x − x j x i − x j f(x) = \sum\limits_{i=1}^t y_i\prod_{j\neq i}\frac{x-x_j}{x_i - x_j} f(x)=i=1tyij=ixixjxxj


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、BGW方案

BGW是Ben-Or、Goldwasser和Wigderson的缩写。这种方法也被称为 t,N \text{t,N} t,N阈值方案,其中 t t t表示阈值, N N N表示总共有多少个参与者。它是基于交互式协议的一个秘密分享方案,利用了Shamir秘密共享方案、ElGamal加密和Garbled电路的特性,通过多次通信构建应用程序或协议。该方案将所有秘密操作编码成部分执行和计算,以保护隐私。

假设Alice、Bob和Charlie想要合作测试一个密钥,他们希望使用BGW方案。他们开始时决定了如何将密钥拆分成子密钥。然后,他们采取随机的ElGamal加密和解密协议,按照预定的顺序对拆分的密钥段加密,并将加密日志(Garbled circuit logs)发送回服务器。

对于密码学应用,BGW对于安全计算具有显著的贡献。例如,在联合梯度下降(Federated Gradient Descent)中,参与者之间可以使用BGW方案共享计算梯度的秘密值,而无需暴露原始数据,从而实现了严格的隐私保护。


BGW方案基于阈值密码学,也称为(t, n)阈值方案,其中t表示需要恢复原始秘密的最小参与者数,n表示总参与者数。

假设我们要将秘密 s s s拆分成 n n n份,并将其中 t t t份重新聚合以求得原始秘密 s s s。BGW方案采用了同态加密和Garbled电路的方法来实现对保护隐私敏感计算任务的支持。

首先,每个参与者都执行一组ElGamal加密( E G k ( x ) EG_k(x) EGk(x),其中 k k k是公钥, x x x是原始秘密/Plaintext)。然后,他们交换密文并在解密前将密文混合起来(Shuffle)。接下来,他们执行类似于Garbled电路的解密过程(Yao’s Garbled Circuits)以及其特有的部分执行方案。具体来说,他们会构造每个门关系的相应表,其中包括外部输入变量、中间值变量和输出临时变量。接着,他们通过网络发送这些表给下一个参与者,接收方将使用ElGamal解密的方法来解密这些表,并进行下一作。最后,当所有密文混合、加密和半执行(semi-computation)完成后,可以得到原始秘密的分量。

BGW方案的阈值门可以用以下公式表示:

E ( 0 , r ) ^ = ∏ i = 1 t E i ( 0 , r ) \widehat{E(0, r)} = \prod\limits_{i=1}^t E_i(0, r) E(0,r) =i=1tEi(0,r)

其中, E ( 0 , r ) E(0, r) E(0,r)是加密一个明文0,用随机数 r r r成为其伪随机性的密文; E i ( 0 , r ) E_i(0, r) Ei(0,r)是第 i i i个秘密共享方案中的密文。

总之,GMW和BGW都是常见的机密分享方案。其核心思想是将保密数据拆分成若干片段,然后分发给不同的参与者。这样每个参与者都持有一部分信息,只有在集齐足够数量的信息时,才能还原出完整的秘密。GMW使用插值算法,而BGW使用ElGamal随机加密和Garbled电路等技术来实现秘密共享和计算任务。


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
学习导航:http://xqnav.top

相关文章:

Shamir 秘密共享、GMW和BGW方案

一、Shamir秘密共享 Shamir秘密共享方案是一种将秘密拆分成多份并分配给多个参与者保存&#xff0c;只有在满足特定条件下才能恢复原始秘密的密码学方案。它具有良好的容错性、加法同态性和无条件安全性等特点。 具体地&#xff0c;Shamir秘密共享方案可以概括为以下步骤&…...

Day56【动态规划】583.两个字符串的删除操作、72.编辑距离

583.两个字符串的删除操作 力扣题目链接/文章讲解 视频讲解 1、确定 dp 数组下标及值含义 dp[i][j]&#xff1a;以下标 i 为结尾的字符串 word1&#xff0c;和以下标 j 为结尾的字符串 word2&#xff0c;想要达到相等&#xff0c;所需要删除元素的最少次数为 dp[i][j] 2、…...

Arnold图像置乱的MATLAB实现

这件事情的起因是这样的&#xff0c;我需要研究一下各种图像置乱的算法。然后在知乎上找到了一篇关于Arnold变化的文章&#xff0c;但是呢&#xff0c;这个人实际上是卖资料&#xff0c;代做大作业的。详细的代码根部不给你&#xff0c;则给我气坏了&#xff0c;必须要手动实现…...

ASP.NET Core

1. 入口文件 一个应用程序总有一个入口文件&#xff0c;是应用启动代码开始执行的地方&#xff0c;这里往往也会涉及到应用的各种配置。当我们接触到一个新框架的时候&#xff0c;可以从入口文件入手&#xff0c;了解入口文件&#xff0c;能够帮助我们更好地理解应用的相关配置…...

javascript基础二十二:举例说明你对尾递归的理解,有哪些应用场景

一、递归 递归&#xff08;英语&#xff1a;Recursion&#xff09; 在数学与计算机科学中&#xff0c;是指在函数的定义中使用函数自身的方法 在函数内部&#xff0c;可以调用其他函数。如果一个函数在内部调用自身本身&#xff0c;这个函数就是递归函数 其核心思想是把一个大型…...

hive中如何计算字符串中表达式

比如 select 1(2-3)(-4.1-3.1)-(4-3)-(-3.34.3)-1 col ,1(2-3)(-4.1-3.1)-(4-3)-(-3.34.3)-1 result \ 现在的需求式 给你一个字符串如上述col 你要算出result。 前提式 只有和-的运算&#xff0c;而且只有嵌套一次 -(4-3)没有 -(-4(3-(31)))嵌套多次。 第一步我们需要将运…...

如何将maven项目改为springboot项目?

将 Maven 项目转换为 Spring Boot 项目需要进行以下步骤&#xff1a; 1. 在 Maven 项目中添加 Spring Boot 的依赖。可以通过在 pom.xml 文件中添加以下依赖来实现&#xff1a; <dependency> <groupId>org.springframework.boot</groupId> <artifactId>…...

Java与查找算法(5):哈希查找

一、哈希查找 哈希查找&#xff0c;也称为散列查找&#xff0c;是一种基于哈希表的查找算法。哈希表是一种数据结构&#xff0c;它将键&#xff08;key&#xff09;映射到值&#xff08;value&#xff09;&#xff0c;使得查找某个键对应的值的时间复杂度为O(1)。哈希查找的过…...

Vercel部署个人博客

vercel 部署静态资源网站极其方便简单&#xff0c;并且有可观的访问速度&#xff0c;最主要的是免费部署。 如果你还没有尝试的话&#xff0c;强烈建议去使用一下。 演示博客演示http://202271.xyz/?vercel vercel 介绍 注册账号 进入Vercel官网https://vercel.com&#x…...

【论文阅读】An Object SLAM Framework for Association, Mapping, and High-Level Tasks

一、系统概述 这篇文章是一个十分完整的物体级SLAM框架&#xff0c;偏重于建图及高层应用&#xff0c;在前端的部分使用了ORBSLAM作为基础框架&#xff0c;用于提供点云以及相机的位姿&#xff0c;需要注意的是&#xff0c;这篇文章使用的是相机&#xff0c;虽然用的是点云这个…...

《metasploit渗透测试魔鬼训练营》学习笔记第六章--客户端渗透

四.客户端攻击 客户端攻击与服务端攻击有个显著不同的标识&#xff0c;就是攻击者向用户主机发送的恶意数据不会直接导致用户系统中的服务进程溢出&#xff0c;而是需要结合一些社会工程学技巧&#xff0c;诱使客户端用户去访问这些恶意数据&#xff0c;间接发生攻击。 4.1客户…...

华为OD机试真题 Java 实现【Linux 发行版的数量】【2023Q1 100分】

一、题目描述 Linux 操作系统有多个发行版,distrowatch.com 提供了各个发行版的资料。这些发行版互相存在关联,例如 Ubuntu 基于 Debian 只开发而 Mint 又基于 Ubuntu 开发,那么我们认为 Mint 同 Debian 也存在关联。 发行版集是一个或多个相关存在关联的操作系统发行版,…...

VMware ESXi 8.0U1a macOS Unlocker OEM BIOS (标准版和厂商定制版)

VMware ESXi 8.0 Update 1a macOS Unlocker & OEM BIOS (标准版和厂商定制版) ESXi 8.0U1 标准版&#xff0c;Dell HPE 联想 浪潮 定制版 请访问原文链接&#xff1a; https://sysin.org/blog/vmware-esxi-8-u1-oem/&#xff0c;查看最新版。原创作品&#xff0c;转载请保…...

Effective STL_读书笔记

Effective STL 1. 容器条例01&#xff1a;慎重选择容器类型条例02&#xff1a;不要试图编写独立于容器类型的代码条例03&#xff1a;确保容器中对象的拷贝正确而高效条例04&#xff1a;调用empty而不是检查size()是否为空条例05&#xff1a;区间成员函数优先于与之对应的单元素…...

通过yum:mysql5.6-msyql5.7-mysql8.0升级之路

一 前言 mysql的yum源 https://dev.mysql.com/downloads/repo/yum/ https://dev.mysql.com/get/mysq57-community-release-el7-7.noarch.rpm服务器信息 2c2g40GB [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]# una…...

C语言数据存储 — 整型篇

C语言数据存储 — 整型篇 前言1. 数据类型介绍1.1 类型的基本分类 2. 整型在内存中的存储2.1 原码、反码、补码2.1.1 为什么数据存放在内存中存放的是补码 2.2 大小端介绍2.2.1 什么是大小端&#xff1f;2.2.2 为什么有大端和小端&#xff1f;2.2.3 一道百度系统工程师笔试题 3…...

高级Excel功能教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 Excel是办公室自动化中非常重要的一款软件&#xff0c;Excel函数则是Excel中的内置函数。Excel函数共包含11类&#xff0c;分别是数据库函数、日期与时间函数、工程函数、财务函数、信息函数、逻辑函数、查询和引用函数、数学和三角函数、统计函数、文本函数以及用户…...

ChatGPT会取代低代码开发平台吗?

编程作为一种高端技能&#xff0c;向来是高收入高科技的代名词。近期&#xff0c;伴随着ChatGPT在全球的爆火&#xff0c;过去通过窗口“拖拉拽”的所见即所得方式的低代码开发模式&#xff0c;在更加智能和更低成本的AI搅局之下&#xff0c;又面临了更深层次的影响。 低代码平…...

Linux :: 文件内容操作【5】:echo 指令 与 输入重定向、输出重定向、追加重定向在文件内容写入中的简单用法!

前言&#xff1a;本篇是 Linux 基本操作篇章的内容&#xff01; 笔者使用的环境是基于腾讯云服务器&#xff1a;CentOS 7.6 64bit。 学习集&#xff1a; C 入门到入土&#xff01;&#xff01;&#xff01;学习合集Linux 从命令到网络再到内核&#xff01;学习合集 说明&#x…...

【RocketMQ】重试机制及死信消息处理

【RocketMQ】重试机制及死信消息处理 文章目录 【RocketMQ】重试机制及死信消息处理1. 重试机制1.1 生产者重试1.2 消费者重试1.2.1 死信队列 参考文档&#xff1a; 官方文档 1. 重试机制 1.1 生产者重试 rocketmq生产者发送消息失败默认重试2次(同步发送为2次&#xff0c;异…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...