Side projects are still fun
Posted on October 23, 2017 at 08:23
I took a little bit of a break this weekend to work on a side project with the hopes of brushing up on some networking and cryptography. I am by no means an expert in either, but I find both fascinating.
I had an idea which I have begun to implement. I wanted to solve the problem of "how can I safely transfer data between two computers, where neither is acting as a server?" If you have a home internet provider with an anti-server clause, this can be an issue. So, instead of just googling for surely hundreds of answers, I home rolled something, because fuck it, this is 64Digits and thats what we do.
The concept implements what I refer to as a client-authority-server relationship. Basically, its encrypted middlemanning by design. An "authority" is spun up, and servers connect to it via TCP, and perform a handshake to initiate an encrypted connection. The server identifies itself and how it would like to be referred to. A client then connects to the same authority, and asks to be piped through to the server it wants. Requests are then piped thought the authority, with the client's public key sent along such that the server can encrypt the response, hiding the content from the authority.
In this way, running a "server" looks no different than being connected to a service over TCP.
I've got the handshake and data passing working between the authority and client. Next up is to build a basic server, which can receive requests and pass them to an arbitrary program to satisfy requests.
I don't really have an end goal here, it has just been fun to build so far, as I'm learning about RSA and hybrid encryption, and I'm writing it in TypeScript
, which I've been pretty hype on recently, giving me the ease-of-use of JS with the structure and compile-time checking of a typed/compiled language.
Anyone else have rando side projects? It has been a while since I just threw something together as a learning project. I forgot how much I love it.