CN112887375A - 一种基于区块链的消息验证方法及设备 - Google Patents
一种基于区块链的消息验证方法及设备 Download PDFInfo
- Publication number
- CN112887375A CN112887375A CN202110044987.7A CN202110044987A CN112887375A CN 112887375 A CN112887375 A CN 112887375A CN 202110044987 A CN202110044987 A CN 202110044987A CN 112887375 A CN112887375 A CN 112887375A
- Authority
- CN
- China
- Prior art keywords
- message
- block
- chain
- private
- public
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Power Engineering (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本说明书一个或多个实施例提供一种基于区块链的消息验证方法及设备,包括:确定预先建立的消息区块私链中与目标消息对应的私链消息节点;对该私链消息节点的节点信息进行哈希Hash加密,得到该私链消息节点的Hash值;从该私链消息节点所在的私链区块中获取公链区块Hash值;根据该节点信息中与该目标消息对应的消息编号和该公链区块Hash值,从预先建立的消息区块公链获取该目标消息对应的公链消息节点中的Hash密文;响应于确定该私链消息节点的Hash值与该Hash密文相同,输出指示该目标消息验证成功的信号。本发明通过在服务器端和客户端分别设计的不同的区块链,在保证通信信息私密性的基础上,实现了对于通信信息的验证功能。
Description
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于区块链的消息验证方法及设备。
背景技术
基于移动端的即时通信***已是人们重要的交流沟通的工具。目前,随着通信技术和移动端技术的发展,出于成本和效率的考虑,人们越来越多领域的沟通开始使用移动端的即时通信***,这些领域对即时通信***提出了新的要求。
用户除了对通信信息的保密性和不可篡改性等传统特性有着更高要求外,还要求通信信息不能被第三方(包括服务器)知晓,另一方面,在出现纠纷时,用户希望可以对已发送信息进行验证和追溯。现有技术中,对于已发送信息的验证的技术方案还不够成熟,需要一种更加可靠的消息验证方法。
发明内容
有鉴于此,本说明书一个或多个实施例的目的在于提出一种基于区块链的消息验证方法及设备,以解决现有技术中对于已发送信息的验证的技术方案还不够成熟,需要一种更加可靠的消息验证方法的问题。
基于上述目的,本说明书一个或多个实施例提供了一种基于区块链的消息验证方法,包括:
确定预先建立的消息区块私链中与目标消息对应的私链消息节点;
对所述私链消息节点的节点信息进行哈希Hash加密,得到所述私链消息节点的Hash值;
从所述私链消息节点所在的私链区块中获取公链区块Hash值;
根据所述节点信息中与所述目标消息对应的消息编号和所述公链区块Hash值,从预先建立的消息区块公链获取所述目标消息对应的公链消息节点中的Hash密文;
响应于确定所述私链消息节点的Hash值与所述Hash密文相同,输出指示所述目标消息验证成功的信号。
可选的,所述消息区块私链包括多个私链区块;
所述私链区块包括私链区块体和私链区块头;
所述私链区块体包括消息明文链表;所述消息明文链表包括多个私链消息节点;所述私链消息节点包括消息编号、发送者、接收者、消息类型、消息内容、发送时间、消息签名和指向下一节点的指针;
所述私链区块头包括上一私链区块Hash值、本私链区块Hash值、私链时间戳、消息验证公钥和公链区块Hash值。
可选的,所述消息区块公链包括多个公链区块;
所述公链区块包括公链区块体和公链区块头;
所述公链区块体包括消息密文链表;所述消息密文链表包括多个公链消息节点;所述公链消息节点包括消息编号、Hash密文和指向下一节点的指针;
所述公链区块头包括上一公链区块Hash值、本公链区块Hash值、公链时间戳和消息确认Hash值。
可选的,所述消息区块私链和所述消息区块公链是通过下列操作建立的:
对于通信中的至少两个用户中的每个用户,
获取所述通信中的消息及其属性,以生成多个私链消息节点;
利用生成的所述多个私链消息节点构建所述消息明文链表;
根据所述消息明文链表,构建私链区块;
分别对所述多个私链消息节点的节点信息进行Hash加密,以生成
多个公链消息节点;
利用生成的所述多个公链消息节点构建所述消息密文链表;
对构建的多个所述消息密文链表进行时间戳匹配;
在任意两个所述消息密文链表的时间戳匹配的情况下,
响应于确定所述两个消息密文链表相同,对所述两个消息密文链表中任一个的所有公链消息节点的Hash密文进行Hash加密,以生成消息
确认Hash值;
对上一公链区块Hash值、所述时间戳和所述消息确认Hash值进行Hash加密,以生成本公链区块Hash值;
基于该消息密文链表和所述本公链区块Hash值,构建公链区块并
将其加入消息区块公链;
将所述本公链区块Hash值加入所述私链区块作为公链区块Hash值,
并将含有所述公链区块Hash值的所述私链区块加入消息区块私链。
可选的,在所述利用生成的所述多个私链消息节点构建所述消息明文链表之后,还包括:
利用密钥对所述消息明文链表中的每个所述私链消息节点进行签名,得到所述消息签名。
可选的,还包括:
将消息及其属性装入信息类;
将所述信息类封装成JS对象简谱JSON数据;
解析所述JSON数据获取到接收者账号;
将所述JSON数据发送到所述接收者账号。
可选的,所述信息类包括普通聊天信息类、区块链聊天信息类和语音通话信息类;
对于所述普通聊天信息类,消息属性包括发送者账号、接收者账号、群组账号、消息类型、发送时间、语音时长、是否视频聊天发起者和请求结果;
对于区块链聊天信息类,消息属性包括发送者账号、接收者账号、消息类型、发送时间和语音时长;
对于语音通话信息类,消息属性包括发送者账号、接收者账号和消息类型。
可选的,在将所述目标消息加入所述消息区块私链之前,在传递所述目标消息的第一用户设备和第二用户设备之间用随机生成的会话密钥对所述目标消息进行对称加密,并对所述会话密钥进行非对称加密。
可选的,包括:
所述第一用户设备利用非对称加密算法生成公钥和私钥,并将所述公钥发送到所述第二用户设备;
所述第二用户设备接收到所述公钥后,利用所述公钥加密一对称加密密钥,并将加密后的对称加密密钥发送到所述第一用户设备;
所述第一用户设备接收到所述加密后的对称加密密钥后,利用所述私钥解密所述加密后的对称加密密钥,得到所述对称加密密钥;
所述第一用户设备和第二用户设备利用所述对称加密密钥传递所述目标消息。
基于同一发明构思,本说明书一个或多个实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的方法。
从上面所述可以看出,本说明书一个或多个实施例提供的基于区块链的消息验证方法及设备,包括:确定预先建立的消息区块私链中与目标消息对应的私链消息节点;对该私链消息节点的节点信息进行Hash加密,得到该私链消息节点的Hash值;从该私链消息节点所在的私链区块中获取公链区块Hash值;根据该节点信息中与该目标消息对应的消息编号和该公链区块Hash值,从预先建立的消息区块公链获取该目标消息对应的公链消息节点中的Hash密文;响应于确定该私链消息节点的Hash值与该Hash密文相同,输出指示该目标消息验证成功的信号。本发明通过在服务器端和客户端分别设计的不同的区块链,在保证通信信息私密性的基础上,实现了对于通信信息的验证功能。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的区块链设计的一种结构示意图;
图2为本说明书一个或多个实施例提供的基于区块链的消息入链方法的一种流程示意图;
图3为本说明书一个或多个实施例提供的基于区块链的消息验证方法的一种流程示意图;
图4为本说明书一个或多个实施例提供的消息传输方法的一种流程示意图;
图5为本说明书一个或多个实施例提供的端对端加密方法的一种流程示意图;
图6为本说明书一个或多个实施例提供的一种更为具体的电子设备硬件结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本说明书一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本说明书一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
如背景技术部分所述,基于移动端的即时通信***已是人们重要的交流沟通的工具。目前,随着通信技术和移动端技术的发展,出于成本和效率的考虑,人们越来越多领域的沟通开始使用移动端的即时通信***,这些领域对即时通信***提出了新的要求。用户除了对通信信息的保密性、不可篡改性等传统特性有着更高要求外,通常要求通信信息不能被第三方(包括服务器)知晓,另一方面,在出现纠纷时,用户希望可以通过服务器对已发送信息进行验证和追溯。
申请人在实现本公开的过程中发现,区块链技术作为新一代信息技术,主要用于实现比特币等功能,对其它领域的要求考虑较少,使用场景非常有限。如果将区块链技术与移动即时通信***相结合,构建去中心化的***平台,能够满足各种领域对通信***新的要求。
以下,通过具体的实施例进一步详细说明本公开的技术方案。
本说明书一个或多个实施例,设计的区块链包括消息区块私链和消息区块公链。消息区块私链存储在客户端即用户本地,消息区块公链存储在服务器端。消息区块私链存储消息明文,消息区块公链存储对消息明文进行Hash加密后的消息密文。
上述区块链设计保证了在用户消息不在服务器端泄露的情况下,用户可以使用客户端的消息区块私链和服务器端的消息区块公链进行消息验证。同时,客户端的消息区块私链存储的是消息明文,用户可以随时查看消息内容,并自由选择消息验证其有效性。
参照图1中的(a),可选的,消息区块私链包括多个私链区块。
作为一个可选的实施例,私链区块包括:私链区块体和私链区块头。
所述私链区块体包括消息明文链表;参照图1中的(b),所述消息明文链表包括私链消息节点(Node为节点,HeadNode为首节点,LastNode为尾节点);所述私链消息节点包括消息编号、发送者、接收者、消息类型、消息内容、发送时间、消息签名和指向下一节点的指针。
也就说是,消息区块私链由多个私链区块构成,一个私链区块中包括一条消息明文链表,一条消息明文链表由多个私链消息节点构成,一个私链消息节点中包括消息编号、发送者、接收者、消息类型、消息内容、发送时间、消息签名和指向下一节点的指针等节点信息。
其中,消息编号代表该私链消息节点在该消息明文链表中的位置,即该私链消息节点是该消息明文链表中的第几个私链消息节点(即该私链消息节点中的消息是该消息明文链表中的第几条消息);发送者与接收者表示传递消息的对象;消息类型表示消息是文本或者图片等;消息签名是利用密钥对所述消息明文链表中的每个所述私链消息节点的节点信息(包括消息编号、发送者、接收者、消息类型、消息内容和发送时间)进行签名得到的。可选的,消息签名利用的密钥为私钥。
所述私链区块头包括上一私链区块哈希Hash值、本私链区块Hash值、私链时间戳、消息验证公钥和公链区块Hash值。
其中,本私链区块Hash值通过对上一私链区块Hash值、私链时间戳、消息验证公钥和消息签名进行Hash加密计算得到。
本说明书一个或多个实施例,Hash加密的方法包括安全散列算法(Secure HashAlgorithm,SHA),在SHA算法中,数据的少量更改会在Hash值中产生不可预知的大量更改,Hash值用作表示大量数据的固定大小的唯一值。优选的,包括SHA256算法,SHA256算法的Hash值大小为256位,之所以选用SHA256是因为产生的Hash值大小正好合适,一方面产生重复Hash值的可能性很小,另一方面在区块链实际应用过程中,有可能会产生大量的区块,而使得信息量很大,那么256位的大小就比较恰当了。
消息验证公钥的作用是对私链区块体中的消息明文链表中的所有私链消息节点的消息签名进行验证,消息签名由使用密钥加密私链消息节点的节点信息得到。如果在验证的过程中发现有消息签名验证不成功,则证明该私链区块数据被篡改,私链区块失效,不能加入消息区块私链。
公链区块Hash值代表该消息区块私链上的私链区块在服务器端消息区块公链上对应的公链区块的位置,相当于区块的索引指针,这个属性可以使得用户在需要验证消息的时候,在服务器端快速找到与之配对的公链区块。
参照图1中的(c),可选的,消息区块公链包括多个公链区块。
作为一个可选的实施例,公链区块包括:公链区块体和公链区块头。
所述公链区块体包括消息密文链表;参照图1中的(d),所述消息密文链表包括多个公链消息节点;所述公链消息节点包括消息编号、Hash密文和指向下一节点的指针。
也就说是,消息区块公链由多个公链区块构成,一个公链区块中包括一条消息密文链表,一条消息密文链表由多个公链消息节点构成,一个公链消息节点中包括消息编号、Hash密文和指向下一节点的指针等节点信息。
其中,消息编号代表该公链消息节点在该消息密文链表中的位置,即该公链消息节点是该消息密文链表中的第几个公链消息节点(即该公链消息节点中的消息是该消息密文链表中的第几条消息)。对于同一消息(即消息内容和消息属性均相同),其在公链区块中的消息编号与私链区块中的消息编号是一致的。
Hash密文由私链消息节点的节点信息进行Hash加密得到。
作为一个可选的实施例,Hash密文是在客户端生成,再传输到服务器端的,保证了用户消息不在服务器端泄露。
所述公链区块头包括上一公链区块Hash值、本公链区块Hash值、公链时间戳和消息确认Hash值。
其中,本公链区块Hash值通过上一公链区块Hash值、公链时间戳和消息确认Hash值进行Hash加密计算得到。
消息确认Hash值,是通过对该公链区块体中的消息密文链中的所有公链消息节点的Hash密文进行加密计算得到。作为一个可选的实施例,还包括:对所述消息签名进行Hash加密,以生成所述消息确认Hash值。
服务器端的消息区块公链与客户端的消息区块私链的关系是,对于每一个消息区块私链中的私链区块,消息区块公链中也必然存在对应的公链区块。反之,消息区块公链中存在的公链区块,也必然在某一个用户的消息区块私链中存在对应的私链区块。
上述区块链设计的好处是:如果客户端的消息区块私链存储的私链区块在服务器的消息区块公链中不存在对应的公链区块,那么该私链区块中消息内容的有效性和真实性就得不到验证,也就证明了该私链区块是无效的。因此,服务器与客户端的区块入链,即生成消息区块私链和消息区块公链是相辅相成,配合进行的。
图2为本说明书一个或多个实施例提供的基于区块链的消息入链方法的一种流程示意图;基于区块链的消息入链方法,包括:
所述消息区块私链和所述消息区块公链是通过下列操作建立的:
S200、对于通信中的至少两个用户中的每个用户,获取所述通信中的消息及其属性,以生成多个私链消息节点。
其中,消息即为消息内容,或称消息本体;消息属性包括:消息编号、发送者、接收者、消息类型、发送时间、消息签名和指向下一节点的指针等。
对于在该方法下进行通信的每个用户,随着消息的发送与接收,会在各自的客户端即用户本地,不断生成私链消息节点。每个私链消息节点中均包括消息编号、发送者、接收者、消息类型、消息内容、发送时间、消息签名和指向下一节点的指针等节点信息。其中,私链消息节点的节点信息均为明文。
S210、利用生成的所述多个私链消息节点构建所述消息明文链表。
一条消息明文链表由多个私链消息节点构成,可选的,对于预设时间内通信生成的多个私链消息节点,共同生成一条消息明文链表。
可选的,各自使用密钥对消息明文链表中的每个私链消息节点的节点信息进行签名得到消息签名,可利用消息验证公钥对消息签名进行验证,以起到鉴别身份的作用。可选的,密钥可以是私钥。
S220、根据所述消息明文链表,构建私链区块。
由该消息密文链表构建私链区块体,由上一私链区块Hash值、本私链区块Hash值、私链时间戳和消息验证公钥构建私链区块头,由该私链区块体和该私链区块头构建一个私链区块。
S230、分别对所述多个私链消息节点的节点信息进行Hash加密,以生成多个公链消息节点。
分别对所述多个私链消息节点的节点信息进行Hash加密,得到多个Hash密文,每个私链消息节点均对应一个Hash密文;由每个Hash密文和该私链消息节点的节点信息中的消息编号,生成每个公链消息节点。
S240、利用生成的所述多个公链消息节点构建所述消息密文链表。
一条消息密文链表由多个公链消息节点构成,其中,公链消息节点按照其消息编号排列。
S250、对构建的多个所述消息密文链表进行时间戳匹配。
可选的,生成每个消息密文链表时,会对应生成其时间戳。对于通信中的每个用户,均生成有一条消息密文链表,相同时间戳对应的消息密文链表,对应于同一通信。
S260、在任意两个所述消息密文链表的时间戳匹配的情况下,响应于确定所述两个消息密文链表相同,对所述两个消息密文链表中任一个的所有公链消息节点的Hash密文进行Hash加密,以生成消息确认Hash值。
可选的,对两个消息密文链表进行内容检测。检测是为了防止有一方的消息明文链表被篡改,如果消息明文链表被篡改,生成的消息密文链表是不同的;如果检测不相同,则代表消息明文链表被篡改,返回对比失败信令至客户端;反之,对消息密文链表中的每个公链消息节点的Hash明文进行加密,生成消息确认Hash值。消息确认Hash值表示生成的消息密文链表是真实可信的。
S270、对上一公链区块Hash值、所述时间戳和所述消息确认Hash值进行Hash加密,以生成本公链区块Hash值。
作为一个可选的实施例,Hash加密的方法采用安全散列算法SHA。
S280、基于该消息密文链表和所述本公链区块Hash值,构建公链区块并将其加入消息区块公链。
由该消息密文链表构建公链区块体,由上一公链区块Hash值、本公链区块Hash值、公链时间戳和消息确认Hash值构建公链区块头,由该公链区块体和该公链区块头构建公链区块。
由多个公链区块构建消息区块公链。
作为一个可选的实施例,向其他服务器广播该公链区块。
S290、将所述本公链区块Hash值加入所述私链区块作为公链区块Hash值,并将含有所述公链区块Hash值的所述私链区块加入消息区块私链。
可选的,各自在本地生成新私链区块后,等待服务器返回信令;若返回的为服务器入链成功信令与公链区块Hash值,则在新私链区块中记录公链区块Hash值,并将新私链区块加入本地消息区块私链;若为其他信令,则提示用户入链出错,并显示出错原因。
图3为本说明书一个或多个实施例提供的基于区块链的消息验证方法的一种流程示意图;基于区块链的消息验证方法,包括:
S300、确定预先建立的消息区块私链中与目标消息对应的私链消息节点。
消息区块私链中的私链区块存储的信息为消息明文,用户可以直接查看消息内容,并选择任意消息为目标消息,验证其有效性。用户选择目标消息后,即确定了与目标消息对应的私链消息节点。
S310、对所述私链消息节点的节点信息进行Hash加密,得到所述私链消息节点的Hash值。
私链消息节点包括消息编号、发送者、接收者、消息类型、消息内容、发送时间、消息签名和指向下一节点的指针,均为该私链消息节点的节点信息。对该私链消息节点的节点信息进行Hash加密,得到该私链消息节点的Hash值。
S320、从所述私链消息节点所在的私链区块中获取公链区块Hash值。
该私链消息节点所在的私链区块中存储有与该私链区块所对应的公链区块的Hash值。通过公链区块Hash值,可以找到该私链区块所对应的公链区块。
S330、根据所述节点信息中与所述目标消息对应的消息编号和所述公链区块Hash值,从预先建立的消息区块公链获取所述目标消息对应的公链消息节点中的Hash密文。
公链区块中的消息密文链表中包括多个公链消息节点,通过目标消息对应的私链消息节点的消息编号,因为一则消息对应的私链消息节点和公链消息节点的消息编号是相同的,所以,可以找到目标消息在公链区块的消息明文链表中的公链消息节点。该公链消息节点存储有Hash密文,该Hash密文是由私链消息节点的节点信息进行Hash加密得到的。
S340、响应于确定所述私链消息节点的Hash值与所述Hash密文相同,输出指示所述目标消息验证成功的信号。
如果私链消息节点的Hash值与对应的公链消息节点存储的Hash密文相同,说明,私链消息节点存储的消息与该消息传递时的内容以及属性相同,即目标消息是真实可信的。
图4为本说明书一个或多个实施例提供的消息传输方法的一种流程示意图;消息传输方法,包括:
S400、将消息及其属性装入信息类。
本说明书一个或多个实施例,为了便于不同通讯模式下的信息传输与解析,以及适应各种通讯模式下所需要传输的信息,设计了不同模式下的信息类。作为一个可选的实施例,通讯模式包括普通聊天模式、区块链聊天模式和语音通话模式,所述信息类包括普通聊天信息类、区块链聊天信息类和语音通话信息类。
其中,消息即为消息内容。
对于普通聊天信息类,消息属性包括发送者账号、接收者账号、群组账号、消息类型、发送时间、语音时长、是否视频聊天发起者和请求结果。
其中,发送者账号、接收者账号表示发送与接收的用户账号;群组账号表明群聊信息的来源;消息类型表示传输的消息类型,如文字聊天、语音聊天和群聊信息,发送端与接收端根据消息类型对消息内容进行相应的封装与解析;语音时长表明语音聊天下语音的时长;请求结果则是信令信息传输后返回的结果。
对于区块链聊天信息类,消息属性包括发送者账号、接收者账号、消息类型、发送时间和语音时长。
其中,发送者账号、接收者账号表示发送与接收的用户账号;消息类型表示传输的消息类型,如文本和语音;发送时间表明信息的发送时间;语音时长表示语音信息的时长。
对于语音通话信息类,消息属性包括发送者账号、接收者账号和消息类型。
其中,发送者账号、接收者账号表示发送与接收的用户账号;消息类型表示传输的消息类型,在语音通话模式下表示语音通话信息类型。
S410、将所述信息类封装成JS对象简谱JSON数据。
JSON是一种轻量级的数据交换格式,易于用户阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
可选的,还包括:通过TCP/UDP传输协议将JSON数据发送到服务器。
为了保证信息传输的准确性与安全性,以及适应不同的聊天模式,本发明同时使用TCP与UDP两种网络传输协议来实现网络通讯:在普通聊天与区块链聊天模式下,为了保证信息能准确的传输,并且使丢包率尽可能的少,采用的是TCP协议;在语音通话模式下,为了保证通话的实时性,同时对丢包也不是那么严格要求的情况下,采用的是UDP协议。
传输控制协议TCP(Transmission Control Protocol)是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议,TCP的优点是可靠、稳定。TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约***资源。由于普通聊天与区块链聊天对信息传输的可靠性与稳定性有很高的要求,因此采用的是TCP传输协议。
UDP(User Datagram Protocol)协议是一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。UDP协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序。UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。UDP是一个无状态的传输协议,所以它在传递数据时非常快。同时因为UDP没有TCP握手机制,在数据传递时,如果网络质量不好,就会很容易丢包。而在语音通话模式下,对通讯的实时性要求是非常高的,而对传输的可靠性的要求不是很高,因此在语音通话模式下,采用的是UDP传输协议。
S420、解析所述JSON数据获取到接收者账号。
从JSON数据中获取接收者账号。
S430、将所述JSON数据发送到所述接收者账号。
可选的,还包括:检测接收者账号是否在线,若接收者账号不在线,将信息缓存至数据库;若接收者账号在线,将所述JSON数据发送到所述接收者账号。在成功接收后,从JSON数据中提取相应通讯模式下信息类中所包含的信息。
本说明书一个或多个实施例,在将所述目标消息加入所述消息区块私链之前,在传递所述目标消息的第一用户设备和第二用户设备之间用随机生成的会话密钥对所述目标消息进行对称加密,并对所述会话密钥进行非对称加密。
参照图5,端对端加密方法,包括:
S500、所述第一用户设备利用非对称加密算法生成公钥和私钥,并将所述公钥发送到所述第二用户设备。
可选的,非对称加密算法包括RSA加密算法。
非对称加密算法包括RSA加密算法的加密密钥(即公钥)和解密密钥(即私钥)是不同的,所以由已知加密密钥(即公钥)推导出解密密钥(即私钥)在计算上是不可行的。在非对称加密算法体制中,加密密钥(即公钥)可以是***息,而解密密钥(即私钥)是需要保密的。
本发明在本地生成公钥和私钥,仅传输公钥,是不能得到其他用户的私钥的,有效提高了安全性能。
S510、所述第二用户设备接收到所述公钥后,利用所述公钥加密一对称加密密钥,并将加密后的对称加密密钥发送到所述第一用户设备。
可选的,对称加密算法包括高级加密标准(AES,Advanced Encryption Standard)算法。
在对称加密算法中,加密与解密的密钥是相同的。作为一个可选的实施例,本发明采用对称加密算法对会话消息进行加密,这种加密方式加密速度非常快,适合经常发送数据的场合。
S520、所述第一用户设备接收到所述加密后的对称加密密钥后,利用所述私钥解密所述加密后的对称加密密钥,得到所述对称加密密钥。
前述公钥所对应的私钥,仅存在于此用户设备,所以,即使其他设备接收到该加密后的对称加密密钥,也不能解密获取其中的内容,保证了安全性。
S530、所述第一用户设备和第二用户设备利用所述对称加密密钥传递所述目标消息。
作为一个可选的实施例,本发明提供的端对端加密方法,也适用于包括多个用户的场景,对于多个用户,两两之间互为传递所述目标消息的第一用户设备和第二用户设备,以执行上述加密方法。
端对端加密采用对称加密算法和非对称加密算法有机结合的方式,因非对称加密算法的特性,保证了信息的不可破解,确保信息的安全性,但因为非对称加密算法的加密效率相对不高,无法满足对于用户之间在短期内大量的信息加密。但是对称加密算法加密效率较高,所以这里将对称加密算法的高效率和非对称加密算法的安全性有机结合,来确保端对端加密的高效率和安全性。
端对端加密使服务器无法获取用户的消息内容,即使能获得,也无法解密用户的消息数据,从而保证了用户的消息记录不会被泄露,与本发明区块链的设计中关于安全性的设计是相符合的。
本说明书一个或多个实施例提供的基于区块链的消息验证方法,包括:确定预先建立的消息区块私链中与目标消息对应的私链消息节点;对该私链消息节点的节点信息进行Hash加密,得到该私链消息节点的Hash值;从该私链消息节点所在的私链区块中获取公链区块Hash值;根据该节点信息中与该目标消息对应的消息编号和该公链区块Hash值,从预先建立的消息区块公链获取该目标消息对应的公链消息节点中的Hash密文;响应于确定该私链消息节点的Hash值与该Hash密文相同,输出指示该目标消息验证成功的信号。本发明通过在服务器端和客户端分别设计的不同的区块链,在保证通信信息私密性的基础上,实现了对于通信信息的验证功能。
本发明基于区块链技术以及对称和非对称加密等技术,提出了具有多种类型消息验证功能的、端对端通信安全的、去中心化的移动即时通信方法。基于区块链技术原理,设计了多种类型通信消息即区块的新模式,通过在分布式服务器端和移动客户端建立不同的区块链,设计相应的入链方法,并结合相关的加解密和Hash索引等技术,在保证通信信息私密性的基础上,实现了对通信信息的验证功能,即用户可通过服务器验证某时刻或某段时间与某个对象确切的通信信息,包括文字、图片和语音。
可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。
需要说明的是,本说明书一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本说明书一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图6示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入/输出模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本说明书一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本说明书一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本说明书一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本说明书一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本说明书一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种基于区块链的消息验证方法,其特征在于,包括:
确定预先建立的消息区块私链中与目标消息对应的私链消息节点;
对所述私链消息节点的节点信息进行哈希Hash加密,得到所述私链消息节点的Hash值;
从所述私链消息节点所在的私链区块中获取公链区块Hash值;
根据所述节点信息中与所述目标消息对应的消息编号和所述公链区块Hash值,从预先建立的消息区块公链获取所述目标消息对应的公链消息节点中的Hash密文;
响应于确定所述私链消息节点的Hash值与所述Hash密文相同,输出指示所述目标消息验证成功的信号。
2.根据权利要求1所述的方法,其特征在于,所述消息区块私链包括多个私链区块;
所述私链区块包括私链区块体和私链区块头;
所述私链区块体包括消息明文链表;所述消息明文链表包括多个私链消息节点;所述私链消息节点包括消息编号、发送者、接收者、消息类型、消息内容、发送时间、消息签名和指向下一节点的指针;
所述私链区块头包括上一私链区块Hash值、本私链区块Hash值、私链时间戳、消息验证公钥和公链区块Hash值。
3.根据权利要求2所述的方法,其特征在于,所述消息区块公链包括多个公链区块;
所述公链区块包括公链区块体和公链区块头;
所述公链区块体包括消息密文链表;所述消息密文链表包括多个公链消息节点;所述公链消息节点包括消息编号、Hash密文和指向下一节点的指针;
所述公链区块头包括上一公链区块Hash值、本公链区块Hash值、公链时间戳和消息确认Hash值。
4.根据权利要求3所述的方法,其特征在于,所述消息区块私链和所述消息区块公链是通过下列操作建立的:
对于通信中的至少两个用户中的每个用户,
获取所述通信中的消息及其属性,以生成多个私链消息节点;
利用生成的所述多个私链消息节点构建所述消息明文链表;
根据所述消息明文链表,构建私链区块;
分别对所述多个私链消息节点的节点信息进行Hash加密,以生成多个公链消息节点;
利用生成的所述多个公链消息节点构建所述消息密文链表;
对构建的多个所述消息密文链表进行时间戳匹配;
在任意两个所述消息密文链表的时间戳匹配的情况下,
响应于确定所述两个消息密文链表相同,对所述两个消息密文链表中任一个的所有公链消息节点的Hash密文进行Hash加密,以生成消息确认Hash值;
对上一公链区块Hash值、所述时间戳和所述消息确认Hash值进行Hash加密,以生成本公链区块Hash值;
基于该消息密文链表和所述本公链区块Hash值,构建公链区块并将其加入消息区块公链;
将所述本公链区块Hash值加入所述私链区块作为公链区块Hash值,并将含有所述公链区块Hash值的所述私链区块加入消息区块私链。
5.根据权利要求4所述的方法,其特征在于,在所述利用生成的所述多个私链消息节点构建所述消息明文链表之后,还包括:
利用密钥对所述消息明文链表中的每个所述私链消息节点进行签名,得到所述消息签名。
6.根据权利要求1所述的方法,其特征在于,还包括:
将消息及其属性装入信息类;
将所述信息类封装成JS对象简谱JSON数据;
解析所述JSON数据获取到接收者账号;
将所述JSON数据发送到所述接收者账号。
7.根据权利要求6所述的方法,其特征在于,所述信息类包括普通聊天信息类、区块链聊天信息类和语音通话信息类;
对于所述普通聊天信息类,消息属性包括发送者账号、接收者账号、群组账号、消息类型、发送时间、语音时长、是否视频聊天发起者和请求结果;
对于区块链聊天信息类,消息属性包括发送者账号、接收者账号、消息类型、发送时间和语音时长;
对于语音通话信息类,消息属性包括发送者账号、接收者账号和消息类型。
8.根据权利要求1所述的方法,其特征在于,在将所述目标消息加入所述消息区块私链之前,在传递所述目标消息的第一用户设备和第二用户设备之间用随机生成的会话密钥对所述目标消息进行对称加密,并对所述会话密钥进行非对称加密。
9.根据权利要求8所述的方法,其特征在于,包括:
所述第一用户设备利用非对称加密算法生成公钥和私钥,并将所述公钥发送到所述第二用户设备;
所述第二用户设备接收到所述公钥后,利用所述公钥加密一对称加密密钥,并将加密后的对称加密密钥发送到所述第一用户设备;
所述第一用户设备接收到所述加密后的对称加密密钥后,利用所述私钥解密所述加密后的对称加密密钥,得到所述对称加密密钥;
所述第一用户设备和第二用户设备利用所述对称加密密钥传递所述目标消息。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至9任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110044987.7A CN112887375B (zh) | 2021-01-13 | 2021-01-13 | 一种基于区块链的消息验证方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110044987.7A CN112887375B (zh) | 2021-01-13 | 2021-01-13 | 一种基于区块链的消息验证方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112887375A true CN112887375A (zh) | 2021-06-01 |
CN112887375B CN112887375B (zh) | 2022-08-05 |
Family
ID=76045807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110044987.7A Active CN112887375B (zh) | 2021-01-13 | 2021-01-13 | 一种基于区块链的消息验证方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112887375B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113904869A (zh) * | 2021-11-10 | 2022-01-07 | 深圳前海微众银行股份有限公司 | 一种区块链中恶意节点的检测方法及区块链 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106779737A (zh) * | 2016-11-30 | 2017-05-31 | 电子科技大学 | 基于区块链技术的产品溯源验证方法 |
CN110188550A (zh) * | 2019-05-17 | 2019-08-30 | 深圳前海微众银行股份有限公司 | 一种区块链的数据验证方法和装置 |
WO2020108114A1 (zh) * | 2018-11-28 | 2020-06-04 | 阿里巴巴集团控股有限公司 | 基于区块链的数据存证方法及装置、电子设备 |
CN111667279A (zh) * | 2020-05-10 | 2020-09-15 | 武汉理工大学 | 基于双区块链的产品溯源方法及*** |
CN112104665A (zh) * | 2020-11-02 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 基于区块链的身份验证方法、装置、计算机以及存储介质 |
-
2021
- 2021-01-13 CN CN202110044987.7A patent/CN112887375B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106779737A (zh) * | 2016-11-30 | 2017-05-31 | 电子科技大学 | 基于区块链技术的产品溯源验证方法 |
WO2020108114A1 (zh) * | 2018-11-28 | 2020-06-04 | 阿里巴巴集团控股有限公司 | 基于区块链的数据存证方法及装置、电子设备 |
CN110188550A (zh) * | 2019-05-17 | 2019-08-30 | 深圳前海微众银行股份有限公司 | 一种区块链的数据验证方法和装置 |
CN111667279A (zh) * | 2020-05-10 | 2020-09-15 | 武汉理工大学 | 基于双区块链的产品溯源方法及*** |
CN112104665A (zh) * | 2020-11-02 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 基于区块链的身份验证方法、装置、计算机以及存储介质 |
Non-Patent Citations (1)
Title |
---|
SHAOLIANG PENG: "An Efficient Double-Layer Blockchain Method for Vaccine Production Supervision", 《IEEE》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113904869A (zh) * | 2021-11-10 | 2022-01-07 | 深圳前海微众银行股份有限公司 | 一种区块链中恶意节点的检测方法及区块链 |
CN113904869B (zh) * | 2021-11-10 | 2024-04-19 | 深圳前海微众银行股份有限公司 | 一种区块链中恶意节点的检测方法及区块链 |
Also Published As
Publication number | Publication date |
---|---|
CN112887375B (zh) | 2022-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9608963B2 (en) | Scalable intermediate network device leveraging SSL session ticket extension | |
JP6249428B2 (ja) | 端末ペアリング方法およびペアリング端末 | |
CN109639828A (zh) | 会话消息处理方法和装置 | |
US20110320359A1 (en) | secure communication method and device based on application layer for mobile financial service | |
CN113572743B (zh) | 数据加密、解密方法、装置、计算机设备和存储介质 | |
US12010216B2 (en) | Computer-implemented system and method for highly secure, high speed encryption and transmission of data | |
CN114553590B (zh) | 数据传输方法及相关设备 | |
CN109309566B (zh) | 一种认证方法、装置、***、设备及存储介质 | |
US11528127B2 (en) | Computer-implemented system and method for highly secure, high speed encryption and transmission of data | |
CN105978693B (zh) | 一种终端关联的方法及*** | |
JP7229778B2 (ja) | 鍵管理システム及び方法 | |
CN112887375B (zh) | 一种基于区块链的消息验证方法及设备 | |
CN112927026A (zh) | 优惠券的处理方法、装置、电子设备及计算机存储介质 | |
WO2018102382A1 (en) | Method and system for switching public keys in ciphertexts | |
Somaiya et al. | Implementation and evaluation of EMAES–A hybrid encryption algorithm for sharing multimedia files with more security and speed | |
McLoughlin et al. | Full Post-Quantum Datagram TLS Handshake in the Internet of Things | |
CN107343001B (zh) | 数据处理方法及装置 | |
CN116644442A (zh) | 基于复合加密的文件校验方法、装置、***及存储介质 | |
CN115766119A (zh) | 通信方法、装置、通信***及存储介质 | |
Duits | The post-quantum Signal protocol: Secure chat in a quantum world | |
Andrieș et al. | A survey on the security protocols employed by mobile messaging applications | |
CN112350920A (zh) | 基于区块链的即时通讯*** | |
Gerber | Authentication and Authorization for Constrained Environments | |
CN104410497A (zh) | 一种无线手持终端的安全信息传输*** | |
BR102014031238A2 (pt) | sistema e método para empacotamento seguro e compacto de mensagens de texto curtas tipo sms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |