Первая страница
Наша команда
Контакты
О нас

    Головна сторінка



Історія створення І розвитку 6 Принцип роботи bluetooth 7

Скачати 235.35 Kb.

Історія створення І розвитку 6 Принцип роботи bluetooth 7




Скачати 235.35 Kb.
Сторінка4/5
Дата конвертації10.03.2017
Розмір235.35 Kb.
1   2   3   4   5

Безпека

У червні 2006 року Авіша Вул (Avishai Wool) і Янів Шакед (Yaniv Shaked) опублікували статтю, що містить докладний опис атаки на bluetooth-пристрою. Матеріал містив опис як активної, так і пасивної атаки, що дозволяє дістати PIN код пристрою і надалі здійснити з'єднання з даним пристроєм. Пасивна атака дозволяє відповідно екіпірованому зловмисникові "підслухати" (sniffing) процес ініціалізації з'єднання і надалі використовувати отримані в результаті прослуховування і аналізу дані для встановлення з'єднання (spoofing). Природно, для проведення даної атаки зловмисникові потрібно знаходиться в безпосередній близькості і безпосередньо у момент встановлення зв'язку. Це не завжди можливо. Тому народилася ідея активної атаки. Була виявлена можливість відправки особливого повідомлення в певний момент, що дозволяє зачати процес ініціалізації з пристроєм зловмисника. Обидві процедури злому достатньо складні і включають декілька етапів, основний з яких - збір пакетів даних і їх аналіз.

Результат, пі́дсумок, (заст. ску́ток, вислід) - кінцевий наслідок послідовності дій. Можливі результати містять перевагу, незручність, вигоду, збитки, цінність і перемогу. Результат є етапом діяльності, коли визначено наявність переходу якості в кількість і кількості в якість.
Пакети даних - в телекомунікаціях це відформатований блок даних який передається за допомогою комутації пакетів в комп'ютерній мережі. Комп'ютерні лінії зв'язку, які не підтримують передачу пакетів даних, такі як традиційні від точки-до-точки (англ. point-to-point)
Самі атаки засновані на уязвимостях в механізмі аутентифікації і створення ключа-шифру між двома пристроями.
Автентифікáція (з грец. αυθεντικός ; реальний або істинний) - процедура встановлення належності користувачеві інформації в системі пред'явленого ним ідентифікатора. .
Механі́зм (грец. μηχανή mechané - машина) - система тіл, що призначена для перетворення руху одного або декількох тіл у потрібний рух інших тіл. Механізм складає основу більшості машин і застосовується в різноманітних технічних об'єктах.
І тому перед викладом механізму атак розгледимо механізм ініціалізації bluetooth-з’єднання.

Ініціалізація bluetooth-з’єдання

Ініціалізацією, дотично bluetooth, прийнято називати процес установки зв'язку. Її можна розділити на три етапи:

Генерація ключа Kinit

Генерація ключа зв'язку (він носить назву link key і позначається, як Kab)

Аутентифікація

Перші два пункти входять в так звану процедуру паринга.

Парінг (PAIRING) - або сполучення. Процес зв'язку двох (або більш) пристроїв з метою створення єдиної секретної величини Kinit, яку вони надалі використовуватимуть при спілкуванні. У деяких переказах офіційних документів по bluetooth можна також зустріти термін "підгонка пари".

Докуме́нт - базова теоретична конструкція, яка відноситься до всього, що може бути збережене або представлене, щоб служити як доказ для певної мети.

Перед початком процедури сполучення на обох сторонах необхідно ввести PIN-код. Звичайна ситуація: дві люди хочуть зв'язати свої телефони і заздалегідь домовляються про PIN-коде.

Для простоти розглядатимемо ситуацію з двома пристроями. Принципово це не вплине на механізми встановлення зв'язку і подальші атаки. Пристрої, що далі з'єднуються, позначатимуться A і B, більш того, один з пристроїв при сполученні стає головним (Master), а друге - веденим (Slave). Вважатимемо пристрій A за головний, а B - веденим. Створення ключа Kinit зачинається відразу після того, як були введені PIN-коды.

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 - в оригінальній документації).
Оригінал - (від лат. originalis - первісний) - первісний, справжній.
Документа́ція - сукупність офіційно визнаних, взаємопов'язаних та складених у визначеній формі документів, які містять передбачувану інформацію про виріб, процес або діяльність даного підприємства. Відповідно до області застосування Документа́цій поділяється на бухгалтерську, конструкторську, нормативну, технічну, товарну, тощо.
Випадкова величина (англ. Random variable) - одне з основних понять теорії ймовірностей.
Як тільки пред'явник отримує це "слово", зачинається обчислення величини 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, не забезпечується на належному рівні. Більшість розробників роблять ставку саме на безпеку встановлення сполучення.

