Първият път, когато повечето хора срещат QR код, те го сканират, без да се замислят. Работи. Продължават напред. Но ако ги попитате как – как камерата на телефона може да гледа квадрат от черни и бели точки и в рамките на милисекунди да разбере, че кодира URL, парола за Wi-Fi или билет за влак – повечето хора няма да имат представа. Тази празнина между използването на технологията и нейното разбиране е, според мен, мястото, където се крият всички интересни рискове за сигурността.

Това ръководство обяснява пълната картина: инженерството, което кара QR кодовете да работят, системата за коригиране на грешки, която ги прави устойчиви, рисковете за сигурността, които ги правят опасни при злоупотреба, и практическите решения, които правят разликата между QR код, който работи надеждно, и този, който се проваля в най-лошия възможен момент.

Какво всъщност представлява QR кодът

QR кодът (код за бърза реакция) е двуизмерен матричен баркод — решетка от черни и бели квадрати, която кодира данни както хоризонтално, така и вертикално. Тази двуизмерна структура е това, което дава на QR кодовете драматичното им предимство при съхранение пред традиционните едноизмерни баркодове, които кодират данни само по една хоризонтална ос.

Едноизмерен баркод като UPC-A, който намирате на продукт в супермаркет, кодира около 12 цифри. QR код с еквивалентен физически размер може да съдържа до 7089 цифрови знака, 4296 буквено-цифрови знака или 2953 байта двоични данни. Това е приблизително 300 пъти повече от капацитета за съхранение в същия физически отпечатък.

Denso Wave, филиал на Toyota, разработи QR кодове през 1994 г. за проследяване на части на превозни средства на поточната линия. Името "Бърз отговор" се отнася до скоростта на сканиране - кодовете могат да се четат много по-бързо от съществуващите системи за баркод. През първото десетилетие от съществуването си 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 код

Процесът на сканиране, който ви се струва мигновен, всъщност е прецизен, многоетапен конвейер за обработка на изображения, който се изпълнява на части от секунда:

  1. Заснемане на изображение — Камерата непрекъснато заснема кадри. Софтуерът на скенера анализира всеки кадър, търсейки структури на QR код.
  2. Бинаризация — Изображението се преобразува в чисто черно и бяло с помощта на адаптивен праг. Това елиминира вариациите в осветлението, контраста и сянката, които иначе биха направили кода нечетлив.
  3. Откриване на модел на търсач — Алгоритъмът търси характерното съотношение 1:1:3:1:1 на модули тъмно:светло:тъмно:светло:тъмно, което определя модел на търсач. Намирането на три от тях в правилната геометрична връзка потвърждава наличието на QR код.
  4. Коригиране на перспектива — Използвайки позициите на моделите на търсача (и моделите за подравняване за по-големи кодове), софтуерът изчислява трансформационна матрица, за да изравни изкривеното изображение в квадратна мрежа.
  5. Вземане на проби от модули — Всяка позиция на мрежата се взема проби, за да се определи дали е тъмен или светъл модул, като се изгражда двоична матрица на целия код.
  6. Декодиране на формат — Модулите с информация за формата се четат, за да се определи нивото на коригиране на грешки и маската на данните.
  7. Премахване на маска за данни — QR кодовете прилагат един от осемте шаблона за маскиране на данни, за да предотвратят големи еднакви области (които са по-трудни за надеждно сканиране). Маската се обръща преди декодиране.
  8. Коригиране на грешки на Reed-Solomon — Всички повредени кодови думи се идентифицират и коригират.
  9. Декодиране на данни — Коригираните двоични данни се преобразуват в крайния изход: URL адрес, текстов низ, карта за контакт или каквото и да е, което съдържа кодът.

На модерен смартфон с прилична камера и QR скенер AI, целият този процес обикновено отнема под 200 милисекунди. При лошо осветление или с повреден код, софтуерът изпълнява допълнителни пасове - коригиране на параметрите на експозицията, опитване на различни прагове на бинаризация - което може да добави още секунда или две. Добре проектиран скенер като qrscanner.akstool.com обработва автоматично тези крайни случаи.

Проблемът със сигурността, за който никой не говори достатъчно

Ето неудобната истина за QR кодовете: те са се превърнали в отличен вектор за атака за фишинг, и повечето хора нямат представа. Техниката се нарича „quishing“ (фишинг на QR код) и работи точно защото QR кодовете са непрозрачни — не можете да прочетете какво кодират, преди да ги сканирате.

Злонамереният QR код изглежда идентичен с легитимния. Нападателят може да отпечата стикер със своя злонамерен код и да го постави върху легитимен QR код - на паркомат, маса в ресторант, плакат за регистрация в болница или вход на концертно място. Жертвата сканира това, което смята, че е официалният код, и се пренасочва към фишинг страница, изтегляне на злонамерен софтуер или портал за фалшиви плащания.

Мащабът на този проблем нарасна значително от 2020 г., когато QR кодовете станаха стандартен механизъм за безконтактно взаимодействие в огромен набор от места. Според изследователи в областта на киберсигурността QR фишинг атаките са се увеличили с над 400% между 2021 г. и 2023 г.

