Live data from Hacker News

Firefox Lockbox

testpilot.firefox.com

91–100 of 156 posts

Re: Firefox Lockbox

#91

Here's some more in-depth information on the architecture of Lockbox: https://lockbox.firefox.com/architecture/

I am a fan of the quality of dev the Firefox team has, and am sure they have thought this through very deeply. For trust and security, it would be helpful if that were reflected in the specs as well as the final product.

I was the architect for a solution solving a similar problem some years ago, and then, as apparently now, the key derivation scheme appears to be a bit of a shell game. Was just reading this and trying to get a picture of how someone could reason about trusting it. This doc specifies four symmetric keys, where two are used for encryption, and two are used as salts.

The salts are derivations, which are hashes from data elements

So simply, we have:

FxA credentials: a string or blob to be determined.

f: some function tbd

k_pre: a bootstrapping scheme initialization key.

k_enc: keystore key.

k_salt: a user-bound diversification component

k_item: a key to encrypt an item within the encrypted container, or "lockbox"

Some definitions:

k_pre :=(f(FxA))

k_enc := (f(k_pre))

k_salt := KDF(k_pre, userid, infostring, length)

item := KDF(k_salt, k_enc)

Question is, what is FxA? Best thing could be is an HSM key with a user-bound diversification component, with some kind of secure provisioning protocol to get it into the device, but from what I can tell from the docs, there are still some exercises for the reader.

What wasn't clear on first reading from the architecture was the protocol they use between where the lockbox is stored, and where its components are used. When I did this, we used a variation of OCRA to prove possession of correct keys and their versions and release verifications for "items," (attributes).

The next useful documentation step would describe a sequence like:

A -> B: init msg

B -> A: challenge

A -> B: (userid, key version, HMAC(k_pre, challenge))

B -> B: derives k_pre(userid)+ HMAC, validates

B -> A: challenge'

A -> B: etc...

Not to be a pedant about this stuff, but to be able to reason about the things we can trust it for, there are some things we can't be handwavy about.

Re: Firefox Lockbox

#92
post #79

Earlier quoted context omitted.

I'd guess for that page the technical details get fed to marketing who boil it down to whatever they think will impress people with limited (if any) technical knowledge.

Exactly that, but shouldn't we expect better from Mozilla?

For Mozilla to be successful they have to appeal to the largest demographic possible. I'd only ask that Mozilla make additional technical information easy to find and well laid out.

This is LastPass's page:

https://lastpass.com/support.php?cmd=showfaq&id=1096

But that too you won't find when you use the app/extension normally.

Re: Firefox Lockbox

#93

I installed it and will compare it to Lastpass (which is pretty good IMO). HOWEVER, it saddens me to read on the front page: "using 256-bit encryption". I'd really expect the competent people at Mozilla to know that this statement means next to nothing. At the very minimum I want to know: 1) HOW is the key derived (say, "derived used PBKDF2 on the Firefox username + password") 2) WHERE is it encrypted (I assume "encr…

Firefox Lockbox architect here. Thank you for the feedback. Your comment is fair; we can, and will, do better on the details. The language we have today is the balance marketing, security reviewers, and engineering could reach for the masses to feel informed without being overwhelmed and confused.

As you found, Firefox Accounts derives the encryption key from your username and password on the client-side; the server is never aware of your password. That encryption key protects your data on your device using AES-256-GCM, and is stored in its security enclave behind Touch ID or Face ID wherever possible.

Re: Firefox Lockbox

#94

I'm disappointed. Instead of making password management modular, so any password manager capable of certain queries and operations (KeePass, LastPass, Bitwarden, KWallet/Gnome Keyring/libsecret, Microsoft Credentials Management API, Apple Keychain, etc) could become a storage backend with some programming effort... they're doing the exact opposite - they've created yet another password manager UI and yet another prop…

We either have different definitions of proprietary, or I'm misunderstanding something. The format appears to be open and documented. https://github.com/mozilla-lockbox/lockbox-datastore

Re: Firefox Lockbox

#95

I'm disappointed. Instead of making password management modular, so any password manager capable of certain queries and operations (KeePass, LastPass, Bitwarden, KWallet/Gnome Keyring/libsecret, Microsoft Credentials Management API, Apple Keychain, etc) could become a storage backend with some programming effort... they're doing the exact opposite - they've created yet another password manager UI and yet another prop…

Just wait until Google releases a more robust one for Chrome. All these other ones will be left in the dust...not looking forward to that day.

Re: Firefox Lockbox

#96

I'm disappointed. Instead of making password management modular, so any password manager capable of certain queries and operations (KeePass, LastPass, Bitwarden, KWallet/Gnome Keyring/libsecret, Microsoft Credentials Management API, Apple Keychain, etc) could become a storage backend with some programming effort... they're doing the exact opposite - they've created yet another password manager UI and yet another prop…

We either have different definitions of proprietary, or I'm misunderstanding something. The format appears to be open and documented. https://github.com/mozilla-lockbox/lockbox-datastore

Different definitions, I guess. I call it proprietary because it's:

- Unique to Mozilla products. Invented there (disregarding any existing solutions of the same problem) and no one else uses this.

- Based on Accounts and Sync I believe this is not a standard at all, just something that happens to be documented. With FxA&Sync there are a lot of undocumented subtleties and things sometimes change at whim without any warnings. If you make an independent implementation, you're bound to be always catching up, just like it is with any other proprietary protocols.

It's "open" because it's documented and the implementation is FLOSS, but it's also "proprietary" because effectively, Mozilla is in full and ultimate control of this stuff.

Re: Firefox Lockbox

#98

Earlier quoted context omitted.

We either have different definitions of proprietary, or I'm misunderstanding something. The format appears to be open and documented. https://github.com/mozilla-lockbox/lockbox-datastore

Different definitions, I guess. I call it proprietary because it's: - Unique to Mozilla products. Invented there (disregarding any existing solutions of the same problem) and no one else uses this. - Based on Accounts and Sync I believe this is not a standard at all, just something that happens to be documented. With FxA&Sync there are a lot of undocumented subtleties and things sometimes change at whim without any w…

They are on day one, sure, but if the file format is documented and clear then there's no reason why other managers couldn't interoperate. It's not as good as using an existing standard, but I'm not sure there is _an_ existing standard right now.

Re: Firefox Lockbox

#99
post #53
post #43

Earlier quoted context omitted.

I use Android, Linux (at home), and Mac (at work). I switched from KeePass because the UI was really bad, it seemed dead, and I really didn't want to move to KeePass 2 (with Mono on Linux). I switched to enpass, and it's been great. It has native Linux/Mac/Windows apps, a solid Android app (with fingerprint support), and there's no subscription. It's perfect for my needs.

Hm, enpass seems to be closed source which makes it unusable for me to store all my passwords basically because of the same as someone wrote in their forum: "The fact that Enpass isn't submitting all my passwords to enpass.io right now doesn't mean anything. I'm currently using iptables to restrict Enpass from doing so, but I don't know yet how to archive the same thing on my unrooted Android."

That's the problem I have with all of the commercial password managers: I simply don't trust them.

I find it incredibly telling that every big password manager has a mandatory, binding arbitration clause in their user agreements. This tells me that I am supposed to take their word on everything yet I have zero recourse to a neutral third party if the password manager company leaks (or intentionally hands over) all of my passwords.

That's not reasonable.

Post reply on HN