Skip to content

🌐 A curated list of anonymous networks & research papers

License

Notifications You must be signed in to change notification settings

number571/awesome-anonymity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 

Repository files navigation

title.jpg

Awesome Anonymity

License Activity Commits

About repository

Each anonymous network can be attributed to a specific problem (or to a hybrid of certain problems). Currently, there are five anonymization problems: Onion, Proxy, DC, QB, EI. If the network does not belong to one of these problems, it means that either the network is not anonymous, or a new anonymization problem has been opened. In the latter case, it is necessary to prove that the new anonymization problem actually implements an algorithm for obfuscating/hiding routing.

What is anonymity?

Anonymity is the concealment of the true connections between multiple senders and recipients from multiple observers. At the same time, many observers can be located in both a set of senders and a set of recipients, which makes the task of anonymization more time-consuming and selective.

Examples of non-anonymous networks

  • All centralized services: Telegram, Facebook, Github, ...
  • Client-secure only applications: Bitmessage, RetroShare, Freenet ...
  • Decentralized networks without an obfuscating/hiding routing algorithm: MUTE, ...
  • Pure VPN, Proxy services without additional obfuscating/hiding routing algorithm
  • Highly specialized systems with the property of confidential: Monero, Dash, ...
  • Applications based on an anonymous network: HLM (messenger), HLF (filesharer), ...
Why is Monero not an anonymous network?

If we assume that RingSignature is an anonymization problem, then it should ensure anonymity in the network communication of subscribers. Let's further assume that there are three subscribers: {A, B, C}, who know each other's public keys and are connected to each other. In this case, A signs the message m with the public keys {B, C} and his private key, thereby forming a ring signature s. Next, subscriber A sends {m, s} to participant B. No one except {A, C}, without knowledge of their private keys, would be able to send this message, which is related to the authentication indicator, but not anonymity, because if the ring signature s did not exist at all, then the situation on the part of anonymity would not have changed at all. If we used additional proxying or tunneling, it would become a completely different problem, i.e. Proxy or Onion. Thus, the use of ring signatures is more similar to the use of a common MAC value by three participants on the part of symmetric cryptography. Only in the first case, instead of symmetric cryptography, we use asymmetric cryptography, without risking compromising the only secret.

Why is Dash not an anonymous network?

Unlike Monero, cryptocurrency Dash does have an anonymization problem similar to Mix networks, where one node accepts X denominations of the same length from the sender, which are then mixed and sent to the final recipient. Nevertheless, this Mix problem is only a special case of the Onion/Mix problem, because it does not encrypt data and, as a result, allows mixing data exclusively in currency format.

Tags

  1. network_arch = [p2p, hybrid]
  2. network_type = [open, closed]
  3. source_code = [open, closed, missing]
  4. subtype_problem = [mixnet, garlic, f2f]
  5. todo_tag (need add/set tags)

Problems

1. Onion

onion.png

Pattern

E(K3, E(K2, E(K1, M))) -> E(K2, E(K1, M)) -> E(K1, M) -> M
where
	E          - encryption
	M          - message
	K1, K2, K3 - keys

Research papers

Networks

  • Tor: network_arch=hybrid, network_type=open|closed, source_code=open
  • I2P: network_type=p2p, network_type=closed, source_code=open, subtype_problem=garlic
  • Mixminion: network_arch=hybrid, network_type=open, source_code=open, subtype_problem=mixnet
  • Perfect Dark: network_type=hybrid, network_type=closed, source_code=closed, subtype_problem=mixnet

2. Proxy

proxy.png

Pattern

E(K3, M) -> E(K2, M) -> E(K1, M) -> M
where
	E          - encryption
	M          - message
	K1, K2, K3 - keys

Research papers

Networks

  • Crowds: network_arch=hybrid, network_type=open, source_code=missing

3. DC (dining cryptographers problem)

dc.png

Pattern

(A(B) xor A(C)) xor (B(A) xor B(C)) xor (C(A) xor C(B))    -> M = 0
(A(B) xor A(C)) xor (B(A) xor B(C)) xor not(C(A) xor C(B)) -> M = 1
where
	M           - message
	A(B) = B(A) - total generated bit between A and B
	B(C) = C(B) - total generated bit between B and C
	C(A) = A(C) - total generated bit between C and A

Research papers

Networks

  • Herbivore: network_arch=p2p, network_type=open, source_code=missing
  • Dissent: network_arch=hybrid, network_type=open, source_code=open
  • PriFi: network_arch=hybrid, network_type=open, source_code=open

4. QB (queue based problem)

qb.png

Pattern

(E(K, M) OR E(R, V)) <- A(x)
where
	E    - encryption
	K, R - key, random key
	M, V - message, void message
	A(x) - generation algorithm with independent event

Research papers

Networks

  • Hidden Lake: network_arch=p2p, network_type=closed, source_code=open, subtype_problem=f2f
  • M-A: network_arch=p2p, network_type=closed, source_code=open

5. EI (entropy increase problem)

ei.png

Pattern

E(K1, M) OR E(K2, E(K1, M))
where
	E      - encryption
	M      - message
	K1, K2 - keys

Research papers

Networks

  • _

License

Licensed under the MIT License. See LICENSE for the full license text.