aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorng0 <ng0@n0.is>2017-12-30 12:39:38 +0000
committerng0 <ng0@n0.is>2017-12-30 12:39:38 +0000
commitbfa1ef1a1c8311dfa9c03de055d155a3402eb191 (patch)
tree3103c47a6e9ce9f081c72cfb8da0167aca4a4eb9 /doc
parentf3752accc1b45b227ad4ccf475b940258e7a849c (diff)
downloadgnunet-bfa1ef1a1c8311dfa9c03de055d155a3402eb191.tar.gz
gnunet-bfa1ef1a1c8311dfa9c03de055d155a3402eb191.zip
doc: philosophy: 2 spaces -> 1 space between sentences. Some grammar fixes.
Using fully distributed and fully decentralized instead of 'decentralized', intended to be explained later on.
Diffstat (limited to 'doc')
-rw-r--r--doc/documentation/chapters/philosophy.texi80
1 files changed, 40 insertions, 40 deletions
diff --git a/doc/documentation/chapters/philosophy.texi b/doc/documentation/chapters/philosophy.texi
index 6a2eedcd3..c20387c48 100644
--- a/doc/documentation/chapters/philosophy.texi
+++ b/doc/documentation/chapters/philosophy.texi
@@ -45,8 +45,9 @@ to redistribute exact copies, and to distribute modified versions.
45Refer to @uref{https://www.gnu.org/philosophy/free-sw.html, https://www.gnu.org/philosophy/free-sw.html}} 45Refer to @uref{https://www.gnu.org/philosophy/free-sw.html, https://www.gnu.org/philosophy/free-sw.html}}
46@item GNUnet must only disclose the minimal amount of information 46@item GNUnet must only disclose the minimal amount of information
47necessary. 47necessary.
48@item GNUnet must be distributed and survive Byzantine failures at any 48@c TODO: Explain 'fully' in the terminology section.
49position in the network. 49@item GNUnet must be fully distributed and survive Byzantine failures
50at any position in the network.
50@item GNUnet must make it explicit to the user which entities are 51@item GNUnet must make it explicit to the user which entities are
51considered to be trustworthy when establishing secured communications. 52considered to be trustworthy when establishing secured communications.
52@item GNUnet must use compartmentalization to protect sensitive 53@item GNUnet must use compartmentalization to protect sensitive
@@ -75,17 +76,17 @@ find out what is happening on the network or to disrupt operations.
75@section Versatility 76@section Versatility
76 77
77We call GNUnet a peer-to-peer framework because we want to support many 78We call GNUnet a peer-to-peer framework because we want to support many
78different forms of peer-to-peer applications. GNUnet uses a plugin 79different forms of peer-to-peer applications. GNUnet uses a plugin
79architecture to make the system extensible and to encourage code reuse. 80architecture to make the system extensible and to encourage code reuse.
80While the first versions of the system only supported anonymous 81While the first versions of the system only supported anonymous
81file-sharing, other applications are being worked on and more will 82file-sharing, other applications are being worked on and more will
82hopefully follow in the future. 83hopefully follow in the future.
83A powerful synergy regarding anonymity services is created by a large 84A powerful synergy regarding anonymity services is created by a large
84community utilizing many diverse applications over the same software 85community utilizing many diverse applications over the same software
85infrastructure. The reason is that link encryption hides the specifics 86infrastructure. The reason is that link encryption hides the specifics
86of the traffic for non-participating observers. This way, anonymity can 87of the traffic for non-participating observers. This way, anonymity can
87get stronger with additional (GNUnet) traffic, even if the additional 88get stronger with additional (GNUnet) traffic, even if the additional
88traffic is not related to anonymous communication. Increasing anonymity 89traffic is not related to anonymous communication. Increasing anonymity
89is the primary reason why GNUnet is developed to become a peer-to-peer 90is the primary reason why GNUnet is developed to become a peer-to-peer
90framework where many applications share the lower layers of an 91framework where many applications share the lower layers of an
91increasingly complex protocol stack. 92increasingly complex protocol stack.
@@ -98,22 +99,22 @@ and a few shared libraries.
98@section Practicality 99@section Practicality
99 100
100GNUnet allows participants to trade various amounts of security in 101GNUnet allows participants to trade various amounts of security in
101exchange for increased efficiency. However, it is not possible for any 102exchange for increased efficiency. However, it is not possible for any
102user's security and efficiency requirements to compromise the security 103user's security and efficiency requirements to compromise the security
103and efficiency of any other user. 104and efficiency of any other user.
104 105
105For GNUnet, efficiency is not paramount. If there were a more secure and 106For GNUnet, efficiency is not paramount. If there were a more secure and
106still practical approach, we would choose to take the more secure 107still practical approach, we would choose to take the more secure
107alternative. @command{telnet} is more efficient than @command{ssh}, yet 108alternative. @command{telnet} is more efficient than @command{ssh}, yet
108it is obsolete. 109it is obsolete.
109Hardware gets faster, and code can be optimized. Fixing security issues 110Hardware gets faster, and code can be optimized. Fixing security issues
110as an afterthought is much harder. 111as an afterthought is much harder.
111 112
112While security is paramount, practicability is still a requirement. 113While security is paramount, practicability is still a requirement.
113The most secure system is always the one that nobody can use. 114The most secure system is always the one that nobody can use.
114Similarly, any anonymous system that is extremely inefficient will only 115Similarly, any anonymous system that is extremely inefficient will only
115find few users. 116find few users.
116However, good anonymity requires a large and diverse user base. Since 117However, good anonymity requires a large and diverse user base. Since
117individual security requirements may vary, the only good solution here is 118individual security requirements may vary, the only good solution here is
118to allow individuals to trade-off security and efficiency. 119to allow individuals to trade-off security and efficiency.
119The primary challenge in allowing this is to ensure that the economic 120The primary challenge in allowing this is to ensure that the economic
@@ -156,9 +157,9 @@ The second part describes concepts specific to anonymous file-sharing.
156@subsection Authentication 157@subsection Authentication
157 158
158Almost all peer-to-peer communications in GNUnet are between mutually 159Almost all peer-to-peer communications in GNUnet are between mutually
159authenticated peers. The authentication works by using ECDHE, that is a 160authenticated peers. The authentication works by using ECDHE, that is a
160DH (Diffie---Hellman) key exchange using ephemeral eliptic curve 161DH (Diffie---Hellman) key exchange using ephemeral eliptic curve
161cryptography. The ephemeral ECC (Eliptic Curve Cryptography) keys are 162cryptography. The ephemeral ECC (Eliptic Curve Cryptography) keys are
162signed using ECDSA (@uref{http://en.wikipedia.org/wiki/ECDSA, ECDSA}). 163signed using ECDSA (@uref{http://en.wikipedia.org/wiki/ECDSA, ECDSA}).
163The shared secret from ECDHE is used to create a pair of session keys 164The shared secret from ECDHE is used to create a pair of session keys
164@c FIXME: LOng word for HKDF 165@c FIXME: LOng word for HKDF
@@ -167,23 +168,23 @@ two peers using both 256-bit AES (Advanced Encryption Standard)
167and 256-bit Twofish (with independently derived secret keys). 168and 256-bit Twofish (with independently derived secret keys).
168As only the two participating hosts know the shared secret, this 169As only the two participating hosts know the shared secret, this
169authenticates each packet 170authenticates each packet
170without requiring signatures each time. GNUnet uses SHA-512 171without requiring signatures each time. GNUnet uses SHA-512
171(Secure Hash Algorithm) hash codes to verify the integrity of messages. 172(Secure Hash Algorithm) hash codes to verify the integrity of messages.
172 173
173In GNUnet, the identity of a host is its public key. For that reason, 174In GNUnet, the identity of a host is its public key. For that reason,
174@c FIXME: is it clear to the average reader what a man-in-the-middle 175@c FIXME: is it clear to the average reader what a man-in-the-middle
175@c attack is? 176@c attack is?
176man-in-the-middle attacks will not break the authentication or accounting 177man-in-the-middle attacks will not break the authentication or accounting
177goals. Essentially, for GNUnet, the IP of the host has nothing to do with 178goals. Essentially, for GNUnet, the IP of the host has nothing to do with
178the identity of the host. As the public key is the only thing that truly 179the identity of the host. As the public key is the only thing that truly
179matters, faking an IP, a port or any other property of the underlying 180matters, faking an IP, a port or any other property of the underlying
180transport protocol is irrelevant. In fact, GNUnet peers can use 181transport protocol is irrelevant. In fact, GNUnet peers can use
181multiple IPs (IPv4 and IPv6) on multiple ports --- or even not use the 182multiple IPs (IPv4 and IPv6) on multiple ports --- or even not use the
182IP protocol at all (by running directly on layer 2). 183IP protocol at all (by running directly on layer 2).
183 184
184@c NOTE: For consistency we will use @code{HELLO}s throughout this Manual. 185@c NOTE: For consistency we will use @code{HELLO}s throughout this Manual.
185GNUnet uses a special type of message to communicate a binding between 186GNUnet uses a special type of message to communicate a binding between
186public (ECC) keys to their current network address. These messages are 187public (ECC) keys to their current network address. These messages are
187commonly called @code{HELLO}s or peer advertisements. 188commonly called @code{HELLO}s or peer advertisements.
188They contain the public key of the peer and its current network 189They contain the public key of the peer and its current network
189addresses for various transport services. 190addresses for various transport services.
@@ -193,7 +194,7 @@ peers.
193For the UDP and TCP transport services, a network address is an IP and a 194For the UDP and TCP transport services, a network address is an IP and a
194port. 195port.
195GNUnet can also use other transports (HTTP, HTTPS, WLAN, etc.) which use 196GNUnet can also use other transports (HTTP, HTTPS, WLAN, etc.) which use
196various other forms of addresses. Note that any node can have many 197various other forms of addresses. Note that any node can have many
197different active transport services at the same time, 198different active transport services at the same time,
198and each of these can have a different addresses. 199and each of these can have a different addresses.
199Binding messages expire after at most a week (the timeout can be 200Binding messages expire after at most a week (the timeout can be
@@ -220,22 +221,21 @@ with queries that are, in the worst case, multiplied by the network.
220 221
221In order to ensure that freeloaders or attackers have a minimal impact on 222In order to ensure that freeloaders or attackers have a minimal impact on
222the network, GNUnet's file-sharing implementation tries to distinguish 223the network, GNUnet's file-sharing implementation tries to distinguish
223good (contributing) nodes from malicious (freeloading) nodes. In GNUnet, 224good (contributing) nodes from malicious (freeloading) nodes. In GNUnet,
224every file-sharing node keeps track of the behavior of every other node it 225every file-sharing node keeps track of the behavior of every other node it
225has been in contact with. Many requests (depending on the application) 226has been in contact with. Many requests (depending on the application)
226are transmitted with a priority (or importance) level. 227are transmitted with a priority (or importance) level.
227That priority is used to establish how important the sender believes 228That priority is used to establish how important the sender believes
228this request is. If a peer responds to an important request, the 229this request is. If a peer responds to an important request, the
229recipient will increase its trust in the responder: 230recipient will increase its trust in the responder:
230the responder contributed resources. 231the responder contributed resources.
231If a peer is too busy to answer all requests, it needs to prioritize. 232If a peer is too busy to answer all requests, it needs to prioritize.
232@c FIXME: 'peers to not take' -> 'peers do not take' would make more sense 233For that, peers do not take the priorities of the requests received at
233For that, peers to not take the priorities of the requests received at
234face value. 234face value.
235First, they check how much they trust the sender, and depending on that 235First, they check how much they trust the sender, and depending on that
236amount of trust they assign the request a (possibly lower) effective 236amount of trust they assign the request a (possibly lower) effective
237priority. Then, they drop the requests with the lowest effective priority 237priority. Then, they drop the requests with the lowest effective priority
238to satisfy their resource constraints. This way, GNUnet's economic model 238to satisfy their resource constraints. This way, GNUnet's economic model
239ensures that nodes that are not currently considered to have a surplus in 239ensures that nodes that are not currently considered to have a surplus in
240contributions will not be served if the network load is high. 240contributions will not be served if the network load is high.
241@footnote{Christian Grothoff. An Excess-Based Economic Model for Resource 241@footnote{Christian Grothoff. An Excess-Based Economic Model for Resource
@@ -248,7 +248,7 @@ Allocation in Peer-to-Peer Networks. Wirtschaftsinformatik, June 2003.
248@subsection Confidentiality 248@subsection Confidentiality
249 249
250Adversaries outside of GNUnet are not supposed to know what kind of 250Adversaries outside of GNUnet are not supposed to know what kind of
251actions a peer is involved in. Only the specific neighbor of a peer that 251actions a peer is involved in. Only the specific neighbor of a peer that
252is the corresponding sender or recipient of a message may know its 252is the corresponding sender or recipient of a message may know its
253contents, and even then application protocols may place further 253contents, and even then application protocols may place further
254restrictions on that knowledge. 254restrictions on that knowledge.
@@ -256,7 +256,7 @@ In order to ensure confidentiality, GNUnet uses link encryption, that is
256each message exchanged between two peers is encrypted using a pair of 256each message exchanged between two peers is encrypted using a pair of
257keys only known to these two peers. 257keys only known to these two peers.
258Encrypting traffic like this makes any kind of traffic analysis much 258Encrypting traffic like this makes any kind of traffic analysis much
259harder. Naturally, for some applications, it may still be desirable if 259harder. Naturally, for some applications, it may still be desirable if
260even neighbors cannot determine the concrete contents of a message. 260even neighbors cannot determine the concrete contents of a message.
261In GNUnet, this problem is addressed by the specific application-level 261In GNUnet, this problem is addressed by the specific application-level
262protocols (see for example, deniability and anonymity in anonymous file 262protocols (see for example, deniability and anonymity in anonymous file
@@ -271,9 +271,9 @@ sharing).
271@end menu 271@end menu
272 272
273Providing anonymity for users is the central goal for the anonymous 273Providing anonymity for users is the central goal for the anonymous
274file-sharing application. Many other design decisions follow in the 274file-sharing application. Many other design decisions follow in the
275footsteps of this requirement. 275footsteps of this requirement.
276Anonymity is never absolute. While there are various 276Anonymity is never absolute. While there are various
277scientific metrics@footnote{Claudia Díaz, Stefaan Seys, Joris Claessens, 277scientific metrics@footnote{Claudia Díaz, Stefaan Seys, Joris Claessens,
278and Bart Preneel. Towards measuring anonymity. 278and Bart Preneel. Towards measuring anonymity.
2792002. 2792002.
@@ -289,7 +289,7 @@ given in scientific metrics@footnote{likewise},
289it is probably the best metric available to a peer with a purely local 289it is probably the best metric available to a peer with a purely local
290view of the world that does not rely on unreliable external information. 290view of the world that does not rely on unreliable external information.
291The default anonymity level is 1, which uses anonymous routing but 291The default anonymity level is 1, which uses anonymous routing but
292imposes no minimal requirements on cover traffic. It is possible 292imposes no minimal requirements on cover traffic. It is possible
293to forego anonymity when this is not required. The anonymity level of 0 293to forego anonymity when this is not required. The anonymity level of 0
294allows GNUnet to use more efficient, non-anonymous routing. 294allows GNUnet to use more efficient, non-anonymous routing.
295 295
@@ -299,12 +299,12 @@ allows GNUnet to use more efficient, non-anonymous routing.
299 299
300Contrary to other designs, we do not believe that users achieve strong 300Contrary to other designs, we do not believe that users achieve strong
301anonymity just because their requests are obfuscated by a couple of 301anonymity just because their requests are obfuscated by a couple of
302indirections. This is not sufficient if the adversary uses traffic 302indirections. This is not sufficient if the adversary uses traffic
303analysis. 303analysis.
304The threat model used for anonymous file sharing in GNUnet assumes that 304The threat model used for anonymous file sharing in GNUnet assumes that
305the adversary is quite powerful. 305the adversary is quite powerful.
306In particular, we assume that the adversary can see all the traffic on 306In particular, we assume that the adversary can see all the traffic on
307the Internet. And while we assume that the adversary 307the Internet. And while we assume that the adversary
308can not break our encryption, we assume that the adversary has many 308can not break our encryption, we assume that the adversary has many
309participating nodes in the network and that it can thus see many of the 309participating nodes in the network and that it can thus see many of the
310node-to-node interactions since it controls some of the nodes. 310node-to-node interactions since it controls some of the nodes.
@@ -314,9 +314,9 @@ anonymous if they can hide their actions in the traffic created by other
314users. 314users.
315Hiding actions in the traffic of other users requires participating in the 315Hiding actions in the traffic of other users requires participating in the
316traffic, bringing back the traditional technique of using indirection and 316traffic, bringing back the traditional technique of using indirection and
317source rewriting. Source rewriting is required to gain anonymity since 317source rewriting. Source rewriting is required to gain anonymity since
318otherwise an adversary could tell if a message originated from a host by 318otherwise an adversary could tell if a message originated from a host by
319looking at the source address. If all packets look like they originate 319looking at the source address. If all packets look like they originate
320from one node, the adversary can not tell which ones originate from that 320from one node, the adversary can not tell which ones originate from that
321node and which ones were routed. 321node and which ones were routed.
322Note that in this mindset, any node can decide to break the 322Note that in this mindset, any node can decide to break the
@@ -345,7 +345,7 @@ Designing Privacy Enhancing Technologies, 2003.
345@subsection Deniability 345@subsection Deniability
346 346
347Even if the user that downloads data and the server that provides data are 347Even if the user that downloads data and the server that provides data are
348anonymous, the intermediaries may still be targets. In particular, if the 348anonymous, the intermediaries may still be targets. In particular, if the
349intermediaries can find out which queries or which content they are 349intermediaries can find out which queries or which content they are
350processing, a strong adversary could try to force them to censor 350processing, a strong adversary could try to force them to censor
351certain materials. 351certain materials.
@@ -371,7 +371,7 @@ An Encoding for Censorship-Resistant Sharing.
371@subsection Peer Identities 371@subsection Peer Identities
372 372
373Peer identities are used to identify peers in the network and are unique 373Peer identities are used to identify peers in the network and are unique
374for each peer. The identity for a peer is simply its public key, which is 374for each peer. The identity for a peer is simply its public key, which is
375generated along with a private key the peer is started for the first time. 375generated along with a private key the peer is started for the first time.
376While the identity is binary data, it is often expressed as ASCII string. 376While the identity is binary data, it is often expressed as ASCII string.
377For example, the following is a peer identity as you might see it in 377For example, the following is a peer identity as you might see it in
@@ -399,10 +399,10 @@ zones are similar to those of DNS zones, but instead of a hierarchy of
399authorities to governing their use, GNS zones are controlled by a private 399authorities to governing their use, GNS zones are controlled by a private
400key. 400key.
401When you create a record in a DNS zone, that information stored in your 401When you create a record in a DNS zone, that information stored in your
402nameserver. Anyone trying to resolve your domain then gets pointed 402nameserver. Anyone trying to resolve your domain then gets pointed
403(hopefully) by the centralised authority to your nameserver. 403(hopefully) by the centralised authority to your nameserver.
404Whereas GNS, being decentralised by design, stores that information in 404Whereas GNS, being fully decentralized by design, stores that information
405DHT. The validity of the records is assured cryptographically, by 405in DHT. The validity of the records is assured cryptographically, by
406signing them with the private key of the respective zone. 406signing them with the private key of the respective zone.
407 407
408Anyone trying to resolve records in a zone of your domain can then verify 408Anyone trying to resolve records in a zone of your domain can then verify