Більшість - велика частина чого-небудь, або кількісне переважання прихильників якоїсь ідеї чи рішення над їхніми противниками. Вважається найпершою засадою демократичного способу прийняття спільних рішень, головною й необхідною умовою обрання кандидата на виборну посаду.
Програміст, також програмник[Джерело?] - фахівець, що займається програмуванням, виконує розробку програмного забезпечення (в простіших випадках - окремих програм) для програмованих пристроїв, які, як правило містять один чи більше CPU.
Тому наслідки дій зловмисника можуть бути різними: від крадіжки записника телефону до встановлення витікаючого виклику з телефону жертви і використання його як пристрою, що прослухує.

Ці методи описують, як примусити пристрої "забути" 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

Конкретні реалізації вищеописаних атак можуть працювати з різною швидкістю. Способів оптимізації безліч: особливі налаштування компілятора, різні реалізації циклів, умов і арифметичних операцій.

Оптиміза́ція (англ. optimization, optimisation) - процес надання будь-чому найвигідніших характеристик, співвідношень (наприклад, оптимізація виробничих процесів і виробництва). Задача оптимізації сформульована, якщо задані: критерій оптимальності (економічний - тощо; технологічні вимоги - вихід продукту, вміст домішок в ньому та ін.)
Компілятор (англ. Compiler від англ. to compile - збирати в ціле) - комп'ютерна програма (або набір к. програм), що перетворює (компілює) вихідний код, написаний певною мовою програмування (мова джерела, англ. source language)
Арифме́тика (дав.-гр. ἀριϑμητική - мистецтво лічби, вчення про числа, від дав.-гр. αριθμός - число) - наука про числа, їх властивості й операції над ними.
Брюс Шна́йєр (англ. Bruce Schneier; нар. 15 січня 1963, Нью-Йорк) - американський криптограф, письменник і фахівець з комп'ютерної безпеки. Автор кількох книг з безпеки, криптографії та інформаційної безпеки.
Арифметичні дії є двомісними операціями на множині чисел - на вході беруть два числа (операнда), і повертають одне число як результат.
Авіша Вул (Avishai Wool) і Янів Шакед (Yaniv Shaked) зробили прорив, знайшовши спосіб скоротити час перебору PIN-коду в рази. Ця оптимізація виходить за рамки даної статті, але, варто відзначити, що мова йде про оптимізації базових алгоритмів стека bluetooth. В світлі сучасних технологій (зокрема nVidia CUDA) результати могли бути ще краще.

Збільшення довжини PIN-кода не є панацеєю і лише трохи збільшує час перебору. Тільки сполучення пристроїв в безпечному місці може частково захистити від описаних атак. Приклад - bluetooth гарнітура або автомобільний handsfree. Ініціалізація зв'язку (при включенні) з даними пристроями може відбуватися багато разів протягом дня, і не завжди у користувача є можливість знаходитися при цьому в захищеному місці. Втім, атаки подібного вигляду не будуть дуже популярні, принаймні, поки не буде реалізовано доступних апаратних засобів і універсальних програмних пакетів. Впровадження NFC є ефективним рішенням проти даного виду атак, але в цілому, ситуація не зміниться до кращого до появи на ринку достатньої кількості рішень на Bluetooth 2.1 (з підтримкою NFC), а через їх зворотну сумісність з попередніми версіями протоколу, вищевикладені атаки будуть актуальні ще достатньо тривалий час.

Актуа́льність (від лат. actualis - справжній, теперішній, сучасний, важливий у даний момент, злободенний, назрілий) - абстрактний іменник до прикметника «актуальний». Актуальність - важливість, значимість чого-небудь на сьогодні, сучасність, злободенність.

1   2   3   4   5


Скачати 235.35 Kb.

  • Більшість розробників