大多数人第一次遇到二维码时,都会不假思索地扫描它。有用。他们继续前进。但如果你问他们如何——手机摄像头如何查看一个由黑白点组成的正方形,并在几毫秒内知道它对 URL、Wi-Fi 密码或火车票进行编码——大多数人都不会知道。我认为,使用技术和理解技术之间的差距正是隐藏着所有有趣的安全风险的地方。

本指南解释了全貌:使 QR 码发挥作用的工程、使其具有弹性的纠错系统、误用时使其变得危险的安全风险,以及使可靠工作的 QR 码与在最糟糕的时刻失败的 QR 码之间存在差异的实际选择。

QR 码到底是什么是

QR 码(快速响应码)是一种二维矩阵条形码 - 黑白方块网格,可水平和垂直编码数据。与传统的一维条形码相比,这种二维结构赋予 QR 码巨大的存储优势,传统的一维条形码仅沿单个水平轴对数据进行编码。

像超市产品上的 UPC-A 这样的一维条形码可编码大约 12 位数字。同等物理尺寸的 QR 码最多可容纳 7,089 个数字字符、4,296 个字母数字字符或 2,953 个字节的二进制数据。这大约是相同物理占地面积中存储容量的 300 倍。

丰田子公司 Denso Wave 于 1994 年开发了 QR 码,用于跟踪装配线上的车辆零件。 “快速响应”这个名字指的是扫描速度——代码的读取速度比现有的条形码系统快得多。在 QR 码存在的头十年里,它几乎完全是一种工业物流工具。最终使它们无处不在的智能手机当时还不存在。

每个 QR 码的六个结构元素

每个 QR 码,无论大小或内容,都具有相同的结构解剖:

1。 Finder Patterns

代码三个角的三个大方块(不是第四个角——这是故意的)。这些允许任何扫描仪立即识别代码的存在、方向和大小,无论从哪个角度查看。二维码扫描仪首先识别这三个方块,然后根据它们的位置计算其余代码的几何形状。

2.对齐模式

出现在较大 QR 码数据区域内的较小方块。它们帮助扫描仪纠正图像失真——当代码以一定角度拍摄、打印在曲面上或稍微有折痕时特别有用。较小的 QR 码(版本 1-6)没有对齐图案;仅当网格足够大以至于失真成为有意义的问题时才需要它们。

3。计时模式

连接取景器模式的交替黑白行和列。它们为扫描仪提供了一个参考网格,帮助扫描仪正确映射每个数据模块的位置,即使图像稍微倾斜或各个方块的分辨率不清晰。

4.格式信息编码在与取景器图案相邻的带中,格式信息告诉扫描仪正在使用哪个纠错级别以及应用了哪个数据掩码图案。它被存储两次——每个取景器图案的每一侧各一次——因此部分模糊的代码仍然可以被正确解码。

5.数据模块

实际编码内容,以特定的锯齿形图案分布在剩余网格上。数据以四种模式之一进行编码:数字(对数字最有效)、字母数字(字母、数字和一小组符号)、二进制(任何字节数据,包括 URL)或汉字(日语字符编码)。日常生活中使用的大多数二维码都使用二进制模式,这就是为什么它们可以对任何 URL 进行编码,无论它包含什么字符。

6.安静区

围绕整个代码的空白白色边框。它不是装饰性的——它是结构上必需的。如果没有它,扫描仪就无法确定代码的结束位置和周围内容的开始位置。所需的最小值是所有侧面的四个模块宽度。许多实施不善的 QR 码(尤其是那些边距不足的印刷品)都会失败,因为这个安静区域没有得到尊重。

Reed-Solomon 纠错:为什么损坏的 QR 码仍然有效

这是 QR 码工程中真正令人印象深刻的部分。 QR 码使用里德-所罗门纠错——与 NASA 为深空通信开发的数学算法相同,在深空通信中,信号可能会传播数十亿公里,到达时会因宇宙干扰而损坏。

有四种纠错级别:

  • L 级(低) — 恢复高达 7% 的码字。为给定的数据负载生成最小的 QR 码。
  • M 级(中) — 恢复高达 15%。合理的通用默认值。
  • Q 级(四分位数) — 恢复高达 25%。更适合在使用中可能部分模糊的代码。
  • H 级(高) — 恢复高达 30%。当您想要在代码上叠加徽标时的标准选择。

