DPI (Deep Packet Inspection) 抛砖引玉 : 弯曲评论

来源:百度文库 编辑:神马文学网 时间:2024/05/02 18:45:41
DPI (Deep Packet Inspection) 抛砖引玉
作者droplet | 2010-07-02 16:45 | 类型网络安全,行业动感 |35条用户评论 »
首先申明这是一篇抛砖引玉的文章,不是深入地介绍和分析DPI技术文章。里面会有一些DPI技术
的介绍,主要内容都是来自这篇文章https://www.dpacket.org/articles/digging-deeper-deep-packet-inspection-dpi
DPI技术我只是正在关注,没有实际动手操作过,所以没有太多发言权。
DPI(Deep Packet Inspection)总的来说就是一个协议识别技术,是要增加网络的visibility。一般用的的技术有以下几类:
1)Signature
这是最基本的技术。如何定义一个协议的signature?开始大家都是用port来定义(这是指udp或者tcp的port,ip层可以用协议号来标识)。一些常见的port,比如21,80之类的,是由协议规定的。如果大家都守规矩,用port来标识还是比较准确的。
如果协议是跑在http之上,用80端口就无法标识。这就需要定义更复杂的signature,比如:

在payload这个层面,需要对包reassemble之后(这是tcp reassemble,当然之前需要做ip reassemble)才能match,问题是需要reassemble多少包?match可以用正则表达式,也可以用DFA engine。match可以是协议无关的,但是reassemble却不能,不同的协议,需要reassemble的包多少不同。如果不需要reassemble,直接把packet输入到状态机,那么这些包是发走,还是缓存起来。这里就是DPI和IDP的区别,DPI的用途是识别协议,而IDP是用于防护,所以DPI应该不需要缓存packet,而IDP需要。Signature定义是个技术活。Signature的大小直接影响到match的效率,而signature的准确性也影响识别的准确性。识别不可能是100%准确,对于那些没有被识别的,或者是被错误识别的stream如何处理,也是一个需要慎重考虑的问题。
2)Behavior
不太明白协议的behavior是什么意思,不过这里有一个图:

就是说,不同协议的packet行为是不同的。比如p2p多用小包,而http多用大包。这个需要对不同协议有一个统计的特征,然后用这个特征去匹配每个stream。这个看起来和语音识别所用的技术差不多。但是协议的bahavior是不是像语音那么稳定,如果协议bahavior变了,又如何识别。这个统计的特征也需要变吗?是自动学习,还是手动干预?没想明白怎么做。
对于加密的stream,signature的用途就小很多,但是任何加密的stream,都需要一个密钥协商的过程。从密钥协商的过程来进行识别也是一个可行的方法。Bahavior的方法应该不管是不是加密,所以用途会更广泛一点。
在应用DPI技术之前,有几个前提:
1)stream。用五元组{proto, saddr, daddr, sport, dport}标识的stream是基础,这就是常说的session或者flow based, signature没有跨session的,目前没有,当然将来可以做。
2)有些协议有多个session,比如ftp。识别ftp control很容易,但是识别ftp data就比较困难。但是由于ftp data是从ftp control派生来到,所以能过把ftp control识别的结果带到ftp data上,然后在ftp data应用基于DPI的一个控制,比如QoS之类的,就比较容易。很多其他的协议也有类似的情况(基本上需要ALG的协议都是这样)。
DPI技术可以有很多应用,比如access control, QoS,log等等。这也算是网络安全领域一个热点技术,这个技术和病毒识别的思路是差不多的,只不过出现地比较晚一点。
(3个打分, 平均:4.33 / 5)