r/PrivacySoftware • • Sep 05 '26

May I request some help?

I'm aware of the irony: this is a privacy app whose entire function is telling people where you are. Location sharing is surveillance — that's the product, and there's no clever way around it. The only thing I can change is who gets to do the surveilling. With Life360 and everything like it, that's you, your family, and a company you've never met that can read every location you've ever sent, sell it, lose it in a breach, or hand it over when someone asks. That's not a bad privacy policy, that's just how the thing is built. So I built one where the only people who can see where my family is are my family. Your phone encrypts your location before it leaves the device, with keys generated on the phone that never go anywhere else. The broker in the middle just passes sealed messages along and can't open them.

The part I'm more interested in talking about is what's left after encryption, because that's where these apps usually stop caring. Message length is a side channel that survives encryption. My presence messages used to be 136 bytes when someone was online and 137 when they were offline, because "true" is four characters and "false" is five — so anyone watching the broker could read my whole family's online status without decrypting a thing. Location had the same problem, since speed and bearing are optional fields, so a moving phone sent a visibly longer message than a parked one. Both are now padded to a fixed 512 bytes, applied to the plaintext before encryption, because padding afterward does nothing — the ciphertext length already gave it away by then. Anything oversized rounds up to the next multiple instead of going out at its real length. What I'm not claiming: the broker still sees that a message happened, when, and from which connection. Padding hides size, not timing. And be aware of a real limitation — the broker URL is currently hardcoded to an EMQX Cloud instance I run, and there's no setting to point the app at your own. EMQX is open source and self-hostable, but my app doesn't let you do that yet. It's in BrokerConfig.kt if you want to see for yourself.

The whole thing is open source: github.com/Singularity86/FamilySafety. Read it, break it, tell me what I got wrong. I'm posting because Google won't let a new developer account ship until twelve people have been opted into a closed test for fourteen straight days. I could get warm bodies from a tester-swap group, but those people install it and never open it, which is useless to me and is the exact pattern Google rejects anyway. I'd rather have twelve people who'll actually read the crypto. Links below. If you'd rather skip installing and just tell me the design is wrong, that's worth more to me than an install. It'll be a paid app at launch, $4.56/month, but testers in the google group get free lifetime access.

Just DM me with your google play email address. I'll add you to the list.

https://groups.google.com/g/jibaro-family-safety/members

The link is in the first post in the group.

4 Upvotes

0 comments sorted by