实际意义:您可以物理破坏或覆盖最多 30% 的 QR 码(带有徽标、污渍、划痕或故意损坏),但它仍然可以正确扫描。这不是后来添加的功能;它被烘焙成原始标准。这也是品牌二维码发挥作用的原因。当一家公司将其徽标嵌入 QR 码的中心时,他们是故意“损坏”代码并依靠 H 级纠错来重建丢失的数据。扫描仪将徽标视为损坏区域,并使用周围模块中存储的冗余数据对其进行填充。

PHP_CTA_PLACEHOLDER

手机摄像头实际上如何读取 QR 码

让您感觉瞬时的扫描过程实际上是一个精确的多阶段图像处理管道,运行时间不到一秒:

  1. 图像捕捉 — 相机连续捕捉帧。扫描仪软件分析每个帧,寻找 QR 码结构。
  2. 二值化 - 使用自适应阈值将图像转换为纯黑白。这消除了光照、对比度和阴影的变化,否则会使代码不可读。
  3. Finder 模式检测 — 该算法搜索定义 Finder 模式的 dark:light:dark:light:dark 模块的特征 1:1:3:1:1 比例。找到其中三个具有正确的几何关系即可确认存在二维码。
  4. 透视校正 - 使用取景器图案(以及较大代码的对齐图案)的位置,软件计算变换矩阵,将扭曲的图像展平为方形网格。
  5. 模块采样 - 对每个网格位置进行采样,以确定它是暗模块还是亮模块,从而构建整个代码的二进制矩阵。
  6. 格式解码 - 读取格式信息模块以确定纠错级别和数据掩码。
  7. 数据屏蔽删除 - QR 码应用八种数据屏蔽模式之一,以防止出现大的均匀区域(难以可靠扫描)。解码前掩码被反转。
  8. Reed-Solomon 纠错 - 识别并纠正任何损坏的码字。
  9. 数据解码 - 更正后的二进制数据将转换为最终输出:URL、文本字符串、联系人卡片或代码包含的任何内容。

在配备不错的摄像头和QR 扫描仪 AI 的现代智能手机上,整个过程通常需要不到 200 毫秒。在光线不佳或代码损坏的情况下,软件会运行额外的通道 - 调整曝光参数,尝试不同的二值化阈值 - 这可能会再增加一两秒。像 qrscanner.akstool.com 这样设计良好的扫描仪可以自动处理这些边缘情况。

无人谈论的安全问题

以下是有关 QR 码的令人不安的事实:它们已成为网络钓鱼的绝佳攻击媒介,而大多数人对此一无所知。这种技术被称为“quishing”(二维码网络钓鱼),它之所以起作用,正是因为二维码是不透明的——在扫描它们之前你无法读取它们编码的内容。

恶意二维码看起来与合法二维码完全相同。攻击者可以打印带有恶意代码的贴纸,并将其贴在合法的二维码上——停车计时器、餐厅餐桌、医院报到海报或音乐会场地入口处。受害者扫描他们认为是官方的代码,然后被重定向到网络钓鱼页面、恶意软件下载或虚假支付门户。

自 2020 年以来,二维码成为许多场所的默认非接触式交互机制,此问题的规模显着增加。据网络安全研究人员称,QR 网络钓鱼攻击在 2021 年至 2023 年间增加了 400% 以上。

QR Scanner AI 这样的隐私优先扫描仪可以通过以下方式缓解这种情况:

  • 在执行任何浏览器操作之前显示解码后的网址,让您有机会检查域
  • 在设备上处理所有内容 - 不会将扫描内容传输到可以记录的外部服务器
  • 不在任何可能被破坏的云后端中存储扫描历史记录

对任何 QR 扫描仪提出的正确问题不是“扫描速度快吗?”但是“我的扫描数据会怎样?”扫描器会记录您扫描的每个 URL 并将其与您的身份相关联,这才是真正意义上的监视工具。

业务用例:QR 码实际上擅长什么

