Атака на седмицата: гласови повиквания през LTE (ReVoLTE)

От преводача и TL;DR

  1. TL; DR:

    Изглежда, че VoLTE се оказа дори по-зле защитен от първите Wi-Fi клиенти с WEP. Изключително архитектурна грешка, която ви позволява да XOR трафика малко и да възстановите ключа. Атака е възможна, ако сте близо до обаждащия се и той често звъни.

  2. Благодаря за съвета и TL;DR Клуконин

  3. Изследователи са направили приложение, за да определят дали вашият оператор е уязвим, прочетете повече тук. Споделете резултатите в коментарите, VoLTE е деактивиран в моя регион на Megafon.

За автора

Матю Грийн.

Аз съм криптограф и професор в университета Джон Хопкинс. Проектирал съм и анализирал криптографски системи, използвани в безжични мрежи, платежни системи и платформи за сигурност на цифрово съдържание. В моето изследване разглеждам различни начини за използване на криптография за подобряване на поверителността на потребителите.

Мина известно време, откакто написах формат на публикация "атака на седмицата", и това ме разстрои. Не защото нямаше атаки, а най-вече защото нямаше атака срещу нещо достатъчно широко използвано, за да ме измъкне от писателския блок.

Но днес попаднах интересна атака наречен ReVoLTE за протоколи, за които съм особено развълнуван от хакването, а именно LTE протоколи за клетъчна мрежа (глас през нея). Вълнувам се от тези конкретни протоколи — и от тази нова атака — защото е много рядко да се видят хакнати реални мрежови протоколи и реализации. Основно защото тези стандарти са разработени в пълни с дим стаи и документирани в документи от 12000 XNUMX страници, с които не всеки изследовател може да се справи. Освен това прилагането на тези атаки принуждава изследователите да използват сложни радиопротоколи.

По този начин сериозни криптографски уязвимости могат да се разпространят по целия свят, може би само за да бъдат използвани от правителствата, преди някой изследовател да забележи. Но от време на време има изключения и днешната атака е едно от тях.

Автори атакиСътрудници: Дейвид Рупрехт, Катарина Колс, Торстен Холц и Кристина Попер от Рурския университет в Бохум и Нюйоркския университет в Абу Даби. Това е страхотна атака за преинсталиране на ключа в гласовия протокол, който вероятно вече използвате (ако приемем, че сте от по-старо поколение, което все още извършва телефонни разговори с помощта на мобилен телефон).

Като начало кратка историческа екскурзия.

Какво представляват LTE и VoLTE?

Основата на нашите модерни стандарти за клетъчна телефония е положена в Европа през 80-те години от стандарта Глобална система за мобилни устройства (Глобална система за мобилни комуникации). GSM беше първият голям стандарт за цифрова клетъчна телефония, който въведе редица революционни функции, като например използването криптиране за защита на телефонните разговори. Ранният GSM беше предназначен предимно за гласови комуникации, въпреки че парите можеха да бъдат предава други данни.

Тъй като предаването на данни стана все по-важно в клетъчните комуникации, бяха разработени стандарти за дългосрочно развитие (LTE), за да рационализират този тип комуникация. LTE се основава на група от по-стари стандарти като GSM, EDGE и HSPA и е предназначен да увеличи скоростта на обмен на данни. Има много брандиране и подвеждащи чрез неправилни обозначенияно TL;DR е, че LTE е система за предаване на данни, която служи като мост между по-старите протоколи за пакети данни и бъдещите технологии за клетъчни данни 5G.

Разбира се, историята ни казва, че след като има достатъчно налична (IP) честотна лента, понятия като „глас“ и „данни“ ще започнат да се размиват. Същото важи и за съвременните клетъчни протоколи. За да направят този преход по-плавен, LTE стандартите дефинират Глас през LTE (VoLTE), който е IP стандарт за пренасяне на гласови повиквания директно през равнината на данни на LTE система, заобикаляйки изцяло комутируемата част на клетъчната мрежа. Както при стандартните VoIP разговори,VoLTE разговорите могат да бъдат прекъснати от клетъчния оператор и свързани към обикновената телефонна мрежа. Или (както става все по-често) те могат да бъдат маршрутизирани директно от един клетъчен клиент на друг и дори между различни доставчици.

Подобно на стандартния VoIP, VoLTE се основава на два популярни протокола, базирани на IP: Протокол за започване на сесия (Протокол за започване на сесия – SIP) за настройка на повикване и транспортен протокол в реално време (Транспортен протокол в реално време, който трябва да се нарича RTTP, но всъщност се нарича RTP) за обработка на гласови данни. VoLTE също така добавя някои допълнителни оптимизации на честотната лента, като например компресиране на заглавката.

