https://github.com/number571/hidden-lake
🛡️ Anonymous F2F network based on the QB-problem & GP/12 protocol stack. Uses post-quantum cryptographic algorithms: ML-KEM, ML-DSA
https://github.com/number571/hidden-lake
anonymity anonymous cryptography decentralized e2e-encryption f2f file-sharing friend-to-friend go golang gp12 hidden-lake messenger network p2p peer-to-peer post-quantum privacy qb-nets remote-access-tool
Last synced: about 2 months ago
JSON representation
🛡️ Anonymous F2F network based on the QB-problem & GP/12 protocol stack. Uses post-quantum cryptographic algorithms: ML-KEM, ML-DSA
- Host: GitHub
- URL: https://github.com/number571/hidden-lake
- Owner: number571
- License: mit
- Created: 2019-02-07T19:33:25.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-03-02T20:09:40.000Z (2 months ago)
- Last Synced: 2025-03-02T20:20:41.349Z (2 months ago)
- Topics: anonymity, anonymous, cryptography, decentralized, e2e-encryption, f2f, file-sharing, friend-to-friend, go, golang, gp12, hidden-lake, messenger, network, p2p, peer-to-peer, post-quantum, privacy, qb-nets, remote-access-tool
- Language: Go
- Homepage: https://github.com/number571/go-peer
- Size: 73.7 MB
- Stars: 114
- Watchers: 9
- Forks: 9
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
Theoretically Provable Anonymous Network
About project> [!IMPORTANT]
> The project is being actively developed, the implementation of some details may change over time. More information about the changes can be obtained from the [CHANGELOG.md](CHANGELOG.md) file.The `Hidden Lake` is an anonymous network built on a `micro-service` architecture. At the heart of HL is the core - `HLS` (service), which generates anonymizing traffic and combines many other services (for example, `HLF` and `HLM`). Thus, Hidden Lake is not a whole and monolithic solution, but a composition of several combined services. The HL is a `friend-to-friend` (F2F) network, which means building trusted communications. Due to this approach, members of the HL network can avoid `spam` in their direction, as well as `possible attacks` if vulnerabilities are found in the code.
## Coverage map
## Releases
All cmd programs are compiled for {`amd64`, `arm64`} ARCH and {`windows`, `linux`, `darwin`} OS as pattern = `appname_arch_os`. In total, one application is compiled into six versions. The entire list of releases can be found here: [github.com/number571/hidden-lake/releases](https://github.com/number571/hidden-lake/releases "releases").
## Dependencies
1. Go library [github.com/number571/go-peer](https://github.com/number571/go-peer "go-peer") (used by `cmd/hls`)
2. Go library [golang.org/x/net](https://golang.org/x/net "x/net") (used by `cmd/hlm`)
3. CSS/JS library [getbootstrap.com](https://getbootstrap.com "bootstrap") (used by `cmd/hlm,cmd/hlf`)### Makefile
There are a number of dependencies that represent separate applications for providing additional information about the quality of the code. These applications are not entered into the project, but are loaded via the `make install-deps` command. The list of applications is as follows:
1. golangci-lint [github.com/golangci/golangci-lint/cmd/golangci-lintv1.60.0](https://github.com/golangci/golangci-lint/tree/v1.60.0)
2. go-cover-treemap [github.com/nikolaydubina/[email protected]](https://github.com/nikolaydubina/go-cover-treemap/tree/v1.4.2)## How it works
The Hidden Lake assigns the task of anonymity to the `QB-problem` (queue based).
Actions within the QB-problem
Figure QB-network with three nodes
- Each message m is encrypted with the recipient's key k: c = Ek(m)
- Message c is sent during period = T to all network participants
- The period T of one participant is independent of the periods T1, T2, ..., Tn of other participants
- If there is no message for the period T, then a false message v is sent to the network without a recipient (with a random key r): c = Er(v)
- Each participant tries to decrypt the message they received from the network: m = Dk(c)
----------------------------------------------------------------
![]()
----------------------------------------------------------------
> More information about Hidden Lake and QB-problem in research paper: [hidden_lake_anonymous_network.pdf](docs/hidden_lake_anonymous_network.pdf)
## List of applications
1. Basic:
* [HLS](cmd/hls) - anonymizes traffic using the QB-problem
* [HLC](cmd/hlc) - runs many HL services as one application
* [HLA](cmd/hla) - adapts HL traffic to external environments
2. Applied:
* [HLM](cmd/hlm) - messenger with a web interface
* [HLF](cmd/hlf) - file sharing with a web interface
* [HLR](cmd/hlr) - executes remote access commands
* [HLP](cmd/hlp) - ping the node to check the online status## Build and run
Launching an anonymous network is primarily the launch of an anonymizing HLS and HLA=tcp services. Simultaneous launch of these services can be performed using the `HLC` application. There are two ways to run HLC: through `source code`, and through the `release version`.
### 1. Running from source code
```bash
$ go install github.com/number571/hidden-lake/cmd/hlc@latest
$ hlc
```### 2. Running from release version
```bash
$ wget https://github.com/number571/hidden-lake/releases/latest/download/hlc_amd64_linux
$ chmod +x hlc_amd64_linux
$ ./hlc_amd64_linux
```## Production
The HLS node is easily connected to the production environment throw HLA=tcp. To do this, you just need to specify the `network` at startup. You can find them in the [networks.yml](build/networks.yml) file.
```bash
$ hlc --network oi4r9NW9Le7fKF9d
```
After such a launch, the hls.yml, hla_tcp.yml files will be created or overwritten (if it existed). The `settings` (hls.yml, hla_tcp.yml) and `connections` (hla_tcp.yml) fields will be substituted in it. When overwriting a file, only the above fields will be changed. The remaining fields of the `friends`, `services`, `address`, etc. type will not be overwritten.
> Examples of running HL apps in a prod environment: [echo_service](examples/echo_service/prod_test), [messenger](examples/messenger/prod_test), [filesharer](examples/filesharer/prod_test).
## Star History
[](https://star-history.com/#number571/hidden-lake&Date)
## License
Licensed under the MIT License. See [LICENSE](LICENSE) for the full license text.
**[⬆ back to top](#releases)**