fxnn / deadbox

Dead letter box for your private network. Access home devices without dynamic DNS. No open ports required.
Apache License 2.0
10 stars 3 forks source link
cloud file-transfer golang hyperapp network privacy remote security

Deadbox

Access data and devices in your private network without Dynamic DNS, port opening etc.

A program in your private network connects to an internet-accessible server, ready to receive encrypted and authorized requests.

Build Status codecov 0pdd.com GoDoc

I'm very happy to hear your feedback and ideas. Simply file an issue!

Idea

Problem

When a user wants to access his private data from the internet, he currently has two possibilities:

Having a way of remotely accessing private data, without neither storing them on foreign servers nor opening up one's private network using large interfaces, would significantly improve security of all parts of the private network.

Approach

Deadbox is an application that combines the concepts of peer to peer and message bus to establish communication between public and private networks. It consists of two parts: workers and drops.

Advantages

The user's experience is similar to that of a typical cloud application. He uploads and downloads files or accesses other functionality through a comfortable web-based UI.

Still, the system provides more security, due to the following reasons.

By combining worker and drop in one single binary and adding some basic routing, a peer to peer network emerges, allowing to combine workers from different private networks using tree-like or even rather random structures. One deadbox instance could serve as worker and drop at the same time, loading requests from foreign drops, providing them to other workers.

This offers a high flexibility in retrieving data and sending commands from/to private devices.

Disadvantages

Compared to a centralized cloud-based storage solution, the deadbox suffers under limited availability and increased configuration effort.

Challenges

Use cases and examples

The deadbox could be used in following scenarios.

Possible use cases are as follows.

Related Work

The following projects are similar to deadbox.

Specification

This spec serves as a guideline for the current implementation. However, it is subject to change, and some points might be of quite low priority.

Security

Command Line Interface

The main program is deadbox, providing at least the following arguments.

worker.yml

The file worker.yml contains the configuration for an worker. It must configure at least the following aspects.

drop.yml

The file drop.yml contains the configuration for a drop. It must configure at least the following aspects.

auth.yml

The file auth.yml configures the authentication method to be used by both workers and drops. It must contain at least the following information.

REST interface

The drop offers a REST interface to be consumed by users and workers. It will provide at least the following endpoints.

As for a worker entry, at least the following information need to be contained.

As for a queue entry, which is a request, at least the following information need to be contained.

As for a response, at least the following information need to be contained.

Public Key Fingerprinting

The task of creating a public key fingerprint, and therefore a Worker Id, is defined by the following algorithm. The algorithm can be configured using the parameters

The algorithm consists of the following steps.

The params ChallengeLevel and FingerprintLength should be chosen in a way that low FingerprintLength is compensated with a high CalculationCost and vice versa.