跳到主要内容

Agili 的 Hacker Podcast 2026-09-16

今天的 Agili 的 Hacker Podcast 涵盖了从苹果硬件级真实摄影凭证、M4 芯片的开源驱动逆向,到经典 3dfx 显卡的硬件级复刻,记录了软硬件底层探索与系统架构的最新动向。

苹果提出 Apple Reference Image:用硬件签名验证真实摄影

硬件隔离与数字底片签名

针对生成式 AI 带来的图像真伪辨别难题,苹果安全工程团队推出了 Apple Reference Image(苹果参考图像),率先配置于 iPhone 18 Pro 系列主摄。与事后追加元数据的 C2PA(数字内容真实性标准)不同,该方案在硬件出厂时为相机传感器和安全隔离区(SEP)分别烧录专属椭圆曲线私钥。

拍摄进入参考模式后,传感器在完成光电信号数字化时直接对原始像素与元数据生成硬件签名,操作系统的任何中间层都无法介入篡改。系统通过后台加密凭证与隐匿 HTTP(Oblivious HTTP,隐藏客户端 IP 的中继协议)获取双向时间戳,将快门触发时间锁定在数分钟的狭窄窗口内。

私有云冲洗与防伪边界

带有传感器签名的原始 DNG 底片会上传至苹果私有云计算平台(Private Cloud Compute)。该隔离环境负责去马赛克(demosaicing)与色调映射,内置神经网络会校验原始光电信号是否符合该传感器的物理成像规律,最后生成由 RSA-3072 与后量子签名算法 ML-DSA-87 联合签名的 JPEG 图像。公开分发的照片不包含具体设备标识,若传感器硬件私钥被逆向破解,平台可通过撤销列表作废该设备的所有凭证。

这项技术能为金融身份验证和保险理赔提供防篡改依据,但其安全边界仅限于“证明传感器确实捕捉到了这些光子”。高分辨率屏幕近距离翻拍或实体道具摆拍依然无法被纯像素算法彻底识破,远景摄影仍需结合多方调查验证真实性。

Mozilla 联手 Mistral 在 Firefox 测试 AI 助手

云端数据流向与隐私争议

Mozilla 在测试版 Firefox Smart Window 中接入了法国 AI 公司 Mistral 的多语言模型,用于辅助网页信息整理与跨标签页搜索。虽然双方达成了零数据保留协议,但实现机制依然引发了隐私关注。

用户在输入查询时,本地仅运行一个小型分类器判断操作意图。一旦触发 AI 对话,包含用户提示词、历史浏览记录和上下文在内的完整内容均会被发送至 Mozilla 服务器,再代理传输给 Mistral 的云端接口。对于查找浏览历史这类场景,本地部署小型嵌入模型配合检索增强生成(RAG)即可完成,明文上传云端的方式与用户对“私密浏览”的技术预期存在落差。

硬件开销与本地化权衡

将模型放在云端运行出于对消费级硬件性能的妥协。主流轻薄笔记本通常配备 8GB 或 16GB 内存,本地运行理解能力达标的语言模型通常需要常驻 5GB 至 10GB 内存,会显著增加发热并缩短续航。Firefox 为高级技术用户保留了通过 Ollama 等框架自带模型(BYOM)的纯本地推理选项,同时也允许用户关闭 AI 读取常规窗口记录的权限。

视角反转:纯乘客视角的网页端飞行模拟器

还原后舱体验的慢直播

开发者 rkotcher 制作了一款运行在浏览器内的飞行模拟器。与传统模拟飞行软件不同,玩家在其中只能坐在客舱作为普通乘客。应用支持自选全球起降航线,以真实时间模拟起飞、巡航和降落全过程,座舱前方的小屏幕内置了可交互的国际象棋,舷窗外同步渲染卫星地形数据。

除了作为副屏工作的背景白噪音,该应用被一些用户用于飞行恐惧症的脱敏训练。相比驾驶舱视角,模拟乘客在机舱内部失去直接控制权的真实视点,能更准确地还原恐惧触发场景。

