Стаття розглядає технологію RFID (радіочастотна ідентифікація), яка є поширеною безконтактною технологією радіо-міток, що використовується в різних додатках, таких як домофони, банківські картки, квитки громадського транспорту, перепустки до офісів, відстеження домашніх тварин, збір плати за проїзд та багато іншого. У статті докладно обговорюються два основні типи RFID-міток: низькочастотні (125 кГц) та високочастотні (13,56 МГц), виділяються їх відмінності в діапазоні, безпеці та застосуванні.
RFID — це безконтактна технологія радіоміток. Це досить поширене явище, і ви можете побачити його в багатьох місцях: домофони, банківські картки, проїзні в громадському транспорті, офісні перепустки, вони використовуються для відстеження домашніх тварин, для збору плати за проїзд тощо. Два основних типи тегів RFID є високочастотними. і низька частота.
Низькочастотні мітки (125 кГц) — працюють на більш високому діапазоні. Незважаючи на те, що вони небезпечні і тупі, вони все ж використовуються в примітивних системах контролю доступу: в домофонах, офісах, спортивних спорудах, музеях.
Високочастотні мітки (13,56 МГц) — мають нижчий ефективний діапазон порівняно з низькочастотними, але мають більш складні протоколи. Вони підтримують шифрування, автентифікацію та криптографію. Ці мітки зазвичай використовуються в безконтактних банківських картках, для оплати громадського транспорту та в системах контролю доступу з високим рівнем безпеки.
Тут ми порівняємо ці два типи тегів, розглянемо основні протоколи та навчимося працювати з ними за допомогою Flipper Zero — ми будемо читати, емулювати, зберігати та клонувати їх. Ви побачите, як ви зможете зберегти свій офіс, спорт, дім, будь-які ключі RFID, які у вас є, а ми подивимося, що Flipper може зчитувати з банківської картки.
Більшість міток RFID є пасивними мітками без внутрішнього джерела живлення. Мікросхема всередині повністю вимкнена, доки мітка не піддасться впливу електромагнітного поля зчитувача. Щойно антена мітки потрапляє в діапазон, починає поглинати енергію електромагнітного поля зчитувача, а чіп отримує живлення. Потім чіп вмикається і починає обмінюватися даними зі зчитувачем. Варто зазначити, що антена мітки налаштована на певну частоту, тому мітка може активуватися лише тоді, коли вона знаходиться всередині відповідного електромагнітного поля.
Зовні RFID-мітки можуть бути дуже різними: картки як товсті, так і тонкі, брелоки, браслети, монети, каблучки чи навіть наклейки. Судячи лише з візуальних зображень, майже неможливо розрізнити частоту чи протокол, на якому працює тег.
Досить часто виробники використовують схожі пластикові корпуси для різних типів RFID-брелоків, що працюють на різних частотах. Два абсолютно схожих тега всередині можуть бути абсолютно різними. Це варто враховувати, коли ви намагаєтеся розрізнити тип мітки, який у вас є. У цій статті ми розглянемо два найпопулярніші типи тегів RFID, які використовуються в системах контролю доступу. Flipper Zero підтримує обидві їх частоти.
Існує безліч протоколів RFID, що працюють на інших частотах. УВЧ, наприклад, використовує діапазон 840-960 МГц. Вони використовуються для відстеження активів на складах, оплати платних доріг, відстеження диких тварин під час їх міграції тощо. Ці мітки можуть мати акумулятор і працювати від пари метрів до кілометрів. Однак вони досить рідкісні, і ви можете не зустріти їх, якщо не шукатимете їх спеціально. Ми повністю опустимо їх для цілей цієї статті.
Найпростіший спосіб зрозуміти, на якому діапазоні працює RFID-мітка, це подивитися на антену. Низькочастотні мітки (125 кГц) мають антену з дуже тонкого дроту, буквально тонше волосини. Але такі антени мають велику кількість витків, тому виглядає така антена як суцільний шматок металу. Високочастотні карти (13,56 МГц) мають значно меншу кількість більш товстих витків, з видимими проміжками між ними.
Щоб побачити антену всередині, можна просвітити картку RFID. Якщо антена має лише кілька великих витків, швидше за все, це високочастотна антена. Якщо антена виглядає як суцільний шматок металу без зазорів між витками, то це антена низьких частот.
Низькочастотні мітки часто використовуються в системах, які не вимагають високого рівня безпеки: під’їзд до будівлі, ключі домофону, абонемент у спортзал тощо. Завдяки більшому радіусу дії їх зручно використовувати для платної парковки: водієві не потрібно піднесіть картку близько до зчитувача, оскільки вона спрацьовує з більшої відстані. При цьому низькочастотні мітки дуже примітивні, у них низька швидкість передачі даних. З цієї причини неможливо реалізувати складну двосторонню передачу даних для таких речей, як збереження балансу та криптографія. Низькочастотні теги передають лише свій короткий ідентифікатор без будь-яких засобів автентифікації.
Високочастотні теги використовуються для більш складної взаємодії зчитувач-тег, коли вам потрібна криптографія, велика двостороння передача даних, автентифікація тощо.
Зазвичай вони зустрічаються в банківських картках, громадському транспорті та інших безпечних пропусках.
Великий діапазон — нижча частота перетворюється на більший діапазон. Є зчитувачі EM-Marin і HID, які працюють на відстані до метра. Їх часто використовують на парковці автомобілів.
Примітивний протокол — через низьку швидкість передачі даних ці теги можуть передавати лише свій короткий ідентифікатор. У більшості випадків дані не автентифіковані та жодним чином не захищені. Як тільки карта потрапляє в зону дії зчитувача, вона просто починає передавати свій ідентифікатор.
Низький рівень безпеки — ці карти можна легко скопіювати або навіть прочитати з чужої кишені через примітивність протоколу.
Низький діапазон — високочастотні карти спеціально сконструйовані таким чином, що їх потрібно розміщувати близько до зчитувача. Це також допомагає захистити картку від несанкціонованих дій. Максимальна дальність зчитування, якої нам вдалося досягти, становила близько 15 см, і це було з високочастотними зчитувачами, виготовленими на замовлення.
Розширені протоколи — швидкість передачі даних до 424 Кбіт/с дозволяє використовувати складні протоколи з повноцінною двосторонньою передачею даних. Що, в свою чергу, дозволяє криптографію, передачу даних тощо.
Високий рівень безпеки — високочастотні безконтактні картки ні в чому не поступаються смарт-карткам. Існують карти, які підтримують криптографічно надійні алгоритми, такі як AES, і реалізують асиметричну криптографію.
Flipper підтримує як високочастотні, так і низькочастотні теги. Для підтримки обох частот ми розробили дводіапазонну антену RFID, яка розташована в нижній частині пристрою.
Для високочастотних протоколів (NFC) використовується окремий контролер NFC (ST25R3916). Він піклується про все, що стосується взаємодії апаратного забезпечення з картами: читання та емуляція. Низькочастотні протоколи 125 кГц реалізовані програмно через настроюваний аналоговий інтерфейс, який працює разом з MCU, а також дозволяє читати, писати та емулювати.
[Відео] RFID-антена всередині Flipper Zero.
Верхня частина друкованої плати захищена феромагнітним шаром, який ізолює решту електронних компонентів від перешкод і розширює робочий діапазон, відбиваючи високочастотне поле.
Під час складання антени вклеюються в задню панель Flipper. Він підключається до друкованої плати за допомогою пого-контактів. Це значно спрощує збірку, оскільки не використовуються кабелі та роз’єми UFL.
Низькочастотні теги зберігають короткий ідентифікатор, довжиною всього пару байтів. Ідентифікатор мітки порівнюється з ідентифікаторами, які зберігаються в базі даних контролера або домофона. Однак карта передасть свій ідентифікатор будь-кому, хто запитає, щойно отримає живлення. Досить часто ідентифікатор нанесений на саму картку, тому ви можете зробити знімок і ввести його у Flipper вручну.
ЕМ-Марін — ЕМ4100, ЕМ4102. Найпопулярніший протокол в СНД. Завдяки своїй простоті та стабільності можна зчитувати приблизно з метра.
HID Prox II — низькочастотний протокол, представлений HID Global. Цей протокол більш популярний у західних країнах. Він більш складний, а карти та зчитувачі для цього протоколу відносно дорогі.
Indala — дуже старий низькочастотний протокол, який представила Motorola, а пізніше придбала HID. Ви рідше зустрінете його в дикій природі порівняно з попередніми двома, оскільки він виходить з ужитку.
Насправді низькочастотних протоколів набагато більше. Але всі вони використовують однакову модуляцію на фізичному рівні і можуть вважатися, так чи інакше, різновидом перерахованих вище. На момент написання Flipper може читати, зберігати, емулювати та записувати всі три протоколи. Можуть бути інші, які не підтримуються прошивкою Flipper, але оскільки підсистема 125 кГц реалізована програмно, ми можемо додати їх у майбутньому.
[Відео] Фліппер читає тег EM-Marin
EM-Marin – найпоширеніший формат, який ми маємо в СНД. Він простий і не має захисту від копіювання. Карти EM-Marin зазвичай мають мікросхеми EM4100, але є й інші. Наприклад, ви можете мати EM4305, який можна переписати на відміну від EM4100.
Щоб прочитати низькочастотну карту, зайдіть у меню Flipper 125 kHz RFID —> Read
і помістіть тег на задній панелі пристрою. Flipper спробує визначити протокол і в разі успіху відобразить його разом із ідентифікатором картки. Оскільки Flipper пробує всі протоколи одночасно, це займає трохи часу. Наприклад, вам знадобиться кілька секунд, щоб прочитати картку Indala.
Довжина унікального коду EM4100 становить 5 байт. Іноді його можна знайти на самій картці. Унікальний код може бути записаний як десятковим, так і шістнадцятковим. Flipper відображає код у шістнадцятковому форматі, однак на картках EM-Marin зазвичай записані лише 3 нижні байти, а не повне 5-байтове число. Якщо немає способу прочитати їх з карти, інші 2 байти можна форсувати.
[Відео] Емуляція 125 кГц RFID для відкриття електричного дверного замка
Щоб емулювати RFID-мітку, нам потрібно зайти в меню 125 kHz RFID —> Saved
, вибрати необхідну мітку та натиснути Emulate
.
Деякі домофони намагаються захистити себе від дублювання ключа, надсилаючи команду запису перед читанням. Якщо запис вдається, цей тег вважається підробленим. Коли Flipper емулює RFID, зчитувач не може відрізнити його від оригінального, тому таких проблем не виникає.
[Відео] Фліппер читає тег HID26
HID Global — найбільший виробник пристроїв RFID у світі. Вони мають кілька високочастотних і низькочастотних протоколів RFID. Найпопулярнішим низькочастотним протоколом HID є 26-бітний H10301 (також відомий як HID26 або HID PROX II). Довжина унікального коду становить 3 байти (24 біти), а ще 2 біти використовуються для перевірки парності (для забезпечення цілісності даних).
На деяких картках HID26 написані номери – це номер замовлення на продаж та ідентифікатор картки. Ви не можете визначити всі 3 байти лише за допомогою цієї інформації, на картці є лише 2 байти, надруковані на ній у десятковому форматі. Це ідентифікатор картки.
Flipper може працювати тільки з протоколом HID26 сімейства HID. У майбутньому ми плануємо розширити цей список. HID26 є найпопулярнішим, оскільки він сумісний з більшістю цифрових систем контролю доступу.
[Відео] Flipper емулює низькочастотну карту та відкриває турнікет
Indala — це протокол RFID, розроблений компанією Motorola, а пізніше придбаний компанією HID. Це дуже старий протокол, який ви не знайдете в сучасних системах контролю доступу. Незважаючи на те, що це рідко, ви іноді можете знайти його в полі. На момент написання Flipper працює з Indala I40134.
[Відео] Фліппер читає картку Indala
Так само, як і в HID26, карти, що використовують Indala I40134, мають унікальний код довжиною 3 байти. На жаль, структура даних Indala є запатентованою, і кожен, хто бажає підтримувати цей протокол, змушений вибирати будь-який порядок байтів, а також спосіб інтерпретації сигналу на апаратному рівні.
Усі ці протоколи настільки прості, що ідентифікатор картки можна ввести вручну без оригінальної картки. Маючи ідентифікатор вашої картки в текстовому форматі, кожен, хто володіє Flipper, може ввести його вручну.
[Відео] Введення ідентифікатора картки Indala без самої картки
Щоб додати ідентифікатор картки, перейдіть у меню та виберіть 125 kHz RFID —> Add manually
, потім протокол і введіть ідентифікатор. Додана карта буде збережена на SD-карті, а потім може бути емульована або записана на порожнє місце.
Існують спеціальні бланки, які підтримують будь-який з трьох протоколів, згаданих вище (EM-Marin, HID Prox, Indala). T5577 – найпопулярніший тип чистої картки. Щоб записати ID на порожню картку, перейдіть до меню 125 kHz RFID —> Saved
, виберіть потрібний ключ і натисніть Write
.
[Відео] Запис на порожню картку T5577
Високочастотні мітки 13,56 МГц – це набір стандартів і протоколів. Зазвичай їх називають NFC , але це не завжди правильно. Основним набором протоколів, що використовується на фізичному та логічному рівнях, є ISO 14443. На ньому базуються протоколи високого рівня, а також альтернативні стандарти (наприклад, ISO 19092).
ISO 14443-A здається найпоширенішою реалізацією. Ним користуються майже всі проїзні в громадському транспорті та офісі, а також в банківських картках.
Простіше кажучи, архітектура NFC працює так: протокол передачі вибирається компанією, яка виготовляє карти, і реалізується на основі низькорівневого стандарту ISO 14443. Наприклад, NXP винайшла власний протокол передачі високого рівня під назвою Mifare. Але на нижчому рівні карти Mifare базуються на стандарті ISO 14443-A.
Flipper може взаємодіяти як з низькорівневим протоколом ISO 14443, так і з протоколом передачі даних Mifare Ultralight і EMV, які використовуються в банківських картах. Ми працюємо над додаванням підтримки Mifare Classic і NFC NDEF. Ретельний погляд на протоколи та стандарти, які складають NFC, вартий окремої статті, яку ми плануємо опублікувати пізніше.
[Відео] Зчитування UID з високочастотного тегу невідомого типу
Усі високочастотні карти на основі стандарту ISO 14443-A мають унікальний ID чіпа. Він діє як серійний номер карти, як MAC-адреса мережевої карти. Зазвичай UID має довжину 4 або 7 байтів, але рідко може досягати 10. UID не є секретом, їх легко читати, іноді навіть друкувати на самій картці.
Існує багато систем контролю доступу, які покладаються на UID для автентифікації та надання доступу. Іноді це трапляється, навіть якщо мітки RFID підтримують криптографію. Таке зловживання опускає їх за рівнем безпеки до тупих карт на 125 кГц. Віртуальні картки (наприклад, Apple Pay) використовують динамічний UID, щоб власники телефонів не відкривали двері за допомогою свого платіжного додатка.
[Відео] iPhone генерує новий UID кожного разу, коли зчитується Apple Pay
Оскільки UID є атрибутом низького рівня, ви можете опинитися в ситуації, коли UID уже прочитано, але протокол передачі даних високого рівня все ще невідомий. Ви можете читати, емулювати та вручну вводити UID за допомогою Flipper для примітивних читачів, які використовують UID для авторизації.
У Flipper зчитування тегів 13,56 МГц можна розділити на дві частини:
Читання низького рівня — читає лише UID, SAK і ATQA. Flipper намагається вгадати протокол високого рівня на основі даних, зчитаних із карти. Ви не можете бути впевнені на 100%, оскільки це лише припущення, яке ґрунтується на певних факторах.
Високорівневе читання — читає дані з пам’яті карти за допомогою певного високорівневого протоколу. Це буде читання даних на Mifare Ultralight, зчитування секторів з Mifare Classic або читання атрибутів картки з PayPass/Apple Pay.
Щоб використовувати певний протокол високого рівня під час зчитування даних, перейдіть NFC —> Run special action
і виберіть тип тегу, який ви бажаєте прочитати.
Щоб спробувати вгадати тип тегу та прочитати UID, перейдіть до NFC -> Read card
. Поки що Flipper може виявити лише банківську картку Mifare Ultralight та EMV.
[Відео] Читання даних із Mifare Ultralight
Mifare — це сімейство безконтактних смарт-карт із кількома протоколами високого рівня. Найпростішим з них є Mifare Ultralight. У базовій версії він має лише 64 байти вбудованої флеш-пам’яті та не має криптографічного захисту. Flipper може як читати, так і емулювати карти Mifare Ultralight. Такі мітки часто використовуються як перепустки для доступу в офіси, будинки та громадський транспорт. Квитки на громадський транспорт Москви, наприклад, використовують Mifare Ultralight.
[Відео] Читання даних з банківської карти
EMV (Europay, Mastercard і Visa) — міжнародний набір стандартів банківських карток. Банківські картки тепер є повноцінними смарт-картками зі складними протоколами обміну даними та підтримкою асиметричного шифрування. Окрім простого зчитування UID, ви можете витягнути з банківської картки набагато більше даних. Можна отримати повний номер картки (16 цифр на лицьовій стороні картки), термін дії, а в деяких випадках навіть ім’я власника разом зі списком останніх операцій.
Оскільки стандарт EMV може бути реалізований по-різному, дані, які можна отримати, можуть відрізнятися від картки до карти. Ви не можете прочитати CVV таким чином (3 цифри на звороті картки).
Банківські картки захищені від повторних атак, тому скопіювати їх за допомогою Flipper, а потім спробувати його емулювати, щоб заплатити за щось, не спрацює.
Порівняно з пластиковою банківською карткою, віртуальна картка у вашому телефоні надає менше інформації та безпечніша для офлайн-платежів.
Вони не дозволяють використовувати отримані дані для онлайн-платежів – звичайну картку можна використовувати для транзакцій Card-Not-Present (CNP), інколи можна оплачувати онлайн або по телефону. Перехоплені дані віртуальної картки не можна використовувати таким чином. Після реєстрації картки в Apple Pay усі платежі проходять через віртуальний токен, а всі операції підписуються криптографічно. Зчитування даних Apple Pay призводить до отримання номера PAN і терміну дії віртуального токена, а не оригінальної фізичної картки. Таким чином, якщо хтось спробує використати дані, перехоплені з віртуальної картки, для оплати в Інтернеті, такий платіж буде відхилено без спеціального підпису.
Вони не розкривають ім’я власника картки — деякі безконтактні картки можуть передавати ім’я власника картки та дані про останні транзакції. Віртуальні картки цього не роблять.
Підтримка банківських карток у Flipper реалізована виключно з метою демонстрації протоколу високого рівня. Ми не плануємо далі розширювати цю функцію. Безпека безконтактних банківських карток достатньо висока, щоб не хвилюватися, що такі пристрої, як Flipper, можуть бути використані для атаки на банківські картки.