Remix.run Logo
Show HN: Terminal Phone – E2EE Walkie Talkie from the Command Line(gitlab.com)
74 points by smalltorch 2 hours ago | 18 comments

TerminalPhone is a single, self-contained Bash script that provides anonymous, end-to-end encrypted voice and text communication between two parties over the Tor network. It operates as a walkie-talkie: you record a voice message, and it is compressed, encrypted, and transmitted to the remote party as a single unit. You can also send encrypted text messages during a call. No server infrastructure, no accounts, no phone numbers. Your Tor hidden service .onion address is your identity.

Tepix 5 minutes ago | parent | next [-]

Using a line based protocol and base64 encoding the audio data? Not my first choice.

The README doesn't mention it, but I assume both parties have to online at the same time?

Pinkert 2 hours ago | parent | prev | next [-]

Using a v3 onion address as both the cryptographic identity and the NAT traversal layer is such a clean architectural choice. No STUN/TURN servers, no hole punching, you just boot the script and Tor handles routing.

For those who use Tor regularly for things other than web browsing: how bad is the real-world latency for pushing a ~20KB Opus audio chunk over Tor these days? Are we talking a 2-3 second delay, or is it much worse?

nunobrito 14 minutes ago | parent | next [-]

STUN/TUN are important because of bandwidth. With STUN the bandwidth used is only between the two connected devices, with VPN like Tor there is a bandwidth cost on all the servers where this data is passing. This is a big blocker for anyone hosting the service on a VPS with a few GB of traffic data per month.

smalltorch an hour ago | parent | prev | next [-]

The real world delay is about 2-3 seconds your spot on. I initially started with a full duplex version but it was absolutely terrible. Walkie talkie kinda forces the recieve, listen, response from the users so the latency isn't as much of an issue.

ale42 an hour ago | parent [-]

Is audio transmitted while it is being recorded or afterwards? Is it played before everything is received or is everything buffered? In the later case, I find it more akin an audio message on Signal or similar, than as a walkie-talkie, which is much more "dynamic".

smalltorch an hour ago | parent [-]

It's not streamed. It gets recorded, compressed, (voice effects if you want), encrypted on device, then piped through, reverse process, auto played on reciever end.

Also, once it's decrypted and played back, the message gets destroyed.

idiotsecant an hour ago | parent | prev [-]

Beep boop

lxgr an hour ago | parent | prev | next [-]

> 21 curated ciphers are available

Why!? That sounds like approximately 20 too many.

smalltorch an hour ago | parent [-]

The library is openssl and that comes with all these ciphers available. No other reason than because we can!

I wish AES-GCM was available...but openssl can't do it on its own without further dependencies to parse the authentication correctly.

Really this whole layer is complelty redundant actually. It's already E2EE without openssl via Tor. I like that it's encrypted before I hit the network pipe though.

lxgr 22 minutes ago | parent [-]

> No other reason than because we can!

Then maybe your scientists should spend some time to stop and consider whether they should ;)

But seriously, I'd just limit this to one option on the selection side, even if you continue supporting more than that at the protocol level for cryptographic agility.

rustyhancock 2 hours ago | parent | prev | next [-]

> Exclude Countries -- Exclude specific countries from your Tor circuits. Presets for Five Eyes, Nine Eyes, and Fourteen Eyes alliances, or enter custom country codes. Uses ExcludeNodes with StrictNodes in the torrc.

Interesting that people do this, I wonder how much it improves security? Afterall, any serious surveillance would involve running relays and exits in foreign lands.

smalltorch an hour ago | parent | next [-]

This was another one of those things I built in because we can. I really don't know... But the Tor developers built this in as an option on the torrc so there must be something to it. We know there are definitely compromised nodes...I think it's just neat that you can have that level of control regardless if it's effective.

kortilla 39 minutes ago | parent | prev [-]

It might not help for controlled nodes, but it does help avoid ISPs controlled by said governments from seeing it

marcosqanil 2 hours ago | parent | prev | next [-]

I love this. In your view, how would users go about securely swapping credentials ? PGP over email ?

smalltorch 2 hours ago | parent [-]

Thanks! My realistic use case is that I am already speaking to someone who I know and trust, so ideally exchange credentials in person. A preferred out of band secure messanger of choice is probably fine.

deadbabe an hour ago | parent [-]

What do you guys talk about?

smalltorch an hour ago | parent [-]

I have my wife's phone set up on autolisten running in the background, so I just pop in and ask how her days going and crack jokes.

oybng 2 hours ago | parent | prev [-]

Looks fun, I've yet to test it but I did skim it.

'|| true' 76 matches 'echo ""' 50 matches ' [ ' 261 matches '=$(' 90 matches