Как записать пропуск на телефон nfc

Что будет при смене смартфона?

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

За счёт того, что приложение в режиме online проверяет все выданные ранее идентификаторы, выдача одного и того же идентификатора повторно не представляется возможной — приложение выдаст ошибку аутентификации.

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

Выдача гостевых идентификаторов

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

Выдача гостевых идентификаторов производится по разному в зависимости от вендора:

Контроллер БОРЕЙ

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

Часто контроллеры СКУД состоят из нескольких блоков управления и компьютера с базой данных. Мы принципиально не хотели держать отдельный компьютер и искали компактное решение в виде одного устройства, которым можно управлять через API для интеграции с Telegram-ботом.

Поиск такого устройства занял больше месяца, пока я не наткнулся на старую статью на хабре «Обзор СКУД с бесплатным программным обеспечением». В комментариях пользователь rgmih упомянул, что их компания производит именно такой контроллер.

Так мы нашли контроллер БОРЕЙ от компании ИТРИУМ.


Как записать пропуск на телефон nfc

Плата контроллера БОРЕЙ в настенном корпусе

Устройство работает под управлением Linux на базе ARM-процессора.

Основные достоинства устройства, которые редко можно встретить у других контроллеров:

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

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

Если доступ запрещен, контроллер посылает сигнал индикации на считыватель, и тот горит красным цветом и пищит о том, что доступ не разрешен.

Управление контроллером

Учетные записи заводятся в меню «Бюро пропусков». Чтобы не вводить идентификатор карты вручную, его можно поднести к считывателю в момент создания учетной записи.

Создание нового пропуска в веб-интерфейсе контроллера БОРЕЙ

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

FAQ

В процессе работы над системой мне часто задавали одни и те же вопросы, которые наверняка возникнут и в комментариях. Я собрал самые популярные:

Спасибо всем, кто помогал мне в этом проекте:

Иллюстрации к статье — aquamine
Помощь в написании кода — ValdikSS
Написание Telegram бота — Alexey Tsverov
Разработка прошивки считывателя — компания Parsec и лично Леонид Стасенко
Помощь в настройке контроллера — компания ИТРИУМ и лично Глеб rgmih Рыбаков

Карта «Тройка» как идентификатор

Карта «Тройка» — пополняемая карта для оплаты проезда на всех видах общественного транспорта Москвы. Это наиболее выгодный и удобный способ оплаты общественного транспорта и некоторых городских услуг: планетарий, каток, зоопарки, Третьяковская галерея, парковка. Поэтому «Тройка» есть у каждого москвича, который регулярно пользуется общественным транспортом. Приобрести карту можно в кассах метрополитена за ≈1$.

Технически карта выполнена на базе чипа Mifare Plus, работающего в режиме SL1 — режим эмуляции Mifare Classic 1K. На обратной стороне карты находится 10-значный номер, который используется для удаленного пополнения баланса карты. Этот номер удобно использовать в качестве идентификатора в СКУД.


Как записать пропуск на телефон nfc

Номер карты «Тройка», записан в памяти карты в 32-м блоке 8-го сектора. Для чтения защищенной области памяти необходим шестибайтный ключ, который давно не является таким уж секретным.

Номер карты «Тройка» (не путать c UID чипа) хранится в защищенной памяти в блоке 32 со второго байта по младшие четыре бита седьмого байта. Для чтения этой области памяти необходим А-ключ от сектора 8. Эти ключи давно не являются секретом и легко находятся в интернете вместе с подробным описанием формата хранения данных. Так как мы не собираемся записывать никакие данные на карту, нам достаточно ключа А для чтения нужного сектора.

Таким образом, для занесения нового пропуска в базу данных достаточно визуально считать номер карты и сообщить его администратору. Это можно сделать даже удаленно.

Вопросы безопасности такого подхода рассматриваются в FAQ в конце статьи. Примеры кода для чтения номера карты Тройка с помощью Arduino есть в главе «Первый прототип».

В Санкт-Петербурге существует похожая карта «Подорожник». При необходимости её можно также использовать в качестве идентификатора, одновременно с картой «Тройка».

Считыватель Parsec

