On learning about PARSEC a few people have jumped in to question its vulnerability to a Sybil attack. Those in the know have pointed out that this would indeed be an issue were it not for other features such as node aging which make this sort of attack much more difficult. Security is maximised by having an interlocking set of features each covering the others’ vulnerabilities – strength in depth. I thought it might be helpful to list all the security features of SAFE and how they combine to ward of the main sorts of attacks. Not really my area of expertise so feel free to chip in.
Features
Encryption - All data on the SAFE Network is protected by several layers of encryption. Even public data is encrypted but in this case the keys are shared to allow others to decrypt it.
Self-encryption - files stored on the network are encrypted then broken into chunks. These chunks themselves encrypted using the hash the previous chunk, hashed and stored at geographically random locations (the location is the hash of the encrypted chunk) on the network with a number of copies retained for redundancy.
XOR networking - randomises the geographical distribution of the chunks. Only someone in possession of the datamap (ie the owner) can find the chunks and piece them together again to recreate the file. Anyone trying to fake a chunk could not do so as its hash - and therefore its address on the network - would be different.
Self-authentication - a user can create an account and log into the decentralised SAFE Network securely and anonymously without requiring any central server to mediate the login process or any trusted third party to store and manage users’ credentials.
Proxy node - To retain anonymity, the identity of a client connecting to the network must be obfuscated from the nodes that comprise it. For this reason connections between clients and vaults in the SAFE Network always occur via a proxy node.
Disjoint sections - addresses on the SAFE network are grouped into sections with each section managed by a small number of nodes. Those nodes know everything about the section they are responsible but very little about the rest of the network. Moreover, the membership of a section is constantly changing and sections will frequently split or merge. So even if an attacker could control a section his potential for damage would be limited.
Datachain - All events occuring in a section are stored in a ledger - a datachain. All section members hold a copy. Elements of it are also shared with nearby (in XOR terms) groups. Because other sections are able to audit their neighbours it becomes harder for an attacker to benefit.
PARSEC - The new PARSEC consensus algorithm provides an quick and efficient way to be sure of the true order of events happening within a section, and by extension in the whole network, even when the section is changing rapidly with nodes leaving and joining.
Node ageing - only nodes that have proved their worth over time (elders) are allowed to vote on the validity of events in a section. Nodes that do not pull their weight or act as they should will be expelled and/or their node age reset to a lower value.
Membership rules - there are rules about how many new nodes (low node age) can join a section.
Churn - nodes are constantly joining or leaving sections. Membership is fluid (how fluid I guess remains to be seen).
Defence against common attacks
Sybil attack - In a Sybil attack, the attacker subverts the reputation system of a peer-to-peer network by creating a large number of pseudonymous identities, using them to gain a disproportionately large influence.
This could be possible if PARSEC were used alone as an attacker owning more than one third of the nodes could effectively take control and manipulate events. However, a combination of node ageing, datachains, churn, rules on joining sections and sections splitting and merging would make this massively more difficult (and presumably very expensive).
Google Attack - when a large company (such as Google) owns a significant portion of the vaults on the network. On blockchains I think this is called a 51% attack - anyone who controls 51% of the nodes wins.
An attacker owning a large number of nodes could potentially control individual sections and block actions happening to data in that section (get, put, transfer Safecoin) but only in the fraction of data the section controls, not the whole network. In addition, disrupting an individual’s data would be impossible - you cannot know where it is stored. However, someone with enough nodes could bring the network down, potentially. This gets harder as the network grows.
Phishing, keylogging etc - these could still work. Any attack on the endpoint that revealed your credentials could allow an attacker to access your data. But only your data (and that others have allowed you to see). Using that as a springboard for a wider attack on a database or whatever would not be possible. For an attacker it would be of dubious value.
Man in the middle attacks - should be impossible. (?)
DDoS - very difficult as there is not one single point to attack. The network will simply reroute around any nodes that are taken down.
Quantum computing - who knows? The encryption would be shot but the decentralisation would provide additional barriers.
Ransomware - nah - nothing to lock
Any more?