News for hackers. Stuff that matters.
Re:Re: Moxie on Web3 by mike_hearn on Sunday January 09, 2022 @05:44AM (#29862137)
"You can verify that the apk in the app store corresponds to a specific point in git history"

Is there an easy way to get a direct HTTPS download link from the Play Store? The app itself certainly doesn't let you get the direct APK, or if it does then this must be a very obscure or new feature because I've been using Android for years and never seen it. My understanding is that the Play Store protocol is quite complicated.

Even if you can get such a link:

• It's not the case for iOS.

• It's not the case for WhatsApp.

• You have to repeat the process for every update, of which there are many.

• You don't know what version other people are running, which also matters. Consider group chats!

This is really something possible only in theory, not something normal users can actually do, hence the threshold signing/auditing proposal.

The claim that "Signal encryption doesn’t actually work" just seems inaccurate

I see a bunch of people getting hung up on this point. It's missing the forest for the trees.

Encryption in which you rely on your adversary to encrypt messages for you is conceptually broken. It doesn't matter if the encryption scheme works in theory in another context, in that context it's a failed setup. The example of WhatsApp (which uses the Signal encryption scheme) makes this clear: the Signal protocol in the abstract prevents the adversary learning when the same message is sent twice. In the most important concrete instantiation it actually doesn't: Facebook simply changed the client to expose that information unencrypted, and there's nothing anyone can do about it. Signal could do the same for their own network tomorrow, and given the ideological trends in the Bay Area perhaps they will. Or maybe they already did for some people? We have no way to know, only faith.

"If you do wish to continue communicating with people who are using Signal, you're still able to reappraise what you feel comfortable saying now you know that the behaviour has changed."

I think you're agreeing with me. The point of encryption is to turn the infrastructure provider into a "dumb pipe" that doesn't have opinions on what you think. If one day Signal or WhatsApp change the deal - as indeed Facebook did in 2019 - and you suddenly have to care what random Facebook employees think - then we can no longer really claim the service is end-to-end encrypted.

Re:Re: Moxie on Web3 by jraph on Sunday January 09, 2022 @05:54AM (#29862182)
The point is that not everybody needs to check.

- It take one person to notice that builds don't match or that something fishy is happening for the trust on Signal to be lost forever.

- Someone for whom the integrity is critical can do the check / compile themself

- I don't know if this has happened yet, but the way Signal is built and distributed allows a community of "checkers" to exist.

What can Signal do to improve this aspect?

Re:Re: Moxie on Web3 by mike_hearn on Sunday January 09, 2022 @06:04AM (#29862228)
I outlined a proposal for what they can do in the article.

In reality even if some people checked it'd make no difference. Networks are very sticky. When WhatsApp broke the encryption by allowing Facebook to detect forwarded messages, there was no uproar or sudden loss of trust. There was no mass migration away from WhatsApp. One day there was privacy. The next there was less, because having made its fortune on the back of viral sharing in social networks Facebook decided that maybe there was a little bit too much social going on and not enough hierarchy. And there's no possible fix, beyond "convince everyone not to use WhatsApp" which isn't going to happen anytime soon.

That's why I suggested a globally distributed group of auditors creating threshold signatures. It should be backwards compatible with the app stores because the resulting signatures are/can be indistinguishable from a regular signature. I have a Shoup RSA implementation lying around in my mail archive somewhere.

Anyway, encryption is about meeting social goals, not merely doing maths for the sake of it. There's no way to meet the underlying social goals here without decentralization - the fact that this is hard is irrelevant (even though I fully agree with Moxie on the problems around iteration speed etc).

Re:Re: Moxie on Web3 by arepublicadoceu on Sunday January 09, 2022 @07:11AM (#29862571)
> When WhatsApp broke the encryption by allowing Facebook to detect forwarded messages, there was no uproar or sudden loss of trust. There was no mass migration away from WhatsApp.

Well, you’re giving a not so great example there.

I don’t know anyone that uses WhatsApp because of their encryption system or privacy claims. Whereas I also don’t know anyone who would keep using signal if not for their encryption and privacy claims.

In every metric I can perceive signal is just playing catch-up with WhatsApp or telegram features. The only winning feature is privacy and encryption. So, your argument that:

> In reality even if some people checked it'd make no difference

Makes no sense, if one person could break the trust on signal, it would be absolutely dead. No one would keep using a poor substitute with barely any user compared to the mainstream chat services if not for privacy and trust.

Re:Re: Moxie on Web3 by rswail on Sunday January 09, 2022 @07:29AM (#29862681)
The primary reason Whatsapp had to change the forwarding was because of the social impact of forwarding in some nations that lead to social unrest and deaths. So while there was a loss of privacy, the alternative was to remove the offer of the application itself in its entirety.
Re:Re: Moxie on Web3 by jancsika on Sunday January 09, 2022 @10:38AM (#29864134)
> So while there was a loss of privacy, the alternative was to remove the offer of the application itself in its entirety.

OP's point is that the change in forwarding was practically equivalent to (partially) defeating the encryption.

I think the argument is that, previous to this Whatsapp forward counter rollout, one would assume significant hits to credibility would block a company/org rolling out such a thing in a client. And that hit apparently didn't happen.

Re:Re: Moxie on Web3 by nonameiguess on Sunday January 09, 2022 @08:43AM (#29863112)
> In reality even if some people checked it'd make no difference. Networks are very sticky. When WhatsApp broke the encryption by allowing Facebook to detect forwarded messages, there was no uproar or sudden loss of trust. There was no mass migration away from WhatsApp. One day there was privacy. The next there was less, because having made its fortune on the back of viral sharing in social networks Facebook decided that maybe there was a little bit too much social going on and not enough hierarchy. And there's no possible fix, beyond "convince everyone not to use WhatsApp" which isn't going to happen anytime soon.

This seems to miss two things.

First, "networks are very sticky" is the reason Signal uses telephone numbers as identifiers. Your network is not tied to Signal, or even to your contacts having smartphones that can run apps of any kind.

Second, the target markets for Signal and WhatsApp are quite different. WhatsApp users more often than not don't care about privacy. They care that everyone they want to talk to, including possibly critical government services in many countries, requires them to use WhatsApp. So if WhatsApp stops encrypting entirely, I'm not sure very many users care. Signal is much more likely to be used by people who actually care about privacy and security and is much more likely to be abandoned if it breaks the promise of maintaining those things. It's even designed to be easy to abandon, whereas WhatsApp very much is not. Leave WhatsApp and there are a whole lot of people and services you just can't talk to any more.

Re:Re: Moxie on Web3 by Andrew_nenakhov on Sunday January 09, 2022 @06:48AM (#29862448)
Signal (with Google / Apple cooperation) can potentially ship modified backdoored versions to specific targeted users, while that one geek that verifies every Signal build still gets a clean version.

This is not a game you can win with centralised app stores and app architecture that relies on push notifications.

Re:Re: Moxie on Web3 by mjg59 on Sunday January 09, 2022 @06:52AM (#29862467)
This is true even in a decentralised world - even if the protocol can be guaranteed to be secure, you could still push a modified binary to an individual.
Re:Re: Moxie on Web3 by Andrew_nenakhov on Sunday January 09, 2022 @07:23AM (#29862638)
Not if you build the binary yourself. It is perfectly doable in PC world, where you can run background processes and such, but much harder to do in current mobile world, where both iOS and Android restrict background processes (Android to the lesser degree, but it is going to the same place as iOS), and force apps to rely on push notifications.
Re:Re: Moxie on Web3 by mike_hearn on Sunday January 09, 2022 @08:14AM (#29862913)
No, mjg59 is right - the operating system is a root of trust. Microsoft could push a Windows update that patches a messenger app in place for example. I probably shouldn't have brought up the "knowing what your peer is running" problem as it just confuses things.

There is plenty of progress to be made here without getting into the next layer of how do you trust your OS. Android is at any rate in a decent place because so many users don't get their OS bits from Google but rather, an intermediary, and it's very easy to change those intermediaries (it means buying a new phone but people do that all the time anyway).

Reproducible builds and audits are all very theoretical today. Reproducible builds on their own aren't actually useful because you're just comparing hashes: someone has to have actually read the source code, understood it, documented what it does or compared it to some natural language description, and they have to keep up with all the code changes, and they have to convince other people to trust their judgement. It's a lot of work and we don't have any companies that do this sort of thing today. The industry needs a network of auditing firms that specialize in this but it's a chicken-and-egg problem: there's no point creating such a firm when their outputs are so hard to use, and there's no point making their outputs easier to use when there are no auditors who would create them.

Re:Re: Moxie on Web3 by gizmo385 on Sunday January 09, 2022 @08:43AM (#29863106)
With respect to reproducible builds, they're pretty extensively used in engineering but have you considered that the reason they aren't more widely used outside of the industry is that most people simply don't care? I don't think that it's that the outputs are hard to use - it's that the vast majority of people installing and running software on their devices are perfectly fine with trusting the existing distribution infrastructure.
Re:Re: Moxie on Web3 by mike_hearn on Sunday January 09, 2022 @09:44AM (#29863634)
By "outputs" I mean "understandable and meaningful trust assertions" here, not actual binaries.

As for don't care, sure, but I guess you can make that argument for almost anything security or privacy related. Do most people care if an app or website uses SSL? Nope. They probably can't even tell. Sometimes it's just up to the people building the infrastructure to plan ahead a bit, see what problems can arise and take countermeasures.

I think it's much easier to make progress on audited builds than e.g. PGP style end-to-end encryption. Audited builds and remote attestations are the sort of thing that can be done behind the scenes, they don't inconvenience end users. People who care can double-check what the auditors are saying, and "people who care" might include journalists, politicians and other people with powerful megaphones who can affect change.

Plus it doesn't require a big breakthrough in tech. It does require Facebook (and Apple etc) to accept that just asserting their products are encrypted isn't really achieving anything, and for some engineers to say "OK, let's find a few foreign companies to cross-sign with us". It might require some changes in the app stores. I see a post elsewhere claiming that Google is phasing out the model in which developers sign their own APKs, which is a pity and a retrograde step. But if the right people agree with these arguments, all those problems are solvable.

Re:Re: Moxie on Web3 by Andrew_nenakhov on Sunday January 09, 2022 @08:24AM (#29862982)
There are many sources to get Android OS, but they all share one and the same Google Play. So this is the most logical piece of infrastructure to ship you tampered apps, on any Android device with Google services.
Re:Re: Moxie on Web3 by gizmo385 on Sunday January 09, 2022 @08:06AM (#29862865)
But you can already build the signal binary yourself, right? Or are you suggesting that should be the default and everybody should rebuild the binary?
Re:Re: Moxie on Web3 by Andrew_nenakhov on Sunday January 09, 2022 @08:22AM (#29862968)
You can, but you won't be able to receive push notifications with it - to send push notifications to your app Signal will need your developer keys, or relay push notifications via your server. And I don't think Signal can relay push notifications.

Telegram, actually, can send push notifications to third-party clients, but requires uploading developer keys to them.

Re:Re: Moxie on Web3 by cft on Sunday January 09, 2022 @07:47AM (#29862770)
Not if you buy a raspberry pi like device "server" and plug it into your modems' Ethernet port
Re:Re: Moxie on Web3 by gls2ro on Sunday January 09, 2022 @07:31AM (#29862698)
I think it is also not a game you can win (as in world wide usage) if you need users to build their own apps. The majority of users will not do that no matter how many tutorials one can write.
Re:Re: Moxie on Web3 by Andrew_nenakhov on Sunday January 09, 2022 @07:45AM (#29862758)
well, this is something that can be somewhat mitigated by giving users a meaningful choice of software repositories. Like, f-droid maintainers are trusted not to tamper apps because of their reputation. However, this would also require making third-party repositories ("app stores" is the modern fancy term) to have the same system privileges as Google Play / Apple Appstore have - and by this I mean giving apps access to third party push notifications services.
Re:Re: Moxie on Web3 by Ruphin on Sunday January 09, 2022 @12:53PM (#29865633)
The exact same argument can be made for the centralized services that Ethereum relies on. If Infura would serve incorrect or censored data, it only takes _one_ person to find out and the trust we have in them is also lost forever.

There is no fundamental difference between the trust placed in relaying services like Infura, and the trust placed in software supplier like Signal. Both companies/services are able to cheat or betray that trust in a way that regular users will not easily notice, but both of them are fully auditable by technical users. Since their whole business model relies on being a trustworthy service provider, it makes no sense for either of them to attempt to cheat, because they risk their entire reputation.

Re:Re: Moxie on Web3 by aorth on Friday January 14, 2022 @01:45AM (#29931318)
On that note, I just noticed this tool the EFF released for downloading APKs from the Play Store and others. Haven't tried it:

https://www.eff.org/deeplinks/2022/01/eff-threat-labs-apkeep...

Re:Re: Moxie on Web3 by _tk_ on Sunday January 09, 2022 @07:24AM (#29862650)
This argument is "true" for every non-static website. In theory, different content can be delivered based on certain criteria (activist, lawyer, etc).

Every interaction with other humans or institutions is based on a degree of trust. Even https was designed by humans and a signing ceremony is being carried by humans that could have bad intentions. Trust has to be created or verified, if interacting entities have no knowledge about each other.

Audit trails were created for this reason and are ubiquitous in the world of the centralized web.

Re:Re: Moxie on Web3 by older on Sunday January 09, 2022 @05:53AM (#29862177)
> Is there an easy way to get a direct HTTPS download link from the Play Store?

Have you tried search engine? I've got a lot of good answers by typing your exact question into duckduckgo.com

Re:Re: Moxie on Web3 by mike_hearn on Sunday January 09, 2022 @06:21AM (#29862315)
Yes. The first hit following your instructions takes me to a page with a list of "download sites" like apkleecher.com that has a button labelled "GENARATE DOWNLOAD LINK". I find myself uncertain that such sites can be trusted to give me an actual correct download. Even if they give me one that looks plausible, is it the one on my actual phone?

Note that PCs have this problem less, because there's filesystem access and a culture of direct distribution. I can go find the actual install folder and take a look at what's in there. For mobiles it's harder and we're forced to rely on these shady sites. Even on PC though someone has to reproduce the build, keep doing so and keep up with auditing source code changes. Nowhere does this. Even if there are reproducible builds, who exactly does the reproduction and much more expensive audit work is handwaved away. As an industry we're not even auditing the libraries we include into the final binaries, so we're a long way from being able to have a group of different people make confident claims about what a binary actually does.

Re:Re: Moxie on Web3 by older on Sunday January 09, 2022 @07:45AM (#29862756)
> Even if they give me one that looks plausible, is it the one on my actual phone?

Download apk from your phone (using adb) and compare?

Re:Re: Moxie on Web3 by mjg59 on Sunday January 09, 2022 @06:03AM (#29862223)
> Is there an easy way to get a direct HTTPS download link from the Play Store?

Easy? No. But you can grab the apk from any number of third party download sites and verify the signature, and you can also just download it from https://signal.org/android/apk/ . Unless you've installed something via the Play Store, Android won't autoupdate it.

> • It's not the case for iOS.

It's still not hard to obtain iOS packages and verify their contents - it's definitely not as straightforward to use those as it is to sideload updates for Android, but it's still possible to verify that the binary matches the source, and you only need one person to notice.

> • It's not the case for WhatsApp.

Your claim was "Signal encryption doesn’t actually work". WhatsApp uses a whole bunch of Signal, but it's not Signal. This is like claiming that the IoT device I found that uses Signal in the backend but has all the key material in an unprotected Firebase bucket tells us anything about the security of Signal.

> • You have to repeat the process for every update, of which there are many.

No, someone has to. And that's something that could be automated.

> • You don't know what version other people are running, which also matters. Consider group chats!

If your position is "We should have infrastructure that makes it easy for third parties to audit Signal updates correspond to the source code", I absolutely agree! But we can build that with what currently exists, Signal's centralised infrastructure does nothing to prevent that.

> Encryption in which you rely on your adversary to encrypt messages for you is conceptually broken.

Every time someone sends an encrypted message, they're relying on a huge stack of technology that's largely outside their control. If my keyboard becomes untrustworthy, my guarantees are gone. If my video driver becomes untrustworthy, I'm in a bad place. Using any form of technology implies placing some trust in an awfully large set of people. On a daily basis, we're relying on an awful lot of faith. The Signal devs have gone out of their way to make it easier to verify whether that faith is misplaced or not.

But:

> We have no way to know, only faith.

We literally do have a way to know. We can dump every Signal APK installed on every phone and determine whether they match the source. It wouldn't be easy, but it could be done.

> If one day Signal or WhatsApp change the deal… then we can no longer really claim the service is end-to-end encrypted.

Signal doesn't appear to have changed the deal, so it seems like you're saying we can currently claim that it's end-to-end encrypted?

Re:Re: Moxie on Web3 by mike_hearn on Sunday January 09, 2022 @06:16AM (#29862284)
"you can grab the apk from any number of third party download sites"

But people get it from the official app stores and for WhatsApp there's no other option (which is the main one I actually care about because that's where my contacts live).

I think some of this discussion is caused by conflation between Signal-the-tech and Signal-the-app. I could have called it the Axoltl Ratchet instead but I don't think anyone would know what I'm talking about, and anyway, I think it'd be less technically accurate as by now there's lots of stuff to do with group chats etc and I don't know what the underlying code-name is of those schemes. I normally see the whole encryption scheme just be called "Signal encryption".

If your position is "We should have infrastructure that makes it easy for third parties to audit Signal updates correspond to the source code", I absolutely agree! But we can build that with what currently exists, Signal's centralised infrastructure does nothing to prevent that.

We are in 95% agreement indeed! I proposed such an infrastructure in the article, based on threshold signatures, however, it doesn't exist today yet our industry is claiming "we use end-to-end encryption which means we can't read your messages". This claim isn't true - they can read our messages if they want to - and progress seems to have stopped after these rollouts. The claim that it's possible to have a trustless centralized infrastructure provider is a very bold one and currently it's not convincing, so to prove this is possible we need to keep things moving. There has been no attempt to make these services auditable nor even really any recognition that there needs to be. That troubles me a lot. At some point people are going to notice these claims don't add up and trust in the whole software industry may be damaged.

Edit: actually if I recall correctly Signal uses Intel SGX to make some parts of its contact list intersection system auditable. That's a great use of tech to solve some of these problems. SGX is one way to attack the centralized-but-untrusted-provider problem. I don't know if anyone is actually doing remote attestations on a regular basis though.

"Every time someone sends an encrypted message, they're relying on a huge stack of technology that's largely outside their control"

Yes, but those components come from different players, in different countries, with different governments and agendas who often do not trust each other blindly. Hence why mobile radios are now sandboxed, why keyboard apps are sandboxed, Samsung presumably watches out for Google playing naughty games with the Android source as part of their patching and distribution process, etc. Certainly carriers have a long history of treating phone makers as semi-trusted, hence the historically long approval processes.

"Signal doesn't appear to have changed the deal, so it seems like you're saying we can currently claim that it's end-to-end encrypted?"

I believe that is currently the case. I cannot prove it, nor can I prove it will remain the case tomorrow, if it is today, nor can anyone else I trust prove it. Which, logically, means it boils down to faith in Moxie and his employees, people I've never met and do not know. A blog post saying "we promise we're not logging messages" should really carry equal weight.

Re:Re: Moxie on Web3 by mjg59 on Sunday January 09, 2022 @06:25AM (#29862333)
> But people get it from the official app stores

It doesn't matter what "people" do - what matters is whether a third party can obtain the same package and verify it. And they can!

> This claim isn't true - they can read our messages if they want to

They can read our messages if they want to, and we can detect that that happened, and then nobody uses their app any more.

> Samsung presumably watches out for Google playing naughty games with the Android source

Right! And we can watch out for Signal playing naughty games with their source. If you're ok trusting that Samsung will catch Google being untrustworthy, why are you not ok with trusting that signalverifier69's CI toolchain will catch Signal doing the same? The whole point here is that we don't need to trust Signal, we can absolutely verify it.

Re:Re: Moxie on Web3 by Andrew_nenakhov on Sunday January 09, 2022 @06:51AM (#29862464)
Third party getting the package is not a guarantee that you get the same package.
Re:Re: Moxie on Web3 by mjg59 on Sunday January 09, 2022 @06:54AM (#29862486)
If you've got to the point where Google is specifically pushing you a modified app, Google could just push a backdoored keyboard update that exfiltrated all your keyboard inputs instead. Why bother targeting a single app when you can get everything?
Re:Re: Moxie on Web3 by mike_hearn on Sunday January 09, 2022 @07:46AM (#29862765)
I think Android is designed such that even the Play Store cannot replace an installed app with a differently signed one. Or at least it used to be. And, "Android" is controlled by whoever made your phone, not directly by Google unless it's a Pixel device.

That said, it's a thin line. If Google had changed things at some point so that the Play Store could override the signing continuity requirement I wouldn't be remotely surprised.

Re:Re: Moxie on Web3 by JimDabell on Sunday January 09, 2022 @09:14AM (#29863376)
> I think Android is designed such that even the Play Store cannot replace an installed app with a differently signed one.

They can’t, however Google have recently changed the requirements for submitting an application to the Play Store. You now need to hand over your application signing key. Instead of signing the application to prove authenticity to Android devices then giving it to Google to host, you now sign the application to provide authenticity to Google, and then Google re-signs it with the key you gave them to prove authenticity to Android devices.

So if Google want to provide an alternative binary to a specific person, they can now do that.

Re:Re: Moxie on Web3 by hiq on Sunday January 09, 2022 @11:22AM (#29864612)
> Signal-the-tech and Signal-the-app

The Signal protocol[0] is used in Signal[1].

[0]: https://en.wikipedia.org/wiki/Signal_Protocol [1]: https://en.wikipedia.org/wiki/Signal_(software)

> they can read our messages if they want to

If Alice and Bob use the current version of the Signal app, they can't. You're worried about updates, fair enough, if that's within your threat model you're free to delay your updates for as long as you want, until you've reviewed them and waited enough to be relatively confident that a backdoor would have been found by then. Splitting the signing key into several like you suggest would delay updates for everyone while bringing negligible benefits to a tiny minority of Signal users.