Виявлення бекдора у смарт-картах FM11RF08S від Shanghai Fudan Microelectronics стало серйозним сигналом для індустрії безпеки. Попри запевнення у надійності, ці карти виявились вразливими через прихований механізм, який дозволяє отримати доступ до захищених даних. Розбираємо, як працює протокол CRYPTO-1, чому важливий незалежний аудит систем безпеки та як уникнути подібних ризиків у майбутньому. Дізнайтеся більше про те, як впроваджені бекдори можуть загрожувати вашим даним.
Смарт-картки вже давно є невід’ємною частиною сучасних систем доступу. Здається, достатньо лише піднести карту до зчитувача, і двері офісу автоматично відчиняться. Але що, якщо таку картку може зламати будь-хто з мінімальними технічними навичками?
У 2020 році компанія Shanghai Fudan Microelectronics презентувала нову модель смарт-карт FM11RF08S, заявляючи про її стійкість до всіх відомих методів злому. Однак група експертів у сфері безпеки виявила критичну вразливість: вбудований бекдор, який дозволяє отримати повний доступ до інформації, що зберігається на карті.
Цей інцидент став яскравим прикладом того, наскільки небезпечною може бути відсутність незалежного аудиту в розробці систем безпеки. Розкриття бекдору продемонструвало, що покладатися лише на заяви виробників — ризикований шлях.
MIFARE Classic — це один із найпоширеніших стандартів безконтактних карток, який досі активно використовується. Попри його популярність, безпека цього стандарту залишається під сумнівом. Протягом багатьох років хакери неодноразово демонстрували його вразливість, перетворюючи злом MIFARE Classic на своєрідне змагання.
Виробники ж обрали шлях найменшого спротиву. Замість повного перегляду архітектури, вони випускають тимчасові рішення у вигляді оновлень, намагаючись забезпечити сумісність із застарілим обладнанням. Такий підхід створює ризики для безпеки, які накопичуються через десятиліття використання застарілих технологій.
Ця ситуація підкреслює важливість глибокої перевірки кожного елемента системи безпеки, особливо якщо йдеться про пристрої масового використання.
У 2020 році компанія Shanghai Fudan Microelectronics випустила нову модель смарт-картки, розроблену на базі стандарту MIFARE Classic. Виробник проголосив її невразливою до всіх відомих методів злому. Маркетингові заяви наголошували на «покращеній безпеці», «усуненні слабких місць» та «інноваційних функціях захисту». Однак технічна документація містила лише загальну згадку про «покращення криптографічного протоколу», без конкретних деталей.
Спільнота хакерів поставилася до цих заяв скептично, готуючись до швидкого розв’язання нового завдання. Але несподівано карти залишалися неприступними навіть через кілька років. Здавалося, що розробники справді усунули всі вразливості.
Тоді дослідницька команда на чолі з Філіпом Тевеном вирішила глибше дослідити нову систему. Їхня робота призвела до приголомшливих відкриттів, що згодом змінили уявлення про безпеку цих карток.
Для розуміння вразливості нової системи важливо розібратися в основних принципах роботи протоколу CRYPTO-1, який використовується для автентифікації карток MIFARE Classic:
Користувач підносить картку до зчитувача.
Зчитувач надсилає команду авторизації, вказуючи цільовий блок пам’яті та ключ для доступу (наприклад, KeyA).
Карта відповідає згенерованим чотирибайтовим псевдовипадковим числом (Nonce).
Зчитувач поєднує Nonce із заздалегідь відомим ключем KeyA, використовуючи шифр CRYPTO-1.
Карта паралельно виконує ті ж обчислення. Якщо результати збігаються, автентифікація завершується успішно.
Уся подальша комунікація шифрується, а доступ до нових блоків пам’яті вимагає повторної автентифікації.
Процес вкладеної автентифікації відіграє ключову роль у відкритті команди Тевена. Як саме – стане зрозуміло після аналізу знайденого бекдору. Ця історія не лише демонструє технічну майстерність дослідників, а й наголошує на необхідності критичного підходу до заяв виробників про безпеку своїх продуктів.

