aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorng0 <ng0@infotropique.org>2017-10-28 18:41:01 +0000
committerng0 <ng0@infotropique.org>2017-10-28 18:41:01 +0000
commit3df09f73a2a93b9858ac6029e1583829c07f2cf1 (patch)
tree9e391643918dcb75bf7b109032f32fa70eb9b6bb /doc
parentdb1c7a0dd711d032bf874f6f6bf13e80aa2a07d1 (diff)
downloadgnunet-3df09f73a2a93b9858ac6029e1583829c07f2cf1.tar.gz
gnunet-3df09f73a2a93b9858ac6029e1583829c07f2cf1.zip
+
Diffstat (limited to 'doc')
-rw-r--r--doc/documentation/chapters/philosophy.texi90
1 files changed, 46 insertions, 44 deletions
diff --git a/doc/documentation/chapters/philosophy.texi b/doc/documentation/chapters/philosophy.texi
index 0f948fcab..ac9b91c80 100644
--- a/doc/documentation/chapters/philosophy.texi
+++ b/doc/documentation/chapters/philosophy.texi
@@ -1,4 +1,4 @@
1@cindex Philosopy 1@cindex Philosophy
2@node Philosophy 2@node Philosophy
3@chapter Philosophy 3@chapter Philosophy
4 4
@@ -65,18 +65,18 @@ find out what is happening on the network or to disrupt operations.
65@section Versatility 65@section Versatility
66 66
67We call GNUnet a peer-to-peer framework because we want to support many 67We call GNUnet a peer-to-peer framework because we want to support many
68different forms of peer-to-peer applications. GNUnet uses a plugin 68different forms of peer-to-peer applications. GNUnet uses a plugin
69architecture to make the system extensible and to encourage code reuse. 69architecture to make the system extensible and to encourage code reuse.
70While the first versions of the system only supported anonymous 70While the first versions of the system only supported anonymous
71file-sharing, other applications are being worked on and more will 71file-sharing, other applications are being worked on and more will
72hopefully follow in the future. 72hopefully follow in the future.
73A powerful synergy regarding anonymity services is created by a large 73A powerful synergy regarding anonymity services is created by a large
74community utilizing many diverse applications over the same software 74community utilizing many diverse applications over the same software
75infrastructure. The reason is that link encryption hides the specifics 75infrastructure. The reason is that link encryption hides the specifics
76of the traffic for non-participating observers. This way, anonymity can 76of the traffic for non-participating observers. This way, anonymity can
77get stronger with additional (GNUnet) traffic, even if the additional 77get stronger with additional (GNUnet) traffic, even if the additional
78traffic is not related to anonymous communication. Increasing anonymity is 78traffic is not related to anonymous communication. Increasing anonymity
79the primary reason why GNUnet is developed to become a peer-to-peer 79is the primary reason why GNUnet is developed to become a peer-to-peer
80framework where many applications share the lower layers of an 80framework where many applications share the lower layers of an
81increasingly complex protocol stack. 81increasingly complex protocol stack.
82If merging traffic to hinder traffic analysis was not important, 82If merging traffic to hinder traffic analysis was not important,
@@ -88,22 +88,22 @@ and a few shared libraries.
88@section Practicality 88@section Practicality
89 89
90GNUnet allows participants to trade various amounts of security in 90GNUnet allows participants to trade various amounts of security in
91exchange for increased efficiency. However, it is not possible for any 91exchange for increased efficiency. However, it is not possible for any
92user's security and efficiency requirements to compromise the security 92user's security and efficiency requirements to compromise the security
93and efficiency of any other user. 93and efficiency of any other user.
94 94
95For GNUnet, efficiency is not paramount. If there is a more secure and 95For GNUnet, efficiency is not paramount. If there is a more secure and
96still practical approach, we would choose to take the more secure 96still practical approach, we would choose to take the more secure
97alternative. @command{telnet} is more efficient than @command{ssh}, yet 97alternative. @command{telnet} is more efficient than @command{ssh}, yet
98it is obsolete. 98it is obsolete.
99Hardware gets faster, and code can be optimized. Fixing security issues as 99Hardware gets faster, and code can be optimized. Fixing security issues
100an afterthought is much harder. 100as an afterthought is much harder.
101 101
102While security is paramount, practicability is still a requirement. 102While security is paramount, practicability is still a requirement.
103The most secure system is always the one that nobody can use. 103The most secure system is always the one that nobody can use.
104Similarly, any anonymous system that is extremely inefficient will only 104Similarly, any anonymous system that is extremely inefficient will only
105find few users. 105find few users.
106However, good anonymity requires a large and diverse user base. Since 106However, good anonymity requires a large and diverse user base. Since
107individual security requirements may vary, the only good solution here is 107individual security requirements may vary, the only good solution here is
108to allow individuals to trade-off security and efficiency. 108to allow individuals to trade-off security and efficiency.
109The primary challenge in allowing this is to ensure that the economic 109The primary challenge in allowing this is to ensure that the economic
@@ -144,28 +144,28 @@ The second part describes concepts specific to anonymous file-sharing.
144@subsection Authentication 144@subsection Authentication
145 145
146Almost all peer-to-peer communications in GNUnet are between mutually 146Almost all peer-to-peer communications in GNUnet are between mutually
147authenticated peers. The authentication works by using ECDHE, that is a 147authenticated peers. The authentication works by using ECDHE, that is a
148DH key exchange using ephemeral eliptic curve cryptography. The ephemeral 148DH key exchange using ephemeral eliptic curve cryptography. The ephemeral
149ECC keys are signed using ECDSA. The shared secret from ECDHE is used to 149ECC keys are signed using ECDSA. The shared secret from ECDHE is used to
150create a pair of session keys (using HKDF) which are then used to encrypt 150create a pair of session keys (using HKDF) which are then used to encrypt
151the communication between the two peers using both 256-bit AES and 256-bit 151the communication between the two peers using both 256-bit AES and 256-bit
152Twofish (with independently derived secret keys). As only the two 152Twofish (with independently derived secret keys). As only the two
153participating hosts know the shared secret, this authenticates each packet 153participating hosts know the shared secret, this authenticates each packet
154without requiring signatures each time. GNUnet uses SHA-512 hash codes to 154without requiring signatures each time. GNUnet uses SHA-512 hash codes to
155verify the integrity of messages. 155verify the integrity of messages.
156 156
157In GNUnet, the identity of a host is its public key. For that reason, 157In GNUnet, the identity of a host is its public key. For that reason,
158man-in-the-middle attacks will not break the authentication or accounting 158man-in-the-middle attacks will not break the authentication or accounting
159goals. Essentially, for GNUnet, the IP of the host has nothing to do with 159goals. Essentially, for GNUnet, the IP of the host has nothing to do with
160the identity of the host. As the public key is the only thing that truly 160the identity of the host. As the public key is the only thing that truly
161matters, faking an IP, a port or any other property of the underlying 161matters, faking an IP, a port or any other property of the underlying
162transport protocol is irrelevant. In fact, GNUnet peers can use 162transport protocol is irrelevant. In fact, GNUnet peers can use
163multiple IPs (IPv4 and IPv6) on multiple ports --- or even not use the 163multiple IPs (IPv4 and IPv6) on multiple ports --- or even not use the
164IP protocol at all (by running directly on layer 2). 164IP protocol at all (by running directly on layer 2).
165 165
166@c NOTE: For consistency we will use @code{HELLO}s throughout this Manual. 166@c NOTE: For consistency we will use @code{HELLO}s throughout this Manual.
167GNUnet uses a special type of message to communicate a binding between 167GNUnet uses a special type of message to communicate a binding between
168public (ECC) keys to their current network address. These messages are 168public (ECC) keys to their current network address. These messages are
169commonly called @code{HELLO}s or peer advertisements. 169commonly called @code{HELLO}s or peer advertisements.
170They contain the public key of the peer and its current network 170They contain the public key of the peer and its current network
171addresses for various transport services. 171addresses for various transport services.
@@ -175,7 +175,7 @@ peers.
175For the UDP and TCP transport services, a network address is an IP and a 175For the UDP and TCP transport services, a network address is an IP and a
176port. 176port.
177GNUnet can also use other transports (HTTP, HTTPS, WLAN, etc.) which use 177GNUnet can also use other transports (HTTP, HTTPS, WLAN, etc.) which use
178various other forms of addresses. Note that any node can have many 178various other forms of addresses. Note that any node can have many
179different active transport services at the same time, 179different active transport services at the same time,
180and each of these can have a different addresses. 180and each of these can have a different addresses.
181Binding messages expire after at most a week (the timeout can be 181Binding messages expire after at most a week (the timeout can be
@@ -202,19 +202,21 @@ with queries that are, in the worst case, multiplied by the network.
202 202
203In order to ensure that freeloaders or attackers have a minimal impact on 203In order to ensure that freeloaders or attackers have a minimal impact on
204the network, GNUnet's file-sharing implementation tries to distinguish 204the network, GNUnet's file-sharing implementation tries to distinguish
205good (contributing) nodes from malicious (freeloading) nodes. In GNUnet, 205good (contributing) nodes from malicious (freeloading) nodes. In GNUnet,
206every file-sharing node keeps track of the behavior of every other node it 206every file-sharing node keeps track of the behavior of every other node it
207has been in contact with. Many requests (depending on the application) are 207has been in contact with. Many requests (depending on the application)
208transmitted with a priority (or importance) level. That priority is used 208are transmitted with a priority (or importance) level.
209to establish how important the sender believes this request is. If a peer 209That priority is used to establish how important the sender believes
210responds to an important request, the recipient will increase its trust in 210this request is. If a peer responds to an important request, the
211the responder: the responder contributed resources. If a peer is too busy 211recipient will increase its trust in the responder:
212to answer all requests, it needs to prioritize. For that, peers to not 212the responder contributed resources.
213take the priorities of the requests received at face value. 213If a peer is too busy to answer all requests, it needs to prioritize.
214For that, peers to not take the priorities of the requests received at
215face value.
214First, they check how much they trust the sender, and depending on that 216First, they check how much they trust the sender, and depending on that
215amount of trust they assign the request a (possibly lower) effective 217amount of trust they assign the request a (possibly lower) effective
216priority. Then, they drop the requests with the lowest effective priority 218priority. Then, they drop the requests with the lowest effective priority
217to satisfy their resource constraints. This way, GNUnet's economic model 219to satisfy their resource constraints. This way, GNUnet's economic model
218ensures that nodes that are not currently considered to have a surplus in 220ensures that nodes that are not currently considered to have a surplus in
219contributions will not be served if the network load is high. 221contributions will not be served if the network load is high.
220@footnote{Christian Grothoff. An Excess-Based Economic Model for Resource 222@footnote{Christian Grothoff. An Excess-Based Economic Model for Resource
@@ -227,7 +229,7 @@ Allocation in Peer-to-Peer Networks. Wirtschaftsinformatik, June 2003.
227@subsection Confidentiality 229@subsection Confidentiality
228 230
229Adversaries outside of GNUnet are not supposed to know what kind of 231Adversaries outside of GNUnet are not supposed to know what kind of
230actions a peer is involved in. Only the specific neighbor of a peer that 232actions a peer is involved in. Only the specific neighbor of a peer that
231is the corresponding sender or recipient of a message may know its 233is the corresponding sender or recipient of a message may know its
232contents, and even then application protocols may place further 234contents, and even then application protocols may place further
233restrictions on that knowledge. 235restrictions on that knowledge.
@@ -235,7 +237,7 @@ In order to ensure confidentiality, GNUnet uses link encryption, that is
235each message exchanged between two peers is encrypted using a pair of 237each message exchanged between two peers is encrypted using a pair of
236keys only known to these two peers. 238keys only known to these two peers.
237Encrypting traffic like this makes any kind of traffic analysis much 239Encrypting traffic like this makes any kind of traffic analysis much
238harder. Naturally, for some applications, it may still be desirable if 240harder. Naturally, for some applications, it may still be desirable if
239even neighbors cannot determine the concrete contents of a message. 241even neighbors cannot determine the concrete contents of a message.
240In GNUnet, this problem is addressed by the specific application-level 242In GNUnet, this problem is addressed by the specific application-level
241protocols (see for example, deniability and anonymity in anonymous file 243protocols (see for example, deniability and anonymity in anonymous file
@@ -250,9 +252,9 @@ sharing).
250@end menu 252@end menu
251 253
252Providing anonymity for users is the central goal for the anonymous 254Providing anonymity for users is the central goal for the anonymous
253file-sharing application. Many other design decisions follow in the 255file-sharing application. Many other design decisions follow in the
254footsteps of this requirement. 256footsteps of this requirement.
255Anonymity is never absolute. While there are various 257Anonymity is never absolute. While there are various
256scientific metrics@footnote{Claudia Dı́az, Stefaan Seys, Joris Claessens, 258scientific metrics@footnote{Claudia Dı́az, Stefaan Seys, Joris Claessens,
257and Bart Preneel. Towards measuring anonymity. 259and Bart Preneel. Towards measuring anonymity.
2582002. 2602002.
@@ -268,7 +270,7 @@ given in scientific metrics@footnote{likewise},
268it is probably the best metric available to a peer with a purely local 270it is probably the best metric available to a peer with a purely local
269view of the world that does not rely on unreliable external information. 271view of the world that does not rely on unreliable external information.
270The default anonymity level is 1, which uses anonymous routing but 272The default anonymity level is 1, which uses anonymous routing but
271imposes no minimal requirements on cover traffic. It is possible 273imposes no minimal requirements on cover traffic. It is possible
272to forego anonymity when this is not required. The anonymity level of 0 274to forego anonymity when this is not required. The anonymity level of 0
273allows GNUnet to use more efficient, non-anonymous routing. 275allows GNUnet to use more efficient, non-anonymous routing.
274 276
@@ -278,12 +280,12 @@ allows GNUnet to use more efficient, non-anonymous routing.
278 280
279Contrary to other designs, we do not believe that users achieve strong 281Contrary to other designs, we do not believe that users achieve strong
280anonymity just because their requests are obfuscated by a couple of 282anonymity just because their requests are obfuscated by a couple of
281indirections. This is not sufficient if the adversary uses traffic 283indirections. This is not sufficient if the adversary uses traffic
282analysis. 284analysis.
283The threat model used for anonymous file sharing in GNUnet assumes that 285The threat model used for anonymous file sharing in GNUnet assumes that
284the adversary is quite powerful. 286the adversary is quite powerful.
285In particular, we assume that the adversary can see all the traffic on 287In particular, we assume that the adversary can see all the traffic on
286the Internet. And while we assume that the adversary 288the Internet. And while we assume that the adversary
287can not break our encryption, we assume that the adversary has many 289can not break our encryption, we assume that the adversary has many
288participating nodes in the network and that it can thus see many of the 290participating nodes in the network and that it can thus see many of the
289node-to-node interactions since it controls some of the nodes. 291node-to-node interactions since it controls some of the nodes.
@@ -293,9 +295,9 @@ anonymous if they can hide their actions in the traffic created by other
293users. 295users.
294Hiding actions in the traffic of other users requires participating in the 296Hiding actions in the traffic of other users requires participating in the
295traffic, bringing back the traditional technique of using indirection and 297traffic, bringing back the traditional technique of using indirection and
296source rewriting. Source rewriting is required to gain anonymity since 298source rewriting. Source rewriting is required to gain anonymity since
297otherwise an adversary could tell if a message originated from a host by 299otherwise an adversary could tell if a message originated from a host by
298looking at the source address. If all packets look like they originate 300looking at the source address. If all packets look like they originate
299from a node, the adversary can not tell which ones originate from that 301from a node, the adversary can not tell which ones originate from that
300node and which ones were routed. 302node and which ones were routed.
301Note that in this mindset, any node can decide to break the 303Note that in this mindset, any node can decide to break the
@@ -324,7 +326,7 @@ Designing Privacy Enhancing Technologies, 2003.
324@subsection Deniability 326@subsection Deniability
325 327
326Even if the user that downloads data and the server that provides data are 328Even if the user that downloads data and the server that provides data are
327anonymous, the intermediaries may still be targets. In particular, if the 329anonymous, the intermediaries may still be targets. In particular, if the
328intermediaries can find out which queries or which content they are 330intermediaries can find out which queries or which content they are
329processing, a strong adversary could try to force them to censor 331processing, a strong adversary could try to force them to censor
330certain materials. 332certain materials.