-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Thank you for your work on password hash cracking, and your participation on /r/crypto. Your work informed the design of the Global Password Prehash Protocol. I acknowledge you in the design document in this repo: https://github.com/auth-global/self-documenting-cryptography
Now, I've not dug into bscrypt, but it is almost assuredly already supports self-documenting features. How well it supports those, I don't know. Thus I can always wrap bscrypt in PHKDF and use bscrypt as the main key-stretching component and secondary self-documenting component of a hybrid protocol.
In a vague analogy to loudspeaker design, I consider PHKDF to be a "horn-loaded" self-documenting design: from the point of view of the G3P's primary, classical model of password security, there are a few parameters that are consumed exactly once near the beginning of the protocol, and then passed through a "horn" that is identified by the domain tags and other self-documenting parameters to "amplify" the entropy of the secrets contained within the initial signal. Bcrypt (and PBKDF2 in the classical mode of operation) are certainly not a "horn loaded" password hash designs in this sense.
Alternatively, this analogy sort of works from the G3P's secondary, novel model of password security. After password hashes have been intercepted by an evesdropper, the initial signal are the self-documenting tags, and PHKDF provides a "horn" to amplify that plaintext signal to arbitrary observers.
With this shift in perspective, the G3P's self-documenting deployment of bcrypt is somewhat "horn loaded" in this sense, in that bcrypt provides some level of repetition of each tag within each round. However there's almost certainly opportunities to optimize this in the case of bcrypt, if one is willing to tear apart that protocol and rebuild it much like PHKDF is a reconstructed version of PBKDF2. Thus it doesn't make sense to consider bcrypt a "natively" self-documenting password hash function.
But... I'm not sure that particular exercise is particularly worthwhile. I'd much rather start with bscrypt as a starting point for such an endeavor. If I were doing that, I'd also be considering using ascon as the underlying primitive.
Anyway, this is just to share my thoughts on password hashing with you. Maybe there's an opportunity to talk further about this last possibility for a natively self-documenting bscrypt. In any case, thank you so much for your very valuable insights.