私钥更新、找回与吊销

从密码破译角度来说,私钥在使用一定周期后应该及时更换,这就涉及私钥更新的问题;如果发现私钥丢失或者怀疑私钥泄漏,则涉及密钥的吊销问题。

在PKI/CA领域,一般是通过数字证书的有效期来绑定密钥的有效期,比如一年。一年后密钥更新,重新申请证书,应用系统重新绑定该密钥。对于历史数据,

签名密钥可以平滑过渡。新签名密钥生成后,旧签名密钥直接丢弃即可,其历史签名结果仍可以由原数字证书(公钥)验证。而加密密钥加密的数据,必须使用旧密钥解密后重新使用新密钥加密,否则历史加密数据无法解密。对于私钥丢失或者怀疑私钥泄漏的情况,可以向CA机构申请吊销。CA机构审核通过后会签署证书吊销列表(Certificate Rovocation List, CRL)文件。CRL里声明了数字证书序列号、吊销时间、吊销原因等信息,名列其中的数字证书的签名将被视为无效。对于加密密钥丢失的情况,可以通过CA机构向密钥管理中心(Key Manage Center,KMC)申请找回。国内实行双密钥体系,即签名密钥和加密密钥两对密钥。签名密钥仅用于签名,由用户自行生成;加密密钥仅用于加密/解密,由CA机构向密钥管理中心申请生成。密钥管理中心由国家权威机构,其最重要的职能就是为用户产生加密密钥对并提供私钥的托管服务。CA机构签发证书时,都是经过实名认证的,假如密钥丢失,只要再次确认用户实名身份,就可以帮助用户找回密钥。

区块链和PKI/CA相比,很多情况发生了变化,带来了很多新的挑战。区块链没有双密钥体系的概念,

仅有一个密钥对。该私钥唯一代表用户身份、数字货币或数字资产,这些数字货币或数字资产必须使用私钥“打开”,每次“花钱”的时候必须使用私钥签名。也就是说,私钥丢不得,私钥丢了就等于资产消失了。

分析来看,受到私钥影响的环节至少包括数字货币、数字资产、身份认证、智能合约。具体又分3种情况:私钥使用了一定期限,需要主动更新;私钥在手但怀疑泄漏,需要吊销;私钥彻底丢失。

如果更新密钥,则需要把数字货币、数字资产全部转移到新的地址;如果用于身份认证,则需要使用新密钥重新绑定用户;如果该密钥绑定了智能合约,则需要更新智能合约。这种更新是在用户可控的情况下进行的,用户拥有旧密钥,产生一个新密钥后,主动以自助的方式进行转移或重新绑定。

私钥在手但怀疑泄漏需要吊销的,也要及时进行密钥更新。但如何确保执行密钥更新的人就是原来的用户呢?这就需要引入一些机制,证明“你是私钥的拥有者”并对私钥对应的数字货币或资产进行额外的保护。比如在公有链,用户可以使用自己另外一个密钥keyO提前在区块链网络上隐秘地登记某一个密钥key的所有权。当怀疑密钥key泄漏时,可以使用keyO证明用户对key的所有权,然后完成数字货币和资产的转移,同时对key声明吊销。此过程可以发展成一个单独的协议。假如keyO也发生了泄漏,则需要额外的设计。比如在一个或多个权威机构(如CA机构)提前注册个人实名信息,怀疑密钥泄漏时,向权威机构申请,经过审核后,多个权威机构和用户密钥使用多重签名进行数字货币或资产的转移,并声明旧密钥的吊销。在联盟链中,比较容易接受此类规则;在公有链中,需要打破完全去中心化的理念才可以推行此规则。

区块链领域最大的挑战是私钥彻底丢失。传统中心化的银行如果U盾丢失或者忘记密码,则通过账户系统重新绑定一个新的U盾(私钥)即可。账户和私钥是逻辑上的绑定关系,由中心化的银行在满足风控要求下操作。而比特币或区块链的私钥是直接操作数字货币的钥匙,万一丢失了就等于钱消失了。所以,密钥的找回就显得特别必要。如果用户自行将密钥备份,则备份点容易成为黑客攻击点。一个完善的落地的区块链网络,应该设计一种机制:私钥由用户拥有和控制,但在风险发生时,可以通过实名认证的方式、国家权威机构参与的方式或其他更高代价的方式找回该密钥。

比如参考经典的门限算法,在t/n门限方案中,一个秘密拆分成n份共享或影子,每个用户秘密保存其中一份共享;任意t个或多于t个用户联合起来堆积他们的共享,就可以正确恢复秘密,而任意少于t个用户却不能。这样,即使有小于t个用户保存的共享份额泄漏或丢失,敌手也不能由此计算得到密钥。

例如,把用户的私钥拆分成5份,除了用户自行保存一份外,其他4份独立保存在某些权威机构,如第三方CA机构等。具备其中任意3份即可恢复用户密钥。密钥托管时,用户经过严格的身份实名认证;密钥恢复时,同样执行严格的身份实名认证的手续和严格的运营管理制度。政府管理部门,比如工信部也可以出台相关政策,对密钥托管的机构明确职责和技术要求,从而确保用户私钥的安全性。

私钥更新、找回与吊销是一个不可回避的问题,以上仅仅提出一些畅想和思路,后续还需要广大区块链从业者设计出更加可靠的落地方案。

868区块链学习网为您整理《私钥更新、找回与吊销》仅供参考。