mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
net: Compute protocol sequence numbers and fragment IDs using MD5.
Computers have become a lot faster since we compromised on the partial MD4 hash which we use currently for performance reasons. MD5 is a much safer choice, and is inline with both RFC1948 and other ISS generators (OpenBSD, Solaris, etc.) Furthermore, only having 24-bits of the sequence number be truly unpredictable is a very serious limitation. So the periodic regeneration and 8-bit counter have been removed. We compute and use a full 32-bit sequence number. For ipv6, DCCP was found to use a 32-bit truncated initial sequence number (it needs 43-bits) and that is fixed here as well. Reported-by: Dan Kaminsky <[email protected]> Tested-by: Willy Tarreau <[email protected]> Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
bc0b96b54a
commit
6e5714eaf7
14 changed files with 223 additions and 361 deletions
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include <net/inet_connection_sock.h>
|
||||
#include <net/inet_hashtables.h>
|
||||
#include <net/secure_seq.h>
|
||||
#include <net/ip.h>
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
#include <linux/net.h>
|
||||
#include <net/ip.h>
|
||||
#include <net/inetpeer.h>
|
||||
#include <net/secure_seq.h>
|
||||
|
||||
/*
|
||||
* Theory of operations.
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include <linux/ip.h>
|
||||
|
||||
#include <linux/netfilter.h>
|
||||
#include <net/secure_seq.h>
|
||||
#include <net/netfilter/nf_nat.h>
|
||||
#include <net/netfilter/nf_nat_core.h>
|
||||
#include <net/netfilter/nf_nat_rule.h>
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@
|
|||
#include <linux/sysctl.h>
|
||||
#endif
|
||||
#include <net/atmclip.h>
|
||||
#include <net/secure_seq.h>
|
||||
|
||||
#define RT_FL_TOS(oldflp4) \
|
||||
((u32)(oldflp4->flowi4_tos & (IPTOS_RT_MASK | RTO_ONLINK)))
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@
|
|||
#include <net/timewait_sock.h>
|
||||
#include <net/xfrm.h>
|
||||
#include <net/netdma.h>
|
||||
#include <net/secure_seq.h>
|
||||
|
||||
#include <linux/inet.h>
|
||||
#include <linux/ipv6.h>
|
||||
|
|
|
|||
Loading…
Reference in a new issue