a一六z:解决公钥密码学核心难题的(de)三种优选方案
撰文:noemi glaeser,a一六z crypto
撰文:Chris,Techub News
在(zài)公钥密码学中(zhōng),一直以(yǐ)来(lái)都有(yǒu)一个(gè)难题,那(nà)就(jiù)是( shì)如何将加密密钥(如公钥)正确地(dì)与一个(gè)具体的(de)身份(比如某个(gè)人(rén)或组织)关联起来(lái)。这(zhè)个(gè)问题的(de)关键在(zài)于(yú),要(yào)有(yǒu)一种公开且一致的(de)方式来(lái)显示身份和(hé)公钥之(zhī)间的(de)关系,这(zhè)样大(dà)家(jiā)才能(néng)放心地(dì)使用这(zhè)些公钥来(lái)加密信息。
如果没有(yǒu)这(zhè)样明确的(de)关系,别人(rén)可(kě)能(néng)无法确定某个(gè)公钥到()底属于(yú)谁,这(zhè)样就(jiù)有(yǒu)可(kě)能(néng)把加密信息发送给错误的(de)人(rén),导致信息泄露或其它严重的(de)后(hòu)果。在(zài) Web三 中(zhōng),这(zhè)个(gè)问题依然存在(zài)。
对(duì)于(yú)上(shàng)述的(de)问题,目前有(yǒu)三种解决方案:Public Key Directory、基于(yú)身份的(de)加密(IBE)、和(hé)基于(yú)注册的(de)加密(RBE)。这(zhè)三种方法在(zài)匿名性、交互性和(hé)效率上(shàng)各有(yǒu)各的(de)优点。例如,IBE 需要(yào)强大(dà)的(de)信任基础,但在(zài)某些情况下(xià),IBE 在(zài)匿名性和(hé)效率上(shàng)表现更好(hao)。本文旨在(zài)探索这(zhè)三种方法在(zài)区块链上(shàng)的(de)应用,并比较它们(men)的(de)优缺点。
一般来(lái)说(shuō),将加密密钥与身份信息关联的(de)常用方法是( shì)使用公钥基础设施(PKI),其中(zhōng)核心部分是( shì)一个(gè)公钥目录。在(zài)这(zhè)种方法中(zhōng),发送信息的(de)人(rén)需要(yào)与一个(gè)受信任的(de)第三方(即维护这(zhè)个(gè)目录的(de)机构,通常是( shì)证书颁发机构)进行(xíng)互动,以(yǐ)便发送加密信息。
然而(ér),在(zài) Web二 的(de)环境中(zhōng),维护这(zhè)个(gè)公钥目录需要(yào)较高的(de)成本以(yǐ)及繁琐的(de)操作。此外,用户还面临着证书颁发机构可(kě)能(néng)滥用权力的(de)风险。
密码学家(jiā)提出(chū)的(de)一些替代方案,以(yǐ)解决公钥基础设施(PKI)存在(zài)的(de)问题。在(zài)一九八四年(nián),Adi Shamir提出(chū)了基于(yú)身份的(de)加密(IBE),其中(zhōng)一方的(de)标识(例如电话号码、电子(zǐ)邮件或ENS域名)可(kě)以(yǐ)直接用作公钥。这(zhè)种方法消除了维护公钥目录的(de)需要(yào),但引入了一个(gè)新的(de)问题:必须依赖一个(gè)受信任的(de)第三方(密钥生(nián)成器)来(lái)生(nián)成私钥。
二00一年(nián),Dan Boneh 和(hé) Matthew Franklin 提出(chū)了第一个(gè)实用的(de)IBE构造,但这(zhè)种技术并未广泛采用,主要(yào)是( shì)在(zài)一些封闭的(de)生(nián)态系统中(zhōng)使用,如企业或政府的(de)部署环境。IBE不(bù)被广泛使用的(de)原因之(zhī)一可(kě)能(néng)是( shì)它需要(yào)依赖一个(gè)强大(dà)的(de)信任假设,即信任第三方生(nián)成得密钥。
不(bù)过(guò),正如本文后(hòu)续将讨论的(de),这(zhè)种信任问题可(kě)以(yǐ)通过(guò)依赖一个(gè)受信任的(de)多方(即一组参与者组成的(de)法定人(rén)数)来(lái)解决,而(ér)区块链技术可(kě)以(yǐ)很容易地(dì)实现这(zhè)一点。
优势和(hé)劣势
比较这(zhè)几种加密方案时(shí),需要(yào)考虑许多不(bù)同的(de)因素,我(wǒ)对(duì)此做出(chū)两种假设:
用户不(bù)会(huì)更新或撤销他(tā)们(men)的(de)密钥:这(zhè)意味着在(zài)讨论中(zhōng)假设每个(gè)用户的(de)密钥都是( shì)固定的(de),不(bù)会(huì)发生(nián)变化。
智能(néng)合约不(bù)使用任何链下(xià)的(de)数据可(kě)用性服务(DAS)或 blob 数据:也(yě)就(jiù)是( shì)说(shuō),假设智能(néng)合约完全依赖于(yú)链上(shàng)数据,不(bù)涉及链外的(de)数据服务或额外的(de)数据存储。
任何人(rén)都可(kě)以(yǐ)通过(guò)调用智能(néng)合约,将一个(gè)没有(yǒu)被别人(rén)占用的(de) ID 也(yě)就(jiù)是( shì)(id, pk)条目添加到()链上(shàng)目录中(zhōng)。
去(qù)中(zhōng)心化的(de)PKI是( shì)指通过(guò)智能(néng)合约来(lái)维护一个(gè)身份(ID)和(hé)其对(duì)应公钥的(de)目录。这(zhè)个(gè)目录是( shì)公开的(de),并且不(bù)依赖于(yú)中(zhōng)心化的(de)第三方。例如,以(yǐ)ENS为(wéi / wèi)例,它维护了一个(gè)域名(即身份)与相关元数据的(de)映射关系,包括该域名所解析的(de)地(dì)址(从这(zhè)些地(dì)址的(de)交易中(zhōng)可(kě)以(yǐ)推导出(chū)公钥)。ENS是( shì)一个(gè)更复杂的(de)系统,不(bù)仅记录公钥,还存储了其他(tā)元数据。去(qù)中(zhōng)心化的(de) PKI 的(de)功能(néng)相对(duì)来(lái)说(shuō)更简单:智能(néng)合约只需维护一个(gè)列表,记录每个(gè)身份对(duì)应的(de)公钥即可(kě)。
当用户想要(yào)注册一个(gè)身份得时(shí)候,首先需要(yào)生(nián)成一对(duì)密钥(公钥和(hé)私钥),或者使用已经生(nián)成的(de)密钥对(duì),将其身份ID和(hé)公钥发送到()智能(néng)合约(可(kě)能(néng)还会(huì)支付一定费用),智能(néng)合约会(huì)检查这(zhè)个(gè)ID是( shì)否已经被别人(rén)注册过(guò)。如果没有(yǒu)被占用,智能(néng)合约就(jiù)会(huì)将这(zhè)个(gè)ID和(hé)公钥添加到()目录中(zhōng)。一旦注册完成,任何人(rén)都可(kě)以(yǐ)通过(guò)询问智能(néng)合约来(lái)获取某个(gè)ID对(duì)应的(de)公钥,以(yǐ)便加密发送消息给该用户,如果发送者之(zhī)前已经加密过(guò)消息给这(zhè)个(gè)用户,并且已经有(yǒu)了该用户的(de)公钥,就(jiù)不(bù)需要(yào)再次向智能(néng)合约请求公钥。有(yǒu)了公钥后(hòu),发送者可(kě)以(yǐ)像平常一样使用它来(lái)加密消息,然后(hòu)将加密后(hòu)的(de)消息发送给接收者,接收者使用对(duì)应的(de)私钥来(lái)解密消息,恢复原文。
我(wǒ)们(men)来(lái)看看这(zhè)个(gè)方法的(de)优点和(hé)缺点:
优点 | 缺点 |
非交互式解密 :解密过(guò)程不(bù)需要(yào)与其他(tā)方进行(xíng)互动,解密者可(kě)以(yǐ)独立完成解密。 | 不(bù)简洁 (Not succinct):系统可(kě)能(néng)在(zài)某些方面不(bù)够简洁,可(kě)能(néng)意味着复杂性较高,数据量较大(dà),或者需要(yào)更多资源。 |
透明性 :系统可(kě)能(néng)在(zài)某些方面是( shì)透明的(de),意味着操作是( shì)公开的(de)、可(kě)以(yǐ)被审查的(de)。 | 交互式加密 :加密过(guò)程可(kě)能(néng)需要(yào)与其他(tā)方进行(xíng)一定的(de)互动,增加了复杂性。 |
任意ID :用户可(kě)以(yǐ)自(zì)由选择或使用任意的(de)身份ID,而(ér)不(bù)受特定格式或规则的(de)限制。 | 发送者非匿名 :发送者的(de)身份在(zài)系统中(zhōng)可(kě)能(néng)无法完全保持匿名。 |
用户的(de)身份由他(tā)们(men)的(de)公钥来(lái)表示,也(yě)就(jiù)是( shì)说(shuō),公钥不(bù)仅用于(yú)加密,还可(kě)以(yǐ)作为(wéi / wèi)用户的(de)唯一标识符。但是( shì)这(zhè)种方法需要(yào)依赖于(yú)一个(gè)或多个(gè)值得信赖的(de)第三方,这(zhè)些第三方负责生(nián)成并发放密钥。此外,这(zhè)些第三方还需要(yào)在(zài)系统的(de)整个(gè)生(nián)命周期内保管一个(gè)主密钥,这(zhè)个(gè)主密钥在(zài)某些情况下(xià)可(kě)能(néng)用于(yú)解密或其他(tā)重要(yào)操作。
在(zài)IBE系统中(zhōng),用户并不(bù)像传统加密系统中(zhōng)那(nà)样自(zì)己生(nián)成一对(duì)公钥和(hé)私钥。相反,用户需要(yào)使用一个(gè)受信任的(de)密钥生(nián)成器注册。密钥生(nián)成器拥有(yǒu)一对(duì)主密钥(包括主私钥 msk 和(hé)主公钥 mpk)。当用户提供自(zì)己的(de) ID 时(shí),密钥生(nián)成器会(huì)使用主私钥 msk 和(hé)用户的(de)ID来(lái)计算出(chū)一个(gè)专属于(yú)该用户的(de)私钥。生(nián)成的(de)私钥需要(yào)通过(guò)一个(gè)安全的(de)渠道(dào)传递给用户,一般来(lái)说(shuō)都是( shì)使用密钥交换协议来(lái)建立这(zhè)个(gè)安全通道(dào)。
对(duì)于(yú)发送者来(lái)说(shuō),IBE系统简化了加密过(guò)程。发送者只需要(yào)下(xià)载一次密钥生(nián)成器的(de)主公钥(mpk),之(zhī)后(hòu)就(jiù)可(kě)以(yǐ)使用 ID 来(lái)加密消息。对(duì)于(yú)接收者来(lái)说(shuō),解密也(yě)很简单。注册用户可(kě)以(yǐ)使用密钥生(nián)成器发给他(tā)们(men)的(de)私钥来(lái)解密收到()的(de)密文。
密钥生(nián)成器的(de)主私钥(msk)必须长期保留,因为(wéi / wèi)它在(zài)系统运行(xíng)期间需要(yào)不(bù)断地(dì)生(nián)成新的(de)用户私钥。这(zhè)与某些SNARK 系统中(zhōng)不(bù)同,后(hòu)者在(zài)受信任的(de)设置过(guò)程中(zhōng)生(nián)成,但可(kě)以(yǐ)在(zài)设置完成后(hòu)销毁。而(ér)在(zài)IBE系统中(zhōng),主私钥不(bù)能(néng)像SNARK中(zhōng)那(nà)样在(zài)初始化后(hòu)删除。
即使主私钥(msk)保管得当,每个(gè)注册用户仍然需要(yào)信任密钥生(nián)成器不(bù)会(huì)读取他(tā)们(men)的(de)消息。这(zhè)是( shì)因为(wéi / wèi)密钥生(nián)成器可(kě)以(yǐ)随时(shí)保存一份用户私钥的(de)副本,或者利用主私钥重新计算出(chū)用户的(de)私钥。
密钥生(nián)成器还有(yǒu)可(kě)能(néng)给用户提供一个(gè)有(yǒu)问题或受限的(de)私钥,这(zhè)种私钥可(kě)以(yǐ)解密大(dà)部分消息,但无法解密某些密钥生(nián)成器设定的(de)特定消息。这(zhè)意味着密钥生(nián)成器有(yǒu)能(néng)力操控用户的(de)解密能(néng)力,从而(ér)可(kě)能(néng)对(duì)用户的(de)通信进行(xíng)某种程度的(de)控制或限制。
优点 | 缺点 |
链上(shàng)存储恒定/最小:系统在(zài)区块链上(shàng)所需的(de)存储量很小或恒定,不(bù)会(huì)随时(shí)间增加。 | 强信任假设:系统依赖于(yú)一个(gè)或多个(gè)受信任的(de)第三方,这(zhè)意味着需要(yào)对(duì)这(zhè)些第三方有(yǒu)强烈的(de)信任。如果这(zhè)些第三方被破坏或不(bù)可(kě)靠,系统的(de)安全性就(jiù)会(huì)受到()威胁。 |
非交互式加密:加密过(guò)程不(bù)需要(yào)与其他(tā)方互动,发送者可(kě)以(yǐ)独立完成加密。 | |
发送者匿名:系统可(kě)以(yǐ)保持发送者的(de)身份匿名,保护隐私。 | |
任意ID:用户可(kě)以(yǐ)自(zì)由选择或使用任意的(de)身份ID,不(bù)受特定格式或规则的(de)限制。 |
像IBE一样,在(zài)这(zhè)个(gè)系统中(zhōng),用户的(de)身份(例如电子(zǐ)邮件地(dì)址或电话号码)直接充当他(tā)们(men)的(de)公钥。但与IBE不(bù)同的(de)是( shì),这(zhè)个(gè)系统不(bù)再依赖一个(gè)受信任的(de)第三方或一组 quorum 来(lái)管理密钥。相反,这(zhè)种受信任的(de)第三方被一个(gè) key curator 所取代。
我(wǒ)将在(zài)这(zhè)部分讨论一种高效的(de)RBE构造方式,因为(wéi / wèi)据我(wǒ)所知这(zhè)与其他(tā)实用的(de)RBE构造相比有(yǒu)一个(gè)显著优势,它可(kě)以(yǐ)在(zài)区块链上(shàng)部署,因为(wéi / wèi)它是( shì) pairing-based,而(ér)不(bù)是( shì) lattice-based 的(de)。
在(zài)RBE系统中(zhōng),每个(gè)用户自(zì)己生(nián)成一对(duì)密钥(包括公钥和(hé)私钥)。用户还需要(yào)基于(yú)他(tā)们(men)的(de)私钥和(hé)一个(gè)公共参考字符串(CRS)来(lái)计算一些更新值(图中(zhōng)标记为(wéi / wèi) a)。这(zhè)些更新值用于(yú)系统中(zhōng)的(de)进一步操作。公共参考字符串(CRS)的(de)存在(zài)意味着系统的(de)设置并非完全不(bù)需要(yào)信任。然而(ér),CRS的(de)生(nián)成过(guò)程采用了一种称为(wéi / wèi)tau 的(de)幂的(de)构造方法。这(zhè)种构造方法可(kě)以(yǐ)在(zài)链上(shàng)通过(guò)多个(gè)参与者协作计算完成。只要(yào)有(yǒu)至少一个(gè)参与者是( shì)诚实的(de),这(zhè)个(gè) CRS 就(jiù)是( shì)安全的(de)。
智能(néng)合约为(wéi / wèi)预期数量的(de)用户 N 进行(xíng)了设置,这(zhè)些用户被分组到()不(bù)同的(de) buckets 中(zhōng),当用户在(zài)系统中(zhōng)注册时(shí),需要(yào)向智能(néng)合约发送自(zì)己的(de)身份ID、公钥和(hé)更新值。智能(néng)合约会(huì)维护一组公共参数 pp,这(zhè)些公共参数不(bù)同于(yú)前面提到()的(de)公共参考字符串(CRS)。可(kě)以(yǐ)将 pp 理解为(wéi / wèi)系统中(zhōng)所有(yǒu)已注册用户公钥的(de)简洁摘要(yào)。智能(néng)合约接收到()用户的(de)注册请求后(hòu),会(huì)对(duì)更新值进行(xíng)检查,以(yǐ)验证它们(men)的(de)正确性。一旦验证通过(guò),智能(néng)合约会(huì)将该用户的(de)公钥乘入到() pp 中(zhōng)的(de)相应 buckets 中(zhōng)。这(zhè)一步操作相当于(yú)将新用户的(de)公钥纳入系统的(de)公共参数集合中(zhōng),以(yǐ)便后(hòu)续操作使用。
在(zài)基于(yú)注册的(de)加密(RBE)系统中(zhōng),用户需要(yào)在(zài)本地(dì)保存一些信息,这(zhè)些信息用于(yú)帮助他(tā)们(men)解密消息。当有(yǒu)新用户注册到()与他(tā)们(men)相同的(de)组中(zhōng)时(shí),这(zhè)些信息需要(yào)更新。用户可(kě)以(yǐ)自(zì)己监控区块链来(lái)手动更新这(zhè)些信息,或者智能(néng)合约可(kě)以(yǐ)提供最近注册的(de)用户信息,用户可(kě)以(yǐ)定期获取这(zhè)些更新来(lái)保持他(tā)们(men)的(de)解密信息是( shì)最新的(de)。
在(zài)这(zhè)个(gè)系统中(zhōng),发送者只需要(yào)做两件事(shì):
下(xià)载公共参考字符串(CRS):这(zhè)只需要(yào)下(xià)载一次,之(zhī)后(hòu)不(bù)需要(yào)再更新。
下(xià)载公共参数:发送者需要(yào)偶尔下(xià)载最新的(de)公共参数。对(duì)于(yú)发送者来(lái)说(shuō),重要(yào)的(de)是( shì)这(zhè)些公共参数中(zhōng)包含了接收者的(de)公钥,而(ér)不(bù)必每次都下(xià)载最新版本,只要(yào)能(néng)找到()接收者的(de)公钥就(jiù)可(kě)以(yǐ)了。
然后(hòu),发送者使用下(xià)载的(de)CRS、公共参数以(yǐ)及接收者的(de)身份ID,就(jiù)可(kě)以(yǐ)加密消息并发送给接收者。这(zhè)意味着发送者不(bù)需要(yào)频繁更新数据,只要(yào)确保公共参数中(zhōng)有(yǒu)接收者的(de)公钥就(jiù)行(xíng)。
当用户收到()一条加密消息时(shí),首先会(huì)检查自(zì)己本地(dì)存储的(de)辅助信息,看看是( shì)否有(yǒu)符合某个(gè)条件的(de)值(比如通过(guò)某个(gè)验证检查的(de)值),如果用户在(zài)本地(dì)找不(bù)到()符合条件的(de)值,这(zhè)意味着他(tā)们(men)需要(yào)从智能(néng)合约获取最新的(de)更新信息,一旦用户找到()了合适的(de)辅助信息值,他(tā)们(men)就(jiù)可(kě)以(yǐ)使用这(zhè)个(gè)值和(hé)自(zì)己的(de)私钥来(lái)解密收到()的(de)密文,从而(ér)恢复原始消息。
显然,该方案比其他(tā)两个(gè)方案更复杂。但它所需的(de)链上(shàng)存储比公钥目录要(yào)少,也(yě)避免了 IBE 的(de)强信任假设。
简洁的(de)参数:
在(zài)链上(shàng)存储的(de)参数大(dà)小与用户数量的(de)关系是( shì)次线性的(de),这(zhè)比公钥目录需要(yào)的(de)存储量(线性增长)要(yào)小得多,但仍然不(bù)是( shì)常量,因此在(zài)这(zhè)一点上(shàng)不(bù)如IBE(基于(yú)身份的(de)加密)系统。
有(yǒu)一定交互性的(de)加密:
发送消息时(shí),发送者需要(yào)一个(gè)包含目标接收者的(de)公共参数副本。这(zhè)意味着发送者需要(yào)在(zài)接收者注册后(hòu)某个(gè)时(shí)间点更新这(zhè)些参数,但不(bù)需要(yào)为(wéi / wèi)每个(gè)接收者单独更新,因为(wéi / wèi)一次更新可(kě)能(néng)包含多个(gè)接收者的(de)密钥。总体而(ér)言,消息发送的(de)交互性比IBE更多,但比使用公钥目录要(yào)少。
有(yǒu)一定交互性的(de)解密:
和(hé)加密类似,接收者需要(yào)一份与加密时(shí)使用的(de)公共参数版本匹配的(de)辅助信息。当有(yǒu)新用户在(zài)某个(gè)分组中(zhōng)注册时(shí),公共参数和(hé)辅助信息会(huì)更新,能(néng)够解密密文的(de)值是( shì)对(duì)应于(yú)加密时(shí)使用的(de)公共参数版本的(de)。用户可(kě)以(yǐ)选择定期获取辅助信息更新,而(ér)不(bù)是( shì)每次都立即更新,除非解密失败。与公共参数更新不(bù)同的(de)是( shì),更频繁地(dì)获取辅助信息更新不(bù)会(huì)泄露隐私信息。
发送者匿名:
与公钥目录的(de)情况类似,发送者可(kě)以(yǐ)独立加密消息(只要(yào)它有(yǒu)最新的(de)参数),而(ér)不(bù)需要(yào)查询与接收者相关的(de)特定信息。当发送者需要(yào)从链上(shàng)读取信息时(shí),这(zhè)些信息与目标接收者无关(除非发送者只请求某个(gè)特定的(de)参数得分组,但这(zhè)样可(kě)能(néng)会(huì)泄露部分信息)。
透明性:
尽管系统需要(yào)通过(guò)信任设置(可(kě)能(néng)是( shì)分布式或外部管理的(de))来(lái)设置,并输出(chū)一个(gè)修正的(de)CRS(公共参考字符串),但一旦设置完成,它不(bù)再依赖任何受信任的(de)第三方或仲裁组。虽然它依赖于(yú)一个(gè)协调的(de)第三方(智能(néng)合约),但这(zhè)个(gè)系统是( shì)完全透明的(de),任何人(rén)都可(kě)以(yǐ)充当协调者或通过(guò)验证状态转换来(lái)检查其是( shì)否诚实运行(xíng)(这(zhè)也(yě)是( shì)为(wéi / wèi)什么它可(kě)以(yǐ)作为(wéi / wèi)智能(néng)合约实现)。此外,用户可(kě)以(yǐ)要(yào)求一个(gè)简洁的(de)(非)成员资格证明,以(yǐ)检查他(tā)们(men)自(zì)己或其他(tā)人(rén)是( shì)否在(zài)系统中(zhōng)注册。这(zhè)与IBE系统不(bù)同,在(zài)IBE中(zhōng),难以(yǐ)让受信任的(de)第三方证明他(tā)们(men)没有(yǒu)秘密地(dì)泄露解密密钥(比如保存了一个(gè)秘密副本或泄露给其他(tā)人(rén))。相比之(zhī)下(xià),公钥目录是( shì)完全透明的(de)。
受限的(de)ID集合:
这(zhè)里描述的(de)是( shì)RBE构造的(de)基本版本。为(wéi / wèi)了透明地(dì)确定一个(gè)ID所属的(de)分组,ID必须有(yǒu)一个(gè)公共且确定的(de)顺序。电话号码可(kě)以(yǐ)简单地(dì)排序,但对(duì)任意字符串进行(xíng)排序则可(kě)能(néng)非常复杂甚至不(bù)可(kě)能(néng),因为(wéi / wèi)分组的(de)数量可(kě)能(néng)非常大(dà)或是( shì)无限的(de)。这(zhè)可(kě)以(yǐ)通过(guò)提供一个(gè)单独的(de)合约来(lái)计算这(zhè)种映射,或者采用后(hòu)续工作中(zhōng)提出(chū)的(de) cuckoo-hashing 方法来(lái)缓解这(zhè)种复杂性。
收件人(rén)匿名:
这(zhè)种方法可(kě)以(yǐ)让密文不(bù)会(huì)泄露收件人(rén)的(de)身份。
以(yǐ)上(shàng)就(jiù)是( shì)a一六z:解决公钥密码学核心难题的(de)三种优选方案的(de)详细内容,更多请关注本站其它相关文章!
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。