2026年4月15日,破晓传媒办公室,凌晨两点十七分。
何潇坐在那台旧台式机前,屏幕上密密麻麻的代码像一片暗绿色的深海。十一个小时,他只在中间站起来过两次,一次倒水,一次把窗户推开一条缝,让夜风灌进来,把积在胸腔里的闷热散出去一些。屏幕上除了代码,还有一条几乎看不见的、极细的数据链路,像一根透明的蛛丝,悄悄延伸向远方那个蓝色标志的方向。
办公室里只有他一个人。周远在凌晨一点的时候撑不住,裹着那件旧外套,缩在角落的折叠床上睡着了。田笑十一点左右离开,苏未晚走得更早——明天早上七点她还要去社区中心,帮那些报名疗愈课的人登记信息。程野今晚在线下,说有一个失眠的老阿姨给他打了电话,他要去陪她说会儿话。
何潇盯着屏幕,手指在键盘上缓慢地敲击着。不是他在思考,而是那些代码在等着他,像一片未经开垦的土地,需要他一个字一个字地犁过去。他推了推眼镜,镜片上又多了一道划痕,这是他思考时的习惯动作。那道划痕是三天前他趴在桌上睡着时,被键盘边缘蹭出来的。
他正在做一件事。
他要给破晓的声音投稿系统加一道锁。
事情的起因很简单,也很沉重。自从周远发表了那篇“声音宣言”之后,破晓传媒的投稿量开始呈指数级增长。最初每天只有几十条,后来是一两百条,最近三天,每天涌入的声音投稿已经超过一千条。外卖小哥在送餐路上哼的歌、夜班护士在更衣室里录的独白、失眠者在凌晨三点对着手机说的心事、一个九岁小女孩朗读的自己写的诗——那些声音从城市的各个角落涌来,像潮水一样灌进破晓传媒那个简陋的后台。
周远最初是高兴的。他坐在那台旧电脑前,一条一条地听那些投稿,听到凌晨也不肯去睡。他说这些声音是真实的,是破晓存在的意义。但何潇看到了另一面。
他看到了那些声音的数据流。
“有人在我们后台外面搭了一座桥。”
何潇坐在电脑前,指着屏幕上那条几乎看不见的、极细的数据链路,对周远说。那是三天前的事。周远站在他身后,低头看了很久,没有说话。
“你看这里。”何潇的鼠标沿着那条细线滑动,“我们的投稿系统接收音频文件,然后存储到本地服务器。正常的数据流应该是‘用户上传,服务器接收——存储’,但这条链路的流向是‘用户上传,服务器接收——转发,存储’。”
“转发到了哪里?”
“天幕集团的数据中心。”
周远沉默了一会儿。办公室里的空气像凝住了一样,只有电脑风扇嗡嗡转动的声音。
“他们能看到那些声音?”周远问。
“不只是能看到。”何潇说,“他们的算法会把每条投稿进行声纹分析,提取情绪特征、语调特征、内容关键词。然后会跟他们的数据库进行交叉比对,标记出那些‘可能对标准化内容产生威胁’的声音。换句话说——每一个向我们投稿的人,他们都在被天幕集团的算法分析。他们不是匿名投稿。他们说的每一句话,都会被记录、被解析、被分类。”
周远走到窗边,看着远处天幕集团总部的蓝色标志。夜色里,那个标志像一只睁着的眼睛。
“能封住吗?”他问。
何潇没有立刻回答。他坐在那里,手指在键盘上无意识地敲了两下,说:“可以。但封住一条链路,他们可以搭第二条。他们不是只有一个人在做这件事,天幕集团的内容安全部门至少有三十个人在持续监控我们的数据流。我们封一条,他们开一条。我们需要一个更根本的解决方案。”
“什么方案?”
“加密。”何潇说,“我们不能阻止他们看,但我们可以让他们的算法看不懂。”
周远转过身来:“你打算怎么做?”
何潇推了推眼镜,镜片上的那道划痕在灯光下闪了一下。他说:“我需要几天时间。”
那段对话发生在三天前。三天里,何潇几乎没怎么出门。他研究天幕集团的声纹分析系统,研究他们的特征提取算法,研究他们的数据比对逻辑。他发现了一个关键漏洞——天幕集团的算法有一个预设前提:所有音频都是“标准化内容”,即采样率、振幅、频谱密度都在一个预设范围内,且声纹特征能够被他们的模型明确分类。
换句话来说,他们的算法只会分析那些“能被分析的声音”。如果一段音频的声纹特征被刻意打碎、重组、加密,算法就无法提取有效特征,就会把它判定为“无价值内容”,自动丢弃。
“就像一篇用密码写成的日记。”何潇在笔记本上写下这句话,然后划掉了,“不对。更像一件用隐形墨水写的信。他们能看见纸,但看不见字。”
他决定做两件事。
第一,开发一个声音加密算法。所有投稿破晓传媒的音频文件,在进入服务器之前,先经过一道加密处理。加密的方式不是简单地加密码或者加干扰层,而是利用声音本身的特性,把人声的频率进行分段转换,每一段用不同的密钥进行调制,然后在存储时把调制后的数据段随机分散存储到不同的数据块中。天幕集团的算法如果截获了这些数据,只能看到一堆毫无规律的数字乱码,无法解析出任何声纹特征。
第二,在加密层外面加一道“伪装层”。用何潇的话说,就像给一封密信套上一个普通的信封。伪装层会把加密后的数据流重新包装成标准的“情绪稳定型内容”格式——采样率、振幅、频谱密度全部符合天幕集团的标准值。这样即使他们的系统截获了数据,也会判定为“合规内容”,不会触发人工复核。
“这个方案有一个问题。”何潇在笔记本上画了一个结构图,自言自语道,“伪装层的格式必须跟天幕集团的标准化协议完全一致,否则他们的系统会识别出异常。我需要拿到他们的协议规范……但他们的协议规范是不公开的。”
他花了两天时间,从公开的文档、第三方开发者社区、以及那些曾经跟天幕集团合作过的技术人员的博客里,一点一点地拼凑出他们的大致协议框架。他拼了四十八个小时,中间只睡了不到四个小时。到第三天凌晨,他终于把那套协议的完整结构还原了出来。
“他们用的是旧世界的技术协议。”何潇看着屏幕上那行他刚刚写下的代码,忽然停住了。他想起了一些事。
旧世界的技术协议。
那些协议是他写的。或者说,是他监督一群人写的。在2526年,大澄净时代,他是情绪调配系统的技术总监,负责维护整座城市的情绪平衡算法。那时的技术协议,是他和五个人一起设计的,他们建立了标准化的声纹采集规范、情绪特征提取算法、内容分发协议。那些代码曾经被他视作“让世界更美好”的工具。
而现在,他在这里,用同样的技术知识,去破解一个平行世界里娱乐集团的加密协议。
他坐在那里,看着屏幕上那些代码,像是在看一面三百年的镜子,照见了自己从未改变的初心。那些代码是他写的,三百年前是,三百年后也是。变的只是用途,不变的是他一直在做的那件事——让声音能够被安全地表达出来。
“你还在吗?”
何潇的手指悬在键盘上方,停了一秒。然后他敲了下去。
凌晨四点十七分,何潇的加密系统完成了第一版。他把测试文件上传到后台,然后运行了一套模拟天幕集团声纹分析系统的程序,对加密后的文件进行解析测试。程序运行了大约三十秒,输出了一行结果:无法提取有效声纹特征,判定为无价值内容,已丢弃。
何潇看着那行结果,没有动。他又运行了一遍,结果相同。第三遍,还是相同。他靠在椅背上,长长地呼出一口气,那口气像在胸腔里积攒了很久,出来的时候带着微微的颤抖。
他站起来,走到窗边,推开窗户。凌晨的风灌进来,带着一股潮湿的、属于夜的气息。远处的城市还在沉睡,路灯连成一条昏黄的线,像一根被拉长的光带。天幕集团总部的蓝色标志还亮着,在夜色的尽头一明一灭。
他站了一会儿,回到电脑前。他没有停,继续下一步工作。
加密系统做好之后,他需要把它接入投稿系统的入口。这需要改动现有系统的前端代码和后端接口,而且不能影响用户的正常投稿体验。何潇把投稿页面的源码调出来,一行一行地检查,在关键节点插入加密模块。
他的动作很轻,很慢,像一个工匠在打磨一件器物。键盘的声音细碎而均匀,在安静的办公室里回响,那种声音,像雨水落在一面平静的湖面上,没有惊扰什么,只是让水面悄悄地动了一下。
上午九点,周远醒了。他裹着那件旧外套坐起来,揉了揉眼睛,看到何潇还坐在电脑前,屏幕上多了一堆他看不懂的代码。
“你一宿没睡?”周远走到他身后,声音有点哑。
“睡了。”何潇说,“凌晨的时候趴在桌上眯了十分钟。”
周远没有接话。他看着何潇的后脑勺——那个一贯温和、软和、不争不抢的男人,此刻的背脊绷得很直,像一根被拉紧的弦。
“做完多少了?”周远问。
“核心加密模块已经完成,正在接入投稿系统。”何潇说,声音不高,但每个字都落得很稳,“今天下午之前应该能跑通。到时候所有用户上传的音频都会先经过加密层处理,再进入服务器存储。”
周远沉默了一会儿:“天幕集团那边……会察觉吗?”
何潇想了想:“短时间内不会。加密后的数据流会伪装成标准化格式,他们的系统会用‘无价值内容’的标准来处理。但如果他们的人工审核团队介入深度分析,发现异常是迟早的事。”
“那能撑多久?”
“不确定。”何潇说,“可能几天,可能几周,可能更久。”他停了一下,又补了一句,“但不管撑多久,至少在这段时间里,那些声音不会被人偷走。”
周远站在那里,看着何潇的手指在键盘上继续敲击。他没有再说话,只是绕到何潇身后,把桌上那杯凉透了的水端起来,去饮水机那边接了一杯热水,放回何潇的肘边。
何潇没有回头,但手指停了半秒。
“谢谢。”他说。
上午十一点,程野来了。他进门的时候,手里提着一个塑料袋,里面装着几个包子和两杯豆浆。他把东西放在桌上,看了一眼何潇屏幕上的代码,又看了一眼何潇布满血丝的眼睛。
“进展怎么样?”
“主模块完成,正在测试。”何潇说,眼睛没有离开屏幕,“刚跑完第三轮模拟攻击,加密层没有破绽。但还有一个问题。”
“什么问题?”
何潇把椅子往后推了推,转过身来。他的脸上带着一种少见的认真,那副眼镜滑到了鼻梁上,他没有去推。
“加密只能保护数据在传输和存储过程中的安全。”他说,“但用户的声音被录制下来的那一刻,就是裸的。如果天幕集团的算法在用户录音的瞬间就拦截音频流,那我们后台的加密就起不到任何作用。”
程野在桌边坐下,拿起一个包子,但没有吃。他看着何潇,等他继续往下说。
“所以我在想一个方案。”何潇说,“在用户录制音频的时候,就在本地端做一层实时加密。用户录制的每一段声音,在进入麦克风的那一刻就被打碎、重组、加密,然后以密文的形式上传到我们的服务器。这样即使天幕集团在传输链路上设置拦截器,他们也只能拿到密文,拿不到原始声纹。”
程野想了想:“这样做的话,用户上传的音频,我们还能正常播放吗?”
“可以。”何潇说,“我会在服务器端设置解密密钥。密钥只有我们这边有,用户端不保存。上传的音频在服务器上解密后,可以正常收听和播放,但任何第三方截获的数据都只是一堆乱码。”
“密钥有多少?”
“一个主密钥,加动态子密钥。”何潇说,“每个用户每次上传,都会生成一个新的子密钥。子密钥只有主密钥能解锁。换句话说,即使天幕集团截获了一百条加密音频,他们也无法用任何一份截获的数据反推出其他数据的解密方式。”
程野终于咬了一口包子。他嚼得很慢,像是在消化何潇的话,又像是在消化别的东西。过了好一会儿,他说:“需要多久?”
“本地端加密模块,最快还需要一天。”何潇说,“今天下午我把服务器端的加密系统接入投稿流程,明天上午之前完成本地端模块的开发和测试。明天晚上之前,整个系统可以跑通。”
程野点了点头。他没有说“加油”,也没有说“辛苦了”。他只是把另一杯豆浆推到何潇面前,说:“先把包子吃了。”
何潇看了一眼那杯豆浆,还冒着热气。他没有说话,拿起包子,咬了一口。办公室里安静下来。外面的街道上有车流声响起,是新一天的城市在缓慢醒来。阳光从窗户照进来,落在那台旧台式机的屏幕上,落在那些密密麻麻的代码上,落在何潇的侧脸上。
下午两点,加密系统服务器端完成接入。何潇运行了最后一轮测试——他用一个模拟用户账号上传了一段测试音频,然后检查了音频在服务器上的存储状态。存储的文件是一串密文,无法直接播放,无法提取声纹特征,无法进行内容解析。他再用系统解密,恢复了原始音频,播放正常。
“成了。”他说,声音很轻,像是怕惊动什么似的。
周远从折叠床上坐起来,他午休了一小会儿,听到这两个字,走到电脑前。何潇把屏幕上的测试结果展示给他看:加密前、加密后、解密后的三段音频波形图,以及天幕集团声纹分析系统的模拟判定结果——“无价值内容,已丢弃”。
周远看着那行字,沉默了一会儿。一个多月前,他还在那间价值八十万的录音棚里,听着那些经过“标准处理”的音乐,觉得一切都很好。现在他站在一间废弃的办公室里,看着一台旧电脑上的一行代码。有什么东西不一样了。
“何潇。”他说。
“嗯?”
“那些声音,以后不会再被人偷走了吧?”
何潇想了想,说:“会一直有人想办法偷。但我们可以一直想办法锁。”
周远没有再说话。他伸手拍了拍何潇的肩膀,拍得很轻,像是拍一个刚完成了一场长途跋涉的人。
下午四点,程野的直播刚下播就赶过来了。他进门的时候,手里拿着一根烤肠,嘴里还嚼着半根。他看了何潇一眼,又看了屏幕上的代码一眼,说:“哇,你这是一夜变秃的节奏啊。”
“我头发还很浓密。”何潇平静地说。
程野走到屏幕前,凑近看了看那些代码,看了一会儿,退后两步,表情变得认真了一些:“这个……是给投稿系统加锁的?”
“嗯。”
“能防住天幕集团吗?”
“短时间内能。”
程野把那半根烤肠咽下去,看着何潇,说:“那你是不是得留个后门?万一我们自己也打不开那些加密文件,那不就完了?”
“不会。”何潇说,“主密钥我会备份三份,分别存在三台不同的离线存储设备里。即使服务器被攻破,密钥也不会泄露。”
程野点了点头,又想了想:“那那些投稿的人,他们知道自己的声音被加密了吗?”
何潇停了一下。他确实还没想过这个问题。他坐在那里,沉默了几秒,说:“现在不知道。但我可以在投稿页面上加一行提示——‘您的声音将被加密保护,未经您的授权,任何人都无法获取您的音频数据。’”
“这个好。”程野说。他走到窗边,看了看外面的天色,又说:“你打算什么时候上线?”
“今晚。”何潇说,“今晚八点之前,整个系统上线。从今晚开始,所有向破晓投稿的声音,都会经过加密保护。”
程野点了点头。他靠窗站着,阳光从侧面照在他脸上,像镀了一层金。他看了何潇一会儿,忽然说:“何潇,你知道吗,在旧世界的时候,我从来没觉得技术有什么了不起的。我觉得那都是你们这些工程师的事,跟我没关系。但今天,我觉得技术真的可以做一些很了不起的事。”他伸手指了指那台旧电脑上的代码,“你写的这个东西,比我们唱一万首歌都管用。因为它是让一万首歌都能安全地被唱出来。”
何潇没有说话。他低着头,看着自己那双手。那双手在旧世界里敲了三百年的代码,维护过一个城市的情绪平衡,也在平行世界里拆过一台摔坏的录音笔。那些手不算粗糙,也不算灵巧,但它们一直在做的事情,从来都是同一件事——让声音能够被安全地表达出来。
“今晚上线。”何潇说,声音不高,但很确定。
晚上七点五十八分,何潇把加密系统从测试环境切换到生产环境。他坐在电脑前,屏幕上显示着一行字:系统已上线。投稿通道加密保护已生效。
他没有欢呼,也没有笑。他只是坐在那里,看着那行字,安静了一会儿。然后他打开投稿后台,看到一条新的投稿提醒,有人刚刚上传了一段音频。投稿时间:19:57。比系统上线时间早了一分钟。
何潇点开那段音频。
一个女人的声音,听起来大概四五十岁。她说:“我不知道这个能不能被听到。我也不太会用手机录音,是我女儿教我弄的。我今天想录一段话,给那个叫破晓的直播间。我每天早上五点起来,去菜市场上班,一直忙到下午两点。我没什么特别的,我就是想说,我每天早上路过那个路口的时候,都会看到一棵树,那棵树在路灯底下站着,我每天早上都跟它打招呼。我不知道它能不能听见。但今天我想把这句话录下来,算是……”
她停了一下,像是有点不好意思。
“算是,有一个声音,是给它的。”
音频到这里结束了,一共二十三秒。
何潇坐在那里,看着那行播放进度条,看了很久。然后他把那段音频保存好,在备注栏里写下了几个字:已加密,已保护。
窗外,夜色已经完全落下来了。远处天幕集团总部的蓝色标志在夜空中亮着,像一只永不闭上的眼睛。但在这个破旧办公室里,在那台旧电脑的硬盘深处,有二十三个人的声音,被一层看不见的锁保护着。
它们不会被偷走。它们会一直待在那里,等着被听见。
何潇正要关掉后台界面,忽然注意到投稿列表最底部有一条灰色的系统日志。他点开,看到一行字:检测到异常访问请求,来源IP已记录。时间:19:59。
他盯着那行字,手指悬在键盘上方。来源IP的归属地显示的是天幕集团总部大楼的网段。他们已经在看了。而且他们知道,破晓的投稿系统变了。
何潇没有告诉周远。他了解周远——那个男人有时候会冲动,如果知道天幕集团已经盯上了他们的系统,他可能会做出一些不计后果的举动。何潇不想让周远在情绪上头的时候做出决定。他只是在笔记本上记下了那个IP地址,然后在下面画了一条线,写了两个字:明天。
窗外的蓝色标志还在亮着,像一只永远不会闭上的眼睛。但何潇知道,那只眼睛现在看到的东西,已经不再是真的了。
明天,他要去找一个人。一个在天幕集团技术部待过三年、后来被裁员的前员工。那个人手里,可能有一份天幕集团内部的内容安全操作手册。
(第91章 完)