Hi Dmitry, Thanks for clarifying the motivation. I think it's shifted my stance a bit, to lean more towards classifying as "editorial" (in that the protocol in the RFC itself is not affected) with status of "Hold for document update".
-Ben On Tue, Jun 02, 2020 at 12:32:48AM +0000, Dmitry Khlebnikov wrote: > Naveen, > > My concern with that section is that it provides misleading information about > salting and that was the primary reason I was recommending to remove it. > However, knowing that we cannot amend what was already released as RFC > (Unfortunately, somehow I missed the discussion in 2014 when I could have > influenced that part), even if we make an errata saying that this part of the > RFC is not applicable and one should not even think about applying a salt to > a single unique hash the number of people confused and not being aware of the > errata is going to be significant. Still, I think it is the right thing to do > for those who are seeking for the information. > > What prompted me to write it up (the request for errata) was that in a week I > had several people approaching me in regard to this RFC and asking for advice > (I am a Senior Security Adviser for one of Australia's largest realestate > advertising platforms). This coupled with the overall misunderstanding of > salting (a techique against rainbow tables) and peppering (a technique to > protect hashes from bruteforcing once the dataset is exfiltrated) of hashes > pushed me to reach out. > > -- > Dmitry Khlebnikov > Senioe Security Adviser // REA Group > +61 428 425291 > > ________________________________________ > From: Naveen Agarwal <n...@ohauth.com> > Sent: Tuesday, 2 June 2020 03:47 > To: Rifaat Shekh-Yusef > Cc: Benjamin Kaduk; Dmitry Khlebnikov; n-sakim...@nri.co.jp; oauth; RFC > Errata System > Subject: Re: [OAUTH-WG] [Technical Errata Reported] RFC7636 (6179) > > [External Email] > > > As one of the author, writing from my persona email. > > I think at the time someone must have suggested that we should add a salt for > the code_verifier before hashing and this was added to explain that there is > no need to do that. As Dmitry agreed that salting is not really applicable in > this case and I agree that the section could have been written in a better > way. But I do think when people try to implement they may ask the same > question as they have been told again and again that you should salt your > hashes. So leaving it in place doesn't hurt (as it is not making any bad > recommendation but not doing a great job justifying why we didn't add > salting). > > Thanks > > Naveen > > On Sun, May 31, 2020 at 12:41 PM Rifaat Shekh-Yusef > <rifaat.s.i...@gmail.com<mailto:rifaat.s.i...@gmail.com>> wrote: > Nat, John, > > Do you guys have any thoughts on this errata? > > Regards, > Rifaat > > > On Sat, May 23, 2020 at 4:25 PM Benjamin Kaduk > <ka...@mit.edu<mailto:ka...@mit.edu>> wrote: > Authors, WG, any comments? > > Right now the likely dispositions seem to me to be Editorial/HFDU or > Rejected; the text is noting that salting is not used and attempting to > give an explanation of why that's the right choice. It's not clear that > the WG was in error to include some such discussion at the time of > publication, which is essentially what this errata report is claiming. > > Thanks, > > Ben > > On Mon, May 18, 2020 at 03:04:26AM -0700, RFC Errata System wrote: > > The following errata report has been submitted for RFC7636, > > "Proof Key for Code Exchange by OAuth Public Clients". > > > > -------------------------------------- > > You may review the report below and at: > > https://www.rfc-editor.org/errata/eid6179 > > > > -------------------------------------- > > Type: Technical > > Reported by: Dmitry Khlebnikov > > <dmitry.khlebni...@rea-group.com<mailto:dmitry.khlebni...@rea-group.com>> > > > > Section: 7.3 > > > > Original Text > > ------------- > > 7.3. Salting the code_challenge > > > > To reduce implementation complexity, salting is not used in the > > production of the code challenge, as the code verifier contains > > sufficient entropy to prevent brute-force attacks. Concatenating a > > publicly known value to a code verifier (containing 256 bits of > > entropy) and then hashing it with SHA256 to produce a code challenge > > would not increase the number of attempts necessary to brute force a > > valid value for code verifier. > > > > While the "S256" transformation is like hashing a password, there are > > important differences. Passwords tend to be relatively low-entropy > > words that can be hashed offline and the hash looked up in a > > dictionary. By concatenating a unique though public value to each > > password prior to hashing, the dictionary space that an attacker > > needs to search is greatly expanded. > > > > Modern graphics processors now allow attackers to calculate hashes in > > real time faster than they could be looked up from a disk.. This > > eliminates the value of the salt in increasing the complexity of a > > brute-force attack for even low-entropy passwords. > > > > Corrected Text > > -------------- > > > > > > Notes > > ----- > > The section misrepresents the information about "salting" and the whole idea > > of "salting" is not applicable to a standalone hash. I suggest to drop the > > entire > > section as irrelevant to the rest of the standard. > > > > For some reason the section implies that "salting" is protecting and > > increasing > > entropy of a single hash, which is not what "salting" is about and is not > > the > > reason for the technique. The section is also making a speculative > > assumptions > > about the low-entropy tendency in password hashes and makes an incorrect > > conclusion on the benefits of "salting" for a password hash. > > > > One could argue that the entropy and the complexity required to bruteforce > > a hash > > and a salted hash for the same password (where the same hashing algorithm is > > applied) are approximately the same in most cases (or just slightly more > > complex for the salted version if the producer of the hash used a > > non-standard > > routine in relation of mixing in the salt, e.g. instead of appending the > > salt > > it inserts in in the middle of the password to be hashed). In any case, > > that > > public data is already known to the attacker and it is just a matter of the > > configuration for the bruteforcing tool (such as JohnTheRipper) to > > incorporate > > the knowledge. > > > > Just as an illustration: consider an example password ('abc'), an example > > salt > > ('123'), and that the hash is generated using a concatinated version of > > these > > two (e.g. HASH('abc123')). Since the salt is included with the hash in > > plain > > text, the bruteforcer would just need to set their tool up with the > > "^.*123$" > > pattern making the salt essentially a string terminator which is not > > affecting > > the bruteforce effort in any way). > > > > More and more people I meet are confused about the problem area the > > "salting" > > technique was invented to address: it is to increase the entropy of a set of > > passwords, so the same password would not result in the same hash value, > > with > > the primary goal is to prevent attackers to be able to re-use pre-calculated > > hashes (e.g. rainbow hash tables) or, in the early stages of the attack, to > > make it impossible to quickly assess what hashes the attacker should focus > > on > > (e.g. when you have 1000 hashes and without salts you can easily spot that > > some hashes are the same, which means breaking these one would gain much > > more > > in comparison to unique hashes in the same set). > > > > This being said, I am suggesting to drop section 7.3 completely as > > irrelevant, > > since what we currently have is very confusing and seeds unnecessary and > > wrong ideas that "salting" can improve the security of a single hash by > > itself. > > > > Instructions: > > ------------- > > This erratum is currently posted as "Reported". If necessary, please > > use "Reply All" to discuss whether it should be verified or > > rejected. When a decision is reached, the verifying party > > can log in to change the status and edit the report, if necessary. > > > > -------------------------------------- > > RFC7636 (draft-ietf-oauth-spop-15) > > -------------------------------------- > > Title : Proof Key for Code Exchange by OAuth Public Clients > > Publication Date : September 2015 > > Author(s) : N. Sakimura, Ed., J. Bradley, N. Agarwal > > Category : PROPOSED STANDARD > > Source : Web Authorization Protocol > > Area : Security > > Stream : IETF > > Verifying Party : IESG > _______________________________________________ > OAuth mailing list > OAuth@ietf.org<mailto:OAuth@ietf.org> > https://www.ietf.org/mailman/listinfo/oauth _______________________________________________ OAuth mailing list OAuth@ietf.org https://www.ietf.org/mailman/listinfo/oauth