С самого начала мы не хотели городить кустарные поделки на arduino или raspberry pi, поэтому стали искать решение на базе промышленного оборудования.

Так как на рынке готовых решений не существует устройств даже примерно похожих на то, что нам было нужно, мы стали спрашивать у всех производителей СКУД, кто сможет реализовать наши извращенные фантазии в своем оборудовании.

Единственной компанией, которая стала с нами разговаривать, были Parsec.ru
В итоге они согласились реализовать наши идеи в прошивке своего считывателя PNR-P03E.


Как записать пропуск на телефон nfc

Parsec PNR-P03E позвоялет запрограммировать любой нестандартный алгоритм чтения карт

Большинство RFID-считывателей, которые доступны в продаже, поддерживают только определенный формат идентификаторов. Например Mifare, HiD iClass и т.д.

Нам же требовалось, чтобы считыватель поддерживал одновременно несколько форматов карт, и реализовывал нестандартный протокол чтения EMV-карт.

Ключевые особенности считывателя PNR-P03E

Блок-схема, иллюстрирующая работу считывателя. При успешном считывании идентификатора, он передается на контроллер по протоколу Wiegand.


Как записать пропуск на телефон nfc

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

Выдача виртуального идентификатора

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

Одним из преимуществ использования виртуальных идентификаторов является то, что идентификатор  (числовой код идентификатора) пользователь в приложении посмотреть не может, а значит, идентификатор нельзя скопировать или передать.

Перехватить идентификатор при передаче от смартфона к считывателю тоже не получится, т.к. он передается в зашифрованном виде.

В зависимости от вендора, выдача производится немного различными способами:

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

Стоимость виртуальных идентификаторов

База данных виртуальных идентификаторов ведется на серверах производителя — это, видимо, одна из причин, по которым производителями берется плата за выдачу идентификатора.

ESMART – Безопасный виртуальный идентификатор ESMART® Доступ:

HID
Цены установлены до конца января 2019 года.

С февраля 2019 года:

Suprema
Сервер выдачи идентификаторов пользователям создается администратором на месте и содержится им же. Существует несколько типов пакетов:

Средняя цена, уточняемая производителем — 440 долларов на 100 человек бессрочно.

Suprema находится этапе становления своих мобильных решений, поэтому периодически происходит изменения прайса.

Salto
Плата берется за обслуживание облака по 2.1 Евро в год на одного пользователя.

Sigur
Предлагает бесплатные бессрочные мобильные идентификаторы, генерируемые на основе данных смартфона и программного обеспечения Sigur.

Выдача идентификатора на смартфон

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

Пожалуйста, не нужно больше карт!


Как записать пропуск на телефон nfc

Сейчас каждый хочет всучить вам свою карту: магазины, фитнес-клубы, парковки, бизнес-центры, VIP-скидки-баллы-накопления. Предлагать человеку носить с собой еще одну карту просто унизительно. А учитывая, что карты стандарта EM-Marine (125kHz), которые популярны в системах контроля доступа на территории СНГ, имеют толщину в три раза больше обычных ISO 7810 — это втройне унизительно.
Поэтому первое требование к нашей системе — никаких дополнительных карт.


Как записать пропуск на телефон nfc

Сравнение толщины карт Em-Marine и ISO7810

Помимо физических размеров, карты EM-Marine технологически отсталые. Такую карту можно легко клонировать с расстояния полуметра прямо из кармана прохожего.

Видео с демонстрацией: www.youtube.com/watch?v=qvIIUny4EWI
На видео показано считывание тонкой карты em4100 с расстояния 50см, толстые карты читаются с большего расстояния.

Преимущества мобильного доступа

Это дешевле, даже если виртуальные идентификаторы стоят денег, их нельзя потерять, сломать, их легче администрировать. А если виртуальные идентификаторы бесплатны — это катастрофически дешевле.

Это безопасней, создание дублей карт 125 Кгц, как HID Proximity, так EM-marine, процесс, который не составит труда даже для моей бабушки, моей бабушке, конечно, нет никакого интереса использовать «дыры» в вашей системе контроля доступа, но раз вы систему устанавливаете, то уже знаете, что интересующиеся есть.

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

