I just installed Signal on my Android phone.

It wasn't an easy decision. I have been running Cyanogenmod, a Google-free version of Android, and installing apps from F-Droid, a repository of free software android apps, for several years now. This setup allows me to run all the applications I need without Google accessing any of my cell phone data. It has been a remarkably successful experiment leaving me with all the phone software I need. And it's consistent with my belief that Google's size, reach and goals are a menace to the left's ability to develop the autonomous communications systems on the Internet that we need to achieve any meaningful political change.

However, if I want to install Signal, I have to install Google Play, and the only way to install Google Play is to install Google's base line set of apps and to connect your cell phone to a Gmail account.

Why in the world would Signal require Google Play? There is plenty of discussion of the technical debate on this topic, but politically it boils down to this: security is about trade-offs, and the trade-offs you find important are based on your politics. While I consider Signal to be on the same team in the big picture, I think Signal's winning a short term victory for more massively adopted end-to-end encryption at the expense of a longer term and more important struggle for autonomous communication systems specifically for communities fighting corporate power (of which Google itself is an important target) and fighting US hegemony on a global scale.

Furthermore, Signal's lead developer's outright hostility to alternate clients connecting to the centralized signal servers demonstrates another political decision that favors central control over any confidence in a broader movement control over what could have become a power new protocol for secure communication. And his refusal to grant an exemption for other developers to use just the encryption algorythm is frustrating to say the least.

Given this reasoning, why install Signal? The main reason is because I have yet to convince anyone to remove Google Apps from their phone and Signal, right now, represents a dramatic improvement over most people's current communications habit. And, when it comes down to it, I need to run what I recommend.

I'm still running both conversations and Antox which are far better alternatives in the long run. However until they gain more widespread adoption, I'll be experimenting with Signal.

Technical Details

Oh, and by the way, installing Google Apps nearly bricked my phone.

