This is experimental.
message split allows you to send messages (passwords etc.) to another person without having the message decrypted on the server or in the email.
There are several security concerns:
for i in {1..99999999999} ; do curl -s -X POST http://msg.exmple.net:8080/writeread --form "key=$1" ; done ;
): a ciphertext is still useless without the cryptographic-key.Too be sure all ciphertexts stay out of every backup, log or any other datatrace, msgsplit needs the weakest persistent storage. There should be no external dependency filesystemmounts, database or object store.
So msgsplit uses environment variables to "store" ciphertexts. This is at the expense of usability: msgsplits data does not survive a reboot.
Only transmit messages that can get disclosed (inital passwords, etc). Do not use msgsplit for current used passwords. If the hyperlink gets stolen, this message is disclosed.
golang>1.20 is required
CGO_ENABLED=0 go build ./msgsplit.go
./msgsplit.go
Alternative:
Use plain image ghcr.io/klml/msgsplit:main
or with msgsplit-kubernetes.
Working demo, you can use it, but there is no safety guarantee!
Hostet on uberspace.de with supervisord as web backend, static files (index.html, css, js) as default apache and access log is disabled.
[msgsplit@erinome ~]$ cat ~/etc/services.d/msgsplit.ini
[program:msgsplit]
command=/home/msgsplit/msgsplit/msgsplit
autostart=yes
autorestart=yes
# `startsecs` is set by Uberspace monitoring team, to prevent a broken service from looping
startsecs=30
[msgsplit@erinome ~]$ supervisorctl status
msgsplit RUNNING pid 7138, uptime 0:09:34
[msgsplit@erinome ~]$ uberspace web backend list
/writeread http:8080 => OK, listening: PID 7138, /home/msgsplit/msgsplit/msgsplit
/ apache (default)
[msgsplit@erinome ~]$ uberspace web log access status
access log is disabled
There are better ways:
workers.cloudflare.com
.