一
沈亦心已经在这个角落坐了四个小时。
面前的拿铁凉了,一口没动。MacBook Pro的屏幕上是密密麻麻的代码,她的手指在键盘上几乎没有停过,偶尔停下来盯着屏幕眯一下眼睛,然后又继续敲。
咖啡馆在望海市老城区的一条巷子里,叫“避风港”。门脸不大,深绿色的雨棚遮住了半块招牌,里面却出乎意料地宽敞。木质的桌椅被磨出了包浆,墙上挂着几幅黑白摄影,角落里有一架从来没人弹的旧钢琴。下午三点,店里只有三桌客人——两个聊天的中年女人,一个看书的男大学生,以及沈亦心。
她选这个位置是有原因的:背靠墙,正对门口,右手边是通往后厨的过道,不会有人从身后经过。这个习惯是从五年前养成的。
店老板老陈五十多岁,光头,围着一条洗得发白的牛仔围裙。他端着托盘经过亦心身边,瞟了一眼她的屏幕,什么都看不懂,摇摇头走了。他对这位老顾客的唯一印象是:点单永远只喝拿铁,不吃东西,一坐就是一下午,猫毛经常沾满她的黑色卫衣。
亦心正在调试一个反诈App的漏洞。这个App是她自己写的,免费开源,专门识别AI生成的虚假视频。原理不复杂——目前的深度伪造技术,在模拟人类眨眼频率和眼皮自然闭合的力学特征上,始终存在细微误差。普通人看不出来,但算法可以。
她给这个功能取名叫“火眼金睛”。
手机震了一下。她瞥了一眼,是老周发来的消息:“听说你又在当活雷锋?”
亦心没回。老周是她师父,退休前是望海大学密码学教授,退休后比退休前还忙,整天带着一帮学生搞什么“网络安全公益项目”。亦心知道他想拉她入伙,但她不想。准确地说,她不想跟任何人组队。
“补丁”从她脚边的猫包里探出头,叫了一声。橘色的脑袋,琥珀色的眼睛,胖得几乎塞不进猫包。亦心低头看了它一眼,用脚把猫包往桌子底下踢了踢,老陈不让带宠物,但每次都假装没看见。
就在这时,隔壁桌的大爷接了一个视频电话。
二
大爷七十岁出头,穿着一件深蓝色的夹克,头发全白了但梳得整齐。他面前摆着一杯热美式和一块芝士蛋糕,蛋糕只咬了一口。亦心注意到他的手在发抖。
不是因为生病——是因为慌张。
“孙子啊,你怎么了?”大爷的声音突然拔高,引得旁边两个中年女人扭头看过来。
亦心没抬头。她对别人的隐私没有兴趣。
但接下来的一句话让她停下了敲键盘的手指。
“爷爷,我撞人了,对方要我赔八万块钱,不然就要报警抓我……”
亦心慢慢抬起头,从屏幕上方看过去。
大爷的手机屏幕上是一张年轻男孩的脸,二十出头,短发,戴着眼镜,表情痛苦。视频画质不算好,光线偏暗,像是从什么狭窄空间里拍的。
“你别急,爷爷这就给你想办法……”大爷手忙脚乱地翻口袋,找银行卡。
“爷爷你千万别告诉我爸妈,他们会打死我的。”视频里的男孩声音带着哭腔,“你现在就去银行给我转账,我等会把账号发给你。”
“好好好,爷爷这就去——”
“大爷。”亦心的声音不大,但很清晰。
大爷转过头,看见一个穿黑色卫衣的年轻女人正盯着他。她脸色有点苍白,眼圈发黑,像是好几天没睡觉的样子,但眼睛很亮,亮得让人没法忽视。
“您先把电话挂了。”亦心说。
大爷愣了一下,低头看了看屏幕里的“孙子”,又看了看亦心,一脸茫然。
“他在骗您。”亦心的语气很平淡,就像在说今天天气不错,“那不是您孙子。”
“你谁啊你?”大爷有点不高兴,“我自己的孙子我能不认识?”
亦心没跟他争,直接站起来走到他桌前,弯腰看了一眼屏幕。视频还通着,里面的男孩正用一种警惕的眼神盯着她。
“您让他眨一下眼睛。”亦心说。
“什么?”
“让他眨一下眼睛。”
大爷犹豫了一下,对着手机说:“小伟,你眨一下眼睛给这个姐姐看。”
视频里的男孩明显顿了一下,然后眨了一下眼睛。
亦心点了点头,转身回到自己座位上,手指在键盘上敲了几个键,“火眼金睛”的分析结果跳了出来——置信度97.3%,深度伪造。
“大爷,那不是眨眼睛。”她头也不抬地说,“那是用嘴部肌肉运动模拟的眼睑闭合,目前的AI还做不出自然的单侧眨眼。您仔细想想,他刚才眨眼的时候,右边的眉毛是不是也跟着动了?”
大爷盯着屏幕看了好几秒,脸色一点一点变了。
视频里的男孩忽然挂断了。
忙音。
大爷的手抖得更厉害了。他拨回去,无人接听。再拨,已关机。
三个字在他脑子里炸开:被骗了。
他的脸从慌张变成苍白,又从苍白变成通红。不是因为愤怒,而是因为羞耻——他活了七十年,居然被一个看不见摸不着的骗子耍得团团转。
“我……我差点……”他喃喃地说,声音沙哑。
“您的卡还在,钱没转。”亦心终于看了他一眼,“没事。”
她从包里翻出一包纸巾,隔着一张桌子扔过去,纸巾包准确落在大爷手边。然后她又低下头,继续敲代码,好像什么都没发生过。
大爷想说什么,嘴唇动了几下,最终只是重重地叹了口气。
三
林远进来的时候,正好看到这一幕。
他是来买咖啡的。准确地说,是来给专案组买咖啡的。队里五个人的口味各不相同——美式、拿铁、焦糖玛奇朵、馥芮白,还有一杯热可可(老张不喝咖啡),他已经在群里问了两遍谁要什么,没人回他,他就自己做了决定,错了算他的。
推开门的瞬间,他习惯性地扫了一眼整个空间。这是职业病,当了十二年警察养成的肌肉记忆,改不掉。三桌客人,两个中年女人正用一种看八卦的眼神看着角落,一个看书的男大学生戴着耳机什么都没听见,角落里一个穿黑卫衣的年轻女人正在敲键盘,脚边有个猫包。
还有一个大爷,站在靠窗的位置,手里攥着手机,表情复杂。
林远没太在意,走到吧台前跟老陈点单。
“六杯,一杯美式,一杯拿铁,一杯焦糖玛奇朵,一杯馥芮白,还有一杯热可可——”他顿了一下,“算了,热可可换成摩卡,老张最近在控糖,但我不信他能忍住。”
老陈面无表情地记着。他对林远有印象,这个人每次来都是买五六杯,每次都换一个搭配,每次都把最后一杯换掉。
等咖啡的时候,林远又扫了一眼那个大爷。大爷已经坐下了,但整个人像泄了气一样靠在椅背上,面前那块芝士蛋糕彻底不吃了。
角落里敲键盘的声音停了。
“大爷。”那个穿黑卫衣的年轻女人又开口了。
林远竖起耳朵。
“您孙子的手机号,您记得吗?”她问。
“记、记得。”大爷的声音还在抖。
“您给他打个电话,确认一下他安不安全。”
大爷愣了一下,猛地点头,颤巍巍地拨了一个号码。
电话响了两声就接了,那头传来一个年轻男孩的声音,中气十足:“爷爷!咋啦?”
大爷愣在原地。那个声音和他刚才视频里听到的一模一样,但语气完全不同——刚才视频里的“孙子”在哭,这个孙子在笑,笑得没心没肺。
“小伟,你……你没事吧?”
“没事啊,我在学校打球呢。爷爷你咋了?”
大爷沉默了很久,长长地呼出一口气,那口气里有庆幸,有后怕,还有一点劫后余生的虚脱感。
“没事,爷爷就是想你了。”
挂了电话,他转过头看那个年轻女人,嘴唇哆嗦了半天,最后说了一句:“谢谢你啊,姑娘。”
“不用谢。”她已经在盯着屏幕了,“您以后记住,不管谁让您转账,先打个电话确认。视频通话也不可信,现在什么都能造假。”
大爷点头如捣蒜,从钱包里掏出两百块钱放在她桌上。
亦心看了一眼那两张红票子,又看了一眼大爷。她的表情没有什么变化,但林远注意到她的嘴角动了一下,像是想笑又忍住了。
“我用不着。”她说,“您拿回去请孙子吃饭吧。”
大爷再三道谢,终于走了。那块咬了一口的芝士蛋糕还留在桌上,像是某种无声的证物。
四
林远的咖啡好了。
他提着六个杯子走过去,故意绕了一下,经过那个角落。
“你刚才怎么一眼看出来那是AI?”他问。
亦心没抬头,继续敲代码:“我没看一眼看出来,我看了三眼。”
“……好。”林远被噎了一下,决定换个角度,“你那个软件,能识别深度伪造?”
“嗯。”
“准确率多高?”
“看情况。光线好的话,九成五以上。”
林远吹了声口哨。他在刑警队干了十二年,见过不少AI诈骗的案子,尤其是最近一年,光是他经手的就有七八起,涉案金额从几万到几百万不等。如果能有一个工具,让普通人在接到视频电话的时候就能快速识别真假——
“你这个软件,市面上能下载吗?”
“能。”亦心终于抬起头看了他一眼。
这一眼很短,但林远记住了她的脸:年轻,不超过三十岁,皮肤很白但不是健康的那种白,眉眼清晰,嘴唇有点干。黑色卫衣的袖口磨出了毛边,左手腕上戴着一块老旧的电子表。
她看人的方式很特别,不是盯着你的脸,而是先看你的眼睛,然后迅速扫一遍你的肩膀、手和腰线,最后回到眼睛。整个过程不到两秒,但林远知道这意味着什么——她也在“扫描”他。
两个人都在观察对方,都不动声色。
“你是警察?”亦心问。
林远低头看了看自己——深色夹克,深色裤子,系着腰带,脚上一双半旧的皮鞋。他今天没穿制服。
“怎么看出来的?”
“你的站姿。”亦心说完就低下头,继续敲键盘,“还有你刚才进来的时候先扫了一眼整个房间,那是标准的安全检查动作。”
林远笑了。不是因为她说对了,而是因为她说的方式——不解释,不铺垫,直接给结论,干脆得像个医生在宣读诊断报告。
“你当过兵?”他问。
“没有。”
“那你怎么会——”
“我观察力比较好。”
林远知道这句话是逐客令。他点了点头,拎着咖啡往外走,走到门口又回头看了一眼。那个年轻女人已经在敲键盘了,好像刚才什么都没发生过。脚边的猫包里探出一只橘色的猫头,正用一种懒洋洋的眼神打量着他,然后打了个哈欠,缩回去了。
五
林远回到队里的时候,咖啡已经凉了。
他按照杯盖上用记号笔写的名字分了一圈,最后那杯摩卡放在老张桌上。老张今年五十二,在队里干了快三十年,破过的大案要案比林远吃过的盐还多,但他从来不倚老卖老,反而总说自己“跟不上时代了”。
“刚才去咖啡馆,碰到个有意思的人。”林远把咖啡放下,把刚才的事情说了一遍。
老张听完没说话,拧开摩卡的杯盖看了一眼,又拧上了。
“一个年轻女的,自己写了个识别深度伪造的软件?”老张问。
“对。”
“免费给人用?”
“好像是。”
老张把椅子往后一仰,两只手枕在脑后,盯着天花板看了几秒。
“小远,你知不知道现在AI诈骗的案子有多少?”老张说,“去年全市就报了四十多起,这还是有记录的。那些被骗了不敢报案的,那些被骗了几千块自认倒霉的,加在一起至少翻一倍。这帮王八蛋用的就是深度伪造,视频电话里是‘你儿子’、‘你女儿’、‘你领导’,声音像、脸也像,谁能分得出来?”
林远知道老张的意思。他不是不想破这些案子,是很难。骗子在境外,用的是虚拟号码和加密通讯,钱一到账就被洗得干干净净。就算抓到人了,被害人账户里的钱早就没了。
“那个女的叫什么?”老张问。
“没问。”
“你买个咖啡的工夫都能观察出你是警察,结果没问名字?”
林远被噎住了。
老张看了他一眼,笑了,那个笑容里有一种过来人的了然:“回头再去一趟。这种人,说不定什么时候就用得上。”
林远没接话。他打开手机,翻了翻通话记录,又关上了。
他确实没问名字。但他记住了那家咖啡馆的名字——“避风港”。
六
亦心又坐了半个小时,把代码跑完最后一遍测试,合上电脑。
她收拾东西的时候,老陈走过来收杯子。大爷留下的那块芝士蛋糕还在桌上,已经软塌塌了。
“那老爷子差点被骗八万?”老陈问。
“嗯。”
“你救了他。”
亦心把电脑装进双肩包,拉好拉链,没接话。
“姑娘,”老陈的语气变了,不像平时那样敷衍,认真了很多,“我在这开了八年店,你来了三年。头一年你什么都不点,就坐在这蹭网。第二年你开始点拿铁,但一口不喝。第三年你还是点拿铁,还是不喝。我就想问你一句——你到底图啥?”
亦心拉上猫包的拉链,“补丁”在里面不满地叫了一声。
“图这儿有插座。”她说。
老陈看着她,摇了摇头,转身走了。
亦心背着包,拎着猫,走到门口时停了一下。
门外的天已经暗了,巷子里亮起了路灯。秋天的傍晚风有点凉,吹得她卫衣的帽子呼呼作响。她看了一眼手机上的时间,然后注意到老周又发了一条消息,这次是一张照片——一个中年男人站在讲台上,背后是一块写满公式的黑板。
亦心的手指在屏幕上停了几秒。
那是她父亲。照片至少是十年前拍的,那时候他还活着,头发还没全白,眼睛里有一种她很久没见过的光。
她关掉手机,把卫衣的帽子拉上,走进了巷子里。
猫包里,“补丁”又打了个哈欠。