第16章:深蓝的涟漪(3 / 4)

复仇星耀途 墨灵葬花 11119 字 17天前

然后——关键在这里——路容在代码里设置了一个阈值:同一来源ip在五分钟内,如果出现超过三个“加密负载格式错误”的数据包,就触发系统级告警。

为什么?

因为正常的数据传输,不会在短时间内产生大量解密失败的数据包。如果出现,要么是源头数据有问题,要么是加密密钥错误,要么是——有人故意发送了无法解密的测试数据。

而“深蓝计划”的数据来源,周哲说涉密。

路容不知道具体是什么来源。

但她知道,李剑三年前构陷她时,用的就是伪造的数据包,伪装成她从公司服务器泄露出去的加密文件。那些文件,表面上是aes加密,实际上内部结构被篡改过,解密后会得到错误的内容。

当时的加密方式,也是aes-256。

当时的错误模式,也是认证标签验证失败。

当时的处理逻辑——天启科技的安全团队写的——也是将这类数据包标记为异常,触发告警。

然后告警记录,成了“证据”的一部分。

路容的手指停在键盘上。

屏幕上的代码已经写了三百多行。她从头到尾检查一遍,确认逻辑正确,确认漏洞隐蔽,确认这个规则在技术评审时能通过——因为它确实能有效过滤重复数据,也确实能检测格式异常。

只是,它会对某种特定的错误模式,产生“过度敏感”的反应。

而这种错误模式,与三年前她见过的,太像了。

下午两点,权限批下来了。

路容登录密钥管理平台,看到状态变成“已授权”。她下载了解密密钥,导入工具,重新尝试打开那个加密文件。

进度条缓慢移动。

百分之十,百分之三十,百分之七十。

解密完成。

文件展开,里面是数万行json格式的数据。路容快速浏览,确认文档描述的结构准确:timestamp是13位毫秒时间戳,device_id是32位哈希字符串,event_type包括“page_view”、“button_click”、“scroll”等,payload字段是加密内容。

她随机选择几条数据,用密钥解密payload。

解密后的内容显示出来:用户访问了某个电商网站的商品页面,点击了“加入购物车”按钮,页面停留时间47秒,滚动深度65%……

很标准的用户行为数据。

路容连续解密了十几条,内容都正常。

她关掉文件,打开另一个。

同样正常。

第三个,正常。

第四个——

路容的目光停住了。

这条数据的device_id,她见过。

就在刚才解密的第一个文件里,有相同的device_id,但timestamp相差三分钟。她翻回去对比,两个数据包的device_id完全一致,event_type都是“page_view”,但payload解密后的内容……

第一个:用户访问了网站a的首页。

第四个:用户访问了网站b的商品页。

同一个设备,三分钟内,访问了两个不同的网站。

这本身不奇怪,用户可能切换应用。

但路容注意到一个细节:两个数据包的来源ip不同。

第一个来源ip:203.112.89.76(深港市电信)

第四个来源ip:103.215.44.128(境外,新加坡)

同一个设备,三分钟内,ip地址从深港市跳到了新加坡。

不可能。

除非……

路容盯着屏幕,心跳微微加速。

除非这个device_id不是真实的设备标识,而是经过某种映射或伪造的id。或者,数据来源本身就有问题——可能混合了多个渠道的数据,没有做好去重和归一化。

又或者,这些数据根本不是实时采集的,而是从某个数据仓库里批量导出,重新打包加密后,伪装成实时数据流。

她继续查看。

又发现了几个类似的案例:相同的device_id出现在不同的来源ip,时间间隔很短,访问行为不连贯。

还有一批数据,timestamp的时间顺序是乱的——晚发生的事件,时间戳反而比早发生的事件更早。

以及一些payload解密后,json结构虽然正确,但某些字段的值明显异常:页面停留时间999999秒,滚动深度-1,按钮点击坐标(9999,9999)……

路容把这些异常案例记录下来。

然后,她开始修改过滤规则代码。

针对device_id异常跳变的情况,她加入了一个检查:如果同一个device_id在十分钟内出现在地理距离不可能达到的ip地址(比如深港市和新加坡),就将这两个数据包都标记为“设备标识可疑”,进入人工审核队列。

针对timestamp乱序的情况,她加入时间戳合理性校验:如果数据包的时间戳比系统当前时间还晚,或者比同来源的前一个数据包早太多,就标记为“时间戳异常”。

针对字段值异常的情况,她加入数值范围检查。

每一条规则,都有合理的技术理由。

每一条规则,也都可能误伤正常数据。

但路容把误判的概率,控制在了一个“可接受”的范围——根据她写的测试用例,误判率大约在0.3%到0.5%之间。对于tb级别的数据流,这意味着每天会有数万个数据包被错误地标记为异常。

而系统告警的阈值,她设置为:同一数据源,异常率超过1%,持续五分钟,触发告警。

如果她的规则误判率是0.5%,正常数据流的异常率可能只有0.1%或更低,那么整体异常率不会超过0.6%,达不到告警阈值。

除非——

数据源本身的异常率就很高。

或者,有人故意往数据流里注入异常数据包。

举报本章错误( 无需登录 )