Skip to content

melvinhe/onion-routing-acn

 
 

Repository files navigation

Onion Routing - Achieving A More Resilient and Privacy Preserving Network

This Go-based project simulates an onion routing system, comprising two main components: onion-proxy and onion-router. The onion-proxy is responsible for creating encrypted circuits and relaying data, while the onion-router serves as a network node that handles circuit extension and data relay.

The onion-proxy component showcases the use of AES encryption and Diffie-Hellman key exchange for securing data transmission. It also demonstrates the creation, extension, and relay of onion routing circuits. The onion-router component establishes a TCP server, allowing clients to interact via a simple command-line REPL interface

Demo

demo.mov

Startup and showcase

A sample topology has been configured for ease of use, the file docker-compose.yml configures an Onion Proxy (client) and 5 Onion Routers (relays). You can build using:

docker-compose up --build 

One can then act as a client by attaching to the running Onion Proxy (client) container

docker attach op_container

Below we present a scenario to showcase the capabilities of our system

// Establishes circuit and sends https request
est-ckt
show-circuit
send 0 https://httpbin.org/get

// Teardown and establish a new circuit
teardown
show-circuit
est-ckt
show-circuit
send 1 https://httpbin.org/get

The containers could then be torn down using.

docker-compose down 

About

Go-based onion routing system ACN system with AES encryption and Diffie-Hellman key exchange

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 96.0%
  • Shell 3.3%
  • Other 0.7%