Коммерческие умные замки с поддержкой Apple Home Key или Google Wallet стоят от $250 и привязывают тебя к экосистеме одного производителя. Спецификация Aliro, опубликованная в феврале 2026 года, наконец даёт нам универсальный стандарт NFC-ключей, который работает с Apple Wallet, Google Wallet и Samsung Wallet через протокол Matter. Вопрос в другом: можно ли собрать совместимый контроллер доступа самостоятельно — на плате ESP32 за $12 и NFC-модуле за $6?
Именно это делает проект Aliro access controller. Он начинался как исследовательский инструмент для HomeKey на базе Proxmark3, а вырос в полноценный контроллер доступа Aliro на ESP32-S3 и PN532. Прошивка обрабатывает весь цикл: NFC-транзакция Aliro, управление замком, провижининг через Matter, MQTT-телеметрия, обнаружение взлома и метрики Prometheus. Одна кодовая база, три экосистемы кошельков, ноль вендорлока.
В этой статье разбираю архитектуру проекта, железо для повторения, отличия протокола Aliro от проприетарного HomeKey и текущее состояние прошивки. Если хочешь собрать свой умный замок или просто понять, как устроен NFC-контроль доступа через телефон на низком уровне — здесь полный технический разбор.
- Почему Aliro меняет правила игры для DIY-замков
- Архитектура проекта: семь треков в одном монорепозитории
- aliro-esp32 — основная цель
- homekey-esp32 — замороженная опорная версия
- homekey_reader.py — исследовательский инструмент на Proxmark3
- Остальные треки
- Железо: что нужно для сборки
- Основные компоненты
- Разводка (SPI, дефолтный пресет)
- Чем Aliro отличается от HomeKey на низком уровне
- Тестовый стенд: зачем нужны оба телефона
- Текущее состояние: что работает, а что нет
- Исследовательский инструмент Proxmark3: перехват трафика реальных замков
- Минимальный замок своими руками: самый простой путь к рабочему замку
- Аппаратная дорожная карта: от PN532 к PN7160 и PN7642
- Быстрый старт: прошивка и тест за 10 минут
- Связанные проекты и справочные материалы по протоколам
- Часто задаваемые вопросы
- Можно ли использовать это как настоящий дверной замок?
- Работает ли с Google Wallet?
- Нужен ли Proxmark3?
- А что с безопасностью? Сопоставление по UID тривиально клонируется.
- Можно ли поучаствовать в разработке прошивки Aliro?
Почему Aliro меняет правила игры для DIY-замков
До Aliro сборка умного замка с доступом по телефону означала выбор стороны. Apple Home Key использует проприетарный протокол на базе ECP (Enhanced Contactless Polling), обмена ключами ECDH и шифрования AES-GCM — всё привязано к фреймворку HomeKit. У Android аналогичного стандарта не было. Если нужна была поддержка Android, приходилось писать кастомное HCE-приложение (Host Card Emulation) и собственный протокол считывателя с нуля.
Aliro 1.0, выпущенный Connectivity Standards Alliance в феврале 2026 года, устраняет эту фрагментацию. Стандарт определяет единый формат NFC-ключей, который Apple, Google и Samsung приняли для своих кошельков. Транспортный уровень использует Matter DoorLock cluster с флагом ALIRO, так что любой Matter-совместимый контроллер может записать ключи из любого кошелька. Один считыватель — все телефоны.
Ключевой момент: Aliro можно реализовать от начала до конца без членства в CSA. Спецификация доступна для скачивания, Matter SDK открыт (espressif/esp-matter), а NFC-транзакция использует стандартные команды ISO 14443-A. Ни сертификационная лаборатория, ни лицензионное соглашение для сборки рабочего контроллера не нужны.
Архитектура проекта: семь треков в одном монорепозитории
Репозиторий организован как монорепозиторий с семью отдельными треками, каждый из которых выполняет конкретную роль в цикле разработки. Это не расползание скоупа. Каждый трек существует потому, что процесс запуска Aliro требует регрессионных эталонов, исследовательского инструментария и запасных путей, которые репозиторий с одной прошивкой обеспечить не может.
aliro-esp32 — основная цель
Главная прошивка. Контроллер доступа Aliro на ESP32-S3 + PN532, построенный на esp-matter. Это не просто NFC-считыватель. Здесь реализован полный стек контроллера:
- NFC-транзакция Aliro (SELECT, AUTH0, парсинг ключевого расписания)
- Управление приводом замка с настраиваемым срабатыванием
- BLE-комиссионирование через Matter и DoorLock cluster
- Локальный HTTP API для прямого управления по LAN
- MQTT-телеметрия для интеграции с домашней автоматизацией
- Обнаружение взлома и аномалий с отправкой вебхуков на видеонаблюдение
- Эндпоинт метрик Prometheus для мониторинга
Прошивка загружается, анонсирует себя для BLE-комиссионирования и уже доходит до живых команд Aliro SELECT и AUTH0 на iPhone. Основной открытый вопрос — переход Step-up при холодном касании после AUTH0 = 6984, над которым идёт активная работа.
homekey-esp32 — замороженная опорная версия
Включённый в проект форк rednblkx/HomeKey-ESP32, реализующий полный стек Apple HomeKey: ECP-поллинг, ECDH, AES-GCM и спаривание HomeKit-аксессуаров. Прошивка заморожена. Она не переписывается и не расширяется. Её задача — служить опорной версией для регрессий: перед каждой сессией разработки Aliro мы перепрошиваем её, чтобы убедиться, что железо в порядке.
Эта прошивка HomeKey также работает на полевом стенде LilyGO T-ETH-Lite-ESP32S3, где Ethernet-подключение через чип W5500 обеспечивает WebUI, OTA-обновления и доступ к логам по LAN, даже когда USB недоступен.
homekey_reader.py — исследовательский инструмент на Proxmark3
Python-скрипт, который переводит Proxmark3 (форк Iceman) в режим Apple ECP Access. Это исследовательский инструмент для перехвата трафика, а не рабочий замок. PM3 — единственное железо в проекте, способное снифать трафик ISO 14443-A, что делает его незаменимым для реверс-инжиниринга реальных Aliro-замков и наблюдения за тем, что iPhone реально отправляет по радиоканалу при транзакции HomeKey или Aliro.
Остальные треки
- android-smartkey — Kotlin HCE компаньон-приложение для кастомных NFC-ключей Android. Отложено — Aliro нативно покрывает Android через приложения кошельков
- smartkey-esp32-patch — черновые C++ патчи для прошивки HomeKey. Хранятся за пределами сабтри до завершения тестирования
- aliro-site — сайт проекта на aliro.mayday.software, задеплоен через Cloudflare Workers
- aliro-bridge — планируемый мост MQTT→Telegram для удалённых уведомлений, отправки на видеонаблюдение и агрегации аналитики
Железо: что нужно для сборки
Весь стенд обходится меньше чем в $25 и использует компоненты, доступные у любого поставщика электроники. Никаких кастомных печатных плат, специализированных инструментов или сертификационного оборудования.
Основные компоненты
| Компонент | Роль | Цена |
|---|---|---|
| ESP32-S3-WROOM-1 DevKitC | Хост-MCU (два USB-C: нативный USB + UART) | ~$12 |
| PN532 NFC breakout | NFC-фронтенд (режим SPI: SET0=H, SET1=L) | ~$6 |
| Y65592 screw-terminal адаптер | Беспаечное соединение ESP32 и PN532 | ~$3 |
Для установки на объекте замени DevKitC на LilyGO T-ETH-Lite-ESP32S3 — у него есть Ethernet на W5500 и нормальный формфактор под корпус. Учти, что Ethernet-чип занимает GPIO 9-14, так что пины PN532 придётся переназначить относительно дефолтного пресета DevKitC.
Разводка (SPI, дефолтный пресет)
| Пин PN532 | GPIO ESP32-S3 | Функция |
|---|---|---|
| 5V | 5V | Питание |
| GND | GND | Земля |
| SCK | GPIO 12 | SPI clock |
| MISO | GPIO 13 | SPI MISO |
| MOSI | GPIO 11 | SPI MOSI |
| NSS | GPIO 10 | SPI chip select |
| IRQ | GPIO 14 | Прерывание готовности фрейма (опционально) |
| RST | GPIO 9 | Аппаратный сброс (опционально) |
Назначение пинов настраивается при первом запуске через веб-интерфейс captive portal. В таблице показан встроенный пресет Default. IRQ включает сигнализацию готовности фрейма по прерыванию для снижения нагрузки на процессор. RST разведён на будущее для аппаратного сброса, но пока прошивкой не используется.
Чем Aliro отличается от HomeKey на низком уровне
Оба протокола используют NFC (ISO 14443-A) как физический уровень, но на прикладном уровне расходятся кардинально.
| Аспект | Apple Home Key | Aliro |
|---|---|---|
| Экосистема | Только Apple (HomeKit) | Apple, Google, Samsung (Matter) |
| Провижининг | Спаривание HomeKit-аксессуаров (HAP) | BLE-комиссионирование через Matter + DoorLock cluster |
| Обмен ключами | Проприетарный ECDH + AES-GCM | Стандартная аутентификация Aliro (SELECT + AUTH0 + Step-up) |
| Механизм пробуждения | ECP Access frame (проприетарный) | Стандартный NFC-поллинг (ISO 14443-A) |
| Express Mode | Да (без Face ID) | Да (реализация зависит от кошелька) |
| Спецификация | Получена реверс-инжинирингом | Опубликована CSA (доступна для скачивания) |
| Сертификация считывателя | MFi обязателен для коммерческих продуктов | Не требуется для реализации |
Практическое следствие: HomeKey-считыватели существуют потому, что такие люди, как kormax и rednblkx, отреверсили протокол Apple. Aliro-считыватели можно строить по официальной спецификации. Это принципиальная разница в жизнеспособности и правовой позиции.
Тестовый стенд: зачем нужны оба телефона
Для сквозной проверки контроллера Aliro нужны устройства из разных экосистем. Наш тестовый стенд включает:
| Устройство | Кошелёк | Что тестирует |
|---|---|---|
| iPhone 16 Pro Max | Apple Wallet (Home Key / Aliro) | ECP-пробуждение, трейсы SELECT/AUTH0, Step-up холодного касания |
| Samsung Galaxy Z Fold7 | Samsung Wallet (Aliro Digital Key) | Паттерн поллинга Samsung, крипто-путь только через Aliro |
Оба кошелька записывают ключи через одну и ту же команду Matter DoorLock cluster SetAliroReaderConfig. Ключи попадают в NVS-хранилище AliroDelegate независимо от того, какой телефон их записал. В этом и суть стандарта: один считыватель, любой кошелёк.
Тестирование сразу на двух устройствах редко встречается в open-source сообществе. Автор upstream-проекта HomeKey-ESP32 добавил экспериментальную поддержку Aliro в нижележащую библиотеку DigitalDoorKey, но не интегрировал её в прошивку. Судя по хронологии коммитов, у автора есть iPhone для тестирования Apple-стороны, но нет Samsung-устройства для Android-стороны Aliro. Наличие обоих телефонов позволяет прогонять оба пути и закрывать пробел в интеграции.
Текущее состояние: что работает, а что нет
| Трек | Статус | Подробности |
|---|---|---|
| aliro-esp32 | В разработке | Matter-скелет + Aliro-провижининг готовы; живые трейсы с iPhone доходят до SELECT/AUTH0; Step-up холодного касания в работе |
| homekey-esp32 | Работает (заморожен) | Полный стек HomeKey подтверждён на iPhone; Ethernet/WebUI-стенд на T-ETH-Lite |
| android-smartkey | Частично | JVM-тестируемый APDU-кодек, заглушка HCE-сервиса; приоритет снижен в пользу Aliro |
| aliro-site | Работает | RU/EN лендинг задеплоен через Cloudflare Workers |
| aliro-bridge | Планируется | Сервис MQTT→Telegram/видеонаблюдение/аналитика; не начат |
Главный блокер — переход Step-up при холодном касании. Когда iPhone отвечает на AUTH0 статусом 6984, контроллер должен эскалировать поток аутентификации. Это разница между касанием «известное устройство, экспресс-разблокировка» и «новое устройство, подтверди личность». Ответ 6984 документирован в спецификации Aliro, но реализация Step-up требует тщательной работы над конечным автоматом в транспортном слое PN532.
Исследовательский инструмент Proxmark3: перехват трафика реальных замков
Скрипт homekey_reader.py настраивает Proxmark3 на отправку HomeKey-совместимых ECP-фреймов поллинга и захват ответа iPhone. Это чистый исследовательский инструмент: он ничего не открывает. Зато позволяет наблюдать NFC-транзакцию между реальным телефоном и реальным (или эмулированным) замком на уровне протокола.
python3 homekey_reader.py
# Interactive menu:
# 2 → Enable ECP Access polling
# 4 → Continuous poll (tap iPhone near antenna)
# 6 → Decode last trace Скрипт содержит пресеты TCI (Target Card Identifier) для известных коммерческих замков:
| Замок | Значение TCI |
|---|---|
| Aqara U200 | 0007 |
| Schlage Encode Plus | 0006 |
| Yale Assure Lock 2 | 0005 |
| Level Lock+ | 0003 |
Эти значения TCI получены через hf 14a sniff на физических замках и могут отличаться в зависимости от версии прошивки. Когда на iPhone активирован Express Mode (по умолчанию для HomeKey), телефон отвечает на любой ECP Access frame выбором апплета HomeKey без какого-либо взаимодействия с пользователем. Если в трейсе видишь 5a / 5e / 90 00 — телефон включился в ECP-пайплайн.
Минимальный замок своими руками: самый простой путь к рабочему замку
Тем, кто хочет рабочий замок уже сейчас, не дожидаясь завершения прошивки Aliro, в репозитории есть lock_mvp.py: минимально жизнеспособный замок с аутентификацией по UID через Proxmark3.
# Enroll your first card:
python3 lock_mvp.py --enroll
# Start the lock (polls every 0.8s):
python3 lock_mvp.py
# Live keyboard commands:
# e → arm enroll mode (next unknown tap auto-adds)
# l → list current allowlist
# s → show lock state
# q → quit MVP поддерживает карты ISO 14443-A (Mifare, DESFire, NTAG) и LF-брелоки EM410x, распространённые в европейских и российских системах доступа в здания. Он намеренно не делает аутентификацию секторов Mifare (только сопоставление UID), проверку AID для DESFire и всю криптографию HomeKey/Aliro. Это инструмент для прототипирования, а не система безопасности.
Аппаратная дорожная карта: от PN532 к PN7160 и PN7642
Текущий стенд использует PN532 — самый доступный и хорошо задокументированный NFC-фронтенд для любительских проектов. Но у проекта есть чёткий план апгрейда железа:
- Сейчас: ESP32-S3 + PN532 — единственный проверенный стенд для текущего цикла разработки. Всё регрессионное тестирование и запуск Aliro идёт на нём
- Далее: NXP PN7160-EVK (OM27160) — NCI-контроллер NFC. Будем оценивать, когда PN532-вариант станет достаточно стабильным, чтобы сравнение имело смысл
- В перспективе: NXP PN7642-EVK (OM27642) — защищённый NFC-контроллер с аппаратной криптографией. Архитектурное исследование для считывателя продакшн-уровня
Отладочный комплект PN7160 заказан и ожидает доставки. PN7642 — более отдалённая цель: он обеспечивает аппаратное хранение ключей и защиту от вскрытия, чего PN532 предложить не может, а это критично для любого развёртывания за пределами лабораторного прототипа.
Быстрый старт: прошивка и тест за 10 минут
Самый быстрый путь от нуля до рабочего HomeKey-считывателя (замороженная опорная версия, не Aliro) занимает около 10 минут:
- Подключи PN532 к ESP32-S3 DevKitC по 8-пиновой SPI-разводке из таблицы выше. Screw-terminal адаптер Y65592 позволяет обойтись без пайки
- Прошей через веб-флешер на
homekey-esp32.vercel.app(Chrome или Edge, выбери таргет ESP32-S3, подключись по USB-C) - Подключись к точке доступа (
HomeSpan-Setup/homespan), открой captive portal, оставь пресет NFC-пинов на Default - Спарь с Apple Home по HomeKit setup code, показанному на экране
- Поднеси iPhone к антенне PN532. Express Mode должен сработать на автоматическую разблокировку
Для локальной сборки с полным тулчейном ESP-IDF:
cd homekey-esp32
nix develop
idf.py set-target esp32s3
idf.py build flash monitor Связанные проекты и справочные материалы по протоколам
Этот проект опирается на обширную работу сообщества по реверс-инжинирингу:
- kormax/apple-home-key-reader — оригинальный HomeKey-считыватель на Python/nfcpy и справочник по исследованию протокола
- kormax/apple-home-key — подробная документация протокола HomeKey
- kormax/aliro — исследование протокола Aliro, основной внешний источник по протоколу для прошивки ESP32
- rednblkx/HomeKey-ESP32 — каноническая реализация HomeKey на ESP32 (~900 звёзд), основа замороженной опорной версии
- rednblkx/DigitalDoorKey — библиотека с экспериментальной поддержкой класса аутентификации Aliro
- kormax/apple-enhanced-contactless-polling — примеры ECP-фреймов для всех режимов Apple NFC
Часто задаваемые вопросы
Можно ли использовать это как настоящий дверной замок?
Опорная прошивка HomeKey (homekey-esp32) работает с устройствами Apple. Подключи реле к GPIO ESP32 — и у тебя рабочий замок. Прошивка Aliro пока не готова для ежедневного использования: поток Step-up при холодном касании не завершён. Для продакшн-установки подожди, пока сквозной путь разблокировки Aliro не будет провалидирован.
Работает ли с Google Wallet?
Спецификация Aliro поддерживает Google Wallet, и Matter DoorLock cluster прошивки примет ключи от любого Aliro-совместимого кошелька. Полная валидация с Google Wallet ожидает подтверждения потока через Samsung Wallet (Samsung Wallet запустил поддержку Aliro раньше Google).
Нужен ли Proxmark3?
Нет. PM3 нужен только для исследовательского инструмента перехвата (homekey_reader.py). Прошивка самого замка работает на ESP32-S3 + PN532 — это единственное железо для рабочего считывателя. PM3 стоит брать, только если хочешь снифать и анализировать NFC-трафик на уровне протокола.
А что с безопасностью? Сопоставление по UID тривиально клонируется.
Верно. lock_mvp.py использует аутентификацию только по UID, которую любая магическая карта за $5 обходит. Это каркас для прототипирования, а не система безопасности. Прошивки HomeKey и Aliro используют полноценную криптографическую аутентификацию (ECDH, AES-GCM для HomeKey; стандартная аутентификация Aliro для Aliro), которую невозможно клонировать простым считыванием UID карты.
Можно ли поучаствовать в разработке прошивки Aliro?
Сайт проекта — aliro.mayday.software, пиши туда, если хочешь присоединиться. Основная область, где нужна помощь — переход Step-up при холодном касании (TODO, раздел 7.3). Если у тебя есть iPhone или Samsung с привязанными к кошельку ключами Aliro и стенд ESP32-S3 + PN532, твои NFC-трейсы сразу пригодятся для отладки конечного автомата Step-up.
