[Информационная безопасность, Open source, Смартфоны] Почти unGoogled Android

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
28-Сен-2020 14:37


Image by andrekheren from Pixabay.Раз уж астрологи объявили месяц статей про прошивки для Android без гугловых сервисов, поделюсь и я своим опытом. Чтобы предвосхитить возможные вопросы к статье, сразу хочу сказать какие именно цели я преследовал при перепрошивке, а где приходилось срезать углы.Желаемые (основные) цели:
  • Избежать vendor lock-а.
  • Не хранить все яйца в одной корзине.
  • Свобода внутри своего устройства.
  • Использовать приложения с открытым исходным кодом.
  • Возможностью хостить данные на своих мощностях.
  • Не убирать возможность пользоваться проприетарным ПО.
  • Иметь возможность ограничивать приложения в доступе у данным.
  • Увеличить время жизни устройства от подзарядки до подзарядки.
Цели, к которым я не стремился (но некоторые частично достигнуты за счёт предыдущих):
  • Приватность и анонимизация.
  • Блокировка слежки.
  • Шифрование везде и во всём.
Я не считаю что достиг максимума в основных целях, но я осознаю “срезанные углы”, и получившийся результат меня более чем устраивает.Немного подроблей про каждую цель.Избежать vendor lock-а — чтобы внезапно не потерять доступ ко всему, только потому что какой-то ИИ (или не ИИ) меня решил заблочить. Я осознаю что вероятность этого весьма мала, но в прошлом у меня был негативный опыт в подобного характера, и я бы не хотел его повторения со своим личным телефоном.Не хранить все яйца в одной корзине — полностью избежать vendor lock-а не получится, абсурдный пример — при полностью своём софте, и серверах у себя в квартире, всё равно есть lock на электрика, который в самый неподходящий момент может отключить электричество. Так что вторая цель — попытка баланса между хранением разных данных в разных местах, и преодолением неудобств от этого.Свобода внутри своего устройства — тут подразумевается рут, а так же дополнительные надстройки к нему.Использовать приложения с открытым исходным кодом, а так же с возможностью хостить данные на своих мощностях — я уже давно большой поклонник решений с отрытым кодом. Осознаю, что я не буду изучать код каждого на предмет закладок, и более того, я не буду их лично компилировать, а предпочту скачивание, скажем, с F-Droid (где какой-нибудь злой гений мог бы внедрять закладки при сборке). Тем не менее, у меня на душе светлей от использования OSS-приложений, а ещё в прошлом я, бывало, пересобирал какие-то приложения с изменениями необходимыми лично мне.Возможностью хостить данные на своих мощностях — это продолжение избегания vendor lock-а. Если софт предполагает хранение данных вне устройства, то хотелось бы чтоб эти данные хранились либо у меня на сервере, либо, на крайний случай, была возможность выгрузки данных в неком читаемом формате.Не убирать возможность пользоваться проприетарным ПО — приятнось для души это одно, а работа и жизнь — это другое. Я не Столлман, и не готов настолько радикально сменить работу, банк, страну и многое другое, чтобы была возможность пользоваться исключительно OSS-софтом. Достаточно часто приходится пользоваться проприетарным ПО.Иметь возможность ограничивать приложения в доступе у данным — в Android всегда был механизм permissions, а так же уже достаточно давно runtime permissions, где приложения могут в рантайме запрашивать необходимые им доступы. Но этим часто злоупотребляют, и приложение может просто отказаться запускаться если не предоставить все необходимые доступы. Хотелось бы, скажем, дать доступ к контактам, но к фейковым.Увеличить время жизни устройства от подзарядки до подзарядки — без комментариев.Анонимизация, блокировка слежки и шифрование везде и во всём — по этим пунктам отвечу старым добрым комиксом — https://xkcd.com/538/ . Если кто-нибудь, ну вдруг, получит доступ ко всем моим данным, то будет обидно, досадно, но моя жизнь глобально не ухудшиться. А если государство захочет меня нагнуть, то ему для этого достаточно лишь собственного желания. Выбор ОС и телефонаБудучи разработчиком под Android для меня выбор ОС был прост (хотя изначально я немного думал в сторону Sailfish OS). В качестве форка я выбирал между LineageOS и /e/.Ранее у меня уже был положительный установки и использования CyanogenMod и LineageOS, а /e/ базируется на LineageOS. У /e/ есть некоторое преимущество в виде microG искаропки, но и у microG есть собственные билды LineageOS.Spoiler
  • LineageOS — свободный (как в понятии “free as freedom” так и в понятии “free as beer”) форк Android. От AOSP отличается готовыми сборками под большое количество устройств и некоторыми дополнительными “плюшками” (улучшенный рабочий стол, твики в настройках).
  • microG — свободная (open source) реимплементация некоторых частей GSF (Google Services Framework). Особая ценность для пользователя в том, что microG добавляет поддержку PUSH-уведомлений, которые отправляются по механизму GCM.
  • /e/ —  если LineageOS представляет собой просто улучшенный AOSP без экосистемы, то /e/ предоставляет экосистему в виде /e/ account-а, email-хостинга, магазина приложений, карт, а так же предоставляет улучшенные основные приложения (т.к. я сам /e/ не устанавливал, то возможны неточности).
Для помощи себе в выборе телефона, я написал небольшой скрипт, который скачивает список устройств, для которых есть LineageOS, проверяет наличие /e/ и microG для этого устройства, парсит onliner и 4pda на предмет даты выхода устройства и максимальной доступной версии Android под неё у производителя и затем выводит список, отсортированный по “привлекательности” устройства (код не ахти какой, по этому вместо нормального репозитария выложил в gist).Spoiler
  • хотя microG теоретически может устанавливаться на любой форк Android-а, на LineageOS её сходу установить нельзя, т.к. мейнтейнеры LineageOS не хотят добавлять в апстрим небольшой патч, который необходим для корректной работы microG. Того патча, там, буквально несколько строчек, но придётся пересобрать LineageOS самостоятельно. К счастью, мейнтейнеры microG предоставляют свои сборки LineageOS уже с патчем, с самим microG а так же с предустановленным F-Droid.
  • F-Droid — так называется и репозитарий свободного ПО для Android, и приложение-магазин, которая позволяет их из этого репозитария скачивать и устанавливать.
Взяв десяток устройств из верхушки списка, я добавил их в сравнение на онлайнере (не сочтите за рекламу, как мне кажется там действительно удобное сравнение), и выбрал наиболее подходящий для меня вариант. Несмотря на предубеждение у телефонам из поднебесной, это оказался Xiaomi Mi 8.Использую этот телефон уже пол года, и каких-либо нареканий кроме слишком большого размера экрана у меня к нему нет. Но ни в коем случае на нём не настаиваю, тем более что у вас могут быть другие предпочтения, да и за эти пол года появилось больше моделей с поддержкой LineageOS.Для этого телефона доступно как LineageOS for microG так и /e/, но я отдал предпочтение более чистому Android-у (LineageOS for microG).УстановкаДетально описывать установку я не буду, т.к. во-первых это было уже давно и я мог что-то подзабыть, а во-вторых вы можете выбрать другое устройство. Поэтому, лучше найдите ветку форума про интересующий вас телефон на 4pda — там будут более чем подробные инструкции и отзывчивое community.Но чтоб не оставлять раздел совсем пустым, вот что вспомнилось про установку для моего телефона:
  • Разблокировать загрузчик по инструкции с 4pda.
  • Обновить официальную прошивку (MIUI) до версии Android, соответствующей той, которую будете прошивать (осторожно, версии самого MIUI и Android на которм он базируется не совпадают). Кажется что виртуалка с Windows не понадобилась, но точно не помню.
  • Установить TWRP по инструкции с 4pda (там под Windows, но bat-ники очень простые, и можно всё сделать в любой OS).
  • Устанавливаем LineageOS по инструкции с 4dpa, но только без OpenGApps. Хоть название намекает на открытость, но открыт там лишь код, которые устанавливает GSF, а сами GSF как были проприетарными и под контролем у Google, так и остаются.
  • Устанавливаем Magisk, и перезагружаем устройство.
Spoiler
  • MIUI — форк Android-а использующийся с телефонах Xiaomi (а так же в некоторых других благодаря кастомным прошивкам). Отличается красивым внешним видом и обилием рекламы прямо в пришивке (sic).
  • TWRP — Team Win Recovery Project, кастомное рекавери для андроид, с широкими возможностями и управлением тачем (в отличие от некоторых других, где управление производится кнопками громкости).
  • Magisk — systemless root для Android (не требуется модификации никаких файлов в разделе system). Так же Magisk предоставляет API для плагинов, которые реализуют и другие (кроме root) вещи.
Сразу после перепрошивки и перезагрузки, нужно установить несколько важных приложений. Большинство из них находится в основном репозитории F-Droid, но некоторые в дополнительных (список других популярных репозиториев можно взять из приложение Aurora Droid).Magisk ManagerЕсли он не был установлен сразу, нужно установить. Далее через него нужно включить Magisk Hide а так же переименовать имя пакета и название launcher-а — это позволит более чем успешно скрывать наличие рута на устройстве. Только учтите, что Magisk Hide не применяется автоматически, и его нужно включать индивидуально для нужных приложений.Вопросом прохождения успешной аттестации SafetyNet я особо не занимался, т.к. пока что не пользоватлся таким приложением, где это было бы проблемой. Если такое будет, то либо попробую всё-таки настроить, либо подумаю над сменой приложения.SpoilerGoogle SafetyNet — механизм в GSF, который позволяет сторонним приложениям узнавать, насколько безопасно (по мнению Google) устройство, на котором работает приложение.Есть два вида проверок — “basicIntegrity” и “ctsProfileMatch”. Первая из них не очень строгая, и отвечает на вопрос не “поддельное” ли (что бы это ни значило) устройство. Вторая более строгая, и успешно пройти её могут только устройства, которые прошли Android compatibility testing.Чтобы пройти “ctsProfileMatch” на кастомной прошивке, нужно делать очень много странных вещей, и то, нет никаких гарантий.Проверку “basicIntegrity” должно быть пройти проще (если верить многочисленным статьям), но в моём случае не проходит даже она :(Из модулей я поставил “Riru (Riru - Core)” и “Riru - EdXposed” (сам по себе Xposed не работает на новых версиях Android, но это обходной путь через Magisk). Другие модули мне не пригодились, хотя выбор очень большой.SpoilerXPosed — фреймворк, который позволяет сторонним модулям внедряться в приложения, без необходимости модификации оных (XPosed внедряет себя в загрузчик приложений, позволяя на лету подменять классы и методы).Для XPosed написаны тысячи (если не десятки или даже сотни тысяч) модулей, позволяющих кастомизировать Android до мельчайших деталей.Через EdXposed я установил “App Locale 2” для принудительной смены языка в приложениях (я предпочитаю интерфейс телефона и большинства приложений на английском, но некоторые приложения хочу видеть на русском. К сожалению, не все предоставляют такую возможность в настройках (например, Яндекс Деньги), так что приходится действоватб обходным путём.Ещё я установил модуль “XPrivacyLua” для подсовывания фейковых данных особо любопытным приложениям, которые не запускаются если не разрешить пермишен, который бы мне не хотелось бы давать.FoxyDroid, Aurora DroidСразу в системе будет установлен F-Droid (при условии установки LineageOS for microG). Мне приложение не кажется ни особо быстрым, ни особо удобным, по этому я дополнительно устанавливаю FoxyDroid и Aurora Droid.FoxyDroid — быстрый и минималистичный магазин приложений. Aurora Droid очень красив, но местами глючноват. Из хорошего — там сразу есть список дополнительных репозиториев с OSS-программами. Я некоторые из них переношу в FoxyDroid (Bromite, IzzyOnDroid, microG), а сам Aurora Droid потом удаляю (но ни в коем случае не призываю делать точно так же).Aurora StoreПолностью отказаться от магазина Google Play я пока не готов, по этому использую Aurora Store для скачки приложений оттуда. Там можно войти под своим аккаунтом, и получить доступ к купленным приложениям (внутри самого Aurora Store покупать нельзя, так что покупайте через Web либо с другого устройства). Осознаю что за использование своего аккаунта вне самого Google Play меня могут безвозбранно забанить, но я иду на этот риск.Apple UnifiedNpl Backend, Deja Vu Location ServiceСам по себе microG не умеет определять координаты без GPS, но делегирует эту задачу сторонним приложениям через механизм UnifiedNlp. Сразу в прошивке уже есть Mozilla UnifiedNpl Backend, но по крайней мере в моём городе он не особо точен, по этому я устанавливаю дополнительные.Apple Unified Nlp Backend — может показаться что это “шило на мыло” (зачем избавляться от слежки Google, если будет слежка от Apple), но как я писал вначале статьи, цели приватности я не преследовал, а OSS-приложений с названием похожим на “Google Unified Nlp Backend” я не нашёл.Deja Vu Location Service — приложение ведёт локальную базу местоположений и их соответствия WiFi-точкам и мобильным вышкам. Через некоторое время использования, позиция без GPS будет определяться в тех местах, где вы часто бываете.Flite TTS EngineСинтезатор речи. Умеет только английский язык. Сразу после установки нужно скачать необходимые голосовые данные и настройть их. Хочу предупредить, что иногда кажется, что настройки не применяются. Тогда нужно “смахнуть” приложение, и открыть заново.DAVx5Это приложение служит для того, чтобы была возможность синхронизации контактов и календарей по протоколам CardDAV и CalDAV. Для календарей (и почты) я пользуюсь Fastmail, и там всё достаточно тривиально. Контакты же мои всё ещё в Google, и настроить DAVx5 для синхронизации контактов оттуда немного замороченно.Адрес будет https://www.googleapis.com/carddav/v1/principals/<ваша почта>/lists/default/, а вот с паролем хитрее. Т.к. DAVx5 не умеет гугловскую авторизацию, а гугл больше не поддерживает вход по логину и паролю, придётся сделать специальный пароль для приложений.В процессе создания пароля придётся включить 2-step verification, и для этого пригодится следующая программа.Authenticator ProЭто приложения для герерации кодов для двухфакторной авторизации. Альтернативно можно установить Google Authenticator, но тот который в F-Droid уже устарел (хотя и работает), а новый уже не open source.Немного других приложенийОстальные приложения вы смело можете заменять на свой вкус, но мне нравятся именно эти:
  • QKSMS — отличная программа для СМС.
  • Simple Calendar — AOSP-календарь для меня не очень удобен, а вот Simple Calendar самое то — красивый, функциональный, но не перегруженный (не хватает только возможности задавать цвет для события в рамках одного календаря).
  • Binary Eye — сканнер штрих- и бар-кодов.
  • Fennec F-Droid — мой основной браузер.
  • Bromite — если для просмотра какого-нибудь сайта нужен браузет на основе Chroimum. К слову, команда Bromite так же предоставляет билды чистого Chromium-а.
  • LibreOffice Viewer — просмотрщий документов.
  • Librera PRO — читалка книг (дизайн немного инопланетный, но программа очень функциональная).
  • MuPDF viewer — минималистичный просмотрщик pdf. В F-Droid есть несколько вариантой MuPDF, но именно этот более-менее работает на последних версиях Android, и в котором есть хоть какие-то приятные анимации.
  • NewPipe, SkyTube — замена приложению YouTube.
  • OsmAnd — на мой вкус самые функциональные offline-карты на базе open street maps.
  • Telegram FOSS — просто чтоб вы знали, что есть отдельная OSS-сборка. Там есть нюанс с настройкой уведомлений (в OSS-версии не используются уведомления через GCM), и постоянно будет висеть нотификашка, но по тапу на неё в самом телеграме будут инструкции как её скрыть.
  • Tasks — я всё ещё не перешёл на него (пользуюсь проприетарным Todoist), но выглядит многобещающе, и умеет синхронизироваться с CalDAV-сервером (с Fastmail работает).
  • Warden — приложение, которое сканирует установленные приложения, и прогоняет их по разным базам, после чего выводит трекеры и логгеры, которые внедрены в приложение. Не могу сказать что я им пользуюсь по делу (например, не пользуюсь приложениями, если в них много трекеров), но бывает интересно просмотреть какие приложения больше собирают инфы, а какие — меньше.
Это далеко не весь список моих приложений установленных из F-Droid и других свободных репозиториев, но остальные мне показались очень спецефичными, по этому я не стал их упоминать, как и приложения установленные из Google Play (тут у каждого будет свой набор любимых приложений).Единственное, чего я не нашёл в Open Source, так это достойного почтового клиента, который умеет много email-аккаунтов, поддерживает Google-аутентификацию, не перенаправляет все письма на какие-то странные сервера, умеет unified inbox и прилично выглядит. K9-Mail мне неудобен, FairEmail выглядит интересно, но я пока не готов врываться в настройку (кроме того в OSS-версии недоступно много функций). По этому я продолжаю пользоваться проприетарным и платным приложением AquaMail (не сочтите за рекламу), но с радостью приму советы по смене приложения.ИтогиДаже несмотря на то, что большинство желаемых целей было достингуто не на 100%, результатом я всё равно очень доволен, и возвращаться на прошивку с GSF или вообще на прошивку от вендора нет никакого желания. Подробней по каждой цели:
  • Избежать vendor lock-а и не хранить все яйца в одной корзине — в какой-то мере удалось. Телефон теперь принадлежит мне (если не рассматривать возможные закладки в драйверах), а данные разнесены по разным провайдерам.
  • Свобода внутри своего устройства — да, есть полноценный рут, мощное рекавери и много модулей для Magick и XPosed, что позволяет исследовать устройство, и изменять его поведение.
  • Использовать приложения с открытым исходным кодом — частично удалось. Многие OSS-приложения ничуть не хуже, или даже лучше своих проприетарных аналогов (для моих сценариев использования), но для некоторых проприетарных приложений не удалось найти адекватную замену (Evernote, Pocket), а некоторые никогда не будут в OSS (приложения для банкинга). Ещё местами есть проблема, когда приложение open source, но билд, который есть в F-Droid либо устарел по сравнению с билдом в Google Play, либо не работает (привет, Rocket.Chat).
  • Возможностью хостить данные на своих мощностях — частично удалось, и потенциально можно перенести ещё больше информации к себе. Почта, календари, контакты, задачи — всё это можно хостить либо вообще на своём сервере, либо выбрать провайдера себе по вкусу. Так же можно огранизовать свои сервера для некоторых чатов и мессенджеров. Но из-за специфики рабочих процессов что-то остаётся проприетарным (скажем, не получается перейти с Google Docs на OwnCloud или NextCloud).
  • Не убирать возможность пользоваться проприетарным ПО — всё хорошо, можно без проблем устанавливать приложения из Google Play, в том числе и когда-либо купленные. Но вот что касается возможности покупать приложения на самом устройстве, либо пользоваться in-app покупками, то тут не всё так однозначно. Чтобы покупать, нужно иметь какое-либо другое устройство с установленным GSF — тогда можно будет покупать либо с этого устройства, либо через Web. С in-app-ами хуже, т.к. если статус покупки / подписки не хранится на сервере, то при оплате in-app-а на дополнительном устройстве, он не появится на вашем основном. Хотя с приложениями, которыми я пользуюсь (Todoist, Evernote, Яндекс.Музыка) всё хорошо.
  • Иметь возможность ограничивать приложения в доступе у данным — да, это возможно через модули к XPosed.
  • Увеличить время жизни устройства от подзарядки до подзарядки — это получилось, и да, это случилось после замены GSF на microG. Читал статьи, где авторы утверждают что GSF сами по себе отжирают совсем немного батареи, а вся вина на приложениях, которые часто получают пуши и / или “просыпаются” в фоне. Так вот, приложений у меня установлено очень много, большинство из них пользуются пушами через GCM, а некоторые и вовсе держат своё соединение. И несмотря на то, что я достаточно активно пользуюсь телефоном, заряжаю я его раз в несколько дней. Если хочется большего, то в настройках microG можно увеличить интервал проверки пушей, тогда батарея будет тратиться ещё меньше (но ценой того, что пуш-нотификация может прийти со значительно задержкой).

===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_informatsionnaja_bezopasnost (Информационная безопасность), #_open_source, #_smartfony (Смартфоны), #_lineage, #_android, #_open_source, #_fdroid, #_microg, #_android (андроид), #_free_and_opensource_software, #_informatsionnaja_bezopasnost (
Информационная безопасность
)
, #_open_source, #_smartfony (
Смартфоны
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 15-Май 21:29
Часовой пояс: UTC + 5