Research Article

A Reputation-Based Approach Using Consortium Blockchain for Cyber Threat Intelligence Sharing

Algorithm 2

Reputation model computing phase.
Data: state: the state of a node, AC: the alert information from internal organization or the original CTI from external organization, threshold: threshold is the predefined constant that distinguishes the faithful node and unfaithful node, num: total number of nodes in the CTI sharing consortium network.
Result: void
(1)begin
(2)switch state do:
(3)  case “leader”:
(4)   generate proposal when received the AC from client;
(5)   for i = 1, i++, i<=num do:
(6)    send proposal and AC to node i;
(7)   communicate with the Supervisor node by ReputationCompute RPC;
(8)   if “success” in the return of ReputationCompute RPC then:
(9)    step to phase 3; The leader provides a high-value threat proposal correctly, which needs to be stored in each node through phase 3 /
(10)    break
(11)   else:
(12)    step to phase 2 again to process the new alert information from client; The leader failed to provide the correct proposal of this alert /
(13)    break
(14)  case “follower”:
(15)   generate threat proposal based on the the AC from leader;
(16)   communicate with the Supervisor node by ReputationCompute RPC;
(17)   receive the UNL data from the supervisor;
(18)   if the leader node is in UNL then:
(19)    term number +1; The leader node may provide too much false proposal due to malware control, so a new leader needs to be elected again in the phase 1 /
(20)    break
(21)   break
(22)  case “supervisor”:
(23)   receive the ReputationCompute RPC from all nodes in the network;
(24)   compute the reputation score of nodes based on reputation model;
(25)   if threat proposal from node i decided as “success” then:
(26)    the reputation score of node i increase;
(27)    if the reputation score of node i >= threshold then:
(28)     remove node i from UNL;
(29)   else:
(30)    the reputation score of node i decrease;
(31)    if the reputation score of node i < threshold then:
(32)     add node i to UNL;
(33)   for i = 1, i++, i<=num do:
(34)    send UNL to the node i;
(35)   break
(36)end