Это проще администрировать. Когда идентификатор теряют, ломают, забывают дома, кто-то должен этот вопрос решить, и этот кто-то в зависимости от размеров предприятия может тратить на это достаточно значительное количество оплачиваемого времени.
Преимущество мобильного доступа в том, что смартфоны реже теряют, ломают и забывают дома.

Это эффективней, значительное снижение практики, когда сотрудники отмечают приход / уход друг за друга. В штатах, компании на этом теряют 373 миллиона долларов, по данным за 2017 год. Сколько у нас, никто не считает, возможно, широта русской души не позволяет, но судя по любви к мемам типа «эту страну не победить», думаю не меньше, чем в США.

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

Это удобней. Доступ с помощью мобильного устройства может быть более быстрой и удобной процедурой. Например, при проезде на автотранспорте технология Bluetooth Smart с увеличенной дальностью действия позволяет открывать ворота или шлагбаумы при приближении автомобиля, при этом водителю не придется опускать стекло автомобиля и дотягиваться картой до считывателя.

Казнь карточных СКУД

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

Для меня все началось в 2007 году, когда я впервые приехал в Китай. Мы с товарищем, почти как Баширов и Петров, решили мотануться на пару дней в Китай и оторваться там по полной, ну и заодно найти поставщика самых популярных в России в 2007 году, так называемых, толстых карт формата EM-marine (125 Кгц).

Проклятье российского рынка СКУД — толстая карта формата EM-marine.


Как записать пропуск на телефон nfc

Это была моя первая поездка, и кроме того, что не ту страну я считал страной третьего мира, что выяснилось в ту же минуту, как я сошел с трапа в аэропорту Гонконга, а на тот момент, это лучший аэропорт мира, также выяснилось, что в самом Китае, даже в то время, карты EM-marine практически не использовали, и уже тогда там преобладали карты стандарта Mifare и считыватели отпечатка пальцев (оценка лично моя, сугубо на глазок).

А теперь, первый главный вопрос: Как вы думаете, какие карты преобладают в России в 2018 году? Правильно, карты EM-marine.

Единственное, что хоть немного успокаивает то, что у «них» ситуация немногим лучше. Компания HID Global — один из крупнейших мировых производителей СКУД, примерно оценивает, что на данный момент 40% процентов глобального рынка СКУД — это карты HID Proximity (125 Кгц), которые в плане безопасности такая же шляпа, как EM-marine. На официальном сайте HID эти карты полноценно присутствуют, и в описании нет ни словечка о том, что эти карты могут быть скопированы.

Забавный в ковычках момент заключается в том, что карта Em-Marine, StandProx стоит 12 рублей, а самая простая карта формата HID Proximity, HID ProxCard II® — 200 рублей.

Сразу напрашивается второй главный вопрос: Обречен ли российский рынок на вечное использование бесконтактных карт? И если нет, то какие технологии идут им на смену?

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

На смену карточным СКУД придут:

О современном положении дел в области биометрической идентификации у нас на сайте есть огромный лонгридище. А вот о технологии мобильного доступа мы подробно поговорим в этой статье.

Первой компанией, предложившей мобильный доступ массовому потребителю, стала компания HID Global, входит в конгломерат ASSA ABLOY, оборот за 2016 год — $1,2 миллиарда. Входит в топ 50 крупнейших компаний в индустрии систем безопасности.

Скан из «white paper» HID Global

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

Сейчас 2018, и на рынке России вы можете найти 10 производителей, предлагающих решения для мобильного доступа.

  • Иностранные — 4
  • Российские — 6

Кажется что мы опять всех переиграли, и все остальные страны мира нам завидуют. Но дьявол, как всегда, в деталях, давайте в них вглядимся.

И вот первая деталь — российские компании представили свои продукты лишь в 2018 году, анонсировали в 2017 на выставке технических средств безопасности Securika. Но реально в продажу рабочие устройства поступили все-таки в 2018.

Вторая деталь — по количеству предложения российские производители, как всегда выигрывают, но что там с качеством. Инсайд — все плохо, но надежда есть.

