Molly for Android: A fork of Signal for Android with passphrase lock
github.com
github.com
Other than that, love it. Now to add iOS backups and cross platform imports... And strip out gifs (or at least make them disabled for me). And force by default unknown callers to go via a relay...
So many wishlist items which are probably wasted effort because they will bit rot without being accepted by Signal.
Edit: adding links I forgot https://github.com/signalapp/Signal-Android/pull/10219 https://github.com/signalapp/Signal-Android/commit/dda51bf36...
-They might not want people who aren't officially affiliated to get "contributor" badges on github, so people don't get confused thinking they speak for the project when they participate in discussions
-github may not be their primary way of managing their source, so pull requests have to be transferred to their internal system first before being released on github
-better control over what gets into what version without having to micromanage when to accept pull requests
https://github.com/isaacs/github/issues/2 https://github.com/isaacs/github/issues/548
This is what's happening with Signal's PRs. Here is an example:
PR: https://github.com/signalapp/Signal-Android/pull/10266/commi...
Commit in PR: https://github.com/signalapp/Signal-Android/pull/10266/commi...
Rebased and pushed commit: https://github.com/signalapp/Signal-Android/commit/6df839612...
Note that they have different commit references. Thus Github does not recognise this as a merge, and there's no way to explicitly tell Github that you did merge it.
For that to work the PR owner has to know which branch to target (assuming it's public).
Unless the PR creator somehow knows which release their PR is going to be included in, with a guarantee it'll be merged in said release, then it's just not possible for the PR creator to target the correct branch.
Just tried it, seems to work fine for me..?
They may have accepted some in the past, but I've never seen it, and I've seen a lot of PRs closed unmerged.
-1 closed by the author realizing it had already been done
-2 closed saying they were going to fix it differently
-1 closed saying they took some code from the commit and fixed part of it differently
-6 merged
seems quite reasonable to me (albeit this is only from the newest 10 closed pr obviously)
Glad to hear this seems to be changing; 6/10 is pretty good.
Quite off putting to me.
That's my main complaint with Signal - lots of widgets. More code to audit and keep an eye on.
More users is good, but stickers and stuff.. meh.
Maybe teach zoomers how to use emoticons ;-)
I also find it a bit crazy that the 'desktop' app is Electron, and they don't hint anywhere what a house of cards Electron is. I wouldn't run it except inside a VM, and even then I would have to accept that all the messages could be extracted remotely. They give no indication of their compliance with best practices (e.g. https://labs.bishopfox.com/tech-blog/reasonably-secure-elect...) with is disturbing.
I didn't try, but I don't see how it could be more straightforward than just launching a docker container
I simply do not trust the OS exclusively to keep the messages secure at rest. The fact that I could use a passphrase, swipe pattern, or other mechanism to encrypt the database separately from Android was a boon, and I'm greatly saddened that they have removed that feature.
Perhaps a second layer of encryption doesn't really matter all that much. If Android's security is as bad as I think it is, then a second layer might just amount to security by obscurity. But it's the principle of things.
angry_octet raises an excellent point. I wish this would return as a mainstream feature.
Still, there’s value in encrypting in-flight messages.
Great example is Android Wear.
Going through the feature list:
> Protects database with passphrase encryption
Modern Android supports FDE, so this seems like it's no gain for most cases. For users who don't have FDE, I guess it makes sense as long as you aren't concerned about evil maid attacks?
(FWIW, Signal's philosophy—here and on RAM protections—seems to be that this is the province of the host OS. I agree!)
> Locks down the app automatically after you go a certain time without unlocking your device
I don't know what this means—is it the below (i.e. purging decryption keys from RAM on inactivity) or something else?
> Securely shreds sensitive data from RAM
The threat model here seems to be malicious code that can read the device's RAM.
I think it's best to leave these kinds of mitigations to the host OS (i.e., if there is malicious code that can read your RAM, you're _probably_ SOL), but I guess there are probably some attacks (e.g. hardware or local-device attacks) that can dump RAM or something? What are common examples?
> Allows you to delete contacts and stop sharing your profile > Clears call notifications together with expiring messages > Disables debug logs
The scenario is that someone grab the device and wants to read the chats, contacts, or access any information stored in the app. And you realize or suspect that. For example, because you lost the phone, or because it was left out of sight in an unsafe place.
Under the big assumption that the device was clean of malware when Molly was locked there are no technical means to access the data without the password. This is the goal. If there was any security guarantee it would be this one.
When Molly is locked, the database is closed, and the only way to open it again is by entering the password. While locked, the app cannot display notifications. I guess this is the main blocker why Signal has not implemented password encryption yet. I have some ideas to fix this in a secure way, but it would require to modify all Signal clients not just Molly.
To lock the app, there are two options. Either you tap "lock" in the menu, or you set up a timeout. This timer starts counting down with the Android screen lock. Therefore, it should be adjusted by considering the time you expect an attacker could bypass the Android lock screen, and gain root access to the device, and the period of time you want to be able to receive notifications. There are more lock triggers in the roadmap, like the action of connecting an USB cable... many exploits works through USB.
I agree that in a perfect world with zero vulns, all this should be handled by the OS. But even that, there are use cases for Molly. Should your fingerprints or a weak pattern give access to everything stored in your phone? Let me tell you someone's else analogy, "The keys to my front door shouldn’t also unlock my safe. You can rifle through my cutlery, but not my banking records."
“Stolen or searched” isn’t a very specific description. Does the attacker have the screen lock? Or is the screen unlocked but they don’t have the screen lock factor?
Does the attacker have the ability to inject code into the running OS, or only to read memory contents?
Etc.
I’m not saying this is unreasonable, but it seems like your design philosophy is sort of “belt and suspenders”—-i.e. layer on any defense you can. This can increase safety, but at cost of features or usability (as you noted) or complexity.
To your specific case (“you realize or suspect that”)—why wouldn’t I just use the lock screen? :)
As long as Molly is locked, it doesn't really matter. It offers protection in the worst case scenario, under the premises I noted before.
> This can increase safety, but at cost of features or usability (as you noted) or complexity.
You are right. Just keep in mind not everyone need a safe, but the people who need it appreciate having the option to buy one.
> why wouldn’t I just use the lock screen?
Because you know there have been working exploits in the past to bypass the lock screen, or to read physical RAM directly from the USB port of a locked phone (1). And thus it is reasonable to believe there are still more vulnerabilities to be discovered and patched in Android.
(1) https://saltaformaggio.ece.gatech.edu/publications/DIIN_17.p...
Tossing the database encryption key when idle is a form of segmentation in time, and is a considerable constraint on attackers.
The objection to libresignal wasn't just based on the name.
That's why signal isn't actually FLOSS.
What is potentially problematic is not the usage of the same backend but of the same actual servers.
The mautrix-weechat bridge to Matrix uses the actual production Signal desktop client so they don't block it, but it's super wasteful because of this, it uses almost 1GB of memory just to relay some messages :P And it also uses your phone number as ID, doesn't allow integration with bots like Telegram does do, etc. It's ok for a small niche of people needing super secure chats but it's not the be-all end-all chat app.
So I recommended everyone around me against Signal as a Whatsapp replacement.. We should move to something that is solving all the problems, not just some of them. I think it's crucial that the network itself is just as open as the software, otherwise Signal can be sold and we end up with the same mess as Whatsapp once more (remember Whatsapp actually used to be a pretty decent IM app before Facebook took it over). Open protocols have been the building blocks of the internet and this fragmentation is making it a mess.
I think Matrix is the way to go, I just wish they could simplify their E2E a bit.. Right now it's too much in the way in terms of user experience.
The Signal source is GPL 3.0, so definitely libre.
If the server code is licenced as AGPL3 that grants others particular rights in addition to those granted by regular law, under particular constraints, to use and modify said source code, and thus enables e.g. Molly to provide their own servers.
I think it would be a losing battle for OWS to go after a popular forked client that talks to the official OWS signal servers.
My question was what prevents a third party from connecting to Signal's servers.
Pretending to be Foss and then not allowing third party clients, servers is not nice imo
Open source vs. open network are fairly orthogonal. AIM and ICQ were never open source, but had several 3rd party clients. Outlook is closed-source, but still federates with other e-mail servers.
I'll use an open-hardware analogy. Let's say there's a open-hardware go kart. The publishers of the original go kart also own a race track. They only allow their original design on the race track. You can take their design, modify it and drive anywhere you want.
A competing race track is closed hardware, with copyrights and patents on their karts. If you base a kart off of their design, they will sue you. If they deign to let you take your home-built kart designed by someone else on their track, they aren't open hardware. If they publish the exact specifications required for karts to run on their track and encourage home-built karts to run on their tracks, they still aren't open hardware.
> That's the entire point of FOSS.
foss as in free to check code, submit patches, create clients on and on...
i recently read the same question somewhere and the reply was some scary long answer how maintaining a fork is mighty difficult because you have to be few months behind upstream, fix bugs, manage certificates, work on apps.... so essentially make it difficult to set up competition and still pass oss test because source. smh
All of these things are allowed by Signal. Look at what is happening to WhatsApp right now because of damage to its brand. Moxie thinks that allowing 3rd party clients or federated servers would damage the Signal brand. If you disagree with him, go ahead and fork it. There are probably 100s of forks of signal that let you connect to unofficial servers. If it weren't open source that option would not be available to you. How many forks of the (closed source) official AIM client are there? Of the server? In terms of freedom offered by the software Signal is positioned pretty well.
1: https://www.gnu.org/philosophy/open-source-misses-the-point....
>and to redistribute copies with or without changes.
you are saying free to redistribute copies with or without change but you are saying connecting to official server is bad for brand. what happened to copies without change? how can you justify that? arent you restricting that line?
if moxie is so worried about the sugarflake brand, why does it not copyright the brand name? shouldnt that solve their problems? why pretend open source when its not
Nobody is stopping you from distributing copies without change. Do it right now. Announce it to the world. It's 100% fine.
> if moxie is so worried about the sugarflake brand, why does it not copyright the brand name? shouldnt that solve their problems? why pretend open source when its not
Signal is actually trademarked. Scroll to the bottom of the signal website: and you will see "Signal is a registered trademark in the United States and other countries." Nothing new about this. Firefox is trademarked as well (hence e.g. iceweasel)
I'm sure the author of openssh runs an ssh server somewhere. He doesn't let me connect to it. That doesn't make ssh less open-source.
Maybe Signal is open source but not free software. That just shows how open source misses the point.
OpenSSH is open source, but not free software. That just shows how open source misses the point.
I can fill in the above template with GNU's CVS servers in the 90s, if you prefer GPL to BSD.
I don't see how restrictions on what is allowed to connect to privately run servers can magically cause software to become non-free. Nor do I see any way in which those restrictions existing (again on computers neither you nor I own) in any way violates the spirit of free software or in any way denies you and I the freedoms that free software is supposed to respect.
> What software I use is none of his business right up until it starts affecting computers he owns.
Which client implementing the Signal protocol you use does not affect him, therefore it's none of his business.
Nit-picking: AIM had an open-source protocol (TOC), that AOL had created for their TiK open-source AIM client. Some 3rd party clients used the protocol too. It was missing lots of features, but the basics generally worked. After ICQ moved to OSCAR protocol, I believe TOC would work off and on for ICQ as well as AIM.
IIRC, it was mostly anything you needed to get beyond the bare minimum. TOC could message, and manage your buddy list, and set your idle time and your status message; but it couldn't do typing notifications, and probably not some other things. I believe they used TOC tunneled over HTTP(s?) for their Java applet client, if you used that.
I seem to recall it went through periods of unavailability from time to time, so I would go back and forth between TOC stuff I wrote and understood and OSCAR libraries that barely half worked.
Saying here you go. Open source. You can fork a client but dont connect, you can fork server but dont use official apps.
I do not know if GPL code can have this restriction. Its like saying Tesla car has open source or Foss software. Free to fork it but you need to build your own car to run this software. Its free, is open source, just not usable.
However the page that you linked does not mention encryption. I can't see anywhere explain exactly what the PIN does. Does it encrypt your data or not?
Famously older iPhones were susceptible to resetting the 'Invalid Attempts to Unlock' counter that the iPhone stored in the Secure Element to workaround the PIN rate-limit, by halting the CPU before it had a chance to increment the value, but right after it returned the pass/fail result.
So Signal could be entangling this PIN with a key from the Secure Enclave, and then trying to securely increment a counter inside the Secure Enclave to implement exponential rate-limiting and self-destruct, but it would be tricky to implement correctly.