Web 3D 渲染的性能调优

大量并发访问暴露了原型代码的图形瓶颈,部分移动端和低配设备出现了加载崩溃。开发者 LukaD 分析指出,场景内存在未做视锥剔除的客舱盲区模型,阴影贴图被重复绘制两次,产生了超过 300 次绘图调用和上百万多边形;全分辨率运行的环境光遮蔽(GTAO)也消耗了大量计算资源。作者目前已引入卫星瓦片分辨率衰减,并着手优化客舱网格模型。

Google Play 审核周期延长引发开发者分流

自动化与人工审核瓶颈

开源通讯工具 Conversations 与记忆卡片应用 AnkiDroid 的维护者反映,Google Play 近期的版本审查周期频繁延长至一周以上,部分涉及车载适配(Android Auto)等特殊权限的更新甚至停滞两到三周。

大量 AI 生成应用的集中提交消耗了应用商店的审核资源。一旦版本更新触碰敏感组件,系统就会转入人工队列。排队时间过长直接影响了严重安全漏洞的紧急修补(Hotfix),部分开发者选择在商店版中剔除车载功能,转而引导用户通过官网获取完整安装包。

替代分发渠道的现实限制

审核周期的不确定性促使部分团队将精力转向 F-Droid 等第三方开源仓库或独立分发。第三方生态同样受制于系统的安装管控,Android 对侧载(Sideloading)流程的限制日益严格,用户通过外部下载应用时需要手动绕过多重授权界面以及 Play Protect 的安全警告拦截。

开发者借助大语言模型一个月完成 M4 Mac Mini Linux GPU 驱动

逆向复杂的固件交互

开发者 Cody 与 Niklas 借助大语言模型辅助,为搭载 M4 芯片的 Mac Mini 构建了兼容 OpenGL ES 3.0 的 Linux GPU 驱动,已可支持 WebGL 渲染并以 200 帧以上运行《我的世界》。苹果 AGX 架构的硬件寄存器由 RTKit 实时操作系统上的固件统一管理,M4 的固件应用二进制接口(ABI)指针数量和数据结构比 M1 增加了五成。

作者编写了 macOS 虚拟机监控程序(Hypervisor)抓取硬件追踪日志,利用模型比对内存状态并重构共享内存结构。为了绕过图形界面庞大的冗余数据,开发团队进入单用户模式执行极简 Metal 计算脚本,捕获了干净的计算管线信号,并在数天内将验证代码重构为异步 Rust 内核模块。

法律合规与开源路线争议

用户空间方面,团队逆向了专有指令集,发现了未公开的单指令 64 位加法和 128 倍各向异性过滤特性。驱动最终通过了 Khronos 官方的兼容性测试套件(CTS)。

该成果在社区引发了代码合规性讨论。主导苹果芯片 Linux 支持的 Asahi Linux 团队禁止使用大语言模型生成的代码,担心模型训练集来源不明会破坏洁净室逆向工程(Clean Room RE)的法律抗辩基础。作者声明开发过程仅接触了信号追踪与自编着色器,未反编译专有二进制文件。由于主线合并门槛严格,该驱动目前主要以独立内核模块(Out-of-tree)形式分发。

开发者在 FPGA 上复刻 3dfx Voodoo 显卡与整机架构

解决共享内存的延迟瓶颈

开发者 nand2mario 在 Xilinx Kria KV260 开发板上利用 SystemVerilog 重新实现了 1990 年代经典的 3dfx Voodoo Graphics 加速卡(项目命名为 zSST),配合自研的 486 CPU 内核,成功脱机运行了《古墓丽影》初代。

原版显卡依靠 TMU(纹理单元)和 FBI(帧缓冲单元)各自独占的 64 位 EDO RAM 总线提供无冲突带宽。现代 FPGA 开发板上的所有单元必须经由 AXI 接口争用板载 DDR 内存,初始访问延迟高达 280 纳秒。作者在片上设计了 8 KiB 纹理缓存、重放队列(Replay Queue)以及 64 项重排序缓冲区(ROB),通过乱序内存读取掩盖延迟,最后严格按序提交以保证颜色混合与深度测试的正确性。