Чего ждали российские производители СКУД 4 года, особенно при понимании всей катастрофичности преимуществ мобильного доступа.

Хранение данных

Вопрос с персональными данными — тема горячая, поэтому отдельно остановимся на том, что и где хранится.

Только идентификатор: Хранится в двух местах (в данном случае идентификатор — это всего лишь уникальное длинное число):

Идентификатор и ФИО держателя хранятся:

Первый прототип

Было решено использовать в качестве идентификатора пользователя 10-значный номер, который будет формироваться либо из десяти последних цифр PAN-номера платежной карты, либо из номера карты «Тройка». Идентификатор должен передаваться контроллеру, который будет сверять его с хранящимися в базе данных номерами и решать, открывать дверь, или нет.

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

Так родился первый прототип считывателя на Arduino + PN532 breakout board.
Видео с демонстрацией работы прототипа: www.youtube.com/watch?v=aXNvjuRrCQk

Скетч для Arduino, показанный в видео, выложен здесь: github.com/zhovner/Adafruit-PN532, в папке examples/ApplePay_Troyka_ACS
Данный код довольно плохой, потому как не генерирует ответ PDOL, из-за чего не все EMV-карты будут успешно прочитаны. Однако он позволяет понять общую логику работы системы описанной в статье.

Все СКУД неудобные

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

В некоторых случаях сложные СКУД необходимы: в крупных зданиях с множеством зон доступа, турникетами, охраной, временными пропусками.

В случаях, когда контролировать доступ нужно к одной или двум дверям, такие усложнения не оправданы. Даже содержание отдельного компьютера с программой под СКУД — перебор для нас.

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

Бюро пропусков в Telegram

Чтобы каждый раз не обучать нового администратора, как пользоваться веб-интерфейсом контроллера, мы решили создать Telegram бота, через которого будет происходить добавление/удаление пропусков. Это возможно благодаря наличию в контроллере БОРЕЙ REST API.


Как записать пропуск на телефон nfc

Управление пропусками через Telegram-бота.

Apple/Android Pay и банковские карты


Как записать пропуск на телефон nfc

Платежные инструменты с разными названиями работают по одному протоколу EMV

Все платежные инструменты, изображенные на картинке выше, работают по одному протоколу EMV, свободно доступному на сайте EMVco.com. Поэтому говоря «EMV-карта», мы будем подразумевать одновременно Apple Pay, Android Pay, Samsung Pay, Visa PayWave, MasterCard PayPass.

Существует заблуждение, будто POS-терминал должен отдельно поддерживать Apple/Android Pay, поэтому пользователи предпочитают искать на кассе специальную пиктограмму, чтобы быть уверенным, что их платежный инструмент поддерживается. На самом деле, почти везде, где поддерживается бесконтактная оплата, будет работать любое устройство.

Бесконтактные EMV-карты (и контактные тоже) позволяют без авторизации, то есть без ввода PIN-кода, считать данные, обозначенные ниже. В последней главе мы рассмотрим, почему это достаточно безопасно.

Некоторые карты не передают реквизиты Cardholder Name и лог транзакций, но PAN (номер карты) передается всегда. Этот номер не изменяется на протяжении всего срока действия карты.

Поэтому именно PAN мы решили использовать в качестве идентификатора для пропуска в СКУД. Для простоты и большой приватности, было решено использовать последние 10 цифр от номера карты. Таким образом, формат идентификатора получается такой же длины, как и номер карты Тройка.

В итоге, в базе данных идентификаторов мы имеем однородные записи длинной в 10 цифр, без необходимости дополнительно помечать где карта Тройка, а где EMV-карта.

Читаем EMV-карты на коленке

Читать EMV-карты можно любым NFC-ридером, поддерживающим передачу произвольных APDU-команд. Для этого не требуются промышленные сертифицированные ридеры, подойдет любой модуль для Arduino за $3

Чтобы изготовить прототип считывателя, мне потребовалось бегло изучить протокол EMV. Под спойлером — краткий разбор протокола EMV с примерами чтения на Arduino и компьютере.

Читаем банковские карты на коленке с примерами. ( Много текста)

Для чтения EMV карт подойдут такие устройства:

