Skip to content
Esta página se muestra en inglés.La traducción al español está preparada pero aún no se ha escrito. Nada aquí está traducido automáticamente, porque una afirmación de seguridad mal traducida es una afirmación falsa.Leer en inglés

GUARDTALKOS · HARDENING CATALOGUE · ALPHA

What's stripped, what's enforced, what's still being proven.

No adjectives. The components removed, the mechanisms enforced, and the state of each — live, alpha, planned or pending.

Every entry below names a mechanism, carries a state, and states a limit. The state is read from content/status.json. That file is the only place a state changes, and every status label on the site reads it.

Four states appear here.

  • live — the component is in the shipped image today.
  • alpha — it is present, and not yet proven on device.
  • planned — a target, not a feature.
  • pending — the state is not published until it is confirmed against the build tree.

The whole build is alpha. A live row says a component is in the image. It does not say the image has a validation record behind it. On-device validation is PASS HOLD, and the dated version of this page is the status board.

Attack-surface removal.

live

GuardTalkOS removes delivery channels instead of hardening them. A component that is not in the image cannot be reached by an app, re-enabled by a setting, or misconfigured by a user.

The rule behind this section is permanent, and it reads better as identity than as a feature. GuardTalkOS will never ship a browser, a store, a sideload path or direct internet access. These are not roadmap items held back for a later release, and they will never appear in a planned row on this page.

There are no Google Play services in the build, and no re-implementation of them. microG is not shipped, and shipping it later would break the same rule. Nothing on the device calls a Google endpoint. The client code that would place the call is absent.

Stating a hard negative as identity is a habit borrowed from grapheneos.org, which publishes its own absolute rule about Google services. The reasoning is upstream's rather than ours, and it applies here for the same reason it applies there.

Removes / enforces

  • No browser application in the image.
  • No app store, and no sideload path.
  • No Google Play services, and no re-implementation of them, including microG.
  • Bluetooth, NFC and location paths absent.
  • USB debugging absent.
  • Wi-Fi present, and restricted to one peer — see the next section.

No Google services

live

Google Play services and any re-implementation of Google services (including microG) are absent from the build.

Limit · Absence of Google services is not anonymity — the remaining surfaces are covered in the threat model.

Limit

Removal shrinks the attack surface. It does not empty it. The surfaces that remain are real: the Wi-Fi stack, the Messenger, the launcher, and every parser those reach.

An adversary with a zero-day against a surface that remains is inside the threat model, not excluded by this page. The absence of Google services reduces what the device talks to. It is not anonymity, and nothing here offers it as one.

Air-gapped by design.

live

The device is configured to reach one network peer: the GuardTalk Gateway. No cellular data path is offered, so there is no second route to harden, monitor or misconfigure.

Wi-Fi here is not a general network interface. It is the link to one appliance the user owns and holds. Nothing on the device is configured to reach an internet host directly. No push transport runs, because no service holds a path to one.

The operating system does not inspect what crosses that link. The Gateway does. The OS contribution is narrower, and worth stating exactly: there is no second way out.

Without the Gateway, GuardTalkOS is a stripped ROM. That sentence is on the home page for the same reason it is here. The headline protections are properties of the system, not of the image.

Removes / enforces

  • No cellular data path is offered.
  • Wi-Fi reaches the Gateway; no other network peer is configured.
  • No push transport, because nothing on the device holds a direct internet path.
  • Traffic inspection, blocking and the kill switch belong to the Gateway.

Limit

Wi-Fi is a radio, and a radio runs firmware. That firmware is not built by this project, is not covered by verified boot, and sits outside what the operating system can attest. A Wi-Fi chipset implant is out of scope, and it is listed as out of scope in the threat model.

The modem hardware in the device also remains. Offering no data path through it is not the same as removing it. What the baseband does below the OS is not something the OS observes.

Base and partitions.

pending

GuardTalkOS is a hardened Android build produced from an AOSP tree.

The build produces four images from the GuardTalkOS OUT tree: system, system_ext, product and vendor. Those four are what this project compiles and ships for a release.

Everything else in the chain comes from elsewhere. bootloader, radio, boot, vendor_boot and dtbo are factory images, and the next section keeps them separate rather than folding both sources into one claim.

The build targets, the OUT tree and the signing step are documented on Build it yourself. A partition named on this site should be traceable to a build target there. A name without one is a defect worth reporting.

Removes / enforces

  • Built here: system, system_ext, product, vendor — from the GuardTalkOS OUT tree.
  • Not built here: bootloader, radio, boot, vendor_boot, dtbo — factory images, kept separate.
  • No stock system image is carried forward into a release.
  • Every partition named on this site traces to a build target on Build it yourself.
  • Kernel configuration and SELinux policy inside these images: pending, and not described until confirmed.

