期末考试在六月的热浪中如期而至。图书馆的空调坏了两天,学生们把怨气全发泄在了校园论坛上,但比起高温,更让他们怨声载道的是萧鸾的那份“高级算法与安全架构”期末试卷。考试时间是周三上午,地点在计算机学院最大的阶梯教室。夜堇坐在第一排正中央——这个位置现在已经不需要萧鸾点名了,她每次都会自动坐到这里,连苏棠都懒得再调侃她。
萧鸾踩着铃声走进教室,手里拿着一沓密封的试卷袋。她今天穿了一件白色的亚麻衬衫,袖口挽到手肘,头发束成低马尾,整个人看起来清爽而利落。日光灯在她脸上投下冷白色的光,衬得那双墨色的眼睛格外清冷。她在讲台前站定,拆开试卷袋,目光在教室里扫了一圈。
“考试时间两小时。试题一共五道大题,三道简答一道综合应用一道附加。草稿纸在桌面上,计算器和参考资料不允许使用。祝各位顺利。”
试卷发下来,夜堇翻开第一页,快速浏览了一遍。前四道大题都在她的复习范围内——入侵检测系统的特征匹配算法、分布式安全协议的密钥交换机制、基于行为的异常检测模型。她答得很快,笔尖在纸上沙沙作响,每一道题的推导步骤都写得清晰完整。翻到最后一道附加题的时候,她的笔尖停住了。
那道题的题干预设了一个极其复杂的APT攻击场景——攻击者利用社工手段获取内部人员的生物特征数据,通过深度学习生成对抗样本,绕过了目标系统的多层防御机制。要求画出完整的攻击树,标注每一层的防御节点,并且要求误报率控制在百分之零点五以内,同时给出自适应的动态阈值调整算法。
夜堇读完题干之后沉默了好几秒。这个攻击模型她太熟悉了——和她自己在南美庄园渗透任务中的方案几乎一模一样,只是在参数细节上做了调整。萧鸾把她的实战案例改编成了期末考试题,然后加了那个苛刻到变态的附加条件。她抬起头,从试卷上方看向讲台上的萧鸾。萧鸾正抬头巡视着考场,似乎完全没有注意她。但夜堇看到她嘴角有一个极淡的、只有自己能看懂的弧度。
她深吸一口气,低下头开始答题。
攻击树的绘制花了将近二十分钟——她从初始入侵节点开始,一层层画出横向移动、权限提升、数据窃取的完整路径,在每一层标注对应的防御节点。然后是自适应动态阈值调整算法:她用了萧鸾在课上讲过的动态基线调整机制,结合自己在南美任务中实际遇到过的误报问题,设计了一个双阈值交叉验证的方案。写到最后一行的时候,她的手指已经有些发酸了,但思路前所未有地清晰。
停笔的那一刻,她看了一眼钟表。距离考试结束还有七分钟。她把试卷从头到尾检查了一遍,确认每一道题的推导步骤都没有遗漏,然后合上笔帽。交卷铃响的时候,她把试卷交到讲台上。萧鸾接过试卷,手指在她手背上轻轻擦过,压低声音说了一句只有两个人能听到的话:“最后一题的动态阈值方案写得不错。比我预想的多了两层冗余校验。”
夜堇的耳朵微微发热,面无表情地回了一句:“出题人把附加条件设得这么苛刻,答题人只能多留几手。”萧鸾的嘴角极其细微地弯了一下,把她的试卷单独放在最上面。
期末考试结束后,整栋实验楼都空了下来。夜堇在实验室里整理这学期的实验数据,把最后一份报告归档到课程平台上。她做得比平时慢——不是因为不熟练,而是因为归档完之后,这学期就正式结束了。萧鸾的课,萧鸾的实验室,萧鸾每天放在她桌上的那杯咖啡——所有这些已经变成日常的东西,都会随着这学期的结束而告一段落。
她合上笔记本电脑,靠在椅背上,盯着天花板上那盏嗡嗡作响的日光灯。下学期萧鸾就不会再站在讲台上了。这个念头像一颗小石子,不知道什么时候掉进了她心里,现在才开始泛起涟漪。
实验室的门被推开了。萧鸾走进来,手里端着两杯咖啡——一杯是她自己的,不加糖不加奶;另一杯是夜堇的,双份糖不加奶。她把咖啡放在夜堇面前,在她对面坐下来。
“实验数据归档完了?”
“刚弄完。”夜堇端起咖啡喝了一口,温度刚好,甜度刚好。她看着萧鸾,犹豫了一下,“下学期你是不是不教我们了。”
萧鸾端着咖啡杯的手微微一顿,然后恢复如常。她靠在椅背上,语气平淡得像是在说今天的天气:“对。客座教授的聘期只有半年,我本来也晚签了一半时间。下学期你就是大四了,毕设和实习会占掉大部分时间——不需要我再给你讲课了。”
夜堇垂下眼睛,盯着咖啡杯里微微晃动的深色液面。她早知道会有这一天——客座教授不是终身教职,萧鸾来A大本来就不是为了当老师。她是为了她来的。现在目的达到了,自然也该走了。理智上她完全理解,但心里有个很小很小的声音在说一句话,她没有让它说出口。
“不过我还是会住在教师宿舍。”萧鸾忽然补了一句,语气依然平淡,像是在陈述一个无关紧要的事实,“计算机学院聘了我当特邀专家,负责网络安全实验室的顾问工作。办公室还是原来那间——你如果想来找我,门没锁。”
夜堇抬起头,琥珀色的眼睛里有什么东西亮了一下,然后迅速被她压下去。“谁说我要去找你。”
“你刚才的表情。”萧鸾端起咖啡杯挡住自己的下半张脸,只露出那双含笑的墨色眼睛,“你刚才的表情在你问我‘下学期不教了’的时候,眼睛里的光暗了零点几秒。然后我说还会住在宿舍,你又亮回来了。”
夜堇把咖啡杯放在桌上,耳朵以肉眼可见的速度变红。
“我只是在想毕设的事。”她说,声音硬邦邦的。
“你的毕设导师不是我。”
“我可以找你当校外顾问。”
“当然可以。不过——”萧鸾放下咖啡杯,语气从调侃转为认真,“在毕设开始之前,这个暑假会有很多事要处理。”夜堇看着她,等她说下去。
“灰影的精锐虽然推迟了入境,但弦月的情报显示他们并没有放弃。蛇眼最近有重新活动的迹象——他在东南亚的情报节点又上线了。更重要的是——”萧鸾顿了顿,墨色的眼睛里闪过一丝极其复杂的情绪,“白鲸。我父亲案子里那个代号‘白鲸’的人,弦月追踪到他最近在地中海沿岸出现过。如果顺利,这个暑假可能就能找到他。”
夜堇放下咖啡杯,看着萧鸾。窗外夏日的阳光很亮,透过落地窗洒进来,在地板上铺了一片金白色的光斑。但萧鸾说这些话的时候,眼底有一层极薄的、被克制得很好的冷意。那是月枭在面对猎物时才会露出的眼神。
“所以这个暑假,你打算同时处理三件事。”夜堇说。
“对。灰影交给你和弦月的外勤组——你在夜家有自己的情报网,加上弦月的配合,足够应对。蛇眼交给我——他的情报网络已经被弦月渗透了七成,剩下的只是时间问题。至于白鲸……”萧鸾的手指在咖啡杯沿上轻轻划过,“等蛇眼落网之后,我会亲自去地中海。”
夜堇沉默了好一会儿。窗外传来操场上的蝉鸣声,拖得长长的,像是在给这个学期画上最后一个音符。然后她开口,声音很稳:“我跟你一起去。”
萧鸾看着她,没有说话。
“灰影我可以自己对付,夜家的情报网不是吃素的。蛇眼是你的专长,我不插手。但白鲸——那是你父亲的案子。你说过你从十六岁就开始追这件事。我不会让你一个人去。”她的语气很平静,像是在陈述一个已经决定的事实。
萧鸾看了她很久。窗外夏日的阳光在夜堇的侧脸上镀了一层淡金色的光,那双琥珀色的眼睛里没有试探,没有犹豫,只有一种极其笃定的、不容任何人反驳的坚定。她忽然想起那天晚上在车里,夜堇说“自己淋了雨便不想让别人受寒”,想起她在消防通道里放倒两个雇佣兵之后若无其事地回到自己身边,想起她五岁那年站在靶场的雨里,没有一个人给她撑伞。现在这个人说要和她一起去地中海,去追一个她花了半生在找的仇人。
“好。”萧鸾说,声音很轻,但每一个字都很稳,“一起去。”
期末考试最后一天,薄寒溪把夜堇叫到实验室做常规基因检测。她抽了夜堇几管血,把样本放进分析仪,然后靠在实验台旁边看着数据曲线在屏幕上一行行跳动。十几分钟后,她摘下护目镜,用一种极其平静的语气说了一句让夜堇愣住的话。
“你的端粒酶活性比去年同期上升了零点几个百分点。神经电生理指标也回到了正常范围的高位。基因融合的稳定性达到了融合以来的最高水平——换句话说,你最近状态很好。”薄寒溪把检测报告打印出来递给她,“从数据来看,你这几个月情绪波动比以前平缓了很多。有什么特别的原因吗?”
夜堇接过报告,低头看着那些密密麻麻的数据曲线。她的目光在“情绪稳定性”那一栏上停了好几秒,然后面无表情地把报告折好放进包里。“不知道。可能最近睡得比较规律。”
薄寒溪看了她一眼,没有戳穿。只是转过身继续操作分析仪,用一种极其平淡的语气说:“哦对了,苏棠让我转告你——明天晚上她在川渝老灶订了最大的包间,说是什么‘大三毕业会兼送别萧教授’。李云帆、周念、还有你期末辅导班那几个学弟学妹都去。她和我说了,让我也来。”
夜堇把检测报告塞进包里,拉上拉链。“她怎么不直接跟我说。”
“她说你一定会说‘不去’,所以先斩后奏。”薄寒溪头也不回地操作着键盘,“萧鸾那边她已经发消息邀请了,萧鸾回了两个字——‘几点’。”
夜堇沉默了几秒,然后转身朝门口走去。走到门口的时候她停了一下,头也不回地说了一句:“明天几点。”
薄寒溪看着她的背影,嘴角极其细微地弯了一下。“晚上七点。她说你可以穿那件黑色卫衣——就上次球赛穿的那件。”
夜堇推开实验室的门,走廊里夏日的空气扑面而来。她站在门口片刻,然后大步朝宿舍走去。明天晚上,火锅店,送别萧教授。她告诉自己这只是普通的聚餐——学期结束了,教授离职了,学生请教授吃顿饭再正常不过。但她知道不是。因为刚才薄寒溪说萧鸾下学期不再是她的老师时,她心里那个被她压下去的小声音又冒了出来,这一次比之前更清晰了些。
她加快了脚步,把那句话甩在身后。