2.3 非对称加密实现了身份验证,解决信任问题
区块链也被称为信任链,通过身份认证建立对现代商业至关重要的信任关系。在前面的章节中,我们提到,区块链用密码学方法解决了信任问题,并实现了安全和不可更改的特性。
在区块链的分布式网络里,节点之间进行通信并达成信任,通过数字签名实现身份的确认以及信息真实性、完整性的验证。所以,数字签名的作用有二,一是确定消息是由发送方签名并发送出来的,二是确认消息的完整性。数字签名的完成过程涉及哈希算法、非对称加密等加密技术,这些加密技术是区块链实现信任的基础。
区块链技术中的哈希算法
区块链的数字签名在加密时所涉及的两个核心技术分别是哈希算法和非对称加密。
哈希算法,通常也被称作散列函数。它可以把任意长度的明文二进制数据通过散列函数算法,变换成较短的固定长度的二进制数据,这个二进制值就被称为哈希值。区块链技术的代表—比特币所使用的哈希算法是SHA-256,其安全性非常高。
哈希算法拥有以下特点:
正向快速:通过哈希算法能在有限时间和有限资源内,将任意长度的明文快速计算出哈希值。
逆向困难:给定若干哈希值,在现有计算条件下,有限的时间内几乎无法通过哈希算法逆推出明文。
雪崩效应:哪怕原始输入信息修改一丁点儿,通过哈希算法计算得到的哈希值就会有很大的不同。所以,数据是否被篡改过,是否完整,都可以通过它的哈希值进行检验。
长度一致:长度不一样的信息经过散列计算后,长度是一致的。
避免冲突:不同的明文,通过散列计算后不会得到相同的哈希值,避免发生冲突,如图2-7所示。
图2-7 内容更改后,哈希值完全改变
哈希算法在区块链技术中的应用主要有以下几个优势:第一,加密私钥,保证密钥安全。第二,验证数据区块,形成唯一的交易ID。哈希值是一段固定长度且极其紧凑、数据唯一的数值表示形式,可作为区块ID,并实现数据验证功能。第三,实现工作量证明。哈希函数的难题友好性构成了基于工作量证明(Proof of Work,PoW)的共识算法的基础。通过哈希算法计算得出的符合特定要求的哈希值,可以作为共识算法中的工作量证明。
哈希算法在日常的应用中也比较常见,比如我们在验证下载的文件是否完整时,哈希值就是一个验证手段。我们下载的文件哪怕有一个字节不一样,也会得出不一样的哈希值。另外,我们在进行网站注册时设置的密码,一般也会通过哈希算法计算后进行密文存储,而不会用明文存储,以防止数据库泄露。验证时,用户输入的密码在通过哈希算法计算后和数据库里的哈希值进行对比来确定身份。这两个功能就分别是哈希算法对数据完整性验证和用户身份验证的应用。
什么是非对称加密
非对称加密是对加密和解密过程的一种描述。
加密,是通过一种算法,对原始的明文信息进行转换,转换而成的密文信息是一组随机数。解密,是密文信息的接收者通过密钥进行解密,从而还原得到原始明文再进行阅读。密钥就是加密和解密过程中的那把钥匙。
如果加密和解密使用同一把钥匙,那就是对称加密。对称加密的好处在于加密和解密的速度快,但是对称算法的安全性依赖于密钥,泄露密钥就意味着任何人都可以对其发送或接收的消息进行解密,所以密钥的保密性至关重要。
非对称加密的密钥有两把:一把叫公钥;一把叫私钥。其中公钥可以公开,私钥则具有私密性。通信时,发送方利用公钥对信息进行加密,接收方通过私钥对信息进行解密,反之亦然。因为加密与解密用的是两把不同的密钥,所以这种算法也被称为非对称加密算法。
非对称加密在通信前不需要先同步私钥,避免了在同步私钥过程中被黑客盗取信息的风险。例如,银行颁发给个人用户的私钥就存储在个人的U盾里。非对称加密算法一般比较复杂,执行时间相对较长,好处在于无密钥的分发问题。
非对称密码系统的安全性基于一些困难的数学问题,比如,基于大整数的因式分解问题、椭圆曲线问题等数学问题,也就是说,密码的解密过程要远远比验证答案费时。分解质因数做起来很难,但如果给出几个素数求它们的乘积,那就简单多了。这就是一个典型的不对称算法。事实上,基于大整数的因式分解问题的密码学算法即是RSA加密算法的基本原理,而椭圆曲线密码学算法(Elliptic Curve Cryptography,ECC)则属于非对称加密算法。
区块链中的非对称加密技术解决了身份验证问题
非对称加密技术除了可以保护明文和密钥,另一个重要用途就是进行身份验证,使分布式存储系统得以实现。在区块链系统中没有中心节点来确认用户的身份,各个单一节点是对等的,都要向全网公示自己的身份。所以,用户在公示身份的同时不能把密钥向所有人公开,如果有人拥有你的私钥,则完全可以顶替你的身份。
于是,我们需要这样一种机制,能够让我们在不公开私钥的前提下,公示自己的身份。也就是说,尽管别人不知道我所拥有的私钥,但是他知道我拥有这一把钥匙。
非对称加密可以实现对密文接收者的身份验证。发送者通过公钥对明文进行加密,这个密码只有拥有相应私钥的人才能解开。那么只要接收者把这道题解开了,别人就能通过答案来验证他是否是私钥的拥有者。
在区块链的交易过程中,全网络的任何人都可以参与密文交易的验证,只有当特定的人通过解密证明了自己时,他发起的新交易才会得到全网的传播和确认。一般人虽然解不开难题,但如果某人给出了正确的答案,所有人都能快速验证这一解答是否正确。
在区块链中,非对称加密的重要应用就是数字签名—保证内容的真实性和合法性,保证区块里的任何数据都没有经过篡改。整个签名过程如图2-8所示,哈希算法和非对称加密都在其中有相应应用。
图2-8 区块链消息传输过程中的加密和解密过程
图2-8描述了密码算法在区块链消息传输过程中的应用。在消息内容的基础上,发信人首先对这个消息做哈希运算,形成区块摘要;然后用私钥对摘要进行加密,形成签名。接着,收信人也要对消息进行哈希运算,然后用相应的公钥解密数字签名,再对比两个哈希值。如果两个值相同,就代表这个消息是发信人本人发出的而且没有被篡改过。
非对称加密技术在医疗健康应用中的意义
在区块链技术中,所有的规则事先都以数学算法的形式进行规范,人们完全不需要知道交易的对方是谁,更不需要求助中心化的第三方机构来为交易进行背书,只需要信任数学算法就可以建立互信。实质上是算法在为人们创造信用,达成共识背书。在现有的区块链系统中,根据实际应用需求已经衍生出多私钥加密技术,以满足多重签名等更为灵活和复杂的场景。
医疗保健生态系统是复杂的,有多个利益相关者,他们在信息系统中有非常复杂的交互动作。在医疗健康领域中,要解决数据共享和隐私之间的矛盾,挖掘医疗健康数据的潜在价值,对医疗健康从业者来说是一个非常大的挑战。医疗信息和数据的权限管理至关重要,但这一过程必须足够简单、成本更低,才能解决效率低下的现状。
尽管建立中心化数据库在技术上可能更简单,但是具有隐私最大化算法的分布式区块链网络可以最大化确保数据处理的安全性,符合HIPAA(《美国健康保险流通与责任法案》)、机密性和其他监管及道德层面的要求。
创建安全和可信的护理记录
信任是医疗机构为患者提供医疗服务的基础。患者需要信任医疗机构人员提供了适当的医疗照护,医护人员需要相信患者诚实地执行了医嘱。医疗区块链项目可以通过非对称加密手段为医患提供身份验证服务。
在医患双方的身份验证成功后,相关项目可以立即按事先编辑的智能合约执行。区块链技术的应用可以提高医疗处方的执行效率和保险的赔付效率。医生在为患者开处方时,将处方药品记录在区块链上,患者可以实时查看自己的药方以及公开透明的药物价格。当患者出现死亡或者发生医疗事故等异常情况时,链上任何知道该事实的可信方可以将该信息添加到系统中,从而提高记录的准确性和可信度。
虽然许多不同的工具可以定期对用户进行身份验证,但医护人员还必须确保用户的身份证明是正确的,并在特定时间点反映用户的状态。这对医疗保健服务提供者尤其重要,因为围绕解决医疗行为中的欺诈、浪费和滥用等问题,已成为系统提供者和付费者最为关注的问题。此外,如果有不准确的医疗记录,患者可能会质疑提供给他们的医疗服务的可信度和价值。
医疗健康记录等敏感数据泄露的风险非常高。区块链的身份识别和治理规则,可以预先定义用户的访问权限和控制权限,以确保医疗健康记录的隐私级别与透明度,并确保只有有资格的参与方才能看到必要的数据。
记录病人的授权意见
对于患者的医疗信息记录共享,最为关键的是要获得患者的同意。这是医疗信息数据共享必须遵守的底线和规则。
通过在不可更改的区块链信息中捕获患者的同意授权语句,可以保证医疗保健专业人员放心地使用这些数据。此外,患者还可以在进行手术或接受护理行为前,添加知情同意书—区块链会安全地保存这些授权信息。医护人员可以根据这些指示采取行动,区块链技术可以根据身份验证后的授权信息,提供医疗健康记录的访问控制决策,以确保系统遵从患者的意愿。