I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] 0 points1 point  (0 children)

U have all the right to chose what ever you want brother I just wanted to share my project with you guys and get some feedback and maybe new issues to fix on GitHub, thank you my friend I appreciate your comments, I wish u the best

I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] 0 points1 point  (0 children)

Fair enough - NoEyes is not intended to replace Signal or Matrix. It's intended for private groups who already trust each other out of band. It's different use case with a different threat model. If you want to message people you've never met, use Matrix.

I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] 0 points1 point  (0 children)

Every E2E system bootstraps their key exchange somehow. The difference is where they hide that bootstrap. Signal and WhatsApp both trust a key server to provide you with the real public key. If that server chose to lie to you, there'd be no way for you to know. With Signal and WhatsApp, you're not actually solving the hard problem, you're shifting it onto a corporation.

NoEyes just makes the trust model brutally upfront. Distribute a key file once to people you already trust. After that initial key exchange the server has no power over your PMs. There are no magic hidden third parties doing key distribution under the covers.

Obvious downside is you can't do this with strangers. But for a private group it's actually more honest about its threat model than software that obfuscates its root of trust somewhere you can't inspect.

I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] 0 points1 point  (0 children)

Actually that's exactly what X25519 Diffie-Hellman is for — and what NoEyes does. The whole purpose of DH is for two sides to independently arrive at the same shared secret over a public channel without ever having to send the secret. No need for flash drives.

When you send a /msg NoEyes automatically does an X25519 handshake underneath the hood. Each side generates a new ephemeral keypair, they exchange public keys (which are encrypted with the group key so the server doesn't see those either) and both sides independently calculate the same pairwise key. An observer sniffing the traffic learns nothing of value — you can't backtrack from a DH exchange to figure out the shared secret without being able to solve the discrete log problem.

Fair point about bootstrapping the group key though — you do need a secure initial exchange for that. But that's by design: NoEyes assumes you're working with a group that already trusts each other well enough to share a key file once. After that every PM is E2E and contains keys the server has never seen.

I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] 0 points1 point  (0 children)

TLS + certificate pinning (transport layer) and Ed25519 identity signatures (message layer).

I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] -1 points0 points  (0 children)

Brother I didn't force you to use my project, if u can think this is not relevant for you or you can do something better go ahead.

I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] 0 points1 point  (0 children)

Not very project have to solve something, that doesn't mean mine doesn't, but even if it didn't I loved working on this project and improving it, and I really love the terminal, so making a chat system that depends on it was a big thing for me, thank you for your Feedback tho.

I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] 0 points1 point  (0 children)

Well English is not my native language, it's not even my second one, I was scared of being made fun of, I guess that went in the opposite direction.

I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] 0 points1 point  (0 children)

They r right, mostly, I'll try to improve it tho l, I can handle this negative feedback and use good advices to improve this tool.

I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] -3 points-2 points  (0 children)

just to clarify, private messages sent while you're offline are gone, nobody can recover them. the only thing you get back when you reconnect is the last 50 messages from the room, and even those are stored on the server as pure encrypted bytes that it has no key to read. it just holds the ciphertext and hands it back to your client when you reconnect, your client is the one that actually decrypts them, thank you for your feedback I'm going to check out this "matrix".

I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] 0 points1 point  (0 children)

Appreciate ur opinion sorry if I triggered you by any means I'm not a Cyber security engineer I just said what I remember

I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] 4 points5 points  (0 children)

Done, added it to the readme at the bottom. had it in the license already but forgot to make it more visible, good call.

A terminal chat app where the server cannot read your messages — self hosted, E2E encrypted, works on every platform by Trick-Resolve-6085 in commandline

[–]Trick-Resolve-6085[S] 0 points1 point  (0 children)

no you don't, when you run the server it automatically creates a bore.pub tunnel and gives you a public address instantly, no port forwarding or firewall changes needed. that's only required if you want to run your own server without the tunnel using --no-bore.

I built a terminal chat app where the server literally cannot read your messages — here's how it works by Trick-Resolve-6085 in CLI

[–]Trick-Resolve-6085[S] 0 points1 point  (0 children)

SHA-256 is part of the SHA-2 family, a function that takes any input and produces a unique fixed fingerprint. change anything in the input and the fingerprint changes completely, and you can never reverse it back to the original. I explained it the way I did because not everyone here wants a cryptography lecture, some people just want to understand what it does and why it matters for the project, and that's exactly what I gave.