本节主要介绍现代密码学的新的热点,包括人工智能与密码学、云计算与密码学,以及区块链与密码学。
人工智能(Artificial Intelligence,AI)是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语音识别、图像识别、自然语言处理和专家系统等。
1.人工智能安全/隐私保护需求
无论是推荐系统、机器学习还是5G网络,人工智能系统都可以抽象成一对多、多对一或多对多的模型。因此,人工智能安全与通信双方至少有一方与多方的密码学理论体系(多方密码学)的建立休戚相关,其重要性不言而喻。当前的人工智能安全研究主要包括以下几方面内容。
(1)推荐系统的隐私保护
推荐系统的隐私保护可分为单用户、多数据模型和多用户、多数据模型两类。
在单用户、多数据模型的推荐系统隐私保护中,为了保证数据的机密性,必须对推荐系统中训练的数据集加密,然后上传给推荐服务器。由推荐服务器在密文域上建立预测模型,计算推荐结果。授权用户可以申请查看推荐结果,对返回的推荐结果密文进行解密和正确性验证,如图1-18所示。
●图1-18 单用户、多数据模型推荐系统隐私保护
(2)机器学习的隐私保护
机器学习的隐私保护目前国内外的主要技术包括公钥全同态加密和安全多方计算,主要聚焦于如何在密文历史数据训练集上进行高效的模型训练和计算。其中涉及的原子计算包括密文域上的Sign函数计算、密文域上的Sigmoid函数计算和密文域的梯度函数计算。
图1-19是一个多层的神经网络系统,包括输入层(第0层)、多个隐藏层(第1~ L -1层)和输出层(第 L 层),其中每一层均由多个神经元构成。构造隐私保护的离散神经网络模型训练与计算协议需要实现的隐私保护包括训练数据集隐私、模型参数隐私和预测结果隐私。
●图1-19 多层神经网络系统
(3)5G网络的智能安全
5G网络的智能安全是指在多对多环境下,如何通过工作量证明,实现隶属于多用户的多计算任务与多个运行于不同工作负荷下的服务器之间的智能匹配。同时保护用户的计算任务隐私和服务器的工作量隐私,如图1-20所示。
●图1-20 5G网络
2.密码学对应的解决方案
(1)安全多方计算
安全多方计算(Secure Multiparty Computation,SMC)最初针对的是一个安全两方计算问题,即所谓的“百万富翁问题”,并于1982年由姚期智提出和推广。安全多方计算允许我们计算私有输入值的函数,从而使每一方只能得到其相应的函数输出值,而不能得到其他方的输入值与输出值。安全多方计算能够通过三种不同的框架来实现。
1)不经意传输(Oblivious Transfer,OT)。在不经意传输中,发送方拥有一组“消息-索引”对( m 1 ,1),…,( m N , N )。在每次传输时,接收方选择一个满足1≤ i ≤ N 的索引 i ,并接收 m i 。接收方不能得知关于消息的任何其他信息,发送方也不能了解关于接收方 i 选择的任何信息。
2)秘密共享(Secret Sharing,SS)。秘密共享是通过将秘密值分割为随机多份,并将这些份分发给不同方隐藏秘密值的一种概念。因此,每一方只能拥有一个通过共享得到的值,即秘密值的一部分。根据具体的使用场合,需要所有或一定数量的共享数值来重新构造原始的秘密值。
3)同态加密(Homomorphic Encryption,HE)。同态加密逐渐被认为是在隐私保护的机器学习中实现安全多方计算的一种可行行为,是一种不需要对密文进行解密的密文计算解决方案。
同态加密方法 H 是一种通过对相关密文进行有效操作(不需获知解密密钥),从而允许在加密内容上进行特定代数运算的加密方法。一个同态加密方法 HE 由一个四元组组成:
HE ={KeyGen,Enc,Dec,Eval}
其中,各参数的含义如下。
●KeyGen表示密钥生成函数。对于非对称同态加密,一个密钥生成元 g 被输入Key-Gen,并输出一个密钥对{ pk , sk }=KeyGen( g ),其中 pk 表示用于明文加密的公钥, sk 表示用于解密的密钥。对于对称同态加密,只生成一个密钥 sk =KeyGen( g )。
●Enc表示加密函数。对于非对称同态加密,一个加密函数以公钥 pk 和明文 m 作为输入,并产生一个密文c=Enc pk ( m )作为输出。对于对称同态加密,加密过程会使用公共密钥 sk 和明文 m 作为输入,并生成密文 c =Enc pk ( m )。
●Dec表示解密函数。对于非对称同态加密和对称同态加密,隐私密钥 sk 和密文 c 被用来作为生成相关明文 m =Dec sk ( c )的输入。
●Eval表示评估函数。评估函数Eval将密文 c 和公钥 pk (对于非对称同态加密)作为输入,并输出与明文对应的密文。
(2)差分隐私
差分隐私(Differential Privacy)最开始被用来促进在敏感数据上的安全分析。差分隐私的中心思想是, 当敌手从数据库中查询个体信息时将其混淆,使得敌手无法从查询结果中辨别个体级别的敏感性。 差分隐私提供了一种信息理论安全保障,即 函数的输出结果对数据集中的任何特定记录都不敏感。 因此,差分隐私都被用于抵抗成员推理攻击。
主要有两种方法通过给数据加上噪声实现差分隐私:一种是根据函数的敏感性增加噪声;一种是根据离散值的指数分布选择噪声。
实值函数的敏感性可以表示为由于添加或删除单个样本,函数值可能发生变化的最大程度。差分隐私算法可根据噪声扰动使用的方式和位置来进行分类。
●输入扰动:噪声被加入训练模型。
●目标扰动:噪声被加入学习算法的目标函数。
●算法扰动:噪声被加入中间值,如迭代算法中的梯度。
●输出扰动:噪声被加入训练后的输出参数。
2006年8月9日,Google首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会(SESSanJose2006)上首次提出“云计算”(Cloud Computing)的概念,这是第一次正式地提出这一概念,有着巨大的历史意义。
2007年以来,“云计算”成了计算机领域最令人关注的话题之一,同样也是大型企业、互联网建设着力研究的重要方向。因为云计算的提出,互联网技术和IT服务出现了新的模式,引发了一场变革。
2009年1月,阿里软件在江苏南京建立首个“电子商务云计算中心”。同年11月,中国移动云计算平台“大云”计划启动。现在,云计算已经发展到较为成熟的阶段。
1.云计算概述
云计算是什么?简单地说,云计算实质上就是一个网络。从狭义上讲,云计算是一种提供资源的网络,使用者可以随时获取云上的资源。从广义上讲,云计算是与信息技术、软件、互联网相关的一种服务,这种计算资源共享池叫作“云”,云计算把许多计算资源集合起来,通过软件实现自动化管理,只需要很少的人参与,就能让资源被快速提供。也就是说,计算能力作为一种商品,可以在互联网上流通,就像水、电、煤气一样,可以方便地被取用,且价格较为低廉。
总之,云计算不是一种全新的网络技术,而是一种全新的网络应用概念,云计算的核心概念就是以互联网为中心,在网站上提供快速且安全的云计算服务与数据存储,让每一个使用互联网的人都可以使用网络上的庞大计算资源与数据中心。
与传统的网络应用模式相比,云计算具有以下优势与特点。
●虚拟化技术:云计算最为显著的特点是突破了时间、空间的界限,通过虚拟平台对相应终端操作完成数据备份、迁移和扩展等。
●动态可扩展:云计算具有高效的运算能力,在原有服务器基础上增加云计算功能能够迅速提高计算速度,使动态扩展虚拟化,达到对应用进行扩展的目的。
●按需部署:云计算平台能够根据用户的需求快速配备计算能力及资源。
●灵活性高:云计算的兼容性非常强,不仅可以兼容低配置机器、不同厂商的硬件产品,还能够使外设获得更高性能计算。
●可靠性高:服务器就算有故障也不影响计算与应用的正常运行。因为单点服务器出现故障可以通过虚拟化技术将分布在不同物理服务器上的应用进行恢复或利用动态扩展功能部署新的服务器进行计算。
●性价比高:将资源放在虚拟资源池中统一管理在一定程度上优化了物理资源,用户不再需要昂贵、存储空间大的主机,可以选择相对廉价的PC组成云,在减少费用的同时,计算性能还不逊于大型主机。
●可扩展性:用户可以利用应用软件的快速部署来将自身所需的已有业务以及新业务进行扩展。
2.云计算安全/隐私保护需求
在云安全联盟(Cloud Security Alliance,CSA)发布的2013年云计算九大威胁报告中,确定了9种云安全的严重威胁,其中包括了数据泄露、数据丢失、数据劫持、恶意内部用户、滥用和恶意使用等。而在云计算安全中,数据的安全尤为重要。因此,数据的机密性、隐私性以及可靠性问题是云存储过程中面临的巨大挑战。
(1)数据的机密性
云计算平台提供的服务要求用户把数据交给云平台,云平台可以管理和维护用户的数据。一旦云平台窃取用户的数据,将会导致用户的隐私被泄露。另外,由于云计算平台的数据往往具有很高的价值,恶意用户也会通过云服务器的漏洞或者在传输过程中窃取用户的机密数据,对用户造成严重的后果。因此,数据的机密性必须得到保证,否则将会极大地限制云计算的发展与应用。
(2)数据访问控制
访问控制技术通过用户身份、资源特征等属性对系统中的资源操作添加限制,来允许合法用户的访问,阻止非法用户入侵系统。传统访问控制模型所管理的都是明文数据,但在云存储系统中由于云平台的不完全可信性,密码学方法的访问控制方案成为目前安全性相对较高的方法,对数据的机密性具有更强的保护力度。
(3)数据授权修改
在实际的云存储应用中,密文类型信息的动态可修改性具有广泛的应用场景。数据所有者为节省本地存储开销,或方便数据在不同终端的灵活使用,将加密数据存储于云服务器,然后数据所有者希望只有自己或者部分已授权的用户才能够修改这些数据,修改后的数据被重新加密后再次上传到云存储平台。因此,云存储中的数据修改不仅要求只有授权用户才能解密访问数据,还要求云平台能够验证授权用户的身份以接受修改后的密文。
(4)数据可用性
为了保护云存储平台中数据的机密性,同时提高数据的可用性,可搜索加密技术的概念被提出。可搜索加密技术允许用户在上传数据之前对数据进行加密处理,使得用户可以在不暴露数据明文的情况下对存储在云平台上的加密数据进行检索,其典型的应用场景包括云数据库和云数据归档。
3.密码学对应的解决方案
(1)云计算数据访问控制技术
传统的访问控制技术往往基于完全可信的服务器来制订和实施数据的访问控制策略,因此难以适用于云计算环境。为适应云计算中数据存储服务器半可信的限制,基于密码学的访问控制方案应运而生了。目前,基于属性加密的访问控制方案被认为可有效地解决云计算中数据机密性和细粒度访问控制的难题,它允许数据所有者在加密数据的过程中通过灵活的访问策略指定能够解密密文的授权用户集合。在现有的不同安全模型下,基于属性加密的访问控制方案已经能够实现不同粒度的访问控制功能,并可提供一些实用的特性。如何基于属性加密技术为用户提供可靠、高效、适用于云环境中的数据访问控制方案,成为云计算环境中数据安全问题的热点。
在云计算平台下,用户可以通过网络在云计算环境下实现数据的上传、访问和共享等,为用户提供简便快捷的数据存储和共享服务。云计算平台下数据访问控制模型一般具有3类主要的实体:云平台、数据所有者和用户,如图1-21所示。
●图1-21 基于属性加密的访问控制
基于Bethencourt等人的属性加密具体实现方案的访问控制模型包含如下算法。
●( pk , mk )←Setup( λ ):输入安全参数 λ ,中央机构生成公钥 pk 和私钥 mk 。
● sk ←KeyGen( pk , mk , S ):中央机构输入公钥 pk 和私钥 sk ,用户的属性集合 S 生成属性密钥 sk 。
● c ←Encrypt( pk , m , t ):数据所有者输入中央机构的公钥 pk 、数据明文 m 、访问策略树 t ,输出加密的数据 c 。算法首先基于对称加密算法,使用随机的数据密钥 dk 加密数据明文 m ,然后基于属性加密算法,使用访问策略树 t 加密 dk 。
● m ←Decrypt( c , sk ):用户输入部分密文 c 、用户的属性密钥 sk 。如果用户的属性满足密文 c 的访问策略,首先解密出 dk ,然后使用 dk 解密出数据明文 m 。
(2)云计算加密数据分类技术
在数据挖掘的不同应用中,数据分类是一个重要的研究方向。分类器的构造过程一般情况下分为训练和测试两个步骤。在训练阶段,根据训练数据集的特点,为每个类别产生一个对相应数据集的准确描述或模型。在测试阶段,利用先前训练阶段得到的类别的描述或模型对测试进行分类,测试其分类准确度。通过云存储的方式处理海量数据并进行分类,有数据量大、计算成本低、屏蔽底层等优势。然而在数据挖掘产生巨大财富的同时,也带来了隐私泄露的问题。基于密码学的隐私保护技术是隐藏敏感数据的解决方法之一,不仅能保证原始数据的安全性,而且能确保最终结果的准确性。
云计算加密数据分类的设计目的是在保护用户隐私的前提下对使用者所提供的数据进行分类预测,使得使用者不必冒着泄露自身隐私的危险进行分类预测。加密数据分类模型如图1-22所示。
●图1-22 加密数据分类模型
加密数据分类模型各模块的作用如下。
●可信机构:证书模块是一个独立的模块,被模型中的其他所有模块信任,负责签发与保管整个系统使用的密钥。
●云存储:云存储模块保存大量的历史数据,这些历史数据可以提供给数据加密分类模块进行训练。
●加密数据分类:加密数据分类提供加密数据分类服务和明文数据分类服务,加密数据分类模块本身保存有一定的用于训练的数据,也可以从云存储模块中获取更多用于分类的数据。
●用户:用户向加密数据分类提供自身待分类的数据,如果选择加密数据分类,就提供加密的待分类数据,如果选择明文数据分类,就提供明文的待分类数据。得到加密数据分类模块的加密分类结果后,还需要使用用户本身的私钥解密来得到最终的分类结果。同时用户还需要辅助云存储完成乘法同态运算。
(3)云计算加密数据搜索技术
可搜索加密允许用户在上传数据之前对数据进行加密处理,使得用户可以在不暴露数据明文的情况下对存储在云计算平台上的加密数据进行检索。可搜索加密技术以加密的形式保存数据到云计算平台中,所以能够保证数据的机密性,使得云服务器和未授权用户无法获取数据明文,即使云计算平台遭遇非法攻击,也能保护用户的数据不被泄露。此外,云计算平台在对加密数据进行搜索的过程中,能够获得的仅仅是那些数据被用户检索的信息,而不会获得与数据明文相关的任何信息。
可搜索加密可分为4个子步骤,如图1-23所示。
●图1-23 可搜索加密过程
1)加密。用户使用密钥在本地对明文文件进行加密,并将其上传至服务器。
2)陷门生成。具备检索能力的用户,使用密钥生成待查询关键词的陷门,要求陷门不能泄露关键词的任何信息。
3)检索。服务器以关键词陷门为输入,执行检索算法,返回所有包含该陷门对应关键词的密文文件,要求服务器除了能知道密文文件是否包含某个特定关键词外,无法获得更多信息。
4)解密。用户使用密钥解密服务器返回的密文文件,获得查询结果。
中本聪在其撰写的文章“比特币:一种点对点的电子现金系统”中提出了一种不需要交易双方有互信基础的去中心化电子交易体系——比特币,虽然该文章实际并没有明确提出区块链(Blockchain)的定义和概念,但是文中指出,区块链是用于记录比特币交易账目历史的数据结构,这也是目前公认最早关于区块链的描述性文献。顾名思义,区块链是一种特殊的链式数据结构,其是按照时间顺序将数据区块以顺序相连的方式组合而成的链表,并通过多种密码学方法保证其具有不可篡改和不可伪造等特性,从而进一步构建基于区块链的信用体系,所以密码学方法与区块链有着密不可分的关系。
1.区块链概述
区块链是一种分布式账本技术。根据维基百科的定义,区块链是借由密码学串接并保护内容的串联文字记录(又称区块),每一个区块包含了前一个区块的哈希值、相应时间戳记录以及交易资料,这样的设计使得区块内容具有难以篡改的特性。区块链技术所串接的分布式账本能让两方有效记录交易,且永久查验此交易。
区块链中包含了三个基本概念。
●交易(Transaction):如在账本中添加一条转账记录,是对账本的操作,从而导致账本状态的一次改变。
●区块(Block):对当前账本状态的一次共识,区块中记录一段时间内发生的所有交易和状态的结果。
●链(Chain):整个账本的状态变化的日志记录,将区块按照时间顺序串联而成。
区块链本质上是一种分布式账本,该账本只允许添加记录,不允许删除记录,账本数据的底层表示是一种特殊的链式结构,这也是“区块链”名字的由来。底层的链式数据结构由一个个区块串联而成(见图1-24),类似数据结构中的链表,每一个节点都包含了指向上一个节点的指针,区块链中每一个区块都包含了上一个区块的哈希值,这个哈希值可以看作哈希指针,表示当前区块“指向”了上一个区块,最终一个个区块根据哈希指针有序串联起来,形成区块链。当新数据产生,即当发生一笔新的交易时,必须要放入一个新的区块中,同时这个新区块(以及块内交易)的合法性可以通过计算哈希值的方式快速校验。任意参与方都可以提议一个新的区块,但是必须要通过共识算法来使所有参与方对最终选择的区块达成一致。
●图1-24 区块链结构示例
一般情况下,可以将区块链当作一个状态机(见图1-25),区块链中的数据集合可以看作状态机的当前状态,而每次交易都会使得区块链中原有的数据集合发生变化,可以认为试图改变一次状态机的状态,而每次共识生成的区块就是参与者对区块链中交易导致的状态改变的结果进行确认。
●图1-25 区块链状态机
以比特币为例来具体看其是如何使用区块链技术的。首先,参与者要发起一项交易时,会将交易通过比特币网络进行广播并等待确认。网络中的节点会收集待确认的交易记录并打包进一个候选区块中(该区块同时包含上一个区块的哈希值);接着,节点会试图寻找一个随机值放到候选区块中,使得候选区块的哈希结果满足一定的条件(哈希小于某一值)。密码学中的哈希算法能够确保这个随机值的搜索过程需要一定的时间去进行计算尝试。
节点一旦搜索到满足条件的随机值后,便会将这个候选区块在比特币网络中进行广播,其他节点收到候选区块后,将对其进行验证,若验证通过,符合约定条件,便承认该候选区块的合法性,并将其添加到节点自身维护的区块链中。当整个比特币网络中大部分节点都承认该区块的合法性,并将其添加到自身维护的区块链中时,便认为该区块被网络所接受,区块中包含的交易记录也随之确定。
上述只是区块链工作流程的一个简要过程,在该过程中使用了密码学的哈希算法来产生一个合法的区块,但是实际中区块链还涉及多种密码学算法,而密码学是构建区块链信任体系的基石,为区块链提供了5种信任能力。
●保密性:通过加密算法,防止未授权的信息泄露。
●认证性:通过签名或认证算法,确认信息发送方的身份和区块链上信息的来源。
●完整性:通过哈希或者签名算法,确认数据未被篡改,验证区块链的状态。
●不可否认性或抗抵赖性:通过签名算法,防止否认已经做过的事情。
●访问控制:确保谁在什么条件下可以做什么事情,保证区块链上的加密数据只被授权用户看到。
随着密码学相关技术的不断发展,现在同态加密、零知识证明和安全多方计算等密码学技术可以为区块链提供密态计算、密态验证和分布式密钥管理等能力,为区块链更多场景提供信任基础。
2.区块链安全/隐私保护需求
区块链是目前安全领域的前沿技术,其通过多种不同的密码学技术构建了一个去中心化的信任机制,使其具有了防篡改、公开可验证、可溯源等特点,但是目前绝大多数的区块链平台中,任何节点都可以访问区块链上的所有数据,所以区块链上的隐私安全问题尤为突出,也是目前区块链领域的重要研究热点。
为了保护数据隐私,区块链需要满足两个条件。
●区块链中交易与交易之间的联系应该不可见或者不可被发现。
●每一笔交易的具体内容,即交易涉及的具体数据应该只能被交易的参与方获知。
根据接入区块链网络的不同限制条件,大致上可以将区块链划分成为三种类型,分别是公有链、联盟链和私有链,其中联盟链和私有链都对加入节点有着不同程度的要求,其链上数据的隐私保护要求一定程度上可以通过访问控制机制达到,而公有链上的数据则对于任意参与方来说没有任何额外的限制便可以随意访问,因此其隐私保护的需求具体可以划分成两种,分别是身份隐私和数据隐私。
身份隐私指的是要保护交易与参与者真实身份之间的联系,以及用户与用户之间的交易关系。比特币等目前主流区块链平台提供的是以用户公钥哈希值作为用户身份的,因为哈希值可以看作一串伪随机值,所以从一定程度上隐藏了用户的真实身份,但是即使用户每一次都使用随机或伪随机的账户地址发起交易,其所能提供的身份匿名也是有限的。通过监控未加密的区块链网络,遍历、搜索区块链网络上的数据,实施一些行为分析策略或KYC政策(Know You Customer Policy)都有可能获得区块链网络用户的真实身份信息。
交易隐私则是要保护一笔交易的主要内容,如交易金额、交易模式等,这些交易内容应该只能被一部分特定用户所知晓,而对于整个公有链上其他用户无法得到关于该交易内容的任何有效信息。交易隐私对于许多基于区块链的应用程序有着十分重要的意义,例如,基于区块链的电子病历系统中,就应该对用户的详细病历记录提供不同等级的保护措施,以防止个人敏感信息泄露给其他任何用户。
3.密码学对应的解决方案
(1)混币技术
在区块链的一笔交易中,交易的发起者和接收者之间是存在联系的,攻击者通过对区块链上的公开数据进行相关分析,就有可能得到部分关于交易参与者身份的隐私数据,因此需要将交易发起者和接收者之间的联系切断,而混币技术可以将交易双方的关系进行混淆处理,混币技术主要针对类似比特币的数字货币应用,其不用对比特币的协议进行修改,便可以在一定程度上提高区块链上匿名性的手段。混币技术的基本思想是将多笔交易合并成一笔交易,将多个参与者的比特币混合在一起共同支付、转账,这一过程将破坏交易的发起者和接收者之间的链接关系,如图1-26所示,用户1和用户3原本的支付对象分别是用户2和用户4,而使用混币技术后,用户1和用户3共同发起一笔交易,混淆了用户1的真实交易者是用户2还是用户4。
●图1-26 混币技术
根据是否需要可信第三方的参与,混币技术可以分为中心化混币和去中心化混币。中心化混币是依赖一些可信的第三方平台为用户提供可靠的混币服务,如Bitcoin Fog、Send shard等平台,这些平台通过在交易过程中收取一定的手续费进行盈利,原则上不会存储用户的任何交易记录,但是依旧有可能存在恶意平台窃取用户资料的可能,同时在混币服务完成前,平台方仍需要存储未完成交易的部分信息,此时依旧存在较高的交易细节被黑客窃取的风险。此外中心化的混币服务还存在用户交易等待和通信延时较高、中心化服务器容易遭受单点故障、高额手续费等问题。
去中心化混币技术的典型代表是CoinJoin交易,该交易是一种特殊的交易类型,其基本思想便是“当你想产生一笔交易时,找到一群也想产生交易的人,共同产生一笔交易”。CoinJoin交易是一个标准多签名交易,每个参与者都匿名提供自己的输出地址,同时检查其是否被包含在交易输出中,如果没有被包含则拒绝签名,所有参与者都完成签名后,该笔交易就能发布到区块链上,其余节点无法正确判断输入地址与输出地址之间的具体对应联系。但是其内部不可链接性无法得到保证,交易的参与者可以知道交易的具体细节,即输出地址所对应的具体输入地址。
(2)环签名技术
混币技术能一定程度上实现身份匿名,但是其交易完成的延时不可控,需要等待多个交易发起者共同参与,而借助环签名技术能够有效地解决这个问题。环签名技术使得用户只需要收集多个用户的公钥,再结合自己的公私钥便可以对一笔交易进行签名,而对外表现则是多个用户对一笔交易进行了共同签名,同时无法确切知晓具体的签名者是公钥集合中的哪一个,如图1-27所示。
●图1-27 环签名示意图
在区块链上常用的环签名技术是可链接环签名技术,该变体方案能够检测两个签名是否由同一个用户产生。以此技术为基础便产生了CryptoNote方案,该方案使用可链接环签名算法。可链接性指的是由一个私钥签发的两个签名是可以被关联起来的,因此只要一笔交易被双花,即一笔交易被一个私钥签发两次,是可以被发现的。因此,可链接性能有效防止双花攻击,同时因为环签名技术的匿名性,交易参与者的真实身份也能很好地隐藏起来。在CryptoNote方案中,交易的发起者会使用交易接收者的公钥和随机数,产生一个一次性隐匿地址和随机数,而接收方可以根据随机数和私钥计算出隐匿地址,通过比较链上和本地计算的隐匿地址从而确定这笔交易是否是属于自己的。
在后续的发展中,CryptoNote方案(见图1-28)与可信交易方案(Confidential Trans-action)结合,提出了RingCT方案,在使用环签名技术隐藏身份信息的基础上,进一步对交易的金额进行了隐藏,同时达到了保护交易隐私和身份隐私的目的,极大程度地保护了用户的数据隐私。但是该类基于环签名的方案也引入了诸多问题,例如,环签名的签名大小会随着环的大小,即公钥集合的数量增长而增长,同时为了保障安全性,环成员数量通常选取较大,造成单笔交易的存储开销较大;同时,隐藏交易金额虽然保障了数据隐私,但是也给交易验证带来了新的困难等。
●图1-28 CryptoNote方案
(3)零知识证明技术
零知识证明是一种密码学技术,该技术可以在证明某一命题的正确性的同时,没有泄露任何额外的知识,而非交互零知识证明(NIZK)可以使证明者在只发送一条信息的前提下,说服验证者相信某个命题的正确性,因此NIZK技术适合在区块链中以匿名和分布式的方式验证交易的正确性。基于非交互式零知识证明技术,先后提出了Zerocoin方案和Zerocash方案,该类方案是对比特币等数字货币应用的密码学扩展,增强了比特币协议的隐私性,使其支持完全匿名交易,能够抵抗交易图分析方法等手段。
如图1-29所示,在Zerocoin中,存在一笔铸币交易将比特币转换成零币(Zerocoin),该过程称为铸币过程,之后在要消费时,再使用赎回交易产生一枚全新的、没有历史信息的比特币,将两枚比特币之间的联系切断,以此实现匿名。非交互式零知识证明用于在不泄露Zerocoin信息的前提下证明一枚Zerocoin的合法性,从而能够产生一枚等值的比特币。但是该方案存在诸多缺陷,如交易发起者和交易接收者都拥有交易的隐私信息,交易发起者也可以发起赎回交易或追踪交易的后续交易流,该方案不能有效地保护交易的具体金额,仅保护身份信息。
●图1-29 Zerocoin原理
而Zerocash方案克服了Zerocoin方案中的诸多缺陷,尤其是无法完全保护交易隐私的问题,因此在Zerocash方案中能够有效保护一笔交易中交易双方的身份信息、交易金额等,切实有效地保护身份隐私和交易隐私。在Zerocash方案中使用承诺协议和零知识证明技术来隐藏用户身份和交易金额,使其可以支持任意金额的交易,同时进行公开的验证。在消费交易中,Zerocash使用接收者的公钥产生新的货币序列号,保证只有持有对应私钥的情况下才能继续消费货币,同时也保证发送者无法再追踪接收者。交易的发起者会使用接收者的公钥加密交易金额等信息,隐藏了金额、接收者地址等隐私信息。