UWB-ключі для дверей та автомобілів: як це працює та що потрібно знати
Уявіть: ви підходите до дверей з повними руками сумок, і вони автоматично відчиняються — без жестів, без діставання телефона. Це не магія, а UWB-ranging на чипі U1 або NXP SR150. Ми розробляємо такі системи понад 5 років і знаємо всі підводні камені: від relay-атак до MFi-сертифікації. Гарантуємо якість та безпеку наших рішень.
UWB (Ultra-Wideband) — не Bluetooth з точним позиціонуванням. Це IEEE 802.15.4z, імпульсний радіозв'язок з точністю вимірювання дистанції ±10 см та кута ±5°. iPhone 11+ та сучасні Android-флагмани з чипом Qorvo DWM3000 або NXP SR150 вміють визначати точне положення UWB-пристрою в просторі. На цьому будуються Hands-Free ключі: телефон у кишені → двері відчиняються при наближенні на 0.5–1.5 м. Без натискання. Без NFC.
UWB перевершує Bluetooth за точністю позиціонування в 10 разів, що робить relay-атаки фізично неможливими. Детальніше про технологію — UWB (Ultra-Wideband).
Як працює UWB Ranging
UWB використовує Two-Way Ranging (TWR): пристрій надсилає імпульс, аксесуар відповідає, за часом прольоту (Time-of-Flight) обчислюється дистанція з сантиметровою точністю. На відміну від RSSI у Bluetooth — жодних перешкод від багатопроменевого поширення, стін, тіла людини.
Архітектура Hands-Free unlock:
- Смартфон починає BLE-advertise при розблокуванні
- UWB-модуль у замку виявляє телефон через BLE
- Ініціюється UWB-сесія для точного вимірювання дистанції
- При дистанції < 1.5 м + кут у секторі «перед дверима» → замок відчиняється
- При віддаленні > 5 м → замок зачиняється
Чому UWB безпечніший за Bluetooth для ключів?
Головна вразливість ключів на основі радіо — relay attack: зловмисник ретранслює BLE/UWB-сигнал, імітуючи близькість телефона до замка, коли реальний телефон далеко. UWB робить relay-атаку фізично неможливою: швидкість світла обмежує, і додаткова затримка ретрансляції (>1 мкс) детектується TWR як аномалія. Додатково: токени ключів мають бути ephemeral (короткоживучі, оновлюватись через BLE перед кожним ranging), підписані ECDSA-256 закритим ключем, що зберігається в Secure Enclave (iOS) або Android Keystore. Такий підхід забезпечує безпековий доступ без компромісів.
Що потрібно для реалізації UWB-ключа на iOS?
Apple відкрила UWB-доступ через NearbyInteraction (iOS 14+). Працює лише на iPhone 11+ з чипом U1. Аксесуар має підтримувати MFi UWB протокол.
import NearbyInteraction
class UWBKeyManager: NSObject, NISessionDelegate {
private var session: NISession?
func startRanging(accessoryToken: Data) {
session = NISession()
session?.delegate = self
session?.delegateQueue = DispatchQueue.main
guard let config = NINearbyAccessoryConfiguration(accessoryData: accessoryToken, bluetoothPeerIdentifier: peerBLEId) else {
return
}
session?.run(config)
}
func session(_ session: NISession, didUpdate nearbyObjects: [NINearbyObject]) {
guard let object = nearbyObjects.first else { return }
if let distance = object.distance {
// distance в метрах, точність ±10 см
if distance < 1.5 {
triggerUnlock()
}
}
if let direction = object.direction {
// SIMD3<Float> — вектор напрямку на об'єкт
let isInFront = direction.z < 0 // об'єкт перед телефоном
}
}
func session(_ session: NISession, didInvalidateWith error: Error) {
// NIErrorCode.invalidConfiguration — невірний токен аксесуара
// NIErrorCode.userDidNotAllow — користувач відмовив у Nearby Interaction
restartWithDelay()
}
}
accessoryToken — криптографічно підписаний токен, який аксесуар передає через BLE при першому виявленні. Apple не розкриває формат токена публічно — він частина MFi UWB Accessory Protocol. Без ліцензії MFi на стороні виробника замка ця схема недоступна. Entitlement для NearbyInteraction з аксесуарами: com.apple.developer.nearby-interaction.allow — стандартний, доступний без MFi. Але NINearbyAccessoryConfiguration вимагає токен від сертифікованого MFi UWB-аксесуара.
Як реалізувати UWB-ключ на Android?
Google відкрив UWB через androidx.core.uwb:uwb (Jetpack). Вимагає пристрій з UWB-чипом: Pixel 6 Pro+, Samsung Galaxy S21 Ultra+, деякі моделі OnePlus та Xiaomi.
implementation("androidx.core.uwb:uwb:1.0.0-alpha08")
class UWBDigitalKeyManager(context: Context) {
private val uwbManager = UwbManager.createInstance(context)
suspend fun startRanging(partnerAddress: UwbAddress) {
val controllerSession = uwbManager.controllerSessionScope()
val sessionParameters = UwbRangingParameters(
uwbConfigType = UwbRangingParameters.CONFIG_MULTICAST_DS_TWR,
complexChannel = controllerSession.uwbComplexChannel,
peerDevices = listOf(UwbDevice.createForAddress(partnerAddress)),
updateRateType = UwbRangingParameters.RANGING_UPDATE_RATE_FREQUENT,
sessionKeyInfo = generateSessionKey()
)
controllerSession.prepareSession(sessionParameters)
.collect { rangingResult ->
when (rangingResult) {
is RangingResult.RangingResultPosition -> {
val distance = rangingResult.position.distance?.value ?: return@collect
if (distance < 1.5f) triggerUnlock()
}
is RangingResult.RangingResultPeerDisconnected -> {
restartSession()
}
}
}
}
}
CONFIG_MULTICAST_DS_TWR — двосторонній ranging з підтримкою кількох пірів. Для одного замка достатньо CONFIG_UNICAST_DS_TWR.
Порівняння UWB, BLE та NFC для цифрових ключів
| Параметр | UWB | BLE | NFC |
|---|---|---|---|
| Точність позиціонування | ±10 см | 1–5 м (RSSI) | Контактний |
| Стійкість до relay-атак | Висока (фізика) | Низька | Середня |
| Відстань спрацьовування | до 1.5 м (налаштовується) | до 10 м | < 5 см |
| Споживання енергії | Середнє | Низьке | Дуже низьке |
| Підтримка пристроїв | iPhone 11+, флагмани Android 12+ | Всі смартфони | Майже всі |
UWB — найкращий вибір для безконтактних автоматичних ключів, де важливі точність та безпека. BLE підходить для ручного підтвердження (натискання кнопки в додатку), NFC — для резерву або налаштування.
Замкове обладнання з підтримкою UWB
Без підтримки UWB на стороні замка все вищесказане не працює. Партнери з готовими UWB-модулями для інтеграції:
- Allegion (Schlage) — UWB-замки для комерційної нерухомості
- dormakaba — CCC Digital Key 3.0 сумісні замки
- NXP SR150 eval kit — для розробки власного обладнання
Що входить в розробку UWB-ключа
- Аудит вимог та вибір архітектури (iOS/Android/кроссплатформа)
- Інтеграція UWB-модуля (NearbyInteraction або UWB API)
- Реалізація логіки Hands-Free unlock
- Шифрування ключів та зберігання в Secure Enclave / Android Keystore
- Тестування на реальному обладнанні (тестовий стенд)
- Документація API для інтеграції із замком
- Підтримка при публікації в App Store/Google Play
Ми працюємо над проектами будь-якої складності — від MVP до серійного продукту. Замовте консультацію, щоб оцінити ваш проект.
Строки та вартість
- Мобільний додаток з UWB-ranging та Hands-Free логікою (за наявності готового UWB-аксесуара): 2–4 тижні, вартість розраховується індивідуально.
- Розробка з нуля включаючи прошивку замка та UWB-модуль на NXP SR150: 2–4 місяці, вартість розраховується індивідуально.
- Вартість розраховується індивідуально і залежить від платформи, необхідності кастомного обладнання та сертифікації. Надаємо гарантію на всі роботи.
Наш досвід: 5+ років розробки мобільних рішень, 20+ проектів з цифровими ключами. Маємо сертифікати MFi та Google Play Console. Консультуємо з питань безпеки доступу.
Приклад роботи UWB-ключа в реальному часі
При наближенні телефона на 1.2 м з кутом в секторі ±30° замок відчиняється за 200 мс. При віддаленні більше 5 м — зачиняється.







