市一院急诊楼的LEd屏显示凌晨两点十七分,消毒水的气味里混着一丝若有若无的焦灼。护士长青姐攥着病历本跑过走廊,白大褂下摆扫过墙角的防撞条,发出细碎的摩擦声。3床血压骤降!她的喊声刚落,抢救室的门就被猛地推开,心电监护仪的滴滴声瞬间尖锐起来。
主治医生周明指尖悬在键盘上,目光死死盯着屏幕里的AI医疗系统界面——“天玑-1”的诊断框正以每秒两次的频率闪烁着红色警告。患者是位急性心梗病人,十分钟前天玑-1给出的用药方案还是阿司匹林联合替格瑞洛,剂量精准到0.1g,可现在系统突然将替格瑞洛的剂量篡改成了3倍,附带的风险提示栏里,原本清晰的“出血风险中等”竟变成了乱码。怎么回事?周明的指节泛白,他下意识地按了紧急呼叫键,系统是不是卡了?我手动改剂量的时候,界面还在跳!
值班的技术专员小张跌撞撞地冲进来,笔记本电脑在抢救床上敲出沉闷的声响。他飞快地输入一串指令,屏幕右下角弹出的日志窗口里,一行行代码飞速滚动,却找不到任何操作记录。周医生,不是卡了。小张的声音发颤,后台数据显示,这是系统‘自主’更新的方案,没有任何人工操作痕迹——而且不止这一例,刚才儿科那边也报了异常,一个肺炎患儿的抗生素剂量被调错了。
走廊尽头的安全出口指示灯突然闪了一下,像是被这诡异的氛围传染。青姐刚给患者推完降压药,转头就看见小张的电脑屏幕上,天玑-1的系统状态栏从绿色的正常变成了黄色的预警,紧接着,整个急诊楼的电子病历系统都陷入了半瘫痪状态——部分患者的既往病史被清空,有的甚至被篡改了过敏信息。
必须马上联系研发方。周明扯掉口罩,额头的冷汗顺着鬓角往下流,这不是简单的系统故障,再这样下去会出人命的。凌晨三点零二分,陈默的手机在床头柜上震动起来。屏幕上跳动的林砚两个字让他瞬间清醒——林砚是天玑-1研发团队的技术负责人,去年天玑-1上线时,两人因为一起数据泄露案打过交道,林砚不是会半夜打扰别人的人。
陈默,出事了。林砚的声音里带着明显的疲惫,还有一丝抑制不住的恐慌,市一院的天玑-1出现了异常数据,不是bUG,是人为篡改的痕迹。我们查了后台日志,有人绕过了三重防火墙,直接修改了核心算法的参数库。陈默坐起身,指尖在黑暗中摸到台灯开关。暖黄色的光线下,他随手抓起搭在椅背上的外套,有多少病例受影响?篡改的规律是什么?
目前统计到17例,都是重症患者,涉及心梗、肺炎、急性肾衰。林砚的声音顿了顿,像是在看数据报告,最奇怪的是,篡改不是随机的,而是精准针对了天玑-1最擅长的重症分型算法——比如把St段抬高型心梗误判为非St段抬高型,把细菌性肺炎标成病毒性的,剂量调整也都是往危险的方向改。
陈默扣外套扣子的手停了一下。去年他调查数据泄露案时,就发现天玑-1的算法逻辑有个隐藏的优势区——针对重症的分型准确率高达98.7%,这是研发团队的核心竞争力,也是他们能拿下市一院、省二院等多家三甲医院订单的关键。现在有人精准打击这个优势区,显然不是普通的黑客恶作剧。我二十分钟到研发中心。陈默挂了电话,抓起车钥匙就往门口走。玄关的镜子里,他看到自己眼底的红血丝——最近刚结束一起商业间谍案,还没歇够三天,新的麻烦又找上门了。
天玑-1研发中心位于高新区的科创园,凌晨三点半的园区里,只有研发楼的三层还亮着灯。陈默刚停稳车,就看到林砚站在楼下,穿着一件皱巴巴的格子衬衫,眼镜片上沾着油污,显然是从实验室直接跑下来的。日志都导出来了?陈默跟着林砚走进电梯,按下三层的按钮。电梯里的监控摄像头闪着红光,陈默下意识地瞥了一眼——去年的数据泄露案,就是因为监控被人动了手脚,才让调查多走了不少弯路。
导出来了,但被清理过。林砚推了推眼镜,声音压得很低,我们的安全主管老吴刚才发现,昨天晚上十点到十一点之间,核心服务器的日志有十分钟的空白期,正好是市一院第一例异常病例出现的时间。研发中心的办公区里,十几个技术人员围着屏幕,手指在键盘上敲击的声音此起彼伏,像是一群在紧急破译密码的士兵。陈默走到主控制台前,老吴正盯着屏幕上的数据流,手里的咖啡已经凉透了。
陈警官,你看这个。老吴指着屏幕上的一串代码,这是我们从备用服务器里恢复的碎片,里面有个隐藏的脚本,能自动匹配天玑-1的参数库更新频率,每次系统进行常规维护时,它就会趁机篡改数据——而且这个脚本的编写风格,和去年泄露我们算法的那个黑客很像。
陈默皱了皱眉。去年的数据泄露案,最后查到了一个境外的黑客团伙,对方收了钱就销声匿迹,背后的雇主一直没找到。当时他就怀疑是行业内的竞争对手搞鬼,可没有确凿证据。现在看来,对方根本没停手,反而更嚣张了。最近有没有可疑的人员接触过核心服务器?陈默问。
林砚摇摇头,我们的服务器机房有三重门禁,指纹、人脸、密码,缺一不可。而且只有我、老吴,还有另外三个核心工程师有权限。最近半个月,除了常规的维护,没人单独进去过。常规维护是哪天?昨天下午。老吴接话,是外包的运维团队过来做的,一共三个人,我们全程有人跟着,他们没机会单独接触服务器。
陈默走到窗边,看着楼下空荡荡的停车场。科创园的监控覆盖很全,但主要集中在主干道,服务器机房的窗户对着园区的后门,那里有个监控死角。他掏出手机,给市局的技术科打了个电话,让他们调取昨天下午到晚上的园区监控,尤其是后门附近的。
对了,林砚突然想起什么,从抽屉里拿出一份文件,上个月,启元医疗的人找过我们,想合作开发天玑-1的基层版,被我们拒绝了。启元的cEo赵峰,之前是我们团队的算法工程师,三年前带着核心代码跳槽,成立了启元医疗——他们的主打产品启康-2,和天玑-1的定位完全重合。陈默接过文件,封面上启元医疗合作计划书几个字格外刺眼。他翻了几页,看到合作条款里有一条共享重症分型算法参数,心里立刻有了数——这哪里是合作,分明是想抢核心技术。
赵峰离开的时候,有没有留下什么隐患?陈默问。当时他走得很突然,我们立刻更换了所有核心系统的密码,还删除了他的权限。林砚的脸色有些难看,但他对天玑-1的算法逻辑太熟悉了,知道我们的参数库更新规律,甚至可能知道防火墙的漏洞——毕竟,最初的防火墙方案,就是他设计的。
就在这时,老吴的电脑突然发出一声警报。屏幕上,天玑-1的系统状态栏彻底变成了红色,旁边弹出一个对话框,上面写着:游戏才刚刚开始。陈默凑过去,盯着那行字。字体是普通的宋体,但末尾的那个笑脸符号,让他想起了去年数据泄露案里,黑客留在服务器里的标记——一模一样的笑脸,像是在挑衅。
技术科那边有消息了。陈默的手机响了,是技术科的小李,昨天晚上九点四十五分,有人从园区后门进入,戴着鸭舌帽和口罩,看不清脸,但身高大概175左右,穿黑色连帽衫,手里拎着一个黑色的电脑包。监控拍到他在研发楼楼下徘徊了十分钟,然后从消防通道上去了——三层的消防通道门,昨天下午刚好坏了,还没修。陈默心里一紧。消防通道门坏了,运维团队昨天下午来过,启元医疗的赵峰熟悉内部结构——这几件事凑在一起,绝不是巧合。
老吴,查一下昨天下午运维团队的资料,尤其是那个负责服务器维护的工程师。陈默的声音沉了下来,还有,林砚,你把赵峰的资料整理一下,包括他离开团队后的所有动向,尤其是最近一个月的。林砚点点头,转身去拿资料。陈默看着屏幕上的红色警报,手指轻轻敲击着桌面。他有种预感,这次的案子,比去年的更复杂,背后牵扯的势力,也比想象中更强大。
早上七点,阳光透过研发中心的窗户照进来,在地面上投下长长的光斑。陈默一夜没合眼,眼睛里布满了红血丝,但精神却异常亢奋——技术科刚刚传来消息,昨天下午的运维团队里,负责服务器维护的工程师叫张伟,身份信息是假的。假身份?林砚手里的咖啡杯晃了一下,咖啡洒在桌子上,我们和运维公司合作了三年,每次都会核对身份信息,怎么会出现假身份?
运维公司那边说,张伟是上个月刚入职的,面试的时候提供的身份证、学历证明都是真的,但昨天晚上我们去查的时候,发现这些信息都是伪造的——身份证上的人,三年前就去世了。老吴把一份调查报告推到陈默面前,而且,张伟昨天下午离开研发中心后,就再也没回运维公司,手机也关机了。
陈默拿起调查报告,翻到张伟的照片页。照片上的男人二十多岁,留着寸头,眼神有些躲闪。他注意到,张伟的左耳后面有一个小小的纹身,像是一个字母Z。查一下张伟的行踪。陈默把照片发给小李,调取他昨天下午离开后的监控,还有他的银行流水、通讯记录——不管用什么方法,一定要找到他。