Большинство людей, впервые встречая QR-код, сканируют его, не задумываясь. Оно работает. Они идут дальше. Но если вы спросите их, как камера телефона может взглянуть на квадрат из черно-белых точек и в течение миллисекунд узнать, что она закодировала URL-адрес, пароль Wi-Fi или билет на поезд, — большинство людей понятия не имеют. Я думаю, что именно в этом разрыве между использованием технологии и ее пониманием и скрываются все интересные риски безопасности.
Это руководство объясняет полную картину: инженерные решения, благодаря которым QR-коды работают, система исправления ошибок, которая делает их устойчивыми, риски безопасности, которые делают их опасными при неправильном использовании, и практический выбор, который определяет разницу между QR-кодом, который работает надежно, и тем, который выходит из строя в самый неподходящий момент.
Какая разница QR-код на самом деле
QR-код (код быстрого ответа) — это двумерный матричный штрих-код — сетка из черных и белых квадратов, которая кодирует данные как по горизонтали, так и по вертикали. Именно эта двумерная структура дает QR-кодам огромное преимущество в хранении по сравнению с традиционными одномерными штрих-кодами, которые кодируют данные только по одной горизонтальной оси.
Одномерный штрих-код, такой как UPC-A, который вы найдете на продукте в супермаркете, кодирует около 12 цифр. QR-код эквивалентного физического размера может содержать до 7089 цифровых символов, 4296 буквенно-цифровых символов или 2953 байта двоичных данных. Это примерно в 300 раз больше емкости хранилища при той же физической площади.
Denso Wave, дочерняя компания Toyota, в 1994 году разработала QR-коды для отслеживания деталей автомобилей на сборочной линии. Название «Быстрый ответ» относилось к скорости сканирования — коды можно было считывать намного быстрее, чем существующие системы штрих-кодов. В течение первого десятилетия своего существования QR-коды были почти исключительно инструментом промышленной логистики. Смартфонов, которые в конечном итоге сделали бы их повсеместными, еще не существовало.
Шесть структурных элементов каждого QR-кода
Каждый QR-код, независимо от размера и содержания, имеет одинаковую структурную анатомию:
1. Шаблоны поиска
Три больших квадрата в трех углах кода (не в четвертом углу — это сделано намеренно). Они позволяют любому сканеру мгновенно определить наличие, ориентацию и размер кода независимо от того, под каким углом на него смотрят. QR-сканер сначала идентифицирует эти три квадрата, а затем вычисляет геометрию остальной части кода по их позициям.
2. Шаблоны выравнивания
Меньшие квадраты, которые появляются внутри области данных больших QR-кодов. Они помогают сканеру корректировать искажения изображения — особенно полезно, когда код сфотографирован под углом, напечатан на изогнутой поверхности или слегка помят. QR-коды меньшего размера (версии 1–6) не имеют шаблонов выравнивания; они необходимы только тогда, когда сетка достаточно велика, и искажение становится значимой проблемой.
3. Временные шаблоны
Чередущие черно-белые строки и столбцы, соединяющие шаблоны поиска. Они дают сканеру опорную сетку для работы, помогая ему правильно отображать положение каждого модуля данных, даже если изображение слегка перекошено или при разрешении, при котором отдельные квадраты не четко определены.
4. Информация о формате
Закодированная в полосах рядом с шаблонами поиска, информация о формате сообщает сканеру, какой уровень исправления ошибок используется и какой шаблон маски данных был применен. Он сохраняется дважды — по одному разу на каждой стороне каждого шаблона поиска — поэтому частично скрытый код все равно можно правильно декодировать.
5. Модули данных
Фактическое закодированное содержимое, распределенное по остальной сетке определенным зигзагообразным узором. Данные кодируются в одном из четырех режимов — числовом (наиболее эффективно для чисел), буквенно-цифровом (буквы, цифры и небольшой набор символов), двоичном (любые байтовые данные, включая URL-адреса) или кандзи (японская кодировка символов). Большинство QR-кодов, используемых в повседневной жизни, используют двоичный режим, поэтому они могут закодировать любой URL-адрес независимо от того, какие символы он содержит.
6. Тихая зона
Пустая белая рамка вокруг всего кода. Это не декоративно — это конструктивно необходимо. Без него сканер не сможет определить, где заканчивается код и начинается окружающий контент. Требуемый минимум — четыре ширины модуля со всех сторон. Многие плохо реализованные QR-коды, особенно напечатанные с недостаточными полями, терпят неудачу, потому что эта тихая зона не соблюдается.
Исправление ошибок Рида-Соломона: почему поврежденные QR-коды все еще работают
Это та часть разработки QR-кода, которую я считаю действительно впечатляющей. В QR-кодах используется коррекция ошибок Рида-Соломона – тот же математический алгоритм, который НАСА разработало для связи в дальнем космосе, где сигнал может путешествовать на миллиарды километров и приходить искаженным космическими помехами.
Существует четыре уровня исправления ошибок:
- Уровень L (Низкий) — восстанавливает до 7% кодовых слов. Создает наименьший QR-код для заданной полезной нагрузки данных.
- Уровень M (Средний) — восстанавливается до 15 %. Разумный универсальный вариант по умолчанию.
- Уровень Q (Квартиль) — восстанавливается до 25%. Лучше подходит для кодов, которые могут быть частично скрыты при использовании.
- Уровень H (Высокий) — восстанавливается до 30%. Стандартный выбор, если вы хотите наложить логотип на код.
Практическое значение: вы можете физически уничтожить или закрыть до 30% QR-кода — логотипом, пятном, царапиной или намеренным повреждением — и он все равно будет сканироваться правильно. Эта функция не была добавлена позже; он запечен в исходном стандарте. Именно поэтому работают фирменные QR-коды. Когда компания встраивает свой логотип в центр QR-кода, она намеренно «повреждает» код и полагается на коррекцию ошибок уровня H для восстановления недостающих данных. Сканер воспринимает логотип как поврежденную область и заполняет ее, используя избыточные данные, хранящиеся в окружающих модулях.
PHP_CTA_PLACEHOLDERКак камера телефона на самом деле считывает QR-код
Процесс сканирования, который вам кажется мгновенным, на самом деле представляет собой точный многоэтапный конвейер обработки изображений, который выполняется за доли секунды:
- Захват изображения. Камера непрерывно записывает кадры. Программное обеспечение сканера анализирует каждый кадр в поисках структур QR-кода.
- Бинаризация – изображение преобразуется в черно-белое с использованием адаптивного порогового значения. Это устраняет различия в освещении, контрасте и тенях, которые в противном случае сделали бы код нечитаемым.
- Обнаружение шаблона поиска. Алгоритм ищет характерное соотношение 1:1:3:1:1 темных:светлых:темных:светлых:темных модулей, которое определяет шаблон поиска. Если три из них находятся в правильном геометрическом соотношении, это подтверждает наличие QR-кода.
- Коррекция перспективы. Используя положения шаблонов поиска (и шаблонов выравнивания для более крупных кодов), программное обеспечение вычисляет матрицу преобразования, чтобы сгладить искаженное изображение в квадратную сетку.
- Выборка модуля. Из каждой позиции сетки выбирается образец, чтобы определить, является ли он темным или светлым модулем, создавая двоичную матрицу всего кода.
- Декодирование формата. Модули информации о формате считываются для определения уровня исправления ошибок и маски данных.
- Удаление маски данных. QR-коды применяют один из восьми шаблонов маскировки данных, чтобы предотвратить появление больших однородных областей (которые сложнее надежно сканировать). Перед декодированием маска меняется на обратную.
- Исправление ошибок Рида-Соломона – любые поврежденные кодовые слова идентифицируются и исправляются.
- Декодирование данных – исправленные двоичные данные преобразуются в конечный результат: URL-адрес, текстовую строку, карточку контакта или что-либо еще, что содержит код.
На современном смартфоне с хорошей камерой и ИИ QR-сканером весь этот процесс обычно занимает менее 200 миллисекунд. При плохом освещении или поврежденном коде программа выполняет дополнительные проходы — настраивает параметры экспозиции, пробует разные пороги бинаризации — что может добавить еще секунду или две. Хорошо продуманный сканер, такой как qrscanner.akstool.com, автоматически обрабатывает эти крайние случаи.
Проблема безопасности, о которой никто не говорит
Вот неприятная правда о QR-кодах: они стали отличным вектором атаки для фишинга, о чем большинство людей понятия не имеет. Техника называется «квишинг» (фишинг QR-кода), и она работает именно потому, что QR-коды непрозрачны — вы не можете прочитать, что они кодируют, прежде чем сканировать их.
Вредоносный QR-код выглядит идентично легитимному. Злоумышленник может распечатать наклейку со своим вредоносным кодом и разместить ее поверх легитимного QR-кода — на парковочном счетчике, столике в ресторане, плакате регистрации в больнице или входе в концертный зал. Жертва сканирует то, что, по ее мнению, является официальным кодом, и перенаправляется на фишинговую страницу, загрузку вредоносного ПО или поддельный платежный портал.
Масштаб этой проблемы значительно увеличился с 2020 года, когда QR-коды стали механизмом бесконтактного взаимодействия по умолчанию во многих местах. По данным исследователей кибербезопасности, количество QR-фишинговых атак увеличилось более чем на 400 % в период с 2021 по 2023 год.
Сканер, ориентированный на конфиденциальность, такой как QR Scanner AI, смягчает это за счет:
- Отображение декодированного URL-адреса перед выполнением любого действия браузера, что дает вам возможность проверить домен.
- Обработка всей информации на устройстве — содержимое сканирования не передается на внешние серверы, где оно может быть зарегистрировано.
- Не хранить историю сканирования в облачных сервисах, которые могут быть взломаны.
Правильный вопрос, который следует задать любому QR-сканеру, — это не «быстро ли он сканирует?» но «что происходит с моими данными сканирования?» Сканер, который регистрирует каждый сканируемый вами URL-адрес и связывает его с вашей личностью, по сути, является инструментом наблюдения.
Примеры использования QR-кодов в бизнесе: в чем действительно хороши QR-коды
Не все варианты использования QR-кодов одинаковы. Некоторые превосходны. Некоторые заблуждаются. После многих лет просмотра обоих, вот моя честная оценка:
Действительно полезно:
- Общий доступ к Wi-Fi. QR-код Wi-Fi действительно лучше, чем пароль практически в любой ситуации. Гостям не нужно вводить сложный пароль, вам не нужно произносить его вслух в общественных местах, и вы можете восстановить код, если измените пароль. Узнайте, как создать его с помощью QR-сканера AI.
- Карточки контактов (vCards). Создать QR-код, который закодирует вашу контактную информацию, гораздо надежнее, чем ожидать, что кто-то правильно расшифрует номер телефона с визитной карточки. Одно сканирование сохраняет контакт прямо на телефоне.
- Регистрация на мероприятие. QR-коды хорошо подходят для удостоверения личности или подтверждения бронирования в ситуациях с высокой пропускной способностью. Сканер считывает код; серверная часть проверяет это. Быстрый, масштабируемый и с достойным уровнем ошибок.
- Информация о продукте. Связывание физического продукта с подробной цифровой страницей, руководством пользователя или видеоуроком – это законный и удобный вариант использования.
Часто вводят в заблуждение:
- QR-коды на рекламных щитах. Требовать, чтобы кто-то безопасно вытащил свой телефон, разблокировал его, открыл камеру и отсканировал код на скорости 60 миль в час, – это не очень хорошо продуманный пользовательский интерфейс.
- QR-коды в электронной почте. Если кто-то читает вашу электронную почту на своем телефоне, он не сможет сканировать QR-код на том же устройстве. А если они находятся на компьютере, трение выше, чем ссылка.
- QR-коды вместо удобства использования. Размещение QR-кода на чем-либо из-за отсутствия места для информации — это не то же самое, что хороший дизайн.
Что делает QR-код действительно работающим в печати
Создать QR-код тривиально. Создание такого, которое будет надежно сканироваться на визитной карточке, этикетке продукта или широкоформатном плакате, требует немного больше внимания.
- Используйте SVG для цифрового PNG с высоким разрешением для печати. PNG размером 300×300 пикселей будет выглядеть приемлемо на экране, но будет пикселизированным и потенциально невозможным для сканирования при печати размером 3×3 см. Получите SVG (векторный формат) для печати; он масштабируется без потери качества.
- Минимальный размер – 2 х 2 см. Большинству камер телефонов ниже этого размера сложно передать достаточно деталей для надежного декодирования, особенно в стандартных условиях освещения.
- Тёмные модули на светлом фоне. Это стандарт. Инвертирование белого цвета в темном может работать, но снижает надежность — некоторые реализации сканера не поддерживают его, а требования к контрастности более строгие.
- Сохраняйте тихую зону. Четыре модуля ширины белого пространства со всех четырех сторон. Не два. Ни один. Четыре.
- Проверьте перед печатью. Отсканируйте QR-код с помощью трех разных приложений на двух разных телефонах, прежде чем приступить к печати большого тиража. То, что работает на вашем телефоне, может не работать на чужом.
- При добавлении логотипа используйте уровень исправления ошибок H. Если вы хотите разместить логотип в центре (что заблокирует некоторые модули), уровень H обеспечивает максимальную допуск реконструкции данных 30%.
QR-коды в 2025 году: куда они движутся
QR-коды стабилизировались как инфраструктура. Они уже не новинка и никуда не денутся. Стоит отметить несколько тенденций:
Динамические QR-коды — коды, которые кодируют URL-адрес перенаправления, а не конечный пункт назначения, что позволяет изменить пункт назначения без перепечатки кода — стали стандартной практикой для маркетинговых сценариев использования. Код всегда указывает на один и тот же короткий URL-адрес; адрес URL-адреса может быть обновлен в режиме реального времени.
QR-коды в платежах — уже доминирующие в Китае (WeChat Pay, Alipay) и Индии (UPI). Платежи на основе QR постепенно набирают популярность в Великобритании благодаря таким схемам, как Pingit от Barclays, и различным бесконтактным интеграциям POS.
Проверка безопасности – по мере увеличения количества блокирующих атак растет давление на приложения-сканеры с целью обеспечения безопасности домена. чеки. Ожидайте, что это станет стандартной функцией, а не отличительным признаком.
Самые актуальные советы по безопасности QR-кода см. в нашем руководстве по рискам безопасности QR-кода, о которых вам следует знать. Для создания и сканирования QR-кодов на Android мы рекомендуем использовать QR Scanner AI.
Изучите всю категорию QR-кодов, чтобы получить дополнительные руководства, или посмотрите блог, чтобы найти последние статьи.