Особливість значень Nonce у MIFARE Classic дозволяла реалізувати так звані Nested-атаки.
Розробники карт FM11RF08S обрали інший підхід. Під час першої автентифікації карта працювала за стандартним алгоритмом. Однак при вкладеній автентифікації виникала цікава особливість: для кожного блоку пам’яті карта видавала однакове значення Nonce. Подальший аналіз показав, що ці значення формуються залежно від трьох параметрів: номера сектора, унікального ідентифікатора карти (UID) та значення ключа доступу. У результаті кожна карта FM11RF08S мала власний набір постійних Nonce, які були прив’язані до конкретних комбінацій секторів і ключів.

На перший погляд, реалізований підхід виглядав перспективно. Класична Nested-атака більше не працювала, оскільки зловмисник вже не міг передбачити значення Nonce, незалежно від тривалості спостережень за картою. Але, як часто буває у питаннях безпеки, закривши одну уразливість, розробники ненароком створили нову.
Проблема виникала під час використання одного й того самого ключа доступу для автентифікації у двох різних блоках пам’яті. При вкладеній автентифікації карта видавала різні Nonce для цих блоків, але обидва шифрувала однаковим ключем. Це дало можливість зловмисникам зібрати пари зашифрованих Nonce та відновити оригінальний ключ без необхідності перебору. Дослідники назвали цей метод атакою повторного використання ключів (Reused Keys Nested Attack).
Наприклад, якщо карта використовує невідомий ключ KeyX у кількох блоках пам’яті, алгоритм його підбору виглядає так:
Виконується початкова автентифікація з використанням відомого ключа, що дозволяє встановити зашифроване з’єднання з картою.
Проводиться вкладена автентифікація у блоках, де застосовується KeyX, з одночасним збереженням кожного зашифрованого Nonce, який видає карта.
Далі проводиться перебір можливих значень ключа «офлайн»: для кожного Nonce комп’ютер генерує сотні теоретично можливих ключів, які могли його зашифрувати.
Отримані набори потенційних ключів порівнюються для різних Nonce, і визначається ключ, що присутній у всіх наборах — це і є шуканий KeyX.
Головна перевага цієї атаки полягає у її швидкості, адже весь процес підбору ключа виконується на комп’ютері без необхідності повторного доступу до картки. Однак метод вимагає виконання двох важливих умов: наявність хоча б одного дійсного ключа доступу та використання однакових ключів у різних секторах пам’яті карти.
Хоча цей метод дозволяє отримати доступ лише до ключів, що повторюються, і не гарантує повного злому, він став суттєвим відкриттям у дослідженнях команди Філіпа Тевена. А найцікавіше дослідження було ще попереду.
Дослідники застосували фазинг – вони відправляли на карту нестандартні команди та спотворені послідовності байтів, спостерігаючи за реакцією карти.

