第86章 系统
陈默把测试版安装包拷进u盘时,指尖在金属外壳上停了一秒。
机房里的服务器风扇声像一场永不停歇的低雨,冷气从头顶的出风口灌下来,把他衬衫后背浸出一层薄汗。他没有开主灯,只有机柜上的指示灯在黑暗里明明灭灭,像无数双沉默的眼睛。这是凌晨四点的瑞科技术中心,距离新加密系统正式上线还有五个小时,距离周瑞安要求的“全面切换”只剩不到一天。
他把u盘塞进裤兜,走出机房时反手锁上门。走廊里的应急灯投下昏黄的光斑,把他的影子拉得细长。他没有回自己的工位,而是拐进了楼梯间,沿着消防通道下到负一层,推开一扇贴着“设备检修”的铁门。门后是个不到十平米的备件库,角落里摆着一台不联网的旧笔记本,是他三个月前以“报废设备回收”的名义留下来的。
他打开笔记本,插上u盘,运行安装程序。屏幕蓝光映在他脸上,照出眼底淡淡的青影。安装进度条走到百分之百时,他深吸一口气,点开了系统的密钥管理模块。
这个模块是周瑞安亲自指定外包团队开发的,代码没有经过内部审计,连技术中心的文档库里都没有完整的设计说明。陈默花了三天时间才从外包团队的交付包里拼出这份测试版,而此刻,他终于能看清它的真面目。
他滚动鼠标,停在“密钥分配”的子函数上。代码逻辑很简洁:每次用户登录时,系统会从中央密钥库生成一个临时会话密钥,通过加密通道下发到客户端。但问题出在“加密通道”的实现方式上——它用的是一个开源的tls库,版本是三年前的1.2,而这个版本在去年就被披露存在“重放攻击”漏洞。
更致命的是,密钥生成算法的随机种子,竟然直接取了服务器的系统时间戳。
陈默盯着那行代码看了足足一分钟。他知道,这意味着只要攻击者能获取服务器的精确时间,就能预测出下一次生成的会话密钥。而获取服务器时间,对于任何一个能访问内网的员工来说,都不过是一次简单的ping命令。
这不是疏忽,是故意留下的后门。
他退出代码界面,打开抓包工具,模拟了一次登录请求。果然,当他在本地伪造了一个与服务器同步的时间戳后,抓包工具成功截获了明文会话密钥。他用这把钥匙打开了测试环境里一份标着“机密”的文件,内容完整地显示在屏幕上。
他把抓包记录和代码截图存进一个加密文件夹,然后拔掉u盘,用物理擦除工具反复覆写了笔记本的硬盘。做完这一切,他关掉电脑,站起身时膝盖发出一声轻响。
备件库里没有窗,只有头顶一盏昏黄的灯泡。他站在黑暗里,听着服务器风扇声透过铁门传进来,像一句压抑的低语。他知道,这份测试版现在交上去也没用——周瑞安要的不是“安全”,是“可控”。而这个后门,就是他为自己留的“控制权”。
但他必须让林泽看到它。
他把加密文件夹拷贝到一张微型sd卡里,塞进手表表带的夹层中。然后他走出备件库,沿着消防通道回到一楼,推开侧门走进了清晨的雾气里。
滨江路的早高峰还没开始,只有几个环卫工人在扫落叶。他沿着河岸走了十分钟,拐进一家24小时营业的便利店,买了一瓶水和一个三明治。结账时,他把sd卡从表带里取出来,夹在找零的纸币里,递给了收银员身后那个穿灰色卫衣的男人。
男人接过钱时,指尖在他手背上轻轻敲了两下。
这是他和林泽约定的暗号。
走出便利店时,天已经亮了。他回头看了一眼,那个男人正低头翻动纸币,sd卡的轮廓在晨光里一闪而过。他知道,从这一刻起,这颗棋子已经落进了该去的位置。
而他必须回到机房,扮演好“技术总监”的角色,确保新系统在五小时后准时上线,确保那个后门在所有人眼皮底下安然无恙。
他转身走向公司大楼,脚步平稳得像什么都没发生过。电梯上行时,镜面内壁映出他整齐的西装和冷静的脸。他盯着镜子里的自己看了几秒,直到“18”亮起,电梯门无声滑开。
走进技术中心时,几个早到的工程师正在调试服务器。看到他进来,纷纷点头问好。他点了点头,走到自己的工位前坐下,打开了正式环境的监控面板。
屏幕上,新系统的部署进度显示“98%”。他盯着那个数字,指尖无意识地摩挲着袖扣的边缘。
五小时后,这套带着后门的系统就会覆盖瑞科的每一个角落。而林泽手里的那张sd卡,将成为刺穿这层伪装的第一根针。
他知道,从按下回车键的那一刻起,他和林泽之间的棋局就已经换了棋盘。明面上的配合结束了,暗地里的博弈才刚刚开始。而那个藏在密钥管理模块里的漏洞,就像一颗已经埋下的种子,只等一场恰到好处的雨,就会破土而出。
窗外的晨光透过百叶窗的缝隙投进来,在桌面上划出一道道细长的光斑。他坐在工位前,听着服务器风扇声在耳边起伏,直到光斑慢慢偏移,消失在墙角。