Добре, какво общо има това с криптирането?

LTE, като GSM, има стандартен набор от криптографски протоколи за криптиране на пакети, докато се предават по въздуха. Те са предназначени главно за защита на вашите данни, докато пътуват между телефона (наречен потребителско оборудване или UE) и клетъчната кула (или където вашият доставчик реши да прекрати връзката). Това е така, защото клетъчните доставчици гледат на външните устройства за подслушване като на врагове. Добре, разбира се.

(Въпреки това, фактът, че VoLTE връзките могат да възникнат директно между клиенти в мрежи на различни доставчици, означава, че самият протокол VoLTE има някои допълнителни и незадължителни протоколи за криптиране, които могат да се появят на по-високи мрежови слоеве. Това не е от значение за настоящата статия, с изключение на факта, че те могат да развалят всичко (ще поговорим накратко за тях по-нататък).

В исторически план криптирането в GSM е било много слаби места: лошо шифри, протоколи, при които само телефонът е удостоверен към кулата (което означава, че нападателят може да се представя за кулата, генерирайки "скат") и така нататък. LTE коригира много от очевидните грешки, като същевременно поддържа голяма част от същата структура.

Да започнем със самото криптиране. Ако приемем, че създаването на ключ вече се е случило - и ще говорим за това след минута - тогава всеки пакет от данни се криптира с помощта на поточно криптиране с помощта на нещо, наречено "EEA" (което на практика може да се реализира с помощта на неща като AES). По същество механизмът за криптиране тук е CTRкакто е показано по-долу:

Атака на седмицата: гласови повиквания през LTE (ReVoLTE)
Основният алгоритъм за криптиране на VoLTE пакети (източник: ReVoLTE). EEA е шифър, „COUNT“ е 32-битов брояч, „BEARER“ е уникален идентификатор на сесия, който разделя VoLTE връзките от обикновения интернет трафик. „ПОСОКА“ показва в каква посока се движи трафикът – от ИУ към кулата или обратно.

Тъй като самият алгоритъм за криптиране (EEA) може да бъде реализиран с помощта на силен шифър като AES, малко вероятно е да има директна атака срещу самия шифър като тази се случи по времето на GSM. Въпреки това е ясно, че дори и със силен шифър, тази схема за криптиране е чудесен начин да се простреляте в крака.

По-специално: стандартът LTE използва (неудостоверен) поточен шифър с режим, който ще бъде изключително уязвим, ако броячът - и други входове като "носител" и "посока" - някога се използват повторно. На съвременен език терминът за тази концепция е „атака без повторна употреба“, но потенциалните рискове тук не са нещо модерно. Те са известни и древни, датиращи от дните на глем метъла и дори диското.

Атака на седмицата: гласови повиквания през LTE (ReVoLTE)
Атаки срещу еднократна повторна употреба в режим CTR съществуваха дори когато Poison стана известен

За да бъдем честни, LTE стандартите казват: „Моля, не използвайте повторно тези измервателни уреди“. Но LTE стандартите са дълги около 7000 страници и във всеки случай е като да молиш децата да не си играят с пистолет. Те неизбежно ще го направят и ще се случат ужасни неща. Стрелбата в този случай е атака с повторно използване на ключов поток, при която две различни поверителни съобщения XOR същите байтове на ключов поток. Известно е, че това има много разрушителен ефект върху поверителността на комуникациите.

Какво е ReVoLTE?

Атаката ReVoLTE демонстрира, че на практика този много уязвим дизайн на криптиране се злоупотребява от хардуера в реалния свят. По-конкретно, авторите анализират реални VoLTE разговори, направени с помощта на търговско оборудване, и показват, че могат да използват нещо, наречено „атака за преинсталиране на ключ“. (Голяма заслуга за намирането на този проблем има Райзе и Лу (Raza & Lu), които първи посочиха потенциалната уязвимост. Но изследванията на ReVoLTE го превръщат в практическа атака).

Нека ви покажа накратко същността на атаката, въпреки че трябва да погледнете и изходен документ.

Може да се предположи, че след като LTE установи връзка за пакети данни, задачата за глас през LTE става просто въпрос на маршрутизиране на гласови пакети през тази връзка заедно с целия останал трафик. С други думи, VoLTE ще бъде концепция, която съществува само над 2-во ниво [OSI модели – прибл.]. Това не е съвсем вярно.

Всъщност LTE слоят за връзка въвежда концепцията за "носител". Носителите са отделни идентификатори на сесии, които разделят различни типове пакетен трафик. Редовният интернет трафик (вашият Twitter и Snapchat) минава през един носител. SIP сигнализирането за VoIP минава през друг, а пакетите с гласов трафик се обработват през трети. Не съм много запознат с LTE радиото и механизмите за мрежово маршрутизиране, но вярвам, че се прави по този начин, защото LTE мрежите искат да наложат QoS (качество на услугата) механизми, така че различните потоци от пакети да се обработват на различни нива на приоритет: т.е. твоя второкласен TCP връзките към Facebook може да имат по-нисък приоритет от вашите гласови повиквания в реално време.

По принцип това не е проблем, но последствията са следните. Ключовете за LTE криптиране се създават отделно всеки път, когато се инсталира нов „носител“. По принцип това трябва да се случва отново всеки път, когато правите ново телефонно обаждане. Това ще доведе до използване на различен ключ за шифроване за всяко повикване, което елиминира възможността за повторно използване на един и същ ключ за шифроване на два различни набора от пакети за гласови повиквания. В действителност стандартът LTE казва нещо като "трябва да използвате различен ключ всеки път, когато инсталирате нов носител, за да обработите ново телефонно обаждане." Но това не означава, че това наистина се случва.

Всъщност, в реализации в реалния живот две различни повиквания, които се случват в непосредствена времева близост, ще използват един и същ ключ - въпреки факта, че между тях са конфигурирани нови носители със същото име. Единствената практическа промяна, която се случва между тези повиквания, е, че броячът за криптиране се нулира. В литературата това понякога се нарича атака за преинсталиране на ключ. Може да се твърди, че това по същество е грешка при изпълнението, въпреки че в този случай рисковете изглежда до голяма степен произтичат от самия стандарт.

На практика тази атака води до повторно използване на ключов поток, където атакуващият може да получи криптираните пакети $inline$C_1 = M_1 oplus KS$inline$ и $inline$C_2 = M_2 oplus KS$inline$, което позволява изчисляването на $inline$ C_1 oplus C_2 = M_1 oplus M_2$inline$. Дори по-добре, ако атакуващият знае едно от $inline$M_1$inline$ или $inline$M_2$inline$, тогава той може веднага да възстанови другото. Това му дава силен стимул открийте един от двата некриптирани компонента.

Това ни води до пълния и най-ефективен сценарий за атака. Помислете за нападател, който може да прихване радио трафик между целеви телефон и клетъчна кула и който по някакъв начин има достатъчно късмет да запише две различни обаждания, като второто се случва веднага след първото. А сега си представете, че той може по някакъв начин да отгатне некриптираното съдържание на едно от обажданията. С такива случайност нашият нападател може напълно да дешифрира първото повикване, използвайки просто XOR между двата комплекта пакети.

Разбира се, късметът няма нищо общо с това. Тъй като телефоните са проектирани да приемат обаждания, нападател, който може да чуе първото обаждане, ще може да инициира второ повикване в точния момент, когато първото приключи. Това второ повикване, ако същият ключ за шифроване се използва отново с нулиране на брояча, ще позволи възстановяването на нешифрованите данни. Освен това, тъй като нашият нападател всъщност контролира данните по време на второто повикване, той може да възстанови съдържанието на първото повикване - благодарение на много специално внедрени малки неща, играейки от негова страна.

Ето изображение на общия план за атака, взет от оригинален документ:

Атака на седмицата: гласови повиквания през LTE (ReVoLTE)
Преглед на атаката от ReVoLTE документ. Тази схема предполага, че две различни повиквания се извършват с помощта на един и същи ключ. Нападателят контролира пасивния снифър (горе вляво), както и втори телефон, с който може да осъществи второ обаждане до телефона на жертвата.

И така, наистина ли работи атаката?

От една страна, това наистина е основният въпрос за статията за ReVoLTE. Всички горепосочени идеи са страхотни на теория, но оставят много въпроси. Като:

  1. Възможно ли е (за академични изследователи) действително да се прихване VoLTE връзка?
  2. Реалните LTE системи наистина ли пренастройват ключовете?
  3. Можете ли всъщност да инициирате второ обаждане бързо и достатъчно надеждно, за да могат телефонът и кулата да използват повторно ключа?
  4. Дори и системите да зададат нов ключ, можете ли всъщност да знаете некриптираното съдържание на второто повикване - като се има предвид, че неща като кодеци и транскодиране могат напълно да променят съдържанието (бит по бит) на това второ повикване, дори ако имате достъп до "битовете " идва от телефона ви за атака?

Работата на ReVoLTE отговаря положително на някои от тези въпроси. Авторите използват търговски софтуер за преконфигуриране на радиопоточен снифър, наречен Аероскоп за прихващане на VoLTE повикване от страната на връзката надолу. (Мисля, че самото запознаване със софтуера и получаването на груба представа за това как работи отне месеци от живота на бедните студенти - което е типично за този вид академични изследвания).

Изследователите откриха, че за да работи повторното използване на ключ, второто обаждане трябва да се случи достатъчно бързо след края на първото, но не твърде бързо – около десет секунди за операторите, с които експериментираха. За щастие, няма значение дали потребителят отговаря на повикването в рамките на това време - "звъненето", т.е. Самата SIP връзка принуждава оператора да използва повторно същия ключ.

По този начин много от най-лошите проблеми се въртят около проблем (4) - получаване на битове от некриптирано съдържание на повикване, инициирано от нападател. Това е така, защото много неща могат да се случат с вашето съдържание, докато то пътува от телефона на нападателя до телефона на жертвата през клетъчната мрежа. Например такива мръсни трикове като повторно кодиране на кодиран аудио поток, което оставя звука същия, но напълно променя двоичното му представяне. LTE мрежите също използват компресия на RTP хедъра, която може значително да промени голяма част от RTP пакета.

И накрая, пакетите, изпратени от нападателя, трябва да са приблизително в съответствие с пакетите, изпратени по време на първото телефонно обаждане. Това може да бъде проблематично, тъй като промяната на тишината по време на телефонно обаждане води до по-кратки съобщения (известни още като комфортен шум), които може да не пасват добре на оригиналното обаждане.

Раздел "атака в реалния свят" Струва си да се прочете подробно. Той адресира много от горните проблеми - по-специално, авторите откриха, че някои кодеци не са повторно кодирани и че приблизително 89% от двоичното представяне на целевото повикване може да бъде възстановено. Това важи за поне два европейски оператора, които бяха тествани.

Това е изненадващо висок процент на успех и честно казано много по-висок, отколкото очаквах, когато започнах да работя по този документ.

И така, какво можем да направим, за да го поправим?

Незабавният отговор на този въпрос е много прост: тъй като същността на уязвимостта е атака за повторно използване (преинсталиране) на ключ, просто отстранете проблема. Уверете се, че се получава нов ключ за всяко телефонно обаждане и никога не позволявайте на брояча на пакети да нулира обратно брояча с помощта на същия ключ. Проблема решен!

Или може би не. Това ще изисква обновяване на много оборудване и, честно казано, такава корекция сама по себе си не е супер надеждна. Би било хубаво, ако стандартите могат да намерят по-сигурен начин за прилагане на своите режими на криптиране, който по подразбиране не е катастрофално уязвим към такива проблеми с повторното използване на ключове.

Един възможен вариант е да използвате режими на криптиране, при които злоупотребата с nonce не води до катастрофални последици. Това може да е твърде скъпо за някои текущи хардуери, но със сигурност е област, за която дизайнерите трябва да мислят в бъдеще, особено след като 5G стандартите са на път да превземат света.

Това ново проучване повдига и общия въпрос защо едни и същи проклети атаки продължават да се появяват в един стандарт след друг, много от които използват много сходни дизайни и протоколи. Когато се сблъскате с проблема с повторното инсталиране на един и същ ключ в множество широко използвани протоколи като WPA2, не мислите ли, че може би е време да направите вашите спецификации и процедури за тестване по-стабилни? Спрете да се отнасяте към прилагащите стандарти като към внимателни партньори, които обръщат внимание на вашите предупреждения. Отнасяйте се към тях като към (непреднамерени) противници, които неизбежно ще объркат нещата.

Или, алтернативно, можем да направим това, което компании като Facebook и Apple все повече правят: да накараме криптирането на гласови повиквания да се извършва на по-високо ниво на OSI мрежов стек, без да разчитаме на производителите на клетъчно оборудване. Можем дори да настояваме за криптиране от край до край на гласови повиквания, както WhatsApp прави със Signal и FaceTime, ако приемем, че правителството на САЩ просто спре спънете ни. Тогава (с изключение на някои метаданни) много от тези проблеми просто ще изчезнат. Това решение е особено актуално в свят, в който дори правителствата не са сигурни дали имат доверие на своите доставчици на оборудване.

Или можем просто да направим това, което нашите деца вече са направили: да спрем да отговаряме на тези досадни гласови повиквания.

Източник: www.habr.com

Добавяне на нов коментар