Passkey Privacy Issues

33 pointsposted 5 hours ago
by akyuu

15 Comments

jeroenhd

4 hours ago

> My question is, why does Apple have all of this personal, private information, stored in plain text?

iCloud backups are usually encrypted (by default with a key Apple possesses). It's possible Apple stores this data in a database, though; as far as I can tell, it's a list of devices authenticated to your Apple account. The name and model of the device are probably there so you can easily manage them from a list of stored passkeys somewhere, as the only identifiers that need to be stored are the key ID and the public key which you probably wouldn't recognise if you tried to check your security settings.

> Is that how passkeys always work?

No.

Bluetooth passkeys generally work via CTAP2 with the key information encrypted on-device (though this does leak your BT MAC address to your immediate surroundings and leaves a pairing record on your computer, obviously), USB passkeys work by storing a key and signatures on the USB device itself, and every software-defined passkey implementation I've seen uses end-to-end-encryption for exchanging keys.

> Does every website where you login with a passkey get your device model, name, UDID, and last 4 characters of your device serial number?

No. Most of this information seems to be collected specifically for Apple's iCloud passkey sync mechanism. Passkey authentication should export a unique key ID per website/session, a public key signature for verifying authentication, and optionally a vendor ID for the "only permit certain types of passkeys" restrictions (though those should not be used for almost anything).

> I have no idea. I don't know how passkeys are implemented. But it's something we ought to know, something that passkey vendors ought to tell us. The privacy implications of widely distributing that information are disturbing. Downloading my data from Apple has brought more questions than answers.

If you hook a device up to a cloud account, you should expect the identifiers for that device to come with it. This is done at the very least to enable their theft protection system.

lapcat

4 hours ago

> iCloud backups are usually encrypted (by default with a key Apple possesses).

This is not an iCloud backup. It's "Apple ID account and device information". Keep in mind that Apple is playing a dual role in this case, and you appear to be conflating the two.

Of course Apple runs iCloud Keychain, which syncs client data including the private keys. But that's supposed to be all end-to-end encrypted, including the metadata. It would be quite a disturbing breach of privacy if Apple knew the websites associated with your passkeys, wouldn't it? "Keychain items are encrypted using two different AES-256-GCM keys: a table key (metadata) and a per-row key (secret key). Keychain metadata (all attributes other than kSecValue) is encrypted with the metadata key" https://support.apple.com/guide/security/keychain-data-prote...

But this is not any old passkey: it's a passkey for apple.com. Apple is also playing the role of server to which the client authenticates. That's entirely separate from iCloud Keychain client data. You would think that in its role as server, Apple would have only the same client information as any other passkey server, e.g., Github.

lxgr

an hour ago

As I've said in another comment, I don't actually see that anywhere in Apple's documentation. What they say in [1] is:

> Keychain items are transferred from device to device, traveling through Apple servers, but are encrypted end-to-end so that Apple and other devices can’t read their contents.

"Contents" is a bit vague (I wish they'd be more precise too), but it doesn't scream "data and metadata to me" – they might well mean that usernames, public keys, domains etc. are accessible to them, and only passwords and private keys are end-to-end encrypted. That would explain your observations.

[1] https://support.apple.com/en-us/guide/security/sec1c89c6f3b/...

user

2 hours ago

[deleted]

lxgr

an hour ago

> If you hook a device up to a cloud account, you should expect the identifiers for that device to come with it.

I think nobody would object to Apple storing metadata like "devices UUID1, UUID2, UUID3 have access to user ID1's keychain", but Apple storing the domain and credential ID of Passkeys (if that's what TFA actually found [1]) would go a bit beyond that in my view.

[1] There's a chance that these are passkeys for Apple, not stored with Apple. Every relying party needs to store the public key and credentialID server-side in order to facilitate future authentications. We'll see if that is the case in a bit – I requested a copy of my Apple ID data, and I have non-apple.com passkeys on my account, so if I can see the domain for these in plaintext, Apple is indeed storing that metadata unencrypted.

lxgr

4 hours ago

Apple only offers the cloud-synced variant of passkeys anymore (they used to support device-local ones that additionally supported device attestation, but these were deprecated in favor of the iCloud variant).

It would probably not be infeasible to end-to-end encrypt the metadata, in any case (the private key already is) – not sure why Apple isn’t already doing that.

lapcat

3 hours ago

> It would probably not be infeasible to end-to-end encrypt the metadata, in any case (the private key already is) – not sure why Apple isn’t already doing that.

They are. "Keychain items are encrypted using two different AES-256-GCM keys: a table key (metadata) and a per-row key (secret key). Keychain metadata (all attributes other than kSecValue) is encrypted with the metadata key" https://support.apple.com/guide/security/keychain-data-prote...

What you download from privacy.apple.com is not your iCloud Keychain data. Apple can't decrypt that.

lxgr

2 hours ago

Well, that contradicts TFA, which states that

> Back to the "Passkeys Information.csv" file. It has two rows for the two passkeys (I don't know why there are two rather than one) and eleven columns. The columns are Created Date and Last Used Date, as I've already noted, as well as Credential ID, Device IP Address, Device Name, Device Serial Number, Device UDID, Domain, Hardware Model, Key ID, and Public Key.

That looks a lot like (at least some) metadata to me.

Also, the reference you're linking to seems to be talking about device-side data/encryption. It doesn't seem to say anything about what's stored server-side, and using which encryption keys.

lapcat

2 hours ago

> Well, that contradicts TFA

I'm the article author.

> That looks a lot like (at least some) metadata to me.

Yes, it's metadata.

> Also, the reference you're linking to seems to be talking about device-side data/encryption. It doesn't seem to say anything about what's stored server-side, and using which encryption keys.

iCloud Keychain is end-to-end encrypted. But it's also irrelevant to the linked article. See this comment: https://news.ycombinator.com/item?id=41636398

lxgr

an hour ago

I'm aware, yet the statements "iCloud Keychaing is fully end-to-end encrypted" and "I was able to download some unencrypted metadata" contradict each other.

I think there's actually no contradiction – you are quoting/linking a statement about device-side encryption, but your article is making one about what Apple store on their servers.

lapcat

an hour ago

No, you're just confused.

lxgr

an hour ago

I really am! I guess you're not interested in a good-faith attempt at clearing up that confusion, though.

lapcat

22 minutes ago

I've tried, but you refuse to believe me!

iCloud Keychain is end-to-end encrypted. By design, Apple can't decrypt anything, including the metadata. This has been discussed in many places, both by Apple and by others, not just in the one document I linked.

The information downloaded in your privacy archive is not your iCloud Keychain data. It's the data related to your apple.com passkey that you use to login to Apple sites and services.

jmclnx

4 hours ago

>"What happens on your iPhone stays on your iPhone" appears to be a blatant lie

To be fair, that is true for all Smart Phones. You should never use your Smart Phone for anything you want to keep private. It is just marketing speak IMO, privacy means it is private from your family and friends, not corporations.

Using OS's like GNU/Linux or a BSD, you have a chance of keeping things private because you control the encryption. On phones, someone else owns encryption.

user

4 hours ago

[deleted]