Скенер за поверителността като QR скенер AI смекчава това чрез:

  • Показване на декодирания URL адрес, преди да бъде предприето каквото и да е действие на браузъра, което ви дава възможност да проверите домейна
  • Обработка на всичко на устройството — съдържанието на сканиране не се предава на външни сървъри, където може да бъде регистрирано
  • Несъхраняване на хронология на сканиране в облачен бекенд, който може да бъде пробит

Правилният въпрос, който трябва да зададете на всеки QR скенер, не е „бързо ли сканира?“ но "какво се случва с моите сканирани данни?" Скенер, който регистрира всеки URL адрес, който сканирате, и го свързва с вашата самоличност, в истинския смисъл на думата е инструмент за наблюдение.

Случаи на използване в бизнеса: В какво QR кодовете всъщност са добри

Не всички случаи на използване на QR кодове са еднакви. Някои са отлични. Някои са заблудени. След години гледане на двете, ето моята честна оценка:

Наистина полезни:

  • Wi-Fi споделяне — Wi-Fi QR кодът е наистина по-добър от парола в почти всяка ситуация. Гостите не трябва да въвеждат сложна парола, не е необходимо да я казвате на глас в обществено пространство и можете да генерирате повторно кода, ако промените паролата. Вижте как да генерирате такъв с QR Scanner AI.
  • Карти за контакт (vCards) — Генерирането на QR код, който кодира вашата информация за контакт, е много по-надеждно, отколкото да очаквате някой да препише правилно телефонен номер от визитка. Едно сканиране записва контакта директно в телефона им.
  • Регистриране при събитие — QR кодовете работят добре като доказателство за самоличност или потвърждение на резервация в ситуации с висока производителност. Скенер чете кода; бекенд го валидира. Бърз, мащабируем и с приличен процент на грешка.
  • Информация за продукта — Свързването на физически продукт с подробна цифрова страница, ръководство за потребителя или видеоурок е легитимен и лесен за употреба случай.

Често заблудени:

  • QR кодове на билбордове — Изискването някой безопасно да извади телефона си, да го отключи, да отвори камера и да сканира код при 60mph не е добре проектирано потребителско изживяване.
  • 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 кодове за Wi-Fi, vCards, URL адреси и други — директно от QR Scanner AI. Без водни знаци. Без ограничения на размера. Безплатно.'); ?

Какво кара един QR код действително да работи при печат

Генерирането на QR код е тривиално. Създаването на такъв, който надеждно сканира визитна картичка, продуктов етикет или широкоформатен плакат — това изисква малко повече мисъл.

  • Използвайте SVG за цифров PNG с висока разделителна способност за печат. PNG с размери 300 × 300 пиксела ще изглежда приемливо на екрана, но ще бъде пикселизиран и потенциално невъзможен за сканиране, когато се отпечата на 3 cm × 3 cm. Вземете SVG (векторен формат) за печат; мащабира се без загуба на качество.
  • Минималният размер е 2 см × 2 см. Под това повечето телефонни камери се борят да уловят достатъчно детайли за надеждно декодиране, особено при стандартни условия на осветление.
  • Тъмни модули на светъл фон. Това е стандартът. Обръщането към бяло на тъмно може да работи, но намалява надеждността — някои реализации на скенери не го поддържат и изискванията за контраст са по-строги.
  • Пазете тихата зона. Четири модулни ширини бяло пространство около четирите страни. Не две. Нито един. Четири.
  • Тествайте, преди да отпечатате. Сканирайте своя QR код с три различни приложения на два различни телефона, преди да се ангажирате с голям тираж. Това, което работи на вашия телефон, може да не работи на някой друг.
  • Използвайте коригиране на грешки ниво H, ако добавяте лого. Ако искате да поставите лого в центъра (което ще блокира някои модули), ниво H ви дава максимум 30% толеранс за реконструкция на данни.

QR кодовете се стабилизираха като инфраструктура. Те вече не са новост и няма да изчезнат. Заслужава да се отбележат няколко тенденции:

Динамичните QR кодове — кодове, които кодират URL адрес за пренасочване, а не крайната дестинация, което позволява дестинацията да бъде променяна без повторно отпечатване на кода — се превърнаха в стандартна практика за случаи на маркетингова употреба. Кодът винаги сочи към един и същ кратък URL адрес; дестинацията на този URL адрес може да се актуализира в реално време.

QR кодове при плащания — вече доминиращи в Китай (WeChat Pay, Alipay) и Индия (UPI), плащанията, базирани на QR, постепенно навлизат в Обединеното кралство чрез схеми като Barclays' Pingit и различни безконтактни POS интеграции.

Проверка на сигурността — с нарастването на quishing атаките нараства и натиск върху приложенията за сканиране за прилагане на проверки за безопасност на домейна. Очаквайте това да се превърне в очакване на стандартна функция, а не в разграничение.

За най-актуалните съвети относно сигурността на QR кода вижте нашето ръководство за Рисковете за сигурността на QR кода, за които трябва да знаете. За създаване и сканиране на QR кодове на Android QR Scanner AI остава нашият препоръчан инструмент.

Разгледайте пълната категория QR кодове за още ръководства или разгледайте блога за най-новите статии.