作者 droplet | 2010-07-02 16:45 | 类型 网络安全, 行业动感 | 35条用户评论 »
首先申明这是一篇抛砖引玉的文章,不是深入地介绍和分析DPI技术文章。里面会有一些DPI技术 ![]() 在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等等。这也算是网络安全领域一个热点技术,这个技术和病毒识别的思路是差不多的,只不过出现地比较晚一点。 |
联系客服