Linux TCP堆栈中的初始序列号生成

sjs*_*sam 5 linux tcp linux-kernel

在LINUX tcp / ip协议中生成初始序列号(ISN)的过程是什么。我知道LINUX内核2.4至2.6中生成ISN的过程,在将隐蔽通道嵌入TCP / IP中的第7和8页中进行了介绍 。我在以后的内核中搜索了类似的过程,但令我沮丧的是我找不到任何过程。我了解,出于与安全性相关的明显原因,许多细节可能无法使用。当我正在验证在更高版本的Linux内核中实现类似隐写术方案(如链接中所述)的可能性时,我非常需要一些信息。任何帮助表示赞赏。

TOC*_*TOC 4

在这里阅读我的答案: 最有效的方法来操作 TCP 标头中的 ISN 数字

该算法用于最新的内核TCP Stack ( 3.5)。

编辑:请参见下图以查看所有相关的内核版本在此输入图像描述

EDIT2:请参阅旧版本函数的内核源代码secure_tcp_sequence_number

内核2.4.22

内核2.6.30

内核2.6.39

内核3.0

内核3.1:(MD5已取代半MD4)

  • @sjsam:我认为新算法(RFC 6528 - 2012 年 2 月)是从内核 3.1 开始使用的。在此之前我认为使用了其他算法(RFC1948)。 (2认同)