3. 频次分析数学原理:概率论基础,离散型随机变量的分布,期望与方差,卡方检验的概念
聊到频次异常分析,很多人第一反应是「拿现成工具跑一遍」。但说实话,不懂背后的数学原理,你连参数都不敢乱调。
我记得刚入行时接过一个加密流量分析任务。数据量很大,我直接套了个卡方检验脚本,结果全是告警。后来才意识到——连期望频次都没算对,卡方统计量怎么可能靠谱?
嗯,这一章我们就来把数学地基打扎实。别怕,不推公式堆定理,咱们结合加密频次场景讲透。
3.1 概率论基础:从频率到概率
你观察1000个加密数据包,发现某个字符'x'出现了35次。这个35/1000就是频率。但频率不是概率——概率是理论值,频率是实验值。
为什么区分这个?因为我们的核心逻辑是:把观测频次和理论概率算出来的期望频次做对比。如果偏差超出随机波动范围,就判定异常。
关键认知
- 概率:理论上的可能性,用P(A)表示
- 频率:实际统计的比值,随着样本量增大趋近于概率
- 频次:具体计数值,比如某字符出现50次
3.2 离散型随机变量与分布
加密流量中每个字符出现次数,本质上是一个离散型随机变量。它的取值范围是0,1,2,…,没有中间值。
常见的分布有两种,我工作中的场景刚好都遇到过:
| 分布类型 | 适用场景 | PMF公式(简述) | 在加密分析中的作用 |
|---|---|---|---|
| 二项分布 | n次独立试验,每次成功概率p | P(X=k)=C(n,k)p^k(1-p)^{n-k} | 判断某字符出现次数是否在正常波动范围 |
| 泊松分布 | 单位时间/空间内事件发生次数 | P(X=k)=λ^k e^{-λ}/k! | 小概率字符出现的频次模型,常见于低频字符 |
我个人的习惯是:当样本量很大(n>100)且概率p很小(p<0.1)时,直接用泊松近似代替二项分布计算——省事且够准。
3.3 期望与方差:统计量的两个支柱
期望就是加权平均数,反映“平均会出多少次”。方差反映波动有多大。
对于加密频次分析,期望值就是理论频次;方差用来构建置信区间。
实战小技巧
假设字符'A'在正常加密协议中出现概率为0.05,数据包总数1000,则期望频次=50。
如果观测到80次,先别急着告警——算一下标准差(σ=√(np(1-p))≈6.9),80距离期望4.3个标准差,这才基本可以判定异常。
3.4 卡方检验:频次异常的判决工具
卡方检验的核心思想:计算观测频次与期望频次的差异平方和,再除以期望频次。
统计量公式长这样:
χ² = Σ (Oᵢ - Eᵢ)² / Eᵢ
- Oᵢ:第i类的观测频次
- Eᵢ:第i类的期望频次
算出来的卡方值越大,说明观测与期望越不像,异常可能性越高。我们再查卡方分布表(或者用p值判断),就能量化地给出结论。
我曾经犯过的三个坑
- 期望频次太小:如果某个类别的期望频次小于5,卡方统计量会严重失真。解决办法——合并小类别,或者Yates校正。
- 类别数太多:256个字符全算进去,自由度255,卡方值容易发散。我通常只关注前20高频字符+异常低频字符。
- 忽略协议层结构:不同的加密协议帧头分布完全不同,混在一起计算期望会导致误判。记得先做协议识别。
3.5 知识体系总览
我把本章核心逻辑画成一张图,方便你整体把握:
3.6 本章小结
数学原理虽然没有代码直观,但它决定你分析结果的可信度。有几点你记牢:
- 概率是理论锚点,频次是观测信号——别把两者混为一谈
- 离散分布帮你构建基准模型,期望和方差给出判定标尺
- 卡方检验是最后一道门,但前提是期望频次足够大、类别合理
我自己做加密频次分析时,会先在实验环境中用已知恶意样本校准卡方临界值。比如正常流量卡方值一般在0.3~3.5之间,一旦超过10,基本可以实锤异常了——但这需要结合你的具体协议去修正。
嗯,数学基础就讲到这里。接下来你可以放心地进入实战代码环节了。记住:参数调不出来的问题,八成是数学没想透。