下一章 上一章 目录 设置
5、第 5 章 你故意的 ...
-
周三上午,季寒声收到一封邮件。
发件人是北邮网络空间安全学院副院长李维庸,收件人抄送了学院全体教师和研究生。邮件内容很简单:下周一上午,学院邀请公安部网安局技术专家季寒声来校做一次“实战技术与学术研究的对接”座谈,地点在学院的小会议室,限研究生参加,每届择优推荐五人。
花清月是在实验室的公用电脑上看到这封邮件的。
她当时正蹲在主机旁边插网线——实验室的网络接口坏了三天了,报修没人理,她干脆自己拆了机箱重新布线。头发用一支铅笔随便挽着,几缕碎发垂在脸侧,手指上沾着灰尘。
赵小曼从门口探进头来:“清月!你看邮件了吗?下周一那个座谈,李老师说让你必须去。”
“什么座谈?”
“就是公安部那个专家啊,季寒声,女的,据说特别厉害。”赵小曼的声音带着八卦的兴奋,“我搜了一下她的资料——清华博士,二十八岁破格副高,三十二岁拿国家科技进步二等奖。而且长得超好看,网上有她领奖的照片,骨相绝了。”
花清月把网线插好,站起来拍了拍手上的灰,走到电脑前点开邮件。
她扫了一眼内容,目光在“季寒声”三个字上停了一下。
这个名字,她见过。
上周二那场讲座,主讲人刘建国教授的开场白里提到过:“今天我们很荣幸请到了公安部网安局的季寒声同志到场指导。”
当时她坐在最后一排,没有看到那个人的脸。
但她记得那个脚步声。
皮鞋,踩得很稳,不急不慢,在安静的走廊里像节拍器。
后来讲座结束,她看到了一个侧影——黑色大衣,盘发,银框眼镜。那个人站在讲台旁边,低头看手机,侧脸的线条像用刀裁出来的。
她没有多看。
但她记住了那个侧影。
“我去。”花清月说。
“你这么爽快?”赵小曼瞪大眼睛,“你不是最不喜欢这种官方活动吗?”
花清月关掉邮件,拿起桌上的可乐喝了一口:“姐的事少打听~”
赵小曼翻了个白眼走了。
花清月坐在电脑前,手指无意识地在触控板上滑动,光标在屏幕上画圈。
季寒声。
她在心里默念了一遍这个名字。
然后打开搜索引擎,输入了三个字。
搜索结果比她想象的要多得多。
国家科技进步二等奖获奖名单、清华优秀博士毕业生名录、公安部年度先进个人表彰通报、一篇发表在核心期刊上的论文——《基于行为特征的APT攻击溯源方法研究》。
花清月点开那篇论文,快速浏览了摘要和引言。
行文干净,逻辑严密,每一句话都站在它该站的位置上,没有一个多余的词。
她想到了一个人。
那个在论坛私信里说“茶凉了的时候涩味最重”的人。
那个在凌晨两点和她讨论切分音节奏的人。
那个在她走进报告厅的瞬间,通过脚步声判断她穿什么鞋的人。
花清月关掉浏览器,拿起手机,打开论坛私信。
对话框里最后一条消息是前天晚上的——“晚安,小狐狸。”
她盯着这三个字看了几秒。
从上周到现在,她和这个“喝茶的人”聊了十几次,从技术到音乐,从节奏感到失眠,从弹窗的波浪号到大衣的扣子。
她们聊了很多。
但从来没有问过彼此的名字。
花清月不知道这是一种默契,还是一种刻意的回避。
她打了几个字:
“你认识一个叫季寒声的人吗?”
发出去之后,她盯着屏幕等了一分钟。
没有回复。
她把手机揣进口袋,拿起书包,走出了实验室。
---
周一上午,北京邮电大学,网络空间安全学院。
小会议室在教学楼四层的尽头,朝南,阳光很好。长方形的桌子能坐十二个人,这会儿已经坐了九个——五个研三的、三个研二的、一个研一的。
花清月坐在靠窗的位置,阳光落在她身上,把她那件米白色毛衣照得发亮。她面前摊着一个黑色的笔记本,手里捏着一支笔,在纸的边缘画一只翻白眼的小猫。
画到第三只的时候,门开了。
会议室里安静了一瞬。
花清月抬起头。
门口站着一个人。
黑色衬衫,黑色长裤,衬衫袖口卷到小臂,露出一只银色的欧米茄手表。头发用一支深色的簪子盘在脑后,一丝不乱。脸上架着一副银框眼镜,镜片后面的眼睛狭长而沉静。
没有化妆,嘴唇淡得几乎看不出颜色。
但她不需要化妆。
骨相好的人,站在那里就是一幅画。
季寒声的目光扫过会议室里的每一个人,像探照灯一样平静而精准。
扫到花清月的时候,停了一下。
不到一秒。
然后移开了。
“各位好,我是季寒声。”她的声音不大,但足够清晰,每个字都像落在棋盘上。
李维庸教授坐在桌子的另一端,推了推厚底眼镜,用那种不太热情的语气说:“季警官,这些人就是我们学院今年推荐的研究生,水平参差不齐,你看着用。”
花清月注意到季寒声的嘴角动了一下——不是笑,是一种“我知道了”的微表情。
座谈开始了。
季寒声没有用PPT,没有讲稿,甚至连笔记本都没带。她坐在那里,像个普通的技术交流者一样,讲了她正在追的一个案子——不是具体案情,是技术难点。
“我们遇到一个加密协议,密钥交换方式不是标准的,像是某个人自己写的。”她说,“我花了两个月,只解开了第一层。”
会议室里安静了几秒。
“什么加密算法?”一个戴眼镜的男生问。
“不确定。但它的特征码和我见过的所有公开算法都不一样。”
“会不会是某个小众的开源项目?”
“查过了,不是。”
花清月没有说话,手里的笔在笔记本上无意识地画着圈。
她想起了那个“夜莺”数据包。
那个她也解不开的、被定制化加密算法保护的数据包。
季寒声描述的特征,和“夜莺”数据包的加密方式,重合度至少有百分之八十。
花清月的笔停了。
她抬起头,看向季寒声。
对方正在回答另一个学生的问题,表情专注而耐心,侧脸在阳光下显得格外清冷。
花清月盯着她的侧脸,脑子里忽然闪过一个念头。
巧合?
还是——
“花清月同学。”
她的名字被叫到的时候,花清月正盯着季寒声的侧面走神。
“嗯?”
季寒声看着她。不是看所有人的那种目光——是只看着她一个人的那种。
“我刚才问,如果给你这个加密协议的前三层结构,你会从哪里开始入手?”
这是一个专业问题。
而且是一个很难的问题。
花清月感觉到会议室里所有人的目光都落在她身上。赵小曼坐在对面,冲她挤了挤眼睛。
她放下笔,靠在椅背上,和季寒声对视。
“我会先看密钥交换时的时序特征。”她说,“如果算法是自己写的,作者大概率会在密钥交换的时序上留下个人习惯。”
季寒声没有点头,也没有摇头。
“具体怎么判断?”
“分析每个数据包的时间戳,看密钥生成的间隔是否符合某种规律。”花清月说,“如果是标准算法,密钥生成的时间分布应该是均匀的。但如果是自己写的,可能会因为作者的思维习惯出现周期性波动。”
会议室里安静了几秒。
李维庸推了推眼镜,没有说话,但表情里有一丝意外。
季寒声看着花清月,目光比之前深了一些。
“你的思路是对的。”她说,“但有一个漏洞。”
花清月挑眉。
“你的前提是——作者会在密钥生成阶段留下痕迹。但如果作者故意制造均匀的时间分布来掩盖这一点呢?”
花清月愣了一下。
她想到了。
但她没有说。
季寒声似乎看穿了她在想什么。
“你想到过这一点,对吗?”季寒声的声音没有责备,甚至没有任何情绪,只是陈述一个事实,“但你选择不说,因为你认为概率太小,不值得在这个阶段考虑。”
花清月没有说话。
她感觉到自己的耳根在发烫。
不是因为被当众指出漏洞——她没那么玻璃心。
是因为季寒声看穿了她的思维过程。
不是看穿了她的答案,是看穿了她为什么给出这个答案。
这种被人读懂的感觉,让她既不舒服,又——
她说不清。
“概率小,不代表不重要。”季寒声说,语气依然平淡,“我们追查的目标,往往就藏在概率小的那一边。”
会议室里的气氛有些微妙。赵小曼在桌子底下给花清月发了一条微信:【她在点你名诶。】
花清月没有看手机。
她盯着季寒声,忽然笑了一下。
不是那种礼貌的笑,是那种“行,你厉害”的笑,左眼下的泪痣随着笑意微微上扬。
“季警官,”她说,“你的加密协议,解到第几层了?”
“第三层。”
“解了多久?”
“两个月。”
花清月靠在椅背上,用一种很随意的语气说:“如果是我,我会从第三层的尾部开始逆向推演,而不是从头解。作者写算法的时候,结尾往往比开头更草率。”
会议室里有人倒吸了一口凉气。
逆向推演。
从尾部开始。
这是非常规思路,而且是那种“说出来很简单但能想到很难”的思路。
季寒声看着她,那双狭长的单眼皮眼睛里,有什么东西闪了一下。
很快,快到只有花清月捕捉到了。
“有道理。”季寒声说。
只有三个字。
但花清月听出了一层别的意思——不是“你说得对”,是“我记住了”。
座谈结束后,学生们陆续离开会议室。花清月磨蹭着收拾东西,把笔记本塞进书包里,拉链拉到一半又停下来。
季寒声还在和李维庸说话,声音很低,花清月只听到了几个词——“数据包”“协查”“时间窗口”。
她背上书包,往门口走。
走到门口的时候,身后传来一个声音。
“花清月同学。”
她转过身。
季寒声站在窗边,阳光从她身后照进来,把她整个人镀上一层淡金色的轮廓。
“你的漏洞分析漏了一个关键入口。”季寒声说。
花清月的手在书包带上握紧了一些。
“什么入口?”
“你只考虑了作者的思维习惯,没有考虑作者的审美偏好。”季寒声的语气依然平淡,像在说今天天气不错,“一个会在代码注释里写‘简单点吧大家都开心’的人,不会把最精彩的部分放在结尾。她会放在开头,因为——她没有耐心等到最后。”
花清月愣住了。
不是因为这个分析有多精妙。
是因为那句“简单点吧,大家都开心”。
那是她自己写的注释。
七年前。
在她十四岁时发的第一篇技术帖里。
季寒声是怎么知道的?
花清月的大脑在零点几秒内完成了几个运算:
第一,季寒声看过她七年前的帖子。第二,季寒声知道那个帖子的作者是谁。第三,季寒声知道她就是Celestine。
她瞪着季寒声,对方的表情没有任何变化,依然是那张清冷的、看不出情绪的骨相脸。
“季警官,”花清月的声音比平时低了一些,“你看过很多论坛帖子?”
“工作需要。”季寒声说。
“那你找到作者了吗?”
季寒声沉默了一秒。
“找到了。”
花清月盯着她的眼睛,试图从那片深不见底的黑色里找到什么。
但什么也没有。
她忽然想起一件事。
上周,她问“喝茶的人”:“你认识一个叫季寒声的人吗?”
对方没有回复。
而今天,季寒声站在她面前,用她自己的代码注释,反手点出了她的漏洞。
花清月深吸了一口气,松开书包带子,笑了一下——不是被戳穿的窘迫,是那种“我认输但我不服”的笑。
“季警官,你的加密协议,”她说,“第三层的尾部,有一个十六字节的空字段。那不是冗余数据,是作者的水印。找到它,你就找到了作者的身份。”
季寒声的眉头几不可见地动了一下。
“你怎么知道?”
“因为如果是我,我会这么干。”花清月说完,转身走了。
她的脚步声在走廊里响起来,皮鞋踩在水磨石地面上,带着一种向上的弹性。
季寒声站在会议室里,没有动。
阳光从窗户照进来,落在她的脸上。
她的嘴角弯了一下。
这一次,不是“知道了”。
是笑了。
---
那天晚上,花清月回到家,把书包扔在沙发上,整个人陷进沙发里,抱着膝盖,盯着天花板。
手机震了。
论坛私信。
“喝茶的人”:
“今天过得怎么样?”
花清月盯着这行字,忽然觉得很荒谬。
这个“喝茶的人”,如果她没猜错的话,就是季寒声。
今天下午在会议室里,用“简单点吧大家都开心”点她名的人,和现在发私信问她“今天过得怎么样”的人,是同一个。
她想打字骂人。
打了一半,删了。
又打了一半,又删了。
最后她发了三个字:
“你骗我。”
对面秒回:
“我没有骗你。我只是没有告诉你全部。”
“有什么区别?”
“区别是——我从来没有否认过我就是季寒声。”
花清月盯着这行字,翻了一下聊天记录。
确实。
她从来没有问过“你是季寒声吗”。
她只问过“你认识一个叫季寒声的人吗”。
对方回答的是沉默。
不是否认。
花清月把手机摔在沙发上,仰头看着天花板。
天花板上映着台灯的黄光,和平时一样。
但她觉得整个世界都变了。
手机又震了。
“你今天说的那个水印,我回去查了。你说得对。”
花清月犹豫了几秒,拿起手机。
“你什么时候知道我是Celestine的?”
“弹窗之后第二天。”
“这么快?”
“你的代码写得像你,尤其是注释。”
花清月咬了咬嘴唇。
“你今天在会议室点我名,是为了报复我上次叫你叔叔阿姨?”
对面发来那只翻白眼的白猫。
花清月盯着那只猫,忽然笑了。
不是冷笑,不是苦笑。
是真的觉得好笑。
她打了很长一段话,又删掉了。
最后发了一个词:
“姐姐。”
对面沉默了整整十秒。
然后:
“你故意的。”
花清月弯起嘴角,把手机扣在胸口。
窗外的月亮很亮。
她的心跳很快。
但她说不上来是为什么。