在LINUX tcp / ip协议中生成初始序列号(ISN)的过程是什么? 我知道LINUX内核2.4到2.6中的ISN生成过程,这些内核在将隐蔽信道embedded到TCP / IP中的第7页和第8页中进行了描述。 我在后来的内核中search过类似的程序,但是我却无法find任何内容。 我明白,由于与安全有关的明显原因,可能无法提供许多细节。 正如我正在validation在后来的Linux内核中实现类似隐写scheme(如链接中所述)的可能性,我非常需要一些信息。 任何帮助表示赞赏。
/ dev / random权限被拒绝
在Linux中劫持应用程序和networking之间的通信
如何从用户空间与Linux内核模块进行通信,而不用乱抛垃圾/ dev与新节点?
阅读我的答案在这里: 最有效的方式来操纵TCP头中的ISN号码
该算法用于最新的内核TCP堆栈( 3.5 )。
编辑 :看到下面的图片看到所有有关的内核版本
编辑2 :查看旧版本的函数secure_tcp_sequence_number的内核的来源:
内核2.4.22
内核2.6.30
内核2.6.39
内核3.0
内核3.1 :(MD5已经取代了半个MD4)
在仔细阅读RFC6528和RFC1948之后,我得出结论,RFC1948中规定了生成初始序列号(ISN)的算法:
ISN = M + F(LocalIP,LocalPort,RemoteIP,RemotePort,Secretkey)
没有改变。 相反,Bellovin SM在RFC1948中提出的算法被正式指定,并被Bellovin SM和Gont一起写入RFC6528中的标准跟踪(按照RFC2119 )。 由于现在过时的RFC1948不能用于任何文件,RFC6528已经取代了它。
但正如在我原来的问题的答案中指出的那样,MD5已经从内核3.1中取代了半MD4作为散列函数。 RFC6528完全证明了这一点,因为它提供了改变伪随机函数F()的灵活性。 (请看更多的细节链接)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。