Каноническое объяснение Android-шифрования и уязвимостей

16

Примечание: Ну, срок действия щедрости истек, и одной из возможных причин могут быть усилия, необходимые для устранения, как я понял из комментариев. Видя количество голосов, это, кажется, представляет интерес и для других. Я все еще хотел бы получить ответ, так что вот что я предлагаю - хороший ответ в течение месяца, я получу бонус 50. Это, я надеюсь, даст достаточное время и стимул


Я пытался понять процесс шифрования Android и его уязвимости в течение некоторого времени

Есть много вопросов, касающихся частей этой темы на этом сайте, а также на родственном сайте. Чтобы подчеркнуть мою точку зрения, эти вопросы касаются не отдельных, а целых частей (напоминающих « слепых и слона ?» :)

Мое понимание (или недоразумение?)

  1. Пароль шифрования генерируется из комбинации PIN-кода экрана блокировки пользователя и алгоритма шифрования (в этом заключается внутренняя слабость из-за ограниченной длины PIN-кода)
  2. Это соленое и хранится в корневом расположении, недоступно для пользователей
  3. Это используется для генерации фактического пароля для шифрования / дешифрования, а фактический пароль хранится в оперативной памяти
  4. Это было усилено путем привязки шага 1 к устройству SoC ( какая версия Android? Какой аппаратный элемент уникально идентифицирует устройство? Можно ли заменить его на фальшивый? )
  5. Следовательно, невозможно расшифровать данные без ключа шифрования и устройства (также для внешнего SD)
  6. Возможные способы восстановления - перебор, захват оперативной информации (шаг 3) для получения ключа
  7. Корневые устройства кажутся более восприимчивыми к доступу к данным шага 2 через пользовательское восстановление / возможно ПЗУ и перепрошивку ядра ?? ( если это правда, почему это не рекламируется как большой риск? )
  8. Даже если эта информация получена, я предполагаю, что генерировать реальный пароль нетривиально
  9. Зефир может рассматривать внешнюю SD как «внутреннее хранилище» или «переносное хранилище». Логично, что это не должно иметь значение, но я не уверен

В моем понимании есть пробелы, вероятно, упускающие и другие ключевые аспекты.

Итак, я ищу каноническое объяснение для понимания с точки зрения пользователя

  • Весь процесс шифрования (включая внешний SD)

  • Варианты реализации для разных версий Android - от KitKat до Marshmallow (включая две опции для внешней SD в Marshmallow)

  • Уязвимости на уровне пользователя

Заметка

  • Я осознаю риск того, что вопрос будет считаться слишком широким, но ИМО требует комплексного подхода
  • Имея некоторый опыт в области безопасности коммуникаций, я понимаю проблему перевода криптографических концепций на уровень пользователя. Я бы предпочел ответ на этот вопрос с пояснительными указателями для более глубокого понимания. Примеры процесса не обязательно должны быть криптографически правильными в строгом смысле, но должны передавать суть

  • Возможным преимуществом может быть «дублирование» будущих вопросов по смежным аспектам.

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

  • Я бы сказал, что нужно проголосовать за тривиальные / случайные / патч-ответы, чтобы получить исчерпывающие ответы.

beeshyams
источник
1
Комментарии не для расширенного обсуждения; этот разговор был перенесен в чат . //Это может быть лучше подходит для безопасности . Я также думаю, что он слишком широкий, потому что хороший кусок того, о чем вы спрашиваете, зависит от конкретного оборудования и от того, как его реализует производитель.
Мэтью Прочитал

Ответы:

3

Я предполагаю, что это работает так:

  • Хранилище зашифровано с использованием синхронного случайного ключа.
  • Когда пользователь выбирает или изменяет пароль, основанный на вводе, будь то пароль, состоящий из букв, цифр и символов, или пин-код, или образец, или отпечаток пальца, или любой другой ввод, асинхронное шифрование Алгоритм используется для шифрования главного ключа, так что правильная идентификация в конечном итоге расшифровывает ввод, в результате чего получается главный ключ, что, в свою очередь, позволяет шифровать и дешифровать хранилище.
  • Когда пользователь выходит из системы, память, в которой находится главный ключ, перезаписывается

