Updated readme and fixed typos
This commit is contained in:
parent
843c1a77b7
commit
4ffe4482d3
1043
README.html
1043
README.html
File diff suppressed because one or more lines are too long
33
README.md
33
README.md
@ -9,6 +9,20 @@ No kernel modules or drivers are required. Reticulum runs completely in userland
|
|||||||
|
|
||||||
For more info, see [unsigned.io/projects/reticulum](https://unsigned.io/projects/reticulum/)
|
For more info, see [unsigned.io/projects/reticulum](https://unsigned.io/projects/reticulum/)
|
||||||
|
|
||||||
|
## Notable Features
|
||||||
|
- Coordination-less globally unique adressing and identification
|
||||||
|
- Fully self-configuring multi-hop routing
|
||||||
|
- Asymmetric RSA encryption and signatures as basis for all communication
|
||||||
|
- Perfect Forward Secrecy on links with ephemereal Elliptic Curve Diffie-Hellman keys (on the SECP256R1 curve)
|
||||||
|
- Reticulum uses the [Fernet](https://github.com/fernet/spec/blob/master/Spec.md) specification for encryption to group destinations and on links
|
||||||
|
- AES-128 in CBC mode with PKCS7 padding
|
||||||
|
- HMAC using SHA256 for authentication
|
||||||
|
- IVs are generated through os.urandom()
|
||||||
|
- Unforgeable packet delivery confirmations
|
||||||
|
- A variety of supported interface types
|
||||||
|
- Efficient and easy resource transfers
|
||||||
|
- A simple and easy-to-use API
|
||||||
|
|
||||||
## Where can Reticulum be used?
|
## Where can Reticulum be used?
|
||||||
On practically any hardware that can support at least a half-duplex channel with 1.000 bits per second throughput, and an MTU of 500 bytes. Data radios, modems, LoRa radios, serial lines, AX.25 TNCs, amateur radio digital modes, free-space optical links and similar systems are all examples of the types of interfaces Reticulum was designed for.
|
On practically any hardware that can support at least a half-duplex channel with 1.000 bits per second throughput, and an MTU of 500 bytes. Data radios, modems, LoRa radios, serial lines, AX.25 TNCs, amateur radio digital modes, free-space optical links and similar systems are all examples of the types of interfaces Reticulum was designed for.
|
||||||
|
|
||||||
@ -23,19 +37,6 @@ Consider Reticulum experimental at this stage. Most features are implemented and
|
|||||||
|
|
||||||
An API- and wireformat-stable alpha release is coming in the near future. Until then expect things to change unexpectedly if something warrants it.
|
An API- and wireformat-stable alpha release is coming in the near future. Until then expect things to change unexpectedly if something warrants it.
|
||||||
|
|
||||||
## What is implemented at this point?
|
|
||||||
- Adressing and identification
|
|
||||||
- Fully self-configuring multi-hop routing
|
|
||||||
- RSA assymetric encryption and signatures as basis for all communication
|
|
||||||
- AES-128 symmetric encryption for group destinations
|
|
||||||
- Elliptic curve encryption for links (on the SECP256R1 curve)
|
|
||||||
- Perfect Forward Secrecy on links with ephemereal ECDH keys
|
|
||||||
- Unforgeable packet delivery confirmations
|
|
||||||
- A variety of supported interface types
|
|
||||||
- Efficient and easy resource transfers
|
|
||||||
- A simple and easy-to-use API
|
|
||||||
- Some basic programming examples
|
|
||||||
|
|
||||||
## Supported interface types and devices
|
## Supported interface types and devices
|
||||||
|
|
||||||
Reticulum implements a range of generalised interface types that covers most of the communications hardware that Reticulum can run over. If your hardware is not supported, it's relatively simple to implement an interface class. Currently, the following interfaces are supported:
|
Reticulum implements a range of generalised interface types that covers most of the communications hardware that Reticulum can run over. If your hardware is not supported, it's relatively simple to implement an interface class. Currently, the following interfaces are supported:
|
||||||
@ -48,10 +49,10 @@ Reticulum implements a range of generalised interface types that covers most of
|
|||||||
- UDP over IP networks
|
- UDP over IP networks
|
||||||
|
|
||||||
## What is currently being worked on?
|
## What is currently being worked on?
|
||||||
- Delay/disruption tolerant bundle transfers
|
- Delay/disruption tolerance
|
||||||
- Useful example programs and utilities
|
|
||||||
- API documentation
|
- API documentation
|
||||||
- A messaging protocol built on Reticulum, see [LXMF](https://github.com/markqvist/lxmf)
|
- Useful example programs and utilities
|
||||||
|
- A generic message transfer protocol built on Reticulum, see [LXMF](https://github.com/markqvist/lxmf)
|
||||||
- A few useful-in-the-real-world apps built with Reticulum
|
- A few useful-in-the-real-world apps built with Reticulum
|
||||||
|
|
||||||
## Can I use Reticulum on amateur radio spectrum?
|
## Can I use Reticulum on amateur radio spectrum?
|
||||||
|
@ -437,6 +437,7 @@ class Link:
|
|||||||
if self.__encryption_disabled:
|
if self.__encryption_disabled:
|
||||||
return plaintext
|
return plaintext
|
||||||
try:
|
try:
|
||||||
|
# TODO: Optimise this re-allocation
|
||||||
fernet = Fernet(base64.urlsafe_b64encode(self.derived_key))
|
fernet = Fernet(base64.urlsafe_b64encode(self.derived_key))
|
||||||
ciphertext = base64.urlsafe_b64decode(fernet.encrypt(plaintext))
|
ciphertext = base64.urlsafe_b64decode(fernet.encrypt(plaintext))
|
||||||
return ciphertext
|
return ciphertext
|
||||||
|
@ -22,7 +22,7 @@ class Resource:
|
|||||||
#
|
#
|
||||||
# A small system in this regard is
|
# A small system in this regard is
|
||||||
# defined as a Raspberry Pi, which should
|
# defined as a Raspberry Pi, which should
|
||||||
# be able to compress, encrypt and hasmap
|
# be able to compress, encrypt and hashmap
|
||||||
# the resource in about 10 seconds.
|
# the resource in about 10 seconds.
|
||||||
MAX_EFFICIENT_SIZE = 16 * 1024 * 1024
|
MAX_EFFICIENT_SIZE = 16 * 1024 * 1024
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user