- 论坛徽章:
- 0
|
原帖由 Au_Hank 于 2007-9-15 09:31 发表
这里面不仅仅是算法可逆反的因素,还有一个因素是数组的值,这个值不是算出来的,是随机生成的,只能靠猜测...
你好像没明白我的意思,详细说来是这样的:
你的new_secure_tcp_syn_cookie函数用数学语言表示相当于:
isn=new_secure_tcp_syn_cookie(new_syncookie_secret,saddr, daddr, sport, dport, sseq)
因为saddr,daddr,sport,dport,sseq对于客户端和服务器端都是已知的,也就是说相当于常量,所以上述函数可以简化为:
isn=f(new_syncookie_secret)
正是因为可逆,所以该函数对应的反函数很容易求得,这里用 f' 表示,也就是:
new_syncookie_secret=f'(isn)
或罗嗦一些是
new_syncookie_secret=new_secure_tcp_syn_cookie'(isn,saddr, daddr, sport, dport, sseq)
现在客户端发送一个不伪造ip的包并得到了你的应答(含有isn),这样就相当于由客户端提供saddr, daddr, sport, dport, sseq参数、服务器提供new_syncookie_secret参数,带入new_secure_tcp_syn_cookie函数进行计算,并得到了结果isn
这样客户端将它得到的 saddr, daddr, sport, dport, sseq 和 isn 带入
new_secure_tcp_syn_cookie'(isn,saddr, daddr, sport, dport, sseq)
即可计算出new_syncookie_secret
不知道我说的是否足够清楚了?
所以关键是你的new_secure_tcp_syn_cookie函数一定不能可逆。 |
|