并非所有 QR 码用例都是一样的。有些很优秀。有些人被误导了。经过多年的观察,这是我的诚实评价:

真正有用:

  • Wi-Fi 共享 — 在几乎所有情况下,Wi-Fi 二维码确实比密码更好。客人不需要输入复杂的密码,不需要在公共场所大声说出,并且如果更改密码还可以重新生成代码。 了解如何使用 QR Scanner AI 生成一个
  • 联系人卡片 (vCard) - 生成对您的联系信息进行编码的二维码比期望某人从名片中正确转录电话号码要可靠得多。一次扫描即可将联系人直接保存到手机上。
  • 活动签到 - 在高通量情况下,二维码可以很好地作为身份证明或预订确认。扫描仪读取代码;后端验证它。快速、可扩展且错误率不错。
  • 产品信息 - 将实体产品链接到详细的数字页面、用户手册或视频教程是合法且用户友好的用例。

经常被误导:

  • 广告牌上的二维码 - 要求某人安全地拿出手机、解锁、打开摄像头并以 60 英里/小时的速度扫描代码,这并不是一种精心设计的用户体验。
  • 电子邮件中的 QR 码 - 如果有人在手机上阅读您的电子邮件,他们无法使用同一设备扫描 QR 码。如果他们在桌面上,摩擦力会比链接更高。
  • QR 码作为可用性的替代品 - 由于没有空间容纳信息而在某物上放置 QR 码并不等同于良好的设计。
php echo inline_tool_cta('qr-scanner', 'QR Scanner AI', 'https://play.google.com/store/apps/details?id=com.akstool.qr.scanner', '直接从 QR Scanner AI 生成 Wi-Fi、vCard、URL 等的 QR 码。无水印。无大小限制。免费。'); ?

是什么让 QR 码真正在印刷中发挥作用

生成 QR 码很简单。生成一个能够可靠地扫描名片、产品标签或大幅面海报的扫描仪 - 这需要更多的思考。

  • 使用 SVG 进行数字高分辨率 PNG 打印。300×300 像素的 PNG 在屏幕上看起来可以接受,但在 3cm × 3cm 打印时会出现像素化,并且可能无法扫描。获取 SVG(矢量格式)以供打印使用;它可以在不损失质量的情况下进行扩展。
  • 最小尺寸为 2 厘米 × 2 厘米。低于此尺寸,大多数手机摄像头都难以捕捉足够的细节以进行可靠解码,尤其是在标准照明条件下。
  • 浅色背景上的深色模块。这是标准。在黑暗中反转为白色可以工作,但会降低可靠性 - 某些扫描仪实现不支持它,并且对比度要求更严格。
  • 保留安静区域。所有四个边周围有四个模块宽度的空白区域。不是两个。没有一个。四。
  • 打印前进行测试。在进行大量印刷之前,使用两部不同手机上的三个不同应用扫描 QR 码。在您的手机上有效的功能可能在其他人的手机上无效。
  • 如果添加徽标,请使用 H 级纠错。如果您想将徽标放在中心(这会遮挡某些模块),H 级可为您提供最大 30% 的数据重建容差。

QR 码作为基础设施已经稳定下来。它们不再是新鲜事,也不会消失。有一些趋势值得注意:

动态二维码 - 对重定向 URL 而不是最终目的地进行编码的代码,允许在不重新打印代码的情况下更改目的地 - 已成为营销用例的标准做法。代码总是指向同一个短URL;该 URL 的目的地可以实时更新。

支付中的二维码 - 已经在中国(微信支付、支付宝)和印度 (UPI) 占据主导地位,基于二维码的支付通过巴克莱银行的 Pingit 和各种非接触式 POS 集成等方案逐渐在英国普及。

安全审查 - 随着消除攻击的增加,扫描仪应用程序实施的压力越来越大域安全检查。希望这成为标准功能期望,而不是差异化因素。

有关 QR 码安全的最新建议,请参阅我们的您应该了解的 QR 码安全风险指南。要在 Android 上创建和扫描 QR 码,QR Scanner AI 仍然是我们推荐的工具。

探索完整的QR 码类别以获取更多指南,或浏览博客以获取最新文章。