2.1.3 区块链去中心化密钥共享
我们先了解一下“秘密共享”的概念,其最早是由著名密码学家阿迪·萨莫尔(Shamir)和乔治·布拉克利(Blakley)在1979年分别独立提出的,并给出了其各自的实现方案。Shamir提出的(t,n)门限方案是基于Lagrange(拉格朗日)插值法来实现的,而Blakley提出的(t,n)门限方案则是利用多维空间参数曲线与超法面的交点来构建实现的。
秘密共享大致可以分为如下几类:
(1)门限秘密共享方案,在(t,n)门限秘密共享方案中,任何包含至少t个参与者的集合都是授权子集,而包含t-1或更少参与者的集合都是非授权子集。实现(t,n)门限秘密共享的方法除了常见的Shamir和Blakley的方案外,还有基于中国剩余定理(又被称为“中国余数定理”)的Asmuth-Bloom法以及使用矩阵乘法的Karnin-Greene Hellman方法等实现方案。
(2)一般访问结构上秘密共享方案。门限方案是实现门限访问结构的秘密共享方案,对于其他更广泛的访问结构存在局限性,比如,在“甲、乙、丙、丁”四个成员中共享秘密,使甲和丁或乙和丙合作能恢复秘密,门限秘密共享方案就不能解决这样的情况。针对这类问题,1987年,密码学研究人士提出了一般访问结构上的秘密共享方案。1988年有人提出了一个更简单有效的方法——单调电路构造法,并且证明了任何访问结构都能够通过完备的秘密共享方案加以实现。
(3)多重秘密共享方案。只需保护一个子秘密就可以实现多个秘密的共享,在多重秘密共享方案中,每个参与者的子秘密可以使用多次,但是一次秘密共享过程只能共享一个秘密。
(4)多秘密共享方案。多重秘密共享解决了参与者的子秘密重用的问题,但其在一次秘密共享过程中只能共享一个秘密。
(5)可验证秘密共享方案。参与秘密共享的成员可以通过公开变量验证自己所拥有的子秘密的正确性,从而有效地防止了分发者与参与者,以及参与者与参与者之间的相互欺骗问题。可验证秘密共享方案分为交互式和非交互式两种。交互式可验证的秘密共享方案是指,各个参与者在验证秘密份额的正确性时需要相互之间交换信息;非交互式可验证的秘密共享是指,各个参与者在验证秘密份额的正确性时不需要相互之间交换信息。在应用方面,非交互式可验证秘密共享可以减少网络通信费用,降低秘密泄露的机会,因此应用领域也更加广泛。
(6)动态秘密共享方案。动态秘密共享方案是1990年提出的,它具有很好的安全性与灵活性,它允许新增或删除参与者、定期或不定期更新参与者的子秘密以及在不同的时间恢复不同的秘密等。
以上是几种经典的秘密共享方案。需要说明的是,一个具体的秘密共享方案往往是几个类型的集合体。
除了以上这些分类中提及的方案,如今在量子秘密共享、可视化秘密共享、基于多分辨滤波的秘密共享以及基于广义自缩序列的秘密共享等方面,均有团队投入研究。
自“秘密共享方案”诞生以来,不同环境下的密钥共享方案层出不穷,其中的大部分方案,都假设密钥被存储在一个可信的中心,即存在并依赖一个可信的、中心化的密钥分发者,由它全权负责将密钥分割成为子密钥,并且负责安全地将子密钥发送给参与者。但是在实际生产环境中,绝对可信的、稳定可用的一个中心往往并不存在。所以,一种新的“无可信中心的密钥共享协议”被提出,以适应那些去中心化的实际运营环境。在无可信中心的密钥共享中,子密钥的产生和分配都是由该分布式架构中的所有参与者本身合作完成的。相比在实际应用中,可信中心的密钥共享可能存在的“权威欺骗”问题,以及在现实中需要成员具有较高的可信度等假设问题,去中心化的可信密钥共享方案的安全性更高,实用性也更强。去中心化的可信密钥共享研究,其核心目的就是要寻找合适的方案来保证信息安全,有效地发布信息和可信地传输信息。此外,去中心化的可信密钥共享中的子密钥如何分发,是当前研究的热点问题,其发展空间还很大。因此,对这个问题的研究不仅具有重要的理论价值,在实际应用中也有着非常广泛的应用前景。
大家都知道,钱包是区块链应用中重要的基础设施,安全的钱包要实现的是去中心化的存储和恢复私钥/助记词的功能。Secret Sharing是一个不错的解决方案,它的原理是把一个秘密分散、加密存储在多个使用者那里,只有当达到一定数量的使用者时才能拼凑出原始秘密的全貌,而参与者较少时则无法获得这个秘密。这样既可以减少因为链上单一节点失败造成的丢失或可用性风险,又能在一定条件下恢复私钥。同时,理论上说,如果一定数量的使用者联合起来作恶,还是可以获取秘密来侵害秘密持有人利益的。Secret Sharing的加密算法理论在1979年被发表,2014年就有在区块链领域使用的先例。区块链行业中也有相关工具提供,比如passguardian项目,帮助用户把私钥分片加密存储,且存储过程由用户自己选择存储的策略。例如,我们可以选择分别打印出不同部分,分不同的地点保管,也可以分发给几个人共同保管。Vault12项目和Tenzorum项目致力于打造密钥共享的产品化解决方案。Casa项目在多签密钥安全性的实现上有着极高的代表性。Vault12的解决方案是私钥持有人可以邀请其他人作为保管人,可以根据保管数据的安全等级来设定恢复难易程度,比如,可以针对不同内容,选择一个或者多个保管方来进行恢复确认,在恢复前需要参与方通过视频、电话等方式验证身份。