Tassa’s Hierarchical Threshold Secret Sharing
Table of Contents
1. 分层门限秘密共享简介
我们知道,利用 Shamir's Secret Sharing 方案可以把一个秘密值
但是,在某些场景中,我们需要参与者有等级之分。比如,银行金库的电子钥匙,它被分散保存在员工手中,员工有两种角色:出纳员和部门经理。我们希望有一种秘密分享方案能实现: 至少 3 个员工参与,且其中必须有 1 个部门经理才能恢复出电子钥匙。 这个场景中,参与者其实是有等级之分的,部门经理的等级高于出纳员。这就是分层门限秘密共享(Hierarchical Threshold Secret Sharing)的应用场景。
本文主要讨论 Tassa 的论文 Hierarchical Threshold Secret Sharing 。
1.1. 形式化定义
关于 Hierarchical Threshold Secret Sharing 的形式化定义如图 1 所示。
Figure 1: Hierarchical Threshold Secret Sharing
下面通俗地介绍一下 Hierarchical Threshold Secret Sharing 的定义。
Hierarchical Threshold Secret Sharing 可用记号
# 可能恢复出电子钥匙的 3 人组合: “1 个部门经理 + 2 个出纳员” 或: “2 个部门经理 + 1 个出纳员” 或: “3 个部门经理 + 0 个出纳员”
Hierarchical Threshold Secret Sharing 有两个要求:
- Accessibility,表示对于符合门限方案的参与者组合,一定能恢复出秘密值;
- Perfect Security,表示对于不符合门限方案的参与者组合,不能恢复出秘密值。比如上面例子中,
个(或更多)出纳员不能恢复出秘密值。
2. 简单方案
记待分享的秘密为
Dealer 按下面方法准备
把
重新恢复出秘密值
2.1. 方案实例
我们以前面介绍的“银行金库电子钥匙”为例介绍上面的过程。Dealer 随机选择
要重新恢复出
2.2. 方案缺点
这种方案有个缺点:等级越高(即等级数字越小)的参与者需要保存的秘密分片越多。 这种方案中,等级最高的参与者需要保存
后文将介绍
3. Tassa 方案
Tassa 给出了一个 Hierarchical Threshold Secret Sharing 方案,这种方案克服了节 2 中方案中的缺点:等级越高的参与者需要保存的秘密分片越多。Tassa 方案中,
下面介绍一下 Tassa 的方案(注:这个方案需要满足节 3.3 中介绍的条件时,才会符合分层门限秘密共享的两个要求,即 Accessibility 和 Perfect Security),如图 2 所示。
Figure 2: Tassa's Hierarchical Threshold Secret Sharing
假设一个分层门限方案中,所有参与者
- 对于
中的参与者,我们把 做为秘密分片分享给他(假设编号 的参与者属于等级 ,则等级 的这三个参与者得到的秘密分片为函数值 ); - 对于
中的参与者,我们把 做为秘密分片分享给他(假设编号为 的参与者属于等级 ,则等级 的这五个参与者得到的秘密分片为 阶导数值 ); - 对于
中的参与者,我们把 做为秘密分片分享给他(假设编号为 的参与者属于等级 ,则等级 的这五个参与者得到的秘密分片为 阶导数值 )。
3.1. 满足分层门限要求时能恢复秘密值(Accessibility)
上一节只介绍了秘密值的共享方案,但没有介绍如何恢复秘密值
满足分层门限要求(即至少
# 情况一: 2 个等级 0 的参与者 2 个等级 1 的参与者 3 个等级 2 的参与者 # 情况二: 2 个等级 0 的参与者 3 个等级 1 的参与者 2 个等级 2 的参与者
对于情况一,这
对于情况二,我们也能采用类似的方法,即已知
参与者的秘密分片相当于函数(或某阶导函数)上一个点,每代入一个点,可得一方程,
其实,上面的问题就是 Birkhoff Interpolation 问题。简单来说 Birkhoff Interpolation 问题就是:已知
Tassa 证明了在一定条件(节 3.3 将介绍具体条件)下,节 3 中描述的方案一定具备 Accessibility 要求。
3.2. 不满足分层门限要求时不能恢复秘密值(Perfect Security)
下面是不满足分层门限要求的例子:
# 例子 1(不满足分层门限要求,因为没有等级 0 参与者): 0 个等级 0 的参与者 4 个等级 1 的参与者 3 个等级 2 的参与者 # 例子 2(不满足分层门限要求,因为等级 0 参与者太少,分层门限要求至少 2 个等级 0 参与者): 1 个等级 0 的参与者 3 个等级 1 的参与者 3 个等级 2 的参与者
为什么这些组合不能恢复出秘密值
上面说明了在例子 1 的情况下不能恢复出秘密值
Tassa 证明了在一定条件(节 3.3 将介绍具体条件)下,节 3 中描述的方案一定具备 Perfect Security 要求。
3.3. 同时具备 Accessibility 和 Perfect Security 要求的条件
在什么条件下,节 3 中介绍的分层门限秘密共享才具备 Accessibility 和 Perfect Security 这两个要求呢?
Tassa 在论文的 3.3 节给出两种形式的条件。这两种形式都要求参与者的编号(即求参与者秘密分片时所使用的
所谓 Monotonic Principle 就是:
记
条件 29(论文中相关公式编号为 29): 如果参与者的编号满足 Monotonic Principle,并且有
条件 35(论文中相关公式编号为 35): 如果参与者的编号满足 Monotonic Principle,并且有
假设我们用分层门限秘密共享方案来保存 128 位的 AES 密钥(即
Condition 29 | Confition 35 | |
---|---|---|
5 | ||
6 | ||
7 | ||
8 |
当
3.4. Tassa 实例
假设有
下面介绍如何实现一个
第一步,Dealer 随机选择一个
第二步,Dealer 把
这种分配方式符合节 3.3 中的条件,所以一定满足 Accessibility 和 Perfect Security。
假设现在 B 和 D 和 E 想恢复出秘密值
利用 Birkhoff 插值公式(下面相关细节可参考 https://aandds.com/blog/hermite-birkhoff-interpolation.html ),有
3.4.1. Additive Sharing
利用 Laplace Expansion (即求
B 的 Additive Sharing 为
D 的 Additive Sharing 为
E 的 Additive Sharing 为
所以
4. 参考
- Tassa 论文 Hierarchical Threshold Secret Sharing
- Dynamic and Verifiable Hierarchical Secret Sharing
- 利用分层门限秘密共享方案来实现分层门限签名方案 https://github.com/getamis/alice