Chromium Code Reviews
[email protected] (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Issue 13282004: Land Recent QUIC Changes (Closed)

Created:
7 years, 8 months ago by ramant (doing other things)
Modified:
7 years, 8 months ago
Reviewers:
rtenneti, agl, wtc, Ryan Hamilton
CC:
chromium-reviews, cbentzel+watch_chromium.org
Visibility:
Public.

Description

Add support for P-256 key exchange in crypto handshake. Merge internal change: 44173744 Add default return to avoid crashing when we get an unknown error code from the peer. Merge internal change: 44160057 Fix incorrect DCHECK while serializing version negotiation packet. Merge internal change: 44156166 Reorder the addends in GetPacketHeaderSize to match the order of the public header fields. Merge internal change: 44153020 Changing retransmission and retransmittable data boolean flags to enums. Merge internal change: 44071662 Remove methods from QuicTime for converting to/from microseconds and milliseconds since the epoch for QuicTime is unspecified. (It wraps TimeTicks in Chromium). Merge internal change: 44069965 Change InterArrival feedback message to traffic in delta since the "start" of the connection instead of a delta since the epoch. One step closer to being able to remove QuicTime::To/FromMicroseconds since those methods don't "do the right thing". Merge internal change: 44037996 Changing kForce into an enum. Merge internal change: 44024887 Cleanups from landing P-256 key exchange in Chromium. Merge internal change: 44023801 Fix for std::vector in QuicPacketPublicHeader's memory corruption by memset. Merge internal change: 44022862 Merging cleanup changes from chromium. Merge internal change: 44009665 Plug in the new decrypter and encrypter after the new keys have been derived. This is a first cut, as some details on changing the encryption keys still need to be worked out. Our interim solution is permissive trial decryption, which allows the peer to encrypt with the wrong key, either using the new key too early or using the null key for too long. The latter will leak confidential information, so we err on the side of using the new key too early. WARNING: the interim solution protects against eavesdroppers, but is vulberable to active attackers. Merge internal change: 44006658 Start tracking server and client stream resets and export them via varz. Merge internal change: 43971847 Pull out RstStreamFrame error code from QuicErrorCode so that they don't appear in the tracked ConnectionClose error map. This will also help in tracking RstStream error codes separately. Merge internal change: 43968620 Adding Client/Server logging to all LOGS/DLOGs Not bothering with VLOGs/DVLOGS unless it's requested. Merge internal change: 43948596 crypto: step 5. This change implements source-address tokens at the server and has the client echo them. Source address tokens are opaque (to the client) bytestrings that prove ownership of an IP address. In order to prevent amplification attacks, the server demands that the client have a valid source address token for the IP address that it's claiming to come from and that the token is reasonably recent. Since we already have it implemented, this code uses AES-GCM to encrypt and authenticate the tokens with a fixed, dummy secret (for now). In the future, the secret will be derived from the primary, private key in the same way that SessionTicket keys used to be. The QuicEncrypter/Decrypter code was written to be quite specific to the task of encrypting and decrypting packets and, as part of this, it exposed only 64 bits of the AEAD nonce. Since all GFEs will share the same token secret, and they'll all create tokens with random nonces, that runs an unacceptably high risk of an attacker obtaining two tokens with the same nonce. Thus this change also reworks the QuicEncrypter/Decrypter so that the full nonce is exposed and thus we can use 96-bit nonces. That's still not completely wonderful but, at 10Mpps an attacker would still take a year to obtain a pair of nonces, so it's good enough for a while at least. Merge internal change: 43893806 [email protected] Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=191569

Patch Set 1 #

Patch Set 2 : Bug fixes to Crypto step 5 patch #

Patch Set 3 : Compile fixes - use enum instead of bool #

Patch Set 4 : update nss r191424 - Use PK11_Decrypt and PK11_Encrypt - merge wtc changes #

Patch Set 5 : Disable end_to_end quic_tests when AES (NSS) is not supported #

Patch Set 6 : sync'ing with trunk to get wtc's PK11_Encrypy and PK11_Decrypt #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1664 lines, -738 lines) Patch
M crypto/hkdf.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M net/net.gyp View 1 2 3 1 chunk +1 line, -0 lines 0 comments Download
M net/quic/congestion_control/fix_rate_sender.h View 1 2 1 chunk +5 lines, -4 lines 0 comments Download
M net/quic/congestion_control/fix_rate_sender.cc View 1 2 2 chunks +3 lines, -3 lines 0 comments Download
M net/quic/congestion_control/fix_rate_test.cc View 1 2 4 chunks +28 lines, -18 lines 0 comments Download
M net/quic/congestion_control/quic_congestion_manager.h View 2 chunks +3 lines, -3 lines 0 comments Download
M net/quic/congestion_control/quic_congestion_manager.cc View 2 chunks +5 lines, -6 lines 0 comments Download
M net/quic/congestion_control/send_algorithm_interface.h View 1 2 2 chunks +7 lines, -4 lines 0 comments Download
M net/quic/congestion_control/tcp_cubic_sender.h View 1 2 1 chunk +5 lines, -4 lines 0 comments Download
M net/quic/congestion_control/tcp_cubic_sender.cc View 1 2 2 chunks +5 lines, -4 lines 0 comments Download
M net/quic/congestion_control/tcp_cubic_sender_test.cc View 1 2 5 chunks +23 lines, -12 lines 0 comments Download
M net/quic/crypto/aes_128_gcm_decrypter.h View 1 chunk +8 lines, -12 lines 0 comments Download
M net/quic/crypto/aes_128_gcm_decrypter_nss.cc View 1 2 3 4 5 3 chunks +47 lines, -36 lines 0 comments Download
M net/quic/crypto/aes_128_gcm_decrypter_openssl.cc View 1 1 chunk +63 lines, -49 lines 0 comments Download
M net/quic/crypto/aes_128_gcm_decrypter_test.cc View 3 chunks +18 lines, -7 lines 0 comments Download
M net/quic/crypto/aes_128_gcm_encrypter.h View 2 chunks +7 lines, -12 lines 0 comments Download
M net/quic/crypto/aes_128_gcm_encrypter_nss.cc View 1 2 3 4 5 3 chunks +59 lines, -47 lines 0 comments Download
M net/quic/crypto/aes_128_gcm_encrypter_openssl.cc View 1 chunk +62 lines, -50 lines 0 comments Download
M net/quic/crypto/aes_128_gcm_encrypter_test.cc View 3 chunks +19 lines, -7 lines 0 comments Download
M net/quic/crypto/crypto_handshake.h View 6 chunks +83 lines, -5 lines 0 comments Download
M net/quic/crypto/crypto_handshake.cc View 13 chunks +210 lines, -17 lines 0 comments Download
M net/quic/crypto/crypto_handshake_test.cc View 1 chunk +72 lines, -0 lines 0 comments Download
M net/quic/crypto/null_decrypter.h View 1 chunk +8 lines, -3 lines 0 comments Download
M net/quic/crypto/null_decrypter.cc View 1 chunk +31 lines, -3 lines 0 comments Download
M net/quic/crypto/null_decrypter_test.cc View 3 chunks +12 lines, -9 lines 0 comments Download
M net/quic/crypto/null_encrypter.h View 1 chunk +7 lines, -3 lines 0 comments Download
M net/quic/crypto/null_encrypter.cc View 1 chunk +18 lines, -9 lines 0 comments Download
M net/quic/crypto/null_encrypter_test.cc View 1 chunk +2 lines, -2 lines 0 comments Download
M net/quic/crypto/p256_key_exchange_nss.cc View 12 chunks +37 lines, -33 lines 0 comments Download
M net/quic/crypto/p256_key_exchange_openssl.cc View 7 chunks +27 lines, -24 lines 0 comments Download
M net/quic/crypto/p256_key_exchange_test.cc View 2 chunks +4 lines, -2 lines 0 comments Download
M net/quic/crypto/quic_decrypter.h View 1 chunk +16 lines, -4 lines 0 comments Download
M net/quic/crypto/quic_encrypter.h View 1 chunk +13 lines, -3 lines 0 comments Download
M net/quic/quic_client_session_test.cc View 5 chunks +19 lines, -2 lines 0 comments Download
M net/quic/quic_connection.h View 9 chunks +39 lines, -13 lines 0 comments Download
M net/quic/quic_connection.cc View 37 chunks +84 lines, -71 lines 0 comments Download
M net/quic/quic_connection_helper_test.cc View 1 2 8 chunks +24 lines, -18 lines 0 comments Download
M net/quic/quic_connection_logger.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_connection_test.cc View 29 chunks +64 lines, -49 lines 0 comments Download
M net/quic/quic_crypto_client_stream.h View 1 chunk +2 lines, -0 lines 0 comments Download
M net/quic/quic_crypto_client_stream.cc View 4 chunks +18 lines, -0 lines 0 comments Download
M net/quic/quic_crypto_client_stream_test.cc View 4 chunks +26 lines, -0 lines 0 comments Download
M net/quic/quic_crypto_server_stream.cc View 3 chunks +19 lines, -3 lines 0 comments Download
M net/quic/quic_crypto_server_stream_test.cc View 5 chunks +24 lines, -1 line 0 comments Download
M net/quic/quic_framer.h View 3 chunks +14 lines, -1 line 0 comments Download
M net/quic/quic_framer.cc View 11 chunks +61 lines, -14 lines 0 comments Download
M net/quic/quic_framer_test.cc View 17 chunks +49 lines, -29 lines 0 comments Download
M net/quic/quic_http_stream.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_http_stream_test.cc View 2 chunks +2 lines, -1 line 0 comments Download
M net/quic/quic_network_transaction_unittest.cc View 1 2 3 chunks +3 lines, -1 line 0 comments Download
M net/quic/quic_packet_creator.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_packet_creator_test.cc View 2 chunks +3 lines, -0 lines 0 comments Download
M net/quic/quic_packet_generator.h View 1 chunk +2 lines, -2 lines 0 comments Download
M net/quic/quic_packet_generator.cc View 2 chunks +4 lines, -4 lines 0 comments Download
M net/quic/quic_packet_generator_test.cc View 3 chunks +6 lines, -4 lines 0 comments Download
M net/quic/quic_protocol.h View 1 2 6 chunks +34 lines, -16 lines 0 comments Download
M net/quic/quic_protocol.cc View 4 chunks +29 lines, -8 lines 0 comments Download
M net/quic/quic_reliable_client_stream.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M net/quic/quic_reliable_client_stream_test.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_session.h View 1 chunk +1 line, -2 lines 0 comments Download
M net/quic/quic_session.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M net/quic/quic_session_test.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_stream_factory_test.cc View 3 chunks +3 lines, -1 line 0 comments Download
M net/quic/quic_stream_sequencer_test.cc View 1 chunk +1 line, -1 line 0 comments Download
M net/quic/quic_time.h View 3 chunks +11 lines, -12 lines 0 comments Download
M net/quic/quic_time.cc View 1 chunk +2 lines, -24 lines 0 comments Download
M net/quic/quic_time_test.cc View 3 chunks +14 lines, -17 lines 0 comments Download
M net/quic/quic_utils.h View 1 chunk +4 lines, -1 line 0 comments Download
M net/quic/quic_utils.cc View 2 chunks +21 lines, -4 lines 0 comments Download
A net/quic/quic_utils_test.cc View 1 chunk +25 lines, -0 lines 0 comments Download
M net/quic/reliable_quic_stream.h View 1 2 3 4 chunks +13 lines, -4 lines 0 comments Download
M net/quic/reliable_quic_stream.cc View 3 chunks +11 lines, -6 lines 0 comments Download
M net/quic/test_tools/crypto_test_utils.cc View 1 chunk +8 lines, -8 lines 0 comments Download
M net/quic/test_tools/quic_test_utils.h View 1 2 3 chunks +9 lines, -7 lines 0 comments Download
M net/quic/test_tools/quic_test_utils.cc View 2 chunks +2 lines, -1 line 0 comments Download
M net/quic/test_tools/simple_quic_framer.cc View 1 chunk +1 line, -0 lines 0 comments Download
M net/tools/quic/end_to_end_test.cc View 1 2 3 4 16 chunks +86 lines, -1 line 0 comments Download
M net/tools/quic/quic_time_wait_list_manager.cc View 1 2 1 chunk +1 line, -0 lines 0 comments Download
M net/tools/quic/test_tools/quic_test_client.h View 1 2 3 4 2 chunks +2 lines, -2 lines 0 comments Download
M net/tools/quic/test_tools/quic_test_client.cc View 1 2 3 4 3 chunks +4 lines, -4 lines 0 comments Download

Messages

Total messages: 20 (0 generated)
ramant (doing other things)
7 years, 8 months ago (2013-03-29 22:06:55 UTC) #1
ramant (doing other things)
The Final branch with all the LGTM changes. Please take a look. thanks raman
7 years, 8 months ago (2013-03-29 22:08:16 UTC) #2
Ryan Hamilton
Please change the title to "Land Recent QUIC Changes", and strip all of the QUIC ...
7 years, 8 months ago (2013-03-29 22:10:27 UTC) #3
ramant (doing other things)
On 2013/03/29 22:10:27, Ryan Hamilton wrote: > Please change the title to "Land Recent QUIC ...
7 years, 8 months ago (2013-03-29 22:13:54 UTC) #4
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/[email protected]/13282004/1
7 years, 8 months ago (2013-03-29 22:15:02 UTC) #5
commit-bot: I haz the power
Presubmit check for 13282004-1 failed and returned exit status 1. INFO:root:Found 71 file(s). Running presubmit ...
7 years, 8 months ago (2013-03-29 22:15:23 UTC) #6
ramant (doing other things)
Hi wtc@ or agl@, Could you approve crypto/ changes (porting agl's changes for hkdf.cc).
7 years, 8 months ago (2013-03-29 22:17:46 UTC) #7
wtc
Patch set 1 LGTM. I only reviewed crypto/hkdf.cc.
7 years, 8 months ago (2013-03-29 23:44:38 UTC) #8
ramant (doing other things)
Hi Wan-Teh, Could you please take a look at patch set#1.
7 years, 8 months ago (2013-03-30 00:16:57 UTC) #9
ramant (doing other things)
On 2013/03/30 00:16:57, ramant wrote: > Hi Wan-Teh, > Could you please take a look ...
7 years, 8 months ago (2013-03-30 00:20:08 UTC) #10
wtc
The NSS files in patch set 2 LGTM.
7 years, 8 months ago (2013-03-30 00:24:51 UTC) #11
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/[email protected]/13282004/7001
7 years, 8 months ago (2013-03-30 00:28:21 UTC) #12
commit-bot: I haz the power
Sorry for I got bad news for ya. Compile failed with a clobber build on ...
7 years, 8 months ago (2013-03-30 00:45:08 UTC) #13
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/[email protected]/13282004/25001
7 years, 8 months ago (2013-03-30 17:32:50 UTC) #14
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/[email protected]/13282004/45001
7 years, 8 months ago (2013-03-30 18:42:52 UTC) #15
rtenneti
Did a gclient sync and merged alyssar's CL for quic_server. and also used wtc's PK11_Decrypt ...
7 years, 8 months ago (2013-03-30 18:45:47 UTC) #16
commit-bot: I haz the power
Sorry for I got bad news for ya. Compile failed with a clobber build on ...
7 years, 8 months ago (2013-03-30 19:00:24 UTC) #17
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/[email protected]/13282004/53006
7 years, 8 months ago (2013-03-30 20:57:20 UTC) #18
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/[email protected]/13282004/53006
7 years, 8 months ago (2013-03-30 21:14:30 UTC) #19
commit-bot: I haz the power
7 years, 8 months ago (2013-03-31 02:49:14 UTC) #20
Message was sent while issue was closed.
Change committed as 191569

Powered by Google App Engine
This is Rietveld 408576698