For Rails 5, could you potentially make SHA-256 the default for new apps and opt-in for existing apps?
On Wed, Jan 21, 2015 at 5:52 PM, <jsmall...@gmail.com> wrote: > Thanks for this response. > > I guess that's a question of how big a jump Rails 5 is meant to be. I > certainly wouldn't propose this on a minor jump, but I'd figured if you > were rolling from Rails 4 to Rails 5 you could probably deal with sign > outs. I understand the reasons it isn't hugely pressing, but again, if you > were to "upgrade over time", I'd like to consider a major version jump as > the time to do it. Alternatively, there's room to simply look at the length > of a presented hash to check for backward compatibility hashes. > > On a related note, why is the CookieStore passed through Base64 encode > twice? Look at a small piece of parsing code I wrote: > > str, sign = unescaped_cookie.split(/--/) > # Hex encoded HMAC > puts 'HMAC as per cookie validator: ' + sign > > str2 = str.unpack('m').join > cipher, iv = str2.split(/--/) > > cipher = c.unpack('m').join > iv = iv.unpack('m').join > > What this says is that the Cookiestore is basically formatted as: > B64(B64(iv)--B64(cipher))--hex(HMAC) > > I get the feeling that could be much more efficient, both in performance, > and the size of the generated cookies, by skipping that outer encode. > > On Wednesday, January 21, 2015 at 6:36:51 AM UTC+11, Michael Koziarski > wrote: > >> Switching to another hashing function for Rails 5 would definitely be >> possible. The compatibility concerns are twofold: >> >> * Old hashes are no longer valid, so you sign everyone out the day you do >> that deploy >> * Various old rubies on old OSes ship with old OpenSSL which didn't >> support it. >> >> That second concern is well and truly gone these days so there's no >> reason to worry about it. However the first concern remains. You'd have >> to offer a transitional system where it accepted sha1 hashes and returned >> sha256 ones. You'd also need to think carefully about the defaults because >> if you accept the sha1 hashes forever you're never actually closing the >> theoretical issues. It's not particularly difficult just requires time and >> effort. >> >> Finally, the issues you're raising around sha1 don't necessarily apply >> when used in an HMAC as it is here. We should definitely upgrade over >> time, but it's not as pressing as the TLS certs case. >> >> On Tue Jan 20 2015 at 7:12:03 PM <jsma...@gmail.com> wrote: >> >>> Hi, >>> >>> I note that Cookiestore signs its data using SHA-1. >>> >>> I have found this issue regarding this: https://github.com/rails/ >>> rails/pull/11677 >>> >>> There it was noted that documentation was updated from SHA512, which >>> would appear to have been considered at one time, to using SHA1 "for >>> compatibility". SHA-1 is considered a deprecated cryptographic hash. The >>> deprecation of support for SHA-1 certificates by Google in the Chrome >>> browser is an example of proactive deprecation of obsolete algorithms that >>> is generally well accepted by the community. The long term lifespan of a >>> Cookiestore session cookie, coupled with the sensitivity of the session >>> data often stored within it should be considered to amplify the threat. >>> >>> I was wondering what "compatibility" issues would be present in changing >>> the default hash to SHA-256 for an upcoming rails 5. It's been supported in >>> OpenSSL for a very long time, which is in turn used to generate this hash. >>> The documentation update was over a year ago, and that only documented an >>> earlier configuration change which I don't believe to reflect current >>> security practice. >>> >>> Moreover, that particular PR discusses this as not being configurable. >>> I've spent some time trying to get a gem to override it without much >>> success. >>> >>> Any assistance on towards making this a default, or on how it could be >>> turned into a gem would be appreciated. >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Ruby on Rails: Core" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to rubyonrails-co...@googlegroups.com. >>> To post to this group, send email to rubyonra...@googlegroups.com. >>> Visit this group at http://groups.google.com/group/rubyonrails-core. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Core" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to rubyonrails-core+unsubscr...@googlegroups.com. > To post to this group, send email to rubyonrails-core@googlegroups.com. > Visit this group at http://groups.google.com/group/rubyonrails-core. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-core+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-core@googlegroups.com. Visit this group at http://groups.google.com/group/rubyonrails-core. For more options, visit https://groups.google.com/d/optout.