mirror of
https://github.com/monero-project/monero-site.git
synced 2025-01-10 21:05:04 +00:00
Moneropedia: remove all i2p related entries (22)
Removed for all languages (336 files) and from _i18n/en.yml
This commit is contained in:
parent
cffce097a1
commit
8ce3943a3f
337 changed files with 0 additions and 8508 deletions
|
@ -1,26 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Base32-address", "Base32-addresses"]
|
||||
summary: "Base32 encoded hash of a Base64 address"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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.
|
||||
|
||||
### Notes
|
||||
|
||||
**Note: `.b32` is not a sub-domain of `.i2p`**
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Base64-address", "Base64-addresses"]
|
||||
summary: "Base64 encoded I2P destination"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
AQZGLAMpI9Q0l0kmMj1vpJJYK3CjLp~fE3MfvE-e7KMKjI5cPOH6EN8m794uHJ6b09qM8mb9VEv1lVLEov~usVliTSXCSHuRBOCIwIOuDNU0AbVa4BpIx~2sU4TxKhoaA3zQ6VzINoduTdR2IJhPvI5xzezp7dR21CEQGGTbenDslXeQ4iLHFA2~bzp1f7etSl9T2W9RID-KH78sRQmzWnv7dbhNodMbpO6xsf1vENf6bMRzqD5vgHEHZu2aSoNuPyYxDU1eM6--61b2xp9mt1k3ud-5WvPVg89RaU9ugU5cxaHgR927lHMCAEU2Ax~zUb3DbrvgQBOTHnJEx2Fp7pOK~PnP6ylkYKQMfLROosLDXinxOoSKP0UYCh2WgIUPwE7WzJH3PiJVF0~WZ1dZ9mg00c~gzLgmkOxe1NpFRNg6XzoARivNVB5NuWqNxr5WKWMLBGQ9YHvHO1OHhUJTowb9X90BhtHnLK2AHwO6fV-iHWxRJyDabhSMj1kuYpVUBQAEAAcAAA==
|
||||
```
|
||||
|
||||
|
||||
### In-depth Information
|
||||
|
||||
See @destination for details behind @base64-address
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Data-Directory"]
|
||||
summary: "Where essential kovri data for runtime is stored"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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.
|
|
@ -1,29 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Eepsite", "Hidden-Service", "Garlic-Site", "Garlic-Service"]
|
||||
summary: "A website or service hosted within the I2P network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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: an eepsite is 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 Eepsite (Hidden Service, Garlic Site, Garlic Service) visit the @Kovri [user-guide](https://gitlab.com/kovri-project/kovri-docs/blob/master/i18n/en/user_guide.md).
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Floodfill"]
|
||||
summary: "An I2P router which maintains a distributed network-database"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
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
|
||||
|
||||
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.
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Garlic-Encryption", "Layered-Encryption"]
|
||||
summary: "Layered encryption as implemented in Kovri / I2P"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
@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
|
||||
|
||||
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.
|
|
@ -1,44 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Garlic-Routing"]
|
||||
summary: "Routing technology as implemented in Kovri"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.]
|
||||
|
||||
[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.
|
||||
|
||||
*Note: permission to use the aforementioned quotes was 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:
|
||||
|
||||
- @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.*
|
||||
|
||||
**Read more in @garlic-encryption.**
|
||||
|
||||
### 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) - with each outer/inner doll having a lock and public key to the next/previous doll
|
||||
- For more technical details on Garlic Routing, read the @Java-I2P entry on [Garlic Routing](https://geti2p.net/en/docs/how/garlic-routing)
|
|
@ -1,27 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["I2NP"]
|
||||
summary: "The I2P Network Protocol: the mechanism in which I2NP messages are sent over the I2P network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
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
|
||||
|
||||
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).
|
|
@ -1,30 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["I2P"]
|
||||
summary: "The Invisible Internet Project: an anonymizing overlay network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### Monero
|
||||
|
||||
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 @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:
|
||||
|
||||
>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.
|
||||
|
||||
### Notes
|
||||
|
||||
@I2P documentation and specifications are available [here](https://geti2p.net/docs/).
|
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["I2PControl"]
|
||||
summary: "An API inteface for Kovri and Java-I2P that allows simple remote control"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
@I2Pcontrol is a [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.
|
||||
|
||||
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
|
||||
|
||||
Details and specification available on the [I2PControl](https://geti2p.net/en/docs/api/i2pcontrol) page.
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["In-net"]
|
||||
summary: "Within the I2P network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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.
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Java-I2P"]
|
||||
summary: "The original implementation of I2P - written in Java"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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 the original Java implementation.
|
||||
|
||||
### Notes
|
||||
|
||||
To download/learn more about the Java implementation, visit their [website](https://geti2p.net/).
|
|
@ -1,33 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Jump-Service"]
|
||||
summary: "An I2P website service that adds addresses to your address book"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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:
|
||||
|
||||
```
|
||||
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.
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["LeaseSet", "LeaseSets"]
|
||||
summary: "Contains all currently authorized Leases for a particular I2P Destination"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
A Lease-Set contains a set of authorized @leases (and other related information) for a particular @destination.
|
||||
|
||||
### In-depth information
|
||||
|
||||
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
|
||||
|
||||
For further details, read @Java-I2P's [LeaseSet](https://geti2p.net/en/docs/how/network-database#leaseSet)
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Lease", "Leases"]
|
||||
summary: "Authorizes an I2P tunnel to receive messages targeting a destination"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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)
|
|
@ -1,32 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Message", "Messages"]
|
||||
summary: "The mechanisms in which information travels within I2P"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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)
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Network-Database"]
|
||||
summary: "A distributed database which contains needed router information so the network can stay intact"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
@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
|
||||
|
||||
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.
|
|
@ -1,33 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["NTCP"]
|
||||
summary: "NIO-Based TCP (Non-blocking I/O based TCP): one of two Kovri transports"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
*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
|
||||
|
||||
- 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)
|
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Reseed"]
|
||||
summary: "The method of which Kovri uses to bootstrap into the I2P network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
When you start @Kovri for the first time (or if it's 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.
|
|
@ -1,67 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Router-Info", "Router-infos"]
|
||||
summary: "A data structure or file which contains an I2P peer's needed network information"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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, 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
|
||||
|
||||
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.
|
|
@ -1,25 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["SSU"]
|
||||
summary: "Secure Semi-reliable UDP: one of two Kovri transports"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
*Secure Semi-reliable UDP* is one of two encrypted @transports for @Kovri.
|
||||
|
||||
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
|
||||
|
||||
- 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
|
||||
|
||||
For further details, read @Java-I2P's [SSU](https://geti2p.net/en/docs/transport/ssu)
|
|
@ -1,46 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Subscription"]
|
||||
summary: "A file used by address book which contains I2P hosts paired with I2P destinations"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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/Hosts_(file)) 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:
|
||||
|
||||
```
|
||||
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 separator
|
||||
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 explicitly 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 then be fed into the @address-book for you to use.
|
||||
|
||||
### Notes
|
||||
To learn how to subscribe to multiple subscriptions, see the [user-guide](https://gitlab.com/kovri-project/kovri-docs/blob/master/i18n/en/user_guide.md).
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Transports", "Transport"]
|
||||
summary: "The two encrypted transport layers for Kovri"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
@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
|
||||
|
||||
@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 @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)
|
|
@ -1,36 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Tunnel", "Tunnels"]
|
||||
summary: "Uni-directional virtual paths that pass messages through a defined sequence of I2P routers"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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.
|
||||
|
||||
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
|
||||
|
||||
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.
|
|
@ -1,26 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Base32-address", "Base32-addresses"]
|
||||
summary: "Base32 encoded hash of a Base64 address"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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.
|
||||
|
||||
### Notes
|
||||
|
||||
**Note: `.b32` is not a sub-domain of `.i2p`**
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Base64-address", "Base64-addresses"]
|
||||
summary: "Base64 encoded I2P destination"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
AQZGLAMpI9Q0l0kmMj1vpJJYK3CjLp~fE3MfvE-e7KMKjI5cPOH6EN8m794uHJ6b09qM8mb9VEv1lVLEov~usVliTSXCSHuRBOCIwIOuDNU0AbVa4BpIx~2sU4TxKhoaA3zQ6VzINoduTdR2IJhPvI5xzezp7dR21CEQGGTbenDslXeQ4iLHFA2~bzp1f7etSl9T2W9RID-KH78sRQmzWnv7dbhNodMbpO6xsf1vENf6bMRzqD5vgHEHZu2aSoNuPyYxDU1eM6--61b2xp9mt1k3ud-5WvPVg89RaU9ugU5cxaHgR927lHMCAEU2Ax~zUb3DbrvgQBOTHnJEx2Fp7pOK~PnP6ylkYKQMfLROosLDXinxOoSKP0UYCh2WgIUPwE7WzJH3PiJVF0~WZ1dZ9mg00c~gzLgmkOxe1NpFRNg6XzoARivNVB5NuWqNxr5WKWMLBGQ9YHvHO1OHhUJTowb9X90BhtHnLK2AHwO6fV-iHWxRJyDabhSMj1kuYpVUBQAEAAcAAA==
|
||||
```
|
||||
|
||||
|
||||
### In-depth Information
|
||||
|
||||
See @destination for details behind @base64-address
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Data-Directory"]
|
||||
summary: "Where essential kovri data for runtime is stored"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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.
|
|
@ -1,29 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Eepsite", "Hidden-Service", "Garlic-Site", "Garlic-Service"]
|
||||
summary: "A website or service hosted within the I2P network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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: an eepsite is 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 Eepsite (Hidden Service, Garlic Site, Garlic Service) visit the @Kovri [user-guide](https://gitlab.com/kovri-project/kovri-docs/blob/master/i18n/en/user_guide.md).
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Floodfill"]
|
||||
summary: "An I2P router which maintains a distributed network-database"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
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
|
||||
|
||||
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.
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Garlic-Encryption", "Layered-Encryption"]
|
||||
summary: "Layered encryption as implemented in Kovri / I2P"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
@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
|
||||
|
||||
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.
|
|
@ -1,44 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Garlic-Routing"]
|
||||
summary: "Routing technology as implemented in Kovri"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.]
|
||||
|
||||
[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.
|
||||
|
||||
*Note: permission to use the aforementioned quotes was 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:
|
||||
|
||||
- @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.*
|
||||
|
||||
**Read more in @garlic-encryption.**
|
||||
|
||||
### 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) - with each outer/inner doll having a lock and public key to the next/previous doll
|
||||
- For more technical details on Garlic Routing, read the @Java-I2P entry on [Garlic Routing](https://geti2p.net/en/docs/how/garlic-routing)
|
|
@ -1,27 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["I2NP"]
|
||||
summary: "The I2P Network Protocol: the mechanism in which I2NP messages are sent over the I2P network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
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
|
||||
|
||||
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).
|
|
@ -1,30 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["I2P"]
|
||||
summary: "The Invisible Internet Project: an anonymizing overlay network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### Monero
|
||||
|
||||
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 @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:
|
||||
|
||||
>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.
|
||||
|
||||
### Notes
|
||||
|
||||
@I2P documentation and specifications are available [here](https://geti2p.net/docs/).
|
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["I2PControl"]
|
||||
summary: "An API inteface for Kovri and Java-I2P that allows simple remote control"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
@I2Pcontrol is a [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.
|
||||
|
||||
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
|
||||
|
||||
Details and specification available on the [I2PControl](https://geti2p.net/en/docs/api/i2pcontrol) page.
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["In-net"]
|
||||
summary: "Within the I2P network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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.
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Java-I2P"]
|
||||
summary: "The original implementation of I2P - written in Java"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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 the original Java implementation.
|
||||
|
||||
### Notes
|
||||
|
||||
To download/learn more about the Java implementation, visit their [website](https://geti2p.net/).
|
|
@ -1,33 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Jump-Service"]
|
||||
summary: "An I2P website service that adds addresses to your address book"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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:
|
||||
|
||||
```
|
||||
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.
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["LeaseSet", "LeaseSets"]
|
||||
summary: "Contains all currently authorized Leases for a particular I2P Destination"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
A Lease-Set contains a set of authorized @leases (and other related information) for a particular @destination.
|
||||
|
||||
### In-depth information
|
||||
|
||||
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
|
||||
|
||||
For further details, read @Java-I2P's [LeaseSet](https://geti2p.net/en/docs/how/network-database#leaseSet)
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Lease", "Leases"]
|
||||
summary: "Authorizes an I2P tunnel to receive messages targeting a destination"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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)
|
|
@ -1,32 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Message", "Messages"]
|
||||
summary: "The mechanisms in which information travels within I2P"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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)
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Network-Database"]
|
||||
summary: "A distributed database which contains needed router information so the network can stay intact"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
@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
|
||||
|
||||
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.
|
|
@ -1,33 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["NTCP"]
|
||||
summary: "NIO-Based TCP (Non-blocking I/O based TCP): one of two Kovri transports"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
*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
|
||||
|
||||
- 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)
|
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Reseed"]
|
||||
summary: "The method of which Kovri uses to bootstrap into the I2P network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
When you start @Kovri for the first time (or if it's 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.
|
|
@ -1,67 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Router-Info", "Router-infos"]
|
||||
summary: "A data structure or file which contains an I2P peer's needed network information"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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, 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
|
||||
|
||||
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.
|
|
@ -1,25 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["SSU"]
|
||||
summary: "Secure Semi-reliable UDP: one of two Kovri transports"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
*Secure Semi-reliable UDP* is one of two encrypted @transports for @Kovri.
|
||||
|
||||
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
|
||||
|
||||
- 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
|
||||
|
||||
For further details, read @Java-I2P's [SSU](https://geti2p.net/en/docs/transport/ssu)
|
|
@ -1,46 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Subscription"]
|
||||
summary: "A file used by address book which contains I2P hosts paired with I2P destinations"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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/Hosts_(file)) 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:
|
||||
|
||||
```
|
||||
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 separator
|
||||
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 explicitly 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 then be fed into the @address-book for you to use.
|
||||
|
||||
### Notes
|
||||
To learn how to subscribe to multiple subscriptions, see the [user-guide](https://gitlab.com/kovri-project/kovri-docs/blob/master/i18n/en/user_guide.md).
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Transports", "Transport"]
|
||||
summary: "The two encrypted transport layers for Kovri"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
@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
|
||||
|
||||
@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 @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)
|
|
@ -1,36 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Tunnel", "Tunnels"]
|
||||
summary: "Uni-directional virtual paths that pass messages through a defined sequence of I2P routers"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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.
|
||||
|
||||
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
|
||||
|
||||
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.
|
24
_i18n/en.yml
24
_i18n/en.yml
|
@ -619,8 +619,6 @@ moneropedia:
|
|||
address: Address
|
||||
airgap: Airgap
|
||||
atomic-units: Atomic Units
|
||||
base32-address: Base32 address
|
||||
base64-address: Base64 address
|
||||
blockchain: Blockchain
|
||||
block: Block
|
||||
bootstrap-node: Bootstrap-node
|
||||
|
@ -631,32 +629,16 @@ moneropedia:
|
|||
coinbase: Coinbase Transaction
|
||||
consensus: Consensus
|
||||
cryptocurrency: Cryptocurrency
|
||||
data-directory: Data Directory
|
||||
denominations: Denominations
|
||||
destination: Destination
|
||||
eepsite: Eepsite
|
||||
encryption: Encryption
|
||||
floodfill: Floodfill
|
||||
fluffyblocks: Fluffy Blocks
|
||||
fungibility: Fungibility
|
||||
garlic-encryption: Garlic-Encryption
|
||||
garlic-routing: Garlic Routing
|
||||
i2np: I2NP
|
||||
i2pcontrol: I2PControl
|
||||
i2p: I2P
|
||||
in-net: In-net
|
||||
java-i2p: Java I2P
|
||||
jump-service: Jump Service
|
||||
kovri: Kovri
|
||||
lease: Lease
|
||||
lease-set: Lease-Set
|
||||
locally-unique-host: Locally-unique host
|
||||
message: Message
|
||||
mining: Mining
|
||||
mnemonicseed: Mnemonic Seed
|
||||
network-database: Network Database
|
||||
node: Node
|
||||
ntcp: NTCP
|
||||
openalias: OpenAlias
|
||||
paperwallet: Paper Wallet
|
||||
paymentid: Payment ID
|
||||
|
@ -664,22 +646,16 @@ moneropedia:
|
|||
pruning: Pruning
|
||||
randomx: RandomX
|
||||
remote-node: Remote Node
|
||||
reseed: Reseed
|
||||
ringCT: Ring CT
|
||||
ringsignatures: Ring Signature
|
||||
ring-size: Ring Size
|
||||
router-info: Router-Info
|
||||
scalability: Scalability
|
||||
signature: Cryptographic Signature
|
||||
smartmining: Smart Mining
|
||||
spendkey: Spend Key
|
||||
ssu: SSU
|
||||
stealthaddress: Stealth Address
|
||||
subscription: Subscription
|
||||
tail-emission: Tail Emission
|
||||
transaction: Transactions
|
||||
transports: Transports
|
||||
tunnel: Tunnel
|
||||
unlocktime: Transaction Unlock Time
|
||||
viewkey: View Key
|
||||
wallet: Wallet
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Base32-address", "Base32-addresses"]
|
||||
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.
|
||||
|
||||
### Notes
|
||||
|
||||
**Note: `.b32` is not a sub-domain of `.i2p`**
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Base64-address", "Base64-addresses"]
|
||||
summary: "Base64 encoded I2P destination"
|
||||
---
|
||||
|
||||
### The Basics
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
AQZGLAMpI9Q0l0kmMj1vpJJYK3CjLp~fE3MfvE-e7KMKjI5cPOH6EN8m794uHJ6b09qM8mb9VEv1lVLEov~usVliTSXCSHuRBOCIwIOuDNU0AbVa4BpIx~2sU4TxKhoaA3zQ6VzINoduTdR2IJhPvI5xzezp7dR21CEQGGTbenDslXeQ4iLHFA2~bzp1f7etSl9T2W9RID-KH78sRQmzWnv7dbhNodMbpO6xsf1vENf6bMRzqD5vgHEHZu2aSoNuPyYxDU1eM6--61b2xp9mt1k3ud-5WvPVg89RaU9ugU5cxaHgR927lHMCAEU2Ax~zUb3DbrvgQBOTHnJEx2Fp7pOK~PnP6ylkYKQMfLROosLDXinxOoSKP0UYCh2WgIUPwE7WzJH3PiJVF0~WZ1dZ9mg00c~gzLgmkOxe1NpFRNg6XzoARivNVB5NuWqNxr5WKWMLBGQ9YHvHO1OHhUJTowb9X90BhtHnLK2AHwO6fV-iHWxRJyDabhSMj1kuYpVUBQAEAAcAAA==
|
||||
```
|
||||
|
||||
|
||||
### In-depth Information
|
||||
|
||||
See @destination for details behind @base64-address
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
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.
|
|
@ -1,28 +0,0 @@
|
|||
---
|
||||
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: an eepsite is 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 Eepsite (Hidden Service, Garlic Site, Garlic Service) visit the @Kovri [user-guide](https://gitlab.com/kovri-project/kovri-docs/blob/master/i18n/en/user_guide.md).
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Floodfill"]
|
||||
summary: "An I2P router which maintains a distributed network-database"
|
||||
---
|
||||
|
||||
### The Basics
|
||||
|
||||
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
|
||||
|
||||
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.
|
|
@ -1,23 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Garlic-Encryption", "Layered-Encryption"]
|
||||
summary: "Layered encryption as implemented in Kovri / I2P"
|
||||
---
|
||||
|
||||
### The Basics
|
||||
|
||||
@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
|
||||
|
||||
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.
|
|
@ -1,43 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Garlic-Routing"]
|
||||
summary: "Routing technology as implemented in Kovri"
|
||||
---
|
||||
|
||||
### The Basics
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.]
|
||||
|
||||
[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.
|
||||
|
||||
*Note: permission to use the aforementioned quotes was 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:
|
||||
|
||||
- @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.*
|
||||
|
||||
**Read more in @garlic-encryption.**
|
||||
|
||||
### 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) - with each outer/inner doll having a lock and public key to the next/previous doll
|
||||
- For more technical details on Garlic Routing, read the @Java-I2P entry on [Garlic Routing](https://geti2p.net/en/docs/how/garlic-routing)
|
|
@ -1,26 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["I2NP"]
|
||||
summary: "The I2P Network Protocol: the mechanism in which I2NP messages are sent over the I2P network"
|
||||
---
|
||||
|
||||
### The Basics
|
||||
|
||||
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
|
||||
|
||||
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).
|
|
@ -1,29 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["I2P"]
|
||||
summary: "The Invisible Internet Project: an anonymizing overlay network"
|
||||
---
|
||||
|
||||
### Monero
|
||||
|
||||
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 @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:
|
||||
|
||||
>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.
|
||||
|
||||
### Notes
|
||||
|
||||
@I2P documentation and specifications are available [here](https://geti2p.net/docs/).
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["I2PControl"]
|
||||
summary: "An API inteface for Kovri and Java-I2P that allows simple remote control"
|
||||
---
|
||||
|
||||
### The Basics
|
||||
|
||||
@I2Pcontrol is a [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.
|
||||
|
||||
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
|
||||
|
||||
Details and specification available on the [I2PControl](https://geti2p.net/en/docs/api/i2pcontrol) page.
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
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.
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
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 the original Java implementation.
|
||||
|
||||
### Notes
|
||||
|
||||
To download/learn more about the Java implementation, visit their [website](https://geti2p.net/).
|
|
@ -1,32 +0,0 @@
|
|||
---
|
||||
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:
|
||||
|
||||
```
|
||||
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.
|
|
@ -1,23 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["LeaseSet", "LeaseSets"]
|
||||
summary: "Contains all currently authorized Leases for a particular I2P Destination"
|
||||
---
|
||||
|
||||
### The Basics
|
||||
|
||||
A Lease-Set contains a set of authorized @leases (and other related information) for a particular @destination.
|
||||
|
||||
### In-depth information
|
||||
|
||||
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
|
||||
|
||||
For further details, read @Java-I2P's [LeaseSet](https://geti2p.net/en/docs/how/network-database#leaseSet)
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
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)
|
|
@ -1,31 +0,0 @@
|
|||
---
|
||||
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)
|
|
@ -1,23 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Network-Database"]
|
||||
summary: "A distributed database which contains needed router information so the network can stay intact"
|
||||
---
|
||||
|
||||
### The Basics
|
||||
|
||||
@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
|
||||
|
||||
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.
|
|
@ -1,32 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["NTCP"]
|
||||
summary: "NIO-Based TCP (Non-blocking I/O based TCP): one of two Kovri transports"
|
||||
---
|
||||
|
||||
### The Basics
|
||||
|
||||
*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
|
||||
|
||||
- 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)
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
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 it's 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.
|
|
@ -1,66 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
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, 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
|
||||
|
||||
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.
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["SSU"]
|
||||
summary: "Secure Semi-reliable UDP: one of two Kovri transports"
|
||||
---
|
||||
|
||||
### The Basics
|
||||
|
||||
*Secure Semi-reliable UDP* is one of two encrypted @transports for @Kovri.
|
||||
|
||||
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
|
||||
|
||||
- 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
|
||||
|
||||
For further details, read @Java-I2P's [SSU](https://geti2p.net/en/docs/transport/ssu)
|
|
@ -1,45 +0,0 @@
|
|||
---
|
||||
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/Hosts_(file)) 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:
|
||||
|
||||
```
|
||||
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 separator
|
||||
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 explicitly 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 then be fed into the @address-book for you to use.
|
||||
|
||||
### Notes
|
||||
To learn how to subscribe to multiple subscriptions, see the [user-guide](https://gitlab.com/kovri-project/kovri-docs/blob/master/i18n/en/user_guide.md).
|
|
@ -1,18 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Transports", "Transport"]
|
||||
summary: "The two encrypted transport layers for Kovri"
|
||||
---
|
||||
|
||||
### The Basics
|
||||
|
||||
@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
|
||||
|
||||
@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 @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)
|
|
@ -1,35 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Tunnel", "Tunnels"]
|
||||
summary: "Uni-directional virtual paths that pass messages through a defined sequence of I2P routers"
|
||||
---
|
||||
|
||||
### 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.
|
||||
|
||||
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
|
||||
|
||||
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.
|
|
@ -1,26 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Base32-address", "Base32-addresses"]
|
||||
summary: "Base32 encoded hash of a Base64 address"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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.
|
||||
|
||||
### Notes
|
||||
|
||||
**Note: `.b32` is not a sub-domain of `.i2p`**
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Base64-address", "Base64-addresses"]
|
||||
summary: "Base64 encoded I2P destination"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
AQZGLAMpI9Q0l0kmMj1vpJJYK3CjLp~fE3MfvE-e7KMKjI5cPOH6EN8m794uHJ6b09qM8mb9VEv1lVLEov~usVliTSXCSHuRBOCIwIOuDNU0AbVa4BpIx~2sU4TxKhoaA3zQ6VzINoduTdR2IJhPvI5xzezp7dR21CEQGGTbenDslXeQ4iLHFA2~bzp1f7etSl9T2W9RID-KH78sRQmzWnv7dbhNodMbpO6xsf1vENf6bMRzqD5vgHEHZu2aSoNuPyYxDU1eM6--61b2xp9mt1k3ud-5WvPVg89RaU9ugU5cxaHgR927lHMCAEU2Ax~zUb3DbrvgQBOTHnJEx2Fp7pOK~PnP6ylkYKQMfLROosLDXinxOoSKP0UYCh2WgIUPwE7WzJH3PiJVF0~WZ1dZ9mg00c~gzLgmkOxe1NpFRNg6XzoARivNVB5NuWqNxr5WKWMLBGQ9YHvHO1OHhUJTowb9X90BhtHnLK2AHwO6fV-iHWxRJyDabhSMj1kuYpVUBQAEAAcAAA==
|
||||
```
|
||||
|
||||
|
||||
### In-depth Information
|
||||
|
||||
See @destination for details behind @base64-address
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Data-Directory"]
|
||||
summary: "Where essential kovri data for runtime is stored"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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.
|
|
@ -1,29 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Eepsite", "Hidden-Service", "Garlic-Site", "Garlic-Service"]
|
||||
summary: "A website or service hosted within the I2P network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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: an eepsite is 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 Eepsite (Hidden Service, Garlic Site, Garlic Service) visit the @Kovri [user-guide](https://gitlab.com/kovri-project/kovri-docs/blob/master/i18n/en/user_guide.md).
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Floodfill"]
|
||||
summary: "An I2P router which maintains a distributed network-database"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
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
|
||||
|
||||
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.
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Garlic-Encryption", "Layered-Encryption"]
|
||||
summary: "Layered encryption as implemented in Kovri / I2P"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
@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
|
||||
|
||||
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.
|
|
@ -1,44 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Garlic-Routing"]
|
||||
summary: "Routing technology as implemented in Kovri"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.]
|
||||
|
||||
[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.
|
||||
|
||||
*Note: permission to use the aforementioned quotes was 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:
|
||||
|
||||
- @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.*
|
||||
|
||||
**Read more in @garlic-encryption.**
|
||||
|
||||
### 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) - with each outer/inner doll having a lock and public key to the next/previous doll
|
||||
- For more technical details on Garlic Routing, read the @Java-I2P entry on [Garlic Routing](https://geti2p.net/en/docs/how/garlic-routing)
|
|
@ -1,27 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["I2NP"]
|
||||
summary: "The I2P Network Protocol: the mechanism in which I2NP messages are sent over the I2P network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
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
|
||||
|
||||
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).
|
|
@ -1,30 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["I2P"]
|
||||
summary: "The Invisible Internet Project: an anonymizing overlay network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### Monero
|
||||
|
||||
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 @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:
|
||||
|
||||
>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.
|
||||
|
||||
### Notes
|
||||
|
||||
@I2P documentation and specifications are available [here](https://geti2p.net/docs/).
|
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["I2PControl"]
|
||||
summary: "An API inteface for Kovri and Java-I2P that allows simple remote control"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
@I2Pcontrol is a [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.
|
||||
|
||||
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
|
||||
|
||||
Details and specification available on the [I2PControl](https://geti2p.net/en/docs/api/i2pcontrol) page.
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["In-net"]
|
||||
summary: "Within the I2P network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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.
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Java-I2P"]
|
||||
summary: "The original implementation of I2P - written in Java"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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 the original Java implementation.
|
||||
|
||||
### Notes
|
||||
|
||||
To download/learn more about the Java implementation, visit their [website](https://geti2p.net/).
|
|
@ -1,33 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Jump-Service"]
|
||||
summary: "An I2P website service that adds addresses to your address book"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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:
|
||||
|
||||
```
|
||||
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.
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["LeaseSet", "LeaseSets"]
|
||||
summary: "Contains all currently authorized Leases for a particular I2P Destination"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
A Lease-Set contains a set of authorized @leases (and other related information) for a particular @destination.
|
||||
|
||||
### In-depth information
|
||||
|
||||
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
|
||||
|
||||
For further details, read @Java-I2P's [LeaseSet](https://geti2p.net/en/docs/how/network-database#leaseSet)
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Lease", "Leases"]
|
||||
summary: "Authorizes an I2P tunnel to receive messages targeting a destination"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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)
|
|
@ -1,32 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Message", "Messages"]
|
||||
summary: "The mechanisms in which information travels within I2P"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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)
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Network-Database"]
|
||||
summary: "A distributed database which contains needed router information so the network can stay intact"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
@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
|
||||
|
||||
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.
|
|
@ -1,33 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["NTCP"]
|
||||
summary: "NIO-Based TCP (Non-blocking I/O based TCP): one of two Kovri transports"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
*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
|
||||
|
||||
- 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)
|
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Reseed"]
|
||||
summary: "The method of which Kovri uses to bootstrap into the I2P network"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
When you start @Kovri for the first time (or if it's 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.
|
|
@ -1,67 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Router-Info", "Router-infos"]
|
||||
summary: "A data structure or file which contains an I2P peer's needed network information"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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, 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
|
||||
|
||||
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.
|
|
@ -1,25 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["SSU"]
|
||||
summary: "Secure Semi-reliable UDP: one of two Kovri transports"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
*Secure Semi-reliable UDP* is one of two encrypted @transports for @Kovri.
|
||||
|
||||
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
|
||||
|
||||
- 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
|
||||
|
||||
For further details, read @Java-I2P's [SSU](https://geti2p.net/en/docs/transport/ssu)
|
|
@ -1,46 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Subscription"]
|
||||
summary: "A file used by address book which contains I2P hosts paired with I2P destinations"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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/Hosts_(file)) 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:
|
||||
|
||||
```
|
||||
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 separator
|
||||
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 explicitly 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 then be fed into the @address-book for you to use.
|
||||
|
||||
### Notes
|
||||
To learn how to subscribe to multiple subscriptions, see the [user-guide](https://gitlab.com/kovri-project/kovri-docs/blob/master/i18n/en/user_guide.md).
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Transports", "Transport"]
|
||||
summary: "The two encrypted transport layers for Kovri"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### The Basics
|
||||
|
||||
@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
|
||||
|
||||
@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 @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)
|
|
@ -1,36 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Tunnel", "Tunnels"]
|
||||
summary: "Uni-directional virtual paths that pass messages through a defined sequence of I2P routers"
|
||||
---
|
||||
|
||||
{% include untranslated.html %}
|
||||
### 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.
|
||||
|
||||
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
|
||||
|
||||
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.
|
|
@ -1,25 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Base32-address", "Base32-addresses", "adresse-Base32", "adresses-Base32"]
|
||||
summary: "Hachage encodé en Base32 d'une adresse Base64"
|
||||
---
|
||||
|
||||
### Les Bases
|
||||
|
||||
Une adresse Base32 est une version encodée, plus courte, d'une adresse @I2P. L'adresse Base32 est la première partie d'un nom d'hôte `.b32.i2p`.
|
||||
|
||||
Exemple :
|
||||
|
||||
`i35yftyyb22xhcvghmev46t5knefur5v66qzekkajatwfwhyklvq.b32.i2p`
|
||||
|
||||
où
|
||||
|
||||
`i35yftyyb22xhcvghmev46t5knefur5v66qzekkajatwfwhyklvq` est l'adresse Base32.
|
||||
|
||||
### Informations détaillées
|
||||
|
||||
Finalement, une adresse Base32 est une chaîne de 52 caractères [représentation encodée en Base32](https://en.wikipedia.org/wiki/Base32) du hachage SHA-256 complet d'une @adresse-Base64 @I2P.
|
||||
|
||||
### Remarques
|
||||
|
||||
**Remarque : `.b32` n'est pas un sous-domaine de `.i2p`**
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Base64-address", "Base64-addresses", "adresse-Base64", "adresses-Base64"]
|
||||
summary: "Destination I2P encodée en Base64"
|
||||
---
|
||||
|
||||
### Les Bases
|
||||
|
||||
Une @adresse-base64 est une @destination @I2P de 516 caractères [encodés en Base64](https://fr.wikipedia.org/wiki/Base64). Les @adresses-base64 sont utilisées en premier lieu pour les @carnet-d'adresses, @service-de-rebond et également en interne.
|
||||
|
||||
Exemple :
|
||||
|
||||
```
|
||||
AQZGLAMpI9Q0l0kmMj1vpJJYK3CjLp~fE3MfvE-e7KMKjI5cPOH6EN8m794uHJ6b09qM8mb9VEv1lVLEov~usVliTSXCSHuRBOCIwIOuDNU0AbVa4BpIx~2sU4TxKhoaA3zQ6VzINoduTdR2IJhPvI5xzezp7dR21CEQGGTbenDslXeQ4iLHFA2~bzp1f7etSl9T2W9RID-KH78sRQmzWnv7dbhNodMbpO6xsf1vENf6bMRzqD5vgHEHZu2aSoNuPyYxDU1eM6--61b2xp9mt1k3ud-5WvPVg89RaU9ugU5cxaHgR927lHMCAEU2Ax~zUb3DbrvgQBOTHnJEx2Fp7pOK~PnP6ylkYKQMfLROosLDXinxOoSKP0UYCh2WgIUPwE7WzJH3PiJVF0~WZ1dZ9mg00c~gzLgmkOxe1NpFRNg6XzoARivNVB5NuWqNxr5WKWMLBGQ9YHvHO1OHhUJTowb9X90BhtHnLK2AHwO6fV-iHWxRJyDabhSMj1kuYpVUBQAEAAcAAA==
|
||||
```
|
||||
|
||||
|
||||
### Informations détaillées
|
||||
|
||||
Voir @destination pour les détails des @adresses-base64
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
tags: ["kovri"]
|
||||
terms: ["Data-Directory", "répertoire-de-données"]
|
||||
summary: "Où les données essentielles pour l'exécution de kovri sont stockées."
|
||||
---
|
||||
|
||||
### Les Bases
|
||||
|
||||
Dépendamment de votre OS, @Kovri stocke toutes les données pour son fonctionnement dans le répertoire suivant :
|
||||
|
||||
- Linux/FreeBSD:
|
||||
- `$HOME/.kovri`
|
||||
|
||||
- OSX:
|
||||
- `$HOME/Library/Application\ Support/Kovri`
|
||||
|
||||
- Windows:
|
||||
- `"$APPDATA"\\Kovri`
|
||||
|
||||
Cela inclus tous les fichiers de configuration, @carnet-d'adresses, certificats et ressources.
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue