学习《现代密码学——基于安全多方计算协议的研究》 第三章 (秘密共享部分)

本文主要是介绍学习《现代密码学——基于安全多方计算协议的研究》 第三章 (秘密共享部分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

第3章 密码学基础

3.1 秘密共享

【定义3-1】(秘密共享)

【定义3-2】((t-n)门限秘密共享)

3.1.1 研究进展

1.可验证秘密共享

2.权重秘密共享

        3.主动秘密共享

4.理性秘密共享

5.动态秘密共享

6.多秘密共享

7.量子秘密共享

3.1.2 经典协议

【协议3-1】 Shamir (t-n)门限秘密共享方案

个人写的一个例子:

好的,让我们通过一个简单的例子来解释 Shamir 秘密共享方案。


第3章 密码学基础


        某公司打算将一个包含重要商业机密的秘密信息告诉n个员工。但是,公司不希望任何一个员工单独获得秘密信息,它希望至少t个员工同时在场时才能获知秘密信息。那么,这个公司该如何实现秘密的分发呢?
        这是秘密共享的典型应用场景,秘密共享是安全多方计算常用的密码学原语之一。如果把安全多方计算看作高楼,那么秘密共享、茫然传输、同态加密技术、零知识证明技术、比特承诺等密码学原语就是这座高楼的地基。和很多其他领域相同,安全多方计算的地基一直在不断地发展和完善。本章将为读者展示设计安全多方计算协议时常用的密码学原语。

3.1 秘密共享


        现代密码学体制基于Kerchhoff假设,即一个秘密系统的安全性与它所使用的密钥的安全性相关,与它所采用的加解密算法无关。对称加密系统的安全性取决于其所使用密钥的安全性;公钥加密系统的安全性取决于其所使用私钥的安全性。因此,为了保证秘密系统的安全性,密钥的管理极为重要。在传统的密钥管理方案中,为了防止密钥丢失,往往将密钥在多处进行备份。但是,随着密钥备份数量的增加,密钥被泄露的概率也不断增加。为了解决上面的问题,1979年Shamir和Blakley分别提出了秘密共享的概念和解决方案。一个完整的秘密共享算法由子秘密生成算法、秘密分发算法和秘密恢复算法三部分组成。

【定义3-1】(秘密共享)


        秘密发布者D根据访问结构Γ将秘密在参与者P中分享,每个参与者得到的秘密份额被称为子秘密。访问结构Γ定义了参与者的授权子集,由任意授权子集中的参与者贡献出他们持有的子秘密可以恢复被共享的秘密,但是非授权子集中的参与者不能获得关于秘密的任何有用信息。


【定义3-2】((t-n)门限秘密共享)


        一个秘密共享算法被称为是(t−n)门限秘密共享算法,如果它满足:秘密分发阶段秘密发布者 D 将秘密s∈GF(q)在 n 个参与者{p1,p2 ,…,pn }之间共享;秘密恢复阶段,至少需要t个参与者贡献出他们的子秘密才能恢复出秘密。


3.1.1 研究进展


        秘密共享不论在理论研究还是在实际应用方面,都具有非常重要的价值。因此,秘密共享的概念被提出后,国内外众多学者纷纷加入到秘密共享的研究行列中。图3-1显示了秘密共享算法的最新研究方向和理论基础。

1.可验证秘密共享


        在秘密共享过程中,如果秘密发布者或参与者存在欺诈行为,则秘密的安全性可能得不到应有的保障。下面看两个小故事。
        故事1:假设Alice是秘密分发者,Bob是秘密接收者之一。由于一些私人恩怨,Alice给Bob发送了一个假的子秘密。因此,如果Bob参与秘密恢复,则会因为Bob手中的假子秘密导致无法恢复出真实的秘密。


        故事2:假设Bob是秘密接收者之一。在秘密恢复阶段,由于个人原因Bob提供了虚假的子秘密,这样可能导致大家都无法得到真实的秘密。
        上面两个故事分别讲述了秘密分发者和秘密恢复者即参与者存在的欺诈行为。为了防止这些类欺诈行为得逞,可验证秘密共享(Verifiable Secret Sharing,VSS)方案被提出。很多学者通过在普适秘密共享方案的基础上增加验证模块实现可验证秘密共享算法。可验证秘密共享分为交互式和非交互式两类。交互式方案中实现的验证算法需要参与者之间或参与者和分发者之间进行信息交互,而非交互式方案则不需要交互信息,因此多数交互式方案的效率低于非交互式方案。


2.权重秘密共享


传统秘密共享方案中,参与者的地位是平等的。但在现实生活中,参与者之间可能存在着职位或者权利大小的区别。例如,有一个秘密需要在公司的高层之间共享,职位越高的参与者恢复秘密的能

力应该越强。当恢复秘密的时候,总经理和一名部门经理可以恢复出秘密,但是如果总经理不在场,可能需要三名部门经理才可以恢复出秘密。由此产生了权重秘密共享方案。第一个权重秘密共享方案是由Morillo等人基于图的分解结构提出的。


        3.主动秘密共享


        现实生活中有一类机密性高且有效期长的秘密需要被共享。此时如果应用传统的秘密共享方案,攻击者有足够的时间逐个攻破各参与者的子秘密,从而最终恢复出秘密信息。这种攻击方式被称为移动敌手攻击。Ostrovsky等人提出了使用主动秘密共享方案来抵抗移动敌手攻击。
主动秘密共享方案中假设在每一个子秘密生存周期内,移动敌手至多可以控制一定数量的参与者。在(t-n)门限秘密共享方案中,移动敌手只有在一个子秘密生存周期内攻破 t个参与者才能恢复出秘密信息。因此,通过设置合理的门限参数和子秘密生存周期,可以保证秘密在较长一段时间内的安全性。
        根据更新子秘密的主体角色的不同,主动秘密共享方案分为两类。第一类方案中,子秘密由参与者更新。由于此时参与者之间需要进行大量的交互,因此这类方案往往效率较低。第二类方案中,子秘密由秘密分发者更新后分发给参与者,此类方案无须参与者之间进行信息交互,因此其效率相对第一类方案较高,但是要求秘密分发者定时在线。


4.理性秘密共享


        传统秘密共享方案中,参与者的诚实度在协议开始之前就确定了。现实生活中的参与者往往是理性的,他们会根据实际情况作出对自己有利的选择,并非完全按照协议执行或者完全按照攻击者的意志执行。Halpern和Teague将博弈论和秘密共享结合,提出了解决这个实际应用问题的理性秘密共享方案。理性秘密共享方案将协议分为若干“轮”,参与者会根据每一“轮”中所获得信息量的大小决定是否继续参与到协议中。


5.动态秘密共享


        随着时间的推移,秘密共享方案中可能会产生一些变量。考虑如下三个应用场景。
        场景 1:子秘密被分发之后,如果有新的参与者加入或有参与者退出,秘密分发者需要重新为所有的参与者分发子秘密。这样不仅效率较低,而且浪费资源。
        场景 2:在秘密共享方案实施初期,由于参与者之间互不信任,因此需要设置一个较高的门限参数。但是,随着时间的推移,参与者之间变得互相信任,这时可以降低门限值从而提高协议执行效率。
        场景3:在秘密共享方案实施初期互相信任的参与者,在秘密共享期间由于其他原因,开始互相猜疑,因此需要提高门限值以增强系统的安全性。

        上述三个应用场景中,场景1要求参与者在秘密共享过程中可以动态加入或者退出,场景2和场景3要求门限值可变。动态秘密共享就是为了满足上述需求而提出的。动态秘密共享方案按照可动态变化对象的不同,分为参与者可变的秘密共享方案和门限值可变的动态秘密共享方案。动态秘密共享方案也是近几年的研究热点。


6.多秘密共享


        假设某公司有m个商业秘密,每个商业秘密都包含用于商业运营的重要信息。该公司雇佣了n个员工,现在公司需要将m个秘密在n个员工之间共享,但是它不希望任意一个员工单独获取秘密。该公司规定,每一个秘密都需要根据一个特殊的访问结构在n个员工中分享。
该公司可以执行多次秘密共享过程来实现这些秘密的分享。但是如果这样,秘密分发机构需要执行大量子秘密分发操作,同时每个员工需要保存多个子秘密。也就是说,这种方案存在子秘密的管理烦琐和执行效率低等问题。
        为了实现一次共享多个秘密,多秘密共享(Multi-Secret Sharing,MSS)方案被提出。1993年,Blundo等基于信息论提出了一个多秘密共享方案。此后,大量多秘密共享方案被提出。7.4节对多秘密共享进行了详细地介绍,感兴趣的读者可以直接阅读该章节。


7.量子秘密共享


        量子秘密共享是密码学与量子力学结合的产物。量子秘密共享的概念最早是由Hillery、Buzek和Berthiaume在1999年基于三粒子纠缠态提出来的。量子秘密共享中最为经典的三个方案分别是基于三粒子纠缠态的HBB方案、基于非纠缠态的GG方案及基于量子态的方案。
        随着计算机计算能力的不断提高,基于计算复杂度的传统密码算法的安全性越来越受到考验,而量子密码学恰恰能解决这个问题,因此成为了近几年来的研究热点。

3.1.2 经典协议
 

【协议3-1】 Shamir (t-n)门限秘密共享方案


        Shamir (t-n)门限秘密共享方案是基于Lagrange插值定理设计的。
子秘密生成阶段:
步骤1:秘密发布者 D 随机选取n个不同的非零元素a1 ,a2 ,…,an ∈GF(q)(q为素数且q﹥n),并构造t−1次多项式 f(x)=at−1 xt−1 +at−2 xt−2 +…a1 x1 +s。其中,s是需要共享的秘密信息。步骤2:D 随机的从有限域GF(q)中选取n个不同的非零元素x1 ,x2 ,…,xn ,并计算yi = f(xi )。秘密分发阶段:
        D通过安全信道将(xi ,yi )分别发送给Pi(i=1,2,…,n)。
秘密恢复阶段:

        t个参与者(不妨设P1 ,P2 ,…,Pt )利用下面公式可恢复出秘密s。

个人写的一个例子:

好的,让我们通过一个简单的例子来解释 Shamir 秘密共享方案。

        

        假设密文为1017(S=1017),发布者将这个秘密分为6个,只有当至少3(k=3)个人合作时才能恢复出完整的秘密。

      

                                多项式:f(x) = a_0 + a_1x + a_2x^2

        上面多项是的:a_0为S=1017    a_1  和 a_2是发布者生成的随机数。(其实这里的多项式是和k有关的,假设k=5,那么多项式就为f(x) = a_0 + a_1x + a_2x^2+a_3x^3+a_4x^4,同时也要发布者生成的随机数k-1个。)

        假设发布者生成的随机数135和56.(a_0 =1017,a_1=135,a_2=56)

                                多项式为:f(x) = 1017 + 135x + 56x^2

因为发布者将这个秘密分为6个,也就是x_1=1,x_=2.....x_6=6    将x带入多项式

                        当:x_1=1

                                得:f(x) = 1017 + 135x + 56x^2

                                               =1017+135*1+56*1^2

                                                =1208   

                                          即:D_1{1,1208}

                        

                                当:x_2=2

                                得:f(x) = 1017 + 135x + 56x^2

                                               =1017+270+224

                                                =1511   

                                          即:D_2{2,1511}

                                当:x_3=3

                                        得:f(x) = 1017 + 135x + 56x^2

                                               =1017+405+504

                                                =1926   

                                          即:D_3{3,1926}

                                    当:x_4=4

                                        得:f(x) = 1017 + 135x + 56x^2

                                               =1017+540+896

                                                =2453   

                                          即:D_4{4,2453}

                                        当:x_5=5

                                        得:f(x) = 1017 + 135x + 56x^2

                                               =1017+675+1400

                                                =3092   

                                          即:D_5{5,3092}          

                                       当:x_6=6

                                        得:f(x) = 1017 + 135x + 56x^2

                                               =1017+810+2016

                                                =3843   

                                          即:D_6{6,3843}

        多项式构造的6个点分别为D_1{1,1208},D_2{2,1511},D_3{3,1926},D_4{4,2453},D_5{5,3092} ,D_6{6,3843},这就是发布者生成的子密钥。

        假设解密的参与者为1,2,3

        即:x_1,y_1={1,1208},x_2,y_2={2,1511},x_3,y_3={3,1926}

通过拉格朗日多项式计算:

                        

                =1208·l_1(x)+1511·l_2(x)+1926·l_3(x)

                密文是x=0时的多项的解

                即:x=0

                       =1208*3+1511*-3+1926*1

                        =3624+(-4533)+1926

                        =1017

       本章节就分享到这里,后续继续分享第三章节。

       关于Shamir秘密共享算法的部分时,我发现书中对该算法的讲解并不十分深入,导致了我对这一概念的理解仅停留在表面层面。因此,我通过查阅其他资源来进一步学习,但仍然觉得了解不够全面。如果有朋友发现我表述的不准确或不清晰之处,希望能一起探讨讨论,共同提高。

        

        本文所包含的内容系《现代密码学——基于安全多方计算协议的研究》一书。这些内容的目的是为了学术交流和个人学习,并且在此过程中尊重原作者的知识产权。特此对作者的辛勤工作表示感谢,并感谢他们为密码学领域做出的贡献。如有侵权行为,请及时联系我进行删除或修改。感谢您对知识产权的尊重与支持。

这篇关于学习《现代密码学——基于安全多方计算协议的研究》 第三章 (秘密共享部分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/973151

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <