3.4 数字证书
数字证书主要应用于互联网通信中的身份认证,当用户B验证用户A的身份时,用户B可以计算数字签名的验证公式,但无法确认用于验证签名的公钥真的是A的公钥,而不是来源于一个黑客。数字证书并不是数字身份证,而只是可信中心盖在用户A的公钥上的一个“数字印章”。它通常是由CA发行的,人们可以在网上借助它来辅助识别对方的身份。区块链系统也通过数字证书来验证用户身份,以此来实现用户操作的不可抵赖性。
3.4.1 数字证书的基本介绍
数字证书采用非对称密码体制,任意一个用户A均需设定一个不公开的私钥,可用它对消息进行签名,同时设定一个对外公开的公钥,用于其他用户对他的签名进行验证。当用户A的公钥对外公开时,敌手可能伪造一个假的公钥,谎称是用户A的公钥并实施行骗。因而,每个合法用户的公钥在使用前,均需由CA用CA的私钥进行签名。被CA签名的消息通常包含用户ID、用户的公钥、当前时间戳、使用周期、使用场景等必要信息,上述消息连同CA的签名一起被定义成数字证书,以文件的形式存放在用户的终端设备中。
当用户A需要对某个消息M进行签名时,用户A会将消息M、用户A对消息M的签名S、用户A的公钥、CA向用户A颁发的数字证书一起发送给验签者B。验签者B首先用CA的公钥(每个用户的终端设备中均已预先安全植入了CA的公钥)验证数字证书的正确性,从而确信用户A的公钥是正确的,随后使用用户A的公钥验证签名S的正确性,从而确信S是用户A对消息M的签名。
数字证书通常由独立的证书发行机构发布,不同机构发布的数字证书各不相同,各种数字证书可提供不同级别的可信度。我国的CA认证授权是由中华人民共和国工业和信息化部所颁发的,在全国范围内只有几十家企业具有数字认证的资质。
3.4.2 数字证书的应用
在最早的比特币网络中,对于每个账户地址来说,只要在经过其私钥签名之后,就能验证通过然后顺利地花费掉比特币,忽略或者不检查用户的真实身份。然而在实际的商业环境中,对节点或者用户的接入有着较为严格的审核机制,不能允许任何节点随意接入网络,否则会造成商业机密泄露或者其他不可预知的问题,所以在区块链系统中,对于节点的接入需要引入数字证书来确定用户或者节点的身份。
在区块链系统中,节点的接入按照接入权限的不同可以分为许可型网络和非许可型网络。例如,在实际的商业联盟链区块链系统中,系统不可能允许其他节点随意接入系统,否则将会造成商业数据丢失。因此,在P2P组网的过程中,我们可以通过数字证书来解决该接入权限的问题。节点首先需要向联盟机构申请一个数字证书,并保存到本地,当需要与其他节点连接时,使用数字证书做签名和验证,以保证节点连接的目标机器为已认证许可的机器。这样,一旦有作恶节点接入,当前节点就可以立即阻止其接入,以防止其非法接入和窃取数据。