Описанный ниже процесс не является корректной реализацией протокола EMV. Приведенные команды APDU содержат ошибки и нарушают рекомендации EMVco, из-за чего могут не работать с некоторыми картами.

Для изучения протокола EMV рекомендуется читать официальную документацию, которую я, к своему стыду, почти не читал.

Приведенные APDU-команды будут одинаковыми не зависимо от выбранного оборудования. Однако в случае с PC/SC ридером не нужно заботиться о низкоуровневых командах, настраивать модуляцию и т.д.

Я буду использовать программу SmartCard Scripter, в связке с PC/SC-ридером HiD Omnikey. Программа SmartCard Scripter имеет наиболее компактный pascal-подобный синтаксис из всего что я видел. Краткое описание синтаксиса infintuary.org/scs_tut.php

Для того чтобы послать произвольную APDU команду на карту, достаточно такого когда:

// Программа для чтения UID карты
begin
APDU(‘FF CA 00 00 00’);
end.

Начало коммуникации — команда SELECT (PPSE)

Официальное описание: EMV Contactless Specifications — PPSE and Application Management for Secure Element

Начало общения с EMV-картой всегда происходит с чтения файла PPSE (Payment System Environment) командой SELECT.

APDU-команда SELECT PPSE

’00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00′
00 A4 04 00 // команда select
0E // длина command data (14 байт)
32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 // command data 2PAY. SYS. DDF01
00 // завершающий маркер

Старт платежного приложения — SELECT AID

В ответ на SELECT PPSE карта должна вернуть FCI (File Control Information) со списком приложений, существующих на карте. Помимо платежных приложений (VISA, MasterCard, AmericanExpress) карта может содержать неплатежные приложения, используемые для других нужд.

Ответ карты VISA на SELECT PPSE

‘6F 23 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 11 BF 0C 0E 61 0C 4F 07 A0 00 00 00 03 10 10 87 01 01 90 00’

Для удобства проанализируем ответ с помощью онлайн-парсера формата TVL emvlab.org/tlvutils/. Тот же ответ карты VISA, обработанный парсером:


Как записать пропуск на телефон nfc

Из всего этого нас интересует только идентификатор платежного приложения (AID). В данном случае, это значение A0000000031010, означающее Visa International.

AID помечается маркером 4F. Вторым битом после маркера следует длина данных, в нем содержащихся. Несмотря на то, что длина AID может варьироваться от 5 до 16 байт, в большинстве случаев она равна 7 байтам. Поэтому для простоты поиска AID в ответе, мы будем искать маркер 4F 07 и считать 7 байт после него как AID. Такой подход очень примитивный и может не работать в случаях, если длина AID будет другой, но для нашей задачи это не важно, так мы скорее всего никогда не столкнемся с картами, отличными от Visa и MasterCard. Поэтому наш самодельный парсер PPSE-ответа можно упростить до такой логики: если ответ начинается с 6F, заканчивается на 90 00 и содержит внутри последовательность 4F 07, ответ считается корректным.

Полный список AID: eftlab.co.uk/knowledge-base/211-emv-aid-rid-pix

Некоторые популярные AID

A0000000031010 Visa International
A0000000032020 Visa International
A0000000041010 Mastercard International
A0000000043060 Mastercard International United States Maestro (Debit)

Получив значение AID, его нужно запустить командой SELECT. В данном случае мы запускаем приложение Visa International, полученное из ответа на PPSE SELECT

APDU-команда SELECT AID

’00 A4 04 00 07 A0 00 00 00 03 10 10′
00 A4 04 00 // команда select
07 // длина command data (7 байт)
A0 00 00 00 03 10 10 // AID Visa International

Обработка PDOL (Processing Options Data Object List)

В ответ на запуск платежного приложения карта может затребовать от считывателя PDOL (Processing Options Data Object List). Это набор параметров POS-терминала — поддерживаемые протоколы и стандарты, валюта, в которой будет производиться расчет, дата, случайное число для криптографии, и так далее.

