From 87673cc3addb7f19bb00c669f33ecab7788b7a0f Mon Sep 17 00:00:00 2001 From: anonimal Date: Thu, 13 Oct 2016 02:56:35 +0000 Subject: [PATCH 01/35] Moneropedia: initial commit for monero-project/kovri#256 - 12 new entries as they relate to Kovri - They're mostly needed to satisfy the address book entry References monero-project/monero-site#155 --- knowledge-base/moneropedia/address-book.md | 35 ++++++++++++++ knowledge-base/moneropedia/base32-address.md | 29 ++++++++++++ knowledge-base/moneropedia/base64-address.md | 22 +++++++++ .../moneropedia/canonically-unique-host.md | 23 ++++++++++ knowledge-base/moneropedia/data-directory.md | 22 +++++++++ knowledge-base/moneropedia/destination.md | 19 ++++++++ knowledge-base/moneropedia/i2p.md | 25 ++++++++++ knowledge-base/moneropedia/java-i2p.md | 15 ++++++ knowledge-base/moneropedia/jump-service.md | 33 +++++++++++++ knowledge-base/moneropedia/kovri.md | 27 +++++++++++ .../moneropedia/locally-unique-host.md | 22 +++++++++ knowledge-base/moneropedia/subscription.md | 46 +++++++++++++++++++ 12 files changed, 318 insertions(+) create mode 100644 knowledge-base/moneropedia/address-book.md create mode 100644 knowledge-base/moneropedia/base32-address.md create mode 100644 knowledge-base/moneropedia/base64-address.md create mode 100644 knowledge-base/moneropedia/canonically-unique-host.md create mode 100644 knowledge-base/moneropedia/data-directory.md create mode 100644 knowledge-base/moneropedia/destination.md create mode 100644 knowledge-base/moneropedia/i2p.md create mode 100644 knowledge-base/moneropedia/java-i2p.md create mode 100644 knowledge-base/moneropedia/jump-service.md create mode 100644 knowledge-base/moneropedia/kovri.md create mode 100644 knowledge-base/moneropedia/locally-unique-host.md create mode 100644 knowledge-base/moneropedia/subscription.md diff --git a/knowledge-base/moneropedia/address-book.md b/knowledge-base/moneropedia/address-book.md new file mode 100644 index 00000000..6fa0a928 --- /dev/null +++ b/knowledge-base/moneropedia/address-book.md @@ -0,0 +1,35 @@ +--- +layout: moneropedia +entry: "Address Book" +tags: ["kovri"] +terms: ["address-book"] +summary: "List of pairings: locally unique hostnames to Base64 I2P destinations" +--- + +### The Basics + +In order to browse @I2P sites or services with @Kovri, you'll need an address book. An address book will allow you to translate @I2P websites/services that use the `.i2p` [top-level domain](https://en.wikipedia.org/wiki/Top_level_domain) into an address that @I2P network will understand. + +Without an address book, you would be stuck using a @base32-address every time visited an @I2P website/service - and that's not fun! + +### In-depth information + +Since [DNS](https://en.wikipedia.org/wiki/DNS) does not exist on the @I2P network, @Kovri also does **not** use DNS or any sort of @canonically-unique-host resolution. Instead, Kovri pairs a @locally-unique-host to a @base64-address @destination in a @subscription. Once your address book is filled with a @subscription, you can resolve your favorite `.i2p` domain site into a usable @I2P destination. + +### Creating an address Book + +By default, your installation will come with a default public @subscription called `hosts.txt` in your @data-directory. When @Kovri starts, it loads this subscription and fetches any other subscriptions you've specified. Once loaded, your address book will be appropriately filled. For details on how to manage subscriptions, see @subscription. + +### Updating the address book + +Currently, there are several ways to update your address book: + +1. Use a @jump-service to insert into address book +2. Use a @jump-service to copy/paste an address into your private @subscription +3. Manually add or subtract from a private @subscription + +**Note: Kovri is in heavy development. In the future there *will* be easier ways to update the address book** + +### Address Book / Naming specification + +For specification details and more, visit the [Address Book and Naming Specification](https://geti2p.net/en/docs/naming) diff --git a/knowledge-base/moneropedia/base32-address.md b/knowledge-base/moneropedia/base32-address.md new file mode 100644 index 00000000..787b6181 --- /dev/null +++ b/knowledge-base/moneropedia/base32-address.md @@ -0,0 +1,29 @@ +--- +layout: moneropedia +entry: "Base32 address" +tags: ["kovri"] +terms: ["base32-address"] +summary: "Base32 encoded hash of a Base64 address" +--- + +### The Basics + +A Base32 address is a shortened, encoded version of an @I2P address. The Base32 address is the first part in a `.b32.i2p` hostname. + +Example: + +`i35yftyyb22xhcvghmev46t5knefur5v66qzekkajatwfwhyklvq.b32.i2p` + +where + +`i35yftyyb22xhcvghmev46t5knefur5v66qzekkajatwfwhyklvq` is the Base32 address. + +### In-depth Information + +Ultimately, a Base32 address is a 52 character [Base32 encoded representation](https://en.wikipedia.org/wiki/Base32) of the full SHA-256 hash of an @I2P @base64-address. + +TODO(anonimal): finish (256 bits, etc.) + +### Notes + +**Note: `.b32` is not a sub-domain of `.i2p`** diff --git a/knowledge-base/moneropedia/base64-address.md b/knowledge-base/moneropedia/base64-address.md new file mode 100644 index 00000000..b15f0ada --- /dev/null +++ b/knowledge-base/moneropedia/base64-address.md @@ -0,0 +1,22 @@ +--- +layout: moneropedia +entry: "Base64 address" +tags: ["kovri"] +terms: ["base64-address"] +summary: "Base64 encoded I2P destination" +--- + +### The Basics + +A Base64 address is a 516-character [Base64 encoded](https://en.wikipedia.org/wiki/Base64) @I2P @destination. + +Example: + +{:.cli-code} +AQZGLAMpI9Q0l0kmMj1vpJJYK3CjLp~fE3MfvE-e7KMKjI5cPOH6EN8m794uHJ6b09qM8mb9VEv1lVLEov~usVliTSXCSHuRBOCIwIOuDNU0AbVa4BpIx~2sU4TxKhoaA3zQ6VzINoduTdR2IJhPvI5xzezp7dR21CEQGGTbenDslXeQ4iLHFA2~bzp1f7etSl9T2W9RID-KH78sRQmzWnv7dbhNodMbpO6xsf1vENf6bMRzqD5vgHEHZu2aSoNuPyYxDU1eM6--61b2xp9mt1k3ud-5WvPVg89RaU9ugU5cxaHgR927lHMCAEU2Ax~zUb3DbrvgQBOTHnJEx2Fp7pOK~PnP6ylkYKQMfLROosLDXinxOoSKP0UYCh2WgIUPwE7WzJH3PiJVF0~WZ1dZ9mg00c~gzLgmkOxe1NpFRNg6XzoARivNVB5NuWqNxr5WKWMLBGQ9YHvHO1OHhUJTowb9X90BhtHnLK2AHwO6fV-iHWxRJyDabhSMj1kuYpVUBQAEAAcAAA== + +TODO(anonimal): finish + +### In-depth Information + +TODO(anonimal): finish diff --git a/knowledge-base/moneropedia/canonically-unique-host.md b/knowledge-base/moneropedia/canonically-unique-host.md new file mode 100644 index 00000000..a2335d12 --- /dev/null +++ b/knowledge-base/moneropedia/canonically-unique-host.md @@ -0,0 +1,23 @@ +--- +layout: moneropedia +entry: "Canonically-unique host" +tags: ["kovri"] +terms: ["canonically-unique-host"] +summary: "A host that is canonically resolved to an address or set of addresses" +--- + +### The Basics + +A canonically-unique host is a [FQDN](https://en.wikipedia.org/wiki/FQDN) that will canonically resolve to a designated address or set of addresses. Not to be confused with a @locally-unique-host. + +### In-depth information + +A canonically-unique host is defined by remote authoritative sources; usually through [DNS](https://en.wikipedia.org/wiki/DNS). When resolving a peer's hostname, you will most likely use an external source for resolution unless have the following implemented: + +- a database file similar to a [hosts file](https://en.wikipedia.org/wiki/etc/hosts) +- an internal-network resolver (which eventually pulls from external sources) + +### Notes + +- Monero primarily uses @canonically-unique-host resolution while @I2P only uses @locally-unique-host resolution. +- @I2P's and @Kovri's assigned top-level domain is currently `.i2p` and @Kovri intends to only process/use the `.i2p` [top-level domain](https://en.wikipedia.org/wiki/Top_level_domain) diff --git a/knowledge-base/moneropedia/data-directory.md b/knowledge-base/moneropedia/data-directory.md new file mode 100644 index 00000000..4aff4444 --- /dev/null +++ b/knowledge-base/moneropedia/data-directory.md @@ -0,0 +1,22 @@ +--- +layout: moneropedia +entry: "Data Directory" +tags: ["kovri"] +terms: ["data-directory"] +summary: "Where essential kovri data for runtime is stored" +--- + +### The Basics + +Depending on your OS, @Kovri currently stores all run-time data in the following directory: + +- Linux/FreeBSD: + - `$HOME/.kovri` + +- OSX: + - `$HOME/Library/Application\ Support/Kovri` + +- Windows: + - `"$APPDATA"\\Kovri` + +This includes all configuration files, @address-book, certificates, and resources. diff --git a/knowledge-base/moneropedia/destination.md b/knowledge-base/moneropedia/destination.md new file mode 100644 index 00000000..cdeb11c9 --- /dev/null +++ b/knowledge-base/moneropedia/destination.md @@ -0,0 +1,19 @@ +--- +layout: moneropedia +entry: "Destination" +tags: ["kovri"] +terms: ["destination"] +summary: "A Kovri/I2P address that serves as a final endpoint" +--- + +### The Basics + +A destination is the @I2P address of the final endpoint you are trying to connect to (an @I2P website or service). + +TODO(anonimal): finish + +### In-depth Information + +An @I2P destination can be encoded into a @base32-address or @base64-address. Most users will only care about @base32-address or a `.i2p` hostname while, internally, @Kovri will use the @base64-address. + +TODO(anonimal): finish diff --git a/knowledge-base/moneropedia/i2p.md b/knowledge-base/moneropedia/i2p.md new file mode 100644 index 00000000..a785290b --- /dev/null +++ b/knowledge-base/moneropedia/i2p.md @@ -0,0 +1,25 @@ +--- +layout: moneropedia +entry: "I2P" +tags: ["kovri"] +terms: ["I2P"] +summary: "The Invisible Internet Project: an anonymizing overlay network" +--- + +### The Basics + +From @Java-I2P's [website](https://geti2p.net/): + +>The I2P network provides strong privacy protections for communication over the Internet. Many activities that would risk your privacy on the public Internet can be conducted anonymously inside I2P. + +### In-depth information + +From @Java-I2P's [website](https://geti2p.net/): + +>I2P is an anonymous overlay network - a network within a network. It is intended to protect communication from dragnet surveillance and monitoring by third parties such as ISPs. + +>I2P is used by many people who care about their privacy: activists, oppressed people, journalists and whistleblowers, as well as the average person. + +>No network can be "perfectly anonymous". The continued goal of I2P is to make attacks more and more difficult to mount. Its anonymity will get stronger as the size of the network increases and with ongoing academic review. + +Details and specifications are available [here](https://geti2p.net/docs/). diff --git a/knowledge-base/moneropedia/java-i2p.md b/knowledge-base/moneropedia/java-i2p.md new file mode 100644 index 00000000..5fc975dd --- /dev/null +++ b/knowledge-base/moneropedia/java-i2p.md @@ -0,0 +1,15 @@ +--- +layout: moneropedia +entry: "Java I2P" +tags: ["kovri"] +terms: ["Java-I2P"] +summary: "The original implementation of I2P; written in Java" +--- + +### The Basics + +The term "Java I2P" is often used to describe the original @I2P implementation currently most known and used today. + +There are various other @I2P implementations, including @Kovri; all of which look up to this original implementation. + +To download/learn more about the Java implementation, visit their [website](https://geti2p.net/). diff --git a/knowledge-base/moneropedia/jump-service.md b/knowledge-base/moneropedia/jump-service.md new file mode 100644 index 00000000..286ad44a --- /dev/null +++ b/knowledge-base/moneropedia/jump-service.md @@ -0,0 +1,33 @@ +--- +layout: moneropedia +entry: "Jump Service" +tags: ["kovri"] +terms: ["jump-service"] +summary: "An I2P website service that adds addresses to your address book" +--- + +### The Basics + +In your @I2P configured web browser, you can use a Jump Service to *jump* to an @I2P address that you don't have in your @address-book. Once you've *jumped* to the address, the address will be saved into your @address-book. + +### In-depth Information + +In an @I2P configured browser, visit: http://stats.i2p/i2p/lookup.html (courtesy of @Java-I2P's lead developer *zzz*) + +Then, you'll have two options: + +1. *Hostname lookup* the address you wish to visit and then manually copy/paste the result +2. *Jump* to the @I2P website by entering the @I2P hostname (**recommended**) + +### Using hostname lookup + +For example, entering `pinkpaste.i2p` into the *Hostname lookup* box (and then submitting) will return: + +{:.cli-code} +pinkpaste.i2p=m-HrPrIAsdxts0WM~P4mE8mt9P7g-QTaBvu7Gc6Nl0UX7Vwck-i~RvOPfK6W~kfdRvwhNTqevkBL2UF5l36We02Aiywu7kB2xOHRkze68h-Tg2ewvRVwokohguCD2G3wwAEz~7FVda2avYDCb9-N6TfuzxKLnmhPMvbNSjGL7ZsD2p-h207R3-2kvuMV9bfu-K~w9NI9XJhIyufvUnFYc2jnTVg8PbaR4UP57cNaOO2YIMPkbr6~yTcIu9B1sUfHK6-N~6virQDOxW4M-62rjnZkLpaCtkOsXslmCwZI--TkZ6hKi1kXZvNmJRE1rYfffYRFn38zhaqszeETX8HiIvahZhXF5fNumBziYdmLdw8hkuN1A~emU6Xz9g~a1Ixfsq1Qr~guYoOtaw-0rOFxNRS9yMehE-2LCb8c-cAg6z5OdlN4qJDl~ZHgru4d~EHp~BpAK3v7u2Gi-8l1ygVW-1CHVna~fwnbOPN3ANPwh6~~yUit0Cx1f54XiNRn6-nPBQAEAAcAAA== + +Copy/paste this host=@base64-address pairing into your **private** @subscription. + +### Directly jumping + +For example, entering `pinkpaste.i2p` into the *Jump* box (and then submitting) will automatically redirect you to the website **and** insert the @locally-unique-host into @address-book. diff --git a/knowledge-base/moneropedia/kovri.md b/knowledge-base/moneropedia/kovri.md new file mode 100644 index 00000000..622102dc --- /dev/null +++ b/knowledge-base/moneropedia/kovri.md @@ -0,0 +1,27 @@ +--- +layout: moneropedia +entry: "Kovri" +tags: ["kovri"] +terms: ["Kovri"] +summary: "Monero's C++ router implementation of the I2P network" +--- + +### The Basics + +TODO(anonimal): finish + +### In-depth information + +TODO(anonimal): finish + +@Kovri @address-book + +- Kovri Eepsite (hidden-service, garlic-site, garlic-service) +- Kovri Clearnet +- Kovri Cryptography (encryption, signatures, etc.) +- Kovri Network Database (RI, lease-sets, floodfill, etc.) +- Kovri Reseed +- Kovri Transports (SSU/NTCP) +- Kovri Tunnels (garlic routing, I2NP, etc.) +- Kovri I2PControl (links to API, clients + qtoopie) +- ...more/what else? diff --git a/knowledge-base/moneropedia/locally-unique-host.md b/knowledge-base/moneropedia/locally-unique-host.md new file mode 100644 index 00000000..d979e2d3 --- /dev/null +++ b/knowledge-base/moneropedia/locally-unique-host.md @@ -0,0 +1,22 @@ +--- +layout: moneropedia +entry: "Locally-unique host" +tags: ["kovri"] +terms: ["locally-unique-host"] +summary: "A host defined by you and resolved only by you" +--- + +### The Basics + +A locally-unique host is a [FQDN](https://en.wikipedia.org/wiki/FQDN) defined by **you** and resolved only by you; similar to how a [hosts file](https://en.wikipedia.org/wiki/etc/hosts) is implemented. Not to be confused with @canonically-unique-host. + +### In-depth information + +You have the option to share your interpretation of how the host is resolved (e.g., `localhost` always resolves to `127.0.0.1`) but the resolution is not canonically enforced (e.g., someone else can map `localhost` to any arbitrary IP address). + +Hosts in a public subscription can be considered @canonically-unique-host's within the @I2P network but, ultimately, you are free to re-define them as you wish. + +### Notes + +- Monero primarily uses @canonically-unique-host resolution while @I2P only uses @locally-unique-host resolution. +- @I2P's and @Kovri's assigned top-level domain is currently `.i2p` and @Kovri intends to only process/use the `.i2p` [top-level domain](https://en.wikipedia.org/wiki/Top_level_domain) diff --git a/knowledge-base/moneropedia/subscription.md b/knowledge-base/moneropedia/subscription.md new file mode 100644 index 00000000..3848b541 --- /dev/null +++ b/knowledge-base/moneropedia/subscription.md @@ -0,0 +1,46 @@ +--- +layout: moneropedia +entry: "Subscription" +tags: ["kovri"] +terms: ["subscription"] +summary: "A file used by address book which contains I2P hosts paired with I2P destinations" +--- + +### The Basics + +A subscription is a file which contains a list of `.i2p` hosts paired with their respective @destination. Subscriptions are used by the @address-book. + +### In-depth information + +Similar to how a [hosts file](https://en.wikipedia.org/wiki/etc/hosts) can map an internet hostname to a specified address, a subscription matches a `.i2p` address to @base64-address by using the following format (no spaces allowed): `host=address` + +More specifically, a subscription pairs a @locally-unique-host to @base64-address. + +Example: + +{:.cli-code} +anonimal.i2p=AQZGLAMpI9Q0l0kmMj1vpJJYK3CjLp~fE3MfvE-e7KMKjI5cPOH6EN8m794uHJ6b09qM8mb9VEv1lVLEov~usVliTSXCSHuRBOCIwIOuDNU0AbVa4BpIx~2sU4TxKhoaA3zQ6VzINoduTdR2IJhPvI5xzezp7dR21CEQGGTbenDslXeQ4iLHFA2~bzp1f7etSl9T2W9RID-KH78sRQmzWnv7dbhNodMbpO6xsf1vENf6bMRzqD5vgHEHZu2aSoNuPyYxDU1eM6--61b2xp9mt1k3ud-5WvPVg89RaU9ugU5cxaHgR927lHMCAEU2Ax~zUb3DbrvgQBOTHnJEx2Fp7pOK~PnP6ylkYKQMfLROosLDXinxOoSKP0UYCh2WgIUPwE7WzJH3PiJVF0~WZ1dZ9mg00c~gzLgmkOxe1NpFRNg6XzoARivNVB5NuWqNxr5WKWMLBGQ9YHvHO1OHhUJTowb9X90BhtHnLK2AHwO6fV-iHWxRJyDabhSMj1kuYpVUBQAEAAcAAA== + +1. `anonimal.i2p` is the @locally-unique-host +2. `=` is the seperator +3. Everything that remains is the @base64-address + +### Subscription types + +For @Kovri, there are two types of subscription files: *public* and *private*. + +A *public* subscription: +- is used when bootstrapping to use essential services (IRC, email, monero, etc.) +- is static and is refreshed every 12 hours from Monero's @address-book server +- allows you to safely share the subscription with everyone as it is publically available (anyone who shares the same public subscription will also be able to resolve the same hostname to the same destination as you) + +A *private* subscription: +- is used exclusively by you and is not shared with others unless you explicitely choose to share the file +- default file is `private_hosts.txt` in your @data-directory + +### Updating a private subscription + +You can use a @jump-service to manually update your private subscription. The updated subscription will be then fed into the @address-book for you to use. + +### Notes +To learn how subscribe to multiple subscriptions, see the [user-guide](https://github.com/monero-project/kovri/blob/master/doc/USER_GUIDE.md). From e6ac646e8a3a74bc86f68abb21aae25740582d79 Mon Sep 17 00:00:00 2001 From: anonimal Date: Thu, 13 Oct 2016 16:16:58 +0000 Subject: [PATCH 02/35] Moneropedia: add Kovri note to I2P entry --- knowledge-base/moneropedia/i2p.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/knowledge-base/moneropedia/i2p.md b/knowledge-base/moneropedia/i2p.md index a785290b..fda7d59a 100644 --- a/knowledge-base/moneropedia/i2p.md +++ b/knowledge-base/moneropedia/i2p.md @@ -23,3 +23,7 @@ From @Java-I2P's [website](https://geti2p.net/): >No network can be "perfectly anonymous". The continued goal of I2P is to make attacks more and more difficult to mount. Its anonymity will get stronger as the size of the network increases and with ongoing academic review. Details and specifications are available [here](https://geti2p.net/docs/). + +### Notes + +For Monero's implementation of I2P, see @Kovri. From e9e5257529b359171aa300304746dfcc2cbd6d96 Mon Sep 17 00:00:00 2001 From: anonimal Date: Thu, 13 Oct 2016 16:24:47 +0000 Subject: [PATCH 03/35] Moneropedia: simplify address book's summary --- knowledge-base/moneropedia/address-book.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge-base/moneropedia/address-book.md b/knowledge-base/moneropedia/address-book.md index 6fa0a928..3c03a160 100644 --- a/knowledge-base/moneropedia/address-book.md +++ b/knowledge-base/moneropedia/address-book.md @@ -3,7 +3,7 @@ layout: moneropedia entry: "Address Book" tags: ["kovri"] terms: ["address-book"] -summary: "List of pairings: locally unique hostnames to Base64 I2P destinations" +summary: "Allows you to visit I2P websites/services that have the .i2p domain" --- ### The Basics From 9658bc60d42b6d4d1a3dd8c22cf63b9962e8f94c Mon Sep 17 00:00:00 2001 From: anonimal Date: Thu, 13 Oct 2016 19:28:38 +0000 Subject: [PATCH 04/35] Moneropedia: add Eepsite and Garlic Routing entries Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/eepsite.md | 30 ++++++++++++++ knowledge-base/moneropedia/garlic-routing.md | 41 ++++++++++++++++++++ knowledge-base/moneropedia/kovri.md | 5 ++- 3 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 knowledge-base/moneropedia/eepsite.md create mode 100644 knowledge-base/moneropedia/garlic-routing.md diff --git a/knowledge-base/moneropedia/eepsite.md b/knowledge-base/moneropedia/eepsite.md new file mode 100644 index 00000000..d07173d6 --- /dev/null +++ b/knowledge-base/moneropedia/eepsite.md @@ -0,0 +1,30 @@ +--- +layout: moneropedia +entry: "Eepsite" +tags: ["kovri"] +terms: ["eepsite", "hidden-service", "garlic-site", "garlic-service"] +summary: "A website or service hosted within the I2P network" +--- + +### The Basics + +Is it [**EEP!** *(in response to the site's content)*](https://en.wikipedia.org/wiki/Onomatopoeia), or **end-to-end protocol**, or something else entirely different? + +While the original definition of eepsite has been lost with time, its use-case remains: a website or service that is hosted within (and only accessible by) the @I2P network. + +### In-depth Information + +Alternate names include: + +1. *Hidden Service* + - because the site/service is *hidden* within the @I2P network and can only be visited within the network +2. *Garlic Site* + - because the website utilizes @I2P's @garlic-routing technology as a means of communicating with a client + - because the service is hosted as a website and not any other type of service +3. *Garlic Service* + - because the service utilizes @I2P's @garlic-routing technology as a means of communicating with a client + - because the service is specific to services like IRC, email, or a Monero peer (but may also include websites) + +### Notes + +To learn how to setup an Eeepsite (Hidden Service, Garlic Site, Garlic Service) visit the @Kovri [user-guide](https://github.com/monero-project/kovri/blob/master/doc/USER_GUIDE.md). diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md new file mode 100644 index 00000000..bc2fe510 --- /dev/null +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -0,0 +1,41 @@ +--- +layout: moneropedia +entry: "Garlic Routing" +tags: ["kovri"] +terms: ["garlic-routing"] +summary: "Routing technology as implemented in Kovri/I2P" +--- + +### The Basics + +The term *Garlic Routing* has a diverse history with various interpretations. + +As it currently stands, Monero defines *Garlic Routing* as the way @Kovri and @I2P create a message-based anonymous overlay network of internet peers. + +### History + +I written form, the term *Garlic Routing* can be seen as early as June of 2000 in Roger Dingledine's [Free Haven Master's thesis](http://www.freehaven.net/papers.html) (Section 8.1.1) as derived from [Onion Routing](http://www.onion-router.net/). + +As recent as October of 2016, [#tor-dev](https://oftc.net/WebChat/) has offered insight into the creation of the term: + +Nick Mathewson: +>[I think that there was some attempt to come up with a plant whose structure resembled the 'leaky-pipe' topology of tor, but I don't believe we ever settled on one.] + +Roger Dingledine: +>during the free haven brainstorming, there was a moment where we described a routing mechanism, and somebody said "garlic routing!", and everybody laughed. +so we for sure thought we had invented the name, at the time. + +### In-depth Information + +In technical terms, for @Kovri and @I2P, *Garlic Routing* translates to any/all of the following: + +1. Layered Encryption +2. Bundling multiple messages together (garlic cloves) +3. ElGamal/AES Encryption + +Note: as seen in [Tor](https://torproject.org/), *Onion Routing* also uses layered encryption but does not use ElGamal and is not message-based. + +### Notes + +- Permission received from Nick Mathewson and Roger Dingledine for historical quotes +- For more technical details, read [Garlic Routing](https://geti2p.net/en/docs/how/garlic-routing). diff --git a/knowledge-base/moneropedia/kovri.md b/knowledge-base/moneropedia/kovri.md index 622102dc..bd9cb5ef 100644 --- a/knowledge-base/moneropedia/kovri.md +++ b/knowledge-base/moneropedia/kovri.md @@ -14,9 +14,10 @@ TODO(anonimal): finish TODO(anonimal): finish -@Kovri @address-book +@address-book + +@eepsite (@hidden-service, @garlic-site, @garlic-service) -- Kovri Eepsite (hidden-service, garlic-site, garlic-service) - Kovri Clearnet - Kovri Cryptography (encryption, signatures, etc.) - Kovri Network Database (RI, lease-sets, floodfill, etc.) From 9e7e99b52f314517f2898743b226314b1ff28d0c Mon Sep 17 00:00:00 2001 From: anonimal Date: Thu, 13 Oct 2016 20:10:04 +0000 Subject: [PATCH 05/35] Moneropedia: edit Eepsite and Garlic Routing entries - Typo + grammar (thanks, armadev) Referencing: -monero-project/kovri#256 -monero-project/monero-site#155 --- knowledge-base/moneropedia/eepsite.md | 4 ++-- knowledge-base/moneropedia/garlic-routing.md | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/knowledge-base/moneropedia/eepsite.md b/knowledge-base/moneropedia/eepsite.md index d07173d6..ddfd3dee 100644 --- a/knowledge-base/moneropedia/eepsite.md +++ b/knowledge-base/moneropedia/eepsite.md @@ -10,7 +10,7 @@ summary: "A website or service hosted within the I2P network" Is it [**EEP!** *(in response to the site's content)*](https://en.wikipedia.org/wiki/Onomatopoeia), or **end-to-end protocol**, or something else entirely different? -While the original definition of eepsite has been lost with time, its use-case remains: a website or service that is hosted within (and only accessible by) the @I2P network. +While the original definition of eepsite has been lost with time, its use-case remains: an eepsite is a website or service that is hosted within (and only accessible by) the @I2P network. ### In-depth Information @@ -27,4 +27,4 @@ Alternate names include: ### Notes -To learn how to setup an Eeepsite (Hidden Service, Garlic Site, Garlic Service) visit the @Kovri [user-guide](https://github.com/monero-project/kovri/blob/master/doc/USER_GUIDE.md). +To learn how to setup an Eepsite (Hidden Service, Garlic Site, Garlic Service) visit the @Kovri [user-guide](https://github.com/monero-project/kovri/blob/master/doc/USER_GUIDE.md). diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md index bc2fe510..cdcd7d8a 100644 --- a/knowledge-base/moneropedia/garlic-routing.md +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -8,15 +8,15 @@ summary: "Routing technology as implemented in Kovri/I2P" ### The Basics -The term *Garlic Routing* has a diverse history with various interpretations. +The term *Garlic Routing* has a diverse history of varying interpretations. -As it currently stands, Monero defines *Garlic Routing* as the way @Kovri and @I2P create a message-based anonymous overlay network of internet peers. +As it currently stands, Monero defines *Garlic Routing* as the method in which @Kovri and @I2P create a message-based anonymous overlay network of internet peers. ### History -I written form, the term *Garlic Routing* can be seen as early as June of 2000 in Roger Dingledine's [Free Haven Master's thesis](http://www.freehaven.net/papers.html) (Section 8.1.1) as derived from [Onion Routing](http://www.onion-router.net/). +In written form, the term *Garlic Routing* can be seen as early as June of 2000 in Roger Dingledine's [Free Haven Master's thesis](http://www.freehaven.net/papers.html) (Section 8.1.1) as derived from the term [Onion Routing](http://www.onion-router.net/). -As recent as October of 2016, [#tor-dev](https://oftc.net/WebChat/) has offered insight into the creation of the term: +As recent as October of 2016, [#tor-dev](https://oftc.net/WebChat/) has offered insight into the creation of the term *Garlic Routing*: Nick Mathewson: >[I think that there was some attempt to come up with a plant whose structure resembled the 'leaky-pipe' topology of tor, but I don't believe we ever settled on one.] @@ -37,5 +37,5 @@ Note: as seen in [Tor](https://torproject.org/), *Onion Routing* also uses layer ### Notes -- Permission received from Nick Mathewson and Roger Dingledine for historical quotes -- For more technical details, read [Garlic Routing](https://geti2p.net/en/docs/how/garlic-routing). +- Permission to use the aforementioned quotes granted by Nick Mathewson and Roger Dingledine +- For more technical details, read [Garlic Routing](https://geti2p.net/en/docs/how/garlic-routing) From e8aa590f0045210000e19572ea94549375fffbb7 Mon Sep 17 00:00:00 2001 From: anonimal Date: Thu, 13 Oct 2016 22:28:16 +0000 Subject: [PATCH 06/35] Moneropedia: add Clearnet entry Referencing: -monero-project/kovri#256 -monero-project/monero-site#155 --- knowledge-base/moneropedia/clearnet.md | 33 ++++++++++++++++++++++++++ knowledge-base/moneropedia/kovri.md | 3 ++- 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 knowledge-base/moneropedia/clearnet.md diff --git a/knowledge-base/moneropedia/clearnet.md b/knowledge-base/moneropedia/clearnet.md new file mode 100644 index 00000000..06b7426b --- /dev/null +++ b/knowledge-base/moneropedia/clearnet.md @@ -0,0 +1,33 @@ +--- +layout: moneropedia +entry: "Clearnet" +tags: ["kovri"] +terms: ["clearnet"] +summary: "The internet in which anonymous overlay networks are built over" +--- + +### The Basics + +When you use the internet for things like news, email, social media, and even Monero, you are most likely using a clearnet connection. This means that *all* of your connections can be tracked, traced, and monitored by: + +- your [ISP](https://en.wikipedia.org/wiki/ISP) +- the website/service/person you're communicating with +- possibly a [Five Eyes](https://en.wikipedia.org/wiki/5_Eyes) capable entity + +and even if you use [HTTPS](https://en.wikipedia.org/wiki/HTTPS) or similar (which *encrypts* your transmission), your route is not hidden nor is it anonymous, thus; it is in the *clear*. + +### In-depth information + +Since a traditional [VPN](https://en.wikipedia.org/wiki/VPN) cannot save you from clearnet (as you are still using *clearnet* (though you are more proxied than without a VPN)), you should use an *anonymous overlay network* to avoid using clearnet directly: + +- @Kovri +- @I2P +- [Tor](https://torproject.org/) + +These technologies protect you from clearnet by building an anonymous network **over** clearnet to keep your transmissions both encrypted **and** anonymous. + +Here is an accurate, [interactive diagram](https://www.eff.org/pages/tor-and-https) provided by the [EFF](https://www.eff.org/) which describes *clearnet* as it relates to **Tor**. The concept also (somewhat) applies to @Kovri and @I2P in terms of anonymity with the exception that: + +- @Kovri/@I2P does not use exit nodes when connecting to an @eepsite +- Your traffic ever need to leave the @I2P network. +- You do not need HTTPS to use @Kovri/@I2P (with the exception of @reseed) **TODO(anonimal): finish** diff --git a/knowledge-base/moneropedia/kovri.md b/knowledge-base/moneropedia/kovri.md index bd9cb5ef..b667ce5f 100644 --- a/knowledge-base/moneropedia/kovri.md +++ b/knowledge-base/moneropedia/kovri.md @@ -18,7 +18,8 @@ TODO(anonimal): finish @eepsite (@hidden-service, @garlic-site, @garlic-service) -- Kovri Clearnet +@clearnet + - Kovri Cryptography (encryption, signatures, etc.) - Kovri Network Database (RI, lease-sets, floodfill, etc.) - Kovri Reseed From 40cebc78d178b6b41700a9e6b5320a75663a195a Mon Sep 17 00:00:00 2001 From: anonimal Date: Fri, 14 Oct 2016 00:48:27 +0000 Subject: [PATCH 07/35] Moneropedia: add wikipedia URLs for Nick/Roger Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/garlic-routing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md index cdcd7d8a..a37061fb 100644 --- a/knowledge-base/moneropedia/garlic-routing.md +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -18,10 +18,10 @@ In written form, the term *Garlic Routing* can be seen as early as June of 2000 As recent as October of 2016, [#tor-dev](https://oftc.net/WebChat/) has offered insight into the creation of the term *Garlic Routing*: -Nick Mathewson: +[Nick Mathewson](https://en.wikipedia.org/wiki/The_Tor_Project,_Inc): >[I think that there was some attempt to come up with a plant whose structure resembled the 'leaky-pipe' topology of tor, but I don't believe we ever settled on one.] -Roger Dingledine: +[Roger Dingledine](https://en.wikipedia.org/wiki/Roger_Dingledine): >during the free haven brainstorming, there was a moment where we described a routing mechanism, and somebody said "garlic routing!", and everybody laughed. so we for sure thought we had invented the name, at the time. From 13a74cf4e982d52a79771d24b430e742cf25ca33 Mon Sep 17 00:00:00 2001 From: anonimal Date: Fri, 14 Oct 2016 00:55:09 +0000 Subject: [PATCH 08/35] Moneropedia: replace Onion Routing URL Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/garlic-routing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md index a37061fb..4bae0d2f 100644 --- a/knowledge-base/moneropedia/garlic-routing.md +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -14,7 +14,7 @@ As it currently stands, Monero defines *Garlic Routing* as the method in which @ ### History -In written form, the term *Garlic Routing* can be seen as early as June of 2000 in Roger Dingledine's [Free Haven Master's thesis](http://www.freehaven.net/papers.html) (Section 8.1.1) as derived from the term [Onion Routing](http://www.onion-router.net/). +In written form, the term *Garlic Routing* can be seen as early as June of 2000 in Roger Dingledine's [Free Haven Master's thesis](http://www.freehaven.net/papers.html) (Section 8.1.1) as derived from the term [Onion Routing](https://en.wikipedia.org/wiki/Onion_routing). As recent as October of 2016, [#tor-dev](https://oftc.net/WebChat/) has offered insight into the creation of the term *Garlic Routing*: From 32f4f0636fde4e7a0440a9a566a0293f91a17ab6 Mon Sep 17 00:00:00 2001 From: anonimal Date: Fri, 14 Oct 2016 01:16:59 +0000 Subject: [PATCH 09/35] Moneropedia: add Matryoshka doll comment in Garlic Routing Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/garlic-routing.md | 1 + 1 file changed, 1 insertion(+) diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md index 4bae0d2f..a5b8360c 100644 --- a/knowledge-base/moneropedia/garlic-routing.md +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -39,3 +39,4 @@ Note: as seen in [Tor](https://torproject.org/), *Onion Routing* also uses layer - Permission to use the aforementioned quotes granted by Nick Mathewson and Roger Dingledine - For more technical details, read [Garlic Routing](https://geti2p.net/en/docs/how/garlic-routing) +- Another way to envision layered encryption (in terms of Onion/Garlic Routing) is by replacing the onion/garlic with a [Matryoshka doll](https://en.wikipedia.org/wiki/Matryoshka_doll) From 8af4ba7f208c236728a7ef3438b8a6a47ce7e69d Mon Sep 17 00:00:00 2001 From: anonimal Date: Fri, 14 Oct 2016 02:08:49 +0000 Subject: [PATCH 10/35] Moneropedia: add Reseed/Network Database/Router-Info entries Also, minor adjustments elsewhere Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/clearnet.md | 4 ++-- knowledge-base/moneropedia/kovri.md | 5 +++-- knowledge-base/moneropedia/network-database.md | 15 +++++++++++++++ knowledge-base/moneropedia/reseed.md | 17 +++++++++++++++++ knowledge-base/moneropedia/router-info.md | 15 +++++++++++++++ 5 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 knowledge-base/moneropedia/network-database.md create mode 100644 knowledge-base/moneropedia/reseed.md create mode 100644 knowledge-base/moneropedia/router-info.md diff --git a/knowledge-base/moneropedia/clearnet.md b/knowledge-base/moneropedia/clearnet.md index 06b7426b..54058efc 100644 --- a/knowledge-base/moneropedia/clearnet.md +++ b/knowledge-base/moneropedia/clearnet.md @@ -3,7 +3,7 @@ layout: moneropedia entry: "Clearnet" tags: ["kovri"] terms: ["clearnet"] -summary: "The internet in which anonymous overlay networks are built over" +summary: "The internet in which anonymous overlay networks are built upon" --- ### The Basics @@ -30,4 +30,4 @@ Here is an accurate, [interactive diagram](https://www.eff.org/pages/tor-and-htt - @Kovri/@I2P does not use exit nodes when connecting to an @eepsite - Your traffic ever need to leave the @I2P network. -- You do not need HTTPS to use @Kovri/@I2P (with the exception of @reseed) **TODO(anonimal): finish** +- You do not need HTTPS to use @Kovri/@I2P (with the exception of @reseed) diff --git a/knowledge-base/moneropedia/kovri.md b/knowledge-base/moneropedia/kovri.md index b667ce5f..a62da7ff 100644 --- a/knowledge-base/moneropedia/kovri.md +++ b/knowledge-base/moneropedia/kovri.md @@ -20,9 +20,10 @@ TODO(anonimal): finish @clearnet +@reseed @network-database @router-info + - Kovri Cryptography (encryption, signatures, etc.) -- Kovri Network Database (RI, lease-sets, floodfill, etc.) -- Kovri Reseed +- Kovri Network Database (lease-sets, floodfill, etc.) - Kovri Transports (SSU/NTCP) - Kovri Tunnels (garlic routing, I2NP, etc.) - Kovri I2PControl (links to API, clients + qtoopie) diff --git a/knowledge-base/moneropedia/network-database.md b/knowledge-base/moneropedia/network-database.md new file mode 100644 index 00000000..6aea989e --- /dev/null +++ b/knowledge-base/moneropedia/network-database.md @@ -0,0 +1,15 @@ +--- +layout: moneropedia +entry: "Network Database" +tags: ["kovri"] +terms: ["network-database"] +summary: "TODO(anonimal): finish" +--- + +### The Basics + +TODO(anonimal): finish + +### In-depth information + +TODO(anonimal): finish diff --git a/knowledge-base/moneropedia/reseed.md b/knowledge-base/moneropedia/reseed.md new file mode 100644 index 00000000..35611f4d --- /dev/null +++ b/knowledge-base/moneropedia/reseed.md @@ -0,0 +1,17 @@ +--- +layout: moneropedia +entry: "Reseed" +tags: ["kovri"] +terms: ["reseed"] +summary: "The method of which Kovri uses to bootstrap into the I2P network" +--- + +### The Basics + +When you start @Kovri for the first time (or if its been offline for a long time), @Kovri will need a list of peers to connect to so it can [bootstrap](https://en.wikipedia.org/wiki/Bootstrap) into the @I2P network. @Kovri gets these peers from a special file stored on a reseed server. On this file are all the various pieces of information @Kovri needs in order to connect with @I2P peers. + +### In-depth information + +@Kovri has a list of [hard-coded](https://en.wikipedia.org/wiki/Hard-coded) reseed servers available to fetch from. These servers securely serve an [SU3](https://geti2p.net/spec/updates#su3) file (signed with a cryptographic @signature) over @clearnet with [HTTPS](https://en.wikipedia.org/wiki/HTTPS). This SU3 file contains information that's used to verify both the integrity of the file and its content. + +Aside from the technical elements needed to verify and process the file, the file's main contents consist of a series of @router-info files which @Kovri and @I2P routers use to locate and communicate with other @I2P peers. These peers are then stored into a @network-database. diff --git a/knowledge-base/moneropedia/router-info.md b/knowledge-base/moneropedia/router-info.md new file mode 100644 index 00000000..ca4dae5b --- /dev/null +++ b/knowledge-base/moneropedia/router-info.md @@ -0,0 +1,15 @@ +--- +layout: moneropedia +entry: "Router-Info" +tags: ["kovri"] +terms: ["router-info"] +summary: "TODO(anonimal): finish" +--- + +### The Basics + +TODO(anonimal): finish + +### In-depth information + +TODO(anonimal): finish From ce3dc6f5d613d8d62aeea5848b33c9acc147e792 Mon Sep 17 00:00:00 2001 From: anonimal Date: Fri, 14 Oct 2016 19:13:52 +0000 Subject: [PATCH 11/35] Moneropedia: add Router-Info and Floodfill entries Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/floodfill.md | 19 ++++++++ knowledge-base/moneropedia/router-info.md | 59 +++++++++++++++++++++-- 2 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 knowledge-base/moneropedia/floodfill.md diff --git a/knowledge-base/moneropedia/floodfill.md b/knowledge-base/moneropedia/floodfill.md new file mode 100644 index 00000000..c8f88645 --- /dev/null +++ b/knowledge-base/moneropedia/floodfill.md @@ -0,0 +1,19 @@ +--- +layout: moneropedia +entry: "Floodfill" +tags: ["kovri"] +terms: ["floodfill"] +summary: "TODO(anonimal): finish" +--- + +### The Basics + +TODO(anonimal): finish + +### In-depth information + +TODO(anonimal): finish + +### Notes + +TODO(anonimal): finish diff --git a/knowledge-base/moneropedia/router-info.md b/knowledge-base/moneropedia/router-info.md index ca4dae5b..0b8adf8c 100644 --- a/knowledge-base/moneropedia/router-info.md +++ b/knowledge-base/moneropedia/router-info.md @@ -3,13 +3,66 @@ layout: moneropedia entry: "Router-Info" tags: ["kovri"] terms: ["router-info"] -summary: "TODO(anonimal): finish" +summary: "A file/data structure which contains an I2P peer's needed network information" --- ### The Basics -TODO(anonimal): finish +Router-Info is a file/data structure which contains all needed information to locate, identity, and communicate with an @I2P peer. This file/data structure includes IP address, router identity, other misc. technical details; is needed for @network-database and is published to @floodfill routers. ### In-depth information -TODO(anonimal): finish +In human-readable form, Router-Info may look like this: + +``` +Identity: [RouterIdentity: +Hash: nYZ5Qe7gQ-~QgfgJVRUG4c0JnVeVqzM~duUX1EGT1ek= +Certificate: [Certificate: type: Key certificate +Crypto type: 0 +Sig type: 7 (EdDSA_SHA512_Ed25519)] +PublicKey: [PublicKey: size: 256] +SigningPublicKey: [SigningPublicKey EdDSA_SHA512_Ed25519: size: 32] +Padding: 96 bytes] +Signature: [Signature EdDSA_SHA512_Ed25519: size: 64] +Published: Sun Oct 09 01:34:59 UTC 2016 +Options (5): + [caps] = [LfR] + [netId] = [2] + [netdb.knownLeaseSets] = [37] + [netdb.knownRouters] = [2435] + [router.version] = [0.9.26] +Addresses (4): +[RouterAddress: +Type: SSU +Cost: 4 +Options (5): + [caps] = [BC] + [host] = [2a01:e35:8b5c:b240:71a2:6750:8d4:47fa] + [key] = [nYZ5Qe7gQ-~QgfgJVRUG4c0JnVeVqzM~duUX1EGT1ek=] + [mtu] = [1472] + [port] = [22244]] +[RouterAddress: +Type: NTCP +Cost: 9 +Options (2): + [host] = [2a01:e35:8b5c:b240:71a2:6750:8d4:47fa] + [port] = [22244]] +[RouterAddress: +Type: SSU +Cost: 6 +Options (4): + [caps] = [BC] + [host] = [88.181.203.36] + [key] = [nYZ5Qe7gQ-~QgfgJVRUG4c0JnVeVqzM~duUX1EGT1ek=] + [port] = [22244]] +[RouterAddress: +Type: NTCP +Cost: 11 +Options (2): + [host] = [88.181.203.36] + [port] = [22244]]] +``` + +### Notes + +For details and specification, visit @Java-I2P [Network Database](https://geti2p.net/en/docs/how/network-database) page. From bfa7a611ea5943c256f3c6f128e1cd98a12c3d19 Mon Sep 17 00:00:00 2001 From: anonimal Date: Fri, 14 Oct 2016 19:17:30 +0000 Subject: [PATCH 12/35] Moneropedia: add empty Lease-Set entry Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/kovri.md | 3 +-- knowledge-base/moneropedia/lease-set.md | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 knowledge-base/moneropedia/lease-set.md diff --git a/knowledge-base/moneropedia/kovri.md b/knowledge-base/moneropedia/kovri.md index a62da7ff..9f9db49d 100644 --- a/knowledge-base/moneropedia/kovri.md +++ b/knowledge-base/moneropedia/kovri.md @@ -20,10 +20,9 @@ TODO(anonimal): finish @clearnet -@reseed @network-database @router-info +@reseed @network-database @router-info @floodfill @lease-set - Kovri Cryptography (encryption, signatures, etc.) -- Kovri Network Database (lease-sets, floodfill, etc.) - Kovri Transports (SSU/NTCP) - Kovri Tunnels (garlic routing, I2NP, etc.) - Kovri I2PControl (links to API, clients + qtoopie) diff --git a/knowledge-base/moneropedia/lease-set.md b/knowledge-base/moneropedia/lease-set.md new file mode 100644 index 00000000..a47a0639 --- /dev/null +++ b/knowledge-base/moneropedia/lease-set.md @@ -0,0 +1,19 @@ +--- +layout: moneropedia +entry: "Lease-set" +tags: ["kovri"] +terms: ["lease-set"] +summary: "TODO(anonimal): finish" +--- + +### The Basics + +TODO(anonimal): finish + +### In-depth information + +TODO(anonimal): finish + +### Notes + +TODO(anonimal): finish From 7fda45bd4f10412fd4c4c2df7407ff17ff586200 Mon Sep 17 00:00:00 2001 From: anonimal Date: Fri, 14 Oct 2016 19:25:59 +0000 Subject: [PATCH 13/35] Moneropedia: remove redundant links + fix grammar For both the I2P and Java-I2P entries. Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/i2p.md | 4 ++-- knowledge-base/moneropedia/java-i2p.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/knowledge-base/moneropedia/i2p.md b/knowledge-base/moneropedia/i2p.md index fda7d59a..d60ba13a 100644 --- a/knowledge-base/moneropedia/i2p.md +++ b/knowledge-base/moneropedia/i2p.md @@ -8,13 +8,13 @@ summary: "The Invisible Internet Project: an anonymizing overlay network" ### The Basics -From @Java-I2P's [website](https://geti2p.net/): +From @Java-I2P: >The I2P network provides strong privacy protections for communication over the Internet. Many activities that would risk your privacy on the public Internet can be conducted anonymously inside I2P. ### In-depth information -From @Java-I2P's [website](https://geti2p.net/): +From @Java-I2P: >I2P is an anonymous overlay network - a network within a network. It is intended to protect communication from dragnet surveillance and monitoring by third parties such as ISPs. diff --git a/knowledge-base/moneropedia/java-i2p.md b/knowledge-base/moneropedia/java-i2p.md index 5fc975dd..5be1baf7 100644 --- a/knowledge-base/moneropedia/java-i2p.md +++ b/knowledge-base/moneropedia/java-i2p.md @@ -10,6 +10,6 @@ summary: "The original implementation of I2P; written in Java" The term "Java I2P" is often used to describe the original @I2P implementation currently most known and used today. -There are various other @I2P implementations, including @Kovri; all of which look up to this original implementation. +There are various other @I2P implementations, including @Kovri; all of which look up to the original Java implementation. To download/learn more about the Java implementation, visit their [website](https://geti2p.net/). From e6661fcee1937189ee9c56e05563fbbeae518097 Mon Sep 17 00:00:00 2001 From: anonimal Date: Fri, 14 Oct 2016 19:27:58 +0000 Subject: [PATCH 14/35] Moneropedia: cleanup Java-I2P entry Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/java-i2p.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/knowledge-base/moneropedia/java-i2p.md b/knowledge-base/moneropedia/java-i2p.md index 5be1baf7..d5f690da 100644 --- a/knowledge-base/moneropedia/java-i2p.md +++ b/knowledge-base/moneropedia/java-i2p.md @@ -8,8 +8,8 @@ summary: "The original implementation of I2P; written in Java" ### The Basics -The term "Java I2P" is often used to describe the original @I2P implementation currently most known and used today. +The term "Java I2P" is often used to describe the original @I2P implementation currently most known and used today. There are various other @I2P implementations, including @Kovri; all of which look up to the original Java implementation. -There are various other @I2P implementations, including @Kovri; all of which look up to the original Java implementation. +### Notes To download/learn more about the Java implementation, visit their [website](https://geti2p.net/). From 000e95cfe403388ea916a154ff3e37813e08d0c0 Mon Sep 17 00:00:00 2001 From: anonimal Date: Sat, 15 Oct 2016 05:37:07 +0000 Subject: [PATCH 15/35] Moneropedia: add/update/cleanup/fix entries Added: - In-net - Lease - Message - I2NP (skeleton file) - Tunnel (skeleton file) Updated/cleaned-up/fixed: - Router-Info - Lease-Set - Garlic-Routing - Floodfill - Destination Note: term'ed lease-set to LeaseSet because of conflict with Lease Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/destination.md | 6 +-- knowledge-base/moneropedia/floodfill.md | 10 ++--- knowledge-base/moneropedia/garlic-routing.md | 17 +++---- knowledge-base/moneropedia/i2np.md | 15 +++++++ knowledge-base/moneropedia/in-net.md | 15 +++++++ knowledge-base/moneropedia/kovri.md | 47 ++++++++++++++++++-- knowledge-base/moneropedia/lease-set.md | 18 +++++--- knowledge-base/moneropedia/lease.md | 15 +++++++ knowledge-base/moneropedia/router-info.md | 4 +- knowledge-base/moneropedia/tunnel.md | 15 +++++++ 10 files changed, 133 insertions(+), 29 deletions(-) create mode 100644 knowledge-base/moneropedia/i2np.md create mode 100644 knowledge-base/moneropedia/in-net.md create mode 100644 knowledge-base/moneropedia/lease.md create mode 100644 knowledge-base/moneropedia/tunnel.md diff --git a/knowledge-base/moneropedia/destination.md b/knowledge-base/moneropedia/destination.md index cdeb11c9..7971da57 100644 --- a/knowledge-base/moneropedia/destination.md +++ b/knowledge-base/moneropedia/destination.md @@ -3,17 +3,17 @@ layout: moneropedia entry: "Destination" tags: ["kovri"] terms: ["destination"] -summary: "A Kovri/I2P address that serves as a final endpoint" +summary: "A in-net address that serves as a final endpoint" --- ### The Basics -A destination is the @I2P address of the final endpoint you are trying to connect to (an @I2P website or service). +A destination is the @I2P @in-net address of the final endpoint you are trying to connect to (example: an @I2P website, service, or simply a peer). TODO(anonimal): finish ### In-depth Information -An @I2P destination can be encoded into a @base32-address or @base64-address. Most users will only care about @base32-address or a `.i2p` hostname while, internally, @Kovri will use the @base64-address. +An @I2P destination can be encoded into a @base32-address or @base64-address. Most users will only care about @base32-address or a `.i2p` hostname while, internally, @Kovri/@I2P will use the @base64-address. TODO(anonimal): finish diff --git a/knowledge-base/moneropedia/floodfill.md b/knowledge-base/moneropedia/floodfill.md index c8f88645..ca3164b4 100644 --- a/knowledge-base/moneropedia/floodfill.md +++ b/knowledge-base/moneropedia/floodfill.md @@ -3,17 +3,13 @@ layout: moneropedia entry: "Floodfill" tags: ["kovri"] terms: ["floodfill"] -summary: "TODO(anonimal): finish" +summary: "An I2P router which maintains a distributed network-database" --- ### The Basics -TODO(anonimal): finish +By actively managing a distributed network-database, a router with *floodfill* capability has the ability to help maintain network stability and resiliancy while also being decentralized and trust-less. ### In-depth information -TODO(anonimal): finish - -### Notes - -TODO(anonimal): finish +Though floodfill itself is a simple storage system, the technical underpinnings of floodfill as it relates to @network-database and other protocols within @I2P are much more complex. Visit the [Network Database](https://geti2p.net/en/docs/how/network-database) page for details. diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md index a5b8360c..8b8b6cac 100644 --- a/knowledge-base/moneropedia/garlic-routing.md +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -10,7 +10,7 @@ summary: "Routing technology as implemented in Kovri/I2P" The term *Garlic Routing* has a diverse history of varying interpretations. -As it currently stands, Monero defines *Garlic Routing* as the method in which @Kovri and @I2P create a message-based anonymous overlay network of internet peers. +As it currently stands, Monero defines *Garlic Routing* as the method in which @Kovri and @I2P create a @message-based anonymous overlay network of internet peers. ### History @@ -25,18 +25,19 @@ As recent as October of 2016, [#tor-dev](https://oftc.net/WebChat/) has offered >during the free haven brainstorming, there was a moment where we described a routing mechanism, and somebody said "garlic routing!", and everybody laughed. so we for sure thought we had invented the name, at the time. +Note: permission to use the aforementioned quotes were granted by Nick Mathewson and Roger Dingledine + ### In-depth Information In technical terms, for @Kovri and @I2P, *Garlic Routing* translates to any/all of the following: -1. Layered Encryption -2. Bundling multiple messages together (garlic cloves) -3. ElGamal/AES Encryption +- Layered Encryption (like Onion Routing) +- Bundling multiple @messages together (garlic cloves) +- ElGamal/AES Encryption -Note: as seen in [Tor](https://torproject.org/), *Onion Routing* also uses layered encryption but does not use ElGamal and is not message-based. +Note: though [Tor](https://torproject.org/) uses layered encryption, Tor does not use ElGamal and is not message-based. ### Notes -- Permission to use the aforementioned quotes granted by Nick Mathewson and Roger Dingledine -- For more technical details, read [Garlic Routing](https://geti2p.net/en/docs/how/garlic-routing) -- Another way to envision layered encryption (in terms of Onion/Garlic Routing) is by replacing the onion/garlic with a [Matryoshka doll](https://en.wikipedia.org/wiki/Matryoshka_doll) +- In terms of Onion/Garlic Routing, another way to envision layered encryption is by replacing the onion/garlic with a [Matryoshka doll](https://en.wikipedia.org/wiki/Matryoshka_doll) +- For more technical details on Garlic Routing, read the @Java-I2P entry on [Garlic Routing](https://geti2p.net/en/docs/how/garlic-routing) diff --git a/knowledge-base/moneropedia/i2np.md b/knowledge-base/moneropedia/i2np.md new file mode 100644 index 00000000..59dd721d --- /dev/null +++ b/knowledge-base/moneropedia/i2np.md @@ -0,0 +1,15 @@ +--- +layout: moneropedia +entry: "I2NP" +tags: ["kovri"] +terms: ["I2NP", "message", "messages"] +summary: "TODO(anonimal): finish" +--- + +### The Basics + +TODO(anonimal): finish + +### In-depth information + +TODO(anonimal): finish diff --git a/knowledge-base/moneropedia/in-net.md b/knowledge-base/moneropedia/in-net.md new file mode 100644 index 00000000..d2177652 --- /dev/null +++ b/knowledge-base/moneropedia/in-net.md @@ -0,0 +1,15 @@ +--- +layout: moneropedia +entry: "In-net" +tags: ["kovri"] +terms: ["in-net"] +summary: "Within the I2P network" +--- + +### The Basics + +**In-net** is a [colloquial](https://en.wikipedia.org/wiki/Colloquial) term of which describes activities, protocols, or functionality that exist *only* within the @I2P network. + +### In-depth information + +Example: *in-net download* would be defined as downloading *only* within @I2P. diff --git a/knowledge-base/moneropedia/kovri.md b/knowledge-base/moneropedia/kovri.md index 9f9db49d..754bd9c8 100644 --- a/knowledge-base/moneropedia/kovri.md +++ b/knowledge-base/moneropedia/kovri.md @@ -16,14 +16,55 @@ TODO(anonimal): finish @address-book -@eepsite (@hidden-service, @garlic-site, @garlic-service) +@base32-address + +@base64-address + +@canonically-unique-host @clearnet -@reseed @network-database @router-info @floodfill @lease-set +@data-directory + +@destination + +@eepsite (@hidden-service, @garlic-site, @garlic-service) + +@floodfill + +@garlic-routing + +@i2np + +@i2p + +@in-net + +@java-i2p + +@jump-service + +@kovri + +@lease + +@leaseset + +@locally-unique-host + +@message @messages + +@network-database + +@reseed + +@router-info + +@subscription + +@tunnel - Kovri Cryptography (encryption, signatures, etc.) - Kovri Transports (SSU/NTCP) -- Kovri Tunnels (garlic routing, I2NP, etc.) - Kovri I2PControl (links to API, clients + qtoopie) - ...more/what else? diff --git a/knowledge-base/moneropedia/lease-set.md b/knowledge-base/moneropedia/lease-set.md index a47a0639..0c8cb332 100644 --- a/knowledge-base/moneropedia/lease-set.md +++ b/knowledge-base/moneropedia/lease-set.md @@ -1,19 +1,25 @@ --- layout: moneropedia -entry: "Lease-set" +entry: "Lease-Set" tags: ["kovri"] -terms: ["lease-set"] -summary: "TODO(anonimal): finish" +terms: ["LeaseSet"] +summary: "Contains all currently authorized Leases for a particular I2P Destination" --- ### The Basics -TODO(anonimal): finish +A Lease-Set contains a set of authorized @leases (and other related information) for a particular @destination. ### In-depth information -TODO(anonimal): finish +A Lease-Set contains: + +- all of the currently authorized @leases for a particular @destination +- the public key to which garlic messages can be encrypted (see @garlic-routing) +- the signing public key that can be used to revoke this particular version of the structure + +The Lease-Set is one of the two structures stored in the @network-database (the other being @router-info), and is keyed under the SHA256 of the contained @destination. ### Notes -TODO(anonimal): finish +For further details, read @Java-I2P's [LeaseSet](https://geti2p.net/en/docs/how/network-database#leaseSet) diff --git a/knowledge-base/moneropedia/lease.md b/knowledge-base/moneropedia/lease.md new file mode 100644 index 00000000..f3234d8c --- /dev/null +++ b/knowledge-base/moneropedia/lease.md @@ -0,0 +1,15 @@ +--- +layout: moneropedia +entry: "Lease" +tags: ["kovri"] +terms: ["lease", "leases"] +summary: "Authorizes an I2P tunnel to receive messages targeting a destination" +--- + +### The Basics + +A lease defines the authorization for a particular @I2P @tunnel to receive a @messages targeting a @destination. + +### In-depth information + +For further details, read @Java-I2P's [Lease](https://geti2p.net/spec/common-structures#lease) diff --git a/knowledge-base/moneropedia/router-info.md b/knowledge-base/moneropedia/router-info.md index 0b8adf8c..97455e46 100644 --- a/knowledge-base/moneropedia/router-info.md +++ b/knowledge-base/moneropedia/router-info.md @@ -3,12 +3,12 @@ layout: moneropedia entry: "Router-Info" tags: ["kovri"] terms: ["router-info"] -summary: "A file/data structure which contains an I2P peer's needed network information" +summary: "A data structure or file which contains an I2P peer's needed network information" --- ### The Basics -Router-Info is a file/data structure which contains all needed information to locate, identity, and communicate with an @I2P peer. This file/data structure includes IP address, router identity, other misc. technical details; is needed for @network-database and is published to @floodfill routers. +Router-Info is a data structure (periodically written to a [binary file](https://en.wikipedia.org/wiki/Binary_file)) which contains all needed information to locate, identity, and communicate with an @I2P peer. Router-Info includes IP address, router identity, other misc. technical details; is needed for @network-database and is published to @floodfill routers. ### In-depth information diff --git a/knowledge-base/moneropedia/tunnel.md b/knowledge-base/moneropedia/tunnel.md new file mode 100644 index 00000000..8b130404 --- /dev/null +++ b/knowledge-base/moneropedia/tunnel.md @@ -0,0 +1,15 @@ +--- +layout: moneropedia +entry: "Tunnel" +tags: ["kovri"] +terms: ["tunnel"] +summary: "TODO(anonimal): finish" +--- + +### The Basics + +TODO(anonimal): finish + +### In-depth information + +TODO(anonimal): finish From 92b846204fbbf1bd251a9ba8694f5b5bd22bb7b3 Mon Sep 17 00:00:00 2001 From: anonimal Date: Sat, 15 Oct 2016 07:03:39 +0000 Subject: [PATCH 16/35] Moneropedia: add Transports/SSU/NTCP Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/kovri.md | 7 +++++- knowledge-base/moneropedia/ntcp.md | 15 +++++++++++++ knowledge-base/moneropedia/ssu.md | 27 ++++++++++++++++++++++++ knowledge-base/moneropedia/transports.md | 15 +++++++++++++ knowledge-base/moneropedia/tunnel.md | 2 +- 5 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 knowledge-base/moneropedia/ntcp.md create mode 100644 knowledge-base/moneropedia/ssu.md create mode 100644 knowledge-base/moneropedia/transports.md diff --git a/knowledge-base/moneropedia/kovri.md b/knowledge-base/moneropedia/kovri.md index 754bd9c8..2c700526 100644 --- a/knowledge-base/moneropedia/kovri.md +++ b/knowledge-base/moneropedia/kovri.md @@ -56,15 +56,20 @@ TODO(anonimal): finish @network-database +@NTCP + @reseed @router-info +@SSU + @subscription +@transports + @tunnel - Kovri Cryptography (encryption, signatures, etc.) -- Kovri Transports (SSU/NTCP) - Kovri I2PControl (links to API, clients + qtoopie) - ...more/what else? diff --git a/knowledge-base/moneropedia/ntcp.md b/knowledge-base/moneropedia/ntcp.md new file mode 100644 index 00000000..163db18c --- /dev/null +++ b/knowledge-base/moneropedia/ntcp.md @@ -0,0 +1,15 @@ +--- +layout: moneropedia +entry: "NTCP" +tags: ["kovri"] +terms: ["NTCP"] +summary: "TODO(anonimal): finish" +--- + +### The Basics + +TODO(anonimal): finish + +### In-depth information + +TODO(anonimal): finish diff --git a/knowledge-base/moneropedia/ssu.md b/knowledge-base/moneropedia/ssu.md new file mode 100644 index 00000000..303e74ae --- /dev/null +++ b/knowledge-base/moneropedia/ssu.md @@ -0,0 +1,27 @@ +--- +layout: moneropedia +entry: "SSU" +tags: ["kovri"] +terms: ["SSU"] +summary: "I2P's Secure Semi-reliable UDP layer" +--- + +### The Basics + +*Secure Semi-reliable UDP* (SSU) is one of two encrypted @transport layers for @Kovri/@I2P. + +SSU's *primary* purpose is to securely transmit @in-net @I2NP messages through @tunnels over encrypted [UDP](https://en.wikipedia.org/wiki/User_Datagram_Protocol). + +### In-depth information + +- Much like its @NTCP counterpart, SSU is a connection-oriented, point-to-point data transport +- Termed *semi-reliable* because SSU will repeatedly retransmit *unacknowledged* messages (up to maximum number then dropped) +- SSU also provides several unique services (in addition to its function as a @transport layer): + - IP detection (local inspection + peer testing) + - NAT traversal (using introducers) + - Firewall status + - If implemented, SSU can notify NTCP if the external address or firewall status changes + +### Notes + +For further details, read @Java-I2P's [SSU](https://geti2p.net/en/docs/transport/ssu) diff --git a/knowledge-base/moneropedia/transports.md b/knowledge-base/moneropedia/transports.md new file mode 100644 index 00000000..01b9cebe --- /dev/null +++ b/knowledge-base/moneropedia/transports.md @@ -0,0 +1,15 @@ +--- +layout: moneropedia +entry: "Transports" +tags: ["kovri"] +terms: ["transports", "transport"] +summary: "TODO(anonimal): finish" +--- + +### The Basics + +TODO(anonimal): finish + +### In-depth information + +TODO(anonimal): finish diff --git a/knowledge-base/moneropedia/tunnel.md b/knowledge-base/moneropedia/tunnel.md index 8b130404..b0891cec 100644 --- a/knowledge-base/moneropedia/tunnel.md +++ b/knowledge-base/moneropedia/tunnel.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Tunnel" tags: ["kovri"] -terms: ["tunnel"] +terms: ["tunnel", "tunnels"] summary: "TODO(anonimal): finish" --- From 313b069453e6be4d92e6c57b266b53f6d81e31ff Mon Sep 17 00:00:00 2001 From: anonimal Date: Sat, 15 Oct 2016 23:32:23 +0000 Subject: [PATCH 17/35] Moneropedia: update NTCP/SSU/Transports entries Also: - Add more 'terms' in other entries - Separate @Kovri/@I2P (currently, @I2P is implied) Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/base32-address.md | 2 +- knowledge-base/moneropedia/base64-address.md | 2 +- knowledge-base/moneropedia/clearnet.md | 4 ++-- knowledge-base/moneropedia/destination.md | 2 +- knowledge-base/moneropedia/garlic-routing.md | 2 +- knowledge-base/moneropedia/java-i2p.md | 2 +- knowledge-base/moneropedia/ntcp.md | 25 +++++++++++++++++--- knowledge-base/moneropedia/ssu.md | 19 +++++++-------- knowledge-base/moneropedia/transports.md | 10 ++++++-- 9 files changed, 46 insertions(+), 22 deletions(-) diff --git a/knowledge-base/moneropedia/base32-address.md b/knowledge-base/moneropedia/base32-address.md index 787b6181..b2482982 100644 --- a/knowledge-base/moneropedia/base32-address.md +++ b/knowledge-base/moneropedia/base32-address.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Base32 address" tags: ["kovri"] -terms: ["base32-address"] +terms: ["base32-address", "base32-addresses"] summary: "Base32 encoded hash of a Base64 address" --- diff --git a/knowledge-base/moneropedia/base64-address.md b/knowledge-base/moneropedia/base64-address.md index b15f0ada..9bd1e7bc 100644 --- a/knowledge-base/moneropedia/base64-address.md +++ b/knowledge-base/moneropedia/base64-address.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Base64 address" tags: ["kovri"] -terms: ["base64-address"] +terms: ["base64-address", "base64-addresses"] summary: "Base64 encoded I2P destination" --- diff --git a/knowledge-base/moneropedia/clearnet.md b/knowledge-base/moneropedia/clearnet.md index 54058efc..ea69b03d 100644 --- a/knowledge-base/moneropedia/clearnet.md +++ b/knowledge-base/moneropedia/clearnet.md @@ -28,6 +28,6 @@ These technologies protect you from clearnet by building an anonymous network ** Here is an accurate, [interactive diagram](https://www.eff.org/pages/tor-and-https) provided by the [EFF](https://www.eff.org/) which describes *clearnet* as it relates to **Tor**. The concept also (somewhat) applies to @Kovri and @I2P in terms of anonymity with the exception that: -- @Kovri/@I2P does not use exit nodes when connecting to an @eepsite +- @Kovri does not use exit nodes when connecting to an @eepsite - Your traffic ever need to leave the @I2P network. -- You do not need HTTPS to use @Kovri/@I2P (with the exception of @reseed) +- You do not need HTTPS to use @Kovri (with the exception of @reseed) diff --git a/knowledge-base/moneropedia/destination.md b/knowledge-base/moneropedia/destination.md index 7971da57..b93324f3 100644 --- a/knowledge-base/moneropedia/destination.md +++ b/knowledge-base/moneropedia/destination.md @@ -14,6 +14,6 @@ TODO(anonimal): finish ### In-depth Information -An @I2P destination can be encoded into a @base32-address or @base64-address. Most users will only care about @base32-address or a `.i2p` hostname while, internally, @Kovri/@I2P will use the @base64-address. +An @I2P destination can be encoded into a @base32-address or @base64-address. Most users will only care about @base32-address or a `.i2p` hostname while, internally, @Kovri uses @base64-addresses. TODO(anonimal): finish diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md index 8b8b6cac..4b7888bc 100644 --- a/knowledge-base/moneropedia/garlic-routing.md +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -3,7 +3,7 @@ layout: moneropedia entry: "Garlic Routing" tags: ["kovri"] terms: ["garlic-routing"] -summary: "Routing technology as implemented in Kovri/I2P" +summary: "Routing technology as implemented in Kovri" --- ### The Basics diff --git a/knowledge-base/moneropedia/java-i2p.md b/knowledge-base/moneropedia/java-i2p.md index d5f690da..e040579b 100644 --- a/knowledge-base/moneropedia/java-i2p.md +++ b/knowledge-base/moneropedia/java-i2p.md @@ -3,7 +3,7 @@ layout: moneropedia entry: "Java I2P" tags: ["kovri"] terms: ["Java-I2P"] -summary: "The original implementation of I2P; written in Java" +summary: "The original implementation of I2P - written in Java" --- ### The Basics diff --git a/knowledge-base/moneropedia/ntcp.md b/knowledge-base/moneropedia/ntcp.md index 163db18c..69f3152c 100644 --- a/knowledge-base/moneropedia/ntcp.md +++ b/knowledge-base/moneropedia/ntcp.md @@ -3,13 +3,32 @@ layout: moneropedia entry: "NTCP" tags: ["kovri"] terms: ["NTCP"] -summary: "TODO(anonimal): finish" +summary: "NIO-Based TCP (Non-blocking I/O based TCP): one of two Kovri transports" --- ### The Basics -TODO(anonimal): finish +*NIO-Based TCP (Non-blocking I/O based TCP)* is one of two encrypted @transports for @Kovri. + +Similar to @SSU, @NTCP's *primary* purpose is to securely transmit @in-net @I2NP messages through @tunnels but, unlike @SSU, @NTCP functions solely over encrypted [TCP](https://en.wikipedia.org/wiki/Transmission_Control_Protocol). ### In-depth information -TODO(anonimal): finish + - Passes along individual @I2NP messages (both Standard and Time Sync) after: + - TCP has been established + - Establishment Sequence has been completed + - Uses the following @encryption: + - 2048-bit [Diffie-Hellman](https://en.wikipedia.org/wiki/Diffie-hellman) + - [AES-256](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard)/[CBC](https://en.wikipedia.org/wiki/Block_cipher_modes_of_operation) + - Establishment Sequence has the following *states*: + - Pre-establishment + - Establishment + - Post-establishment or "Established" + - Uses the following from the @network-database: + - Transport name: NTCP + - Host: IP (IPv4 or IPv6) or host name (shortened IPv6 address (with "::") is allowed) + - Port: 1024 - 65535 + +### Notes + +For further details, read @Java-I2P's [NTCP](https://geti2p.net/en/docs/transport/ntcp) diff --git a/knowledge-base/moneropedia/ssu.md b/knowledge-base/moneropedia/ssu.md index 303e74ae..665f9c44 100644 --- a/knowledge-base/moneropedia/ssu.md +++ b/knowledge-base/moneropedia/ssu.md @@ -3,24 +3,23 @@ layout: moneropedia entry: "SSU" tags: ["kovri"] terms: ["SSU"] -summary: "I2P's Secure Semi-reliable UDP layer" +summary: "Secure Semi-reliable UDP: one of two Kovri transports" --- ### The Basics -*Secure Semi-reliable UDP* (SSU) is one of two encrypted @transport layers for @Kovri/@I2P. +*Secure Semi-reliable UDP* is one of two encrypted @transports for @Kovri. -SSU's *primary* purpose is to securely transmit @in-net @I2NP messages through @tunnels over encrypted [UDP](https://en.wikipedia.org/wiki/User_Datagram_Protocol). +Similar to @NTCP, @SSU's *primary* purpose is to securely transmit @in-net @I2NP messages through @tunnels but, unlike @NTCP, @SSU functions solely over encrypted [UDP](https://en.wikipedia.org/wiki/User_Datagram_Protocol). ### In-depth information -- Much like its @NTCP counterpart, SSU is a connection-oriented, point-to-point data transport -- Termed *semi-reliable* because SSU will repeatedly retransmit *unacknowledged* messages (up to maximum number then dropped) -- SSU also provides several unique services (in addition to its function as a @transport layer): - - IP detection (local inspection + peer testing) - - NAT traversal (using introducers) - - Firewall status - - If implemented, SSU can notify NTCP if the external address or firewall status changes +- Like @NTCP, @SSU is a connection-oriented, point-to-point data transport +- Termed *semi-reliable* because @SSU will repeatedly retransmit *unacknowledged* messages (up to maximum number then dropped) +- @SSU also provides several unique services (in addition to its function as a @transport layer): + - IP detection (local inspection or with [peer testing](https://geti2p.net/en/docs/transport/ssu#peerTesting)) + - [NAT](https://en.wikipedia.org/wiki/Network_address_translation) traversal (using [introducers](https://geti2p.net/en/docs/transport/ssu#introduction)) + - [Firewall](https://en.wikipedia.org/wiki/Firewall_%28computing%29) status and, if implemented, @SSU can notify @NTCP if the external address or firewall status changes ### Notes diff --git a/knowledge-base/moneropedia/transports.md b/knowledge-base/moneropedia/transports.md index 01b9cebe..71105c7f 100644 --- a/knowledge-base/moneropedia/transports.md +++ b/knowledge-base/moneropedia/transports.md @@ -3,13 +3,19 @@ layout: moneropedia entry: "Transports" tags: ["kovri"] terms: ["transports", "transport"] -summary: "TODO(anonimal): finish" +summary: "The two encrypted transport layers for Kovri" --- ### The Basics -TODO(anonimal): finish +@Kovri comes with two encrypted [transport layer](https://en.wikipedia.org/wiki/Transport_layer) technologies that allow @Kovri to send @messages across the @I2P network. These *@transports* are @SSU and @NTCP. + +@SSU is encrypted [UDP](https://en.wikipedia.org/wiki/User_Datagram_Protocol) and @NTCP is encrypted [TCP](https://en.wikipedia.org/wiki/Transmission_Control_Protocol). They both allow you to securely use @I2P over [TCP/IP](https://en.wikipedia.org/wiki/Tcp/ip) connections. ### In-depth information TODO(anonimal): finish + +### Notes + +Read about the transport layer in the [OSI model](https://en.wikipedia.org/wiki/OSI_model) From 3761e3b091315e75aed662eb6cb3b35d86a20ba6 Mon Sep 17 00:00:00 2001 From: anonimal Date: Sun, 16 Oct 2016 05:29:14 +0000 Subject: [PATCH 18/35] Moneropedia: clarify type of I2P in Clearnet entry Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/clearnet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge-base/moneropedia/clearnet.md b/knowledge-base/moneropedia/clearnet.md index ea69b03d..b36b0a0b 100644 --- a/knowledge-base/moneropedia/clearnet.md +++ b/knowledge-base/moneropedia/clearnet.md @@ -21,7 +21,7 @@ and even if you use [HTTPS](https://en.wikipedia.org/wiki/HTTPS) or similar (whi Since a traditional [VPN](https://en.wikipedia.org/wiki/VPN) cannot save you from clearnet (as you are still using *clearnet* (though you are more proxied than without a VPN)), you should use an *anonymous overlay network* to avoid using clearnet directly: - @Kovri -- @I2P +- @Java-I2P - [Tor](https://torproject.org/) These technologies protect you from clearnet by building an anonymous network **over** clearnet to keep your transmissions both encrypted **and** anonymous. From 1af1de080131ec1ca8401347fe2d2baa04f9cf7e Mon Sep 17 00:00:00 2001 From: anonimal Date: Tue, 18 Oct 2016 03:42:29 +0000 Subject: [PATCH 19/35] Moneropedia: add Encryption related entries - Encryption (finished) - Layered-Encryption (skeleton) Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/encryption.md | 35 +++++++++++++++++++ knowledge-base/moneropedia/garlic-routing.md | 4 +-- knowledge-base/moneropedia/kovri.md | 3 +- .../moneropedia/layered-encryption.md | 15 ++++++++ 4 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 knowledge-base/moneropedia/encryption.md create mode 100644 knowledge-base/moneropedia/layered-encryption.md diff --git a/knowledge-base/moneropedia/encryption.md b/knowledge-base/moneropedia/encryption.md new file mode 100644 index 00000000..cccaccd8 --- /dev/null +++ b/knowledge-base/moneropedia/encryption.md @@ -0,0 +1,35 @@ +--- +layout: moneropedia +entry: "Encryption" +tags: ["kovri"] +terms: ["encryption"] +summary: "The process of encoding messages or information in a way that only authorized parties can decode and read" +--- + +### The Basics + +From [Encryption](https://en.wikipedia.org/wiki/Encryption): + +> +In cryptography, encryption is the process of encoding messages or information in such a way that only authorized parties can decode and read what is sent. Encryption does not of itself prevent interception, but denies the message content to the interceptor. + +### In-depth information + +From [Encryption](https://en.wikipedia.org/wiki/Encryption): + +> + In an encryption scheme, the intended communication information or message (referred to as *plaintext*), is encrypted using an encryption algorithm, generating ciphertext that can only be read if decrypted. For technical reasons, an encryption scheme usually uses a pseudo-random encryption key generated by an algorithm. It is in principle possible to decrypt the message without possessing the key, but, for a well-designed encryption scheme, large computational resources and skill are required. An authorized recipient can easily decrypt the message with the key provided by the originator to recipients, but not to unauthorized interceptors. + +> +The purpose of encryption is to ensure that only somebody who is authorized to access data (e.g. a text message or a file), will be able to read it, using the decryption key. Somebody who is not authorized can be excluded, because he or she does not have the required key, without which it is impossible to read the encrypted information. + +### Kovri + +@Kovri implements various types of encryption in *at least* 4 essential capacities: + +- @Reseed for bootstrapping +- @Garlic-routing: three layers of encryption are used to verify the secure delivery of @messages to the recipient/peer/@destination +- @Tunnel encryption: garlic messages are passed through a @tunnel and encrypted by the @tunnel gateway to the @tunnel endpoint +- @Transport layer encryption prevents the ability to decrypt @messages at the [media layer](https://en.wikipedia.org/wiki/OSI_model) + +For details on the types of encryption and cryptographic signatures used in @Kovri and @I2P, visit @Java-I2P's [Cryptography](https://geti2p.net/spec/cryptography) diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md index 4b7888bc..7d5ed4c1 100644 --- a/knowledge-base/moneropedia/garlic-routing.md +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -35,9 +35,9 @@ In technical terms, for @Kovri and @I2P, *Garlic Routing* translates to any/all - Bundling multiple @messages together (garlic cloves) - ElGamal/AES Encryption -Note: though [Tor](https://torproject.org/) uses layered encryption, Tor does not use ElGamal and is not message-based. +Note: though [Tor](https://torproject.org/) uses layered @encryption, Tor does not use ElGamal and is not message-based. ### Notes -- In terms of Onion/Garlic Routing, another way to envision layered encryption is by replacing the onion/garlic with a [Matryoshka doll](https://en.wikipedia.org/wiki/Matryoshka_doll) +- In terms of Onion/Garlic Routing, another way to envision layered @encryption is by replacing the onion/garlic with a [Matryoshka doll](https://en.wikipedia.org/wiki/Matryoshka_doll) - For more technical details on Garlic Routing, read the @Java-I2P entry on [Garlic Routing](https://geti2p.net/en/docs/how/garlic-routing) diff --git a/knowledge-base/moneropedia/kovri.md b/knowledge-base/moneropedia/kovri.md index 2c700526..09c9294b 100644 --- a/knowledge-base/moneropedia/kovri.md +++ b/knowledge-base/moneropedia/kovri.md @@ -30,6 +30,8 @@ TODO(anonimal): finish @eepsite (@hidden-service, @garlic-site, @garlic-service) +@encryption + @floodfill @garlic-routing @@ -70,6 +72,5 @@ TODO(anonimal): finish @tunnel -- Kovri Cryptography (encryption, signatures, etc.) - Kovri I2PControl (links to API, clients + qtoopie) - ...more/what else? diff --git a/knowledge-base/moneropedia/layered-encryption.md b/knowledge-base/moneropedia/layered-encryption.md new file mode 100644 index 00000000..d01241ec --- /dev/null +++ b/knowledge-base/moneropedia/layered-encryption.md @@ -0,0 +1,15 @@ +--- +layout: moneropedia +entry: "Layered Encryption" +tags: ["kovri"] +terms: ["layered-encryption"] +summary: "TODO(anonimal): finish" +--- + +### The Basics + +TODO(anonimal): finish + +### In-depth information + +TODO(anonimal): finish From 2681940c7eb8f582e9ef1097e18619b25e760dc7 Mon Sep 17 00:00:00 2001 From: anonimal Date: Tue, 18 Oct 2016 06:46:03 +0000 Subject: [PATCH 20/35] Moneropedia: clarify Garlic Routing, add I2PControl Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/garlic-routing.md | 4 ++-- knowledge-base/moneropedia/i2pcontrol.md | 17 +++++++++++++++++ knowledge-base/moneropedia/kovri.md | 5 ++--- 3 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 knowledge-base/moneropedia/i2pcontrol.md diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md index 7d5ed4c1..8bea7607 100644 --- a/knowledge-base/moneropedia/garlic-routing.md +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -10,11 +10,11 @@ summary: "Routing technology as implemented in Kovri" The term *Garlic Routing* has a diverse history of varying interpretations. -As it currently stands, Monero defines *Garlic Routing* as the method in which @Kovri and @I2P create a @message-based anonymous overlay network of internet peers. +As it currently stands, Monero defines *Garlic Routing* as the method in which @Kovri and @I2P create a @message-based anonymous overlay network of internet peers. The @layered-encryption of Garlic Routing is similar to the @layered-encryption of [Onion Routing](https://en.wikipedia.org/wiki/Onion_routing). ### History -In written form, the term *Garlic Routing* can be seen as early as June of 2000 in Roger Dingledine's [Free Haven Master's thesis](http://www.freehaven.net/papers.html) (Section 8.1.1) as derived from the term [Onion Routing](https://en.wikipedia.org/wiki/Onion_routing). +In written form, the term *Garlic Routing* can be seen as early as June of 2000 in Roger Dingledine's [Free Haven Master's thesis](http://www.freehaven.net/papers.html) (Section 8.1.1) as derived from the term Onion Routing. As recent as October of 2016, [#tor-dev](https://oftc.net/WebChat/) has offered insight into the creation of the term *Garlic Routing*: diff --git a/knowledge-base/moneropedia/i2pcontrol.md b/knowledge-base/moneropedia/i2pcontrol.md new file mode 100644 index 00000000..79505fd6 --- /dev/null +++ b/knowledge-base/moneropedia/i2pcontrol.md @@ -0,0 +1,17 @@ +--- +layout: moneropedia +entry: "I2PControl" +tags: ["kovri"] +terms: ["i2pcontrol", "I2PControl"] +summary: "TODO(anonimal): finish" +--- + +### The Basics + +TODO(anonimal): finish + +https://github.com/EinMByte/qtoopie + +### In-depth information + +TODO(anonimal): finish diff --git a/knowledge-base/moneropedia/kovri.md b/knowledge-base/moneropedia/kovri.md index 09c9294b..fe89dd05 100644 --- a/knowledge-base/moneropedia/kovri.md +++ b/knowledge-base/moneropedia/kovri.md @@ -36,6 +36,8 @@ TODO(anonimal): finish @garlic-routing +@I2PControl + @i2np @i2p @@ -71,6 +73,3 @@ TODO(anonimal): finish @transports @tunnel - -- Kovri I2PControl (links to API, clients + qtoopie) -- ...more/what else? From 31af0214f5b0e60b7cde97b0483c0d760470c485 Mon Sep 17 00:00:00 2001 From: anonimal Date: Tue, 18 Oct 2016 06:54:22 +0000 Subject: [PATCH 21/35] Moneropedia: link to Signature term in Encryption Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/encryption.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge-base/moneropedia/encryption.md b/knowledge-base/moneropedia/encryption.md index cccaccd8..4bcbd367 100644 --- a/knowledge-base/moneropedia/encryption.md +++ b/knowledge-base/moneropedia/encryption.md @@ -32,4 +32,4 @@ The purpose of encryption is to ensure that only somebody who is authorized to a - @Tunnel encryption: garlic messages are passed through a @tunnel and encrypted by the @tunnel gateway to the @tunnel endpoint - @Transport layer encryption prevents the ability to decrypt @messages at the [media layer](https://en.wikipedia.org/wiki/OSI_model) -For details on the types of encryption and cryptographic signatures used in @Kovri and @I2P, visit @Java-I2P's [Cryptography](https://geti2p.net/spec/cryptography) +For details on the types of encryption and cryptographic @signatures used in @Kovri and @I2P, visit @Java-I2P's [Cryptography](https://geti2p.net/spec/cryptography) From d2247103cf82639fb50adb2c2d9780e9cb3cddfc Mon Sep 17 00:00:00 2001 From: anonimal Date: Tue, 18 Oct 2016 10:13:55 +0000 Subject: [PATCH 22/35] Moneropedia: update/finish initial Kovri entry Also: - adjust the case for all applicable terms - minor clarification in canonically-unique-host - add @encryption for several references to encryption Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/address-book.md | 2 +- knowledge-base/moneropedia/base32-address.md | 2 +- knowledge-base/moneropedia/base64-address.md | 2 +- .../moneropedia/canonically-unique-host.md | 8 +- knowledge-base/moneropedia/clearnet.md | 2 +- knowledge-base/moneropedia/data-directory.md | 2 +- knowledge-base/moneropedia/destination.md | 2 +- knowledge-base/moneropedia/eepsite.md | 2 +- knowledge-base/moneropedia/floodfill.md | 2 +- knowledge-base/moneropedia/garlic-routing.md | 6 +- knowledge-base/moneropedia/i2np.md | 2 +- knowledge-base/moneropedia/i2pcontrol.md | 2 +- knowledge-base/moneropedia/in-net.md | 2 +- knowledge-base/moneropedia/jump-service.md | 2 +- knowledge-base/moneropedia/kovri.md | 94 ++++++++----------- .../moneropedia/layered-encryption.md | 2 +- knowledge-base/moneropedia/lease.md | 2 +- .../moneropedia/locally-unique-host.md | 2 +- .../moneropedia/network-database.md | 2 +- knowledge-base/moneropedia/reseed.md | 2 +- knowledge-base/moneropedia/router-info.md | 2 +- knowledge-base/moneropedia/subscription.md | 2 +- knowledge-base/moneropedia/transports.md | 2 +- knowledge-base/moneropedia/tunnel.md | 2 +- 24 files changed, 68 insertions(+), 82 deletions(-) diff --git a/knowledge-base/moneropedia/address-book.md b/knowledge-base/moneropedia/address-book.md index 3c03a160..b614bea7 100644 --- a/knowledge-base/moneropedia/address-book.md +++ b/knowledge-base/moneropedia/address-book.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Address Book" tags: ["kovri"] -terms: ["address-book"] +terms: ["Address-Book"] summary: "Allows you to visit I2P websites/services that have the .i2p domain" --- diff --git a/knowledge-base/moneropedia/base32-address.md b/knowledge-base/moneropedia/base32-address.md index b2482982..10284db5 100644 --- a/knowledge-base/moneropedia/base32-address.md +++ b/knowledge-base/moneropedia/base32-address.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Base32 address" tags: ["kovri"] -terms: ["base32-address", "base32-addresses"] +terms: ["Base32-address", "Base32-addresses"] summary: "Base32 encoded hash of a Base64 address" --- diff --git a/knowledge-base/moneropedia/base64-address.md b/knowledge-base/moneropedia/base64-address.md index 9bd1e7bc..99b85727 100644 --- a/knowledge-base/moneropedia/base64-address.md +++ b/knowledge-base/moneropedia/base64-address.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Base64 address" tags: ["kovri"] -terms: ["base64-address", "base64-addresses"] +terms: ["Base64-address", "Base64-addresses"] summary: "Base64 encoded I2P destination" --- diff --git a/knowledge-base/moneropedia/canonically-unique-host.md b/knowledge-base/moneropedia/canonically-unique-host.md index a2335d12..dfb606a6 100644 --- a/knowledge-base/moneropedia/canonically-unique-host.md +++ b/knowledge-base/moneropedia/canonically-unique-host.md @@ -2,17 +2,17 @@ layout: moneropedia entry: "Canonically-unique host" tags: ["kovri"] -terms: ["canonically-unique-host"] +terms: ["Canonically-unique-host"] summary: "A host that is canonically resolved to an address or set of addresses" --- ### The Basics -A canonically-unique host is a [FQDN](https://en.wikipedia.org/wiki/FQDN) that will canonically resolve to a designated address or set of addresses. Not to be confused with a @locally-unique-host. +A Canonically-unique host is a [FQDN](https://en.wikipedia.org/wiki/FQDN) that will canonically resolve to a designated address or set of addresses. Not to be confused with a @locally-unique-host. ### In-depth information -A canonically-unique host is defined by remote authoritative sources; usually through [DNS](https://en.wikipedia.org/wiki/DNS). When resolving a peer's hostname, you will most likely use an external source for resolution unless have the following implemented: +A Canonically-unique host is defined by remote authoritative sources; usually through [DNS](https://en.wikipedia.org/wiki/DNS). When resolving a peer's hostname, you will most likely use an external source for resolution unless have the following implemented: - a database file similar to a [hosts file](https://en.wikipedia.org/wiki/etc/hosts) - an internal-network resolver (which eventually pulls from external sources) @@ -20,4 +20,4 @@ A canonically-unique host is defined by remote authoritative sources; usually th ### Notes - Monero primarily uses @canonically-unique-host resolution while @I2P only uses @locally-unique-host resolution. -- @I2P's and @Kovri's assigned top-level domain is currently `.i2p` and @Kovri intends to only process/use the `.i2p` [top-level domain](https://en.wikipedia.org/wiki/Top_level_domain) +- @I2P's and @Kovri's self-assigned top-level domain is currently `.i2p` and @Kovri intends to only process/use the `.i2p` [top-level domain](https://en.wikipedia.org/wiki/Top_level_domain) diff --git a/knowledge-base/moneropedia/clearnet.md b/knowledge-base/moneropedia/clearnet.md index b36b0a0b..85678268 100644 --- a/knowledge-base/moneropedia/clearnet.md +++ b/knowledge-base/moneropedia/clearnet.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Clearnet" tags: ["kovri"] -terms: ["clearnet"] +terms: ["Clearnet"] summary: "The internet in which anonymous overlay networks are built upon" --- diff --git a/knowledge-base/moneropedia/data-directory.md b/knowledge-base/moneropedia/data-directory.md index 4aff4444..e66f6959 100644 --- a/knowledge-base/moneropedia/data-directory.md +++ b/knowledge-base/moneropedia/data-directory.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Data Directory" tags: ["kovri"] -terms: ["data-directory"] +terms: ["Data-Directory"] summary: "Where essential kovri data for runtime is stored" --- diff --git a/knowledge-base/moneropedia/destination.md b/knowledge-base/moneropedia/destination.md index b93324f3..91237681 100644 --- a/knowledge-base/moneropedia/destination.md +++ b/knowledge-base/moneropedia/destination.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Destination" tags: ["kovri"] -terms: ["destination"] +terms: ["Destination"] summary: "A in-net address that serves as a final endpoint" --- diff --git a/knowledge-base/moneropedia/eepsite.md b/knowledge-base/moneropedia/eepsite.md index ddfd3dee..5fbb9545 100644 --- a/knowledge-base/moneropedia/eepsite.md +++ b/knowledge-base/moneropedia/eepsite.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Eepsite" tags: ["kovri"] -terms: ["eepsite", "hidden-service", "garlic-site", "garlic-service"] +terms: ["Eepsite", "Hidden-Service", "Garlic-Site", "Garlic-Service"] summary: "A website or service hosted within the I2P network" --- diff --git a/knowledge-base/moneropedia/floodfill.md b/knowledge-base/moneropedia/floodfill.md index ca3164b4..e3fbf54f 100644 --- a/knowledge-base/moneropedia/floodfill.md +++ b/knowledge-base/moneropedia/floodfill.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Floodfill" tags: ["kovri"] -terms: ["floodfill"] +terms: ["Floodfill"] summary: "An I2P router which maintains a distributed network-database" --- diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md index 8bea7607..13596f59 100644 --- a/knowledge-base/moneropedia/garlic-routing.md +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Garlic Routing" tags: ["kovri"] -terms: ["garlic-routing"] +terms: ["Garlic-Routing"] summary: "Routing technology as implemented in Kovri" --- @@ -31,9 +31,9 @@ Note: permission to use the aforementioned quotes were granted by Nick Mathewson In technical terms, for @Kovri and @I2P, *Garlic Routing* translates to any/all of the following: -- Layered Encryption (like Onion Routing) +- @Layered-Encryption (like Onion Routing) - Bundling multiple @messages together (garlic cloves) -- ElGamal/AES Encryption +- ElGamal/AES @encryption Note: though [Tor](https://torproject.org/) uses layered @encryption, Tor does not use ElGamal and is not message-based. diff --git a/knowledge-base/moneropedia/i2np.md b/knowledge-base/moneropedia/i2np.md index 59dd721d..e63effb3 100644 --- a/knowledge-base/moneropedia/i2np.md +++ b/knowledge-base/moneropedia/i2np.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "I2NP" tags: ["kovri"] -terms: ["I2NP", "message", "messages"] +terms: ["I2NP", "Message", "Messages"] summary: "TODO(anonimal): finish" --- diff --git a/knowledge-base/moneropedia/i2pcontrol.md b/knowledge-base/moneropedia/i2pcontrol.md index 79505fd6..9ccbaee0 100644 --- a/knowledge-base/moneropedia/i2pcontrol.md +++ b/knowledge-base/moneropedia/i2pcontrol.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "I2PControl" tags: ["kovri"] -terms: ["i2pcontrol", "I2PControl"] +terms: ["I2PControl"] summary: "TODO(anonimal): finish" --- diff --git a/knowledge-base/moneropedia/in-net.md b/knowledge-base/moneropedia/in-net.md index d2177652..92404f08 100644 --- a/knowledge-base/moneropedia/in-net.md +++ b/knowledge-base/moneropedia/in-net.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "In-net" tags: ["kovri"] -terms: ["in-net"] +terms: ["In-net"] summary: "Within the I2P network" --- diff --git a/knowledge-base/moneropedia/jump-service.md b/knowledge-base/moneropedia/jump-service.md index 286ad44a..aa8e72ac 100644 --- a/knowledge-base/moneropedia/jump-service.md +++ b/knowledge-base/moneropedia/jump-service.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Jump Service" tags: ["kovri"] -terms: ["jump-service"] +terms: ["Jump-Service"] summary: "An I2P website service that adds addresses to your address book" --- diff --git a/knowledge-base/moneropedia/kovri.md b/knowledge-base/moneropedia/kovri.md index fe89dd05..b8840052 100644 --- a/knowledge-base/moneropedia/kovri.md +++ b/knowledge-base/moneropedia/kovri.md @@ -8,68 +8,54 @@ summary: "Monero's C++ router implementation of the I2P network" ### The Basics -TODO(anonimal): finish +[Kovri](https://github.com/monero-project/kovri/) is a C++ implementation of the @I2P network. @Kovri is currently in heavy, active development and not yet integrated with Monero. When Kovri is integrated into your Monero @node, your transactions will be more secure than ever before. ### In-depth information -TODO(anonimal): finish +Kovri will protect you and Monero from: -@address-book +- @Node partitioning attacks +- Associations between a particular txid and your IP address +- Mining and/or running a node in highly adversarial environments +- Metadata leakage (e.g., @OpenAlias lookups) -@base32-address +...and much more. -@base64-address +Read [anonimal's FFS proposal](https://forum.getmonero.org/9/work-in-progress/86967/anonimal-s-kovri-full-time-development-funding-thread) for more details and for reasoning behind the project. Also read the FAQ and User Guide in the [Kovri repository](https://github.com/monero-project/kovri/). -@canonically-unique-host +### @Kovri / @I2P Terminology -@clearnet +#### Client + API -@data-directory +- @Address-Book +- @Base32-address +- @Base64-address +- @Canonically-unique-host +- @Eepsite (@Hidden-Service, @Garlic-Site, @Garlic-Service) +- @I2PControl +- @Jump-Service +- @Locally-unique-host +- @Reseed +- @Subscription -@destination +#### Core + Router -@eepsite (@hidden-service, @garlic-site, @garlic-service) - -@encryption - -@floodfill - -@garlic-routing - -@I2PControl - -@i2np - -@i2p - -@in-net - -@java-i2p - -@jump-service - -@kovri - -@lease - -@leaseset - -@locally-unique-host - -@message @messages - -@network-database - -@NTCP - -@reseed - -@router-info - -@SSU - -@subscription - -@transports - -@tunnel +- @Clearnet +- @Data-Directory +- @Destination +- @Encryption +- @Floodfill +- @Garlic-routing +- @I2NP +- @In-net +- @Java-I2P +- @Layered-Encryption +- @Lease +- @LeaseSet +- @Message @Messages +- @NTCP +- @Network-Database +- @Router-Info +- @SSU +- @Transports +- @Tunnel diff --git a/knowledge-base/moneropedia/layered-encryption.md b/knowledge-base/moneropedia/layered-encryption.md index d01241ec..37344c97 100644 --- a/knowledge-base/moneropedia/layered-encryption.md +++ b/knowledge-base/moneropedia/layered-encryption.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Layered Encryption" tags: ["kovri"] -terms: ["layered-encryption"] +terms: ["Layered-Encryption"] summary: "TODO(anonimal): finish" --- diff --git a/knowledge-base/moneropedia/lease.md b/knowledge-base/moneropedia/lease.md index f3234d8c..d3cdc545 100644 --- a/knowledge-base/moneropedia/lease.md +++ b/knowledge-base/moneropedia/lease.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Lease" tags: ["kovri"] -terms: ["lease", "leases"] +terms: ["Lease", "Leases"] summary: "Authorizes an I2P tunnel to receive messages targeting a destination" --- diff --git a/knowledge-base/moneropedia/locally-unique-host.md b/knowledge-base/moneropedia/locally-unique-host.md index d979e2d3..3ce7f860 100644 --- a/knowledge-base/moneropedia/locally-unique-host.md +++ b/knowledge-base/moneropedia/locally-unique-host.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Locally-unique host" tags: ["kovri"] -terms: ["locally-unique-host"] +terms: ["Locally-unique-host"] summary: "A host defined by you and resolved only by you" --- diff --git a/knowledge-base/moneropedia/network-database.md b/knowledge-base/moneropedia/network-database.md index 6aea989e..64f74b5d 100644 --- a/knowledge-base/moneropedia/network-database.md +++ b/knowledge-base/moneropedia/network-database.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Network Database" tags: ["kovri"] -terms: ["network-database"] +terms: ["Network-Database"] summary: "TODO(anonimal): finish" --- diff --git a/knowledge-base/moneropedia/reseed.md b/knowledge-base/moneropedia/reseed.md index 35611f4d..932c3be2 100644 --- a/knowledge-base/moneropedia/reseed.md +++ b/knowledge-base/moneropedia/reseed.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Reseed" tags: ["kovri"] -terms: ["reseed"] +terms: ["Reseed"] summary: "The method of which Kovri uses to bootstrap into the I2P network" --- diff --git a/knowledge-base/moneropedia/router-info.md b/knowledge-base/moneropedia/router-info.md index 97455e46..ce229517 100644 --- a/knowledge-base/moneropedia/router-info.md +++ b/knowledge-base/moneropedia/router-info.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Router-Info" tags: ["kovri"] -terms: ["router-info"] +terms: ["Router-Info"] summary: "A data structure or file which contains an I2P peer's needed network information" --- diff --git a/knowledge-base/moneropedia/subscription.md b/knowledge-base/moneropedia/subscription.md index 3848b541..3c88e15d 100644 --- a/knowledge-base/moneropedia/subscription.md +++ b/knowledge-base/moneropedia/subscription.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Subscription" tags: ["kovri"] -terms: ["subscription"] +terms: ["Subscription"] summary: "A file used by address book which contains I2P hosts paired with I2P destinations" --- diff --git a/knowledge-base/moneropedia/transports.md b/knowledge-base/moneropedia/transports.md index 71105c7f..4cc6268b 100644 --- a/knowledge-base/moneropedia/transports.md +++ b/knowledge-base/moneropedia/transports.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Transports" tags: ["kovri"] -terms: ["transports", "transport"] +terms: ["Transports", "Transport"] summary: "The two encrypted transport layers for Kovri" --- diff --git a/knowledge-base/moneropedia/tunnel.md b/knowledge-base/moneropedia/tunnel.md index b0891cec..eaa154e4 100644 --- a/knowledge-base/moneropedia/tunnel.md +++ b/knowledge-base/moneropedia/tunnel.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Tunnel" tags: ["kovri"] -terms: ["tunnel", "tunnels"] +terms: ["Tunnel", "Tunnels"] summary: "TODO(anonimal): finish" --- From 841f7c1efbe850d10d4319b72dd8763cb9e57d10 Mon Sep 17 00:00:00 2001 From: anonimal Date: Wed, 19 Oct 2016 06:59:21 +0000 Subject: [PATCH 23/35] Moneropedia: resolve various unfinished entries - Resolved TODO's for Base32/64-address, Destination, Transports Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/base32-address.md | 2 -- knowledge-base/moneropedia/base64-address.md | 6 ++---- knowledge-base/moneropedia/destination.md | 12 ++++++------ knowledge-base/moneropedia/transports.md | 9 ++++----- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/knowledge-base/moneropedia/base32-address.md b/knowledge-base/moneropedia/base32-address.md index 10284db5..ef38e414 100644 --- a/knowledge-base/moneropedia/base32-address.md +++ b/knowledge-base/moneropedia/base32-address.md @@ -22,8 +22,6 @@ where Ultimately, a Base32 address is a 52 character [Base32 encoded representation](https://en.wikipedia.org/wiki/Base32) of the full SHA-256 hash of an @I2P @base64-address. -TODO(anonimal): finish (256 bits, etc.) - ### Notes **Note: `.b32` is not a sub-domain of `.i2p`** diff --git a/knowledge-base/moneropedia/base64-address.md b/knowledge-base/moneropedia/base64-address.md index 99b85727..a704aaf2 100644 --- a/knowledge-base/moneropedia/base64-address.md +++ b/knowledge-base/moneropedia/base64-address.md @@ -8,15 +8,13 @@ summary: "Base64 encoded I2P destination" ### The Basics -A Base64 address is a 516-character [Base64 encoded](https://en.wikipedia.org/wiki/Base64) @I2P @destination. +A @base64-address is a 516-character [Base64 encoded](https://en.wikipedia.org/wiki/Base64) @I2P @destination. @base64-addresses are primarily used for @address-book, @jump-service, and also internally. Example: {:.cli-code} AQZGLAMpI9Q0l0kmMj1vpJJYK3CjLp~fE3MfvE-e7KMKjI5cPOH6EN8m794uHJ6b09qM8mb9VEv1lVLEov~usVliTSXCSHuRBOCIwIOuDNU0AbVa4BpIx~2sU4TxKhoaA3zQ6VzINoduTdR2IJhPvI5xzezp7dR21CEQGGTbenDslXeQ4iLHFA2~bzp1f7etSl9T2W9RID-KH78sRQmzWnv7dbhNodMbpO6xsf1vENf6bMRzqD5vgHEHZu2aSoNuPyYxDU1eM6--61b2xp9mt1k3ud-5WvPVg89RaU9ugU5cxaHgR927lHMCAEU2Ax~zUb3DbrvgQBOTHnJEx2Fp7pOK~PnP6ylkYKQMfLROosLDXinxOoSKP0UYCh2WgIUPwE7WzJH3PiJVF0~WZ1dZ9mg00c~gzLgmkOxe1NpFRNg6XzoARivNVB5NuWqNxr5WKWMLBGQ9YHvHO1OHhUJTowb9X90BhtHnLK2AHwO6fV-iHWxRJyDabhSMj1kuYpVUBQAEAAcAAA== -TODO(anonimal): finish - ### In-depth Information -TODO(anonimal): finish +See @destination for details behind @base64-address diff --git a/knowledge-base/moneropedia/destination.md b/knowledge-base/moneropedia/destination.md index 91237681..97cfe92b 100644 --- a/knowledge-base/moneropedia/destination.md +++ b/knowledge-base/moneropedia/destination.md @@ -2,18 +2,18 @@ layout: moneropedia entry: "Destination" tags: ["kovri"] -terms: ["Destination"] +terms: ["Destination", "Destinations"] summary: "A in-net address that serves as a final endpoint" --- ### The Basics -A destination is the @I2P @in-net address of the final endpoint you are trying to connect to (example: an @I2P website, service, or simply a peer). - -TODO(anonimal): finish +A @destination is the @I2P @in-net address of the final endpoint you are trying to connect to (example: an @I2P website, service, or Monero node). ### In-depth Information -An @I2P destination can be encoded into a @base32-address or @base64-address. Most users will only care about @base32-address or a `.i2p` hostname while, internally, @Kovri uses @base64-addresses. +An @I2P destination can be encoded into a @base32-address or @base64-address. Most users will only care about @base32-address or a `.i2p` hostname while, internally, @Kovri / @I2P @address-book uses @base64-addresses. Ultimately, all @destinations in @I2P are 516-byte (or longer) keys: -TODO(anonimal): finish +`256-byte public key + 128-byte signing key + a null certificate = 516 bytes in Base64 representation` + +Note: certificates are not used now but, if they were, the keys would be longer. diff --git a/knowledge-base/moneropedia/transports.md b/knowledge-base/moneropedia/transports.md index 4cc6268b..59504f99 100644 --- a/knowledge-base/moneropedia/transports.md +++ b/knowledge-base/moneropedia/transports.md @@ -8,14 +8,13 @@ summary: "The two encrypted transport layers for Kovri" ### The Basics -@Kovri comes with two encrypted [transport layer](https://en.wikipedia.org/wiki/Transport_layer) technologies that allow @Kovri to send @messages across the @I2P network. These *@transports* are @SSU and @NTCP. - -@SSU is encrypted [UDP](https://en.wikipedia.org/wiki/User_Datagram_Protocol) and @NTCP is encrypted [TCP](https://en.wikipedia.org/wiki/Transmission_Control_Protocol). They both allow you to securely use @I2P over [TCP/IP](https://en.wikipedia.org/wiki/Tcp/ip) connections. +@I2P comes with two encrypted transport layer technologies that allow @Kovri to securely use [TCP/IP](https://en.wikipedia.org/wiki/Tcp/ip) connections. These technologies (@SSU and @NTCP) are called *@transports*. ### In-depth information -TODO(anonimal): finish +@SSU is encrypted [UDP](https://en.wikipedia.org/wiki/User_Datagram_Protocol) and @NTCP is encrypted [TCP](https://en.wikipedia.org/wiki/Transmission_Control_Protocol). They provide @encryption at the [transport layer](https://en.wikipedia.org/wiki/Transport_layer) so higher level @messages can be sent through @tunnels across the @I2P network. ### Notes -Read about the transport layer in the [OSI model](https://en.wikipedia.org/wiki/OSI_model) +- Read about @I2P's transports on the [Transport](https://geti2p.net/en/docs/transport) page +- Read about the transports layer within the [OSI model](https://en.wikipedia.org/wiki/OSI_model) From 77d6cde3cad4ed18a666f90fecf90f0e9fcee33e Mon Sep 17 00:00:00 2001 From: anonimal Date: Wed, 19 Oct 2016 07:55:40 +0000 Subject: [PATCH 24/35] Moneropedia: cleanup I2P entry Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/i2p.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/knowledge-base/moneropedia/i2p.md b/knowledge-base/moneropedia/i2p.md index d60ba13a..6843746d 100644 --- a/knowledge-base/moneropedia/i2p.md +++ b/knowledge-base/moneropedia/i2p.md @@ -6,6 +6,10 @@ terms: ["I2P"] summary: "The Invisible Internet Project: an anonymizing overlay network" --- +### Monero + +For Monero's implementation of @I2P, see @Kovri. + ### The Basics From @Java-I2P: @@ -22,8 +26,6 @@ From @Java-I2P: >No network can be "perfectly anonymous". The continued goal of I2P is to make attacks more and more difficult to mount. Its anonymity will get stronger as the size of the network increases and with ongoing academic review. -Details and specifications are available [here](https://geti2p.net/docs/). - ### Notes -For Monero's implementation of I2P, see @Kovri. +@I2P documentation and specifications are available [here](https://geti2p.net/docs/). From b26760eafeb5f589bcbb769c66a0d469e5e091a7 Mon Sep 17 00:00:00 2001 From: anonimal Date: Wed, 19 Oct 2016 09:59:36 +0000 Subject: [PATCH 25/35] Moneropedia: update/finish initial Tunnel entry Also, add two new "terms" entries to Encryption and Garlic-Routing Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/encryption.md | 2 +- knowledge-base/moneropedia/garlic-routing.md | 2 +- knowledge-base/moneropedia/tunnel.md | 28 +++++++++++++++++--- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/knowledge-base/moneropedia/encryption.md b/knowledge-base/moneropedia/encryption.md index 4bcbd367..362a6df4 100644 --- a/knowledge-base/moneropedia/encryption.md +++ b/knowledge-base/moneropedia/encryption.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Encryption" tags: ["kovri"] -terms: ["encryption"] +terms: ["encryption", "encrypted"] summary: "The process of encoding messages or information in a way that only authorized parties can decode and read" --- diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md index 13596f59..acdbf8c3 100644 --- a/knowledge-base/moneropedia/garlic-routing.md +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Garlic Routing" tags: ["kovri"] -terms: ["Garlic-Routing"] +terms: ["Garlic-Routing", "Garlic-Encryption"] summary: "Routing technology as implemented in Kovri" --- diff --git a/knowledge-base/moneropedia/tunnel.md b/knowledge-base/moneropedia/tunnel.md index eaa154e4..646db938 100644 --- a/knowledge-base/moneropedia/tunnel.md +++ b/knowledge-base/moneropedia/tunnel.md @@ -3,13 +3,35 @@ layout: moneropedia entry: "Tunnel" tags: ["kovri"] terms: ["Tunnel", "Tunnels"] -summary: "TODO(anonimal): finish" +summary: "Uni-directional virtual paths that pass messages through a defined sequence of I2P routers" --- ### The Basics -TODO(anonimal): finish +When you communicate over @I2P (visit an @eepsite / use a @garlic-service), you'll first need to connect to a peer by using @transports and then build virtual *tunnels*. These virtual tunnels are temporary, uni-directional paths that pass information through a defined sequence of @I2P routers to your @destination. Tunnels are built, and then used, with layered @garlic-encryption and are a general-purpose mechanism to transport all @I2NP messages. + +Each peer builds, at a minimum, *two* uni-directional tunnels: one for **outbound traffic**, and one for **inbound traffic**. These tunnels are classified as either **inbound tunnels** (where @messages come toward the creator of the tunnel) or **outbound tunnels** (where the tunnel creator sends @messages away from the creator of the tunnel). Thus, *four* tunnels are required for a single round-trip @message and reply to your @destination (two for your, two for your destination). ### In-depth information -TODO(anonimal): finish +From @Java-I2P: + +> +Within I2P, @messages are passed in one direction through a virtual tunnel of peers, using whatever means are available to pass the @message on to the next hop. Messages arrive at the tunnel's gateway, get bundled up and/or fragmented into fixed-size @tunnel @messages, and are forwarded on to the next hop in the tunnel, which processes and verifies the validity of the @message and sends it on to the next hop, and so on, until it reaches the @tunnel endpoint. That endpoint takes the messages bundled up by the gateway and forwards them as instructed - either to another router, to another tunnel on another router, or locally. + +> +Tunnels all work the same, but can be segmented into two different groups - inbound tunnels and outbound tunnels. The inbound tunnels have an untrusted gateway which passes messages down towards the tunnel creator, which serves as the tunnel endpoint. For outbound tunnels, the tunnel creator serves as the gateway, passing messages out to the remote endpoint. + +> +The tunnel's creator selects exactly which peers will participate in the tunnel, and provides each with the necessary configuration data. They may have any number of hops. It is the intent to make it hard for either participants or third parties to determine the length of a tunnel, or even for colluding participants to determine whether they are a part of the same tunnel at all (barring the situation where colluding peers are next to each other in the tunnel). + +### Notes + +From @Java-I2P: + +> +@I2P is an inherently packet switched network, even with these tunnels, allowing it to take advantage of multiple tunnels running in parallel, increasing resilience and balancing load. Even though the tunnels within I2P bear a resemblance to a circuit switched network, everything within I2P is strictly message based - tunnels are merely accounting tricks to help organize the delivery of messages. No assumptions are made regarding reliability or ordering of messages, and retransmissions are left to higher levels (e.g. I2P's client layer streaming library). + +### Documentation + +For specification and detailed documentation, visit the [Tunnel-Routing](https://geti2p.net/en/docs/how/tunnel-routing) and [Tunnel-Implementation](https://geti2p.net/en/docs/tunnels/implementation) page. From d30a679ab06f4010e464f64c395afada6c9ce1de Mon Sep 17 00:00:00 2001 From: anonimal Date: Wed, 19 Oct 2016 11:10:44 +0000 Subject: [PATCH 26/35] Moneropedia: update Garlic-Routing/Encryption entries Also, move Layered-Encryption to Garlic-Encryption Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/encryption.md | 2 +- ...ayered-encryption.md => garlic-encryption.md} | 4 ++-- knowledge-base/moneropedia/garlic-routing.md | 16 ++++++++-------- knowledge-base/moneropedia/kovri.md | 3 ++- 4 files changed, 13 insertions(+), 12 deletions(-) rename knowledge-base/moneropedia/{layered-encryption.md => garlic-encryption.md} (68%) diff --git a/knowledge-base/moneropedia/encryption.md b/knowledge-base/moneropedia/encryption.md index 362a6df4..ed68c326 100644 --- a/knowledge-base/moneropedia/encryption.md +++ b/knowledge-base/moneropedia/encryption.md @@ -28,7 +28,7 @@ The purpose of encryption is to ensure that only somebody who is authorized to a @Kovri implements various types of encryption in *at least* 4 essential capacities: - @Reseed for bootstrapping -- @Garlic-routing: three layers of encryption are used to verify the secure delivery of @messages to the recipient/peer/@destination +- @Garlic-routing: three layers of encryption (@garlic-encryption) are used to verify the secure delivery of @messages to the recipient/peer/@destination - @Tunnel encryption: garlic messages are passed through a @tunnel and encrypted by the @tunnel gateway to the @tunnel endpoint - @Transport layer encryption prevents the ability to decrypt @messages at the [media layer](https://en.wikipedia.org/wiki/OSI_model) diff --git a/knowledge-base/moneropedia/layered-encryption.md b/knowledge-base/moneropedia/garlic-encryption.md similarity index 68% rename from knowledge-base/moneropedia/layered-encryption.md rename to knowledge-base/moneropedia/garlic-encryption.md index 37344c97..6a4d4de5 100644 --- a/knowledge-base/moneropedia/layered-encryption.md +++ b/knowledge-base/moneropedia/garlic-encryption.md @@ -1,8 +1,8 @@ --- layout: moneropedia -entry: "Layered Encryption" +entry: "Garlic-Encryption" tags: ["kovri"] -terms: ["Layered-Encryption"] +terms: ["Garlic-Encryption", "Layered-Encryption"] summary: "TODO(anonimal): finish" --- diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md index acdbf8c3..a7e30220 100644 --- a/knowledge-base/moneropedia/garlic-routing.md +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -2,21 +2,21 @@ layout: moneropedia entry: "Garlic Routing" tags: ["kovri"] -terms: ["Garlic-Routing", "Garlic-Encryption"] +terms: ["Garlic-Routing"] summary: "Routing technology as implemented in Kovri" --- ### The Basics -The term *Garlic Routing* has a diverse history of varying interpretations. +The term *@garlic-routing* has a diverse history of varying interpretations. As it currently stands, Monero defines *@garlic-routing* as the method in which @Kovri and @I2P create a @message-based anonymous overlay network of internet peers. -As it currently stands, Monero defines *Garlic Routing* as the method in which @Kovri and @I2P create a @message-based anonymous overlay network of internet peers. The @layered-encryption of Garlic Routing is similar to the @layered-encryption of [Onion Routing](https://en.wikipedia.org/wiki/Onion_routing). +The @Garlic-Encryption of @Garlic-Routing is similar to the @Layered-Encryption of [Onion Routing](https://en.wikipedia.org/wiki/Onion_routing) and effectively conceals the IP address of the sender and secures information sent from the sender to its @destination (and vice-versa). ### History -In written form, the term *Garlic Routing* can be seen as early as June of 2000 in Roger Dingledine's [Free Haven Master's thesis](http://www.freehaven.net/papers.html) (Section 8.1.1) as derived from the term Onion Routing. +In written form, the term *@garlic-routing* can be seen as early as June of 2000 in Roger Dingledine's [Free Haven Master's thesis](http://www.freehaven.net/papers.html) (Section 8.1.1) as derived from the term Onion Routing. -As recent as October of 2016, [#tor-dev](https://oftc.net/WebChat/) has offered insight into the creation of the term *Garlic Routing*: +As recent as October of 2016, [#tor-dev](https://oftc.net/WebChat/) has offered insight into the creation of the term *@garlic-routing*: [Nick Mathewson](https://en.wikipedia.org/wiki/The_Tor_Project,_Inc): >[I think that there was some attempt to come up with a plant whose structure resembled the 'leaky-pipe' topology of tor, but I don't believe we ever settled on one.] @@ -29,13 +29,13 @@ Note: permission to use the aforementioned quotes were granted by Nick Mathewson ### In-depth Information -In technical terms, for @Kovri and @I2P, *Garlic Routing* translates to any/all of the following: +In technical terms, for @Kovri and @I2P, *@garlic-routing* translates to any/all of the following: -- @Layered-Encryption (like Onion Routing) +- @Layered-Encryption (similar to the @layered-encryption in Onion Routing) - Bundling multiple @messages together (garlic cloves) - ElGamal/AES @encryption -Note: though [Tor](https://torproject.org/) uses layered @encryption, Tor does not use ElGamal and is not message-based. +Note: though [Tor](https://torproject.org/) uses @layered-encryption, Tor does not use ElGamal and is not message-based. ### Notes diff --git a/knowledge-base/moneropedia/kovri.md b/knowledge-base/moneropedia/kovri.md index b8840052..6002cdd6 100644 --- a/knowledge-base/moneropedia/kovri.md +++ b/knowledge-base/moneropedia/kovri.md @@ -45,7 +45,8 @@ Read [anonimal's FFS proposal](https://forum.getmonero.org/9/work-in-progress/86 - @Destination - @Encryption - @Floodfill -- @Garlic-routing +- @Garlic-Encryption +- @Garlic-Routing - @I2NP - @In-net - @Java-I2P From d7c43608fc069711136fc1ac34ffd7359b38d607 Mon Sep 17 00:00:00 2001 From: anonimal Date: Wed, 19 Oct 2016 13:21:09 +0000 Subject: [PATCH 27/35] Moneropedia: create Message entry and fill-in I2NP Also, update: - Tunnel - Encryption - Destination Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/destination.md | 4 +-- knowledge-base/moneropedia/encryption.md | 2 +- knowledge-base/moneropedia/i2np.md | 21 ++++++++++++--- knowledge-base/moneropedia/message.md | 33 +++++++++++++++++++++++ knowledge-base/moneropedia/tunnel.md | 2 +- 5 files changed, 54 insertions(+), 8 deletions(-) create mode 100644 knowledge-base/moneropedia/message.md diff --git a/knowledge-base/moneropedia/destination.md b/knowledge-base/moneropedia/destination.md index 97cfe92b..c8e067fc 100644 --- a/knowledge-base/moneropedia/destination.md +++ b/knowledge-base/moneropedia/destination.md @@ -3,12 +3,12 @@ layout: moneropedia entry: "Destination" tags: ["kovri"] terms: ["Destination", "Destinations"] -summary: "A in-net address that serves as a final endpoint" +summary: "A in-net address that serves as a final endpoint (either local or remote)" --- ### The Basics -A @destination is the @I2P @in-net address of the final endpoint you are trying to connect to (example: an @I2P website, service, or Monero node). +A @destination is the @I2P @in-net address of the final endpoint you are trying to connect to (example: an @I2P website, service, or Monero node). This can also include a *local destination* of which *other* peers need to connect to in order to make contact and communication (similar to how, in @clearnet, your IP address is given to a website when you connect so it knows *where* to send the information back to). ### In-depth Information diff --git a/knowledge-base/moneropedia/encryption.md b/knowledge-base/moneropedia/encryption.md index ed68c326..15b4bcfe 100644 --- a/knowledge-base/moneropedia/encryption.md +++ b/knowledge-base/moneropedia/encryption.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Encryption" tags: ["kovri"] -terms: ["encryption", "encrypted"] +terms: ["encryption", "encrypted", "encrypting"] summary: "The process of encoding messages or information in a way that only authorized parties can decode and read" --- diff --git a/knowledge-base/moneropedia/i2np.md b/knowledge-base/moneropedia/i2np.md index e63effb3..d05c17aa 100644 --- a/knowledge-base/moneropedia/i2np.md +++ b/knowledge-base/moneropedia/i2np.md @@ -2,14 +2,27 @@ layout: moneropedia entry: "I2NP" tags: ["kovri"] -terms: ["I2NP", "Message", "Messages"] -summary: "TODO(anonimal): finish" +terms: ["I2NP"] +summary: "The I2P Network Protocol: the mechanism in which I2NP messages are sent over the I2P network" --- ### The Basics -TODO(anonimal): finish +From @Java-I2P: + +> +@I2NP manages the routing and mixing of messages between routers, as well as the selection of what transports to use when communicating with a peer for which there are multiple common transports supported ### In-depth information -TODO(anonimal): finish +From @Java-I2P: + +> +@I2NP (@I2P Network Protocol) @messages can be used for one-hop, router-to-router, point-to-point @messages. By @encrypting and wrapping @messages in other @messages, they can be sent in a secure way through multiple hops to the ultimate @destination. @I2NP does not specify nor require any particular @transport layer but does require at least one @transport in use. + +> +Whenever a @destination wants to send a message to to another @destination, it provides its local router with both the @destination structure and the raw bytes of the message to be sent. The router then determines where to send it, delivers it through outbound @tunnels, instructing the end point to pass it along to the appropriate inbound @tunnel, where it is passed along again to that @tunnel's end point and made available to the target for reception. + +### Notes + +Read more about the @I2NP [protocol](https://geti2p.net/en/docs/protocol/i2np) and [specification](https://geti2p.net/spec/i2np). diff --git a/knowledge-base/moneropedia/message.md b/knowledge-base/moneropedia/message.md new file mode 100644 index 00000000..c9504d54 --- /dev/null +++ b/knowledge-base/moneropedia/message.md @@ -0,0 +1,33 @@ +--- +layout: moneropedia +entry: "Message" +tags: ["kovri"] +terms: ["Message", "Messages"] +summary: "The mechanisms in which information travels within I2P" +--- + +### The Basics + +*Messages* (which exist on top of the @transports layer), contain varying types of information that are needed for the network but, most importantly, everything you see, do, send, or receive, will come and go in the form of *messages*. + +There are 2 essential types of *messages* in @I2P: + +- @Tunnel messages +- @I2NP messages + +Essentially: *@tunnel messages* **contain** @I2NP **message fragments** which are then [reassembled](https://geti2p.net/en/docs/tunnels/implementation) at certain points within a @tunnel's path. + +### In-depth information + +@I2NP messages have a close relationship with @tunnel @messages so it is easy to get the term *messages* confused when reading @Java-I2P specifications: + +> +1. First, the tunnel gateway accumulates a number of I2NP messages and preprocesses them into tunnel messages for delivery. +2. Next, that gateway encrypts that preprocessed data, then forwards it to the first hop. +3. That peer, and subsequent tunnel participants, unwrap a layer of the encryption, verifying that it isn't a duplicate, then forward it on to the next peer. +4. Eventually, the tunnel messages arrive at the endpoint where the I2NP messages originally bundled by the gateway are reassembled and forwarded on as requested. + +### Notes + +- @I2NP @messages need to be fragmented because they are variable in size (from 0 to almost 64 KB) and @tunnel @messages are fixed-size (approximately 1 KB). +- For details and specifications, visit the [I2NP spec](https://geti2p.net/spec/i2np) and [Tunnel Message spec](https://geti2p.net/spec/tunnel-message) diff --git a/knowledge-base/moneropedia/tunnel.md b/knowledge-base/moneropedia/tunnel.md index 646db938..d22e2b94 100644 --- a/knowledge-base/moneropedia/tunnel.md +++ b/knowledge-base/moneropedia/tunnel.md @@ -8,7 +8,7 @@ summary: "Uni-directional virtual paths that pass messages through a defined seq ### The Basics -When you communicate over @I2P (visit an @eepsite / use a @garlic-service), you'll first need to connect to a peer by using @transports and then build virtual *tunnels*. These virtual tunnels are temporary, uni-directional paths that pass information through a defined sequence of @I2P routers to your @destination. Tunnels are built, and then used, with layered @garlic-encryption and are a general-purpose mechanism to transport all @I2NP messages. +When you communicate over @I2P (visit an @eepsite / use a @garlic-service), you'll first need to connect to a peer by using @transports and then build virtual *tunnels*. These virtual tunnels are temporary, uni-directional paths that pass information through a defined sequence of @I2P routers to your @destination. Tunnels are built, and then used, with layered @garlic-encryption and are a general-purpose mechanism to transport all @I2NP @messages. Each peer builds, at a minimum, *two* uni-directional tunnels: one for **outbound traffic**, and one for **inbound traffic**. These tunnels are classified as either **inbound tunnels** (where @messages come toward the creator of the tunnel) or **outbound tunnels** (where the tunnel creator sends @messages away from the creator of the tunnel). Thus, *four* tunnels are required for a single round-trip @message and reply to your @destination (two for your, two for your destination). From acf07a38aad5b7d1652dea421443be21c0e7495d Mon Sep 17 00:00:00 2001 From: anonimal Date: Thu, 20 Oct 2016 06:48:41 +0000 Subject: [PATCH 28/35] Moneropedia: finish I2PControl entry Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/i2pcontrol.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/knowledge-base/moneropedia/i2pcontrol.md b/knowledge-base/moneropedia/i2pcontrol.md index 9ccbaee0..481d9eae 100644 --- a/knowledge-base/moneropedia/i2pcontrol.md +++ b/knowledge-base/moneropedia/i2pcontrol.md @@ -3,15 +3,15 @@ layout: moneropedia entry: "I2PControl" tags: ["kovri"] terms: ["I2PControl"] -summary: "TODO(anonimal): finish" +summary: "An API inteface for Kovri and Java-I2P that allows simple remote control" --- ### The Basics -TODO(anonimal): finish +@I2Pcontrol is [JSONRPC2](https://en.wikipedia.org/wiki/JSON-RPC) [API](https://en.wikipedia.org/wiki/Application_programming_interface) for @Kovri and @Java-I2P which allows an @I2PControl client to remote control/monitor a running instance. -https://github.com/EinMByte/qtoopie +Two available @I2PControl clients are: [qtoopie](https://github.com/EinMByte/qtoopie) (C++ client) and [itoopie](https://github.com/i2p/i2p.itoopie) (Java client). Read `kovri.conf` to configure @I2PControl for @Kovri. ### In-depth information -TODO(anonimal): finish +Details and specification available on the [I2PControl](https://geti2p.net/en/docs/api/i2pcontrol) page. From 27214fd58b039b502114647e70642a8e84cc80aa Mon Sep 17 00:00:00 2001 From: anonimal Date: Thu, 20 Oct 2016 09:28:53 +0000 Subject: [PATCH 29/35] Moneropedia: finish Network-Database entry - Add pluralized terms to Router-Info and LeaseSet - Add self-reference in Router-Info Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/lease-set.md | 2 +- knowledge-base/moneropedia/network-database.md | 16 +++++++++++++--- knowledge-base/moneropedia/router-info.md | 4 ++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/knowledge-base/moneropedia/lease-set.md b/knowledge-base/moneropedia/lease-set.md index 0c8cb332..99165a03 100644 --- a/knowledge-base/moneropedia/lease-set.md +++ b/knowledge-base/moneropedia/lease-set.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Lease-Set" tags: ["kovri"] -terms: ["LeaseSet"] +terms: ["LeaseSet", "LeaseSets"] summary: "Contains all currently authorized Leases for a particular I2P Destination" --- diff --git a/knowledge-base/moneropedia/network-database.md b/knowledge-base/moneropedia/network-database.md index 64f74b5d..a5bb078c 100644 --- a/knowledge-base/moneropedia/network-database.md +++ b/knowledge-base/moneropedia/network-database.md @@ -3,13 +3,23 @@ layout: moneropedia entry: "Network Database" tags: ["kovri"] terms: ["Network-Database"] -summary: "TODO(anonimal): finish" +summary: "A distributed database which contains needed router information so the network can stay intact" --- ### The Basics -TODO(anonimal): finish +@network-database is a [distributed database](https://en.wikipedia.org/wiki/Distributed_database) which contains router information that peers must use so the network can stay intact. ### In-depth information -TODO(anonimal): finish +From @Java-I2P: + +> +@I2P's @network-database is a specialized distributed database, containing just two types of data - router contact information (@Router-Infos) and @destination contact information (@LeaseSets). Each piece of data is signed by the appropriate party and verified by anyone who uses or stores it. In addition, the data has liveliness information within it, allowing irrelevant entries to be dropped, newer entries to replace older ones, and protection against certain classes of attack. + +> +The @network-database is distributed with a simple technique called "@floodfill", where a subset of all routers, called "@floodfill routers", maintains the distributed database. + +### Notes + +Read [Network-Database](https://geti2p.net/en/docs/how/network-database) for details. diff --git a/knowledge-base/moneropedia/router-info.md b/knowledge-base/moneropedia/router-info.md index ce229517..6dbcb59b 100644 --- a/knowledge-base/moneropedia/router-info.md +++ b/knowledge-base/moneropedia/router-info.md @@ -2,13 +2,13 @@ layout: moneropedia entry: "Router-Info" tags: ["kovri"] -terms: ["Router-Info"] +terms: ["Router-Info", "Router-infos"] summary: "A data structure or file which contains an I2P peer's needed network information" --- ### The Basics -Router-Info is a data structure (periodically written to a [binary file](https://en.wikipedia.org/wiki/Binary_file)) which contains all needed information to locate, identity, and communicate with an @I2P peer. Router-Info includes IP address, router identity, other misc. technical details; is needed for @network-database and is published to @floodfill routers. +@Router-Info is a data structure (periodically written to a [binary file](https://en.wikipedia.org/wiki/Binary_file)) which contains all needed information to locate, identity, and communicate with an @I2P peer. @Router-Info includes IP address, router identity, other misc. technical details; is needed for @network-database and is published to @floodfill routers. ### In-depth information From 613995da5be3aad86bff8defa8f2bb7b32fe479d Mon Sep 17 00:00:00 2001 From: anonimal Date: Thu, 20 Oct 2016 10:09:47 +0000 Subject: [PATCH 30/35] Moneropedia: finish Garlic-Encryption - Resolves remaining TODO's - Also, minor adjustments in Encryption/Garlic-Routing Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/encryption.md | 2 +- knowledge-base/moneropedia/garlic-encryption.md | 16 +++++++++++++--- knowledge-base/moneropedia/garlic-routing.md | 6 ++++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/knowledge-base/moneropedia/encryption.md b/knowledge-base/moneropedia/encryption.md index 15b4bcfe..d9356c4b 100644 --- a/knowledge-base/moneropedia/encryption.md +++ b/knowledge-base/moneropedia/encryption.md @@ -2,7 +2,7 @@ layout: moneropedia entry: "Encryption" tags: ["kovri"] -terms: ["encryption", "encrypted", "encrypting"] +terms: ["encryption", "encrypted", "encrypting", "decryption", "decrypted", "decrypting"] summary: "The process of encoding messages or information in a way that only authorized parties can decode and read" --- diff --git a/knowledge-base/moneropedia/garlic-encryption.md b/knowledge-base/moneropedia/garlic-encryption.md index 6a4d4de5..3364f521 100644 --- a/knowledge-base/moneropedia/garlic-encryption.md +++ b/knowledge-base/moneropedia/garlic-encryption.md @@ -3,13 +3,23 @@ layout: moneropedia entry: "Garlic-Encryption" tags: ["kovri"] terms: ["Garlic-Encryption", "Layered-Encryption"] -summary: "TODO(anonimal): finish" +summary: "Layered encryption as implemented in Kovri / I2P" --- ### The Basics -TODO(anonimal): finish +@garlic-encryption is @I2P's implementation of @message based @layered-encryption (similar to flow-based [Onion-Routing](https://en.wikipedia.org/wiki/Onion_routing)). + +By @encrypting @messages in layers, this allows a @message to be routed through a sequence of proxies without allowing the proxies (or any intermediaries) to read the contents of the @message. @Layered-Encryption is a fundamental feature in @Kovri, @I2P, and [Tor](https://torproject.org) and is the cornerstone for securing anonymity within these overlay-networks. ### In-depth information -TODO(anonimal): finish +For @garlic-encryption, the primary difference between @Kovri/@I2P and Tor is: + +- @Kovri/@I2P bundles multiple @messages together to form garlic "cloves" + - any number of messages can be contained in a "clove" instead of *only* a single message +- @Kovri/@I2P uses [ElGamal](https://en.wikipedia.org/wiki/ElGamal)/[AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) @encryption for @messages and @transports + +### Notes + +For details, see @garlic-routing. diff --git a/knowledge-base/moneropedia/garlic-routing.md b/knowledge-base/moneropedia/garlic-routing.md index a7e30220..d7ceb7e2 100644 --- a/knowledge-base/moneropedia/garlic-routing.md +++ b/knowledge-base/moneropedia/garlic-routing.md @@ -25,7 +25,7 @@ As recent as October of 2016, [#tor-dev](https://oftc.net/WebChat/) has offered >during the free haven brainstorming, there was a moment where we described a routing mechanism, and somebody said "garlic routing!", and everybody laughed. so we for sure thought we had invented the name, at the time. -Note: permission to use the aforementioned quotes were granted by Nick Mathewson and Roger Dingledine +*Note: permission to use the aforementioned quotes were granted by Nick Mathewson and Roger Dingledine* ### In-depth Information @@ -35,7 +35,9 @@ In technical terms, for @Kovri and @I2P, *@garlic-routing* translates to any/all - Bundling multiple @messages together (garlic cloves) - ElGamal/AES @encryption -Note: though [Tor](https://torproject.org/) uses @layered-encryption, Tor does not use ElGamal and is not message-based. +*Note: though [Tor](https://torproject.org/) uses @layered-encryption, Tor does not use ElGamal and is not message-based.* + +**Read more in @garlic-encryption.** ### Notes From 85e28fbff075b27d6c92eabd714a2142543a86b7 Mon Sep 17 00:00:00 2001 From: anonimal Date: Thu, 20 Oct 2016 10:34:38 +0000 Subject: [PATCH 31/35] Moneropedia: add Comparison page link in I2P entry Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/i2p.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge-base/moneropedia/i2p.md b/knowledge-base/moneropedia/i2p.md index 6843746d..2778db30 100644 --- a/knowledge-base/moneropedia/i2p.md +++ b/knowledge-base/moneropedia/i2p.md @@ -8,7 +8,7 @@ summary: "The Invisible Internet Project: an anonymizing overlay network" ### Monero -For Monero's implementation of @I2P, see @Kovri. +For Monero's implementation of @I2P, see @Kovri. For a comparison of @I2P to [Tor](https://torproject.org/), read the [Comparison](https://geti2p.net/en/comparison/tor) page. ### The Basics From 59b605e412c90e52265b64a06df19530d6d571d3 Mon Sep 17 00:00:00 2001 From: anonimal Date: Thu, 20 Oct 2016 14:00:06 +0000 Subject: [PATCH 32/35] Moneropedia: misc typo/grammar cleanup (thanks olark) --- knowledge-base/moneropedia/clearnet.md | 2 +- knowledge-base/moneropedia/router-info.md | 2 +- knowledge-base/moneropedia/subscription.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/knowledge-base/moneropedia/clearnet.md b/knowledge-base/moneropedia/clearnet.md index 85678268..9200e69a 100644 --- a/knowledge-base/moneropedia/clearnet.md +++ b/knowledge-base/moneropedia/clearnet.md @@ -29,5 +29,5 @@ These technologies protect you from clearnet by building an anonymous network ** Here is an accurate, [interactive diagram](https://www.eff.org/pages/tor-and-https) provided by the [EFF](https://www.eff.org/) which describes *clearnet* as it relates to **Tor**. The concept also (somewhat) applies to @Kovri and @I2P in terms of anonymity with the exception that: - @Kovri does not use exit nodes when connecting to an @eepsite -- Your traffic ever need to leave the @I2P network. +- Your traffic never need to leave the @I2P network - You do not need HTTPS to use @Kovri (with the exception of @reseed) diff --git a/knowledge-base/moneropedia/router-info.md b/knowledge-base/moneropedia/router-info.md index 6dbcb59b..f7c45c06 100644 --- a/knowledge-base/moneropedia/router-info.md +++ b/knowledge-base/moneropedia/router-info.md @@ -8,7 +8,7 @@ summary: "A data structure or file which contains an I2P peer's needed network i ### The Basics -@Router-Info is a data structure (periodically written to a [binary file](https://en.wikipedia.org/wiki/Binary_file)) which contains all needed information to locate, identity, and communicate with an @I2P peer. @Router-Info includes IP address, router identity, other misc. technical details; is needed for @network-database and is published to @floodfill routers. +@Router-Info is a data structure (periodically written to a [binary file](https://en.wikipedia.org/wiki/Binary_file)) which contains all needed information to locate, identify, and communicate with an @I2P peer. @Router-Info includes IP address, router identity, other misc. technical details; is needed for @network-database and is published to @floodfill routers. ### In-depth information diff --git a/knowledge-base/moneropedia/subscription.md b/knowledge-base/moneropedia/subscription.md index 3c88e15d..387f839e 100644 --- a/knowledge-base/moneropedia/subscription.md +++ b/knowledge-base/moneropedia/subscription.md @@ -40,7 +40,7 @@ A *private* subscription: ### Updating a private subscription -You can use a @jump-service to manually update your private subscription. The updated subscription will be then fed into the @address-book for you to use. +You can use a @jump-service to manually update your private subscription. The updated subscription will then be fed into the @address-book for you to use. ### Notes -To learn how subscribe to multiple subscriptions, see the [user-guide](https://github.com/monero-project/kovri/blob/master/doc/USER_GUIDE.md). +To learn how to subscribe to multiple subscriptions, see the [user-guide](https://github.com/monero-project/kovri/blob/master/doc/USER_GUIDE.md). From 2253372f3c13d17d559ce24ee933a270b1ec7829 Mon Sep 17 00:00:00 2001 From: anonimal Date: Fri, 21 Oct 2016 00:38:04 +0000 Subject: [PATCH 33/35] Moneropedia: fix typo/tense in Address-Book (thanks expez) Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/address-book.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge-base/moneropedia/address-book.md b/knowledge-base/moneropedia/address-book.md index b614bea7..70853008 100644 --- a/knowledge-base/moneropedia/address-book.md +++ b/knowledge-base/moneropedia/address-book.md @@ -10,7 +10,7 @@ summary: "Allows you to visit I2P websites/services that have the .i2p domain" In order to browse @I2P sites or services with @Kovri, you'll need an address book. An address book will allow you to translate @I2P websites/services that use the `.i2p` [top-level domain](https://en.wikipedia.org/wiki/Top_level_domain) into an address that @I2P network will understand. -Without an address book, you would be stuck using a @base32-address every time visited an @I2P website/service - and that's not fun! +Without an address book, you would be stuck using a @base32-address every time you visit an @I2P website/service - and that's not fun! ### In-depth information From 0340302833fa4209eb929f0c2f5349d949e7251a Mon Sep 17 00:00:00 2001 From: anonimal Date: Tue, 25 Oct 2016 15:58:30 +0000 Subject: [PATCH 34/35] Moneropedia: fix typos (thanks expez) Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/address-book.md | 6 +++--- knowledge-base/moneropedia/canonically-unique-host.md | 2 +- knowledge-base/moneropedia/destination.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/knowledge-base/moneropedia/address-book.md b/knowledge-base/moneropedia/address-book.md index 70853008..ad3eaffe 100644 --- a/knowledge-base/moneropedia/address-book.md +++ b/knowledge-base/moneropedia/address-book.md @@ -16,15 +16,15 @@ Without an address book, you would be stuck using a @base32-address every time y Since [DNS](https://en.wikipedia.org/wiki/DNS) does not exist on the @I2P network, @Kovri also does **not** use DNS or any sort of @canonically-unique-host resolution. Instead, Kovri pairs a @locally-unique-host to a @base64-address @destination in a @subscription. Once your address book is filled with a @subscription, you can resolve your favorite `.i2p` domain site into a usable @I2P destination. -### Creating an address Book +### Creating an Address Book By default, your installation will come with a default public @subscription called `hosts.txt` in your @data-directory. When @Kovri starts, it loads this subscription and fetches any other subscriptions you've specified. Once loaded, your address book will be appropriately filled. For details on how to manage subscriptions, see @subscription. -### Updating the address book +### Updating the Address Book Currently, there are several ways to update your address book: -1. Use a @jump-service to insert into address book +1. Use a @jump-service to insert I2P addresses into you address book 2. Use a @jump-service to copy/paste an address into your private @subscription 3. Manually add or subtract from a private @subscription diff --git a/knowledge-base/moneropedia/canonically-unique-host.md b/knowledge-base/moneropedia/canonically-unique-host.md index dfb606a6..c1138992 100644 --- a/knowledge-base/moneropedia/canonically-unique-host.md +++ b/knowledge-base/moneropedia/canonically-unique-host.md @@ -12,7 +12,7 @@ A Canonically-unique host is a [FQDN](https://en.wikipedia.org/wiki/FQDN) that w ### In-depth information -A Canonically-unique host is defined by remote authoritative sources; usually through [DNS](https://en.wikipedia.org/wiki/DNS). When resolving a peer's hostname, you will most likely use an external source for resolution unless have the following implemented: +A Canonically-unique host is defined by remote authoritative sources; usually through [DNS](https://en.wikipedia.org/wiki/DNS). When resolving a peer's hostname, you will most likely use an external source for resolution unless you have the following implemented: - a database file similar to a [hosts file](https://en.wikipedia.org/wiki/etc/hosts) - an internal-network resolver (which eventually pulls from external sources) diff --git a/knowledge-base/moneropedia/destination.md b/knowledge-base/moneropedia/destination.md index c8e067fc..a999bebf 100644 --- a/knowledge-base/moneropedia/destination.md +++ b/knowledge-base/moneropedia/destination.md @@ -8,7 +8,7 @@ summary: "A in-net address that serves as a final endpoint (either local or remo ### The Basics -A @destination is the @I2P @in-net address of the final endpoint you are trying to connect to (example: an @I2P website, service, or Monero node). This can also include a *local destination* of which *other* peers need to connect to in order to make contact and communication (similar to how, in @clearnet, your IP address is given to a website when you connect so it knows *where* to send the information back to). +A @destination is the @I2P @in-net address of the final endpoint you are trying to connect to (example: an @I2P website, service, or Monero node). This can also include a *local destination* of which *other* peers need to connect to in order to make contact for communication (similar to how, in @clearnet, your IP address is given to a website when you connect so it knows *where* to send the information back to). ### In-depth Information From cb906768a2e7e6fa3cdada17c7dfa1380590a482 Mon Sep 17 00:00:00 2001 From: anonimal Date: Tue, 25 Oct 2016 17:34:18 +0000 Subject: [PATCH 35/35] Moneropedia: fix ESL typo (thanks expez) Referencing: - monero-project/kovri#256 - monero-project/monero-site#155 --- knowledge-base/moneropedia/address-book.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge-base/moneropedia/address-book.md b/knowledge-base/moneropedia/address-book.md index ad3eaffe..43b159c9 100644 --- a/knowledge-base/moneropedia/address-book.md +++ b/knowledge-base/moneropedia/address-book.md @@ -24,7 +24,7 @@ By default, your installation will come with a default public @subscription call Currently, there are several ways to update your address book: -1. Use a @jump-service to insert I2P addresses into you address book +1. Use a @jump-service to insert I2P addresses into your address book 2. Use a @jump-service to copy/paste an address into your private @subscription 3. Manually add or subtract from a private @subscription