Pixel Binary Transparency: verifiable security for Pixel devices
security.googleblog.com
security.googleblog.com
On the other hand, this is completely missing a proof that your device is running the firmware it claims to be running. The check of the device firmware is:
FINGERPRINT=$(adb shell getprop ro.build.fingerprint)
VBMETA_DIGEST=$(adb shell getprop ro.boot.vbmeta.digest)
This verifies nothing.The Pixel is (or at least should be [0]) capable of attesting to its running firmware. There would be additional bonus points for having the bootloader stages flash QR codes containing the hashes of the next stages, which would enable very straightforward verification.
With a secure element-based approach, the device would need to be able to convince adb that it has a genuine Google secure element and that the secure element says the fingerprint is such-and-such. The former would likely need additional data in the Merkle tree to avoid a situation in which Google pushes out a targeted, properly signed, but malicious secure element firmware that lies about the fingerprint. (And the entire point of binary transparency is to make this type of attack difficult.)
With a bootloader approach, in principle the entire verification could be chained from ROM and no secure element would be needed.
[0] I haven’t dug through exactly what the Google secure element does. I’m quite confident that it can attest, to Google, something about the running firmware, because this is useful for DRM and the various (horrible and mostly useless) safety checks and attestations available through the Android APIs. But maybe it actually can’t attest to the firmware fingerprint to any party other than Google.
Use no cell towers or agree to be tracked. Lol.
Who is that third party cell phone company adding spyware when I buy my Pixel phone from Google?
(Of course, Google can add spyware themselves; but they can also block it.)
TL;DR: He who controls the radio (firmware) pwns your phone.
A verified boot chain does not provide this assurance.
With a fully functioning binary transparency system, Google would have to publish the fingerprint of the malicious firmware. An even stronger system would require that they publish the entire image as well. Then the attack could be detected.
According to Wired, Android Verified Boot (AVB) prevents the computer owner from changing their mind about an OS update. No going back to the previous version. Leave no escape from from the latest improvements in Google's data collection to support its advertising services racket.
I do not see this - the KeyStore API available to apps still only returns an attestation as a normal X509 chain anchored into a local key, which is certified by Google. That is not DICE. Actually, there is no mention of DICE at all in any recent Android API docs.
Or it this documented somewhere else?
You might be able to see some custom Google extensions on the X.509 cert which will have some extra info. But that might get stripped when the cert is shown to an app.
I don’t remember all of the details. I worked on the infrastructure for the key acquisition but most of it was already set up when I joined and I was only on the team for a few months.
> Transparency systems can be used to detect—and thus deter—supply chain attacks. Let's address some examples:
Suppose an attacker maliciously modifies a Pixel image and even manages to sign it with the key that Google owns. Anyone who receives the malicious image can query the binary transparency log to verify the image's authenticity. The user will find that Google has not added the corresponding image metadata to the log and will know not to trust the compromised image. Since publishing to the log is a separate process from the release process with signing, this raises the bar for the attacker beyond just compromising the key.
So effectively, this seems to secure against malicious actors messing with Google's (or AOSP's) own build process, i.e. by somehow inserting an MITM between the build and the signing stage.
I don't know how Google's or AOSP's build systems are set up, but I'd suspect that not many entities are able to mount a successful supply chain attack on internal networks. So (conspiracy hat on), I wonder if there is something more behind this, i.e. some recent hacking incident or a warning of one.
[1] https://developers.google.com/android/binary_transparency/ov...
This classic article might be worth your while:
https://medium.com/@alex.birsan/dependency-confusion-4a5d60f...
https://web.archive.org/web/20210227105146/https://medium.co...
:)
They may just be trying to get people to "trust" them more.
Remember that according to Google and the rest of Big Tech, "malicious actors" also includes the user.
This mainly protects journalists and human right lawyers. I think this is the idea here after NGO shitstorm.
But it's returned to the host by adbd that's part of Android. What's stopping someone from creating a modified adbd that would lie about this value?
This has an obvious clear benefit: all of the people who have said "oh well Google could be compelled to sign a malicious update for a single user"... This is an attempt at solving that via a transparency log.
Granted, I think for this to matter much all-up, it would need to apply to PSF, Apex, general app updates, etc.... Which I'm pretty sure this doesn't even attempt to touch.
I'd love to hear Google speak to that but that seems like a huge can of worms compared to the image based hashing, signing, verification that is already part of the tooling, ecosystem and consciousness.
* Sorry, the presentation is non-public.
[0] https://certificate.transparency.dev/
[2] https://github.com/google/trillian-examples/tree/master/bina...
Personally, I use Pixel devices and install GrapheneOS on them.
There is a lot that can be done and there is a lot that people do.
As individuals we can of course offer mere anecdotal evidence. Coming from Belarus, I can say that the amount of talented hackers repurposing old tech was always strong there, though I don't have a strong connection there anymore. I recently covered the QuadCore mod for ancient thinkpads and the firmware replacement that entails: https://youtu.be/Fs4GjDiOie8 I received multiple requests on Details and Walking through individuals performing similar upgrades from Latin America. To me, the spirit for reviving trash grade tech to our modern sensibilities is alive and well.
The issue is that most phone manufacturers don't allow owners to do this, and most that do, do pull shenanigans that make it unpredictable and difficult.
Poorer people would absolutely choose to pay 25 dollars to extend their phone's life (replace battery + reflash to a supported firmware/os) vs buying another 200 dollar phone.
I'm hoping the EU (and the rest of the world) steps up and does what the US should have done a long while ago.
Having mechanisms like this in place unfortunately makes it easier for others to abuse them for DRM.
They say its "on the rise", but the linked report in the blog talks about transient OSS dependencies (among other related things), and not binary/firmware level tampering. Can someone explain how this would help avoid the Log4j vulnerability?
We now have certificate transparency and also this that work this way. They seem to be direct logical descendants.
Also, in my mind at least, the idea for doing secure attestable history comes from git. Once you have a crypto-DAG it's a fairly easy transition into other data structures although ordering becomes an issue with trees. I'm almost sure something else must have existed because it's not a far leap to a crypto-DAG when you are doing things like HMAC.
Google itself should be able to sign whatever code they want and mount whatever attack they want.
Could someone explain if this provides any value over signature check in the bootloader?
I believe that the bootloader can't be updated with a non-Google-signed version. And if there is a vulnerability and a malicious actor does that there would be no way to safely get the hash to verify against the log.
If every release has its checksum entered into an immutable log, and can't be installed if it's not in the log, it makes it somewhat detectable if someone infiltrates, tricks or forces Google into signing a backdoored version for a targeted attack.
It's unlikely anyone would infiltrate Google to make a custom-signed image to target me - but if you were Obama or Trump or Snowden or Khashoggi you might be worried about that.
I say "somewhat detectable" because if there was an unexplained signed update logged, Google could just say "sorry, bug/misclick/new guy" and that'd sound plausible to a lot of us.
Precisely. And, practically, you won't be able to audit such update, at least audit it quickly. Even if you find some malicious code they can always blame it to a rogue engineer.
And good luck finding anything with something as big as an android rom...
The problem is that way too many mobile applications these days take extraordinary difficult steps to make sure it's impossible to exercise the freedoms granted by the GPL in practice. If you "root" your phone, it's a constant game of whack-a-mole to keep banking, Netflix, Google Pay and other applications running.
On top of that it's impossible to put a new root of trust in place... I don't want a secure boot warning message if a firmware is running that I flashed on the device, I want it visible when someone else placed a manipulated firmware on it. And that point applies to Apple just as well.
And how exactly do you propose achieving that, when that someone else might have tampered with the phone before you got it?
The goal of Google's security architecture is that a dodgy phone seller/repair shop can't pre-root the phone and siphon all your private data to Mr Evil unless they have access to a silicon fab to remake the main CPU with a new trust root.
Erm, it's Dr. Evil to you sir.
Wipe the device as a condition of unlocking the bootloader root trust keyset. Easy, and more secure than any classic x86 UEFI bootloader. That gets rid of the threat of dodgy repair shops.
The only issue will be manipulating devices before they're sold the first time, but tamper-proof packaging resolves that.
I 100% agree that we should have ways of getting rid of these warnings on our own devices, but this isn't a simple problem.
This depends on whether consumers are made aware that a repair shop that "accidentally" wipes your phone might be trying to steal your bank account etc.
While education is difficult, the consumer has an advantage in this scenario because the event itself is impossible to miss and very disruptive and could lead them to start searching on the internet for advice.
A signed-by-google first-stage bootloader could display a message warning the user before handing off to an unsigned second-stage bootloader.
>The goal of Google's security architecture is that a dodgy phone seller/repair shop can't pre-root the phone
I'm curious how big a problem this was with refurbished second-hand laptops that often come with a pre-installed OS. At the very least, I have the freedom to reinstall Windows/Linux.
We need to find real solutions to the e-waste problem, it's unacceptable to be throwing away so many working phones simply because their manufacturer has decided to stop publishing OS updates after 2/3/4 years. I own a few older computers that are almost a decade old and run the latest version of Debian/Ubuntu. There is no reason phones should be treated any different.
GrapheneOS for instance uses this mechanism.
Unfortunately you can only register one key and you have to wipe the device to change it, but that's still fine for most use cases.
This allows you to modify your image, sign it, flash it and relock your bootloader. If you have the infrastructure in place, future updates could be rolled out as OTA updates for your custom rom.
You'll still fail hardware attestation and afaik whatever api that returns the boot status differentiates between a vendor signed and a custom signed image.
So not perfect, but you lose the bootloader unlocked nag.
[0] https://android.googlesource.com/platform/external/avb/+/pie...
malware
n.
[Common] Malicious software. Software intended to cause consequences the unwitting user would not choose; especially used of {virus} or {Trojan horse} software.What if a program installed by Google causes consequences the user would not choose. For example, "Google Play" or Chrome.
Google has been fined 4.125 billion euros because it forces computer manufacturers to install these programs by agreement. Imagine if Google had to pay computer owners (ad targets) not to modify/remove the spyware.
https://ec.europa.eu/competition/antitrust/cases/dec_docs/40...
https://curia.europa.eu/jcms/upload/docs/application/pdf/202...
https://theplatformlaw.blog/2022/10/03/general-court-largely...
https://www.clearygottlieb.com/news-and-insights/publication...
Also in India, Google was fined for these agreements.
https://pib.gov.in/PressReleseDetailm.aspx?PRID=1869748
https://www.thehindu.com/sci-tech/technology/indias-antitrus...
https://indianexpress.com/article/technology/tech-news-techn...
https://www.bqprime.com/business/google-loses-appeal-against...
Also in South Korea, Google was fined for these agreements.
https://www.reuters.com/technology/skorean-antitrust-agency-...
https://www.aljazeera.com/economy/2021/9/14/south-korea-fine...
Projects exist to remove the spyware, so-called "de-Googled" Android. Clearly some computer owners would not choose these programs.
These are "witting users" under the malware definition.
Proponents of Google's practices will sometimes argue that witting users, e.g., people commenting on HN of their dissatisfaction with Google's practices, are not relevant. Only the "majority" is relevant. They will frequently use the phrase "most people".
However, these are "unwitting users" according to the malware definition. They are not "choosing" Google Play or other Google spyware pre-installed on their computers. Rather, they are not presented with a choice.
"Millions of users trust Google." Well, considering Google pays other companies to pre-install their software on millions of computers and to set the default search to Google, that's not surprising. We are all forced to "trust" the things we cannot change. What other choice do we have.
> People buy Android phones with the expectation of using the play store to install applications lol
Maybe the people having decided that fine did not thought about that and the corresponding lol-factor.
Android should be have been split off from Google a long time ago.
How does using a device mean you trust the vendors?
That's wrong. It's like saying you trust your governor because you live in a particular U. S. state.
Who should win the argument and why.
(Note: Google is not the owner of the computer in this hypothetical.)
(Therefore all security should be based on the users preferences, as you can't protect a user 24/7)
If some change happens to benefit both groups, I assume it's a happy coincidence. I like to think that most Google employees try to implement win-win stuff like that, but it's pretty clear that they frequently worsen user security/privacy to improve their bottom line (nearly all their revenue comes from spying on people, and preventing them from effectively opting out).
In what scenario is user-auditable traceability of firmware images anything but a good thing?
I feel like this is part of Apple's cover story for excessive serialization 'we just want to make sure the parts in your phone are the parts we own'.