Limit

A partition name is not a hardening claim. This section says which images GuardTalkOS produces. It does not say what is inside them.

The kernel configuration and the SELinux policy that ship in those images are pending on this site — see SELinux and kernel below. The state on this row is read from content/status.json, not written here. No partition on the list is exempt from the release being alpha either way.

Base and partitionsWhere this protection ends// confirm §19.2 — partition set per device

Boot chain.

pending

A GuardTalkOS device boots images from two sources. An honest description keeps them apart, because they are built by different parties, signed by different parties, and fixed by different parties.

PartitionBuilt bySigned by
systemGuardTalkOSGuardTalkOS release signing — // confirm §19.2
system_extGuardTalkOSGuardTalkOS release signing — // confirm §19.2
productGuardTalkOSGuardTalkOS release signing — // confirm §19.2
vendorGuardTalkOSGuardTalkOS release signing — // confirm §19.2
bootloaderthe device manufacturerfactory
radiothe device manufacturerfactory
bootthe device manufacturerfactory
vendor_bootthe device manufacturerfactory
dtbothe device manufacturerfactory

GuardTalkOS pairs its four images with the factory images for one device at one firmware level. The pairing is per device, and it is recorded per release rather than assumed across a family. The device side of that pairing is on Target devices.

Because boot is a factory image in the current pairing, the kernel on the device is the factory kernel for that firmware level. This catalogue therefore makes no kernel-hardening claim on any of its nine sections.

// confirm §19.2which partitions a release signs, and with which key

Removes / enforces

  • GuardTalkOS-built and signed: system, system_ext, product, vendor.
  • Factory-signed, unchanged: bootloader, radio, boot, vendor_boot, dtbo.
  • The two sets are paired per device, at one firmware level, per release.
  • The kernel is the factory kernel for that firmware level, so no kernel-hardening claim is made.
  • Which partitions a release signs, and with which key: // confirm §19.2.

Limit

Verified boot covers the images it is given, and a boot chain is only as honest as the weakest part of its description. The factory-signed partitions are attested by the manufacturer's key, not by the key you hold.

A compromise below the bootloader is out of scope for this OS. It stays out of scope however much is removed above it. The state on this row is read from content/status.json. The pairing and the enforcement state per device are not confirmed against the build tree yet.

Boot chainWhere this protection ends// confirm §19.2 — pairing and enforcement state per device

Verified boot.

alpha

The trust anchor is a key you generate and hold. avb_pkmd.bin is the public-key metadata written to the device, and it is what the bootloader checks an image against before it boots.

The arrangement matters because of whose key it is. A vendor key makes the vendor the party you have to trust. A user key moves that position to you, and it is why this project can say it holds no key that unlocks your device.

The enforcement state per release is not published here yet.

// confirm §19.2verified-boot enforcement state per release

Until that is confirmed against the build tree, this section describes the design and not the result. The workflow — generating the key, writing it, re-locking, and reading the key hash at boot — is taught on Verify before you trust.

Removes / enforces

  • Trust anchor: a key the user generates, not a key the vendor keeps.
  • avb_pkmd.bin written to the device as the accepted key.
  • Design intent: an image signed with another key does not boot.
  • Enforcement state per release: // confirm §19.2.

Limit

Verified boot attests the OS image. It does not attest the bootloader, the radio or the baseband firmware beneath it, which run first and carry the manufacturer's signatures.

It proves which image booted. It does not prove that the image is free of bugs. A signed alpha is still an alpha, which is what the state on this row is there to say.

Install your own trust anchorWhere this protection ends// confirm §19.2 — enforcement state per release

Release hygiene.

live

Every release publishes a SHA256SUMS file and the fingerprint of the key that signed it. Both live on clearnet, where they can be read, quoted and compared without Tor. The images themselves move over Tor once that target ships — it is planned, and the row below says so.

The split is deliberate. The values a reader needs in order to check an artefact are small, public and worth mirroring widely. The artefact is large, and moving it over Tor keeps its retrieval off a clearnet path and off a vendor content network.

Two of the rows below are targets rather than features. Reproducible builds and Tor-only distribution are planned, and this page prints them as planned until the release process actually performs them.

The published values are listed on Releases. The step-by-step check, including what a correct result looks like, is on Verify before you trust.

Removes / enforces

  • SHA256SUMS published per release.
  • Signing-key fingerprint published with each release; the value is // confirm §19.7.
  • Reproducible builds — a target, not a feature.
  • Tor-only distribution — a target, not a feature.

