• 秘密共享方案介绍SS


    概念

    问题1:保险柜中存放有10个人的共有财产,要从保险柜中取出物品,必须有半数以上的人在场才可取出,半数以下则不行。如何构造锁的设计方案?

    问题2:导弹的发射控制、重要安保场所的通行检验,通常需要多人同时参与才能生效。因此,需要将秘密分给多人掌管,并且由一定掌管秘密的人数同时到场才能恢复秘密。方案如何设计?

    这里我们就需要提出秘密共享的概念。

      秘密共享的思想是将秘密进行分割,并把秘密在 n n n个参与者中分享,使得只有多于特定 t t t个参与者合作才可以计算出或恢复出秘密,而少于 t t t个参与者则不可以得到有关秘密。

      秘密共享的关键是怎样更好的设计 秘密拆分方式恢复方式

      秘密共享是一种将秘密分割存储的密码技术,目的是阻止秘密过于集中,以达到分散风险和容忍入侵的目的,是信息安全和数据保密中的重要手段。

    注意

    1. 在对秘密进行拆分,拆分的方式不一定均匀。
    2. t t t一定是小于等于 n n n的。

      在这里插入图片描述

    Shamir秘密共享方案

      一般的,设 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . . . . , ( x k , y k ) } \{(x_1, y_1), (x_2, y_2),......, (x_k, y_k)\} {(x1,y1),(x2,y2),......,(xk,yk)}是平面上 k k k个不同的点构成的点集, 那么在平面上存在唯一的 k − 1 k-1 k1次多项式 f ( x ) = a 0 + a 1 x + a 2 x 2 + . . . . . + a k − 1 x k − 1 f(x) = a_0 + a_1x + a_2x^2 +..... + a_{k-1}x^{k-1} f(x)=a0+a1x+a2x2+.....+ak1xk1通过这 k k k个点。

      若把秘密 s s s取做 f ( 0 ) f(0) f(0), n n n个份额取做 f ( i ) ( i = 1 , 2 , . . . . , n ) f(i)(i = 1, 2, ...., n) f(i)(i=1,2,....,n), 那么利用其中任意k个份额可以重构 f ( x ) f(x) f(x), 从而可以得到秘密 s s s

    加密

      对于待加密的明文 s ∈ Z p s \in Z_p sZp( p p p为大素数且 p > = n + 1 p >= n+1 p>=n+1),在有限群 G F ( p ) GF(p) GF(p)任取 k − 1 个 k−1个 k1随机数 a 1 , a 2 , … , a k − 1 a_1, a_2, …, a_{k-1} a1,a2,,ak1并令 a 0 = s a_0=s a0=s,从而构造如下的多项式: f ( x ) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + . . . . . + a k − 1 x k − 1 m o d ( p ) f(x) = a_0 + a_1x + a_2x^2 + a_3x^3 + ..... + a_{k-1}x^{k-1} mod(p) f(x)=a0+a1x+a2x2+a3x3+.....+ak1xk1mod(p)  对于这个多项式, 任取 n n n个数 x 1 , x 2 , x 3 , . . . , x n x_1, x_2, x_3, ..., x_n x1,x2,x3,...,xn分别带入多项式得到 n n n个密钥对 ( x i , y i ) (x_i, y_i) (xi,yi) f ( x ) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + . . . . . + a k − 1 x k − 1 m o d ( p ) f(x) = a_0 + a_1x + a_2x^2 + a_3x^3 + ..... + a_{k-1}x^{k-1} mod(p) f(x)=a0+a1x+a2x2+a3x3+.....+ak1xk1mod(p)  分发给 n n n个持有者 P 1 , P 2 , . . . , P n P_1, P_2, ..., P_n P1,P2,...,Pn

    解密

      假设得到了 k k k个密钥对 { x 1 , y 1 } , { x 2 , y 2 } , . . … , { x k , y k } \{x_1, y_1\}, \{x_2, y_2\}, ..…,\{x_k,y_k\} {x1,y1},{x2,y2},..,{xk,yk},我们可以得到如下方程(运算均在 G F ( p ) GF(p) GF(p) a 0 + a 1 x 1 + a 2 x 1 2 + . . . . . . . + a k − 1 x 1 k − 1 = y 1 a_0 + a_1x_1 + a_2x^2_1 + ....... + a_{k-1}x^{k-1}_1 = y_1 a0+a1x1+a2x12+.......+ak1x1k1=y1 a 0 + a 1 x 2 + a 2 x 2 2 + . . . . . . . + a k − 1 x 2 k − 1 = y 2 a_0 + a_1x_2 + a_2x^2_2 + ....... + a_{k-1}x^{k-1}_2 = y_2 a0+a1x2+a2x22+.......+ak1x2k1=y2 a 0 + a 1 x 3 + a 2 x 3 2 + . . . . . . . + a k − 1 x 3 k − 1 = y 3 a_0 + a_1x_3 + a_2x^2_3 + ....... + a_{k-1}x^{k-1}_3 = y_3 a0+a1x3+a2x32+.......+ak1x3k1=y3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ............................................. ............................................. a 0 + a 1 x k + a 2 x k 2 + . . . . . . . + a k − 1 x k k − 1 = y k a_0 + a_1x_k + a_2x^2_k + ....... + a_{k-1}x^{k-1}_k = y_k a0+a1xk+a2xk2+.......+ak1xkk1=yk  由Lagrange插值公式: f ( x ) = ∑ i = 1 k f ( x i ) ∏ j = 1 , j ≠ i k x − x j x i − x j ( m o d p ) f(x) = \sum_{i=1}^kf(x_i)\prod_{j=1, j \neq i}^k\frac{x - x_j}{x_i - x_j}(modp) f(x)=i=1kf(xi)j=1,j=ikxixjxxj(modp)  故 f ( 0 ) = a 0 = s = ( − 1 ) k − 1 ∑ i = 1 k f ( x i ) ∏ j = 1 , j ≠ i k x j x i − x j ( m o d p f(0) = a_0 = s = (-1)^{k-1}\sum_{i=1}^kf(x_i)\prod_{j=1, j \neq i}^k\frac{x_j}{x_i - x_j}(modp f(0)=a0=s=(1)k1i=1kf(xi)j=1,j=ikxixjxj(modp  可求的 a 0 a_0 a0即为明文 s s s


    示例 ( 3 , 5 ) (3, 5) (3,5)门限方案

      设 k = 3 , n = 5 , p = 19 , s = 11 , G F ( 19 ) = { 0 , 1 , 2 , 3 , 4 , . . . . , 18 } k = 3, n = 5, p = 19, s = 11, GF(19) = \{0, 1, 2, 3, 4, ...., 18\} k=3,n=5,p=19,s=11,GF(19)={0,1,2,3,4,....,18}, 随机选择系数 a 1 = 2 , a 2 = 7 a_1 = 2, a_2 = 7 a1=2,a2=7.

    f ( x ) = 11 + 2 x + 7 x 2 m o d 19 f(x) = 11 + 2x + 7x^2 mod 19 f(x)=11+2x+7x2mod19.

    计算可知: f ( 1 ) = 1 f(1) = 1 f(1)=1 f ( 2 ) = 5 f(2) = 5 f(2)=5 f ( 3 ) = 4 f(3) = 4 f(3)=4 f ( 4 ) = 17 f(4) = 17 f(4)=17 f ( 5 ) = 6 f(5) = 6 f(5)=6

    若已知 f ( 2 ) , f ( 3 ) , f ( 5 ) f(2), f(3), f(5) f(2),f(3),f(5), 有拉格朗日插值公式可知:
    f ( x ) = 5 ( x − 3 ) ( x − 5 ) ( 2 − 3 ) ( 2 − 5 ) + 4 ( x − 2 ) ( x − 5 ) ( 3 − 2 ) ( 3 − 5 ) + 6 ( x − 2 ) ( x − 3 ) ( 5 − 2 ) ( 5 − 3 ) f(x) = 5\frac{(x-3)(x-5)}{(2-3)(2-5)} + 4\frac{(x-2)(x-5)}{(3-2)(3-5)} + 6\frac{(x-2)(x-3)}{(5-2)(5-3)} f(x)=5(23)(25)(x3)(x5)+4(32)(35)(x2)(x5)+6(52)(53)(x2)(x3) = 11 + 2 x + 7 x 2 = 11 + 2x + 7x^2 =11+2x+7x2 故, s = f ( 0 ) = 11. 故, s = f(0) = 11. 故,s=f(0)=11.

    补充

    k = n k = n k=n的时候,Shamir算法就变成了 ( n , n ) (n, n) (n,n)门限秘密共享。此种方式可以通过 异或运算 进行实现, 具体实现步骤如下:

    1. 首先将秘密信息转成 01 01 01字符串 s s s
    2. 然后随机选取 n − 1 n−1 n1个与 s s s长度相同的01字符串 s 1 , s 2 , . . . . , s n − 1 s_1, s_2, ...., s_{n-1} s1,s2,....,sn1, 将 s s s s 1 , s 2 , . . . . , s n − 1 s_1, s_2, ...., s_{n-1} s1,s2,....,sn1进行 异或操作,得到 s n s_n sn s n = s ⊕ s 1 ⊕ s 2 ⊕ . . . . . . . . . ⊕ s n − 1 s_n = s \oplus s_1 \oplus s_2 \oplus ......... \oplus s_{n-1} sn=ss1s2.........sn1然后将 n n n个秘密信息 s 1 , s 2 , . . . . , s n − 1 , s n s_1, s_2, ...., s_{n-1}, s_n s1,s2,....,sn1,sn分配给 n n n个人, 只有这n个人的时候才能解得秘密信息: s = s 1 ⊕ s 2 ⊕ . . . . . . . ⊕ s n − 1 ⊕ s n s = s_1 \oplus s_2 \oplus ....... \oplus s_{n-1} \oplus s_n s=s1s2.......sn1sn

    网页参考链接

    1. 多方安全计算-秘密共享
    2. 趣说密码学(五)秘密共享方案——shamir,中国剩余定理,Brickell和Blakley
    3. MPC–秘密分享(Secret-Sharing)算法及使用Demo
    4. Shamir秘密共享
    5. Shamir密钥分享算法解析
    6. 秘密共享算法
  • 相关阅读:
    浅析TSINGSEE青犀视频AI智能分析网关车辆检测/车牌识别算法及应用场景
    DockerFile与build命令
    Go注册GRPC服务遇到接口未实现报错处理方法
    基于Matlab实现logistic方法(源码+数据)
    计算机视觉-图像的傅里叶变换
    Github 2024-03-12开源项目日报 Top10
    D-Wave公开演示大规模相干量子退火
    新消费时代,零售业的进与退?
    阿里P8架构师都在学习参考的SpringCloud微服务实战文档
    wpf的GridSplitter使用
  • 原文地址:https://blog.csdn.net/qq_43751200/article/details/126238369