一、嵌入式PDA安全概述

1.1 PDA面临的安全威胁

做嵌入式安全这么多年,我见过太多PDA被攻破的案例了。说白了,PDA这东西天生就是块「肥肉」——它既要联网,又要存敏感数据,还得跟各种外设打交道。你想想看,攻击者只要找到一个突破口,整个设备就沦陷了。

我个人习惯把PDA的安全威胁分成三类:

  • 物理攻击:设备就在用户手里,拆壳、探针、侧信道,想怎么搞就怎么搞。我记得有个项目,客户说「我们设备有密码保护就安全了」,结果样机发出去三天,就被破解了——人家直接拆了Flash用编程器读数据。
  • 软件攻击:系统漏洞、恶意App、网络劫持。嗯,这里要注意,很多PDA跑的是Linux或Android,攻击面比你想的大得多。
  • 供应链攻击:这个最隐蔽。芯片被植入后门、固件被篡改、甚至PCB上多焊了个元件——我在深圳见过一批「翻新芯片」,外观一模一样,跑起来就出幺蛾子。

核心观点:PDA的安全不是「加把锁」的问题,而是「四面受敌」的问题。你必须在设计阶段就把威胁想清楚。

1.2 攻击面分析

攻击面分析,说白了就是「站在攻击者的角度,看你能从哪儿下手」。我每次做新项目,第一件事就是画攻击面图。下面这张表是我常用的分类框架:

攻击面 具体入口 典型攻击方式 我踩过的坑
硬件接口 JTAG/SWD、UART、SPI、I2C 调试接口未锁、总线嗅探 JTAG没熔丝,量产板被读走全部固件
存储介质 Flash、eMMC、SD卡 直接读取、替换、克隆 加密密钥明文存在Flash里,一读就暴露
无线通信 Wi-Fi、蓝牙、NFC、4G/5G 中间人攻击、重放攻击、协议破解 蓝牙配对没做认证,隔壁工位能连上设备
操作系统 内核、驱动、系统服务 提权漏洞、Rootkit、恶意驱动 Android系统没锁bootloader,随便刷机
应用层 App、Web服务、API 注入攻击、逻辑漏洞、逆向工程 API没做签名校验,伪造请求就能控制设备
用户交互 触摸屏、按键、指纹 输入欺骗、暴力破解、传感器攻击 指纹识别用的廉价传感器,一张硅胶膜就骗过去了

为什么会这样?因为PDA的设计初衷是「好用」,不是「安全」。工程师们忙着堆功能,安全往往是后补的。我曾经接手过一个项目,硬件已经定型了,客户才说「哦对了,要防破解」——那叫一个痛苦。

避坑指南:我曾经在一个项目里,发现攻击者通过UART串口直接拿到了root shell。原因?调试串口在量产板上没去掉,而且没设密码。从那以后,我要求所有量产板必须物理断开调试接口,或者至少熔丝锁死。

1.3 安全设计原则

好,威胁看完了,攻击面也分析了,那怎么设计?我总结了五条原则,都是血泪换来的:

原则一:纵深防御

别指望单点防护能挡住攻击。硬件加密、安全启动、应用沙箱、通信加密——每一层都要有。我习惯说「攻击者要过五关斩六将,而不是一锤子买卖」。

原则二:最小权限

每个模块只给最少的权限。比如,Wi-Fi芯片不需要访问存储区,那就别给它这个通路。你想想看,如果攻击者攻破了Wi-Fi,结果发现它能直接读Flash——那设计就失败了。

原则三:默认安全

出厂配置必须是安全的。不要指望用户去改密码、开加密。我见过太多设备出厂密码是「admin/admin」,用户根本不知道要改——或者懒得改。

原则四:可更新

没有绝对安全的系统。安全漏洞迟早会被发现,所以必须支持安全固件更新。而且更新过程本身也要安全——签名校验、防回滚、加密传输,一个都不能少。

原则五:失效安全

系统出错了怎么办?我的原则是:出错时进入安全状态,而不是开放状态。比如,安全芯片检测到篡改,应该立即擦除密钥、锁定设备,而不是「算了,让你用吧」。

个人经验:我建议在设计阶段就引入安全评审。别等到硬件打样了才想起来「哦,忘了加安全芯片」。那时候改PCB,成本翻倍不说,时间也耽误不起。

1.4 安全设计的层次模型

嗯,这里我画个层次模型,帮你理清思路。从上到下,每一层都依赖下一层的安全:

  1. 物理层安全:芯片封装、防拆检测、屏蔽罩、Tamper检测
  2. 硬件层安全:安全芯片(SE/HSM)、OTP、熔丝、唯一ID
  3. 固件层安全:安全启动(Secure Boot)、签名校验、加密存储
  4. 系统层安全:权限管理、进程隔离、SELinux/AppArmor
  5. 应用层安全:代码混淆、反调试、通信加密、数据保护

说白了,这就是个「木桶原理」——哪一层短了,水就从哪儿漏。我在项目中见过最典型的失败案例:硬件层用了安全芯片,但固件层没做安全启动,结果攻击者直接替换了固件,安全芯片成了摆设。

一句话总结:嵌入式PDA的安全,不是加个密码、贴个防拆贴就完事的。你得从攻击者的角度,把每个可能的入口都堵死。纵深防御、最小权限、默认安全、可更新、失效安全——这五条原则,我建议你刻在工位上。

好了,第一章就讲这些。下一章我们深入聊聊硬件层面的安全设计——安全芯片怎么选、怎么用、怎么防侧信道攻击。到时候我会分享几个我踩过的坑,保证让你少走弯路。