Unlocking a car with a phone — how the standard works, why Android is deliberately outside the trust path, and the failure case that must always work.
Advanced6 minDigital key · Security · UWB
Walking up to a car with a phone in your pocket and having the door unlock is a
genuinely good feature. It is also a security problem with unusually severe
consequences, and the architecture is shaped almost entirely by that.
Android owns the management experience, which is substantial:
Showing which keys exist and which devices hold them
Starting the pairing flow for a new device
Sharing a key with a family member, with an expiry
Revoking a key when a phone is lost or a car is sold
Showing recent access history
Management, not authorisationkotlin
// A vendor interface to the security module. Note what is absent:// there is no unlock() here, because Android does not unlock anything.interface IDigitalKeyManager { List<KeyRecord> listKeys() PairingSession beginPairing(DeviceType type) void revokeKey(String keyId) void shareKey(String keyId, ShareConstraints constraints)}
Sharing is where the interesting requirements are#
Sharing a key sounds simple and is not:
Time-bounded. A key lent to a valet should expire in two hours.
Capability-bounded. A key that can unlock and drive is different from one that
can only unlock the boot for a delivery.
Revocable while offline. This is the hard one. If the vehicle has no network
connection for two weeks and a shared key is revoked, the revocation must still
take effect. That usually means keys carry an expiry the vehicle can evaluate
locally, rather than relying on the vehicle asking a server.