indra

package module
v0.1.15 Latest Latest
Warning

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

Go to latest
Published: Jun 17, 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

View Source
const (
	// 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/master"
	// ParentGitCommit is the commit hash of the parent HEAD.
	ParentGitCommit = "5380d5f01e7d712258d7c1baa99172cc4bf014ef"
	// BuildTime stores the time when the current binary was built.
	BuildTime = "2023-06-17T09:14:01+01:00"
	// SemVer lists the (latest) git tag on the release.
	SemVer = "v0.1.15"
	// 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 = 15
)

Variables

View Source
var CI = "false"

Functions

func Version

func Version() string

Version returns a pretty printed version information string.

Types

This section is empty.

Directories

Path Synopsis
cmd
bumper command
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.
docker/release command
indra command
pkg
ad
cfg
crypto/ciph
Package ciph manages encryption ciphers and encrypting blobs of data.
Package ciph manages encryption ciphers and encrypting blobs of data.
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.
p2p
rpc
util/b32/based32
Package based32 provides a simplified variant of the standard Bech32 human readable binary codec
Package based32 provides a simplified variant of the standard Bech32 human readable binary codec
util/b32/codecer
Package codecer is the interface definition for a Human Readable Binary Transcription Codec
Package codecer is the interface definition for a Human Readable Binary Transcription Codec
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