Згідно з протоколом, карта повинна бути вибірковою у своїй відповіді. На етапі автентифікації вона мала реагувати лише на три команди: автентифікацію з ключем keyA (код 60**), автентифікацію з ключем keyB (код 61**) та команду зупинки HLTA (код 5000). Однак команда Філіпа Тевена виявила порушення протоколу: карта відправляла Nonce у відповідь на будь-яку команду серії 6*00, від коду 6000 до 6f00, незалежно від блоку пам’яті.
Зацікавлені незвичною поведінкою карти, дослідники провели детальніший аналіз. Вони використали карту з відомими ключами, налаштували різні значення keyA та keyB і систематично перевірили всі можливі варіанти команд серії 6*00. Результати розподілилися на чотири групи залежно від реакції карти:
Група 1: 6000, 6200, 6800, 6a00 → Nonce: 4e506c9c (автентифікація успішна).
Група 2: 6100, 6300, 6900, 6b00 → Nonce: 7bfc7a5b (автентифікація успішна).
Група 3: 6400, 6600, 6c00, 6e00 → Nonce: 65aaa443 (автентифікація не вдалася).
Група 4: 6500, 6700, 6d00, 6f00 → Nonce: 55062952 (автентифікація не вдалася).
Коли дослідники змінили ключ keyA, Nonce для груп 1 і 3 змінилися. При встановленні однакових значень keyA і keyB кількість Nonce зменшилася з чотирьох до двох: один Nonce для груп 1 і 2 (успішна автентифікація) та інший для груп 3 і 4 (невдала автентифікація). Здавалося, для останніх двох груп карта очікувала використання ще одного ключа — keyC.
Ця аномалія підказала дослідникам, що можна використовувати цю поведінку для підбору ключа. З’ясування залежностей між командами і Nonce допомогло глибше зрозуміти механізми роботи карти та створило можливості для реалізації більш складних атак.
І тут дослідники зрозуміли: “А що, якщо загадковий keyC застосовується у всіх блоках карти?” І якщо це дійсно так, то… Бінго! Цей ключ можна піддати вже відомій атаці повторного використання ключів. Алгоритм виявився напрочуд простим:
Провести початкову автентифікацію за допомогою keyA.
Виконати кілька вкладених автентифікацій, використовуючи аномальні команди, в інших блоках пам’яті та зберегти отримані Nonce.
Обчислити всі можливі значення ключів для кожного зібраного Nonce.
Зіставити отримані набори ключів і визначити той, який є спільним для всіх них.
Використовуючи Python-скрипт, дослідники змогли знайти ключ менш ніж за дві хвилини. І ось він, ключ keyC, який виявився універсальною відмичкою. Його можливості дозволяли автентифікуватися без урахування значень keyA чи keyB. Більше того, він давав змогу зчитувати будь-які блоки даних, навіть ті, доступ до яких був заборонений стандартними ключами.
Справжній шок настав, коли цей ключ випробували на інших картах FM11RF08S. KeyC працював на всіх примірниках незалежно від партії чи дати виготовлення.
Це не був баг чи випадкова помилка. Це був повноцінний бекдор — навмисно вбудований механізм, що забезпечує привілейований доступ до карти, обходячи стандартні засоби захисту. Існування такого ключа стало серйозним ударом по безпеці FM11RF08S та всіх систем, які використовували ці карти. Проте це відкриття було лише початком масштабного викриття.
Виявлений бекдор дозволяв доступ до службових розділів пам’яті, де зберігалися ключі keyA та keyB, але їхні значення були замасковані. Для більшості хакерів це могло б стати кінцевою метою — знайдено критичну уразливість, час писати звіт. Проте команда Філіпа Тевена вирішила піти далі.
Їхньою новою метою стало відновлення значень ключів keyA і keyB, що відкривало б можливість безперешкодного клонування чи емуляції будь-якої карти FM11RF08S. Для цього вони створили наступний алгоритм:
Автентифікація з keyC. Вони автентифікувалися у блоці карти за допомогою майстер-ключа keyC. Карта надсилала Nonce у відкритому вигляді, який дослідники зберігали.
Шифрування Nonce. Зчитувач шифрував Nonce ключем keyC і повертав його карті. Карта перевіряла значення, і між пристроями встановлювався зашифрований канал.
Вкладена автентифікація з keyA. У тому ж секторі ініціювалася вкладена автентифікація з keyA. Карта надсилала той самий статичний Nonce, але тепер зашифрований ключем keyA.
Ключовим моментом стала операція XOR, яку команда застосувала між відкритим Nonce і його зашифрованою версією. Це дозволило обчислити ключовий потік. Далі, за допомогою модифікованої версії static nested attack, дослідники відновили значення keyA. Процес вимагав перебору кількох десятків тисяч можливих ключів, що на сучасному комп’ютері займало всього 3-4 хвилини.
Команда значно прискорила цей процес, використовуючи статистичні методи і покращені техніки аналізу:
32 випадкові ключі? 17 хвилин.
16 ключів із keyA = keyB? Півгодини максимум.
24 ключі, де 8 повторюються? 40 секунд.
Зрештою, бекдор не просто відкрив пролом у захисті, а повністю зруйнував її. Виробник перетворив карту на символічний картковий будиночок: банківське сховище, де кожна комірка має унікальний код, але за стіною приховано кнопку, що відкриває всі осередки одночасно.
Володіння майстер-ключем keyC дозволяло зловмиснику не лише отримувати доступ до даних, але й створювати повні копії карток. Це перетворювало будь-яку систему безпеки, яка використовувала FM11RF08S, на гру в азарт, де зловмисники завжди мали виграшну комбінацію.
Мабуть, історія з FM11RF08S увійде до підручників як класичний приклад того, як не треба робити системи безпеки. Виявлений бекдор перетворив “найзахищенішу реалізацію MIFARE Classic” на решето, поставивши під загрозу мільйони пристроїв по всьому світу. У тому числі й на важливих об’єктах: в аеропортах, електростанціях та промислових підприємствах.
Як усунути ризик? На жаль, рішення лише одне, і воно схоже на видалення хворого зуба – повна відмова від використання скомпрометованих карток. А їхня кількість… що ж, давайте просто скажемо, що рахунок йде на мільйони.
Незабаром після першого зламування FM11RF08S ідентичний бекдор з тим же майстер-ключом виявився у старіших картах Shanghai Fudan Microelectronics (FM11RF08 та FM11RF32), а також у продукції інших виробників — NXP Semiconductors до 2009 року випуску та Infineon до 20.
Це наводить на думку про те, що бекдор свідомо впроваджено з виробництва багато років тому. Може, для спрощення налагодження? Чи були якісь домовленості із держструктурами? Або… ми можемо лише гадати. Але факт залишається фактом: системи безпеки по всьому світу роками використовували карти із вбудованою вразливістю.
Ця історія дає три важливі уроки. Перший: репутація не гарантує безпеку. Другий: принцип «безпека через неясність» у криптографії неспроможний. Засекречування алгоритмів створює лише ілюзію захисту — єдине надійне рішення полягає у використанні відкритих алгоритмів, перевірених експертною спільнотою. Третій: довіряй, але перевіряй. Незалежний аудит та тестування на проникнення – це не зайві витрати, а життєва необхідність.
Ситуація з FM11RF08S, ймовірно, увійде до підручників як приклад того, як не слід проєктувати системи безпеки. Виявлений бекдор перетворив «найзахищенішу реалізацію MIFARE Classic» на вразливий інструмент, поставивши під загрозу мільйони пристроїв у всьому світі. Особливо тривожно, що ці карти використовувалися на об’єктах критичної інфраструктури, таких як аеропорти, електростанції та промислові підприємства.
На жаль, є лише одне рішення — повна відмова від скомпрометованих карток. Це болісний, але необхідний крок, подібний до видалення хворого зуба. Проблема лише в тому, що кількість таких карт обчислюється мільйонами.
Відкриття бекдору у FM11RF08S стало початком масштабного викриття. Незабаром той самий бекдор з тим самим майстер-ключем був знайдений у старіших моделях Shanghai Fudan Microelectronics (FM11RF08 і FM11RF32), а також у картах інших виробників: NXP Semiconductors (до 2009 року) та Infineon (до 2010 року).
Це викликає обґрунтовані підозри, що бекдор впроваджували свідомо ще на етапі виробництва. Чи це було зроблено для спрощення обслуговування? Можливо, це наслідок домовленостей із державними структурами? Точна причина невідома, але факт залишається: системи безпеки роками залежали від технологій із вбудованими вразливостями.
Ця історія підкреслює три важливі принципи, яких слід дотримуватися у сфері безпеки:
Репутація не дорівнює безпеці. Відомі бренди або перевірені часом рішення не гарантують захисту від помилок чи прихованих ризиків.
«Безпека через неясність» — це міф. У криптографії приховування алгоритмів не створює надійного захисту. Справжню безпеку забезпечують відкриті алгоритми, які перевірені й визнані експертною спільнотою.
Довіряй, але перевіряй. Незалежний аудит та тестування на проникнення — це не розкіш, а необхідність, яка допомагає виявити слабкі місця до того, як ними скористаються зловмисники.
Історія FM11RF08S стала гірким, але важливим уроком для галузі безпеки, показавши, як критично важливо проєктувати системи з прозорими алгоритмами та піддавати їх ретельній перевірці.