Spoofing 集合
需要知道一点是,如果我们有足够的能力能够同时可以发出232个包,每个包由不同的ISN值,那么,猜中ISN的可能性是100%。但是,无论从带宽或计算机的速度来说都是不实际的。但是,我们仍然可以发大量的包去增加命中的几率,我们把这个发出的攻击包的集合称为Spoofing集合。通常,从计算机速度和网络数据上传速率两方面来考虑,含5000个包的Spoofing的集合对众多的网络用户是没有问题的,5000-60000个包的Spoofing集合对宽带网的用户也是不成问题的,大于60000个包的Spoofing集合则超出一般攻击者的能力。网络的速度和计算机性能的不断增加会提高那种使用穷尽攻击方法猜测ISN的成功率。从攻击者的立场,当然希望能够通过定制一个尽可能小的Spoofing集合,而命中的几率又尽可能高。我们假定我们攻击前先收集50000个包作为ISN值的采样,然后,我们把这些ISN用作对将来的ISN的值猜测的依据。
一种称为“delay coordinates”的分析方法
在动态系统和非线性系统中,经常使用一种叫做“delay coordinates”的分析法,这种方法使我们可以通过对以前的数据的采样分析来推想以后的数据。
我们试图以建立一个三维空间(x,y,z)来观察ISN值(seq[t])的变化,其中t取0,1,2, ……
方程组(E1)
现在,对采样了的50000个ISN序列seq[t] 按照上面的三个方程式来构建空间模型A。这样,就可以通过A的图像特征来分析这个PNRG生成的ISN值的规律。A呈现的空间模型的3D特性越强,它的可分析性就越好。
接着,我们根据这个模型,去分析下一个ISN值seq[t],为此,我们用一个集合K(5000个)去猜测seq[t]。
如果我们知道seq[t-1],要求seq[t],那么,可以通过在这个三维空间中找出一个有良好特性的节点P(x,y,z),将P.x+seq[t-1],我们就可以得到seq[t]。现在,我们将注意力放到怎样在这个三维空间中选择一些点来构成Spoofing集合,也就是怎样通过seq[t-1],seq[t-2],sea[t-3]来推知seq[t]。
由于seq[t-1],seq[t-2],seq[t-3]都可以很容易地在远程主机上探测到,于是,P.y和P.z可以通过以下的公式求出
而对于P.x=seq[t]-seq[t-1], 由于seq[t-1]已知,所以,我们可以把它当作是空间的一条直线。如果,在对以前的ISN的采样,通过上面提到的构成的空间模型A呈现某种很强的特征,我们就可以大胆地假设,seq[t]在直线与A的交点上,或者在交点的附近。这样,seq[t]就这样确定了,于是,seq[t+1],seq[t+2]……,我们都可以推断出来。
于是,我们大致将构造Spoofing集合分成3个步骤:
先选取L与A交点之间的所有点。如果,L与A没有交点,我们则选取离L最近的A的部分点。
假设现在 seq[t-1]=25
seq[t-2]=50
seq[t-3]=88
于是,我们可以计算出
y = seq[t-1] - seq[t-2]=25
z = seq[t-2] - seq[t-3]=33
而我们在集合A中找不到满足y=25,z=33这个点,但是,我们找到y=24,z=34和y=27,z=35这两个点,所以,我们要把它们加入Spoofing集合。
我们按照上面的方法,把在A附近(半径<=R1的空间范围内)点集M找出来,然后,我们根据这些点的相应的x值去推导相应的seq[t](按照一定的算法,后面会提到),于是,我们就得到很多的seq[t]。
根据点集M(j),我们在一定的变化浮动范围U里(-R2<=U<=+R2)处理其x值,得出以下的集合K:
M(j).x+1 M(j).x-1 M(j).x+2 M(j).x-2 M(j).x+3 M(j).x-3 …… M(j).x+R2 M(j)-R2
接着我们确定R1和R2的值
R1值的选取的原则:使M不为空集,一般为1-500个。
R2值的选取的原则:使K的个数为5000。
相关系数的意义:
R1 radius: 影响搜索速度。
R2 radius: 影响猜测ISN的成功率, R2越大,成功率越高,但代价越大。
Average error: 反映了在3.3.2中找出的点集的平均距离。一个过分大的平均距离是不需要的。可以通过是否有足够的正确的猜测值来计算Average error。