Cyanogenmod's web site conveniently provides instructions for installing Google Apps. However, confusingly, they provide two different links to choose from, one is from OpenGapps which provided my a link to download the zip file to flash on a non-https page (the link itself was over https). The other link was to an https-enabled page on androidfilehost.com that offered a non-https download (but did provide a md5 checksum). I am now sure why people offering software downloads don't enable https from start to finish (well, maybe I do - I haven't yet enabled https on this site...).

However, more confusing is that both links were to different files. The OpenGapps one seemed to be a daily build and the androidfilehost was to a file with the date 20140606 in it's name, suggesting it was built nearly 2 years ago.

I went with the daily build.

When I restarted, I got the error "Unfortunately, Android Keyboard (Aosp) Has Stopped." If you search the web for this error you will see loads of people getting it. However, none of them seem to be using an encrypted disk. Yes, that is a bigger problem since you can't enter your encrypted disk passphrase if your keyboard app has crashed and you can't boot your phone if you can't even hit enter at the passphrase prompt. If you can't boot, you can't clear the keyboard app cache or most of the suggestions. In fact, when you press and hold the power key you don't even get the option to reboot into recovery mode. And, if you connect your device to your USB cable and run the adb tool on your computer, the tool reports that you are not authorized to connect your device.

Oh damn. Did I just brick my phone?

Fortunately, you can still boot into recovery mode on a Samsung S4 by powering it off. Then, press and hold the up volume button while turning it on.

In recovery mode, I as able to convince the adb tool to connect to my device and I copied over the other Gapps zip file from androidfilehost.com and flashing that one seems to have fixed the problem.

Once I booted, I ran Google Play and opted to create a new Google Account. I chose the option to not sync my data. Then, I checked in Settings -> Accounts I saw that a Google Account was there and was synchronizing. Great. What was it synchronizing? I clicked the account, then clicked "Accounts and Privacy" and ensured that everything was turned off. Let's hope that works.

[Update]

Signal's option to take over as your default SMS client and send un-encrypted normal SMS messages while sending encrypted messages to other Signal users is a very good way to smooth adoption. Unfortunately I had some problems with MMS message for which I found a work-around. But sheesh, lots of MMS problems at the moment.

For your information, there is a free software reimplementation of part of the Google Services Framework, and of GCM in particular: https://microg.org/ It's not completely straightforward to install, and might require ROM-level patching for the reimplementation to spoof Google's signatures, but it seems to me like a more reasonable solution than running Google's proprietary services as priv-apps.

Comment by Anonymous Thu 02 Jun 2016 03:41:04 AM EDT

Hi Jamie,

You don't need gapps to run signal. It works properly with microg which is a modular floss gapps replacement focused on privacy. Looks like Signal needs at least gmscore and blankstore/fakestore and probably also gsfproxy for gcm/push.

In my setup I use gmscore (includes maps api v2, networklocation, main gcm app) + gfsproxy + blankstore + apple unified backend + mozilla unified backend as user apps and I flash maps api v1 as a zip in recovery. My cm13 rom supports signature spoofing which is required by blankstore/fakestore, but you can also use xposed with fakegapps module if your rom lacks the option.

More info:

http://forum.xda-developers.com/android/apps-games/app-microg-gmscore-floss-play-services-t3217616

https://microg.org/

Cheers! Bob

Comment by Anonymous Thu 02 Jun 2016 08:15:00 AM EDT

Your link regarding a "refusal to grant an exemption for other developers to use just the encryption algorythm is frustrating to say the least" was to an April 10th comment by the lead developer of the ChatSecure app on an issue on the github page of the Monal app regarding incorporation into Monal of the OMEMO cryto protocol which is based on Signal.

The Signal protocol is licensed GPL, and the post by the ChatSecure developer was expressing frustration with being unable to get an exemption to the GPL license from Moxie (the lead developer of Signal) in order to distribute it through the Apple app store which prohibits GPL licensed software.

In the introductory comment on the Monal OMEMO issue there is a reference to ChatSecure: "for further reading on an iOS implemention, see this report about ChatSecure status on OMEMO" which links to an issue on the ChatSecure github regarding implementation of OMEMO in that app. One of the latest comments there, from May 12th, is the lead developer of Chatsecure saying: "Moxie very recently told me that he doesn't care if we distribute on the App Store as long as we otherwise comply with the GPL, but I need something more concrete for the funder before we can move forward." https://github.com/ChatSecure/ChatSecure-iOS/issues/376#issuecomment-218902284

Based on all of this, it seems that (at least in the case of ChatSecure's implementation of the crypto algorithm), frustration with Signal developers is misdirected and the problem lies with the funders of ChatSecure, as well as with Apple for causing this problem in the first place by prohibiting GPL code from their app store!

Licensing aside, I think your analysis/critique of the technical/political choices of the Signal developers is insightful and correct. This is a very good description of the situation: "Signal's winning a short term victory for more massively adopted end-to-end encryption at the expense of a longer term and more important struggle for autonomous communication systems".

I would add though that the short-term victory of widespread adoption is being made possible specifically through the very effective leveraging of billion dollar backed surveillance-capitalist infrastructure: smartphones, phone numbers for ID, app stores for distribution, GCM for transport, and Amazon for hosting. These are the infrastructural foundations on which Signal is built, and I believe they are what has made it possible in this case to achieve widespread adoption of end-to-end crypto outside of technically-proficient communities. It is a very politically compromised strategy (especially in the long term, as you mention), but it also seems to be working. The collaboration with WhatsApp is a clear continuation of the same strategic logic (the collaboration for Allo just seems bad, though!).

Since people are going to be using Signal, it seems important to think through how to mitigate and prepare for the risks and limitations that are inherent to its infrastructural foundations. Also, to try to think about what are possible strategies (other than heavy reliance on the surveillance-capitalist infrastructures for growth) for achieving widespread adoption of autonomous communications tech.

Comment by Anonymous Thu 02 Jun 2016 05:43:21 PM EDT

I agree with the previous post, really the problem in the case of OMEMO licensing is Apple. If someone picks a device from a company that forbids GPLed software, really the best we can do is convince them to pick something less insane. (Unfortunately, it doesn't seem like anything less insane exists -- I mean, there are also enough issues with Google's stuff.)

Regarding Signal, I am using it on my phone with CyanogenMod, X-Posed and microG. It's a little work to set up, but then it works fine even with CM updates. If CM would be less hostile, then X-Posed would not be needed, but unfortunately CM has no intention to support open-source GApps-replacements (and they did not give any believable reason for this) -- I guess the deals that CyanogenOS has with Google prohibit this? Other ROMs like OmniROM have this support built-in, but they support way less devices than CM does.

Comment by Anonymous Mon 13 Jun 2016 07:38:46 AM EDT

Please just ignore me, if you find this comment inappropriate.

But I like to point out three fundamental problems with Signal.

  • Worst disadvantage: it depends on a phone number as id. If someone does not have a phone number or does not want to give it to others, they cannot use Signal. In many countries it is difficult or illegal or both to have a anonymous telephone number (= SIM card).

  • Still terrible: Signal is a centralised service. Even if the server software is free software, you cannot run the code yourself or improve it and run the improved server, at least only outside of the Signal user community.

  • Very bad for Linux users: There is not really a desktop solution, only a Chromium app, that depends somehow on the Android app. I'm a Debian user, not an Android user, so I'm out.

Each problem alone makes Signal a "no-go" for me. All problems are not present with XMPP, however. And both Conversations (Android) and Gajim (Linux/Windows) support OMEMO encryption, the same one used by Signal.

Thanks for not using Signal! :~)

Comment by Anonymous Thu 01 Sep 2016 08:29:24 AM EDT