硬件资源与运行性能

zSST 在 FPGA 上占用了 29,500 个查找表(LUT)和 97 个数字信号处理(DSP)切片。在 100 MHz 时钟下,其仿真填充率达到 78.5 MPix/s,高于原版 50 MHz 显卡的 43 MPix/s。

在整机实测中,《古墓丽影》运行速率约为 12 FPS。性能瓶颈主要受限于承担几何变换与渲染调用的软核 486 处理器,以及共享内存带来的带宽抢占。由于消耗的逻辑门资源远超老式 DE10-Nano 芯片,该项目无法直接部署在目前的 MiSTer 平台上。

黑客拆解道路监控设备曝光 Flock 车牌识别运作逻辑

存储解密与本地处理机制

黑客组织 stegan0gram 拆解了一台部署于道路上方的 Flock Safety 监控设备,提取了完整内部镜像并移交给独立机构公开。分析显示,设备底层为 Android 系统,其媒体分区中明文存储了对称加密密钥,可直接解密核心数据。

设备运行了约 20 个定制程序,当车辆进入视野时会触发高频连拍(单次拍摄 28 至 100 张不等),利用不同曝光参数分别记录全景与高对比度车牌细节。设备端模型在本地完成图像裁剪、行人检测与车型粗分类,再通过蜂窝网络回传至云端执行字符识别。

运行瓶颈与监控网络外延

设备日志记录了约 21 天内的 50,200 辆车流,日均捕获约 3,300 辆。由于本地吞吐量过大,系统记录了超过 2.7 万次存储耗尽错误与频繁的看门狗重启。

车牌识别算法在线下表现出明显的误判倾向,常将保险杠贴纸或国旗徽章识别为车牌进行裁剪。由于该系统在全美范围内被执法机构广泛接入共享,导致本地通行数据被跨行政区域调用,引发了多地对无死角监控网络的阻击与合规审查。

跨界补位:通过替他人工作打破组织内耗

越界补位的实用主义

在复杂的技术组织中,面对其他团队的流程拖延或协作阻力,直接跨界编写代码把对方系统里的事情做完往往是最具杠杆率的解法。早期英特尔推出首款 32 位处理器时,直接派出工程师为微软编译器编写底层支持,通过填平外部链路达成了自身生态目标。

在跨部门需求难以排期的敏捷流程里,直接向对方仓库提交现成补丁,可以绕开漫长的沟通成本。机构运转往往依赖极少数愿意填补职责真空的员工,主动越界不仅能迅速摸清上下游系统的全貌,也更易看清架构的真实边界。

边界意识与防御心理

越界协作需明确区分“解决问题”与“借平行项目争夺控制权”。盲目为了摆脱依赖而自研内部平台,往往会造成架构膨胀。

直接修改非本人负责的代码存在现实阻力。过度介入容易激起负责人员的专业防御心理,严苛的内部权限体系也会消耗执行力。缺乏明确退出机制的过度承揽容易导致维护责任永久转嫁,补位必须建立在清晰的目标边界之上。

Salesforce 全球故障:旧版登录服务的资源雪崩

资源耗尽引发的连锁反应

Salesforce 发生跨区域大面积服务中断,美洲、亚太和欧洲的数千个实例出现不可用。故障根源在于旧版登录服务(legacy login service)陷入了资源耗尽级联反应(resource-exhaustion cascade),共用的验证网关出现拥塞,导致多租户实例无法建立会话。

排查初期,工程团队曾尝试对节点实施滚动重启,但未能打断级联效应。由于重启无法清除配置级缺陷,运维随后转向在隔离节点上验证补丁,并通过慢速流水线推送到全网实例。正值年度大型技术会议期间,密集的现场演示与自动化调用带来的并发流量脉冲,加剧了旧版组件的过载风险。

