Все в порядке, но.
Этот текст мало кто будет читать и мы можем написать здесь все, что угодно, например.
Вы живете в неведении. Роботы уже вторглись в нашу жизнь и быстро захватывают мир, но мы встали на светлый путь и боремся за выживание человечества. А если серьезно, то.
В целях обеспечения безопасности сайта от кибератак нам необходимо убедиться, что вы человек. Если данная страница выводится вам часто, есть вероятность, что ваш компьютер заражен или вы используете для доступа IP адрес зараженных компьютеров.
Если это ваш частный компьютер и вы пытаетесь зайти на сайт, например, из дома — мы рекомендуем вам проверить ваш компьютер на наличие вирусов.
Если вы пытаетесь зайти на сайт, например, с работы или открытых сетей — вам необходимо обратиться с системному администратору и сообщить, что о возможном заражении компьютеров в вашей сети.
- © 2005-2023, «4PDA». 4PDA® — зарегистрированный товарный знак.
Освободи свой Android
Некоторое время назад на Хабре вышла статья замечательной девушки fur_habr о проблемах безопасности, приватности и конфиденциальности мобильных коммуникаций и о путях решения этих проблем на платформе Android.
В момент выхода этой статьи я как-то не обратил на неё внимания — тема смартфонов и Андроида мне вообще не очень интересна. Потом, уже через несколько месяцев, я вновь случайно наткнулся на эту статью, вчитался, и проникся идеями, содержащимися в ней. Действительно, почему бы не стать хозяином своему собственному смартфону?
Вашему вниманию предлагается отчёт об эксперименте, проведённым мной по мотивам инструкций из вышеозначенной статьи и о том, что из всего этого может получиться.
Предупреждения
Прочитайте очень внимательно и вдумчиво.
Предупреждение 1
В этой статье рассматривается только техническая часть проблемы и не затрагиваются концептуальные, идеологические и прочие её аспекты. Нужно вам это или нет — решать только вам самим.
Предупреждение 2
Вся информация в статье представлена исключительно в образовательных целях и если вы что-то делаете, то делаете это исключительно на свой страх и риск. Автор публикации не несёт ответственности за любые последствия ваших необдуманных действий.
Начинаем
Итак, мы прочитали статью, а затем вторую статью, прониклись идеями, заложенными в них, и готовы провести практический эксперимент по освобождению своего Андроида (на самом деле эксперимент по освобождению себя от Андроида). С чего же начать?
Кстати, вы заметили, что суть Андроида заложена в самом его названии — это Andro ID, то есть ваш универсальный (в смысле всех аспектов вашей жизни) идентификатор.
Начнём мы с выбора аппарата для экспериментов. Проблема в том, что LineageOS поддерживает очень небольшое количество устройств, причём в основном устаревших. В своей статье fur_habr рекомендует остановиться на Xiaomi Redmi 4(X), Xiaomi Redmi Note 4 или Xiaomi Mi A1. При попытке поинтересоваться у продавцов наличием в продаже этих моделей, я получил в ответ круглые глаза, заверения, что таких древностей у них нет. Интернет только подтвердил диагноз — купить новый аппарат этих моделей практически невозможно, есть какие-то сомнительные предложения (1-2 экземпляра) непонятного происхождения и не факт, что подходящих для наших частот связи. В общем, это не наш путь.
Хорошо, эти аппараты нам не подходят, можно ли найти в списке поддерживаемых LineageOS устройств что-то подходящее? После тщательного просмотра всего списка устройств я не нашёл ни одного (нового, не б/у) смартфона, который можно было бы просто купить в обычном магазине или хотя бы заказать через интернет с быстрой доставкой.
Всё, на этом эксперимент можно было завершать. Как говорится, хороша Маша, да не наша. Но меня уже охватил спортивный азарт и отказываться от Маши не хотелось, поэтому я ещё раз прошерстил список и где-то на четвёртой или пятой итерации обратил внимание на модель Motorola G7. По итогам, это практически единственный актуальный, доступный и подходящий нам аппарат из всего списка LineageOS.
Motorola G7
На тот момент мне было всё равно Motorola это или Rockola (смайл), аппарат выбирался для эксперимента и исключительно по двум критериям — он должен быть новым (зачем нам старый?), не б/у, и присутствовать в списке поддерживаемых LineageOS.
Но в случае с Motorola G7 звёзды прямо сошлись: это свежий (2019 года) аппарат, официально поставляется в Россию, поддерживается LineageOS и, как потом оказалось, он ещё и весьма приличный смартфон и при этом относительно недорого стоит.
Пара слов о цене. Motorola G7 стартовал в апреле 2019 года по цене 20 тыс. рублей, на момент написания статьи его можно свободно купить за 11 тыс. рублей, в интернете есть сообщения, что кому-то удавалось купить его по акции за 9, 8, и даже 6 тыс. рублей (что просто даром).
При этом он имеет на борту 4 ГБ оперативной и 64 ГБ встроенной памяти, NFC, отличный 2270х1080 дисплей 6.2″, лоток на две SIM карты плюс microSD, 2 камеры, сканер отпечатка пальца, USB Type-C, быструю зарядку, 9-й, т. н. «чистый» Android и много чего ещё, см. официальную страницу производителя. Как говорил один известный персонаж, да это просто праздник какой-то!
Немного о модельном ряде. В линейке Moto G7 присутствуют четыре модели: G7 Play, G7 Power, просто G7 без индекса и G7 Plus. Из всех четырёх моделей нашего внимания достойны только две последние, причём G7 Plus более интересный вариант, практически за те же деньги, что и G7. Но в нашем случае критерием выбора является присутствие смартфона в списке поддерживаемых LineageOS, а это только один вариант — Motorola G7.
Покупка и первые впечатления
Ну что ж, цена вопроса 11 тыс. рублей, не сказать что очень мало, но чего не сделаешь из любви к науке. Сказано — сделано, покупаем смартфон, распечатываем коробку — всё классно, тонкий современный смартфон, выглядит отлично, работает так, как ему и положено, никаких замечаний у меня к нему нет.
На борту так называемый «практически чистый» 9-й Android с некоторыми фирменными добавлениями и «фишками» от Моторолы. Не знаю, что подразумевали авторы термина «чистый Андроид», но по сути это зонд, принадлежащий компаниям производителям железа и софта (но никак не вам, по крайней мере до тех пор, пока у вас не будет root прав на устройстве), который отправляет каждый ваш чих на их сервера, а через трекеры, встроенные в приложения, и на десятки серверов по всему миру неустановленному кругу третьих лиц (смотри подробности в статьях fur_habr).
Да, картина, прямо скажем, удручающая. Можно ли как-то исправить это положение? Попробуем разобраться и переходим к хирургическим методам. Пациент готов. Ассистент, скальпель!
Шаг 1. Разблокировка загрузчика
Смартфон поставляется с заблокированным загрузчиком. Это означает, что вы не сможете установить на него стороннюю прошивку. Для того, чтобы установить на него LineageOS, вам нужно сначала разблокировать загрузчик.
Компания Motorola имеет специальную страницу для запросов на разблокирование её устройств. Нужно просто получить некоторые данные от вашего смартфона, отправить их производителю и в ответ он пришлёт вам код разблокировки. Как это сделать я сейчас опишу подробно.
Примечание: здесь и далее речь будет идти о Windows 7 64-bit, если у вас другая операционная система, то действия могут немного отличаться.
Прежде всего, у вас на компьютере должны быть установлены драйвера Motorola для связи через USB порт.
Также вам нужно скачать и установить Android platform-tools с adb и fastboot. Если вы будете работать не из директории platform-tools, то вам нужно добавить путь к ней в настройках Windows (Компьютер — Свойства — Дополнительные параметры системы — Переменные среды — Path).
Затем нужно активировать показ меню разработчика на телефоне (Настройки — О телефоне — Номер сборки) и несколько раз подряд тапнуть по этому пункту, пока не появится надпись, что вы стали разработчиком.
В меню разработчика (Настройки — Система — Для разработчиков) активируем «Отладку по USB», а в меню Настройки — Система — Для разработчиков — Отладка Android активируем «Android Debug Bridge (ADB)». После этого подключаем смартфон к компьютеру, запускаем окно с командной строкой (cmd) и вводим первую команду:
>adb devices
Если всё сделано правильно, то в ответ система сообщит о найденном устройстве:
List of devices attached AH418JDANZ device
Затем вводим команду перезагрузки смартфона в режим бутлоадера:
>adb reboot bootloader
Далее проверяем видит ли компьютер подсоединённое устройство в этом режиме:
>fastboot devices AH418JDANZ fastboot
Если всё нормально, то вводим команду на запрос кода для разблокировки:
>fastboot oem get_unlock_data
В ответ смартфон должен выдать что-то вроде этого:
(bootloader) 93A1958E29857298# (bootloader) 405685468A0468F59638571E31040158805403469# (bootloader) 7035F204E85348570698340A620968E34029663206# (bootloader) 54269720984560184604890000000000 OKAY [ 0.020s] Finished. Total time: 0.022s
Далее просто склеиваем эту последовательность цифр в одну строку (надписи bootloader, скобки и пробелы удаляем, знаки # оставляем) и получается такая строка:
93A1958E29857298#405685468A0468F59638571E31040158805403469#7035F204E85348570698340A620968E34029663206#54269720984560184604890000000000
На своей странице по разблокировке Motorola много раз предупреждает о последствиях разблокировки загрузчика (самое невинное из которых это потеря гарантии) — внимательно прочитайте эти предупреждения и ещё раз подумайте готовы ли вы взять на себя ответственность за возможные последствия ваших действий.
Если готовы, то смело вводим полученную последовательность и нажимаем кнопку отправки. В моём случае код разблокировки пришёл на почту практически сразу. Всё, теперь мы получили ключ от замка и всё зависит только от нас.
Фрагмент ответа из письма от сервиса разблокировки Motorola:
Bootloader Unlock Here is the unique code to unlock the bootloader of your Motorola phone. Unlock Code: 42UKUKYULUYDTRETMDFG
Далее нам нужно в меню разработчика включить функцию разрешения разблокировки загрузчика «Allow OEM Unlock» и ещё раз перезагрузить телефон. Затем подключаемся к смартфону так, как это было описано выше, и вводим команду для разблокировки загрузчика:
>fastboot oem unlock 42UKUKYULUYDTRETMDFG
Получаем ответ в котором система предупреждает, что все ваши данные будут стёрты, соответственно, если у вас есть ценная информация, то вы должны прервать процесс и скопировать её в безопасное место (а лучше сделать это заранее):
(bootloader) WARNING: This command erases all user data. (bootloader) Please re-run this command to continue. OKAY [ 0.004s] Finished. Total time: 0.006s
И ещё раз вводим ту же команду:
>fastboot oem unlock 42UKUKYULUYDTRETMDFG
И вот, наконец, сообщение об успешной разблокировке загрузчика:
(bootloader) Bootloader is unlocked! Rebooting phone OKAY [ 0.680s] Finished. Total time: 0.681s
На этом первый этап нашего эксперимента можно считать завершённым, перезагружаем смартфон и получаем сообщение о том, что загрузчик разблокирован и безопасность нашего телефона находится под угрозой (ага). Сообщение держится на экране 5 секунд и затем смартфон загружается обычным образом.
Шаг 2. Установка TWRP
Переходим ко второй части марлезонского балета. Для того, чтобы установить LineageOS на смартфон, сначала нужно установить т. н. «кастом рекавери» (custom recovery) для проведения операций по очистке разделов смартфона, загрузки файлов, самой прошивки LineageOS и прочих операций.
С TWRP тоже не всё так просто. Существует официальный сайт на котором присутствуют «официальные» сборки TWRP. Рекомендуется скачивать файлы именно с официального сайта, а не со сторонних ресурсов. Также не рекомендуется пользоваться сторонними сборками, поскольку они могут содержать в себе различные закладки.
В случае с Motorola G7 (о чудо!) существует свежее официальное TWRP, которое специально рассчитано на эту модель и устанавливается на телефон на раз-два, без каких-либо проблем. Значимость этого факта можно оценить, почитав форумы и стенания владельцев многих современных телефонов, например, популярного Samsung Galaxy A10 и всей линейки A20, A30, A40, A50… Этих моделей нет в официальном списке поддерживаемых устройств на сайте TWRP.
Переходим на страницу нашего (воистину) замечательного Motorola G7 и скачиваем последнюю на данный момент сборку TWRP twrp-3.3.1-2-river.img.
В официальной инструкции по установке LineageOS рекомендуется на компьютерах с Windows дополнительно выполнить команду
fastboot set_active a
и принудительно сделать активным слот A. По их описанию это связано с ошибкой в реализации fastboot в Windows. И вообще, прежде чем что-то делать, настоятельно рекомендую внимательно ознакомиться с официальной инструкцией на этой странице — там всё написано правильно и очень подробно. Правда на английском, но настоящего любителя мобильных коммуникаций это вряд ли остановит (здесь опять запрещённый смайл).
Ответ Motorola G7 на эту команду:
Setting current slot to 'a' (bootloader) Slot already set active OKAY [ 0.001s] Finished. Total time: 0.004s
Всё, на этом шутки закончились и любое неправильное действие может привести к окирпичиванию вашего драгоценного телефона. Далее действуем очень внимательно и аккуратно.
Вводим команду записи TWRP на устройство:
>fastboot flash boot_a twrp-3.3.1-2-river.img
Система сообщает что файл не подписан, но процесс завершён успешно.
Sending 'boot_a' (27096 KB) OKAY [ 0.725s] Writing 'boot_a' (bootloader) Image not signed or corrupt OKAY [ 0.145s] Finished. Total time: 0.878s
В оригинальной статье указывается, что можно не прописывать TWRP на устройство, а запускать его удалённо, рекомендую перед этим этапом внимательно ознакомиться с тем, что написано в оригинальной статье.
Шаг 3. Установка LineageOS
Осталось совсем немного: сделать несколько настроек в TWRP и загрузить на телефон пару файлов, один из которых и есть прошивка LineageOS. Сначала скачиваем файлы:
copy-partitions.zip
На странице официальной инструкции по инсталляции LineageOS на Motorola G7 говорится о возможных проблемах с A/B слотами на некоторых устройствах и рекомендуется перед инсталляцией прошивки LineageOS установить файл copy-partitions.zip. Скачиваем файл и проверяем его целостность с помощью MD5.
Как проверить MD5 в Windows: запускаем командой cmd окно терминала и вводим команду certutil -hashfile copy-partitions.zip MD5. Затем сравниваем полученные значения с кодом на странице загрузки.
LineageOS
Затем с официальной страницы загрузки LineageOS скачиваем файл прошивки последней версии lineage-16.0-20200109-nightly-river-signed.zip. И проверяем значение хеша SHA-256.
Как проверить хеш SHA-256 в Windows: запускаем командой cmd окно терминала и вводим команду certutil -hashfile lineage-16.0-20200108-nightly-river-signed.zip SHA256. Затем сравниваем полученные значения с кодом на странице загрузки.
AddonSU
Если вы хотите получить root права в вашей будущей системе, то можете скачать ещё AddonSU. Из списка нужно выбрать вариант arm64 addonsu-16.0-arm64-signed.zip, скачать его и затем проверить SHA-256 хеш.
Google apps
Ещё вы можете скачать для установки Google apps, но, как справедливо заметила fur_habr в своей статье, тогда вся затея с LineageOS теряет всякий смысл. Поэтому Google apps мы скачивать не будем, а за подробностями я вас отсылаю к статье и комментариям к ней.
Операции в TWRP
Запускаем прописанное на устройство TWRP:
fastboot boot twrp-3.3.1-2-river.img
Запускается интерфейс нашего «кастом рекавери» и мы можем проводить заключительные действия по инсталляции LineageOS на наш смартфон Motorola G7.
В интерфейсе TWRP выбираем кнопку «Advanced» и далее «ADB Sideload», а на компьютере в командной строке набираем:
>adb sideload copy-partitions.zip
После успешной загрузки файла система ответит:
Total xfer: 1.00x
Затем в интерфейсе TWRP выбираем кнопку «Wipe» и далее «Format Data». После завершения процесса возвращаемся в предыдущее меню. Нажимаем на кнопку «Advanced Wipe» и выбираем «System» и «Cache».
Возвращаемся в главное меню и снова выбираем кнопку «Advanced» и далее «ADB Sideload», а на компьютере в командной вводим строке:
>adb sideload lineage-16.0-20200108-nightly-river-signed.zip
и загружаем прошивку LineageOS в смартфон. Ответ при успешном выполнении операции:
Total xfer: 1.00x
Если мы хотим установить root на устройство, то далее вводим команду:
adb reboot sideload
>adb sideload addonsu-16.0-arm64-signed.zip
Total xfer: 2.08x
Вот теперь точно всё. Перезагружаем смартфон и нас встречает маленькое чудо — операционная система LineageOS.
Root
Если вы установили AddonSU, то в меню разработчика появится соответствующий пункт, в котором вы сможете выбрать режимы работы root на вашем устройстве.
LineageOS
Да… в упорстве нам не откажешь… И вот, после всех этих титанических усилий мы всё-таки добились своего — установили LineageOS на Motorola G7. И что же мы имеем в итоге?
Это всё тот же 9-й Android и внешне эта система мало чем отличается от того, что было на родной прошивке Motorola G7. Кнопки примерно на тех же местах, функции примерно те же, в общем после смены операционной системы я не испытывал никаких затруднений или неудобств в работе со смартфоном.
Что мы потеряли?
Поскольку мы не стали устанавливать Google сервисы, то мы потеряли все программы, которые зависят от этих сервисов, а также мы лишились уведомлений, которые работают через них (это касается не всех приложений, но многих). В оригинальной статье (https://habr.com/ru/post/465945/) подробно рассматривается этот вопрос и даются рекомендации по установке альтернативных программ для поддержки Google сервисов.
Мы потеряли также банковские приложения и оплату через NFC (не всегда и не во всех случаях, за подробностями снова отсылаю к оригинальной статье).
Что мы приобрели?
Мы просто вернули себе право управления своим собственным устройством и избавились ото всех (наивно думать, что ото всех, но по крайней мере от большинства) шпионских модулей. Теперь мы сами можем решать что и как должен делать наш смартфон (он ведь наш, верно?).
Немного технических подробностей. То, что мы имеем сейчас в лице LineageOS уже можно с натяжкой назвать «чистым Андроидом». Это хорошо заметно по логу фаервола. Если в родной, якобы «чистой» прошивке Motorola G7 фаервол просто раскалялся от паразитной активности приложений и сервисов Google и Motorola и десятков трекеров в приложениях, то на LineageOS внутренняя жизнь системы приобрела вменяемый характер.
Система больше не напоминает проходной двор где шарятся все кому не лень, начиная от китайских девелоперов и заканчивая индусскими программистами и маркетологами со всего мира (попутно скачивая ваши приватные данные и протоколируя каждый ваш тап по экрану). Лог фаервола почти пустой и найти в нём можно только те приложения и только по тем адресам и портам которые нужны непосредственно для их работы и которые одобрены мной, как хозяином (!) устройства.
Как это сказалось на расходе батареи и объёме платного трафика я думаю пояснять не нужно. Андроид просто перестал заниматься огромным количеством посторонних дел и растрачивать на это свои ресурсы (перестал обслуживать чужие, прямо противоречащие вашим, интересы).
Есть ли жизнь на LineageOS?
После установки LineageOS и посещения F-Droid я закрыл 95% своих потребностей в программах на Android. Есть набор стандартных «Simple» приложений (часы, калькулятор, блокнот, календарь, файловый менеджер и т. д.), есть проигрыватели аудио и видео (VLC), есть карты, читалки, есть отличный почтовый клиент (K-9), в репозитории F-Droid есть более 2000 приложений на любой вкус, есть даже версия Telegram, работающая без Google сервисов для поклонников этого мессенджера.
Для тех редких случаев когда нужная программа есть только в Google Play, можно воспользоваться альтернативными клиентами Yalp store или Aurora Store.
Телефон звонит, СМС-ки ходят, почта работает, интернет в полном объёме, доступны все сервисы при авторизации через браузер, есть свободное облако, при желании можно поставить Telegram и т. д. и т. п. В общем, на мой взгляд, LineageOS это вариант не для всех и не всегда, но во многих случаях это просто отличное решение.
Выводы
Очевидно, что для большинства «нормальных людей» которым нужно «передать файл по Ватсапу», «погонять птиц», посвайпить бесконечные ленты «друзей», установить кешбек-приложения от Спортмастера и Алиэкспресс и расплатиться на платной трассе через NFC — этот вариант не подходит.
Сама идея чистого и подконтрольного вам смартфона входит в противоречие с логикой и практикой жизни в современном обществе, где каждый продавец товаров или услуг имеет своё приложение, которое занимается сливом ваших данных, отслеживанием вашей активности и построением вашего цифрового профиля.
Что со всем этим делать предлагаю читателям решать самостоятельно.
Послесловие
В общем, я доволен проведённым экспериментом — за это время я узнал много интересного и, как гик, получил огромное удовольствие от тесного общения с классным аппаратом Motorola G7. В результате я получил «чистый» телефон, который просто приятно держать в руках, ощущая себя его хозяином и не опасаясь, что в этот момент он что-то куда-то сливает или делает фотографии.
Пока Motorola G7 остаётся полем для экспериментов и «вторым» телефоном, наряду с моим старым аппаратом, набитым всякой «шнягой» типа Google сервисов и Ватсапа и после использования которого хочется перекреститься и помыть руки (смайл).
И напоследок пара фотографий свободного Motorola G7 с установленной на нём LineageOS.
Как узнать хэш (контрольную сумму) файла в Windows PowerShell
Хэш или контрольная сумма файла — короткое уникальное значение, вычисляемое из содержимого файла и обычно использующееся для проверки целостности и соответствия (совпадения) файлов при загрузке, особенно если речь идет о больших файлах (образы системы и подобные), которые могут быть скачены с ошибками или есть подозрения о том, что файл был подменен вредоносным ПО.
На сайтах загрузок часто бывает представлена контрольная сумма, вычисленная по алгоритмам MD5, SHA256 и другим, позволяющая сверить загруженный файл с файлом, выложенным разработчиком. Для вычисления контрольных сумм файлов можно использовать сторонние программы, но есть способ сделать это и стандартными средствами Windows 10, 8 и Windows 7 (требуется версия PowerShell 4.0 и выше) — с помощью PowerShell или командной строки, что и будет продемонстрировано в инструкции.
Получение контрольной суммы файла средствами Windows
Для начала потребуется запустить Windows PowerShell: проще всего использовать поиск в панели задач Windows 10 или меню Пуск Windows 7 для этого.
Команда, позволяющая вычислить хэш для файла в PowerShell — Get-FileHash, а чтобы использовать ее для вычисления контрольной суммы достаточно ввести ее со следующими параметрами (в примере вычисляется хэш для образа ISO Windows 10 из папки VM на диске C):
Get-FileHash C:\VM\Win10_1607_Russian_x64.iso| Format-List
При использовании команды в таком виде, хэш вычисляется по алгоритму SHA256, но поддерживаются и другие варианты, задать которые можно с помощью параметра -Algorithm, например, для вычисления контрольной суммы MD5 команда будет выглядеть как в примере ниже
Get-FileHash C:\VM\Win10_1607_Russian_x64.iso -Algorithm MD5 | Format-List
При этом поддерживаются следующие значение для алгоритмов вычисления контрольной суммы в Windows PowerShell
- SHA256 (по умолчанию)
- MD5
- SHA1
- SHA384
- SHA512
- MACTripleDES
- RIPEMD160
Получение хэша файла в командной строке с помощью CertUtil
В Windows присутствует встроенная утилита CertUtil для работы с сертификатами, которая, помимо прочего, умеет высчитывать контрольную сумму файлов по алгоритмам:
- MD2, MD4, MD5
- SHA1, SHA256, SHA384, SHA512
Для использования утилиты достаточно запустить командную строку Windows 10, 8 или Windows 7 и ввести команду в формате:
certutil -hashfile путь_к_файлу алгоритм
Пример получения хэша MD5 для файла показан на скриншоте ниже.
Дополнительно: на случай, если вам требуются сторонние программы для вычисления хэшей файлов в Windows, можно обратить внимание на SlavaSoft HashCalc.
А вдруг и это будет интересно:
- Лучшие бесплатные программы для Windows
- Компьютер не видит внешний диск — как исправить?
- TakeOwnershipEx — получение полного доступа к папкам и файлам и восстановление прав по умолчанию
- Ошибка 0x8007000d в Windows 11 или 10 — как исправить?
- Chrome открывает поиск вместо сайта — решение
- Недопустимая конфигурация приложения в Steam — варианты решения
- Windows 11
- Windows 10
- Android
- Загрузочная флешка
- Лечение вирусов
- Восстановление данных
- Установка с флешки
- Настройка роутера
- Всё про Windows
- В контакте
- Одноклассники
-
Вадим 08.09.2016 в 19:21
- Dmitry 09.09.2016 в 09:41
- Вадим 09.09.2016 в 18:37
auth
Если вы используете auth , то вызов identify должен идти после auth .
Если на вашем сайте есть регистрация/авторизация, то мы настоятельно рекомендуем передавать нам User ID. Мы используем User ID для объединения пользователей, зашедших с разных устройств.
Второй аргумент — хеш, вычисленный по алгоритму HMAC SHA 256. Текстом для хеширования является User ID, ключом — User Auth Key, его можно узнать в панели администратора. Проверить правильность генерации хеша можно в этом онлайн-генераторе. Важно понимать, что безопасность держится на секретности этого ключа (система с разделяемым секретом), поэтому этот ключ ни в коем случае нельзя использовать на стороне браузера (JavaScript), генерация хеша должна происходить только на стороне сервера. Если ключ перестанет быть секретом, то недобросовестные пользователи смогут читать чужие сообщения или совершать события от имени другого пользователя. Хэш нужно передавать в UTF-8.
Пример
Пример генерации хеша на языке PHP:
В браузере это будет выглядеть следующим образом:
Таким образом, ваш пользователь не видит секретный ключ, и ему будет присвоен User >
Этот метод можно вызывать только один раз после авторизации (актуально для Single Page App), либо он может вызываться многократно (если вы вставляете код средствами backend на каждую страницу, когда пользователь авторизован, т.е. например через PHP) — это тоже ОК.
Как выбрать правильный User ID?
Существует два правила:
- User ID должен быть уникальным для каждого пользователя
- User ID не может меняться в течение жизни пользователя. Например, если пользователь может изменить свой email, то email не может являться User ID
User ID не обязательно должен быть числом, допускаются строки длиной не более 255 символов. Рекомендуется использовать числовой идентификатор.
Для чего нужны эти сложности с HMAC?
Давайте на примере. Если вы пишете backend на PHP (например), и вы бы просто писали carrotquest.auth(); то в браузере это бы выглядело как-то так carrotquest.auth(1234); Злоумышленник видит, что вы отправляете UserID=1234, он может открыть консоль и начать перебирать варианты (набрать carrotquest.auth(1235) , например, так он выдаст себя за пользователя с UserID=1235). Таким образом, он легко выдаст себя за любого другого человека, сможет читать его сообщения и совершать события от его имени.
В случае если добавляется хэш, секретный ключ, с помощью которого вычислен хеш, знает только ваш backend (исходный код которого злоумышленнику неизвестен) и Carrot quest. При вызове метода auth, Carrot quest, зная UserID и зная секретный ключ, вычисляет хеш самостоятельно. Затем проверяет, совпадает ли этот вычисленный хеш с тем, что был прислан. Если не совпадает, то запрос отвергается и объединения не происходит.