奥联首席科学家程朝辉:基于国产密码的区块链隐私保护技术

2019-12-13


近期,由珠海市岭南大数据研究院主办的珠海市区块链与信息安全国际研讨会在珠海高新区隆重举办。本次国际研讨会汇聚了政产学研界的专家、学者、企业家近80人,共同就区块链在数据融合和信息安全方面的应用展开了前沿探讨。奥联首席科学家程朝辉博士出席本次会议并发表《基于国产密码的区块链隐私保护技术》主题演讲。以下是演讲的完整内容:

区块链涉及两个非常重要的技术,一个是分布式计算,另一个是密码技术。今天主要讲一下区块链里做隐私保护的密码技术,报告分为两个部分,第一是匿名币中的隐私保护技术;第二是受监督区块链的隐私保护技术。

一、匿名币中的隐私保护技术

我们要大规模应用区块链技术,Know your custom非常重要。在区块链技术里面,因为公开性的网络,是分布式的,要做共识,我们的交易内容是公开的,所以在这个过程中需要具备隐私性保护的能力;另外,隐私被窃取可能会被滥用。所以,我们一定要实现有监督的隐私保护,区块链才可大规模的应用。

要做有监管的区块链。我们应该区分区块链与数字货币,可以用一些数字货币的应用来看区块链的隐私保护技术。举区块链中隐私保护技术中做的非常好的三个例子,第一个是Monero,第二个是Zcash的,第三个是今年刚推出的Grin。

门罗币是2014年4月推出的,它使用的关键隐私保护技术有隐私地址、环签名等等;Zcash是2016年10月出来的,它用的这一重要密码技术叫零知识证明。Grin是今年1月份推出的,它用了一个非常新的MimbleWimble技术。在此介绍前两个匿名币采用的非常重要的技术,即基于密码技术来实现隐私保护的环签名和零知识证明。

关于环签名。仍然以比特币为例,在比特币上面做交易,用户是有一个钥匙的。如果你总是用同一把钥匙来签名,虽然你的身份与这个钥匙没有显示的关联关系,但是你的行为还是可以被追踪的。如果要想进一步提高用户的隐私能力。非常简单,假设有100个人,每个人都可以形成这一群体的一个签名。希望达到目标是环签名有效,同时不能追踪到这100个人中是谁签的名,从而提高隐私保护的能力。

关于零知识证明。简单解释为有一个证明方和验证方,证明方要向验证方证明他知道某一个秘密,同时又不告诉这个验证方,这个秘密是什么。举个例子,我想向大家证明,我知道酒店的wifi密码,同时,我又不会告诉你的密码是什么。但是我能向你证明我是知道密码的,这就是零知识证明。另外零知识证明的证明过程没有交互,是单向的。

在Zcash上如何实现隐私保护?一个简化版Zcash匿名能力的场景化来描述。许多人都向一个特殊银行存钱,每个人用盒子装了一个100元钞票的序列号sn,盒子的密码是xyz,银行不知道sn和xyz ,只看到盒子。用户每存一个盒子,银行从其账户扣100元,个人消费的时候只需要告诉收款方一个序列号sn和一个证明p,证明其知道银行中装有序列码sn的某个盒子的密码是xyz;兑付时,收款方提供序列号sn和证明p。银行方首先需要确认sn没有被从某个盒子中取出(没有双花),然后验证p确实是真实的,即银行中确实有个盒子装着序列号sn并且盒子的密码是xyz,证明成功后给收款方100元。那如何做保护隐私呢?匿名能力表现在:证明过程中,银行没有密码,打不开盒子,就无法根据sn找到对应的盒子(有许多人存了盒子) ,也就找不到sn对应的具体存款人,就能保护消费者的隐私。这个过程用了重要的技术:零知识证明,就是我们能证明一件事情,同时不告诉对方这个秘密是什么。

二、受监督区块链的隐私保护技术

在受监督区块链的隐私保护技术中仍然要保持匿名性和隐私性。首先,在非授权时交易记录不可关联用户、交易内容不可公开阅读;其次,在授权监管中,根据交易记录可以快速确定交易用户身份、还原交易具体内容。它的适用性在于不影响区块链的功能和不明显降低区块链的性能。

其中有两个非常重要的技术,第一个技术是如何实现受监管的同时能保证用户身份信息隐私的技术,即高效匿名隐式证书签名技术;第二个技术是关于数据内容,如何保证数据内容既有隐私性的同时,又受到监管,即标识广播加密技术

关于隐式证书机制。可以理解为用户有一对秘钥,把自己的身份信息和公钥交给KGC受信人机构,受信人机构进行一次签名操作,但这签名数据中有一部分是秘密数据,这部分秘密数据传递给用户,另一个公钥还原数据。所以,用户的完整私钥是由两部分生成,一部分是用户生成,一部分是KGC生成。这与传统方式有非常大的区别,证书是完全公开的,KGC技术的签名是秘密的。匿名签名密钥的快速派生,即实现用户身份的隐藏,之前的运算中IDA是用户A的一个匿名ID,与用户的真实身份是关联的,但公开的信息是匿名化的;另外,用户A和KGC可以派生出许多与之相关的匿名IDA和ZA;用户A每天签名可以使用不同的密钥对(ZA、PA 、SA)来隐藏身份。KGC关联用户,即KGC可以从ZA快速确定匿名IDA进而关联用户A,不同于群签名(group signature)和环签名。

关于标识密码机制。通过使用实体的唯一性标识作为公钥(设备标识、手机号码、邮件地址、匿名地址等),图中左侧是传统的秘钥,而标识密码是直接用标识作为公钥,可以抵抗公钥替换攻击、无需额外公钥存储、无需证书、无需复杂的PKI基础实施。

采用IBC的加解密过程

标识密码的加密过程怎么做呢?如果在区块链应用里面,交易方可以把数据使用接收方的公钥地址作为标识进行加密;接收方还没有对应的标识私钥,它需要到秘钥生成中心KGC获取标识私钥,继而解密。值得一提的是,KGC能生成任何一个标识的私钥,所以,KGC可以监管、检验任何一个人加密的内容。

区块链采用SM9的广播加密

每个用户都有签名秘钥,签名秘钥的公钥可以作为区块链的公钥地址。我们可以将公钥地址作为标识来对数据标识加密。非常重要的是,如果我想把这个数据加密给非常多的人,如果每一次数据加密的时候都单独加密一次,每次都会有扩展。而广播加密可将同一消息一次加密给1千接收人公钥地址标识,但是密文只扩展129字节。

三、总结——高效可监管区块链

1)身份匿名保护与监管机制

1、采用CL-KGA生成用户私钥和公钥;

2、IDA为用户匿名标识,链上公开ZA和PA,只有KGC知道如何将IDA和用户关联,保持匿名性;

3、采用匿名密钥派生方法派生许多密钥对。

4、ECS进行安全签名,每天签名可以使用不同密钥对(ZA、PA 、SA);

5、KGC必要时可以由(ZA、PA)关联到IDA进而确定用户,进行身份监管;

2)数据隐私保护与监管机制

1、采用签名公钥地址作为加密标识;

2、采用SM9广播加密算法加密数据,保护数据私密性并节约存储空间;

3、KGC必要时生成签名公钥地址的标识私钥解密数据,进行内容监管。

3)采用以上技术的实现的性能:每秒1万TPS