多租户架构下的状态呈现

故障期间,Salesforce 状态监控页直接列出成百上千个独立的 POD(Point of Delivery,多租户运行单元)节点,引发了不同的运维评价。平铺的编号列表虽然缺少宏观的统一摘要,但每个 POD 对应明确的租户物理集群,精确的颗粒度支持企业运维人员直接将对应 URL 写入应急手册(Runbook),快速核实自身关键业务的实际受影响程度。

播客全文

女:Hello 大家好,欢迎收听 Agili 的 Hacker Podcast,我是莓莓。

男:大家好,我是阿迪。

女:今天一上来想先问你个事,阿迪,你最近刷社交网络,还敢相信那些新闻配图是真的吗?现在的生成式 AI 越来越逼真,有时候连手指和反光都挑不出毛病了。

男:确实很难凭肉眼分辨。以前行业里有 C2PA(数字内容真实性标准,记录图像来源与编辑历史的行业联盟),但它主要是在拍照后加元数据,容易被篡改,还可能暴露摄影师的设备信息。最近苹果的安全工程团队联合相机团队出了个新方案,叫 Apple Reference Image(苹果参考图像),直接从 iPhone 18 Pro 的硬件底层给真实照片发“出生证明”。

女:直接在传感器上盖章?听起来像是在胶卷时代,光线穿过镜头那一瞬间就把防伪水印刻在底片上了。

男:比喻很贴切。具体做法是相机传感器和 SEP(安全隔离区处理器)在出厂时就各自烧录了独有的椭圆曲线私钥。拍摄时传感器进入专门的参考模式,光线变成电信号的一瞬间,硬件直接对原始像素和元数据摘要签名,iOS 操作系统本身根本插手不了。之后把这个数字底片上传到苹果的私有云计算平台,在开源可审计的环境里冲洗成 JPEG,再用抗量子攻击的混合算法做最终签名。

女:这样别人拿到照片,就能确信这串像素确实是真实镜头捕获的。不过如果有人拿支持这个功能的手机,对着一台 4K 显示器翻拍 AI 生成的图,这套机制能防住吗?

男:这就是目前讨论最多的盲区。虽然冲洗时的神经网络会分析传感器杂散光,近景也能靠激光雷达测距,但如果是远景拍摄高精度的伪造场景或大屏幕,传感器依然会老老实实记录下打在上面的光。它能证明这串像素没被 Photoshop 改动,但无法证明镜头前的东西本身是真是假。

女:看来技术只能证明“相机确实拍到了这些光”,至于现实真相,还是得靠线下的事实核查。说到对技术的信任,最近 Mozilla 和法国 AI 公司 Mistral 合作,在 Firefox 测试版里推了一个叫 Smart Window 的助手,本来想主打开源和隐私,结果反而被不少硬核用户吐槽了。

男:争议的核心在数据链路。Mozilla 宣传这款功能很注重隐私,甚至签了零数据保留协议。但用户仔细看条款才发现,设备本地只有一个超小的意图分类模型,负责判断你是在普通搜索还是在向 AI 提问。一旦你开始对话,你的提示词、相关记忆,甚至历史标签页的上下文,都会被打包发送到 Mozilla 的服务器,再转发给 Mistral 的云端。

女:难怪大家会有落差。在很多人的印象里,Firefox 以前做过纯离线的翻译功能,大家期待的“私密 AI”应该是在自己电脑本地运行的,而不是把看过的网页传到第三方云端。

男:从工程角度看这也是一种妥协。很多普通用户的笔记本只有 8GB 或 16GB 内存,还是集成显卡。如果真在本地跑一个聪明的语言模型,风扇马上狂转,电池撑不了多久,普通用户可能用一次就关掉了。只是产品宣传时用了“私密”这个大词,技术实现上却走的是云端转发,让那些冲着隐私来的极客觉得不够坦诚。

