具体实施方式
本说明书旨在提出一种,签约用户在线签署发布在区块链上的电子文书时,通过调用部署在区块链上的智能合约,对待签署的电子文书进行内容验证,以确认待签署的电子文书是否被篡改的技术方案。
在实现时,可以在区块链上提前部署用于对电子文书进行在线展示的智能合约,并在该智能合约中声明用于对电子文书的原始内容进行内容验证的验证程序。
而签约者在需要在线签署发布在区块链上的电子文书时,可以通过客户端发起一笔用于触发对电子文书进行在线展示的交易。而区块链中的节点设备在收到该交易后,可以发起对上述智能合约的调用,执行该智能合约中声明的验证程序,从区块链中读取上述电子文书的原始内容,并基于读取到的电子文书的原始内容对待签署的电子文书进行内容验证,然后将读取到的电子文书的原始内容以及上述内容验证的结果返回给签约用户进行展示。
通过以上技术方案,由于用户可以通过调用智能合约的方式,来触发智能合约从区块链中读取电子文书的原始内容,基于读取到的电子文书的原始内容对电子文书进行内容验证,并将内容验证结果和电子文书的原始内容返回给签约用户进行展现;因此,签约用户对电子文书进行在线签署之前,能够确认待签署的电子文书的内容是否发生篡改,进而可以提升在线签署电子文书时的安全等级。
下面通过具体实施例并结合具体的应用场景对本说明书进行描述。
请参考图1,图1是本说明书一实施例提供的一种基于区块链的内容验证方法,应用于区块链中的节点设备,执行以下步骤:
步骤102,接收签约用户通过客户端发起的目标交易;其中,所述目标交易用于触发对目标电子文书进行在线展示;
步骤104,响应于所述目标交易,调用与内容验证对应的智能合约,执行所述智能合约中声明的内容验证程序,从区块链中读取所述目标电子文书的原始内容;以及,基于读取到的所述目标电子文书的原始内容对所述目标电子文书进行内容验证,并将内容验证结果以及所述目标电子文书的原始内容返回给所述客户端向所述签约用户展示。
在本说明书描述的区块链,具体可以包括任意类型的区块链网络;例如,在实际应用中,可以采用共有链、私有链、或者联盟链中的任意一种。
例如,在示出的是一种实施方式中,上述区块链网络具体可以是一个由主链,以及若干子链构成的联盟链。
在本说明书中所描述的交易,是指用户通过区块链的客户端创建,并需要最终发布至区块链中的一笔数据。
其中,区块链中的交易,存在狭义的交易以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的比特币区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户向区块链发布的一笔具有业务意图的业务数据;例如,运营方可以基于实际的业务需求搭建一个联盟链,依托于联盟链部署一些与价值转移无关的其它类型的在线业务(比如,租房业务、车辆调度业务、保险理赔业务、信用服务、医疗服务等),而在这类联盟链中,交易可以是用户在联盟链中发布的一笔具有业务意图的业务消息或者业务请求。
而上述目标交易,则是指由用户通过客户端创建的,用于触发对区块链上部署的智能合约进行调用的调用消息或者调用请求。
上述电子文书,可以包括任意形式的以数字形式存在的待签约文本;例如,在一个例子中,上述电子文书具体可以是电子合同。
在本说明书中,签约用户可以基于个人的身份信息,向CA机构申请CA证书。而CA机构收到签约用户的CA证书申请后,可以基于签约用户提交的身份信息,对签约用户进行身份认证,并在身份认证通过后,可以为上述签约用户颁发CA证书。
其中,签约用户向CA机构申请CA证书的具体过程,在本说明书中不再进行详细描述;
例如,在实际应用中,签约用户用向CA机构提交身份信息申请CA证书,而CA机构在对签约用户的身份信息验证通过后,可以为签约用户分配公钥私钥对,并将分配的公钥私钥对与该签约用户的身份信息进行绑定后,使用CA机构持有的私钥进行电子签名,形成CA证书颁发给签约用户。
在本说明书中,对于颁发给签约用户的CA证书,可以发布至区块链,在区块链的分布式数据库中进行存储;
例如,在一个例子中,CA证书在将CA证书颁发给签约用户后,签约用户可以通过客户端以交易的形式在区块链中发布上述CA证书(CA证书以密文的形式携带在交易中),而区块链中的节点设备,在收到上述CA证书后,可以发起对上述CA证书进行共识处理,并在共识通过后,将上述CA证书收录存储至上述区块链的分布式数据库。
在示出的一种实施方式中,为了提升签约用户的CA证书的使用安全,当CA机构为签约用户颁发的CA证书经过共识处理,被成功收录存储至区块链的分布式数据库之后,可以为链上存储的CA证书设置访问权限,来限制该签约用户以外的用户账户进行访问。
也即,通过为链上存储的CA证书设置访问权限,来确保只有该签约用户本人,能够具有访问链上存储的CA证书的权限,对该CA证书进行查看、操作。
例如,在实现时,可以为链上存储的CA证书预配置访问权限列表,并将上述签约用户的身份信息写入上述访问权限列表,用于指示只有该签约用户能够具有该CA证书的访问权限;比如,在区块链中,通过利用签约用户的公钥,或者公钥衍生数据(如对公钥进行计算得到的账户地址)来指示用户的身份,因此可以将上述签约用户的公钥或者公钥衍生数据,配置为唯一能够访问上述CA证书的合法身份。
在本说明书中,区块链的运营方,可以依托于上述区块链,在区块链上部署对存储在区块链上的电子文书进行电子签名的在线业务,使得签约用户在签署电子文书时,可以不再需要基于持有的私钥,手动的对电子文书进行电子签名操作,而是在链上在线完成针对电子文书的电子签名操作。
在实现时,区块链的运营方,可以开发用于对区块链上的电子文书进行在线电子签名的智能合约,在该智能合约中声明用于对电子文书进行电子签名操作的电子签名程序。
其中,上述电子签名程序具体可以是声明在智能合约中的,与对电子文书进行电子签名操作的执行逻辑相关的程序代码(比如一些可供调用的程序方法或者函数)。
而对于开发完成的上述智能合约,区块链的运营方可以通过区块链中的任一节点设备,将该智能合约发布至区块链。而区块链中的节点设备,在收到上述智能合约后,可以发起对上述智能合约进行共识处理,并在共识通过后,将上述智能合约收录存储至上述区块链的分布式数据库。
后续,签约用户可以通过客户端接入区块链中的任一节点设备,向区块链中发布用于触发对目标电子文书进行电子签名操作的目标交易,来发起对已经部署完成的智能合约的调用,触发执行上述智能合约中声明的电子签名程序,来在线的对上述目标电子文书进行电子签名操作。
在本说明书中,区块链的运营方,除了可以依托于上述区块链,在区块链上部署对存储在区块链上的电子文书进行电子签名的在线业务以外,还可以依托于上述区块链,在区块链上部署用于触发对存储在区块链上的电子文书进行在线展示的在线业务。
在实现时,区块链的运营方,可以开发用于对区块链上的电子文书进行在线展示的智能合约,在该智能合约中声明用于对电子文书进行内容验证的验证程序。
其中,上述验证程序具体可以是声明在智能合约中的,与对电子文书的原始内容进行验证操作的执行逻辑相关的程序代码。
而对于开发完成的上述智能合约,区块链的运营方仍然可以通过区块链中的任一节点设备,将该智能合约发布至区块链。而区块链中的节点设备,在收到上述智能合约后,可以发起对上述智能合约进行共识处理,并在共识通过后,将上述智能合约收录存储至上述区块链的分布式数据库。
后续,签约用户可以通过客户端接入区块链中的任一节点设备,向区块链中发布用于触发对目标电子文书进行在线展示的目标交易,来发起对已经部署完成的该智能合约的调用,触发执行上述智能合约中声明的验证程序,对上述目标电子文书的内容进行验证,并在内容验证通过后,向上述客户端返回上述目标电子文书以及上述目标电子文书的内容验证结果(比如电子文书内容是否被篡改)。
其中,需要说明的是,以上描述的用于对区块链上的电子文书进行在线电子签名的智能合约、和用于对区块链上的电子文书进行在线展示的智能合约,在实际应用中,可以整合为一个智能合约在区块链上进行部署(图3中示出的为将上述两种智能合约整合成为一个智能合约),也可以作为两个不同的智能合约在区块链上进行部署,在本说明书中不进行特别限定。
以下以上述目标电子文书为签约用户需要签署的电子合同为例进行说明。
在示出的一种实施方式中,上述区块链具体可以采用的主链-子链的架构,可以包括一主链(Main Chain)和若干子链(Child Chain)。其中,上述区块链网络中的子链的数量,可以基于实际的业务需求进行规划,在本说明书中不进行特别限定。
请参见图2,图2为本说明书示出的一种区块链的架构图。
如图2所示,在示出的一种实施方式中,上述区块链可以按照收录存储的数据类型,划分为“存证链”、“合同摘要子链”(第一子链)、“合同子链”(第二子链)、“CA证书子链”(第三子链)。
上述存证链,可以是上述区块链的主链;也即,可以将上述区块链的主链作为存证链,用于对签约用户在区块链上完成的一系列操作相关的交易数据进行存储存证,以便于未来对签约用户的操作行为进行追溯;其中,区块链的运营方部署的上述智能合约,可以在共识通过后,收录存储至主链。
上述合同摘要子链,用于存储电子合同的摘要数据(对合同内容进行哈希计算得到的hash值)和电子合同的原始内容的访问地址。
上述合同子链,用于存储电子合同的原始内容。
其中,在示出的一种实施方式中,为了提升电子合同的原始内容的数据安全,可以为链上存储的电子合同的原始内容设置访问权限,来限制上述智能合约以外的用户账户进行访问。也即,通过为链上存储的电子合同的原始内容设置访问权限,来确保只有上述智能合约,能够具有访问链上存储的电子合同的原始内容的权限,对该电子合同的原始内容进行查看、操作。
上述CA证书子链,用于存储由CA机构颁发给签约用户的CA证书。
其中,需要说明的是,以上描述的子链划分方式,仅为示例性的,在实际应用中,可以基于实际的需求,对以上示出的各个子链进行进一步的细分,也可以对以上示出的多个子链进行合并处理;
例如,可以将上述合同摘要子链,进一步划分为“合同摘要子链”和“合同地址子链”,在合同摘要子链中存储电子合同的摘要信息,在合同地址子链中存储电子合同的访问地址;又如,也可以将上述合同摘要子链和合同子链,合并为同一个子链,将电子合同的摘要信息、访问地址、原始内容均存储在该子链中。
以下以采用图2中示出的区块链的架构,来详细描述签约用户对电子文书进行签约的流程。
请参见图3,图3为本说明书示出的一种签约用户对电子文书进行签约的流程图。
如图3所示,在本说明书示出的电子文书的签约流程中,可以划分为电子合同上传、签约用户身份认证、签约用户合同确认、签约用户电子签名等四个阶段。
1)电子合同上传
如图3所示,电子合同的起草方,在完成电子合同的起草后:
一方面,可以通过客户端将电子合同的原始内容上传给电子合约***,而电子合约***可以进一步以交易的形式在上述合同子链中发布电子合同的原始内容(电子合同的原始内容以密文的形式携带在交易中);而上述合同子链中的节点设备,在收到上述电子合同的原始内容后,可以发起对上述电子合同的原始内容进行共识处理,并在共识通过后,将上述电子合同的原始内容收录存储至上述合同子链的分布式数据库。
当上述电子合同的原始内容被成功收录至上述合同子链的分布式数据库后,上述合同子链可以向上述电子合约***返回一个保存成功的通知消息,将上述电子合同的原始内容在上述合同子链上的访问地址,返回给上述电子合约***;而上述电子合约***在收到上述合同子链的反馈后,可以向上述客户端返回一个上传成功的通知消息,将上述电子合同的原始内容在上述合同子链上的访问地址,进一步返回给上述客户端。
例如,上述电子合同的原始内容的访问地址,具体可以包括收录该电子合同的原始内容的交易的hash值,以及收录该交易的区块的区块编号等信息。
在示出的一种实施方式中,为了提升电子文书的使用安全,当电子文书的原始内容经过共识处理,被成功收录存储至上述存证链的分布式数据库之后,可以为链上存储的电子文书的原始内容设置访问权限,来限制除了以上描述的智能合约以外的用户账户进行访问。
也即,通过为链上存储的电子文书设置访问权限,来确保只有链上部署的智能合约,能够具有访问链上存储的电子文书的原始内容的权限,对电子文书的原始内容进行查看、操作。
其中,为链上存储的电子文书的原始内容设置访问权限的具体过程,不再进行赘述。
另一方面,电子合同的起草方在通过客户端收到上述合同子链返回的电子合同的原始内容在上述合同子链上的访问地址后,还可以通过客户端计算该电子合同的摘要信息,并将该电子合同的摘要信息上传给电子合约***。而上述电子合约***,可以进一步以交易的形式在上述合同摘要子链中发布该电子合同的摘要信息和该电子合同的访问地址(均以密文的形式携带在交易中)。上述合同摘要子链中的节点设备,在收到上述电子合同的摘要信息和该电子合同的访问地址后,可以发起对上述电子合同的摘要信息和该电子合同的访问地址进行共识处理,并在共识通过后,将上述电子合同的摘要信息和该电子合同的访问地址收录存储至上述合同摘要子链的分布式数据库。
当上述电子合同的摘要信息和该电子合同的访问地址被成功收录至上述合同摘要子链的分布式数据库后,上述合同摘要子链也可以向上述电子合约***返回一个保存成功的通知消息,将上述电子合同的摘要信息和该电子合同的访问地址在上述合同摘要子链中的访问地址,返回给上述电子合约***。而上述电子合约***在收到上述合同摘要子链的反馈后,也可以进一步向上述客户端返回一个上传成功的通知消息,将上述电子合同的摘要信息和该电子合同的访问地址在上述合同摘要子链中的访问地址,进一步返回给上述客户端。
此时,电子合同起草方,成功将电子合同的原始内容、电子合同的摘要信息和该电子合同的访问地址,分别收录存储至不同的子链。
2)签约用户身份认证
如图3所示,签约用户可以通过客户端向上述电子合约***发送签约请求,发起对上述电子合同的在线签约;而上述电子合约***在收到该签约请求后,可以响应该签约请求,对该签约用户进行身份认证。
其中,对签约用户进行身份认证的具体方式,在本说明书中将不进行特别限定;
例如,在一个例子中,上述签约请求可以基于签约用户持有的私钥进行电子签名操作,而电子合约***可以通过与签约用户持有的私钥对应的公钥对上述签约请求的电子签名进行验证,以确定该签约请求是否由持有该私钥的签约用户本人发起的签约请求。当然,在实际应用中,也可以借助人脸识别等其它形式的认证技术,来完成对上述签约用户的身份认证,在本说明书中不再进行一一列举。
当电子合约***完成对上述签约用户的身份认证后,可以生成一条该签约用户已经通过身份认证的认证记录,并根据生成的认证记录构建一笔交易,然后将该交易在上述存证链(即主链)上进行发布,以发起对已经部署完成的,用于对区块链上的电子合同进行在线展示的智能合约进行调用,来触发在线展示需要签署的电子合同。
而上述存证链中的节点设备,在收到上述交易后,可以发起对上述交易进行共识处理,并在共识通过后,将上述交易收录存储至上述存证链的分布式数据库进行存证,然后向上述电子合约***返回上述交易在存证链上的访问地址。后续,电子合约***可以基于该交易在存证链上的访问地址,对该签约用户的身份认证结果进行追溯查询。
3)签约用户合同确认
请继续参见图3,上述电子合约***根据生成的上述认证记录构建的交易共识通过,在上述存证链上完成存证后,此时上述存证链上的节点设备,可以立即触发调用已经部署完成的,用于对区块链上的电子合同进行在线展示的智能合约,执行该智能合约中声明的验证程序,对该电子合同的原始内容进行验证,以确定该电子合同的原始内容是否发生篡改。
在示出的一种实施方式中,在触发调用上述智能合约之前,首先确定该笔交易是否被成功存储至上述存证链;如果该笔交易被成功存储至上述存证链,此时再发起对上述智能合约的调用;也即,只有由用户发起的用于触发对上述电子合同进行在线展示的交易在上述存证链上完成存证后,才会触发调用上述智能合约。
在本说明书中,上述智能合约在执行上述验证程序时,首先可以从上述合同摘要子链中读取上述电子文书的摘要信息和上述电子文书的访问地址;
例如,在上述交易中,可以携带上述电子合同的摘要信息和上述电子合同的访问地址,在上述合同摘要子链中的访问地址,而上述智能合约可以基于该访问地址,从上述合同摘要子链读取上述电子合同的摘要信息和访问地址。然后,可以基于上述电子合同的访问地址,从上述合同子链中读取上述电子合同的原始内容;
例如,上述智能合约可以构建一笔用于查询电子合同的原始内容的交易,并基于持有的私钥对该交易进行电子签名;而在上述合同子链中,可以将该智能合约的公钥配置为具有访问权限的授权公钥。当该合同子链中的节点设备收到该交易后,可以基于上述授权公钥对该交易的电子签名进行验证;如果验证通过,表明该智能合约具有访问该合同子链中存储的电子合同的原始内容的访问权限,可以正常响应该笔交易,向该智能合约返回被查询的电子合同的原始内容。
进一步的,在从上述合同子链读取到电子合同的原始内容后,可以进一步计算出读取到的电子合同的原始内容的摘要信息;例如,以上述摘要信息为hash值为例,可以基于哈希算法对读取到的电子合同的原始内容重新进行哈希计算得到对应的hash值;然后,可以将重新计算得到的电子合同的原始内容的摘要信息,与从上述合同摘要子链读取上述电子合同的摘要信息进行匹配;如果重新计算得到的摘要信息,与从上述合同摘要子链读取上述电子合同的摘要信息匹配,表明从上述合同子链中读取到的电子合同的原始内容,与合同起草方最初上传至上述合同子链的电子合同的原始内容完全一致,并没有发生篡改;此时,该电子合同的原始内容通过了内容验证;反之。如果重新计算得到的摘要信息,与从上述合同摘要子链读取上述电子合同的摘要信息匹配,表明从上述合同子链中读取到的电子合同的原始内容,与合同起草方最初上传至上述合同子链的电子合同的原始内容不一致,可能发生了篡改;此时,该电子合同的原始内容未通过内容验证。
当完成针对上述电子合同的原始内容的内容验证后,上述智能合约可以将读取到的电子合同的原始内容,以及针对该电子合同的原始内容的内容验证结果,返回给上述电子合约***,再通过上述电子合约***返回给上述签约用户的客户端向签约用户进行在线展示,由签约用户对展示的电子合同的原始内容进行签约确认。
通过这种方式,使得签约用户在对电子合同进行在线签署之前,能够确认待签署的电子合同的内容是否发生篡改,可以能够避免对一些内容发生篡改的电子合同进行在线签署,进而可以提升在线签署电子文书时的安全等级。
在本说明书中,当签约用户对展示的电子合同的原始内容进行确认后,可以通过客户端向上述电子合约***发送一笔内容确认消息;而上述电子合约***在收到该内容确认消息后,可以响应该内容确认消息,根据该内容确认消息构建一笔交易,然后将该交易在上述存证链(即主链)上进行发布。
而上述存证链中的节点设备,在收到上述交易后,可以发起对上述交易进行共识处理,并在共识通过后,将上述交易收录存储至上述存证链的分布式数据库进行存证,然后向上述电子合约***返回上述交易在存证链上的访问地址。后续,电子合约***可以基于该交易在存证链上的访问地址,对该签约用户对上述电子合同进行的内容确认操作进行追溯查询。
4)签约用户电子签名
请继续参见图3,当签约用户对需要签署的电子合同的原始内容进行内容确认,并且该笔内容确认成功在存证链上完成存证后,签约用户可以通过客户端向上述电子合约***发送电子签名请求,发起对上述电子合同的在线电子签名。
上述电子合约***在收到该电子签名请求后,可以基于该电子签名请求来构建一笔用于触发对上述电子合同进行电子签名操作的交易,然后将该交易在上述存证链(即主链)上进行发布,以发起对已经部署完成的,用于对区块链上的电子合同进行在线电子签名操作的智能合约进行调用,来触发对需要签署的电子合同进行在线电子签名操作。
而上述存证链中的节点设备,在收到上述交易后,可以发起对上述交易进行共识处理,并在共识通过后,将上述交易收录存储至上述存证链的分布式数据库进行存证,然后向上述电子合约***返回上述交易在存证链上的访问地址。后续,电子合约***可以基于该交易在存证链上的访问地址,对该签约用户对上述电子合同发起的本次对上述电子合同的电子签名操作进行追溯查询。
在示出的一种实施方式中,在上述电子签名请求中,可以携带签约用户对上述电子合同进行电子签名的授权信息。相应的,电子合约***根据该电子签名请求构建的交易中,也会携带该授权信息,
其中,上述授权信息,具体用于指示将已经存储至上述CA证书子链上的该签约用户的CA证书的访问权限,授权给上述区块链上已经部署的用于对上述电子合同进行电子签名操作的智能合约。
需要说明的是,上述授权信息的内容形式,在本说明书中不进行特别限定;例如,在实际应用中,上述授权信息具体可以是一个任意形式的用于取得上述CA证书的访问权限的一个电子凭证;比如,字符串、密码或者其它形式的可供验证的电子凭证。
请继续参见图3,上述电子合约***根据上述电子签名请求构建的交易共识通过,在上述存证链上完成存证后,此时上述存证链上的节点设备,可以立即触发调用已经部署完成的,用于对区块链上的电子合同进行电子签名操作的智能合约,执行该智能合约中声明的电子签名程序,对该电子合同进行在线电子签名。
在示出的一种实施方式中,在触发调用上述智能合约之前,首先可以确定上述交易中是否携带上述授权信息;如果上述交易中携带上述授权信息,表明上述签约用户已经将存储在上述CA证书子链上的个人的CA证书的访问权限,授权给上述智能合约(即签约用户同意了由智能合约代替自己完成电子签名操作),此时再发起对上述智能合约的调用。也即,只有签约用户将个人的CA证书的访问权限授权给了上述智能合约后,才会触发调用上述智能合约。
其中,在示出的另一种实施方式中,如果上述交易中携带上述授权信息,还可以进一步确认该笔交易是否被成功存储至上述存证链;如果该笔交易被成功存储至上述存证链,此时再发起对上述智能合约的调用;也即,只有签约用户将个人的CA证书的访问权限授权给了上述智能合约,并且由用户发起的用于触发对上述电子合同进行电子签名操作的交易在上述存证链上完成存证后,才会触发调用上述智能合约。
在本说明书中,上述智能合约在执行上述电子签名程序时,一方面,可以从上述合同子链上来读取电子合同的原始内容;例如,由于上述合同子链上存储的电子合同的原始内容,只有区块链上部署的上述智能合约具有访问权限,因此上述智能合约可以从上述合同子链正常读取电子合同的原始内容;
另一方面,还可以从上述CA证书子链中来读取上述签约用户的CA证书;
例如,上述智能合约可以构建一笔用于查询CA证书的交易,在该交易中携带作为上述授权信息的电子凭证,然后将该交易在上述CA证书子链中进行发布;而上述CA证书子链上的节点设备收到该笔交易后们可以对该交易中的电子凭证进行验证,以确认该智能合约是否具有访问上述签约用户的CA证书的访问权限;如果验证通过,可以将上述签约用户的CA证书返回给上述智能合约;也即,上述智能合约可以通过向上述CA证书子链中的节点设备提交作为上述授权信息的电子凭证,从CA证书子链中以上述签约用户的访问权限来读取CA证书。
当然,在实际应用中,如果上述CA证书子链中未存储上述签约用户的CA证书,也可以以签约用户的授权身份,向CA机构重新申请CA证书,具体的实施不再赘述。
进一步,当从上述合同子链上读取到了待签署的电子合同的原始内容,并且从上述CA证书子链中读取到上述签约用户的个人CA证书后,可以基于读取到的CA证书,对该电子合同的原始内容进行电子签名操作。
在示出的一种实施方式中,如果签约用户的公钥私钥由CA机构统一分配,在签约用户的CA证书中,通常会携带该签约用户的公钥私钥对;在这种情况下,可以基于该CA证书中携带的私钥,对待签署的电子合同的原始内容进行电子签名操作即可。
在示出的另一种实施方式中,如果签约用户的公钥私钥并不是由CA机构统一分配,而是由签约用户自主生成;例如,在用户客户端的安全环境中搭载密钥生成算法,或者在用户持有的安全硬件(比如USB key)中搭载密钥生成算法,签约用户可以通过触发运行上述密钥生成算法,为自己创建私钥公钥对;在这种情况下,上述CA证书中通常只会携带签约用户的公钥。签约用户可以对个人私钥进行加密后,将个人私钥单独提交给上述智能合约,进而上述智能合约可以对签约用户的私钥进行解密后,基于该私钥对待签署的电子合同的原始内容进行电子签名操作即可。
其中,需要强调的是,在基于CA证书对上述电子合同的原始内容进行电子签名操作时,也可以将上述CA证书也作为载荷携带在电子签名中;在这种情况下,在需要对签约用户的电子签名进行验证时,可以基于CA机构的公钥对上述电子签名中携带的CA证书进行解密,获得上述签约用户的公钥,然后基于上述签约用户的公钥对电子签名进行验证即可,而不再需要单独查询上述签约用户的公钥。
请继续参见图3,当完成针对上述电子签名的原始内容的电子签名操作后,上述智能合约可以生成一笔用于指示上述签约用户已完成对上述电子合同进行电子签名操作的签名记录,并基于该签名记录构建一笔交易,在上述存证链上进行发布,由上述存证链上的节点设备对该交易共识处理后,在上述存证链上进行存储,以便于电子合约***后续可以对签约用户本次对该电子合同的电子签名操作进行追溯查询。
通过以上技术方案,一方面,由于用户可以通过调用智能合约的方式,来触发智能合约从区块链中读取与签约用户对应的CA证书,并基于读取到的CA证书对电子文书进行电子签名操作;因此,可以避免由用户手动对电子文书进行签名,简化电子签名操作的复杂度;
另一方面,由于签约用户的CA证书被预先存储至区块链,并且区块链上的CA证书,只能由智能合约来统一使用,因此可以避免非法的第三方用户通过冒用签约用户的CA证书的方式,在违背签约用户的意愿的情况下,使用签约用户的CA证书对电子文书进行电子签名操作,可以提升对电子文书进行电子签名操作时的安全等级。
与上述方法实施例相对应,本说明书还提供了一种基于区块链的内容验证装置的实施例。本说明书的基于区块链的内容验证装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本说明书的基于区块链的内容验证装置所在电子设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
图5是本说明书一示例性实施例示出的一种基于区块链的内容验证装置的框图。
请参考图5,所述基于区块链的内容验证装置50可以应用在前述图3所示的电子设备中,包括有:接收模块501和验证模块502。
接收模块501,接收签约用户通过客户端发起的目标交易;其中,所述目标交易用于触发对目标电子文书进行在线展示;
验证模块502,响应于所述目标交易,调用与内容验证对应的智能合约,执行所述智能合约中声明的内容验证程序,从区块链中读取所述目标电子文书的原始内容;以及,基于读取到的所述目标电子文书的原始内容对所述目标电子文书进行内容验证,并将内容验证结果以及所述目标电子文书的原始内容返回给所述客户端向所述签约用户展示。
在本实施例中,所述目标交易指示所述签约用户通过了身份认证。
在本实施例中,所述区块链中存储的所述目标电子文书的原始内容,被预设了限制所述智能合约以外的用户账户进行访问的访问权限。
在本实施例中,所述区块链包括主链以及若干子链;所述若干子链包括用于存储合同起草方上传的所述目标电子文书的访问地址和摘要信息的第一子链;以及用于存储所述目标电子文书的原始内容的第二子链;
所述验证模块502:
从所述第一子链中读取所述目标电子文书的访问地址;
基于所述目标电子文书的访问地址从所述第二子链中读取所述目标电子文书的原始内容。
在本实施例中,所述验证模块502进一步:
计算读取到的所述目标电子文书的原始内容的摘要信息;
将计算得到的摘要信息与从所述第一子链中读取到的所述目标电子文书的摘要信息进行匹配;如果二者匹配,确定所述目标电子文书通过内容验证;如果二者不匹配,确定所述目标电子文书未通过内容验证。
在本实施例中,所述若干子链还包括用于于存储所述与所述签约用户对应的CA证书的第三子链;其中,所述CA证书被预设了限制所述签约用户以外的用户账户进行访问的访问权限。
在本实施例中,所述目标电子文书为电子合同。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的***、装置、模块或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
与上述方法实施例相对应,本说明书还提供了一种电子设备的实施例。该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的内容验证的控制逻辑对应的机器可执行指令,所述处理器被促使:
接收签约用户通过客户端发起的目标交易;其中,所述目标交易用于触发对目标电子文书进行在线展示;
响应于所述目标交易,调用与内容验证对应的智能合约,执行所述智能合约中声明的内容验证程序,从区块链中读取所述目标电子文书的原始内容;以及,
基于读取到的所述目标电子文书的原始内容对所述目标电子文书进行内容验证,并将内容验证结果以及所述目标电子文书的原始内容返回给所述客户端向所述签约用户展示。
在本实施例中,所述区块链包括主链以及若干子链;所述若干子链包括用于存储合同起草方上传的所述目标电子文书的访问地址和摘要信息的第一子链;以及用于存储所述目标电子文书的原始内容的第二子链;
通过读取并执行所述存储器存储的与基于区块链的内容验证的控制逻辑对应的机器可执行指令,所述处理器被促使:
从所述第一子链中读取所述目标电子文书的访问地址;
基于所述目标电子文书的访问地址从所述第二子链中读取所述目标电子文书的原始内容。
在本实施例中,通过读取并执行所述存储器存储的与基于区块链的内容验证的控制逻辑对应的机器可执行指令,所述处理器被促使:
计算读取到的所述目标电子文书的原始内容的摘要信息;
将计算得到的摘要信息与从所述第一子链中读取到的所述目标电子文书的摘要信息进行匹配;如果二者匹配,确定所述目标电子文书通过内容验证;如果二者不匹配,确定所述目标电子文书未通过内容验证。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。