Code to simulate the security of routing Quorums under various conditions.
|MaidSafe website||SAFE Dev Forum||SAFE Network Forum|
Two probabilities are output: the probability that any group in the network is prevented from reaching the correct result via quorum, and the probability that any group is compromised (i.e. reaches the wrong result via quorum).
Three tools are available, calculating the output probabilities in different ways:
- DirectCalcTool — this assumes every group has the minimum size given and uses probability theory to calculate the result.
- SimStructureTool — this simulates the development of a network, then uses probability theory to calculate the result given these group sizes. Does not simulate node ageing.
- FullSimTool — this simulates the development of a network (only including the non-malicious nodes), then simulates an attack (where only malicious nodes are added), which may or may not result in lost quorum and compromised quorum. The simulation is then repeated many times (see -p parameter) to obtain a probability. Currently this always simulates relocation due to node ageing, regardless of quorum used.
Two types of quorum are implemented:
- SimpleQuorum — quorum is achieved when the given proportion of nodes send a response
- AgeQuorum — quorum requires both the given proportion of nodes and the given proportion of sum of the nodes ages.
The following strategies have been implemented. This is by no means an exhaustive list of all possible strategies!
- UntargettedAttack — malicious nodes never reset themselves
- SimpleTargettedAttack — malicious nodes choose a target group, and reset themselves as soon as they are not found in that group. This strategy is completely useless when an age-based quorum is used since malicious nodes do not get the chance to age!
- target, but only reset above some age to allow ageing first
- select some nodes for ageing and do not reset these (often), while using another set of nodes to age these via targetting (this strategy could be mitigated by applying churns to a different group than added to)
Licensed under either of
- the MaidSafe.net Commercial License, version 1.0 or later (LICENSE)
- the General Public License (GPL), version 3 (COPYING or http://www.gnu.org/licenses/gpl-3.0.en.html)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the MaidSafe Contributor Agreement, version 1.1 ([CONTRIBUTOR] (CONTRIBUTOR)), shall be dual licensed as above, and you agree to be bound by the terms of the MaidSafe Contributor Agreement, version 1.1.