commit acac9bd765f31859624907f10ad20efc8183554a
parent 8151ac32bf601519c503a2db946562dad3dac39f
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date: Sun, 31 Jul 2022 14:35:25 +0200
more user
Diffstat:
| M | user.md | | | 102 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 102 insertions(+), 0 deletions(-)
diff --git a/user.md b/user.md
@@ -410,3 +410,105 @@ There is an unofficial Debian package called python3-ascension that adds a syste
Ascension-bind is also an unofficial Debian package that on installation checks for running DNS zones and whether or not they are transferable using DNS zone transfer (AXFR). It asks the administrator which zones to migrate into GNS and installs a systemd unit file to keep the zone up to date. If you want to migrate different zones you might want to check the unit file from the package as a guide.
## re:claimID
+
+## File-sharing
+
+This chapter documents the GNUnet file-sharing application. The original file-sharing implementation for GNUnet was designed to provide anonymous file-sharing. However, over time, we have also added support for non-anonymous file-sharing (which can provide better performance). Anonymous and non-anonymous file-sharing are quite integrated in GNUnet and, except for routing, share most of the concepts and implementation. There are three primary file-sharing operations: publishing, searching and downloading. For each of these operations, the user specifies an anonymity level. If both the publisher and the searcher/downloader specify "no anonymity", non-anonymous file-sharing is used. If either user specifies some desired degree of anonymity, anonymous file-sharing will be used.
+
+After a short introduction, we will first look at the various concepts in GNUnet’s file-sharing implementation. Then, we will discuss specifics as to how they impact users that publish, search or download files.
+
+### Searching
+
+The command `gnunet-search` can be used to search for content on GNUnet. The format is:
+
+```
+$ gnunet-search [-t TIMEOUT] KEYWORD
+```
+
+The `-t` option specifies that the query should timeout after approximately `TIMEOUT` seconds. A value of zero (“0”) is interpreted as no timeout, which is the default. In this case, gnunet-search will never terminate (unless you press CTRL-C).
+
+If multiple words are passed as keywords, they will all be considered optional. Prefix keywords with a "+" to make them mandatory.
+
+Note that searching using:
+
+```
+$ gnunet-search Das Kapital
+```
+
+is not the same as searching for
+
+```
+$ gnunet-search "Das Kapital"
+```
+
+as the first will match files shared under the keywords "Das" or "Kapital" whereas the second will match files shared under the keyword "Das Kapital".
+
+Search results are printed like this:
+
+```
+#15:
+gnunet-download -o "COPYING" gnunet://fs/chk/PGK8M...3EK130.75446
+```
+
+The whole line is the command you would have to enter to download the file.
+The first argument passed to `-o` is the suggested filename (you may change it to whatever you like).
+It is followed by the key for decrypting the file, the query for searching the file, a checksum (in hexadecimal) finally the size of the file in bytes.
+
+### Downloading
+
+In order to download a file, you need the whole line returned by gnunet-search. You can then use the tool `gnunet-download` to obtain the file:
+
+```
+$ gnunet-download -o <FILENAME> <GNUNET-URL>
+```
+
+`FILENAME` specifies the name of the file where GNUnet is supposed to write the result. Existing files are overwritten. If the existing file contains blocks that are identical to the desired download, those blocks will not be downloaded again (automatic resume).
+
+If you want to download the GPL from the previous example, you do the following:
+
+```
+$ gnunet-download -o "COPYING" gnunet://fs/chk/PGK8M...3EK130.75446
+```
+
+If you ever have to abort a download, you can continue it at any time by re-issuing gnunet-download with the same filename. In that case, GNUnet will **not** download blocks again that are already present.
+
+GNUnet’s file-encoding mechanism will ensure file integrity, even if the existing file was not downloaded from GNUnet in the first place.
+
+You may want to use the `-V` switch to turn on verbose reporting. In this case, gnunet-download will print the current number of bytes downloaded whenever new data was received.
+
+### Publishing
+
+The command `gnunet-publish` can be used to add content to the network. The basic format of the command is:
+
+```
+$ gnunet-publish [-n] [-k KEYWORDS]* [-m TYPE:VALUE] FILENAME
+```
+
+For example:
+
+```
+$ gnunet-publish -m "description:GNU License" -k gpl -k test -m "mimetype:text/plain" COPYING
+```
+
+The option `-k` is used to specify keywords for the file that should be inserted. You can supply any number of keywords, and each of the keywords will be sufficient to locate and retrieve the file. Please note that you must use the `-k` option more than once – one for each expression you use as a keyword for the filename.
+
+The `-m` option is used to specify meta-data, such as descriptions.
+You can use `-m` multiple times. The `TYPE` passed must be from the list of meta-data types known to libextractor. You can obtain this list by running `extract -L`. Use quotes around the entire meta-data argument if the value contains spaces. The meta-data is displayed to other users when they select which files to download. The meta-data and the keywords are optional and may be inferred using GNU libextractor.
+
+`gnunet-publish` has a few additional options to handle namespaces and directories. Refer to the man-page for details.
+
+### Indexing vs Inserting
+
+By default, GNUnet indexes a file instead of making a full copy. This is much more efficient, but requires the file to stay unaltered at the location where it was when it was indexed. If you intend to move, delete or alter a file, consider using the option `-n` which will force GNUnet to make a copy of the file in the database.
+
+Since it is much less efficient, this is strongly discouraged for large files. When GNUnet indexes a file (default), GNUnet does **not** create an additional encrypted copy of the file but just computes a summary (or index) of the file. That summary is approximately two percent of the size of the original file and is stored in GNUnet’s database. Whenever a request for a part of an indexed file reaches GNUnet, this part is encrypted on-demand and send out. This way, there is no need for an additional encrypted copy of the file to stay anywhere on the drive. This is different from other systems, such as Freenet, where each file that is put online must be in Freenet’s database in encrypted format, doubling the space requirements if the user wants to preserve a directly accessible copy in plaintext.
+
+Thus indexing should be used for all files where the user will keep using this file (at the location given to gnunet-publish) and does not want to retrieve it back from GNUnet each time. If you want to remove a file that you have indexed from the local peer, use the tool gnunet-unindex to un-index the file.
+
+The option `-n` may be used if the user fears that the file might be found on their drive (assuming the computer comes under the control of an adversary). When used with the `-n` flag, the user has a much better chance of denying knowledge of the existence of the file, even if it is still (encrypted) on the drive and the adversary is able to crack the encryption (e.g. by guessing the keyword).
+
+### Concepts
+
+For better results with filesharing it is useful to understand the following concepts. In addition to anonymous routing GNUnet attempts to give users a better experience in searching for content. GNUnet uses cryptography to safely break content into smaller pieces that can be obtained from different sources without allowing participants to corrupt files. GNUnet makes it difficult for an adversary to send back bogus search results. GNUnet enables content providers to group related content and to establish a reputation. Furthermore, GNUnet allows updates to certain content to be made available. This section is supposed to introduce users to the concepts that are used to achieve these goals.
+
+TODO concepts. Should they be here?