1. 为什么要进行秘钥分存
像前面的纸钱包以及防损硬件都有一个致命的缺点,就是一旦损坏就是一毁俱毁,所以我们可以将秘钥存储的方式改为秘钥分寸,其中密钥分存并不是简单地切分密钥,而是将密钥转换成若干“子密钥”
2. 秘钥分存方法主要分类
方法如下:密钥被分成N个片段,只要我们获得其中的K个片段,就可以把原密钥重新还原。但如果获得的片段数量少于K,就无法知道关于密钥的任何信息。
2.1 大致分为两大类
分为两种情况:1、 N = k N=k N=k;2、 N > k N>k N>k
-
N = k N=k N=k:
- 原秘钥(128位) ⊕ \oplus ⊕ 随机数 R R R → \to → ( S ⊕ R ) (S \oplus R) (S⊕R)
- 这里秘钥就被分为了 ( S ⊕ R ) (S \oplus R) (S⊕R)和随机数 R R R
- 但是这样的在 N > k N>k N>k的情况下就做不成,因为N个片段就进行N-1次异或 ⊕ \oplus ⊕,
-
N > k N>k N>k:
-
使用直线或者n次拉格朗日插值,n次拉格朗日可查看链接,这里主要说一下直线进行秘钥分存
-
直线进行秘钥分存:
- 由于两点确定一条直线,那么只需要将秘钥分存在直线的两个点上,那么任意两点求出这条直线之后就能够得出在 y y y轴上的两点也就是原秘钥 R R R。
-
2.2 N > k N>k N>k的时候——门限签名
门限签名:
- 实现方案:一般通过拉格朗日插值进行实现,门限为几就是几门限的门限签名;
- 原理:详细见链接
3. 不从分存的角度,从签名的次数来看
多重签名:
把一个比特币账户的控制权交给多个密钥,而不是将密钥分存。
- 通过比特币脚本,可以直接把一个比特币账户的控制权交给多个密钥,而不是将密钥分存。
- 密钥保存在不同的地点,并分别生成签名;
- 最终完成的交易的信息保存在某台设备上(只有这里黑客可以乘机而入);
- 最糟糕的情况:但即使黑客控制了这台设备,他所能做的也只不过阻止这个交易被广播到整个网络上去。没有其他设备参与,他无法生成出一个正当有效的多重签名。
参考文章
- 拉格朗日插值原理以及实现
- 解读区块链全套六册.第三册.第四章.第三节