Список PDOL может различаться у разных карт. Общее число параметров PDOL — несколько десятков. Полный список параметров PDOL можно посмотреть здесь: eftlab.co.uk/index.php/site-map/knowledge-base/145-emv-nfc-tags.
Сложность состоит в том, что список PDOL у разных карт, даже выпущенных одним банком в разное время, может существенно различаться. Некоторые карты запрашивают два-три параметра, другие — десяток.

Это очень важный момент, так как некоторые карты могут отказаться работать без корректного ответа PDOL. Поэтому, для получения PAN-номера от всех карт, нам придется прикинуться настоящим POS-терминалом. Напомню, что единственной нашей целью является получения PAN-номера. Поэтому попытаемся сформировать максимально простой, но при этом корректный ответ PDOL.

Ответ карты на старт платежного приложения. Содержит запрос PDOL.

‘6F 31 84 07 A0 00 00 00 03 10 10 A5 26 9F 38 18 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 BF 0C 08 9F 5A 05 60 08 40 06 43 90 00’

Пропустим этот ответ через парсер:


Как записать пропуск на телефон nfc

Видно, что значение PDOL начинается с маркера 9F38 и равно 9F66049F02069F03069F1A0295055F2A029A039C019F3704. Парсер emvlab.org не умеет парсить значения PDOL, поэтому воспользуемся программой для Android-смартфонов Credit Card Reader.

Вот тот же ответ, обработанный более умным парсером. Видно каждый параметр PDOL:


Как записать пропуск на телефон nfc

Данный парсер не скрывает байт длины после маркера, как это делает emvlab.org. Поэтому последний байт каждого маркера следует читать как длину.

Разберем запрос PDOL подробнее

9F 38 18 // Маркер начала PDOL. Длина 18 (24 байта)
9F 66 (длина 04) // Terminal Transaction Qualifiers (TTQ). Параметры платежного терминала
9F 02 (длина 06) // Сумма списания
9F 03 (длина 06) // вторая сумма
9F 1A (длина 02) // Код странцы в формате ISO3166-1
95 (длина 05) // Terminal Verification Results
5F 2A (длина 02) // Код валюты, в которой работает терминал, в формате ISO4217
9A (длина 03) // Дата в формате YYMMDD
9C (длина 01) // Тип транзакции
9F 37 (длина 04) // Случайное число для криптографии

Подробное описание всех возможных параметров PDOL можно найти в EMV Contactless Specifications Book C-1/2/3 Kernel 1/2/3 Specification.

Карта ожидает ответ на PDOL в том же порядке, в котором следуют запросы, и ровно той длины, которая указана после каждого параметра PDOL. Если сложить длину всех параметров (последний байт каждого параметра), получится 33 байта. Значит карта ожидает от считывателя PDOL длиной в 33 байта.

Так как мы не собираемся списывать с карты деньги, наша задача — сформировать самый простой из возможных ответ PDOL, который удовлетворит карту. Если наш ответ не понравится карте, она ответит кодом 6985 Conditions of use not satisfied.

Экспериментальным путем я выяснил, что почти на все запросы PDOL можно ответить нолями, кроме Terminal Transaction Qualifiers (TTQ). В случае с VISA, нам нужно убедить карту в том, что терминал соответствует спецификации VCPS 2.1.1. Для этого ответ на TTQ должен выглядеть так:

‘F0 00 00 00’

Подробнее про формат TTQ здесь.

Карты MasterCard, которые мне довелось испытать, позволяли игнорировать PDOL и отдавали PAN-номер без корректного ответа на PDOL.

Вот как будет выглядеть минимальный рабочий ответ на запрошенный выше PDOL:

’80A80000238321F0000000000000000000000000000000000000000000000000000000000000000000′
80 A8 00 00 // Команда GET PROCESSING OPTIONS (GPO)
23 // длина всего запроса (35 байт)
83 // маркер PDOL-ответ
21 // длина PDOL-ответа (33 байта)
F0 00 00 00 // Terminal Transaction Qualifiers (TTQ)
00 00 00 00 00 00 // Сумма списания
00 00 00 00 00 00 // Вторая сумма
00 00 // Код страны считывателя
00 00 00 00 00 // Terminal Verification Results (TVR)
00 00 // Валюта
00 00 00 // дата
00 // тип транзакции
00 00 00 00 // Случайное число

