Route
Mix nodes relay fixed-size Sphinx packets. Each one sees only its neighbours and never the endpoints or the payload.
Anon-Sec-Net is a C prototype that gives routing, brokering and storage to different roles, so no single operator holds enough to link a receiver to the service it talks to.
Ships with a matched onion-routing baseline and the attack simulations used to test the design. Built to study an idea, not to protect real traffic.
The nodes that carry a circuit also locate the service and deliver its content, so the same small set of operators is both the infrastructure and the threat. Anon-Sec-Net asks what changes when those duties are pulled apart and given to parties that never need to trust each other.
Mix nodes relay fixed-size Sphinx packets. Each one sees only its neighbours and never the endpoints or the payload.
Service Gateways terminate a party's two paths and handle its requests, without learning where that party is on the network.
The Cache Server holds signed ciphertext under lookup keys. It can neither read the content nor see who asked for it.
Route. Broker. Store.Linking a receiver to a service means compromising several independent roles at once.
Keep them in separate hands.
Each role is a separate process with its own keys. In a deployment, each could be run by a different operator.
Relays 1024-byte Sphinx packets one hop at a time, blinding the payload with AES-CTR.
Terminates a party's two paths, binds them into one session and brokers its requests.
Stores signed ciphertext and relays the content-key handshake. Only Service Gateways can reach it.
Agree a fresh content key for every request. The Sender signs everything it publishes.
Connects the network to the public internet, with outside servers reached through the Service Gateways. It is part of the design and has not been built in this prototype.
01Build pathsEight ECDHE handshakes with signed node descriptors: six hops drawn from a weighted pool, two with the Service Gateway.02PublishThe Sender PUTs signed, encrypted content through its own paths to the Cache Server.03RequestThe Receiver sends a GET over path A, carrying a pre-built return header for path B.04Agree a keyReceiver and Sender negotiate a per-request content key, relayed through the Cache Server.05ReturnThe response comes back over path B; the Receiver checks the signature and decrypts.# build, then start the whole network $ cd ASN && make nodes $ (cd ../tests/ASN && ./start_nodes_pool.sh) # terminal 1: publish, and leave the Sender running $ ./sender.exe > PUT mykey hello # terminal 2: fetch through the network $ ./client.exe > GET mykey Response (5 bytes, signature verified, confidentiality-protected): hello
make nodesSphinx forwarding with bidirectional cover traffic at a per-client rate tier.make hardenedShared fixed-rate dispatch clock plus exponential per-hop mixing delay.make poolmixBatch mixing at each hop instead of per-packet delay.make hopdecoyDecoys terminated at each hop; combines with the two above.make instrumentedTiming and bandwidth probes for benchmarks.Every result below comes from a seeded script or a live measurement in the repository.
Linking a receiver to a service takes four compromised positions, one more than a Tor onion service. All of that margin comes from role separation, and at f = 0.1 it is gone once operators correlate beyond about 0.01.
One path's entry and exit already give routing-level linkage. Against the plain build a passive correlator reaches TPR 0.998 to 1.000 at FPR 10-3, the same as against a single path.
The hardened build brings a sequence correlator down from ceiling, at a measured throughput cost.
Detection by a GRU correlator at FPR 10-3 when decoys are terminated and batch-mixed at each hop.
Load-adaptive cover leaks activity level once real load passes about 1.5 times the cover ceiling. Constant-rate cover stays at chance.
Each simulation runs from a single seeded command. See ASN/eval2 for the full list.
The repository includes a single-path, three-hop onion-routing implementation on the same crypto library and testbed, so the comparison isolates the protocol.
Measured over loopback; absolute numbers depend on hardware. Data files and machine specs: results/README.md.
Anon-Sec-Net exists to study a design question. These simplifications belong in any result built on it.
Anon-Sec-Net is released under the GNU General Public License v3.0 or later. Study it, change it, break it and publish what you find.
Files adapted from DeepCoFFEA for the flow-correlation baseline keep their MIT licence.
Read the licenceClone the repository, bring up the pool network and fetch your first value in a few minutes. Then switch on a defence and measure what it buys.
To compare several anonymity designs side by side, see AnonTestLab, a general emulator that grew out of this project.