欢迎进入红数信息技术有限公司官网
4008088160
现在的位置:首页 > 发布网络推广公司-营销推广 > TCP ISN生成器的构造方法的安全性评估
TCP ISN生成器的构造方法的安全性评估
信息来源:湖南优度网络公司  发布日期:2010/4/11 浏览数量:988
文章导读: ...
我们很难用一台电脑去生成一些不可预测的数字,因为,计算机被设计成一种以重复和准确的方式去执行一套指令的机器。所以,每个固定的算法都可以在其他机器上生成同样的结果。如果能够推断远程主机的内部状态,攻击者就可以预测它的输出;即使不知道远程主机的PNRG函数,但因为算法最终会使ISN回绕,按一定的规律重复生成以前的ISN,所以,攻击者仍然可以推断ISN。幸运的是,目前条件下,ISN的重复可以延长到几个月甚至几年。但是,仍然有部分PRNG生成器在产生500个元素后就开始回绕。解决伪随机数的方法是引入外部随机源,击键延时,I/O中断,或者其它对攻击者来说不可预知的参数。把这种方法和一个合理的HASH函数结合起来,就可以产生出32位的不可预知的TCP ISN的值,同时又隐蔽了主机的PNRG的内部状态。不幸的是,很少的TCP ISN产生器是按这种思路去设计的,但即使是这样设计的产生器,也会有很多的实现上的漏洞使这个产生器产生的ISN具有可猜测性。

  RFC1948的建议提供了一种比较完善的方法,但是,对攻击者来说,ISN仍然存在着可分析性和猜测性。其中,PRNG的实现是个很关键的地方。

  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, ……



  (图6)

  方程组(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可以通过以下的公式求出



  (图7)

  而对于P.x=seq[t]-seq[t-1], 由于seq[t-1]已知,所以,我们可以把它当作是空间的一条直线。如果,在对以前的ISN的采样,通过上面提到的构成的空间模型A呈现某种很强的特征,我们就可以大胆地假设,seq[t]在直线与A的交点上,或者在交点的附近。这样,seq[t]就这样确定了,于是,seq[t+1],seq[t+2]……,我们都可以推断出来。



  (图8)

  于是,我们大致将构造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。

   对TCP ISN的PRNG分析的总体流程:
相关信息
  • 网络营销培训
  • 微网站
  • 扫二维码
  • 1
  • 2
  • 3
  • 最新上传
  • 精品案例
18973218026
其他业务合作请发下面邮箱
邮箱:254596208@qq.com
地址:湖南省湘潭市岳塘区霞光东路58号(维也纳酒店6楼)
营销型网站建设扫一扫关注官方微信

关注优度

官方微信
官方微博
官网首页