比原链:一种针对身份的私钥管理系统标准
编者按:2019年9月5日,全球最大的专业技术组织、有着130余年历史的IEEE(电气和电子工程师学会)设立IEEE计算机协会区块链和分布式记账委员会(IEEE Computer Society Blockchain and Distributed Ledgers Committee,IEEE C/BDL),旨在推动区块链与分布式记账技术的标准化及其应用实践,主席由中国电子技术标准化研究院李鸣担任。2020年3月,IEEE C/BDL联合国内外的专家成立了相关的技术委员会、顾问委员会和执行委员会。组建委员会之后,IEEE C/BDL向IEEE申请了13项区块链标准。为更好向外界展示委员会区块链标准化研究成果,IEEE C/BDL联合巴比特,邀请区块链标准的牵头单位撰写系列文章。本文作者: 比原链基金会 。
研究背景
区块链是技术集大成者的创新应用,在区块链上,你可以看到密码学,博弈论,共识理论等等众多的技术应用,而密码学则是区块链技术的核心之一,区块链使用公私钥体系来界定资产的所有权,所以私钥的应用和安全性是重中之重,又因为区块链去中心化的特性,如果用户的私钥丢失,则意味着资产丢失,不存在中心化机构可以帮忙找回这样的路径。
而每一条区块链都是一个与外界隔离的自运行系统,密钥是区块链系统唯一与外界弱关联的渠道。不同区块链系统的自定义密钥使用与管理模式不仅给用户使用区块链带来了复杂性而且也为链与链之间的身份交互带来了难度。导致用户在管理不同链上的资产时,需要管理不同类型的私钥,增加了复杂度,也容易造成安全问题(丢失,泄露等等)。
因此,比原链基金会和其他的一些技术伙伴在电子标准院的协助下,组织起人马,针对相关技术展开了深入研究,并提出了标准草案。
其中,IEEE标准Standard for Blockchain Identity Key Management Requirements已经立项,我们作为该标准工作组发起组织,将针对该标准进行一些介绍。
私钥的管理维度
在区块链系统中,大多采用 私钥 -> 公钥 -> 地址,这样逐级生成的方案,用户使用地址来暴露对外的收款地址,私钥多用于交易签名。 不论是地址还是公钥,最后都可以由私钥进行推导得出,我们一般关心以下的几点:
1)密钥的生成方法;
2)密钥存储模式;
3)多层分级的私钥派生规则;
4)多密码学公钥对应协议;
5)和密钥地址转换规则制定标准。
密钥生成和派生
在区块链中私钥在本质上是一个随机数,关键的问题就在于如何安全的生成这个随机数。比特币软件使用操作系统底层的随机数生成器来产生256位的熵(随机性)。
一般都建议使用成熟的密码学库来生成随机数,因为经受过大量密码学专家的验证,不要自己造轮子,其安全性完全得不到保障。
公钥是通过从私钥计算得到的,在区块链领域大多都采用椭圆曲线,椭圆曲线是一个不可逆的过程,无法从公钥推得私钥,从而保证私钥的安全性。比特币协议使用Secp256k1,比原链协议使用ED25519。
在密钥生成中,比特币遵从的是BIP32协议,而以太坊目前官方钱包采用 KDF 的形式,也就是我们常说的 Keystore 的形式。
BIP32协议
BIP32协议是比特币使用的密钥生成协议。用户可以通过一个随机种子生成一个扩展私钥,然后通过这个扩展私钥生成N多私钥、公钥对和N多子扩展私钥。定义了分层确定性钱包(或“HD钱包”)
分层确定性钱包——由一个种子生成扩展密钥(私钥,链码),扩展密钥可以生成多个密钥对还可以生成多个字扩展密钥
私钥的存储
私钥的存储和使用一般分为软实现和硬实现。
软实现即存储和使用都以软件形式。密钥生成后作为文件或字符串保存在用户终端或者托管到服务器,使用时直接或通过简单的口令控制读取到私钥明文到内存,通过CPU完成私钥计算。这种存储和使用方式显然有很多安全风险,容易被黑客或内鬼复制、窃取、暴力破解等。
硬实现一般是依托专用密码安全芯片或者密码设备作为载体,一般有物理保护、敏感数据保护、密钥保护等机制,确保私钥必须由专用硬件产生。在任何时间、任何情况下,私钥均不能以明文形式出现在密码设备外;密码设备内部存储的密钥应具备有效的密钥保护机制,防止解剖、探测和非法读取。私钥不可导出,仅可计算输出签名值。比如金融领域常见的U盾(UKEY)、金融IC卡、加密机等均属于此类方式。
标准的工作
针对上述较为混乱的方案和未经统一的标准,我们提出了当下的这个针对身份的私钥管理系统标准,将从以下几个方面开展工作:
1)支持多种非对称密码学的密钥生成模式与存储模式的规范:使用一个随机数种子对应生成不同链不同密码算法的密钥,比如RSA算法,椭圆曲线ED25519,国密算法等等,同时对随机种子采取特定的对称加密算法进行加密存储,规定相关的加密参数。
2)将根密钥在不同密码学的区块链系统上使用的多层分级账户的派生与使用规范:针对不同的链统一规范的密码派生方法。
3)不同密码学生成的公钥/地址进行相互身份锚定的协议规范:通过不同链的私钥加密进行自证,确定多条链上的公私钥对应同一身份。
该标准适用于:
1)为计划使用区块链和分布式账本技术的组织建设区块链和分布式账本系统提供密钥的使用与管理参考;
2)指导区块链和分布式账本服务提供组织建立区块链和分布式账本系统密钥管理模块;
3)为区块链和分布式账本系统建设过程的中间件服务组织提供密钥管理参考。
意义
遵循本标准,可以达到如下的目的:
1)降低密钥管理难度
区块链的用户可以使用一把私钥在不同的链控制多个不同的账户/地址,降低用户使用/管理密钥的难度。
2)降低差异,打破孤岛
在任意遵循标准的链上创建的密钥可以直接在所有其他遵循标准的链上使用,减少区块链项目密钥管理模块的差异性。 比如遵循该标准的钱包A和钱包B,用户只需要掌控一把私钥,即可无缝切换两个钱包,无需再管理两套助记词或者Keystore
3)打通身份证明
区块链用户可以在不同密码学的多条链上证明身份的唯一性,为去中心化身份认证提供底层支持。当前因为密钥管理的割裂,用户在各条链上的身份无法打通,无法证明多个私钥归属于一个用户,从而为身份识别增加了障碍,通过遵循该标准,用户只需一把私钥即可管理多个链上资产,从而更好的对用户的身份进行识别。
关于比原链基金会
在新加坡会计与企业发展局(ACRA)的批准下,比原链基金于2017年8月10日在新加坡注册成立,比原链基金会属于非盈利性基金会。负责规范管理比原链技术开发和应用开发,宣传推广比原链品牌等。比原链基金会牵头成立区块链身份密钥管理规范工作组,并提出了一项能够在不同的链上通过遵循该标准的密钥管理方式来识别用户身份的新标准(本文介绍的标准)。