Security, in plain language
SimTether moves sensitive messages — verification codes, carrier alerts — between two phones. Here's exactly what protects that traffic, stated plainly enough to verify.
The short version
- Everything between your phones is end-to-end encrypted — not "encrypted to our server," but encrypted from one of your phones to the other.
- Pairing happens once, by QR code you physically scan. After that the phones authenticate by cryptographic key — nothing to type, nothing to phish.
- The optional internet relay forwards ciphertext only. It can see that two sockets are talking; it cannot see what they're saying.
- There is no account, no analytics, no crash reporting. The app's network code talks to exactly one thing: your other phone.
- The bridge phone shows a persistent notification whenever the service is active — it cannot run invisibly on someone's device.
Pairing: one scan, then keys
When you scan the bridge's QR, your phone learns the bridge's public key and a one-time pairing token. From then on:
- Your phone keeps a persistent identity key. The bridge pins the first client key it sees — a photographed QR or leaked token is useless after your phone's first connect.
- The pairing token rotates on every connection. A copied token stops working as soon as your real phone reconnects.
- Re-pairing on the bridge rotates its identity and revokes everything — a lost phone loses access instantly.
The encryption itself
| Layer | What it is |
|---|
| Handshake | Noise IK — mutual authentication with X25519 (Curve25519 key exchange) |
| Transport | ChaCha20-Poly1305 — every frame encrypted and authenticated |
| Key storage | Android Keystore–backed AES/GCM on both phones; the app warns you if Keystore is unavailable |
| Relay link | TLS (wss://) — the relay token and room tickets never travel in cleartext |
The relay, honestly
Remote access is off by default. If you turn it on, your phones meet at a small splice server that:
- forwards bytes between the two sockets — it never parses application data, by design;
- verifies room ownership cryptographically — claiming a room requires proving the bridge's private key, not just knowing a token;
- sees only metadata: IP addresses, timing, and byte counts.
You can also run your own relay — it's a single small jar — and point both phones at it, in which case we see nothing at all.
Want the details? The protocol, crypto, and relay are open source — the trust model is verifiable, not promised.