Kinit формується по алгоритму E22, який оперує наступними величинами:
BD_ADDR - унікальна адреса BT-устройства. Довжина 48 битий (аналог MAC-адреса мережевої карти РС)
PIN-код і його довжина
IN_RAND. Випадкова 128-бітова величина
На виході E22 алгоритму отримуємо 128-бітове слово, іменоване Kinit. Число IN_RAND відсилається пристроєм A в чистому вигляді. У випадку, якщо PIN незмінний для цього пристрою, то при формуванні Kinit використовується BD_ADDR, отримане від іншого пристрою. У випадку якщо біля обох пристроїв змінні PIN-коды, буде використаний BD_ADDR (B) - адреса slave-устройства. Перший крок сполучення минув. За ним слідує створення Kab. Після його формування Kinit виключається з використання.
Для створення ключа зв'язку Kab пристрою обмінюються 128-бітовими словами LK_RAND (A) і LK_RAND (B), що генеруються випадковим чином. Далі слідує побітовий XOR з ключем ініціалізації Kinit. І знову обмін набутого значення. Потім слідує обчислення ключа по алгоритму E21.
Для цього необхідні величини:
BD_ADDR
128-бітовий LK_RAND (кожен пристрій зберігає своє і набутого від іншого пристрою значення значення)
На даному етапі pairing закінчується і зачинається останній етап ініціалізації bluetooth - Mutual authentication або взаємна аутентифікація. Заснована вона на схемі "запит-відповідь". Один з пристроїв стає верифікатором, генерує випадкову величину AU_RAND (A) і засилає його сусідньому пристрою (у plain text), званому пред'явником (claimant - в оригінальній документації). Як тільки пред'явник отримує це "слово", зачинається обчислення величини SRES по алгоритму E1, і вона відправляється верифікатору. Сусідній пристрій проводить аналогічні обчислення і перевіряє відповідь пред'явника. Якщо SRES збіглися, то, значить, все добре, і тепер пристрої міняються ролями, таким чином процес повторюється наново.
E1-алгоритм оперує такими величинами:
·Випадково створене AU_RAND
·link key Kab
·Свій власний BD_ADDR
Уразливості і атаки
Базова pairing атака (атака на сполучення)
Проаналізуємо дані, обмін якими йде впродовж процесу сполучення:
№ОтДоДаніДовжина (битий) Інша інформація
1ABIN_RAND128plaintext
2ABLK_RAND (A) 128XORed with Kinit
3BALK_RAND (B) 128XORed with Kinit
4ABAU_RAND (A) 128plaintext
5BASRES32plaintext
6BAAU_RAND (B) 128plaintext
7ABSRES32plaintext
Представимо ситуацію: зловмисникові удалося прослухати ефір і під час процедури сполучення, він перехопив і зберіг всі повідомлення. Далі знайти PIN можна використовуючи перебір.
Перш за все необхідно скласти сам алгоритм перебору. Ми маємо в своєму розпорядженні перехоплені величини IN_RAND (він нешифрований) і BD_ADDR (нагадаємо, що адреси пристроїв видно в ефірі) і запускаємо алгоритм E22. Йому передаємо вищеперелічені дані і наш передбачуваний PIN. В результаті ми набудемо передбачуваного значення Kinit. Виглядає воно зразково так:
Kinit = E22 [IN_RAND, BD_ADDR (B), PIN'] де PIN' - передбачуваний нами PIN-код
Далі, повідомлення 2 і 3 піддаються XOR з тільки що отриманим Kinit. Отже, наступним кроком ми отримаємо LK_RAND (A) і LK_RAND (B) в чистому вигляді. Тепер ми можемо вирахувати передбачуване значення Kab, для чого проробляємо наступну операцію:
LK_K (A) = E21 [BD_ADDR (A), LK_RAND (A)] де LK_K (A|B) - це проміжні величини
LK_K (B) = E21 [BD_ADDR (B), LK_RAND (B)]
Kab = LK_K (A) XOR LK_K (B)
Перевіримо PIN. Візьмемо отриманий Kab і перехоплений AU_RAND (A) і обчислимо SRES (A).
Після порівнюємо отриманий результат з SRES (A) ', номер, що зберігається в повідомленні, 5:
SRES (A) = E1 [AU_RAND (A), Kab, BD_ADDR (B)]
Якщо SRES (A) == SRES (A) ' - PIN успішно вгаданий. Інакше повторюємо послідовність дій наново з новою величиною PIN'.
Першим, хто відмітив цю уразливість, був англієць Оллі Вайтхауз (Ollie Whitehouse) в квітні 2004 року. Він першим запропонував перехопити повідомлення під час сполучення і спробувати обчислити PIN методом перебору, використовуючи отриману інформацію. Проте, метод має один істотний недолік: атаку можливо провести тільки у випадку, якщо удалося підслухати всі аутентифікаційні дані. Іншими словами, якщо зловмисник знаходився поза ефіром під час початку сполучення або ж упустив якусь величину, то він не має можливості продовжити атаку.
Re-pairing атака (атака на пересопряження)
Вулу і Шакеду удалося знайти вирішення труднощів, пов'язаних з атакою Вайтхауза. Був розроблений другий тип атаки. Якщо процес сполучення вже початий і дані упущені, ми не зможемо закінчити атаку. Але був знайдений вихід. Потрібно змусити пристрої наново ініціювати процес сполучення (звідси і назва). Дана атака дозволяє у будь-який момент зачати вищеописану pairing атаку.
Розгледимо наступну ситуацію. Допустимо, що пристрої вже встигли зв'язатися, зберегли ключ Kab і приступили до Mutual authentication. От нас потрібно змусити пристрої наново зачати pairing. Всього було запропоновано три методи атаки на пересопряжение, причому всі з них залежно від якості реалізації bluetooth-ядра конкретного пристрою. Нижче приведені методи в порядку убування ефективності:
За pairing слідує фаза аутентифікації. Master-устройство посилає AU_RAND і чекає у відповідь SRES. У стандарті декларує можливість втрати ключа зв'язку. У такому разі slave посилає "LMP_not_accepted", повідомляючи master про втрату ключа. Тому основна мета зловмисника - відстежити момент відправки AU_RAND master-пристроєм і у відповідь упровадити пакет LMP_not_accepted, що містить. Реакцією master буде реініціалізація процесу pairing. Причому це приведе до анулювання ключа зв'язку на обох пристроях.
Якщо встигнути відправити IN_RAND slave-пристрою безпосередньо перед відправкою master-пристроєм величини AU_RAND, то slave буде упевнений, що на стороні master загублений ключ зв'язку. Це знову ж таки приведе до процесу реініціалізації сполучення, але вже ініціатором буде slave.
Зловмисник чекає відправки master-пристроємAU_RAND і відправляє у відповідь випадково SRES, що згенерував. Спроба аутентифікації провалена. Далі слідує низка повторних спроб аутентифікації (кількість залежить від особливостей реалізації пристроїв). За умови, що зловмисник продовжує вводити master-устройство в оману, незабаром (по лічильнику невдалих спроб) пристроями буде вирішено об реініціалізації сполучення.
(Як видно, всі ці атаки вимагають відправки потрібних повідомлень в потрібний момент часу. Стандартні пристрої, доступні у продажу, майже з 100% вірогідністю не підійдуть для цих цілей)
Використавши будь-який з цих методів, зловмисник може приступити до базової атаки на сполучення. Таким чином, маючи в арсеналі ці дві атаки, зловмисник може безперешкодно викрасти PIN-код. Далі маючи PIN-код він зможе встановити з'єднання з будь-яким з цих пристроїв. І варто врахувати, що в більшості пристроїв безпека на рівні служб, доступних через bluetooth, не забезпечується на належному рівні. Більшість розробників роблять ставку саме на безпеку встановлення сполучення. Тому наслідки дій зловмисника можуть бути різними: від крадіжки записника телефону до встановлення витікаючого виклику з телефону жертви і використання його як пристрою, що прослухує.
Ці методи описують, як примусити пристрої "забути" link key, що само по собі веде до повторного pairing’у, а значить, зловмисник може підслухати весь процес із самого початку, перехопити всі важливі повідомлення і підібрати PIN.
Оцінка часу підбору PIN-кода
У протоколі Bluetooth активно використовуються алгоритми E22, E21, E1, засновані на шифрі SAFER+. Те, що уразливість відноситься до критичних, підтвердив Брюс Шнайер (Bruce Schneier). Підбір PIN’a на практиці чудово працює. Нижче приведені результати отримані на Pentium IV HT на 3 Ггц:
Довжина (знаків) | Час (сек) |
4 | 0,063 |
5 | 0,75 |
6 | 7,609 |
Конкретні реалізації вищеописаних атак можуть працювати з різною швидкістю. Способів оптимізації безліч: особливі налаштування компілятора, різні реалізації циклів, умов і арифметичних операцій. Авіша Вул (Avishai Wool) і Янів Шакед (Yaniv Shaked) зробили прорив, знайшовши спосіб скоротити час перебору PIN-коду в рази. Ця оптимізація виходить за рамки даної статті, але, варто відзначити, що мова йде про оптимізації базових алгоритмів стека bluetooth. В світлі сучасних технологій (зокрема nVidia CUDA) результати могли бути ще краще.
Збільшення довжини PIN-кода не є панацеєю і лише трохи збільшує час перебору. Тільки сполучення пристроїв в безпечному місці може частково захистити від описаних атак. Приклад - bluetooth гарнітура або автомобільний handsfree. Ініціалізація зв'язку (при включенні) з даними пристроями може відбуватися багато разів протягом дня, і не завжди у користувача є можливість знаходитися при цьому в захищеному місці. Втім, атаки подібного вигляду не будуть дуже популярні, принаймні, поки не буде реалізовано доступних апаратних засобів і універсальних програмних пакетів. Впровадження NFC є ефективним рішенням проти даного виду атак, але в цілому, ситуація не зміниться до кращого до появи на ринку достатньої кількості рішень на Bluetooth 2.1 (з підтримкою NFC), а через їх зворотну сумісність з попередніми версіями протоколу, вищевикладені атаки будуть актуальні ще достатньо тривалий час.
Радіус роботи пристроїв BT2 не перевищує 15 метрів, для BT1 до 100 м (клас А). Ці числа декларуються стандартом для прямої видимості, в реальності не варто чекати роботу на відстані більше 10-20 метрів. Такого дальнодействия недостатньо для ефективного застосування атак на практиці. Тому, ще до детального опрацьовування алгоритмів атаки, на Defcon-2004 публіці була представлена антена-рушниця BlueSniper, розроблена Джонном Херінгтоном (John Herington). Пристрій підключається до портативного пристрою - ноутбуку/КПК і має достатню спрямованість і потужність (ефективна робота до 1,5 км).
Bluetooth - це технологія передачі даних по радіо на коротку дистанцію, що дозволяє здійснювати зв'язок безпровідних телефонів, комп'ютерів і різної периферії за відсутності прямої видимості.
Розробку Bluetooth зачала компанія ERICSSON ще в 1994 році. Первинною метою було отримання нового радіоінтерфейсу з низьким рівнем енергоспоживання і невисокою вартістю, який дозволив би встановлювати зв'язок між стільниковими телефонами і безпровідними гарнітурами. Крім того, згідно концепції ERICSSON, новий інтерфейс призначався для передачі даних і мовних повідомлень, причому з будь-якої точки миру. Для забезпечення ширшої підтримки молодої технології в таких секторах ринку, як настільні системи, кишенькові комп'ютери і мобільні телефони, ERICSSON в лютому 1998 року організувала консорціум по розробці і просуванню нової технології під назвою Bluetooth SIG (Special Interest Group). Нині в нього входить більше 2000 різних фірм, у тому числі такі великі, як 3СOM, NOKIA, INTEL, NATIONAL SEMICONDACTOR і так далі.