Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed #8594 -- use a more modern default cipher suite list by default #8611

Merged
merged 1 commit into from Nov 21, 2015

Conversation

@alex
Copy link
Contributor

alex commented Nov 20, 2015

Fixes #8594.

Review on Reviewable

@highfive
Copy link

highfive commented Nov 20, 2015

Thanks for the pull request, and welcome! The Servo team is excited to review your changes, and you should hear from @SimonSapin (or someone else) soon.

@frewsxcv
Copy link
Member

frewsxcv commented Nov 20, 2015

@bors-servo
Copy link
Contributor

bors-servo commented Nov 20, 2015

Trying commit 7742a02 with merge a8a3e84...

bors-servo added a commit that referenced this pull request Nov 20, 2015
Fixed #8594 -- use a more modern default cipher suite list by default

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8611)
<!-- Reviewable:end -->
@bors-servo
Copy link
Contributor

bors-servo commented Nov 20, 2015

💔 Test failed - linux-rel

@alex
Copy link
Contributor Author

alex commented Nov 20, 2015

test failures look unrelated (@frewsxcv tells me they're known flaky?)

@pcwalton
Copy link
Contributor

pcwalton commented Nov 20, 2015

Can you add some references to the comment by any chance? It'd be great if people who update this in the future (as well as reviewers) could have a link to some background reading as to best practices, since this is a security-critical configuration decision.

@alex
Copy link
Contributor Author

alex commented Nov 20, 2015

@pcwalton Added! Thanks.

@pcwalton
Copy link
Contributor

pcwalton commented Nov 20, 2015

Thanks, that was helpful! The string doesn't ! out all insecure ciphers (e.g. export-grade crypto). Is OpenSSL guaranteed to never use them even though they're not explicitly blacklisted?

@alex
Copy link
Contributor Author

alex commented Nov 20, 2015

I believe so, yes. I use this cipher string (or ones very similar) in many libraries and TLS servers and have never seen it include things like export grade crypto. (If you go to howsmyssl.com before this change you'll see that without this, it does include various weak ciphers, and does not with)

@pcwalton
Copy link
Contributor

pcwalton commented Nov 20, 2015

OK, looks good from my end then once try comes back green. (We should get a security review from someone who's a professional as opposed to a dabbler like me before we ship any of this. But this is clearly an improvement and looks good based on my knowledge.)

@pcwalton
Copy link
Contributor

pcwalton commented Nov 20, 2015

@bors-servo
Copy link
Contributor

bors-servo commented Nov 20, 2015

Trying commit a29843f with merge 6b2ecf7...

bors-servo added a commit that referenced this pull request Nov 20, 2015
Fixed #8594 -- use a more modern default cipher suite list by default

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8611)
<!-- Reviewable:end -->
@pcwalton
Copy link
Contributor

pcwalton commented Nov 20, 2015

Oh, why the leading underscore in _DEFAULT_CIPHERS?

@alex
Copy link
Contributor Author

alex commented Nov 20, 2015

@pcwalton Oh, it's a carryover from my Python days. Idiomatic rust would be to remove the _?

@bors-servo
Copy link
Contributor

bors-servo commented Nov 20, 2015

💔 Test failed - linux-rel

@pcwalton
Copy link
Contributor

pcwalton commented Nov 20, 2015

Yeah, we try not to use leading underscores unless we're silencing an unused parameter compiler warning.

@Ms2ger
Copy link
Contributor

Ms2ger commented Nov 20, 2015

@jvehent
Copy link

jvehent commented Nov 20, 2015

I would say r-, but a weak one.

This is a secure ciphersuite that can be improved a bit. The list of ciphers it expands to is too long, mostly due to keywords like HIGH and RSA that expand to a lot of ciphers. For servo, I would recommend explicitly listing the ciphers that we want, as opposed to using keywords.

ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:
ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:
ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA:
ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:
DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:
ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:
AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA

Which expands to:

0xC0,0x2B  -  ECDHE-ECDSA-AES128-GCM-SHA256  TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=AESGCM(128)  Mac=AEAD
0xC0,0x2F  -  ECDHE-RSA-AES128-GCM-SHA256    TLSv1.2  Kx=ECDH  Au=RSA    Enc=AESGCM(128)  Mac=AEAD
0xC0,0x2C  -  ECDHE-ECDSA-AES256-GCM-SHA384  TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=AESGCM(256)  Mac=AEAD
0xC0,0x30  -  ECDHE-RSA-AES256-GCM-SHA384    TLSv1.2  Kx=ECDH  Au=RSA    Enc=AESGCM(256)  Mac=AEAD
0x00,0x9E  -  DHE-RSA-AES128-GCM-SHA256      TLSv1.2  Kx=DH    Au=RSA    Enc=AESGCM(128)  Mac=AEAD
0xC0,0x23  -  ECDHE-ECDSA-AES128-SHA256      TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=AES(128)     Mac=SHA256
0xC0,0x27  -  ECDHE-RSA-AES128-SHA256        TLSv1.2  Kx=ECDH  Au=RSA    Enc=AES(128)     Mac=SHA256
0xC0,0x24  -  ECDHE-ECDSA-AES256-SHA384      TLSv1.2  Kx=ECDH  Au=ECDSA  Enc=AES(256)     Mac=SHA384
0xC0,0x28  -  ECDHE-RSA-AES256-SHA384        TLSv1.2  Kx=ECDH  Au=RSA    Enc=AES(256)     Mac=SHA384
0xC0,0x09  -  ECDHE-ECDSA-AES128-SHA         SSLv3    Kx=ECDH  Au=ECDSA  Enc=AES(128)     Mac=SHA1
0xC0,0x13  -  ECDHE-RSA-AES128-SHA           SSLv3    Kx=ECDH  Au=RSA    Enc=AES(128)     Mac=SHA1
0xC0,0x0A  -  ECDHE-ECDSA-AES256-SHA         SSLv3    Kx=ECDH  Au=ECDSA  Enc=AES(256)     Mac=SHA1
0xC0,0x14  -  ECDHE-RSA-AES256-SHA           SSLv3    Kx=ECDH  Au=RSA    Enc=AES(256)     Mac=SHA1
0x00,0x67  -  DHE-RSA-AES128-SHA256          TLSv1.2  Kx=DH    Au=RSA    Enc=AES(128)     Mac=SHA256
0x00,0x33  -  DHE-RSA-AES128-SHA             SSLv3    Kx=DH    Au=RSA    Enc=AES(128)     Mac=SHA1
0x00,0x6B  -  DHE-RSA-AES256-SHA256          TLSv1.2  Kx=DH    Au=RSA    Enc=AES(256)     Mac=SHA256
0x00,0x39  -  DHE-RSA-AES256-SHA             SSLv3    Kx=DH    Au=RSA    Enc=AES(256)     Mac=SHA1
0xC0,0x12  -  ECDHE-RSA-DES-CBC3-SHA         SSLv3    Kx=ECDH  Au=RSA    Enc=3DES(168)    Mac=SHA1
0xC0,0x08  -  ECDHE-ECDSA-DES-CBC3-SHA       SSLv3    Kx=ECDH  Au=ECDSA  Enc=3DES(168)    Mac=SHA1
0x00,0x9C  -  AES128-GCM-SHA256              TLSv1.2  Kx=RSA   Au=RSA    Enc=AESGCM(128)  Mac=AEAD
0x00,0x9D  -  AES256-GCM-SHA384              TLSv1.2  Kx=RSA   Au=RSA    Enc=AESGCM(256)  Mac=AEAD
0x00,0x3C  -  AES128-SHA256                  TLSv1.2  Kx=RSA   Au=RSA    Enc=AES(128)     Mac=SHA256
0x00,0x3D  -  AES256-SHA256                  TLSv1.2  Kx=RSA   Au=RSA    Enc=AES(256)     Mac=SHA256
0x00,0x2F  -  AES128-SHA                     SSLv3    Kx=RSA   Au=RSA    Enc=AES(128)     Mac=SHA1
0x00,0x35  -  AES256-SHA                     SSLv3    Kx=RSA   Au=RSA    Enc=AES(256)     Mac=SHA1

This ciphersuite is closer to the prioritization rules described on the wiki, and is also mostly identical to what Firefox currently uses.

@alex
Copy link
Contributor Author

alex commented Nov 20, 2015

Looks great to me, I'll update this PR to use that set later today.

@jvehent
Copy link

jvehent commented Nov 20, 2015

Looks good to me. r+

@frewsxcv
Copy link
Member

frewsxcv commented Nov 20, 2015

@bors-servo r=jvehent

@eefriedman
Copy link
Contributor

eefriedman commented Nov 21, 2015

@bors-servo
Copy link
Contributor

bors-servo commented Nov 21, 2015

Testing commit 008d996 with merge 822a19c...

bors-servo added a commit that referenced this pull request Nov 21, 2015
Fixed #8594 -- use a more modern default cipher suite list by default

Fixes #8594.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8611)
<!-- Reviewable:end -->
@bors-servo
Copy link
Contributor

bors-servo commented Nov 21, 2015

💔 Test failed - linux-rel

@jdm
Copy link
Member

jdm commented Nov 21, 2015

@bors-servo
Copy link
Contributor

bors-servo commented Nov 21, 2015

Testing commit 008d996 with merge 5ac1b4d...

bors-servo added a commit that referenced this pull request Nov 21, 2015
Fixed #8594 -- use a more modern default cipher suite list by default

Fixes #8594.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8611)
<!-- Reviewable:end -->
@bors-servo
Copy link
Contributor

bors-servo commented Nov 21, 2015

💔 Test failed - linux-rel

@jdm
Copy link
Member

jdm commented Nov 21, 2015

@bors-servo
Copy link
Contributor

bors-servo commented Nov 21, 2015

Previous build results for android, gonk, linux-dev, mac-dev-ref-unit, mac-rel-css, mac-rel-wpt are reusable. Rebuilding only linux-rel...

@bors-servo
Copy link
Contributor

bors-servo commented Nov 21, 2015

💔 Test failed - linux-rel

@jdm
Copy link
Member

jdm commented Nov 21, 2015

@bors-servo
Copy link
Contributor

bors-servo commented Nov 21, 2015

Testing commit 008d996 with merge ec3437f...

bors-servo added a commit that referenced this pull request Nov 21, 2015
Fixed #8594 -- use a more modern default cipher suite list by default

Fixes #8594.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8611)
<!-- Reviewable:end -->
@bors-servo
Copy link
Contributor

bors-servo commented Nov 21, 2015

@bors-servo bors-servo merged commit 008d996 into servo:master Nov 21, 2015
2 checks passed
2 checks passed
continuous-integration/travis-ci/pr The Travis CI build passed
Details
homu Test successful
Details
@alex alex deleted the alex:default-ciphers branch Nov 21, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

10 participants
You can’t perform that action at this time.