За пос­ледние нес­коль­ко лет отно­шение к кон­фиден­циаль­нос­ти лич­ной жиз­ни ста­ло куда более серь­езным. Хра­нение лич­ных дан­ных на сер­верах ста­ло нор­мой; мир навод­нился мобиль­ными гад­жетами с GPS-при­емни­ками и GSM-модуля­ми, спо­соб­ными рас­ска­зать прак­тичес­ки все об их вла­дель­цах; Сно­уден показал, нас­коль­ко мы незащи­щены от слеж­ки; пра­витель­ство Рос­сии все боль­ше втор­гает­ся в лич­ную жизнь граж­дан и кон­тро­лиру­ет каж­дое наше сло­во. Резон­ный воп­рос: мож­но ли в таких усло­виях остать­ся ано­ним­ным?
 

Краткий курс конспирологии

Ког­да дело каса­ется обыч­ного домаш­него ком­па, воп­рос ано­ним­ности реша­ется прос­то. Све­жая вер­сия опе­раци­онки с откры­тыми исходни­ками, open source бра­узер с отклю­чен­ным JavaScript, Tor, сме­на MAC-адре­сов, DuckDuckGo вмес­то Google и Yandex, замена Dropbox на лич­ный Rsync-сер­вер, отказ от любых сер­висов, тре­бующих под­твержде­ния лич­ности, — вот, собс­твен­но, и все, что тре­бует­ся для сок­рытия самого себя от глаз интерне­та.

Си­туация со смар­тфо­нами нам­ного слож­нее. Эти устрой­ства как буд­то бы соз­даны для того, что­бы сле­дить за нами, и дела­ют это пос­тоян­но, незави­симо от того, поль­зуем­ся мы ими активно или прос­то зво­ним. Сов­ремен­ный смар­тфон сли­вает дан­ные по нес­коль­ким фрон­там одновре­мен­но:

  • Син­хро­низа­ция дан­ных с сер­верами про­изво­дите­ля смар­тфо­на и/или опе­раци­онной сис­темы. Тот же Android по умол­чанию сли­вает на сер­веры Google наши кон­такты, информа­цию о мес­тополо­жении, дан­ные кре­дит­ной кар­ты, намечен­ные события в кален­даре, фотог­рафии, докумен­ты, соз­данные в Google Docs. Сто­ковые про­шив­ки мно­гих смар­тфо­нов оста­ются на свя­зи с сер­верами про­изво­дите­ля, а во мно­гих слу­чаях при­нуж­дают поль­зовате­ля соз­дать на их сер­верах акка­унт.
  • От­кры­тые Wi-Fi-сети в Мак­даках и про­чих Саб­веях не пред­лага­ют никаких средств защиты тра­фика, так что он может быть лег­ко перех­вачен треть­ей сто­роной (да хоть самим адми­ном).
  • Мно­гие сто­рон­ние при­ложе­ния не шиф­руют тра­фик и отправ­ляют на уда­лен­ные сер­веры информа­цию о девай­се и его вла­дель­це, даже не спра­шивая пос­ледне­го.
  • Се­ти стан­дарта GSM не обес­печива­ют средств аутен­тифика­ции або­нен­тов, поз­воляя любому жела­юще­му перех­ватить тра­фик с помощью базовой стан­ции, при­обре­тен­ной за 1000 дол­ларов. А если тобой заин­тересо­вались серь­езные орга­низа­ции, то метод три­ангу­ляции поз­волит узнать твое мес­тополо­жение с точ­ностью до ста мет­ров.
  • Внут­ри любого смар­тфо­на работа­ет встро­енная мини­атюр­ная RTOS с зак­рытыми исходни­ками, о воз­можнос­тях которой зна­ет толь­ко про­изво­дитель мобиль­ного чипа и спец­служ­бы. Нет­рудно пред­положить, что такая ОС может лег­ко выдать твое мес­тополо­жение и отпра­вить лич­ную инфу кому надо.

В целом смар­тфон — это прос­то решето, через которое течет все и всег­да. К счастью, мно­гие из его дыр мы таки можем заварить.

 

Смартфон под управлением Android и CyanogenMod

Оче­вид­но, что бороть­ся с утеч­ками в смар­тфо­нах, осно­ван­ных на проп­риетар­ных опе­раци­онных сис­темах, — занятие глу­пое. Нет исходни­ков — нет доказа­тель­ств отсутс­твия бэк­доров. Что­бы получить хоть сколь­ко‑нибудь ано­ними­зиро­ван­ный смар­тфон, нам понадо­бит­ся гуг­лофон. И не прос­то гуг­лофон, а тот, для которо­го есть офи­циаль­ная вер­сия пос­ледней про­шив­ки CyanogenMod и откры­тые исходни­ки ядра (сто­ковая про­шив­ка или ядро Android-смар­тфо­на так­же могут содер­жать бэк­доры).

Ког­да эти тре­бова­ния будут выпол­нены, берем смар­тфон в руки, получа­ем root (как это сде­лать, мы писали мно­го раз), регис­три­руем­ся в Google Play, уста­нав­лива­ем при­ложе­ние ROM Installer и про­шива­ем с его помощью CyanogenMod. Обя­затель­но отка­зыва­емся от уста­нов­ки Google Apps. Их при­дет­ся при­нес­ти в жер­тву богу кон­фиден­циаль­нос­ти.

Пос­ле пер­вой заг­рузки CyanogenMod пред­ложит зарегис­три­ровать или под­клю­чить акка­унт CM, а так­же вклю­чить отправ­ку ано­ним­ной ста­тис­тики. От выпол­нения этих про­цедур, естес­твен­но, сле­дует отка­зать­ся. Далее прис­тупа­ем к пер­вичной нас­трой­ке про­шив­ки. Идем в нас­трой­ки и отме­чаем сле­дующие пун­кты:

  1. Бес­про­вод­ные сети → Еще → NFC → Отклю­чить.
  2. Бе­зопас­ность → Бло­киров­ка экра­на → PIN-код.
  3. Бе­зопас­ность → Неиз­вес­тные источни­ки.

Ни­чего необыч­ного, стан­дар­тные опции. Далее нам сле­дует обе­зопа­сить себя от уте­чек дан­ных из пре­дус­танов­ленных при­ложе­ний и соф­та, который будет уста­нов­лен поз­же. В CyanogenMod для это­го есть механизм Privacy Guard, который занима­ется обфуска­цией лич­ных дан­ных поль­зовате­ля, под­совывая вмес­то них ран­домные дан­ные: слу­чай­но сге­нери­рован­ное имя юзе­ра вмес­то реаль­ного, слу­чай­ные коор­динаты и про­чее. Что­бы его акти­виро­вать, идем в «Нас­трой­ки → Кон­фиден­циаль­ность → Защищен­ный режим» и вклю­чаем опцию «Защищен­ный режим по умол­чанию». Теперь он будет акти­виро­вать­ся для всех уста­нав­лива­емых при­ложе­ний.

Что­бы акти­виро­вать Privacy Guard для сто­ковых при­ложе­ний, нажима­ем кноп­ку нас­тро­ек свер­ху (три точ­ки), отме­чаем опцию «Сис­темные при­ложе­ния» и выбира­ем все при­ложе­ния, кро­ме Trebuchet (это рабочий стол). По умол­чанию Privacy Guard нас­тро­ен таким обра­зом, что­бы спра­шивать юзе­ра каж­дый раз, ког­да при­ложе­ние пыта­ется получить дос­туп к лич­ным дан­ным (это вид­но на скрин­шоте). Раз­решать это дей­ствие сто­ит толь­ко в том слу­чае, если такие дан­ные ему реаль­но нуж­ны (нап­ример, телефон пыта­ется про­читать адресную кни­гу).

Пос­ледний шаг — вклю­чение шиф­рования памяти смар­тфо­на. Это дей­ствие не отно­сит­ся к утеч­кам дан­ных в Сеть, но оно поможет в слу­чае кра­жи смар­тфо­на. Что­бы это сде­лать, запус­каем тер­минал и набира­ем две коман­ды:

$ su
vdc cryptfs enablecrypto inplace ПАРОЛЬ

Смар­тфон уйдет в перезаг­рузку и зашиф­рует дан­ные при­ложе­ний. Пос­ле это­го при каж­дом вклю­чении смар­тфо­на при­дет­ся вво­дить пароль для их рас­шифров­ки. Ту же опе­рацию, кста­ти, мож­но сде­лать и через нас­трой­ки, но в этом слу­чае пароль рас­шифров­ки будет сов­падать с ненадеж­ным четырех­знач­ным PIN-кодом экра­на бло­киров­ки.

Привыкаем нажимать кнопку «Пропустить»
При­выка­ем нажимать кноп­ку «Про­пус­тить»

CyanogenMod и SELinux

Еще одно пре­иму­щес­тво CyanogenMod перед сто­ковой про­шив­кой — это SELinux, акти­виро­ван­ный по умол­чанию. SELinux пред­став­ляет собой сис­тему при­нуди­тель­ного кон­тро­ля дос­тупа к фун­кци­ональ­нос­ти ядра ОС, которая работа­ет ниже Android и не рас­простра­няет­ся на стан­дар­тные поль­зователь­ские при­ложе­ния. Это сво­его рода ана­лог Privacy Guard для раз­личных низ­коуров­невых сер­висов.

SELinux стро­го огра­ничи­вает воз­можнос­ти таких сер­висов, не поз­воляя им совер­шить дей­ствия, для которых они не пред­назна­чены. Дру­гими сло­вами, если вирус вызовет перепол­нение буфера в adbd, rild или любом дру­гом натив­ном сер­висе, что­бы повысить свои пра­ва в сис­теме, SELinux пре­сечет такую попыт­ку. Вто­рой важ­ный плюс SELinux — бло­киров­ка бэк­доров, которые могут быть вши­ты в проп­риетар­ные биб­лиоте­ки и сер­висы, не име­ющие откры­тых ана­логов (прак­тичес­ки любая сбор­ка CyanogenMod вклю­чает в себя проп­риетар­ные ком­понен­ты от про­изво­дите­ля смар­тфо­на или мобиль­ного чипа).

 

F-Droid, Tor и брандмауэр

Сле­дующий шаг — уста­нов­ка F-Droid, Tor и нас­трой­ка бран­дма­уэра. Пер­вый нам нужен по при­чине отсутс­твия Google Play, а так­же любой его замены, которой мы мог­ли бы доверять. В отли­чие от них, F-Droid содер­жит толь­ко откры­тый софт, что фак­тичес­ки дает гаран­тию безопас­ности соф­та. При­ложе­ний в репози­тории F-Droid нем­ногим боль­ше 1100, но сре­ди них есть прак­тичес­ки все, что нуж­но, вклю­чая бра­узе­ры, твит­тер‑кли­енты, рабочие сто­лы, вид­жеты погоды и даже Telegram.

Tor (в Android он носит имя Orbot), в свою оче­редь, поз­волит нам оста­вать­ся ано­ним­ными при исполь­зовании Сети. Бран­дма­уэр поз­волит заб­локиро­вать вхо­дящие соеди­нения и перенап­равить тра­фик всех уста­нов­ленных при­ложе­ний в Orbot.

Сна­чала уста­нав­лива­ем F-Droid. Для это­го дос­таточ­но открыть сайт f-droid.org со смар­тфо­на и ска­чать пос­леднюю вер­сию кли­ента. Запус­каем его, находим при­ложе­ние Orbot и уста­нав­лива­ем. Далее перехо­дим на стра­ницу DroidWall со смар­тфо­на, ска­чива­ем APK-пакет и уста­нав­лива­ем. Теперь нам нуж­но соз­дать набор пра­вил iptables для DroidWall (по умол­чанию он уме­ет толь­ко вклю­чать/отклю­чать дос­туп при­ложе­ний к Сети). Мож­но было бы сде­лать это вруч­ную, но ребята из про­екта Tor уже все сде­лали за нас. Дос­таточ­но толь­ко ска­чать ZIP-архив, рас­паковать, под­клю­чить смар­тфон с помощью USB-кабеля и запус­тить инстал­ляци­онный скрипт:

$ ./install-firewall.sh

Ра­бота­ет скрипт толь­ко в Linux и тре­бует, что­бы на ком­пе был уста­нов­лен Android SDK, а на смар­тфо­не акти­виро­ван режим отладки («Нас­трой­ки → О телефо­не → Семь тапов по пун­кту Номер сбор­ки», далее «Нас­трой­ки → Для раз­работ­чиков → Отладка по USB»). Дела­ет скрипт сле­дующее:

  1. До­бав­ляет ини­циали­заци­онный скрипт, который бло­киру­ет все вхо­дящие и исхо­дящие под­клю­чения во вре­мя заг­рузки сис­темы (во избе­жание уте­чек).
  2. Ус­танав­лива­ет скрипт для DroidWall, поз­воля­ющий перенап­равить все под­клю­чения в Tor (с при­мене­нием нес­коль­ких вор­кара­ундов для извес­тных багов Tor).
  3. Бло­киру­ет все под­клю­чения извне.
  4. Ус­танав­лива­ет три опци­ональ­ных скрип­та, откры­вающих дос­туп к Сети в обход Tor для стан­дар­тно­го бра­узе­ра, ADB и LinPhone. Пер­вый может понадо­бить­ся, если есть необ­ходимость вой­ти в captive portal в откры­тых Wi-Fi-сетях, вто­рой — для воз­можнос­ти уда­лен­ной отладки, тре­тий нужен при­ложе­нию LinPhone, реали­зующе­му SIP-кли­ент с зашиф­рован­ным каналом свя­зи.

Ког­да скрип­ты будут уста­нов­лены, запус­каем DroidWall, перехо­дим в «Меню → Еще → Уста­новить сце­нарий» и вво­дим в пер­вом открыв­шемся поле стро­ку «. /data/local/firewall-torify-all.sh», нажима­ем кноп­ку «ОК». Воз­вра­щаем­ся на глав­ный экран и отме­чаем галоч­ками при­ложе­ния, которые дол­жны получить дос­туп к Сети (Orbot мож­но не отме­чать, он и так получит дос­туп бла­года­ря скрип­ту). Вновь откры­ваем меню и выбира­ем пункт «Бран­дма­уэр отклю­чен», что­бы акти­виро­вать фай­рвол.

Те­перь запус­каем Orbot и сле­дуем инс­трук­циям, но ни в коем слу­чае не вклю­чаем под­дер­жку root; что­бы про­писан­ные в скрип­те пра­вила работа­ли пра­виль­но, Orbot дол­жен работать в прос­транс­тве поль­зовате­ля в режиме прок­си. В кон­це нажима­ем на кноп­ку в цен­тре экра­на, что­бы вклю­чить Tor. В ста­тус­ной стро­ке появит­ся икон­ка Tor, а это зна­чит, что теперь все дан­ные пой­дут через него.

Почему не использовать root-режим Orbot

Orbot под­держи­вает работу в режиме root, что поз­воля­ет ему проз­рачно прок­сировать через себя любые Android-при­ложе­ния. Может показать­ся, что такой вари­ант пред­почти­тель­нее, чем связ­ка DroidWall и скрип­тов, но это не так. Во‑пер­вых, работая в режиме root, Orbot будет кон­флик­товать с DroidWall, а пос­ледний нам необ­ходим для воз­можнос­ти огра­ниче­ния при­ложе­ний в дос­тупе к Сети.

Во‑вто­рых, Orbot име­ет свой­ство сбра­сывать нас­трой­ки проз­рачно­го прок­сирова­ния при перек­лючении меж­ду сетями (Wi-Fi — Wi-Fi или Wi-Fi — 3G), из‑за чего может про­изой­ти утеч­ка дан­ных. Бран­дма­уэр Linux (который исполь­зует­ся в скрип­те) такой проб­лемы не име­ет. Ну и пос­леднее: мож­но не бес­поко­ить­ся, что Orbot упа­дет или будет ском­про­мети­рован.

DroidWall собственной персоной
DroidWall собс­твен­ной пер­соной
Privacy Guard в действии
Privacy Guard в дей­ствии
Настройки Privacy Guard
Нас­трой­ки Privacy Guard
 

Что мы не учли

Опи­сан­ная выше кон­фигура­ция поз­воля­ет исклю­чить прак­тичес­ки все «тра­дици­онные» утеч­ки дан­ных. Пос­ле вклю­чения смар­тфон будет отре­зан от Сети ров­но до того момен­та, пока не про­изой­дет авто­запуск DroidWall и Orbot. DroidWall, в свою оче­редь, отре­жет от Сети любые при­ложе­ния, которые мы не отме­тили галоч­ками, а осталь­ные завер­нет в Tor.

На смар­тфо­не нет ни одно­го при­ложе­ния Google или скры­того в про­шив­ке бэк­дора, который смог бы отпра­вить кон­фиден­циаль­ные дан­ные на уда­лен­ные сер­веры. Если такое при­ложе­ние и будет уста­нов­лено в сис­тему, оно попадет под дей­ствие сис­темы Privacy Guard, которая исклю­чит любые утеч­ки даже в том слу­чае, ког­да в стан­дар­тной ситу­ации они бы име­ли мес­то. Если каким‑то обра­зом в сис­теме заведет­ся мал­варь, она будет огра­ниче­на сра­зу по трем фрон­там: SELinux отре­жет воз­можность скры­того получе­ния root, Privacy Guard не поз­волит слить кон­фиден­циаль­ные дан­ные, DroidWall не поз­волит получить дос­туп к Сети до тех пор, пока ты сам это­го не захочешь.

Ос­тает­ся откры­тым толь­ко один воп­рос: как быть с бэк­дорами в проп­риетар­ных ком­понен­тах и GSM-сетями. К сожале­нию, пол­ностью защитить­ся от этой угро­зы пока нель­зя: даже нес­мотря на наличие SELinux, бэк­дор, зашитый в firmware, впол­не может добыть дос­туп к дан­ным в обход Android, получая коман­ды от зло­умыш­ленни­ка/ФСБ пос­редс­твом GSM-команд. Впро­чем, тра­фик, про­ходя­щий по сотовым сетям, таки будет защищен.

 

Вместо заключения

Был такой фильм, «Джон­ни‑мне­моник», рас­ска­зыва­ющий о людях с имплан­татами, которые мог­ли перено­сить важ­ные дан­ные. За ними охо­тились не то что спец­служ­бы, а прос­то все, каж­дый хотел тот кусочек информа­ции, который хра­нил­ся в имплан­тате мне­мони­ка. Их уби­вали, рва­ли на час­ти и раз­резали лес­ками толь­ко для того, что­бы добыть сек­ретные дан­ные. Сказ­ка. Абсурд. Но почему‑то такой зна­комый.

В общем, береги себя и свои лич­ные дан­ные. Сегод­ня это ста­новит­ся все слож­нее.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии