A method for byzantine reliable broadcast based on directed acyclic graph
By using a Byzantine reliable broadcasting method based on directed acyclic graphs, the problems of high communication complexity and number of rounds in existing technologies are solved, achieving efficient message broadcasting and reducing communication overhead.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- SUN YAT SEN UNIV
- Filing Date
- 2023-12-26
- Publication Date
- 2026-06-05
AI Technical Summary
Existing technologies in the Byzantine Reliable Broadcast Protocol have high communication complexity and rounds, especially with a large number of nodes and messages, resulting in significant communication overhead.
A Byzantine reliable broadcast method based on directed acyclic graphs is adopted. By establishing an authenticated secure channel, utilizing the directed acyclic graph structure and collision-resistant hash function, the communication complexity and number of rounds are reduced, thus achieving reliable message broadcasting.
The communication complexity of the Byzantine Reliable Broadcast Protocol is reduced to O(n|M|+kn), and the average number of communication rounds is only 3, thus improving broadcast efficiency.
Smart Images

Figure CN117896194B_ABST
Abstract
Description
Technical Field
[0001] This invention relates to the fields of information security and distributed computing technology, and more specifically, to a Byzantine reliable broadcast method based on directed acyclic graphs. Background Technology
[0002] The Byzantine Reliable Broadcast Problem was first proposed by Bracha et al. in 1987. Bracha et al. proposed an error-free reliable broadcast protocol to address this problem. This protocol cleverly applies the pigeonhole theorem, enabling honest servers and clients to complete reliable broadcasts even when the adversary's computation is unbounded. In the case of single-message reliable broadcast, the communication complexity of this protocol is O(n^2). 2 |M|), where n is the number of servers in the network, and |M| is the length of message M.
[0003] Subsequently, building upon the work of Bracha et al., researchers proposed a new reliable broadcast protocol under the assumption of bounded adversary computation. In 2005, Cachin and Tessaro et al. reduced communication complexity by using collision-resistant hash functions, erasure codes, and other techniques, enabling all honest nodes to broadcast message fragments and hash values formed by Merkle trees. Let k denote the size of the output of auxiliary techniques such as hash functions and digital signatures; the communication complexity of broadcasting a message using this protocol is O(n|M|+kn). 2 In 2007, Hendricks et al. proposed further replacing message fragmentation with fingerprint functions during broadcasting, resulting in a communication complexity of O(n|M|+kn). 3 In 2020, Nayak et al. proposed a reliable broadcast protocol based on accumulators and error-correcting codes, with a communication complexity of O(n|M|+kn). 2 ).
[0004] In 2021, Das et al. proposed the asynchronous data distribution problem. This problem refers to how to distribute data from a subset of honest nodes to all honest nodes, thereby solving the Byzantine reliable broadcast problem. Das et al. presented a protocol for asynchronous data distribution and a Byzantine reliable broadcast protocol with a communication complexity of O(n|M|+kn). 2 The message communication rounds are 4. In 2022, Alhaddad et al. adopted the reliable broadcast protocol structure of Bracha et al. and combined it with the erasure code technology used by Cachin and Tessaro et al. and the asynchronous data distribution method of Das et al. to propose a new reliable broadcast protocol that reduces computational overhead, while maintaining a communication complexity of O(n|M|+kn). 2) The communication round of the message is 4 rounds. In addition, a new reliable broadcast protocol is constructed based on the ideas of threshold signature, Byzantine consistent broadcast, and asynchronous data distribution, and the communication complexity of the protocol is further reduced to O(n|M| + kn + n 2 logn), but the communication round of the message is 7 rounds.
[0005] In summary, assuming that the adversary's calculation is bounded, the current lowest communication complexity for completing single-message Byzantine reliable broadcast is O(n|M| + kn + n 2 logn), and the lowest communication round is 4 rounds. In the case where m messages need to be reliably broadcast, the current optimal communication complexity of Byzantine reliable broadcast is O(nm|M| + kmn + mn 2 logn), and the communication overhead is large when the number of communication nodes is large and the number of reliably broadcast messages is large. SUMMARY OF THE INVENTION
[0006] To overcome the above defects in the prior art, the present invention provides a Byzantine reliable broadcast method based on a directed acyclic graph, which can reduce the communication complexity and the communication round, thereby effectively reducing the communication overhead cost.
[0007] To solve the above technical problems, the technical solution adopted by the present invention is:
[0008] A Byzantine reliable broadcast method based on a directed acyclic graph, which involves m clients and n servers, and an authenticated secure channel needs to be established, where the number of malicious nodes in the server is at most t n < n / 3, and includes the following steps:
[0009] A. The i-th server s i Initializes the local directed acyclic graph node set DAG i , the local reference set refs i , and the local dictionary votes i , where i ∈ {1,..., n};
[0010] B. The k-th client c k Sends the message v to all servers k , where k ∈ {1,..., m};
[0011] C. When the server s i Receives the message v from the client c<
[0012] D. When the server s i Received from server s j response jk When, if response jk refs j All references are in DAG i In the middle, then H(response) jk Added as a new node to the DAG i Meanwhile, votes are being updated. i , where j∈{1,...,n}; if votes i Regarding a certain message v k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1 determines message v k Complete the message about v k Reliable broadcasting.
[0013] Based on the above technical means, this invention proposes a new method for completing reliable Byzantine broadcast by adopting a directed acyclic graph structure. Assuming there are m messages that need to be reliably broadcast, the communication complexity of this protocol is O(mn|M|+kmn), and the average number of communication rounds is only 3 rounds.
[0014] Furthermore, step A specifically includes: server s i Initialize the local directed acyclic graph (DAG) node set. i ={H(response)} initial1 ),H(response initial2 )}, where H is a collision-resistant hash function, and response initial1 and response initial2 Given two initial nodes in a directed acyclic graph, initialize the local reference set to null (refs). i ={} and the local dictionary being empty (votes) i ={}.
[0015] Further, step B specifically includes: client c k Send message v to all servers k = (initial, value k ,k), where initial is the identifier for the message sent by the client, and value k The message content sent by the client, where k is the client number.
[0016] Further, step C specifically includes:
[0017] C1. Server-side s i Received from client c k Message v k = (initial, value k ,k), if no message v has been sent yet k response message ik Let the integer a = 1, and at the same time randomly select from (1, 2, ..., 2t) n If a = b, select an integer b from +1). If a = b, continue with the following steps; otherwise, stop processing the message.
[0018] C2. Initialize refs i It is an empty set, on the server s i Local DAG i Select s from i The sender's node is used as the first reference ref1, and then a node is randomly selected in the DAG. i Other server nodes that are the senders are used as the second reference, ref2. These two references should prioritize unreferenced nodes, and then ref1 and ref2 should be added to the reference set refs. i middle;
[0019] C3. If server s i Local dictionary votes i Regarding the news v k The number of times a node is referenced by different servers is greater than or equal to t. n +1, and the current server s i If the node is not yet directly or indirectly referenced, add the node to the reference set refs. i among;
[0020] C4. Server-side s i Broadcast response to all servers ik =(response,v k ,refs i ,i), where response is the identifier of the response message and i is the server number.
[0021] Furthermore, step D specifically includes:
[0022] D1. When the server s i Received from server s j response jk When, determine H(response) jk Is it in DAG? i If the condition is met, execution will be suspended; otherwise, the following steps will be executed.
[0023] D2. Analyzing the response jk =(response,v k ,refs j ,j), determine refs j Are all references in the DAG? i If the response is not included jk Add to local cache buffer i If the condition is met, execution will be suspended; otherwise, H(response) will be executed. jk Added as a node to the DAG i In the middle, perform the following steps;
[0024] D3. Traversing the dictionary votes i If refs j A reference in the dictionary is equal to the votes dictionary. i For a given key, or a set of values corresponding to that key, H(response) jk Add it to the value set of this key to indicate the response. jk The node corresponding to this key has a direct or indirect reference;
[0025] D4. Transfer the key-value pair (H(response)) jk ):{H(response jk Add to the dictionary votes i middle;
[0026] D5. Statistics on message v k The number of times a node is referenced by different servers, if regarding message v k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1 determines message v k Complete reliable broadcasting, and transmit the message about v k The node from votes i Delete;
[0027] D6. If H(response) jk Added as a node to the DAG i In the middle, the buffer i There is a response message that satisfies the requirement to join the DAG. i If the conditions are met, then steps D1 to D6 will be executed.
[0028] Furthermore, it also includes E1: if the server s i Local cache buffer i If the size exceeds the threshold x, then it is a buffer. iBroadcast synchronization requests for all response messages in
[0029] syncRequest i =(sync, response jk , refs j , i), and clear the buffer i , where sync is the identifier of the synchronization request.
[0030] Furthermore, it also includes E2: When the server s i receives a synchronization request syncRequest j sent by another server s j =(sync, response jk , refs j , j), check whether H(response jk ) is in the local DAG i . If it exists, then unicast response j and the response messages directly referenced by it to the server s jk .
[0031] The present invention also provides a Byzantine reliable broadcast system based on a directed acyclic graph, which involves m clients and n servers and needs to establish an authenticated secure channel, where the number of malicious nodes in the server is at most t n <n / 3, including:
[0032] Initialization unit: For the i-th server s i initialize the local directed acyclic graph node set DAG i , the local reference set refs i , and the local dictionary votes i , where i ∈ {1,..., n};
[0033] Message sending unit: For the k-th client c k send the message v k to all servers, where k ∈ {1,..., m};
[0034] First receiving unit: When the server s i receives the message v k from the client c k , if it has not sent a response message response k about v ik , then broadcast response n with probability P = 1 / (2t ik +1);
[0035] Second receiving unit: used when the server s i Received from server s j response jk When, if response jk refs j All references are in DAG i In the middle, then H(response) jk Added as a new node to the DAG i Meanwhile, votes are being updated. i , where j∈{1,...,n}; if votes i Regarding a certain message v k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1 determines message v k Complete the message about v k Reliable broadcasting.
[0036] The present invention also provides a computer device, including a memory and a processor, wherein the memory stores a computer program, and the processor executes the computer program to implement the method described above.
[0037] The present invention also provides a computer-readable storage medium having a computer program stored thereon, which, when executed by a processor, implements the method described above.
[0038] Compared with existing technologies, the beneficial effects are: the Byzantine reliable broadcast method based on directed acyclic graphs provided by this invention can reduce the number of communication rounds and communication complexity of reliable broadcast protocols, thereby improving the efficiency of reliable broadcast. The current optimal reliable broadcast protocol requires 4 rounds of communication, while this invention requires 3 rounds; in the case of single-message reliable broadcast, the communication complexity of the current optimal reliable broadcast protocol is O(n|M|+kn+n). 2 logn), the present invention is O(n|M|+kn). Attached Figure Description
[0039] Figure 1 This is a flowchart of the main steps of the present invention, which sets up 4 clients and 4 servers, with at most 1 malicious node on each server.
[0040] Figure 2 This is a directed acyclic graph in the logic of server s2 in Example 1.
[0041] Figure 3 This is the directed acyclic graph logically formed by the DAG3 local DAG3 of the server s3 in Example 1 and its reference relationships.
[0042] Figure 4This is the directed acyclic graph logically formed by the DAG1 local DAG1 of the server s1 in Example 1 and its reference relationships.
[0043] Figure 5 This is the local directed acyclic graph of server s1 after the malicious node forwards the message in Example 2.
[0044] Figure 6 This represents the directed acyclic graph and cache for all servers in Example 2.
[0045] Figure 7 This is the directed acyclic graph and its buffer for all honest servers in Example 2. Detailed Implementation
[0046] The technical solutions of the embodiments of the present invention will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only a part of the embodiments of the present invention, and not all of the embodiments. The present invention will be described in one embodiment below with reference to specific embodiments. The accompanying drawings are for illustrative purposes only and represent schematic diagrams, not actual pictures, and should not be construed as limiting the present patent. In order to better illustrate the embodiments of the present invention, some parts of the drawings may be omitted, enlarged, or reduced, and do not represent the actual product size. It is understandable to those skilled in the art that some well-known structures and their descriptions may be omitted in the drawings.
[0047] If the embodiments of this invention involve descriptions such as "first" or "second," these descriptions are for descriptive purposes only and should not be construed as indicating or implying their relative importance or implicitly specifying the number of technical features indicated. Therefore, a feature defined with "first" or "second" may explicitly or implicitly include at least one of those features. Furthermore, the meaning of "and / or" throughout the text is to include three parallel solutions. For example, "A and / or B" includes solution A, solution B, or a solution that simultaneously satisfies A and B.
[0048] Example 1:
[0049] The client and server establish a secure authentication channel with each other. Here, it is assumed that the fourth server, s4, is a malicious node, and that c4 in this embodiment does not perform any action, i.e., neither sends nor receives any messages. Specifically, the steps include:
[0050] A. Servers s1, s2, and s3 initialize local directed acyclic graph node sets DAG1, DAG2, and DAG3, local reference sets refs1, refs2, and refs3, and local dictionaries votes1, votes2, and votes3, respectively.
[0051] A1, Server s1 initializes the local directed acyclic graph node set DAG1 = {H(response initial1 ),H(response initial2 The local reference set refs1 = {}, and the local dictionary votes1 = {}. Here, H is a collision-resistant hash function, and response... initial1 and response initial2 For two initial nodes in a directed acyclic graph, here they are simply set as strings to identify them as initial nodes, i.e., the response is set. initial1 ="intial_response1",response initial2 ="intial_response2". The same applies to server-side s2 and server-side s3.
[0052] B. The first client c1 sends message v1 to all servers;
[0053] B1. Client c1 sends the message v1 = (initial, value1, 1) to all servers, where initial is the identifier for the message sent by the client, and value1 is the message content sent by client c1.
[0054] C. When server s1 receives message v1 from client c1 and has also sent a response message from server s1 to the first client c1. 11 When, then with probability P = 1 / (2t) n +1) Broadcast response 11 The same applies to server-side s2 and s3.
[0055] C1. Server s1 receives the message v1 = (initial, value1, 1) from client c1, but has not yet sent a response message from server s1 to the first client c1. 11 When, let the integer a = 1, and at the same time randomly select from (1, 2, ..., 2t) n +1) Select an integer b. Assume server s1 selects integer b = 1. Servers s2 and s3 are similar, but assume that the integer b selected by servers s2 and s3 is not 1, then servers s2 and s3 will terminate processing the message.
[0056] C2. In server s1, a = b. In the local DAG1 of server s1, select the node that is the sender of s1 as the first reference ref1. Then, randomly select other nodes in DAG1 that are the senders of other servers as the second reference ref2. These two references should prioritize nodes that are not currently referenced. Then, add ref1 and ref2 to the reference set refs. i Since DAG1 only has two initial nodes, only H (response) can be chosen. initial1 H(response) is used as refs1. initial2 (as refs2)
[0057] C3. The local dictionary votes1 on the server s1 is currently empty, so this sub-step will not be executed.
[0058] C4. Server s1 broadcasts the response to all servers. 11 = (response, v1, refs1, 1), where response is the identifier of the response message.
[0059] D. When server s2 receives a response from server s1 11 When, if response 11 The references in refs1 are all in DAG2, so the response 11 Add it to DAG2, and update votes2 simultaneously. If votes2 contains information about a certain vote... k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1 determines message v k To complete a reliable broadcast.
[0060] D1. When server s2 receives a response from server s1 11 When, first determine H(response) 11 Is it in DAG2? Because H(response) 11 If it is not in DAG2, continue with the following steps.
[0061] D2. Analyzing the response 11 = (response, v1, refs1, 1), then the response is evaluated. 11 Are all references to refs1 in DAG2? What is the reference H(response) of refs1? initial1 ),H(response initial3 If all of H(response) are in DAG2, then H(response) will be in DAG2. 11It is added to DAG2 as a node.
[0062] D3. Since votes2 is currently empty, this sub-step will not be executed.
[0063] D4. Transfer the key-value pair (H(response)) 11 ):{H(response 11 Add it to the dictionary votes2, that is, votes2 = {(H(response)}} 11 ):{H(response 11 )})};
[0064] D5. Since there is currently no information regarding votes2. k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1, therefore this sub-step will not be executed.
[0065] D6. Since buffer2 is empty, this sub-step will not be executed.
[0066] The execution process of servers s1 and s3 in step D is the same as that of server s2. The local DAG1 of server s2, i.e., the reference relationships between nodes, can logically form a directed acyclic graph (DAG). In the response... 11 After reaching servers s1 and s3, all directed acyclic loops (DAGs) on all servers are complete. Figure 1 To, as Figure 2 The diagram shows the logical directed acyclic graph of server s2. The response... 11 exist Figure 2 The Chinese character is represented as R. 11 .
[0067] B. The second client c2 sends message v2 to all servers.
[0068] B1. Client c2 sends the message v2 = (initial, value2, 2) to all servers, where initial is the identifier for the message sent by the client, and value2 is the message content sent by client c2.
[0069] C. When server c2 receives message v2 from client c2 and has also sent a response message from server s2 to the second client c2. 22 When, then with probability P = 1 / (2t) n +1) Broadcast response 22 The same applies to server-side s1 and s3.
[0070] C1. Server s2 receives the message v2 = (initial, value2, 2) from client c2, but has not yet sent a response message from server s2 to the second client c2. 22 When, let the integer a = 1, and at the same time randomly select from (1, 2, ..., 2t) n +1) Select an integer b. Assume that server s2 selects an integer b = 1. Servers s1 and s3 follow the same logic, but assume that the integer b selected by servers s1 and s3 is not 1, then servers s1 and s3 will stop processing the message.
[0071] C2. In server s2, a = b, and refs2 is initialized to an empty set. In the local DAG2 of server s2, a node that is the sender of s2 is selected as the first reference ref1. Then, another node in DAG2 that is the sender of the server is randomly selected as the second reference ref2. These two references should prioritize nodes that are not currently referenced. Finally, ref1 and ref2 are added to the reference set refs. i In the middle. The server s2 selects H (response). initial1 ) as ref1, select H(response) 11 ) as ref2.
[0072] C3.votes2={(H(response 11 ):{H(response 11 Therefore, this sub-step is not executed.
[0073] C4. Server s2 broadcasts the response to all servers. 22 = (response, v2, refs2, 2), where response is the identifier of the response message.
[0074] D. When server s3 receives a response from server s2 22 When, if response 22 The references in refs2 are all in DAG3, so the response... 22 Add it to DAG2 and update votes3 simultaneously. If votes3 contains information about a certain vote... k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1 determines message v k To complete a reliable broadcast.
[0075] D1. When server s3 receives a response from server s2 22 When, first determine H(response)22 Is it in DAG3? Because H(response) 22 If it is not in DAG3, continue with the following steps.
[0076] D2. Analyzing the response 22 =(response,v2,refs2,2), determine response 22 Are all references to refs2 in DAG3? The references to refs2, H(response) initial1 ),H(response 11 If all of them are in DAG3, then H(response) 22 It is added to DAG3 as a node.
[0077] D3.H(response 22 If a node is added to DAG3, then the dictionary `votes3` is traversed. The reference `H(response)` in `refs2`... 11 ) equals the key-value pair (H(response) in the dictionary votes3. 11 ):{H(response 11 If the key is H(response), then H(response) 11 ) is the response 22 Direct reference to H(response) 22 Add it to the value of this key, that is, votes3 = {(H(response)} 11 ):{H(response 11 ),H(response 22 )})}.
[0078] D4. Transfer the key-value pair (H(response)) 22 ):{H(response 22 Add the following to the dictionary `votes3`: `votes3 = {(H(response)}` 11 ):{H(response 11 ),H(response 22 )}),(H(response 22 ):{H(response 22 )})}.
[0079] D5. Since there is currently no information regarding votes3, k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1, therefore this sub-step will not be executed.
[0080] D6. Since buffer3 is empty, this sub-step will not be executed.
[0081] The execution process of servers s1 and s2 in step D is the same as that of server s3. Figure 3 This is a directed acyclic graph (DAG3) logically formed by the server's local DAG3 and its reference relationships. The response... 11 exist Figure 3 The Chinese character is represented as R. 11 response 22 exist Figure 3 The Chinese character is represented as R. 22 .
[0082] B. The third client c3 sends message v3 to all servers.
[0083] B1. Client c3 sends the message v3 = (initial, value3, 3) to all servers, where initial is the identifier for the message sent by the client, and value3 is the message content sent by client c3.
[0084] C. When server s3 receives message v3 from client c3 and has also sent a response message from server s3 to the third client c3. 33 When, then with probability P = 1 / (2t) n +1) Broadcast response 33 The same applies to server-side s1 and s2.
[0085] C1. Server s3 receives the message v3 = (initial, value3, 3) from client c3, but has not yet sent a response message from server s3 to the third client c3. 33 When, let the integer a = 1, and at the same time randomly select from (1, 2, ..., 2t) n +1) Select an integer b. Assume that server s3 selects an integer b = 1. Servers s1 and s2 are similar, but assume that the integer b selected by servers s1 and s2 is not 1, then servers s1 and s2 will stop processing the message.
[0086] C2. In server s3, a = b, and refs3 is initialized as an empty set. In the local DAG3 of server s3, a node that is the sender of s3 is selected as the first reference ref1. Then, another node in DAG3 that is the sender of the server is randomly selected as the second reference ref2. These two references should prioritize unreferenced nodes. Then, ref1 and ref2 are added to the reference set refs3. Server s3 selects H (response). initial2) as ref1, select H(response) 22 ) as ref2.
[0087] C3. The server-side local dictionary `votes3` = {(H(response)} 11 ):{H(response 11 ),H(response 22 )}),(H(response 22 ):{H(response 22 The number of times a node related to v1 is referenced by different servers is greater than or equal to t. n +1 = 2, but the current server s3 has already indirectly referenced this node, so there is no need to add H(response) to the existing node. 11 Add it to refs3.
[0088] C4. Server s3 broadcasts the response to all servers. 33 = (response, v3, refs3, 3), where response is the identifier of the response message.
[0089] D. When server s1 receives a response from server s3 33 When, if response 33 The references in refs3 are all in DAG1, so the response 33 Add it to DAG1, and update votes1 simultaneously. If votes1 contains information about a certain vote... k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1 determines message v k To complete a reliable broadcast.
[0090] D1. When server s1 receives a response from server s3 33 When, first determine H(response) 33 Is it in DAG1? Because H(response) 33 If it is not in DAG1, continue with the following steps.
[0091] D2. Analyzing the response 33 = (response, v3, refs3, 3), then the response is evaluated. 33 Are all references to refs3 in DAG1? The references to refs3, H(response) initial2 ),H(response 22If all of H(response) are in DAG1, then H(response) 33 It is added to DAG1 as a node.
[0092] D3.H(response 33 If a node is added to DAG1, then the dictionary `votes1` is traversed. The reference `H(response)` in `refs3`... 22 ) equals the key-value pair (H(response) in the dictionary votes1. 22 ):{H(response 22 The key of H(response) is then H(response). 33 ) is the response 22 Direct reference to H(response) 33 Add it to the value of that key. The reference H(response) in refs3 22 ) equals the key-value pair (H(response) in the dictionary votes1. 11 ):{H(response 11 ),H(response 22 If the value of the dictionary votes3 key-value pair is given, then the key H(response) is the key of the dictionary votes3 key-value pair. 11 ) is the response 33 Indirect reference, H(response) 33 Add it to the value of that key. That is, votes1 = {(H(response)} 11 ):{H(response 11 ),H(response 22 ),H(response 33 )}),
[0093] ((H(response 22 ):{H(response 22 ),H(response 33 )})}.
[0094] D4. Transfer the key-value pair (H(response)) 33 ):{H(response 33 Add it to the dictionary votes1, that is, votes1 = {(H(response)}} 11 ):{H(response 11 ),H(response 22 ),H(response 33 )}),((H(response 22):{H(response 22 ),H(response 33 )}),((H(response 33 ):{H(response 33 )}))}.
[0095] D5. Since currently votes1 and node H(response) about message v1. 11 It is referenced by servers s1, s2, and s3, meaning it is referenced by different servers at a frequency greater than or equal to 2t. n If +1 = 3, then server s1 can decide on message v1 and complete reliable broadcasting. At this point, the node related to message v1 is removed from votes1.
[0096] D6. Since buffer3 is empty, this sub-step cannot be performed.
[0097] The execution process of servers s2 and s3 in step D is the same as that of server s1. That is, server s2 can decide message v1 and complete reliable broadcast, and server s3 can also decide message v1 and complete reliable broadcast. At this time, the node related to message v1 is deleted from votes2 and votes3. Figure 4 This is a directed acyclic graph (DAG1) logically formed by the server c1's local DAG1 and its reference relationships. The response... 11 exist Figure 4 The Chinese character is represented as R. 11 response 22 Represented as R 22 response 33 Represented as R 33 .
[0098] Example 2:
[0099] The client and server establish a secure channel for authentication with each other. Here, it is assumed that the fourth server s4 is a malicious node. It is also assumed that s4 can have any behavior in this embodiment. For example, it can unicast messages that can enter the DAG to other honest servers, so that the messages forwarded by the server cannot enter the graph.
[0100] A. Servers s1, s2, and s3 initialize local directed acyclic graph node sets DAG1, DAG2, and DAG3, local reference sets refs1, refs2, and refs3, and local dictionaries votes1, votes2, and votes3, respectively.
[0101] A1. Server s1 initializes the local directed acyclic graph node set DAG1 = {H(response initial1 ),H(responseinitial2 The local reference set refs1 = {}, and the local dictionary votes1 = {}. Here, H is a collision-resistant hash function, and response... initial1 and response initial2 For two initial nodes in a directed acyclic graph, here they are simply set as strings to identify them as initial nodes, i.e., the response is set. initial1 ="intial_response1",response initial2 ="intial_response2". The same applies to server-side s2 and server-side s3.
[0102] B. The fourth client, c4, sends message v4 to all servers;
[0103] B1. Client c4 sends the message v4 = (initial, value4, 4) to all servers, where initial is the identifier for the message sent by the client;
[0104] C. When servers s1, s2, and s3 receive message v4 from client c4 and have also sent a response message from server s1 to the fourth client c4. 14 The response message from server s2 to the fourth client c4 24 The response message from server s3 to the fourth client c4 34 When, then with probability P = 1 / (2t) n +1) Broadcast response 14 response 24 response 34 However, let's assume that none of the servers s1, s2, and s3 broadcast a response. 14 response 24 response 34 At this point, a malicious server forged a message that allowed entry into DAG1, namely the response. 44 =(response,v4,refs4={H(response initial1 ),H(response initial2 )},4), and will the response 44 Unicast to server s1.
[0105] D. When server s1 receives a response from server s4 44 When, if response 44The references in refs4 are all in DAG1, so the response... 44 Add it to DAG1, and update votes1 simultaneously. If votes1 contains information about a certain vote... k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1 determines message v k To complete a reliable broadcast.
[0106] D1. When server s1 receives a response from server s4 44 When, first determine H(response) 44 Is it in DAG1? Because H(response) 44 If it is not in DAG1, continue with the following steps.
[0107] D2. Analyzing the response 44 =(response,v4,refs4,4), determine response 44 Are all references to refs4 in DAG1? What is the reference H(response) to refs4? initial1 ),H(response initial2 If all of them are in DAG1, then H(response) 44 It is added to DAG1 as a node.
[0108] D3. Since votes1 is currently empty, this sub-step will not be executed.
[0109] D4. Transfer the key-value pair (H(response)) 44 ):{H(response 44 Add it to the dictionary votes1, that is, votes1 = {(H(response)}} 44 ):{H(response 44 )})}.
[0110] D5. Since votes1 currently has no information regarding v k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1, therefore this sub-step will not be executed.
[0111] D6. Since buffer1 is empty, this sub-step will not be executed.
[0112] Since neither server s2 nor server s3 received a response from the malicious node unicast to server s1. 44Therefore, currently only the DAG1 of s1 and the directed acyclic graph formed by its references logically possess a response. 44 ,as follows Figure 5 As shown. The response... 44 In the diagram, it is represented as R. 44 .
[0113] B. The first client c1 sends message v1 to all servers.
[0114] B1. Client c1 sends the message v1 = (initial, value1, 1) to all servers, where initial is the identifier of the message sent by the client and value1 is the message content sent by client c1.
[0115] C. When server s1 receives message v1 from client c1 and has also sent a response message from server s1 to the first client c1. 11 When, then with probability P = 1 / (2t) n +1) Broadcast response 11 The same applies to server-side s2 and s3.
[0116] C1. Server s1 received the message v1 = (initial, value2, 2) from client c1, but has not yet sent a response message from server s1 to the first client c1. 11 When, let the integer a = 1, and at the same time randomly select from (1, 2, ..., 2t) n +1) Select an integer b. Assume that server s1 selects an integer b = 1. Servers s2 and s3 are similar, but assume that the integer b selected by servers s2 and s3 is not 1, then servers s2 and s3 will stop processing the message.
[0117] C2. In server s1, a = b, and refs1 is initialized to an empty set. In the local DAG1 of server s1, a node that has been broadcast and added to the graph by server s1 is selected as the first reference ref1. Then, other nodes not referenced in DAG1 by the server are randomly selected as the second reference ref2. ref1 and ref2 are added to the reference set refs1. Server s1 selects H(response)... initial1 ) as ref1, select H(response) 44 ) as ref2;
[0118] C3.votes1={(H(response 44 ):{H(response 44 Therefore, this sub-step is not executed.
[0119] C4. Server s1 broadcasts the response to all servers. 11 = (response, v1, refs1, 1), where response is the identifier of the response message.
[0120] D. When server s2 receives a response from server s1 11 When, if response 11 The references in refs1 are all in DAG2, so the response 11 Add it to DAG2, and update votes2 simultaneously. If votes2 contains information about a certain vote... k The number of nodes referenced by different processes is greater than or equal to 2t. n +1, then v can be determined k value in k To complete a reliable broadcast.
[0121] D1. When server s2 receives a response from server s1 11 When, first determine H(response) 11 Is it in DAG2? Because H(response) 11 If it is not in DAG2, perform the following steps.
[0122] D2. Analyzing the response 11 =(response,v1,refs1,1), determine response 11 Are all references to refs1 in DAG2? Are all references to refs4 in H(response)? initial1 In DAG2, but H(response) 44 H(response) is not in DAG3. 44 Unable to be added as a node to DAG2, response 11 Add it to the local cache buffer2. The same applies to the server-side s3.
[0123] All server-side directed acyclic graphs and caches, such as Figure 6 As shown. The response... 44 In the diagram, it is represented as R. 44 response 11 In the diagram, it is represented as R. 11 .
[0124] Since server s2 and server s3 have already given the response 11Since the data is added to the local cache, steps D3) through D6) cannot be executed, requiring additional steps. Assume the parameter setting on each server is x = 1.
[0125] E1. If the size of the local buffers buffer2 and buffer3 on server s2 and s3 exceeds the threshold 1, then all messages in buffer2 and buffer3 will be broadcast synchronously using syncRequest2 = (sync, response) 11 ,refs1,2), syncRequest3=(sync,response 11 ,refs1,3), and clear buffer2 and buffer3 respectively. Where sync is the identifier for the synchronization request.
[0126] E2. When server s1 receives a synchronization request syncRequest2 = (sync, response) from another server s2. 11 When checking refs1,2), examine the H(response) in the synchronization request. 11 H(response) 11 In the local DAG1, the response is unicast to the server s2. 11 and the direct reference message response in refs1 44 Similarly, when server s1 receives syncRequest3, it also unicasts a response to server s3. 11 and the direct reference message response in refs1 44 .
[0127] D. When server s2 first receives the unicast response from server s1 11 Then, the response was given again. 11 Add it to buffer2 on the cache, and do the same for server-side s3.
[0128] D. When server s2 receives a response from server s1 44 When, if response 44 The references in refs4 are all in DAG2, so the response... 44 Add it to DAG2, and update votes2 simultaneously. If votes2 contains information about a certain vote... k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1 determines message v k To complete a reliable broadcast.
[0129] D1. When server s2 receives a response from server s1 44 When, first determine H(response) 44 Is it in DAG2? Because H(response) 44 If it is not in DAG2, continue with the following steps.
[0130] D2. Analyzing the response 44 = (response, v4, refs4, 4), then the response is evaluated. 44 Are all references to refs4 in DAG2? Are all references to refs4 in H(response)? initial1 ),H(response initial3 If all of H(response) are in DAG2, then H(response) will be in DAG2. 44 Add it as a node to DAG3. The same applies to the server-side s3.
[0131] D3. Since votes2 is currently empty, this sub-step will not be executed.
[0132] D4. Transfer the key-value pair (H(response)) 44 ):{H(response 44 Add it to the dictionary votes2, that is, votes2 = {(H(response)}} 44 ):{H(response 44 )})}.
[0133] D5. Since there is currently no information regarding votes2. k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1, therefore this sub-step will not be executed.
[0134] D6. Because H(response) 44 Adding DAG2 and DAG3 caused the responses in buffer2 and buffer3 to be cached. 11 If the conditions for adding DAG2 and DAG3 are met, then proceed with steps D1)-D6).
[0135] Ultimately, with the guarantees of additional steps E1)-E2), all honest servers can handle unicast messages that can be entered into the graph from malicious servers to other servers. The directed acyclic graph of all honest servers and its cache are as follows: Figure 7 As shown.
[0136] The subsequent message processing on honest clients is the same as in Example 1, so it will not be repeated here. Ultimately, all honest servers can determine v4 = (initial, value4, 4) even in the event of malicious server misbehavior, ensuring consistency, verifiability, and globality.
[0137] Example 3
[0138] This embodiment provides a computer device, including a memory and a processor. The memory stores a computer program, and the processor executes the computer program to implement the method described in Embodiment 1 or Embodiment 2.
[0139] Example 4
[0140] This embodiment provides a computer-readable storage medium having a computer program stored thereon, which, when executed by a processor, implements the method described in Embodiment 1 or Embodiment 2.
[0141] In the description of this specification, the references to terms such as "one embodiment," "some embodiments," "example," "specific example," or "some examples," etc., refer to specific features, structures, materials, or characteristics described in connection with that embodiment or example, which are included in at least one embodiment or example of the present invention. In this specification, the illustrative expressions of the above terms do not necessarily refer to the same embodiment or example. Furthermore, the specific features, structures, materials, or characteristics described may be combined in any suitable manner in one or more embodiments or examples. Moreover, without contradiction, those skilled in the art can combine and integrate the different embodiments or examples described in this specification, as well as the features of different embodiments or examples.
[0142] Obviously, the above embodiments of the present invention are merely examples for clearly illustrating the present invention, and are not intended to limit the implementation of the present invention. Those skilled in the art can make other variations or modifications based on the above description. It is neither necessary nor possible to exhaustively describe all embodiments here. Any modifications, equivalent substitutions, and improvements made within the spirit and principles of the present invention should be included within the scope of protection of the claims of the present invention.
Claims
1. A Byzantine reliable broadcast method based on directed acyclic graphs, characterized in that, This involves m clients and n servers, requiring the establishment of a secure authentication channel. The number of malicious nodes on the servers is at most t. n <n / 3, including the following steps: A. The i-th server s i Initialize the local directed acyclic graph (DAG) node set. i Local reference collection refs i And the local dictionary votes i where i∈{1,...,n}; B. The kth client c k Send message v to all servers k , where k∈{1,...,m}; C. When the server s i Received from client c k Message v k If you haven't sent anything about v yet k response message ik Then, with probability P = 1 / (2t) n +1) Broadcast response ik ; D. When the server s i Received from server s j response jk When, if response jk refs j All references are in DAG i In the middle, then H(response) jk Added as a new node to the DAG i Meanwhile, votes are being updated. i , where j∈{1,...,n}; if votes i Regarding a certain message v k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1 determines message v k Complete the message about v k Reliable broadcasting.
2. The Byzantine reliable broadcast method based on directed acyclic graphs according to claim 1, characterized in that, Step A specifically includes: server s i Initialize the local directed acyclic graph node set DAG i ={H(response initial1 ),H(response initial2 )}, Where H is a collision-resistant hash function, and response initial1 and response initial2 Given two initial nodes in a directed acyclic graph, initialize the local reference set to null (refs). i ={} and the local dictionary being empty (votes) i ={}.
3. The Byzantine reliable broadcast method based on directed acyclic graphs according to claim 2, characterized in that, Step B specifically includes: client c k Send message v to all servers k = (initial, value) k ,k), where initial is the identifier for the message sent by the client, value k The message content sent by the client, where k is the client number.
4. The Byzantine reliable broadcast method based on directed acyclic graphs according to claim 3, characterized in that, Step C specifically includes: C1. Server-side s i Received from client c k Message v k = (initial, value) k ,k), if no message v has been sent yet k response message ik Let the integer a = 1, and at the same time randomly select from (1, 2, ..., 2t) n If a = b, select an integer b from +1). If a = b, continue with the following steps; otherwise, stop processing the message. C2. Initialize refs i It is an empty set, on the server s i Local DAG i Select s from i The sender's node is used as the first reference ref1, and then a node is randomly selected in the DAG. i Other server nodes that are the senders are used as the second reference, ref2. These two references should prioritize unreferenced nodes, and then ref1 and ref2 should be added to the reference set refs. i middle; C3. If server s i Local dictionary votes i Regarding the news v k The number of times a node is referenced by different servers is greater than or equal to t. n +1, and the current server s i If the node is not yet directly or indirectly referenced, then add the node to the reference set refs. i among; C4. Server-side s i Broadcast response to all servers ik =(response, v k refs i ,i), where response is the identifier of the response message and i is the server number.
5. The Byzantine reliable broadcast method based on directed acyclic graphs according to claim 4, characterized in that, Step D specifically includes: D1. When the server s i Received from server s j response jk When, determine H(response) jk Is it in DAG? i If the condition is met, execution will be suspended; otherwise, the following steps will be executed. D2. Analyzing the response jk =(response, v k refs j ,j), determine refs j Are all references in the DAG? i If the response is not included jk Add to local cache buffer i If the condition is met, execution will be suspended; otherwise, H(response) will be executed. jk Added as a node to the DAG i In the middle, perform the following steps; D3. Traversing the dictionary votes i If refs j A reference in the dictionary is equal to the votes dictionary. i For a given key, or a set of values corresponding to that key, H(response) jk Add it to the value set of this key to indicate the response. jk The node corresponding to this key has a direct or indirect reference; D4. Transfer the key-value pair (H(response)) jk ): {H(response jk Add to the dictionary votes i middle; D5. Statistics on message v k The number of times a node is referenced by different servers, if regarding message v k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1 determines message v k Complete reliable broadcasting, and transmit the message about v k The node from votes i Delete; D6. If H(response) jk Added as a node to the DAG i In the middle, the buffer i There is a response message that satisfies the requirement to join the DAG. i If the conditions are met, then steps D1 to D6 will be executed.
6. The Byzantine reliable broadcasting method based on directed acyclic graphs according to any one of claims 1 to 5, characterized in that, Also includes E1: if server s i Local cache buffer i If the size exceeds the threshold x, then it is a buffer. i All response messages broadcast synchronization requests syncRequest i =(sync, response) jk refs j (i), and clear the buffer. i , where sync is the identifier for a synchronous request.
7. The Byzantine reliable broadcast method based on directed acyclic graphs according to claim 6, characterized in that, Also includes E2: when the server s i Received from other servers j Sending a synchronization request (syncRequest) j =(sync, response) jk refs j When j), check the H(response) in the synchronization request. jk Is it in the local DAG? i If it exists, then send it to the server s. j unicast response jk and the response message it directly references.
8. A Byzantine reliable broadcast system based on a directed acyclic graph, characterized in that, This involves m clients and n servers, requiring the establishment of a secure authentication channel. The number of malicious nodes on the servers is at most t. n <n / 3, including: Initialization unit: used for the i-th server s i Initialize the local directed acyclic graph (DAG) node set. i Local reference collection refs i And the local dictionary votes i where i∈{1,...,n}; Message sending unit: used for the k-th client c k Send message v to all servers k , where k∈{1,...,m}; First receiving unit: used when the server s i Received from client c k Message v k If you haven't sent anything about v yet k response message ik Then, with probability P = 1 / (2t) n +1) Broadcast response ik ; Second receiving unit: used when the server s i Received from server s j response jk When, if response jk refs j All references are in DAG i In the middle, then H(response) jk Added as a new node to the DAG i Meanwhile, votes are being updated. i , where j∈{1,...,n}; if votes i Regarding a certain message v k The number of times a node is referenced by different servers is greater than or equal to 2t. n +1 determines message v k Complete the message about v k Reliable broadcasting.
9. A computer device comprising a memory and a processor, wherein the memory stores a computer program, characterized in that, When the processor executes the computer program, it implements the method according to any one of claims 1 to 7.
10. A computer-readable storage medium having a computer program stored thereon, characterized in that, When the computer program is executed by a processor, it implements the method described in any one of claims 1 to 7.