Если наш ответ удовлетворил карту, мы получим сообщение, начинающееся с маркера 77 с кодом SW2=9000. Этот ответ может содержать нужный нам PAN-номер, а может и не содержать. (офигеть)

Поиск PAN-номера

Так как нам лень писать полную имплементацию протокола EMV, разбирать все структуры ответов и формировать корректные запросы, мы поступим глупым способом, а именно пошлем все возможные запросы и будем просто искать в ответах нужный маркер, содержащий PAN-номер.

PAN-номер может содержаться в трех местах:

APDU-команды (что они значат вообще? Хз, нужно прочитать)

’00 b2 01 1c 00′
’00 b2 01 0c 00′
’00 b2 02 0c 00′
’00 b2 01 14 00′
’00 b2 02 14 00′
’00 b2 04 14 00′

И парсим все ответы на предмет маркеров 57 13 либо 5A 08. Найденные 8 байт карты можно дополнительно чекнуть на контрольную сумму с помощью Алгоритма Луна.

Если номер валидный, берем его последние десять цифр.

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


Как записать пропуск на телефон nfc

NFC или Bluetooth

Для передачи идентификатора от смартфона к считывателю, используются интерфейсы связи NFC или Bluetooth. Разберем поподробней в чем разница, и какие могут быть плюсы и минусы в контексте целей СКУД.

NFC — технология ближней идентификации. Преимуществом является меньшее потребление энергии в сравнении с Bluetooth, но при этом NFC проигрывает технологии Bluetooth в дальности, NFC — дальность до 7 см, Bluetooth — дальность до 20 метров, неприхотливости к погодным условиям и скорости передачи данных.

Но большая дальность действия не всегда достоинство. N FC ввиду своей малой дальности считывания исключает возникновение проблем при передаче идентификатора, в то время как передачи по Bluetooth можно столкнуться с помехами и сигналами сторонних устройств, использующих эту радиочастоту.

Важная особенность использования технологии NFC состоит и в том, что модуль NFС недоступен на устройствах iOS, в отличии от Bluetooth которая доступна практически для всех мобильных устройств и является более универсальной.

Не нужно забывать что, специфика использования Bluetooth еще и в том, что он должен быть постоянно включен на смартфоне. Часто возникает опасение, что это будет быстро разряжать телефон. Использование технологии Bluetooth четвертого поколения, или BLE (Bluetooth Low Energy), позволяет не жертвовать зарядом телефона для использования систем мобильного доступа, поскольку передатчик включается лишь для отправки данных.

Кроме того, спецификой использования Bluetooth будет то, что если в зоне идентификации будет несколько считывателей то все они считают идентификатор и разблокируют преграждающие устройства, если иного не будет запрограммировано в контроллере СКУД, а всего скорее не будет, т.к. сложные сценарии работы поддерживают далеко не все СКУД.

Ну представьте себе ситуацию: идете вы по коридору а все двери на вашем пути отрываются, кроме того, что это смахивает на хорор, это, конечно, полностью противоречит целям СКУД. Большинство производителей позволяют регулировать дальность срабатывания для каждого конкретного считывателя, что будет хорошим решением, т.к. для двери это может быть одно, небольшое расстояние, а для шлагбаума наоборот и максимальные 20 метров — вполне рабочая конфигурация.

Передача идентификатора в контроллер СКУД

Администратор СКУД может получить коды активации от производителя разными путями:

Вендоры предлагающие решения для мобильного доступа на рынке России

1. Nedap
У Nedap очень удобно организована работа с гостевыми пропусками, для доступа гостя ему на E-mail отправляется одноразовый штрих или QR-код, который считан с экрана смартфона.

Мобильные приложение MACE App для Android и MACE App для iOS

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

Мобильное приложение на Android BioStar 2 Mobile и BioStar 2 Mobile для iOS.

Мобильное приложение на Android — Parsec Card Emulator

Мобильное приложение на Android — RusGuard Key