女:产品在性能预期和隐私底线之间确实很难两全。不过说到让电脑风扇狂转,最近还有个非常有意思的轻量小网页,直接把不少人的显卡跑满了。开发者 rkotcher 做了一个运行在浏览器里的飞行模拟器,但你不是飞行员,而是坐在经济舱里的乘客。

男:这个点子很有幽默感。传统的微软模拟飞行是教你怎么开波音 737,这个项目是让你选一条航线,然后系好安全带,盯着舷窗外的卫星地图发呆,前排座椅屏幕上甚至还能下国际象棋。

女:好多人把它挂在副屏当工作白噪音,像是在看高空慢直播。更妙的是,有恐飞症的网友说航空公司以前提供的脱敏训练都在驾驶舱,但他真正害怕的是坐在后排那种无法掌控局面的感觉,这个模拟器反而成了他的心理脱敏工具。不过为什么一个看风景的网页会让很多人的浏览器崩溃?

男:纯粹是图形渲染上的冗余。社区有图形开发者拿工具分析了,发现它的阴影贴图被重复绘制了两次,视线外面看不到的客舱模型完全没有做裁剪,而且全分辨率开启了 GTAO(真实环境光遮蔽技术,用于计算角落阴影的算法)。好在作者回应说原本只是个周末业余项目,接下来会给客舱网格减面,顺便修复一下弹窗问题。大家还开玩笑建议他,既然追求真实,干脆把前排突然倒下的椅背、后排踢凳子的小孩也做进去。

女:那这个飞行体验就过于逼真了。刚才提到开发者利用业余时间折腾,最近底层硬件圈也发生了一件挺轰动的事。两位开发者 Cody 和 Niklas,只用了一个月左右,借助代码大语言模型,给 M4 芯片的 Mac Mini 写出了一套能跑 OpenGL ES 3.0 的 Linux GPU 驱动。

男:这在过去几乎是不可想象的速度。苹果的 AGX(苹果自研 GPU 架构)非常封闭,硬件寄存器不对外暴露,全靠 RTKit 实时操作系统上的固件在管。A18 Pro 和 M4 的固件接口复杂度比 M1、M2 翻了一倍,光是理清共享内存的数据结构就能把人逼疯。

女:他们是怎么在短短一个月内理清楚的?

男:他们用了虚拟化工具抓取硬件追踪日志,然后让大语言模型记录固件触发时的整块 GPU 内存,在重启后重放,一点点剔除无关的内存页,纯靠比对把所有的共享内存结构反推出来。接着 Niklas 负责把 Mesa(Linux 开源图形栈核心组件)跟这块新芯片对接,最后成功以 200 多帧流畅运行了《我的世界》。

女:这简直是逆向工程的超级外挂。不过我听说主导苹果芯片 Linux 移植的 Asahi Linux 团队,反而拒绝合并这套代码?

男:对,这引发了很大的合规讨论。Asahi Linux 一直严格坚持“洁净室逆向工程”,也就是分析规范的人和写代码的人必须物理隔离,防止任何专有代码的版权污染,他们对大语言模型生成的代码也是明文禁止的。毕竟苹果拥有庞大的法务团队,一旦训练集里混入了泄露的源码,整个开源项目都会面临法律风险。作者虽然解释自己全程只分析了抓到的硬件信号,但在这个法律边界完全明朗之前,社区可能只能以树外模块(Out-of-tree,未合入官方主线的独立驱动)的方式来分发它了。

女:在大模型时代,连逆向工程的版权界线都变得微妙了。说到复现硬件,最近还有位硬核开发者 nand2mario,直接在 FPGA(现场可编程门阵列,可通过编程重构内部电路的芯片)上,用代码重写了上世纪末大名鼎鼎的 3dfx Voodoo 显卡,还在上面跑通了原版的《古墓丽影》。

男:这真的是老玩家的情怀。当年 3dfx 的 Voodoo 1 几乎是 PC 3D 加速的代名词,那时候的显卡只负责处理 3D 纹理,平时还得靠一根转接线连到普通 2D 显卡上。

女:用现代的开发板去复刻三十年前的芯片架构,最难的地方在哪里?我以为现在的芯片算力早就碾压当年了。

男:算力确实没问题,最大的挑战在于内存架构的不同。当年的原版 Voodoo 拥有独立的 EDO 内存总线,时钟周期非常稳定,可以一个周期无冲突读取四个相邻像素来做双线性过滤。但现代开发板上所有图形单元和 CPU 都挤在同一条 DDR 内存总线上,不仅有将近 280 纳秒的初始延迟,还会互相抢带宽。开发者不得不给它硬塞进现代处理器的微架构设计,比如片上缓存、重放队列,以及一个重排序缓冲区(ROB),才勉强解决了内存读取延迟的问题。

女:为了重温老游戏,硬是把三十年前的显卡用现代体系结构重写了一遍,工程师的执着有时候真的让人佩服。不过,不是所有被硬核分析的硬件都带来纯粹的快乐。最近有黑客组织拆解了一台路边的 Flock 监控摄像头,公开了提取出来的镜像,里面的细节让人有点心惊。

男:Flock 在美国部署了成千上万台车牌识别摄像头。官方以前一直宣称摄像头在设备端有严密加密,结果黑客拆机后发现,底层的 Android 系统里有好几个分区是明文的,甚至在名为 media 的分区里直接找到了对称密钥,核心的照片和日志全被解开了。

女:看报道里的数据,仅仅一台机器,21 天就拍了 160 万张照片。更让人不安的是,它不仅仅是拍违章,连路过的行人和自行车都在被模型持续标记。

男:设备甚至会把车牌周围连拍数十张,区分车牌特写和全景,并在本地自动裁剪。不过由于数据量实在太大,那台摄像头的日志里记录了超过 2.7 万次存储空间不足的错误,系统经常崩溃重启,工程师还在代码里写了各种戏谑的自检打印。最核心的隐忧还是数据滥用,这些数据不仅供当地机构使用,还被数千个警务部门共享,甚至有跨州追踪就医居民的情况,这也导致美国不少地方开始出现居民自发拆卸摄像头的抗议行动。

女:技术一旦被无节制地铺设在公共空间,没有透明的监管,公众的防御心理就会被迅速激化。这种“边界”不仅在公共治理上很重要,在我们的日常职场里也是个微妙的话题。最近技术社区有一篇很火的文章,讨论程序员到底该不该主动去替别人做他们的工作。

男:作者的核心观点是,当跨部门沟通陷入僵局、排期遥遥无期时,与其等待,不如直接去把对方系统的代码改了,提交一个现成的补丁。他举了英特尔早期的例子,当年为了推广第一款 32 位处理器,英特尔直接派自家工程师给微软的编译器写支持代码。

女:从产品经理推动项目的角度看,这招确实管用,直接绕过了繁琐的跨部门扯皮。但在真实职场里,如果你越界去改别的团队的代码,别人往往会觉得受到了冒犯,甚至怀疑你是不是想抢地盘。

男:确实有很大的阻力。除了权限审批会卡住你,还有一种现实顾虑是,在软件工程里有个不成文的规律——谁最后改了这段代码,日后出问题就得由谁终身维护。如果你出于好意修了一个遗留故障,搞不好以后这个模块的所有杂活都甩给你了。

女:所以这种跨界补位,确实需要把握好分寸,得在不争功、对方也愿意配合的前提下悄悄推进,不然很容易从“推动事情的骨干”变成“收拾烂摊子的工具人”。

男:是的,把事情做成和守住个人边界,很多时候需要很微妙的平衡。

女:好了,今天聊的这几个话题,从照片防伪到监控逆向,再到职场里的协作边界,都挺有现实意味的。感谢大家的收听,如果你喜欢我们的节目,欢迎使用泛用型播客客户端订阅 Agili 的 Hacker Podcast。

男:我们下期再见。

女:拜拜!

参考链接