Большая хитрость здесь заключается в том, что асинхронное шифрование мастер-ключа. Когда у Android есть мастер-ключ, он может обмениваться данными с хранилищем. Этот главный ключ известен только тогда, когда пользователь вошел в систему. Асинхронное шифрование - это то, что называется шифрованием с открытым ключом. Что происходит, так это то, что открытый ключ шифрует данные (в данном случае главный ключ), а закрытый ключ расшифровывает данные. Не путать с шифрованием хранилища здесь. Хранилище просто синхронное шифрование. Там один и тот же ключ используется для шифрования и дешифрования. Но нахождение / извлечение этого "главного" ключа - важная персона. Это означает, что если в какой-то момент у вас есть слабый метод входа в систему, например, для intance «1234» в качестве пин-кода, и вы передумали, и измените пин-код на «5364», что сложнее угадать, если не раньше, 1234 " был украден, подслушан, в любой момент, безопасность только стала лучше. То же самое происходит при смене метода входа на полный пароль, который невозможно угадать, или атака по словарю. Само хранилище вообще не нуждается в повторном шифровании. Все дело в том, чтобы скрыть этот главный ключ - внутри. Пользователь никогда не увидит этот мастер-ключ, потому что это, скорее всего, случайный хэш-код - ничто не сможет «найти» или «угадать» этот хэш-код. Даже АНБ или какой-либо другой орган безопасности на планете никогда не сможет найти такой ключ. Единственный вектор атаки - надежда на слабость со стороны пользователя. Возможно, пользователь выбрал пин-код для входа. Если это 4 цифры, то это максимум 10000 возможных пин-кодов. ОС может «заблокировать» устройство после нескольких попыток за короткое время. Решение состоит в том, чтобы «взломать» ОС, чтобы можно было попробовать все возможные пин-коды без вмешательства ОС и блокировки устройства. Я считаю, что именно так ФБР в итоге получило доступ к телефону преступника. Сторонняя компания (некая израильская компания, насколько я помню) взломала ФБР, как мне кажется. Они обошли этот лимит попыток пин-кода. Если для входа в систему указан полный пароль, а пользователь выбрал надежный пароль, то вы сол. Не в жизни со всей силой процессора на планете взломать это через миллион лет. Я не покупаю ни одного из АНБ, могу расшифровать что угодно, слухи. Я думаю, что эти люди смотрели слишком много фильмов о людях в черном. Все, что нужно сделать, это посмотреть научные документы о различных алгоритмах шифрования (например, AES), и вы будете знать, что взлома просто не произойдет, кроме как в старые времена, когда были 40-битные ключи. Эти времена давно прошли. Я думаю, что AES128 уже можно взломать, и, если кто-то обеспокоен этим, переход на AES256 делает его более безопасным по величине по сравнению с размером вселенной. Может быть, однажды квантовые компьютеры могли бы расшифровать это, но я скептически отношусь. Не уверен, возможно ли иметь систему вероятностей, просто выделите решение. Мы увидим об этом, в конце концов. Возможно, это все равно на несколько жизней. Не о чем беспокоиться прямо сейчас.

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

Майк
источник
Я думаю, что вы имеете в виду «симметричный» и «асимметричный». Не "синхронный", а "асинхронный".
Джей Салливан
1

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

По сути, после того, как ваше устройство расшифровывает файл (ы), к ним может непосредственно обращаться процесс с привилегиями суперпользователя. Этот процесс может получить доступ к вашему устройству, используя уязвимость самого ПЗУ (ОС Android). (Это было недавно в новостях, так как некоторые недостатки были обнаружены WikiLeaks)

Корневые устройства кажутся более восприимчивыми к доступу к данным шага 2 через пользовательское восстановление / возможно ПЗУ и перепрошивка ядра ?? (если это правда, почему это не рекламируется как большой риск?)

Перед рутированием : для рутирования устройства вы должны использовать внешние инструменты, каждый из которых имеет глубокий доступ к внутренней структуре устройства. Некоторые из этих инструментов предварительно скомпилированы и не имеют открытого исходного кода. У них есть «официальные» сайты, но кто эти люди? (twrp.me, например, supersu.com, но есть и другие, такие как KingoRoot) Можем ли мы им доверять? Я доверяю некоторым больше, чем другим. Например, KingoRoot установил на моем компьютере программу, которая вела себя как вирус (пришлось удалить двойную загрузку, чтобы удалить ее).

После получения root-прав : предоставление скомпилированной программе (APK) доступа SU означает, что она может делать все, что захочет, без ограничений или с указанием того, какое намерение она будет использовать. (Назначение - это способ, с помощью которого APK-файлы могут получить доступ к таким вещам, как WiFi, камера и т. Д.). Таким образом, «пользующееся доверием приложение» после получения корневого доступа может легко получить доступ к любой информации и отправить ее обратно на свой сервер.

Защищает ли мое устройство полное шифрование данных от Google и правительства?

Гугл - да. У него нет ключа к разблокировке.

Правительство (или хакер) - нет. потому что правительство или хакер могут по существу использовать эксплойт, который будет перехватывать файлы, как я упоминал выше.

Сложности процедур / алгоритмов безопасности малопригодны, если их можно перехватить и обойти.

Изменить: Стоит отметить, что Google на самом деле имеет возможность загружать и устанавливать / обновлять приложения на вашем устройстве Android без вашего разрешения, или даже уведомлять вас, что обновление произошло. И даже на рутированном устройстве, кажется, нет способа заблокировать это без потери ключевых функций (Play Store, Maps, Sync и т. Д.)

Эмиль
источник