门限密钥共享技术原理

1. 门限秘钥共享技术简介

门限密钥共享技术(Threshold Key SharingScheme)解决的是密钥安全管理问题。

现代密码学体制的设计是使得密码体制的安全性取决于密钥安全,密钥的泄露就意味着体制失去了安全性,因此密钥管理在密码体制的安全性研究和设计中占有重要的地位。特别是多方利益体共同管理一个账户时,账户的密钥如何可信安全的分配给多方参与者就变得非常棘手。

针对这一问题,以色列密码学家Shamir和Blakely在1879年提出了 S h a m i r ( k , n ) Shamir(k,n) 门限密钥共享方案。方案中,密钥被分为 n n 份分配给 n n 个参与者,每个参与者掌握一个密钥份额(key share),只有集齐超过 k k 个密钥份额,才能够将密钥恢复。因此,账户的任何操作都至少需要 n n 位参与者中的 k k 位参与才能够实施,这样便保证了账户的安全可信。

2. 拉格朗日插值算法介绍

选定一个素数 p Z p p,Z_p k 1 k-1 个元素组成的集合 x 1 , x 2 , . . . x k {x_1,x_2,...x_k} ,域 G F ( p ) GF(p) 上元素集合 a 1 , a 2 , . . . a k {a_1,a_2,...a_k} ,由此可以定义一个k次域上多项式 f ( x ) f(x) ,使得 f ( x i ) = a i f(x_i)=a_i ,则多项式的新式即为
f ( x ) = i = i k a i 1 i k , i j x x j x i x j f(x)=\sum_{i=i}^ka_i\prod_{1\leq i \leq k,i\neq j} \frac{x-x_j}{x_i-x_j}

拉格朗日插值法理论见我的博文“拉格朗日插值法”。

在获知一系列的输入和输出的前提下,可以通过拉格朗日定理,获取多项式表达式。小伙伴可以通过在线工具计算多项式:
http://skisickness.com/2010/04/28/

3. 门限秘钥共享算法理论实现

在各种秘密共享方案中,最简单、最实用的是门限秘密共享方案,其基本模型可以描述如下:将密钥 k k 按下述方式分解成 n n 个影子 k 1 , k 2 , . . . , k n k_1,k_2,...,k_n ;这个方案称为 ( t , n ) (t,n) 门限秘钥共享方案,简称门限方案, t t 称为门限值。

  • (1)任意 t t k i k_i 值易于计算出 k k
  • (2)已知任意 t 1 t-1 个或更少个 k i k_i ,则由于信息不足而不能决定出 k k

假入Alice希望想 n n 个参与者分享一个秘密值 s , s Z p s,s\in Z_p ,p是一个大素数,参与者集合 P = { p 1 , p 2 , . . . , p n } P=\lbrace p_1,p_2,...,p_n \rbrace ,任意 t t 个参与方可以利用他们的分片恢复出秘密值,但少于 t t 个参与方无法得到与 s s 有关的任何信息。上述的 t t 被称为门限值。一个包含 n n 个参与方且门限值为 t t 的秘密分享可以被表示为 ( t n ) (t-n) 秘密分享。

3.1 多项式构造

为了实现上述的 ( t , n ) S h a m i r (t,n)-Shamir 秘钥分发算法,Alice在有限群 G F ( p ) p > n GF(p),p>n 任取( p p 是一个大素数)上随机选取一个 t 1 t-1 次多项式 f ( x ) f ( x ) f(x)。f(x) 如下:

f ( x ) = a t 1 x t 1 + a t 2 x t 2 + . . . . + a 1 x + s f(x)=a_{t-1}x^{t-1}+a_{t-2}x^{t-2}+....+a_{1}x+s

其中 s s 为秘密值, a 1 , . . . . , a t 1 G F ( p ) a_1,....,a_{t-1}\in GF(p) ,且 a t 1 0 a_{t-1}\neq 0

3.2 秘钥分割

Alice作为秘密分发者,她选择随机多项式 f ( x ) f(x) ,这个多项式满足条件 f ( 0 ) = s f(0)=s ,然后将 s i = f ( i ) s_i=f(i) 分发给成员 p i p_i i = 1 , 2 , . . . , n i=1,2,...,n

3.3 秘钥恢复

根据每一对 S i = ( i , s i ) S_i=(i,s_i) S i S_i 可以看做是曲线 f ( x ) f(x) 上的一个点。因为 t t 个点能唯一的确定 t 1 t-1 次多项式,所以秘钥 s s 可以从 t t 个点共享重构出来。但是从 t 1 t_1 ,其中 t 1 t_1 满足 ( t 1 < t ) (t_1<t) 个点共享无法确定一个 t 1 t-1 次多项式出来,即无法重构出秘钥 s s

实际上,解决这个重构一个 t 1 t-1 次的多项式 f ( x ) f(x) 问题,可以利用拉格朗日插值法重构 f ( x ) f(x) f ( x ) = i = i k s i 1 i k , i j x x j x i x j f(x)=\sum_{i=i}^ks_i\prod_{1\leq i \leq k,i\neq j} \frac{x-x_j}{x_i-x_j}

一旦知道 f ( x ) f(x) ,通过 s = f ( 0 ) s=f(0) 便可计算出秘钥 s s

发布了106 篇原创文章 · 获赞 253 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/jingzi123456789/article/details/104807783