Reproducible builds

planned

A reproducible-build target so a third party can rebuild the image and reach the same hashes.

Limit · Not shipped. Until it is, a hash proves the artefact matches ours — not that ours matches its source.

Tor-only distribution

planned

Images and OTA packages are to be distributed from the releases onion only; clearnet carries the hashes and fingerprints.

Limit · Tor hides network location from most observers, not from an observer correlating both ends.

The releases onionWhere this ends// confirm §19.7 — onion address and fingerprint

Limit

A hash proves the file you fetched is the file we published. It does not prove that what we published matches the source it claims to be built from. Only a reproducible build proves that, and that target is planned.

A signature proves a release came from the holder of the signing key. It does not prove the holder is honest, which is one reason the source and the build path are published as well.

SELinux and kernel.

pending

This section carries no description, and the row is shown rather than dropped.

The SELinux enforcement state and the kernel configuration of a release are not published here. Neither has been confirmed against the build tree. Writing "SELinux enforcing" here without that confirmation would be precisely the unattributed sentence this catalogue exists to avoid.

Two facts bound the gap. boot is a factory image in the current pairing, so the kernel is the factory kernel for that firmware level. Anything past that — policy deltas, configuration, hardening options — is unstated rather than implied.

The row stays visible so that its blankness reads as an open question and not as a claim. When §19.2 resolves, the state changes in content/status.json first, and this page follows it.

// confirm §19.2SELinux enforcement state and kernel configuration per release

Removes / enforces

  • Nothing is asserted in this section.
  • SELinux enforcement state: // confirm §19.2.
  • Kernel configuration: // confirm §19.2.
  • boot is a factory image — see Boot chain.

Limit

Nothing here is claimed, and nothing here is denied. An absent description is not evidence that the configuration underneath is weak, and it is not evidence that it is strong.

If you are auditing this build, treat this row as the place to ask a question rather than the place to read an answer. The status board carries the same row with a date on it.

The same row, dated, on the status boardWhere this protection ends// confirm §19.2 — enforcement state and kernel config

Brand system on-device.

live

A GuardTalkOS device ships a boot animation, wallpapers, launcher icons and app icons as one palette-locked asset pack. It is a real, minor, shipped difference, and it is listed last for both of those reasons.

It appears in the catalogue because the catalogue is meant to be complete about what differs from a plain build. It does not appear because it protects anything. A device running GuardTalkOS looks like GuardTalkOS, which is convenient and nothing more.

It is not an integrity signal. Anyone holding the asset pack can reproduce the same boot animation over another image. The checks that answer "is this the build I installed" are the verified-boot key hash and the release hashes, not the artwork.

Screens that are not yet real appear nowhere on this site. Where an on-device screen is still pending on-device PASS, the site publishes a diagram instead of a mock screenshot.

Removes / enforces

  • Boot animation, wallpapers, launcher and app icons ship as one pack.
  • The device palette is locked to the brand system.
  • No security property is claimed for any of it.

Limit

Cosmetic. The asset pack changes nothing in the threat model, and a reader auditing this page can skip it without missing a protection.

It is documented because leaving out a shipped difference would make the catalogue less complete, and because listing it honestly costs nothing.

What this page does not list.

This catalogue lists differentiators. It is a delta, not an inventory, and reading it as an inventory would misrepresent this project and its upstream at the same time.

It leaves out the baseline security features GuardTalkOS inherits from AOSP. The application sandbox, the permission model, storage encryption and SELinux itself are all inherited. That work belongs to AOSP and is documented there. Presenting inherited work as authored is the one dishonesty this page is built to avoid.

It also does not list upstream hardening that GuardTalkOS has not verified on device. Where a mitigation exists upstream and we have not confirmed it in a GuardTalkOS build, it stays off this page. An absence here is a statement about our evidence, not about the feature.

grapheneos.org keeps its own feature list to what it documents, and states plainly which historical features it no longer documents. This page follows the same restraint, and that restraint is why the catalogue is shorter than a reseller's.

This section carries no state, because it makes no claim to hold one. Everything left off this page is simply not described until it is confirmed. An absence here is not a claim that a protection is missing from the device.

How to read the gap

Read this page as the delta, and read the threat model for the boundary. Neither page is a complete description of an Android security model, and neither one tries to be.

If a protection matters to your decision and it is not on this page, ask for it rather than assume it. An answer of "not confirmed yet" is one this project is willing to give in writing.

Every entry on this page has a boundary.

The catalogue names mechanisms and states. The threat model says who they hold against, where they stop, and what the Gateway has to do instead.