Commit Graph

755 Commits

Author SHA1 Message Date
Tatiana Bradley
361fd2d2b2 addressed reviewer comments 2019-08-02 22:44:44 +00:00
Tatiana Bradley
e859b12ad4 added successful pre-handshake injection attacks 2019-08-02 21:52:20 +00:00
Marten Seemann
db645f3336 Merge pull request #2021 from lucas-clemente/early-retransmit-for-crypto-packets
use early retransmit for crypto packets
2019-07-31 05:44:10 +07:00
Marten Seemann
3b35e8e8bc Merge pull request #2028 from lucas-clemente/ack-ranges
don't add ACK ranges for delayed packets, if history was already deleted
2019-07-31 05:29:12 +07:00
Marten Seemann
fb9fafe3b4 don't add ACK ranges for delayed packets, if history was already deleted 2019-07-30 11:19:16 +07:00
Marten Seemann
f4bb3c12be remove unneeded tracking variable in the received packet history
The value was not updated correctly when receiving reordered packets.
Since it's trivial to determine it from the list of received packets,
the easiest fix is to remove it.
2019-07-30 11:17:26 +07:00
Marten Seemann
a0b7e468ff optimize deleting of ACK ranges 2019-07-30 11:02:52 +07:00
Marten Seemann
91e57fe6c9 use early retransmit in every packet number space 2019-07-25 17:51:45 -04:00
Marten Seemann
f150ed4d4e rename sentPacketHandler functions to match the recovery draft 2019-07-25 17:10:47 -04:00
Marten Seemann
f7eb13fff1 disable the two-connection mode of the congestion controller 2019-07-25 16:34:44 -04:00
Marten Seemann
649f3b42b3 update the initial salt for draft-22 2019-07-16 18:08:36 +07:00
Marten Seemann
879467b3c5 Merge pull request #1997 from lucas-clemente/new-header-format
implement the new header format
2019-07-16 15:00:18 +07:00
Marten Seemann
dc33db1c18 implement the new header format 2019-07-09 13:04:40 +07:00
Marten Seemann
91961c8c6f add the Retire Prior To field to the NEW_CONNECTION_ID frame 2019-07-08 12:53:45 +07:00
Marten Seemann
c52a28cec1 explicitly trigger sending of session tickets 2019-07-05 20:53:25 +07:00
Marten Seemann
57c9b63ec9 Merge pull request #1991 from lucas-clemente/receive-encryption-level-on-key-change
receive the encryption level for key updates from qtls
2019-07-05 20:49:24 +07:00
Marten Seemann
6bf42558f3 receive the encryption level for key updates from qtls 2019-07-05 10:36:53 +07:00
Marten Seemann
2ab01f14cf fix flaky key drop test on AppVeyor 2019-07-02 13:21:51 +07:00
Marten Seemann
5929a83210 Merge pull request #1974 from lucas-clemente/drop-old-keys
drop keys 3 PTOs after a key update
2019-06-30 17:51:28 +07:00
Marten Seemann
5104c5d554 Merge pull request #1972 from lucas-clemente/frame-enc-level-check
check if a frame is allowed at the encryption level it was sent with
2019-06-30 17:36:33 +07:00
Marten Seemann
a3878d99c9 drop old keys 3 PTOs after a key update 2019-06-30 17:36:09 +07:00
Marten Seemann
a2a4a216de introduce an absolute key phase, use it for key updates 2019-06-30 17:36:09 +07:00
Marten Seemann
5a9c593463 rename the KeyPhase to KeyPhaseBit 2019-06-30 17:36:09 +07:00
Marten Seemann
7ba70cc8c2 Merge pull request #1973 from lucas-clemente/pto-rtt-stats
move calculation of the PTO to the RTTStats
2019-06-30 17:33:28 +07:00
Marten Seemann
7b9b711a77 fix timing side channel when reading headers with invalid reserved bits 2019-06-30 15:57:03 +07:00
Marten Seemann
66abcdfc5c move calculation of the PTO to the rttStats
The PTO value is needed at various places in the protocol. Calculating
it on the rttStats struct will allow us to pass around this struct.
2019-06-29 14:57:24 +07:00
Marten Seemann
4366eac105 don't include the exponential backoff in the PTO calculation
According to the spec, the PTO is defined without the backoff. The
backoff is applied when setting the PTO alarm.
2019-06-29 14:02:05 +07:00
Marten Seemann
b5764f22a2 save the max_ack_delay in the rttStats 2019-06-29 13:40:56 +07:00
Marten Seemann
299da56aef check if a frame is allowed at the encryption level it was sent with 2019-06-29 12:32:19 +07:00
Marten Seemann
4fe0f6752c fix typos in error messages when parsing Version Negotiation packets 2019-06-29 11:00:57 +07:00
Marten Seemann
0333f424bb Merge pull request #1959 from lucas-clemente/optimize-crypto-packet-sending
optimize sending of crypto packets
2019-06-29 00:03:12 +08:00
Marten Seemann
185082d5b0 Merge pull request #1962 from lucas-clemente/remove-hostname-from-addr
remove unused utils.HostnameFromAddr function
2019-06-29 00:02:08 +08:00
Marten Seemann
2f09e1774c remove unused utils.HostnameFromAddr function 2019-06-28 22:49:00 +07:00
Marten Seemann
0f16e08e14 introduce an environment variable to set the key update interval
QUIC_GO_KEY_UPDATE_INTERVAL determines the maximum number of packets
that are sent or received using a key. The default value should be safe
for use in production, but setting it to a lower value is useful for
integration and interop testing.
2019-06-27 10:54:58 +08:00
Marten Seemann
a09c045324 initiate a key update after sending / receiving 100000 packets 2019-06-27 10:54:54 +08:00
Marten Seemann
73d5d83a1d pass the largest acked 1-RTT packet number to the crypto setup 2019-06-27 07:42:19 +08:00
Marten Seemann
acba7d4e77 return ErrKeysDropped when sealer keys were already dropped 2019-06-25 13:38:11 +08:00
Marten Seemann
4e1f18e833 avoid unnecessary initializations of heaper protectors on key updates 2019-06-22 20:01:18 +08:00
Marten Seemann
ca8b7ddeef add logging to the updatable AEAD 2019-06-22 20:01:18 +08:00
Marten Seemann
55b88be009 check that the peer doesn't update keys too quickly 2019-06-22 20:01:18 +08:00
Marten Seemann
1ef54db63f check that the peer starts with key phase 0 after the handshake 2019-06-22 20:01:18 +08:00
Marten Seemann
c522bcc683 return a defined error when the AEAD cannot open a packet 2019-06-22 20:01:18 +08:00
Marten Seemann
1fb970cbac perform a key update when receiving a packet with a different key phase 2019-06-22 20:01:18 +08:00
Marten Seemann
e74ede678f move opening / sealing to the updatable AEAD 2019-06-22 20:01:18 +08:00
Marten Seemann
305e37cd15 move header encryption / decryption to the updatable AEAD 2019-06-22 20:01:18 +08:00
Marten Seemann
d3ca8db521 refactor initialization of AEADs 2019-06-22 20:01:18 +08:00
Marten Seemann
0dd5a0b91f introduce a separate AEAD for short header crypto 2019-06-22 20:01:18 +08:00
Marten Seemann
598628d05b use separate opener interfaces for long and short header packets 2019-06-22 20:01:18 +08:00
Marten Seemann
b2d3ef691e use separate sealer interfaces for long and short header packets 2019-06-22 20:01:18 +08:00
Marten Seemann
c503769bcd use separate functions per encryption level to get sealers 2019-06-22 20:01:18 +08:00