首页 > 解决方案 > 如何区分实时流量中的加密和压缩

问题描述

我从事网络流量过滤器工作,我需要将输入 IP 流量分为 3 组:

压缩和加密数据有许多相似的属性,例如内容直方图中的熵和字符分散。所以很难区分它们。

当块很大(> 1MB)时,有一种方法可以使用卡方分布、Pi 近似误差和熵方法对数据进行分类。http://www.devttys0.com/2013/06/differentiate-encryption-from-compression-using-math/

对于少量数据(~1k),该算法不准确。

问题

如何以超过 90% 的准确率区分实时流量(约 1k 数据块)中的加密和压缩?

我知道现代 DPI(深度包检测)系统已经实现了一些算法来处理这个问题。

你有什么想法吗?

标签: encryptioncompressionreverse-engineeringdata-analysisraw-data

解决方案


唯一的方法就是以某种方式知道可能存在一组有限的压缩数据格式。然后您可以开始使用所有这些格式进行解码。如果一个人工作了一段合理的距离(例如一百左右字节),那么很有可能这是一个未加密的压缩流。

否则,良好加密的数据、良好压缩的数据和随机数据都无法相互区分。


推荐阅读