История появления и устройство двумерного кода

Технологию разработала японская компания Denso Wave в 1994 году. Корпорация входила в состав группы Toyota и искала способ быстро отслеживать автомобильные детали на складах. Обычный линейный штрихкод содержит около двадцати-тридцати символов и считывается только по горизонтали. Инженер Масахиро Хара придумал задействовать сразу два направления — горизонталь и вертикаль, поэтому аббревиатура QR расшифровывается как Quick Response, то есть быстрый отклик.

Любая картинка такого кода состоит из модулей — маленьких контрастных квадратиков. Базовый графический элемент отображает единицу или ноль. Чёрный квадрат обычно отвечает за логическую единицу, а белый цвет передаёт ноль. За счёт расположения по сетке матрица кодирует тысячи символов на площади в пару квадратных сантиметров.

Внутри одного квадрата всегда есть несколько обязательных служебных областей. Без них сканер смартфона просто посчитал бы изображение случайным шумом и не смог бы правильно определить координаты.

  • Три больших квадрата по углам служат шаблонами поиска и задают ориентацию картинки в пространстве.
  • Полосы синхронизации из чередующихся чёрных и белых точек между поисковыми метками определяют размер матрицы и шаг модульной сетки.
  • Один или несколько малых квадратов выравнивания помогают камере компенсировать искажения при съёмке под углом или на неровной поверхности.
  • Служебные модули рядом с большими метками сообщают версию кодировки и выбранный уровень защиты от ошибок.
  • Свободное поле по краям рисунка создаёт светлую рамку, отделяющую данные от окружающего фона.

Как информация превращается в чёрно-белые квадраты

Процесс генерации подчиняется строгим математическим алгоритмам международного стандарта ISO/IEC 18004. Сначала генератор выбирает оптимальный режим упаковки символов. Если нужно закодировать только цифры, алгоритм тратит всего десять бит на каждые три цифры. Для латиницы и знаков препинания используется буквенно-цифровой режим, а для русского текста или произвольных байтов применяется кодировка UTF-8, требующая большего объёма.

После упаковки данных программа делит битовый поток на блоки по восемь бит и накладывает маску. Маска нужна для того, чтобы на картинке не возникали огромные сплошные пятна одного цвета или фигуры, напоминающие служебные метки ориентации. Всего существует восемь стандартных вариантов математических масок, генератор тестирует каждую и выбирает ту, которая даёт самый равномерный баланс чёрных и белых точек.

Почему повреждённый код продолжает сканироваться

Главное практическое преимущество матрицы заключается в способности считываться при физических повреждениях, грязи или частичном закрашивании. Это свойство обеспечивает алгоритм коррекции ошибок Рида — Соломона. Данный метод разработан американскими математиками Ирвингом Ридом и Гюставом Соломоном ещё в 1960 году и используется в космической связи, при записи компакт-дисков и в сетевых протоколах.

К исходной информации прибавляются контрольные байты. Они содержат избыточные уравнения, благодаря которым процессор восстанавливает утраченные биты при расшифровке. Создатель кода может выбрать один из четырёх уровней избыточности.

  • Уровень L допускает потерю до 7 процентов площади рисунка.
  • Уровень M восстанавливает данные при потере до 15 процентов площади.
  • Уровень Q справляется с повреждениями до 25 процентов площади изображения.
  • Уровень H гарантирует чтение даже при уничтожении до 30 процентов модулей.

Можно ли взломать или подделать матрицу

В криптографическом смысле подделка бессмысленна. Графика жестко привязана к двоичному тексту. Если изменить хотя бы пару чёрных точек на белые, математическая контрольная сумма разрушится, сканер выдаст ошибку чтения либо покажет совершенно другую абракадабру.

Опасность кроется не в искажении файла, а в содержимом, которое добровольно сканирует человек. Такой тип мошенничества называют квишингом. Злоумышленник берёт поддельный сайт банка, генерирует честный стандартный код через бесплатный генератор и распечатывает его на самоклеящейся бумаге.

Правила цифровой безопасности при сканировании

Обезопасить устройство и личные средства помогает внимательность к деталям при открытии ссылок.

  • Стоит проверять адресную строку во всплывающем окне сканера до перехода по ссылке.
  • Полезно отключать в настройках камеры смартфона автоматическое открытие веб-страниц без подтверждения пользователя.
  • Физические наклейки на квитанциях ЖКХ или уличных терминалах лучше осматривать на предмет свежих чужих слоёв бумаги.
  • Отказ от ввода паролей и платёжных данных на ресурсах, полученных из случайных объявлений на улице, спасает от потери денег.

Частые вопросы

Сколько информации помещается в одном коде?

В самой ёмкой версии номер 40 с минимальным уровнем защиты помещается до 7089 цифр или 4296 букв латиницы. Кириллических символов из-за особенностей кодировки UTF-8 помещается меньше, около трёх тысяч.

Обязательно ли код должен быть чёрно-белым?

Цвет модулей может быть любым, главное условие заключается в достаточной контрастности между тёмными элементами и светлой подложкой. Оптический сенсор считывает перепады яркости.

Зачем нужны динамические коды?

В динамический рисунок зашивают короткую ссылку с перенаправлением на удалённый сервер. Владелец может менять конечный сайт в панели управления в любой момент, не перепечатывая саму наклейку.

Заканчивается ли срок годности у распечатанного кода?

У обычного статического кода нет срока давности, он читается до тех пор, пока бумага остаётся целой. Срок службы динамических ссылок зависит только от времени работы сервера компании, создавшей перенаправление.