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值判断),就能量化地给出结论。

我曾经犯过的三个坑

  1. 期望频次太小:如果某个类别的期望频次小于5,卡方统计量会严重失真。解决办法——合并小类别,或者Yates校正。
  2. 类别数太多:256个字符全算进去,自由度255,卡方值容易发散。我通常只关注前20高频字符+异常低频字符。
  3. 忽略协议层结构:不同的加密协议帧头分布完全不同,混在一起计算期望会导致误判。记得先做协议识别。

3.5 知识体系总览

我把本章核心逻辑画成一张图,方便你整体把握:

频次分析数学原理知识体系 加密流量观测频次 概率论基础 频率 → 概率,样本 vs 总体 离散分布模型 二项分布 / 泊松分布 期望与方差 理论频次 / 波动范围 卡方检验 χ² = Σ(Oᵢ-Eᵢ)²/Eᵢ 计算差异统计量,判定是否异常 重要约束 期望频次≥5 · 类别合并 · 协议预识别 · p值阈值设置 输出:正常 / 异常

3.6 本章小结

数学原理虽然没有代码直观,但它决定你分析结果的可信度。有几点你记牢:

  • 概率是理论锚点,频次是观测信号——别把两者混为一谈
  • 离散分布帮你构建基准模型,期望和方差给出判定标尺
  • 卡方检验是最后一道门,但前提是期望频次足够大、类别合理

我自己做加密频次分析时,会先在实验环境中用已知恶意样本校准卡方临界值。比如正常流量卡方值一般在0.3~3.5之间,一旦超过10,基本可以实锤异常了——但这需要结合你的具体协议去修正。

嗯,数学基础就讲到这里。接下来你可以放心地进入实战代码环节了。记住:参数调不出来的问题,八成是数学没想透。