Считывается ли qr код инверсия
Существуют определенные причины, почему мобильные пользователи не хотят сканировать матричные коды. Например, клиенты их не замечают из-за того, что они размещены в невидных местах, или же пользователи не понимают, что от них хочет бренд в случае, если нет понятного призыва к действию рядом с изображением.
Но одна из самых частых причин, почему QR получают маленькое количество сканов, — это недостаточный контраст между цветами переднего и заднего плана.
Цветной QR-код
Самое простое изменение, которое мы можем привнести в код, это поменять его цвет. По стандарту любой QR-код состоит всего из двух цветов — черного и белого. Мы можем заменить как один цвет, так и два цвета на те цвета которые будут решать поставленные задачи. Необходимо чтобы черный цвет после окрашивания остался более темный чем окрашенный белый. Причем после раскраски необходимо чтобы контраст между этими цветами был достаточно большим, чтобы камера, программное обеспечение, и встроенные алгоритмы телефона смогли считать и расшифровать его. В противном случае код перестанет считываться.
QR-код с текстом или логотипом
Технология QR-кодов разрабатывалась с учетом того что они будут считываться мобильными устройствами с камерами не самого лучшего качества в различных неблагоприятных условиях затрудняющих распознавание. Для того чтобы повысить качество распознавания при генерации QR-кодов используется технология избыточного кодирования. Т.е. часть информации на коде дублируется. И если какая-то часть кода повреждена, то он все равно может быть безболезненно считан и расшифрован. Данная технология сделала возможным нанесение непосредственно на QR-код текстовой надписи или логотипа. Например, на код можно нанести номер телефона, который в нем зашифрован, чтобы люди не имеющие возможности его отсканировать и распознать могли ввести этот номер вручную. Поэтому брендированные QR-коды с логотипами становятся все больше распространены. Надпись или логотип как правило вставляются в центральную часть кода.
Почему контраст так важен при генерировании QR кодов?
Контраст между цветом переднего плана и цветом заднего фона должен быть достаточно большим для того, чтобы камера мобильного устройства смогла распознать изображение и отсканировать его. Только при наличии достаточного контраста ридер сможет определить шаблон.
В случае если контраст между передним и задним планом небольшой, тогда сканирующее устройство не будет способно «увидеть» двухмерный код и, как следствие, не сможет его расшифровать.
QR-код с градиентом
Усложняя алгоритм раскрашивания QR-кода мы приходим от линейных цветной заливки к градиентной заливки. Если вдруг вам еще не знаком термин “градиент”, то это плавный переход от одного цвета к другому. Другими словами градиентом может быть плавный переход от черного цвета к синему. Градиенты бывают линейными, радиальными, ромбовидными и других причудливых форм. Иногда правильным градиентом удается значительно улучшить визуальное восприятие QR-кода по сравнению с линейной цветной заливкой.
Как быть с перевернутыми кодами?
Перевернутые – это такие коды, для переднего плана которых выбран более светлый оттенок, а для заднего – более темный. С такими изображениями нужно быть аккуратным, так как на данный момент небольшое количество ридеров может их отсканировать. Если вы генерируете коды такого вида, обязательно протестите их перед тем, как внедрять в маркетинговую кампанию.
Размер имеет значение
Размер важен из более точки зрения. Прежде всего, код должен быть читабельным. Большинство экспертов считают, что минимальный размер сканера - 0.4×0.4 дюйма (1×1 сантиметр). прочитай код. Некоторые другие рекомендуют удвоить размер - просто для того, чтобы поиграть. это безопасно. Если ты не уверен, что больше - это лучше - ты просто не можешь ошибиться. это.
Кроме того, размер имеет значение потому что это может помочь клиенту увидеть код. Если он слишком мал где-то в угол, большинство людей не заметят его. Подумайте о тех кодах на большом упаковка продуктов питания - вы можете даже не знать об их существовании.
Наконец, рассмотрим рекламную среду. Размер прямо пропорционален ему. Вам нужен один размер для журналов и листовок и другой размер для плакатов и рекламных щитов. Люди будут сканировать коды с разных расстояний. Они не подойдут слишком близко, если код находится на здании или высоком рекламном щите, поэтому размер должен быть достаточно большим, чтобы соответствовать среднему экрану.
Версии QR-кода
По спецификации коды делятся на версии. Номера версий варьируются от 1 до 40. Каждая версия имеет особенности в конфигурации и количестве точек(модулей) составляющих QR-код. Версия 1 содержит 21×21 модулей, версия 40 — 177×177. От версии к версии размер кода увеличивается на 4 модуля на сторону.
При создании матричного кода следует учесть, что лучшие QR-ридеры способны прочитать версию 40, стандартные мобильные устройства — вплоть до версии 4 (33x33 модулей)
Каждой версии соответствует определенная емкость с учетом уровня коррекции ошибок. Чем больше информации необходимо закодировать и чем больший уровень избыточности используется, тем большая версия кода нам потребуется. Современные QR-генераторы автоматически подбирают версию QR-кода с учетом этих моментов.
В следующей таблице показаны характеристики различных версий QR-кодов:
Версия | Количество модулей | Уровень коррекции ошибок | Максимальное количество символов с учетом уровня коррекции ошибок и типа символов | |||
---|---|---|---|---|---|---|
Числа: 0 — 9 | Числа и символы латинского алфавита*, пробел, $ % * + — . / : | Двоичные данные | Символы японского алфавита Kanji | |||
1 | 21×21 | L | 41 | 25 | 17 | 10 |
M | 34 | 20 | 14 | 8 | ||
Q | 27 | 16 | 11 | 7 | ||
H | 17 | 10 | 7 | 4 | ||
2 | 25×25 | L | 77 | 47 | 32 | 20 |
M | 63 | 38 | 26 | 16 | ||
Q | 48 | 29 | 20 | 12 | ||
H | 34 | 20 | 14 | 8 | ||
3 | 29×29 | L | 127 | 77 | 53 | 32 |
M | 101 | 61 | 42 | 26 | ||
Q | 77 | 47 | 32 | 20 | ||
H | 58 | 35 | 24 | 15 | ||
4 | 33×33 | L | 187 | 114 | 78 | 48 |
M | 149 | 90 | 62 | 38 | ||
Q | 111 | 67 | 46 | 28 | ||
H | 82 | 50 | 34 | 21 | ||
10 | 57×57 | L | 652 | 395 | 271 | 167 |
M | 513 | 311 | 213 | 131 | ||
Q | 364 | 221 | 151 | 93 | ||
H | 288 | 174 | 119 | 74 | ||
40 | 177×177 | L | 7,089 | 4,296 | 2,953 | 1,817 |
M | 5,596 | 3,391 | 2,331 | 1,435 | ||
Q | 3,993 | 2,420 | 1,663 | 1,024 | ||
H | 3,057 | 1,852 | 1,273 | 784 |
* При использовании кириллицы один символ считается за 2 латинских символа (кодировка UTF-8)
Не жертвуйте цветом и контрастом
Большинство QR-кодов черно-белые. Обычно они черные и отображаются на белом фоне. Однако, в пытаются сделать так, чтобы они соответствовали теме или определенному стилю, многие маркетологи выбирают чтобы изменить их цвет. Иногда это может быть хорошей идеей, но мудрее. придерживаться того, к чему люди привыкли - черного и белого.
Смена цветов - это совершенно нормально. Однако, убедитесь, что вы делаете это правильно. Выбирайте насыщенные цвета - даже если они не соответствуют теме. Контраст должен быть глубоким и интенсивным. Даже если тема включает в себя выцветшие цвета или альфа эффект, не применяйте этот стиль к вашему QR Код.
Некоторые приложения для сканирования могут не достаточно мощный, чтобы делать свою работу. С другой стороны, если код отображается на рекламный щит или окно, свет может показаться трудным для чтения. Никто не будет потратили больше нескольких секунд, пытаясь отсканировать свой код. Кроме того, некоторые сканеры может даже не работать, когда дело доходит до низкой контрастности.
Хочешь верь, хочешь нет, но даже клиенты не заметит QR-код, если вы не дадите ему достаточно контрастности, поэтому сделайте он выделяется в толпе.
Когда тонального контраста будет достаточно?
Количество тонального контраста для того, чтобы обеспечить быстрое и надежное сканирование, зависит от нескольких факторов:
- Окружающий свет (даже черно-белые изображения могут быть не отсканированы при темном освещении).
- Поверхность отражения (блестящая поверхность будет отражать белый цвет, не стоит выбирать белый фон, если вы хотите для переднего плана выбрать блестящие оттенки).
- Расстояние сканирования (чем дальше расположен QR, чем меньше он виден камере, тем более выраженное контрастное различие должно быть между передним и задним планом).
- Качество камеры (некоторые камеры имеют особые тональные диапазоны).
Поэтому лучше всего выбирать стандартный уровень контрастности, который будет работать в условиях сканирования любыми ридерами. Безопасный уровень контрастности должен быть не меньше 40%. При такой процентной разнице QR ридер сможет точно различить два цвета.
Традиционные черно-белые коды имеют наибольшую вероятность распознавания при условиях, если тональный контраст 100% (белый – 0%, черный – 100%).
QR-код с закругленными углами
Закругленные углы сегментов QR-кода стали очень популярны, т.к. действительно такой код визуально выглядит намного привлекательней стандартного с квадратными сегментами. Используя данный метод трансформации кода необходимо выбрать радиус скругления и посмотреть на полученный результат. Часто этот метод используют в совокупности с одним из методов раскрашивания QR-кодов. Теоретически помимо скругления можно придумать другие варианты трансформации формы сегментов, но это может сказаться не самым лучшим образом на визуальном восприятии кода, а также качестве считывания его мобильными устройствами.
Тональный контраст и оттеночный контраст
Чаще всего стандартные QR коды создаются черно-белыми (тональный контраст) и именно под сканирование таких qr разрабатываются мобильные приложения. Данные ридеры не способны различать оттенки цветов, они «видят» исключительно разницу двух противоположных цветов. В таком случае не прогадаешь, потому что черный и белый – контрастные цвета.
Если же вы генерируете цветной QR код (оттеночный контраст), то крайне важно учесть, чтобы разница в цветах была достаточно большой (например, красный и зеленый, красный и черный, красный и синий, желтый и синий), для того чтобы ридер смог «увидеть» два оттенка. Те цвета, которые видит глаз человека, диаметрально отличаются от восприятия цветов мобильным устройством. Поэтому обратите внимание на яркость одного из выбранных вами оттенков. Если два цвета будут похожи (оранжевый и желтый), в них не будет достаточно контраста, тогда ридер не сможет определить зашифрованную информацию.
QR-код с фоновым изображением
Следующим ходом на пути к оживлению QR-кода будет вставка фонового изображения. Здесь есть два пути по которым можно пойти. Первый путь — это вставка фоновой картинки на место черных сегментов, при этом картинка должны быть достаточно низкой яркости, чтобы контраст с белыми сегментами был высок. Это необходимо для корректного считывания кода. Второй путь — это подложка под белые сегменты кода. В этом случае напротив, яркость картинки должна быть высокой в контрасте с черными сегментами. Применяя данный подход можно получить достаточно интересные визуальные эффекты на QR-коде.
Анимированный QR-код
И апофеозом трансформации QR-кодов можно считать анимированные коды. Опять же благодаря технологии защиты от сбоев открываются большие возможности. Т.е. QR-код можно смотреть как видео-ролик при этом он не теряет способность быть считанным и расшифрованным. Не смотря на значительны расходы связанные с созданием подобного кода часто он бывает оправдан. Единственное ограничение такого рода кодов, что их нельзя распечатать. Т.е. сфера их применения это телевидение и интернет. Возможно в будущем видео на листе бумаги будет таким же обычным явлением как сейчас на телеэкране.
QR-коды представляют собой инновацию в наши дни. Проще говоря, вы видите их повсюду - от упаковки продуктов питания и визитных карточек до больших рекламных щитов и флаеров. Изготовление собственного QR-кода - относительно простая задача: найдите онлайн-генератор бесплатно и сделать это всего за несколько секунд. К сожалению, результат не всегда будет хорошим.
QR-код с разноцветными элементами
Еще одним способом оригинализации QR-кода является раскрашивание отдельных изолированных сегментов. Т.е. определенная группа смежных сегментов окрашивается в отдельный цвет. Часто можно встретить генераторы, красящие в отдельный цвет группы состоящие из единственного сегмента. Также в отдельный цвет иногда окрашивают центральные части угловых маркеров QR-кода. Также отдельные сегменты можно окрасить используя определенную текстуру. Не смотря на то что обычно для окраски используют не более двух цветов, можно встретить QR-коды похожие на радугу.
Уровни коррекции ошибок в QR-кодах
QR-код имеет специальный механизм увеличения надежности хранения зашифрованной информации. Для кодов созданных с самым высоким уровнем надежности могут быть испорчены или затерты до 30% поверхности, но они сохранят информацию и будут корректно прочитаны. Для исправления ошибок используется алгоритм Рида-Соломона (Reed-Solomon). При создании QR-кода можно использовать один из 4 уровней коррекции ошибок. Увеличение уровня способствует увеличению надежности хранения информации, но приводит к увеличению размера матричного кода.
Как известно, стремление сделать свою рекламную продукцию запоминающейся и выделяющейся — верный путь к успеху. Сегодня, мы поговорим с вами о том, что можно сделать с обычным черно-белым QR-кодом, чтобы он стал более живым и привлекательным.
Для тех кому не терпится попробовать сделать цветной QR-код или сделать QR-код с логотипом или фоновой картинкой:
Каких результатов можно добиться, изменив оформление кода?
- Стать заметным. Выделиться на фоне однотипных QR-кодов – сделать работу кода более эффективной. К примеру, вы можете развернуть код(он прочитается), сделать его цветным, закруглить уголки, добавить тень и т.д.
- Дать подсказку. Добавив в сам код или рядом с ним немного текста, который сможет прочесть человеческий глаз, еще до того, как воспользуется камерой мобильного телефона. Сейчас QR-код только активно начинает захватывать рынки и потребители своими смартфонами сканируют все вподряд. Добавить немного текста хорошо, за исключением самых очевидных случаев. Если в QR-коде зашифрован адрес сайта, то можно его расположить под кодом или прямо на нем (тут осторожней).
- Акцентировать внимание на бренде. Т.к. QR-коды очень привлекательный элемент в рекламе, то естественно, если гармонично вписать его в фирменный стиль организации можно подкрепить и усилить силу бренда в сознании потребителей. К примеру, раскрасить в фирменные цвета, внедрить логотип в код, оформить сегменты продукцией (смотрите далее очень интересный код из продукции Panasonic).
Контраст для генерирования цветных кодов
Если вы создаете матричный код, например, на онлайн-генераторе QR кодов, то у вас больше шансов остаться замеченными аудиторией. Потому что на цветной квадрат обращает внимание большее количество потребителей, чем на стандартные привычные глазу черно-белые. Вы можете выбирать любой необходимый вам цвет: желтый, красный, голубой и т.д.
Для того чтобы цветной QR код был действительно эффективным, важно, чтобы его мог отсканировать любой ридер. Поэтому при генерации стоит обращать особое внимание на контраст цветов. Потому что контраст – это один из ключевых параметров, который влияет на «читабельность».
*Обязательно учитывайте параметр контраста при создании дизайнерских и брендированных QR кодов.
«Код должен легко считываться» — это стало главной целью для японской компании «Denso-Wave» при создании двумерного матричного кода в 1994г.
Действительно, QR-код распознается даже в перевернутом состоянии. Три угловых квадрата привязки, ставшие отличительной особенностью кода, позволяют правильно развернуть его в памяти программы сканера.
QR-код с произвольным рисунком
Имея QR-код с повышенной помехозащищенностью мы можем встраивать в него любые изображения не перекрывающие код более чем на 30%. Часто такая изюминка в виде маленьких картинок на коде сильно меняют восприятие такого кода и повышают интерес к нему. Как правило, автоматическое встраивание таких изображений бывает невозможным, т.к. форма картинки может сильно зависеть от полученной конфигурации кода. Поэтому такого рода трансформации кода производятся дизайнерами в графических программных пакетах уже после того как код был создан генератором.
QR-код с нестандартной ориентацией
Очень простым, но действенным ухищрением может стать поворот QR-кода вокруг своей оси на 45 градусов. А имея красивое визуальное окружение можно сделать подобный код просто неотразимым для пользователей.
Качество всегда на первом месте
QR-код — это, по сути, изображение. Как и для любого другого изображения, качество чрезвычайно важно. В принципе, изображение плохого качества не даст вам желаемого эффекта. Напротив, это заставит вас выглядеть непрофессионально и повлияет на ваш имидж. В то же время качественное изображение привлечет внимание и поможет в процессе.
Когда дело доходит до QR-кодов, то качество делает разницу между кодом, который сканирует, и кодом, который будет Никогда не делай этого. Многие новички генерируют свои собственные коды, а потом играют. с размером путем изменения размера изображения. Во многих случаях они увеличивают его в лучшую сторону. размер, но увеличение изображения в низком разрешении сделает его размытым.
Все эти пиксели испортят эффект вашего QR-кода - вы с таким же успехом можете отказаться от этой идеи. Ваш код должен быть напечатан на четком и четком дисплее. Он сканирует лучше и выглядит профессионально. Вообще говоря, форматы PNG и JPG идеальны, независимо от размера - они могут быть большими для флаеров или маленькими для визиток. Если вы дотянетесь до типографияСкорее всего, вы получите форматы SVG и EPS, которые можно изменять без ущерба для качества.
В то время как размытый или пикселированный QR-код может сканироваться на некоторых устройствах, на многих других он также не будет работать. Если он выглядит слегка размытым, бросьте его и получите другой код в более высоком качестве. Также, попробуйте его на большем количестве устройств, прежде чем сделать его общедоступным.
Оптимальный объем контента
Содержание - королевское, но слишком много содержания. может испортить все назначение вашего QR-кода. Если вы посмотрите на разные коды, вы заметит, что некоторые из них более переполнены, чем другие. Что это значит? Те, которые имеют больше пикселей, несут больше содержания.
Слишком много контента может вызвать проблемы в различных обстоятельствах. Например, добавление большого количества контента уменьшит размер угловых элементов. Многие сканеры полагаются на эти углы для идентификации фактического кода, поэтому они больше не смогут выполнять сканирование.
Кроме того, переполненный КО код не может быть изменен слишком легко. Если вы хотите сделать его меньше, то шансы на то. много этих пикселей будут прилипать друг к другу. Код больше не будет читабельный, или это приведет к мертвым ссылкам.
Если вам действительно нужно добавить много контента, вам может понадобиться использовать динамические QR-коды. Обычно они стоят денег. Вместо того, чтобы использовать эти коды или переполнять их, подумайте о том, чтобы загрузить ваш контент на определенный веб-сайт и ссылка на ваш код. Это много более эффективным.
Проще говоря, ссылка на вашу специальную акцию сделает QR-код красивым. Но если вы захотите разместить ссылку на 10-страничный PDF-документ, то, скорее всего, в конечном итоге ваш код не сработает. В этом случае просто загрузите его куда-нибудь и разместите ссылку на него.
Инвертирование цветов - нет-нет
Это самая распространенная ошибка любитель может сделать. В то время как многие маркетологи советуют против этого (и при правильном использовании факты), это чрезвычайно распространено. Другими словами, многие любители выбирают дизайн. и стиль над эффективностью и производительностью. Их коды могут выглядеть хорошо, но они не всегда будут работать.
Классический QR-код имеет черный передний план и белый фон. Инвертирование цветов делает дизайн другим. Передний план светлее, а фон действительно темный. Он выглядит хорошо по одной причине — он другой.
Некоторые QR-сканирующие приложения хорошо и может идентифицировать изменения. Код будет работать отлично и выполнить нужное действие. Однако, существует не меньше приложений, которые просто не узнают эти QR-коды. Они настроены искать свет задний план и темный передний план. Если они не могут найти этот стиль, они не будут Сканирование.
Даже если вы попробуете свой QR-код с несколько различных устройств, и это, кажется, работает, попробуйте с другими работающими. системы и приложения для сканирования, и вы убедитесь сами.
Какой должен быть контраст?
Использовать правильную медиа-среду
Есть больше причин, по которым QR коды могут не сканироваться. Один из них вполне очевиден, но обычно пропускается из виду Маркетологи-любители - месторасположение. Поместите код в нужное место и вы имеют более высокий коэффициент конверсии. Поместите его не в то место и никто не будет даже заметить это. Так на что именно тебе следует обратить внимание?
По мнению многих маркетологов, это все дело в скорости и местоположении. В целом, это займет около 15 секунд, чтобы отсканировать QR-код. Этот промежуток времени включает в себя время, необходимое для того чтобы вытащить смартфон, разблокируйте его, откройте приложение для сканирования и выполните сканирование.
С этой точки зрения, QR-коды больше смысла в статических элементах. Имея QR-код в автобусе или автомобиле может показаться умной идеей, правда в том, что автобусы всегда в движении. Когда речь идет об автомобилях, для того чтобы QR-код был эффективен, они должны быть припаркованы. В то же время, телевизионная реклама или электронные рекламные щиты не приносят такой пользы. И опции тоже.
С другой стороны, статический рекламный щит или журнал может быть лучшей идеей, когда речь идет о QR-кодах. Дисплеи, плакаты и листовки делают лучший выбор, потому что у потенциальных клиентов есть все время в мире, чтобы отсканировать код.
Интересует реклама на стене? Убедитесь, что код находится на уровне глаз. Поставьте его слишком низко - по коленям или в пределах 20 дюймов от земли - и никто этого не увидит. Даже если они это сделают, они не будут наклоняться, чтобы сканировать это.
Заключение
В качестве краткого итога, QR-коды может и будет работать при правильном использовании. Хотя есть много соображений, когда планируя маркетинговую кампанию, эти обычные ошибки никогда не следует упускать из виду. в процессе.
Когда Квебек объявил, что будет рассылать электронные письма с подтверждением вакцинации всем, кто был вакцинирован с помощью прикрепленного QR-кода, у меня немного подкосились колени. Мне не терпелось разобрать его на части и покачать головой из-за количества частной медицинской информации, которая, несомненно, будет раскрыта в процессе.
Наконец-то пришло мое подтверждение вакцинации, и результат… вообще-то неплохой. Тем не менее, в хаках с нулевым разглашением всегда есть какое-то удовольствие, поэтому я все равно решил написать о своем опыте в блоге.
Мое первое впечатление было: «Боже мой, это излишне большой QR-код». Под QR-кодом перечислено не так много информации, поэтому они наверняка кодируют все виды личной информации без моего ведома. Знаете, как тот штрих-код на обратной стороне ваших водительских прав.
Естественно, первое, что я сделал, — отсканировал код с помощью приложения QRcode.
Интересно. Я думал, что там будет старый добрый JSON в бинарном формате, но все было иначе. Кажется, что кодировать кучу цифр в base64 неэффективно, но им удалось запихнуть все в один QR-код.
К сожалению, на этом часть процесса с нулевым разглашением заканчивается, потому что у меня есть довольно четкий индикатор, куда двигаться дальше: схема URI. Ясно, что это предназначено для связи с каким-либо приложением на устройстве человека, проверяющего код, который зарегистрируется для обработки этой схемы shc : . Но что это за схема?
Оказывается, у этого формата есть обширная документация и очень разумные цели дизайна, которые я нахожу как облегчением как держателя такого кода, так и немного разочаровывающим, когда кто-то собирается разобрать его целиком. Но не важно! У меня есть код и документ, которому нужно следовать, так что давайте снимем крышку и заглянем внутрь.
Согласно документу, использование числового режима для кодирования данных QR-кода обеспечивает немного более высокую плотность данных, чем использование двоичного режима, что объясняет гигантский URI чисел, а не более разумную строку в кодировке base64. Первая загадка раскрыта.
Длинная строка чисел, по-видимому, закодирована из строки ASCII, где каждая пара цифр является числом в десятичной системе счисления, которое является кодом символа. Чтобы еще больше запутать, выходные данные вычисляются с использованием Ord © -45. Пришло время написать скрипт, чтобы отреверсить этот процесс.
Из этого можно извлечь несколько вещей. Во-первых, очевидно, что PHP по-прежнему остается моим быстрым языком программирования. Как печально, но мы отложим это личное откровение для дальнейшего самоанализа.
С технической точки зрения, теперь все выглядит как строки в кодировке base64. И, конечно же, документ говорит мне, что я должен смотреть на JWS, то есть на подписанный веб-токен JSON.
Я сделаю паузу и скажу, что на самом деле это отличный вариант использования JWT. По сути, вместо какого-то бессмысленного токена или гигантского блока конфиденциальных данных концепция JWT подразумевает, что я должен ожидать список разрешений, на которые я имею право, завернутый в большой двоичный объект, который криптографически подписан эмитентом (в данном случае, Quebec Santé et Services sociaux).
Эта модель хороша тем, что ее может проверить любой, у кого есть соответствующий открытый ключ, даже без подключения к Интернету. Кроме того, ответ на вопрос «имеет ли это лицо право сесть на борт самолета / посетить концерт / посетить резиденцию для пожилых людей?» должны напрямую отвечать встроенным, а не косвенно подразумеваемым через проприетарный API или кучу тайных полей, связанных с номерами партий вакцины и т. д.
Теперь у меня нет копии соответствующего открытого ключа, но тело должно быть подписано, а не зашифровано, поэтому я все еще могу его прочитать.
Возможно, в духе реверс-инжиниринга мне следует вручную демонтировать JWS, но это довольно хорошо документированная (и, что немаловажно, хорошо реализованная) спецификация. Я собираюсь пойти на ленивый выход и использовать для этого пакет Composer web-token/jwt-framework.
Итак, мы успешно декодируем заголовок, но тело не приходит. Подсказка здесь — это «zip»: «DEF» в заголовке, как также указано в спецификации.
полезная нагрузка сжимается с помощью алгоритма DEFLATE (см. RFC1951) перед подписанием (обратите внимание, это должно быть «сырое» сжатие DEFLATE, без каких-либо заголовков zlib или gz
NB: мы декодируем, а затем перекодируем объект JSON, чтобы добавить пробел для удобства чтения, указав константу JSON_PRETTY_PRINT
Там немного больше личной информации, чем строго необходимо, хотя я полагаю, что сочетание имени и даты рождения с удостоверением личности с фотографией — разумный процесс. Они также предоставляют конкретные сведения о вакцинах, а не конкретные разрешения, как я надеялся. Опять же, это делает все более удобным для использования в разных юрисдикциях и избавляет от необходимости повторно выпускать JWS каждый раз при изменении политики, что в случае Квебека происходит примерно два раза в неделю.
На протяжении всего этого анализа я задавался вопросом, что может помешать кому-то просто предъявить совершенно действительное доказательство вакцинации другого человека. Поскольку все тело подписано криптографической подписью, вы не можете изменить чужое доказательство вакцинации, чтобы добавить свое имя, а это означает, что соединение доказательства вакцинации с удостоверением личности с фотографией — вполне разумный план. Это, безусловно, будет иметь место в аэропортах, но я очень сомневаюсь, что на спортивных объектах и т. Д. Будут просить второе удостоверение личности. Они просто отсканируют QR-код, увидят галочку на своем устройстве и перейдут к следующему.
Одна напутственная мысль: в то время как мой процесс был направлен на выяснение того, какие из моих личных данных кодируются в QR-коде, модель JWT печально известна тем, что ее легко испортить, либо забывая проверить перед анализом данных, либо разрешая токены без подписи. Если реализации не соблюдают центральный белый список авторизованных подписывающих лиц, было бы тривиально легко создать совершенно действительный токен, который вы подписываете своим собственным ключом. Как всегда, безопасность модели действительно зависит от того, насколько строго проверяющая сторона обеспечивает соблюдение стандарта.
Однако оказывается, что единственная личная информация — это именно та информация, которая содержится в полном PDF-документе о вакцинации: имя, дата рождения, пол (по какой-то причине), а также информация о дате и конкретных дозах, которые владелец получил на сегодняшний день. Если вас устраивают последствия для конфиденциальности предъявления водительских прав в баре, вы не должны больше беспокоиться о том, что вас попросят предъявить доказательство вакцинации.
Код представляет собой целую кучу мусора, но если вы хотите увидеть, что находится в вашем собственном QR-коде, вы можете проверить репозиторий GitHub для этого поста.
Читайте также: