固件
固件(Firmware)是嵌入硬件设备中控制其运行的软件。与操作系统或应用程序不同,它写入设备的 ROM 或闪存中,断电后仍然保留。路由器、打印机、相机、IoT 设备等几乎所有电子设备都依靠固件运行。
与二维码读取相关的固件,最典型的是专用二维码读取器(手持扫描器)。图像处理算法和解码引擎都包含在固件中,因此更新固件可以提升读取速度,也能支持新的符号结构。这里需要注意的是,被称为新的二维码规格的东西其实分为性质不同的两类。长方形的 rMQR(ISO/IEC 23941)符号结构本身就不一样,必须更新解码引擎,也就是需要固件一侧的支持。而像日本地方税统一二维码(eL-QR)这样的规格,符号结构沿用原有的 QR 码,只是规定了其中承载的缴税信息的数据格式,读取本身用现有读取器就能完成,需要适配的是解释读取结果的应用程序或业务系统。GS1 数字链接(GS1 Digital Link)也属于后者,它是一种 URI 语法规格,而不是新的符号结构。POS 终端为支持 GS1 二维码而更新,多数情况下也属于这一类数据格式的解释问题。
用智能手机的摄像头读取二维码时,需要把层次分得更清楚。驱动图像传感器和图像处理器的确实是固件,但提供读取功能本身的是操作系统和应用程序这一层。iOS 11 为标准相机应用加入二维码读取功能,并不是固件的变更,而是操作系统的功能追加。同样,当人们觉得系统更新后识别精度提高了,改变的多数也不是固件,而是操作系统一侧的识别处理。
安全方面,如果放任固件漏洞不管,二维码读取器本身就可能成为攻击的入口。过时的固件可能残留已知漏洞,攻击者可以借此篡改扫描器的行为,把读取结果替换成非预期的 URL。特别是接入网络的商用扫描器,把固件保持在最新状态是最基本的防护措施。