5. H ID
Решение от компании HID Global позволяет смартфону взаимодействовать со считывателями iCLASS SE и multiCLASS SE в ближнем режиме «Tap» (прикосновение) или на расстоянии в режиме «Twist and Go» (поворот смартфона). Технология «Twist and Go» позволяет разблокировать преграждающие устройства только после поворота смартфона пользователем на 90 градусов, что позволяет исключить случайное открытие при использовании Bluetooth.

Активная обратная связь в виде вибрации и звуковых сигналов при открывании дверей повышает удобство для пользователя.

К ценам каждого считывателя HID надо ещё прибавить $75 за Bluetooth модуль, он поставляется отдельно.

Мобильные приложения HID Mobile Access для Android и HID Mobile Access для iOS
Приложение позволяет получить на смартфон карту доступа через портал администратора. После чего пользователь может использовать телефон в качестве идентификатора доступа. Приложение BLE Config App позволяет с помощью телефона изменять конфигурацию считывателей, обновлять прошивки, получать и устанавливать конфигурацию, управлять шаблонами.

Мобильное приложение на Android — ESMART® Доступ
Мобильное приложение на iOS — ESMART® Доступ
Мобильное приложение ESMART® Конфигуратор доступно на iOS и на Android.

ESMART выделяется богатыми возможности для конфигурирования:
Типы считываемых идентификаторов:

Для всех карт Mifare можно задать количество данных, смещение, номер считываемого блока, а также ключ авторизации на сектор (Crypto1 или AES128)

ESMART® Доступ — это технология защищенного хранения и передачи физических и виртуальных идентификаторов, с безопасностью банковского уровня.
Физические карты построены на чипе JCOP (Java) и используют апплет ESMART-Доступ.
Апплет — это небольшое приложение, которое позволяет расширить функционал обычного идентификатора, подверженного копированию, до защищенного от копирования идентификатора.

В технологии ESMART® Доступ используются следующие степени защиты:

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

Мобильное приложение PW Mobil ID для Android и PW Mobile ID для iOS
Возможности:

8. Salto
У SALTO со смартфонами поддерхивает работу серия XS4 2.0.

Мобильное приложение JustIN Mobile BLE (только с контроллерами Salto)

JustIN Mobile использует технологию Bluetooth Low Energy (BLE) для безопасной передачи  данных между смартфоном и конечными устройствами. Зашифрованный ключ, созданный в программном обеспечении управления системой доступа SALTO — ProAccess SPACE, отправляется на смартфон пользователя “По воздуху” — Over the Air — OTA.

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

9. P ERCo
Оборудование PERCo, поддерживающее работу со смартфонами:

Работа со смартфонами в качестве идентификаторов поддерживается в программном обеспечении для СКУД — PERCo-Web и PERCo-S-20.

На смартфон с ОС Android должно быть установлено бесплатное приложение PERCo. Доступ. В качестве идентификатора для смартфонов с ОС Android используют уникальный идентификатор IMSI – индивидуальный номер абонента, ассоциированный с SIM-картой смартфона.

В смартфонах Apple (ОС iOS) в качестве идентификатора используется уникальный Token, привязанный к одной из банковских карт, эмулированных на смартфоне. Перед использованием в СКУД на смартфоне необходимо активировать именно эту банковскую карту. Уникальный Token не является номером банковской карты. Для смартфонов Apple установка приложения PERCo. Доступ не требуется.

Компания Sigur также как и большинство российских разработчиков, выкатили свой считыватель на Securika еще в 2017, на данный момент считыватель Sigur MR1 BLE доступен для заказа, а мобильные приложения доступны для скачивания.

Кроме смартфонов, считыватель работает с бесконтактными картами Mifare, серий — Classic, DESFire, Plus — в том числе в режиме SL3.

Также как идентификаторы можно использовать обычные банковские карты (Mastercard, Visa, МИР) с поддержкой бесконтактных платежей.

Sigur выделяется бесплатными мобильными идентификаторами, и тем что сами идентификаторы автоматически при выдаче сразу заносятся в базу данных СКУД и оттуда попадают в контроллеры. Мобильные приложения Sigur Доступ для Android Sigur Доступ для iOS.

Приложение для конфигурирования считывателей Sigur Настройки только для Android.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *