indra

package module
v0.1.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2023 License: Unlicense Imports: 1 Imported by: 0

README

Indra Routing Protocol Logo

Indranet

GoDoc

Lightning powered distributed virtual private network for anonymising traffic on decentralised protocol networks.

White Paper

About

The ubiquitous use of encryption on the internet took some time to happen, there was a time when the US government defined them as munitions and claimed export restrictions, and famously the PGP project broke this via the First Amendment, by literally printing the source code on paper and then posting it, it became recognised that code, and encryption, are protected speech.

With ubiquitous 128 and 256 bit AES encryption now in use by default, the content of messages is secure. However, the volume of messages and endpoints of signals are still useful intelligence data, enabling state level actors to attack internet users and violate their privacy and threaten their safety.

Protecting against this high level attack the main network currently doing this work is the Tor network. However, this system has many flaws, and in recent times its centralised relay registry has come under sustained attack by DDoS (distributed denial of service) attacks.

One of the big problems that with this network is its weak network effect. There is no incentive for anyone to run nodes on the network, and worse, the most common use case is tunneling back out of the network to anonymize location, is largely abused and led to a lot of automated block systems arising on many internet services to prevent this abuse.

Indranet does not set itself up to be a direct competitor for the Tor network. In its first few years of operation it will not have any mechanism for tunneling out of the network, and if it ever does, this will be user-contributed functionality, and not encouraged since any node providing exit becomes a target for retaliation when used to abuse such external systems.

Indranet's purpose is to form an interconnect layer for decentralised network protocols. It requires Lightning Network, as a primary requirement, to enable the payment for bandwidth, and thus it also requires connectivity to the Bitcoin network. Thus, all nodes, both relays and clients, will provide exit traffic for these two protocols, especially Bitcoin, which has a very low bandwidth requirement for simple transaction publishing.

Users will potentially be able to set up arbitrary exit services, but the core project will only target connectivity with decentralised peer to peer services. Secondarily, it will be possible for users to set up private, non advertised exit services, protected via certificate authentication, such as SSH and other remote access systems. This will serve to displace the use cases for Tor with SSH and web services.

Later, rendezvous access protocols will be added and enable the creation of arbitrary hidden service addresses such as web applications.

fin

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// URL is the git URL for the repository.
	URL = "github.com/indra-labs/indra"
	// GitRef is the gitref, as in refs/heads/branchname.
	GitRef = "refs/heads/main"
	// ParentGitCommit is the commit hash of the parent HEAD.
	ParentGitCommit = "b817031e1f36a678cdc29c099a4b432d4bfafa41"
	// BuildTime stores the time when the current binary was built.
	BuildTime = "2023-01-19T01:20:15Z"
	// SemVer lists the (latest) git tag on the release.
	SemVer = "v0.1.11"
	// PathBase is the path base returned from runtime caller.
	PathBase = "/home/loki/src/github.com/indra-labs/indra/"
	// Major is the major number from the tag.
	Major = 0
	// Minor is the minor number from the tag.
	Minor = 1
	// Patch is the patch version number from the tag.
	Patch = 11
)

Functions

func Version

func Version() string

Version returns a pretty printed version information string.

Types

This section is empty.

Directories

Path Synopsis
cmd
buidl
Package main is a subset of bumper, all it does mainly is refresh the PathBase, so that log prints correctly parse the embedded debug information used to show the source code location.
Package main is a subset of bumper, all it does mainly is refresh the PathBase, so that log prints correctly parse the embedded debug information used to show the source code location.
bumper
Package main is a tool for creating version information to be placed at the repository root of a project.
Package main is a tool for creating version information to be placed at the repository root of a project.
pkg
cfg
crypto/ciph
Package ciph manages encryption ciphers and encrypting blobs of data.
Package ciph manages encryption ciphers and encrypting blobs of data.
crypto/key/cloak
Package cloak provides a cover for the public keys for which a node has a private key that prevents matching the keys between one message and another.
Package cloak provides a cover for the public keys for which a node has a private key that prevents matching the keys between one message and another.
crypto/key/ecdh
Package ecdh is provides a function to take a secp256k1 public and private key pair to generate a shared secret that the corresponding opposite half from the counterparty can use to generate the same cipher.
Package ecdh is provides a function to take a secp256k1 public and private key pair to generate a shared secret that the corresponding opposite half from the counterparty can use to generate the same cipher.
crypto/key/prv
Package prv is a wrapper around secp256k1 library from the Decred project to handle, generate and serialise secp256k1 private keys.
Package prv is a wrapper around secp256k1 library from the Decred project to handle, generate and serialise secp256k1 private keys.
crypto/key/pub
Package pub is a wrapper around secp256k1 library from the Decred project to handle generate and serialise secp256k1 public keys, including deriving them from private keys.
Package pub is a wrapper around secp256k1 library from the Decred project to handle generate and serialise secp256k1 public keys, including deriving them from private keys.
crypto/key/sig
Package sig provides functions to Sign hashes of messages, generating a standard compact 65 byte Signature and recover the 33 byte pub.Key embedded in it.
Package sig provides functions to Sign hashes of messages, generating a standard compact 65 byte Signature and recover the 33 byte pub.Key embedded in it.
crypto/key/signer
Package signer is an implementation of an efficient method for generating new private keys for putting a unique ECDH cipher half on every single message segment and eliminating correlations in the ciphertexts of the messages.
Package signer is an implementation of an efficient method for generating new private keys for putting a unique ECDH cipher half on every single message segment and eliminating correlations in the ciphertexts of the messages.
crypto/nonce
Package nonce provides a simple interface for generating standard AES encryption nonces that give strong cryptographic entropy to message encryption.
Package nonce provides a simple interface for generating standard AES encryption nonces that give strong cryptographic entropy to message encryption.
crypto/sha256
Package sha256 provides a simple interface for single and double SHA256 hashes, used with secp256k1 signatures, message digest checksums, cloaked public key "addresses" and so on.
Package sha256 provides a simple interface for single and double SHA256 hashes, used with secp256k1 signatures, message digest checksums, cloaked public key "addresses" and so on.
node
Package node maintains information about peers on the network and associated connection sessions.
Package node maintains information about peers on the network and associated connection sessions.
onion
Package onion contains the functions required to generate onion packets and unwrap them one layer at a time.
Package onion contains the functions required to generate onion packets and unwrap them one layer at a time.
packet
Package packet provides a standard message binary serialised data format and message segmentation scheme which includes address.Sender cloaked public key and address.Receiver private keys for generating a shared cipher and applying to messages/message segments.
Package packet provides a standard message binary serialised data format and message segmentation scheme which includes address.Sender cloaked public key and address.Receiver private keys for generating a shared cipher and applying to messages/message segments.
util/slice
Package slice is a collection of miscellaneous functions involving slices of bytes, including little-endian encoding for 16, 32 and 64-bit unsigned integers used for serialisation length prefixes and system entropy based hash chain padding.
Package slice is a collection of miscellaneous functions involving slices of bytes, including little-endian encoding for 16, 32 and 64-bit unsigned integers used for serialisation length prefixes and system entropy based hash chain padding.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL