I applied a passphrase to my seed and then generated a child seed. I then turned off the device and turned it back on.
After reapplying the same passphrase I could see that the child seed was still visible in key manager.
How is this possible? Passphrase use is supposed to be ephemeral right? How can the device remember a child seed derived from a passphrase wallet, and even remember the name?
It must be stored somewhere in the device. Does this mean an attacker can see I used a passphrase wallet at some point?
This is expected. Your passphrase and the child seed are not stored. Passport only saves the child key’s name, type and derivation number. When you enter the same passphrase again, Passport recreates the same wallet and uses those saved details to derive and display the same child seed again.
For an attacker to see this metadata they’d need to break into the device, or encrypted backup, at which point your seed words are fully exposed anyway. Not a real world attack in by any means.
I’m not concerned from a security perspective, but from a privacy perspective. A passphrase is great for hidden wallets, this seem to defeat the purpose to some extend.
If somebody has my unlocked device, what exactly can they see? Not the passphrase or child key of course, but that “a” passphrase unlocks a child key at this derivation with this name?
How does the wallet know to recreate this child key with this specific passphrase? Does it store a hash of the passphrase and check if it matches every time after applying the passphrase?
What I’m getting at is I need to know if I’m forced to unlock my device whether there is proof that I’ve used a passphrase wallet.
Someone with access to Passport after you unlock it into the default wallet cannot see that you previously used a passphrase wallet or created child seeds from one.
Passport stores the child key’s name, type and derivation number alongside the master fingerprint of the wallet that created it. It does not store the passphrase or child seed.
When a passphrase is entered, Passport derives the corresponding wallet and calculates its fingerprint. If that fingerprint matches saved child-key metadata, those child keys appear in Key Manager and can be re-derived.
Therefore, entering the correct passphrase reveals the corresponding child keys, as expected. Entering an arbitrary or incorrect passphrase derives a different wallet and reveals nothing. An attacker would already need to know the exact passphrase before Passport displayed any evidence associated with it.
If you are forced to unlock Passport into the default wallet, the interface provides no indication that a passphrase wallet or its child seeds exist.
If Passport stores this information (child key’s name, type and derivation number alongside the master fingerprint of the wallet that created it") and it does not match the master fingerprint of the base seed, it is evidence that at some point a passphrase was entered though.
I know it’s not visible in the UI and that it’s only a concern in really extreme scenarios, but the evidence is there.
People have to decide for themselves whether this is an issue or not.