Теоретический взлом сканера отпечатка пальца на смартфонах
Всем привет! Apple ставили датчики Touch ID практически во все устройства до Iphone X, в то время как производители смартфонов на Android получили возможность доступа к нужному API только с выходом Android 6.0, под управлением которой сейчас работает порядка 15% устройств. Попробуем разобраться, насколько безопасен дактилоскопический метод аутентификации и имеет ли практический смысл его использование.
Соблюдая исторический порядок, начнем мы, пожалуй, с Apple.
Touch ID и Secure Enclave: сладкая парочка?
Три года назад проблемой Apple, уже в те времена начинавшей обращать внимание на безопасность данных, было то, что пользователи в массе своей не желали каким-либо образом защищать собственные устройства. Вводить PIN-код для разблокировки телефона? Это долго и неудобно. Посмотрев на ситуацию, в Apple решили не заставлять людей использовать коды блокировки, а попросту максимально упростить процесс разблокировки. Основная идея технологии Touch ID вовсе не в том, чтобы сделать безопаснее твой конкретный аппарат. Идея в том, чтобы сделать безопасность достаточно удобной и привлекательной для основной массы пользователей. И своей цели компания добилась.
Touch ID — это уникальный программно-аппаратный комплекс, и слово «уникальный» здесь не несет рекламного оттенка: каждый датчик в процессе производства проходит настройку для работы с конкретным устройством. Помнишь скандал с «ошибкой 53»? Именно эта особенность стала камнем преткновения, который блокировал работу устройств с замененным в кустарных условиях датчиком отпечатков пальцев.
Где хранятся отпечатки пальцев?
Казалось бы, необходимость хранить данные отпечатков в виде односторонней хеш-функции очевидна, но тебе это только кажется: разработчики HTC One Max решили, что хранить отпечатки можно в виде картинок в самой обычной папке в памяти устройства. Чем бы ни думали разработчики HTC, инженеры Apple такой ошибки не совершили: сканированный отпечаток пропускается через хеш-функцию и сохраняется в Secure Enclave — защищенном от доступа извне микрокомпьютере. Отдельно отмечу, что эти данные не попадают в iCloud и не передаются на сервер компании.
Что интересно, даже односторонние хеш-функции отпечатков зашифрованы, причем ключи шифрования вычисляются во время загрузки устройства на основе уникального аппаратного ключа (который также хранится внутри Secure Enclave и не может быть оттуда извлечен) и кода блокировки, который вводит пользователь. Расшифрованные дактилоскопические данные хранятся только в оперативной памяти устройства и никогда не сохраняются на диск. При этом система время от времени удаляет данные отпечатков даже из оперативной памяти устройства, вынуждая пользователя авторизоваться с помощью кода блокировки (который, напомним, даст системе возможность расшифровать данные отпечатков и возобновить работу датчика Touch ID).
Когда и почему iOS удаляет данные отпечатков из оперативной памяти?
Пожалуй, самое интересное в системе безопасности iOS — это именно вопрос о том, при каких обстоятельствах iOS удалит данные отпечатков из оперативной памяти устройства и заставит пользователя заново авторизоваться с помощью кода разблокировки.
Но для начала подумаем, зачем Apple вообще понадобилось периодически удалять отпечатки?
В компании отлично понимают (и понимали три года назад), что любую биометрическую систему можно обмануть. Да, в Apple разработали прекрасные дактилоскопические сканеры, обойти которые далеко не так просто, как датчик, к примеру, Samsung Galaxy S5. Но при этом все-таки можно. В конце концов, владельца можно заставить приложить палец для разблокирования телефона — вот только в рамках американской правовой системы для этого требуется ордер, на получение которого уходит время… по истечении которого телефон удалит из памяти данные отпечатков и не позволит разблокировать устройство по отпечатку пальца.
Звучит как натяжка? Попахивает теорией заговора? Нет, просто Apple очень не понравилась попытка давления со стороны правоохранительных органов, в ответ на которое она и ввела эту меру: Apple adds another rule forcing iPhone and iPad users to employ a passcode to unlock their device.
Но не будем отвлекаться, а посмотрим внимательно на условия, при которых система блокирует работу Touch ID и вынуждает авторизоваться с помощью кода блокировки. Датчик Touch ID выключается, а данные отпечатков удаляются из памяти устройства при соблюдении любого из следующих условий:
- телефон выключен или перезагружен;
- пользователь добавляет данные еще одного пальца;
- телефон получает команду удаленной блокировки через Find My iPhone;
- было пять безуспешных попыток разблокирования с помощью отпечатка подряд;
- • устройство ни разу не разблокировалось в течение двух суток;
- антиполицай: прошло более шести суток с момента последнего ввода кода блокировки, а само устройство не было разблокировано датчиком Touch ID в течение последних восьми часов.
Смысл последнего пункта нужно пояснить. По мнению сайта PhoneArena, он «может усложнить работу правоохранительных органов». Я выразился бы более уверенно, ведь последний пункт был введен сразу после нашумевшего процесса с террористом из Сан-Бернардино, когда на Apple оказывалось беспрецедентное давление.
Как обойти сканер отпечатков пальцев?
Если речь идет о взломе Touch ID, то обмануть датчик сложно, но можно. Для обмана современных датчиков тебе придется создать трехмерную модель пальца, причем из правильного материала. На старых устройствах (iPhone 5s, iPad mini 3) обойти датчик заметно проще. К примеру, команда немецких хакеров смогла провести датчик iPhone 5s через два дня после выхода устройства на рынок, попросту распечатав оригинальный отпечаток пальца с разрешением 2400 dpi.
Но перед тем, как приступать к моделированию отпечатка, тебе необходимо позаботиться о сохранности данных на устройстве, а также о том, чтобы данные отпечатка не успели «протухнуть».
Действовать нужно четко и быстро: у тебя минимум времени.
- Итак, к тебе в руки попал телефон в неизвестном состоянии. Не трогай кнопку Touch ID! Если телефон заблокирован (а он, скорее всего, заблокирован), ты напрасно потратишь одну попытку из пяти. Проверь состояние устройства коротким нажатием кнопки питания.
- Если устройство заблокировано, изолируй его от внешних радиосетей, поместив его в клетку Фарадея (в домашних условиях ее роль выполнит обычная микроволновка. Выключенная микроволновка!). Не забудь поставить его на зарядку, даже если ее роль будет выполнять внешний аккумулятор. Все это делается для того, чтобы оградить устройство от команд по протоколу Find My iPhone, которые позволят как дистанционно заблокировать устройство, так и уничтожить его содержимое. (Думаешь, эти меры очевидны? Как бы не так! Науке известны как минимум два нашумевших случая, когда полицейские допускали удаленное уничтожение данных с уже конфискованных устройств.)
- А вот если устройство разблокировано, в твоих силах не позволить ему заблокировать экран. Для этого просто отключи автоматическую блокировку (в отличие от процедуры снятия кода блокировки, для отключения автоматической блокировки никакой код тебе вводить не потребуется).
- Если устройство было заблокировано, у тебя есть максимум 48 часов (на самом деле меньше) на попытки обмануть датчик отпечатков.
- Обрати внимание: все манипуляции с устройством должны проводиться исключительно в среде, защищенной от радиоволн (сетей Wi-Fi и сотовых сетей). Для срабатывания Find My iPhone достаточно пары секунд.
- Если датчик отпечатков удалось обмануть, отключи автоматическую блокировку экрана (см. пункт 3). Имей в виду: попытки добавить еще один отпечаток в настройках или сменить код блокировки не пройдут — для этих операций система всегда потребует ввести код.
Как это использовать?
Допустим, у тебя получилось обмануть датчик отпечатка пальцев. Что дальше? iOS — закрытая система, а вся память устройства будет зашифрована. Варианты?
- Установка джейлбрейка: нет. Для взлома 64-битного iPhone или iPad тебе в любом случае потребуется ввести код блокировки (а в некоторых случаях еще и отключить код блокировки в настройках).
- Физическое извлечение данных: можно попробовать. Если джейлбрейк уже установлен, ты сможешь извлечь большую часть данных, но не сможешь расшифровать keychain. А вот если джейлбрейка нет, то ничего поделать не получится — для его установки тебе потребуется код блокировки.
- iCloud: возможно. Разблокировав устройство, ты сможешь заставить его сохранить свежую резервную копию в iCloud (Settings –> iCloud –> Backup –> Backup now). Помни, однако, что для извлечения этих данных из облака тебе понадобится пароль от Apple ID, а если в учетке активирована двухфакторная аутентификация — то и доступ ко второму фактору (в роли которого, впрочем, может выступить исследуемое устройство). Важный момент: тебе придется подключить устройство к Wi-Fi, в результате чего вместо резервной копии на устройство может прилететь команда блокировки или уничтожения данных.
- Резервная копия iTunes: пожалуй, это единственное, что сделать можно и нужно. Разблокированное устройство легко подключается к iTunes, с помощью которого создается резервная копия данных на твоем компьютере. Дальнейшее — дело техники. Один момент: пароль на резервную копию. Если он установлен, тебе придется его взломать (например, с помощью Elcomsoft Phone Breaker). А вот если он не установлен — обязательно установи свой! Простейшего 123 будет вполне достаточно. Из резервной копии, зашифрованной паролем, ты сможешь извлечь все данные, а из незашифрованной — все, кроме keychain. Поскольку в keychain хранится все самое интересное, установить временный пароль перед снятием резервной копии будет весьма полезно.
Итоги:
В Apple смогли с первой же попытки создать завершенную и очень удачную схему защиты. Датчик отпечатков удачно вписался в общую концепцию. Программным способом обойти эту защиту невозможно, времени на любые попытки обмануть датчик у хакера совсем немного, а результат на новых устройствах не гарантирован. Однозначно — в компании добились своей цели.
Отпечатки пальцев и Android.
Перейдем к исследованию дактилоскопической аутентификации в устройствах под управлением Android. Разобрав очень удачную реализацию от Apple, посмотрим внимательно на состояние дел в лагере конкурентов.
Google Android 4.x–5.1.1: все очень грустно
Первые устройства со встроенными дактилоскопическими датчиками стали появляться довольно давно, еще во времена Android 4.4. На сегодняшний день их уже очень много: это Samsung Galaxy S5, S6, S7, Motorola Moto Z, Sony Xperia Z5, LG G5, Huawei Ascend Mate 7 и последующие, Meizu Pro 5 — и это далеко не все. Вот только не в каждом устройстве датчик отпечатков используется правильным образом. Связано это в первую очередь с тем, что вплоть до версии Android 6.0 в системе не существовало универсального API для дактилоскопической аутентификации. Нет API — нет и формальных требований Compatibility Definition, и, соответственно, нет никакой сертификации со стороны Google.
При полном отсутствии внешнего контроля производители нагородили такое… в страшном сне не приснится. Например, разработчики HTC One Max экстерном сдали экзамен по курсу «Android за 21 день» и реализовали замечательную систему, которая хранит полноценные копии отпечатков пальцев в публично доступном каталоге в несжатом (не говоря уже о шифровании) формате. Пожалуй, в инструкциях по «взлому» этой системы нет никакой нужды. Уточню только, что данные хранятся в файле /data/dbgraw.bmp, причем для твоего удобства разрешение доступа выставлено 0666.
Пример не единичный. Samsung Galaxy S5 вышел с Android 4.4 на борту. В скором времени хакерам удалось получить доступ к сканеру отпечатков и успешно обойти защиту.
До выхода шестой версии Android производители успели выпустить массу устройств, к которым безграмотно прикрутили датчики отпечатков. Ломать их даже неинтересно, до того там все уныло. Понятно, что долго терпеть такую ситуацию в Google не могли. Они и не стали.
Android 6.0: Fingerprint API и Nexus Imprint
С выходом Android 6.0 в Google не только разработали собственный API для аутентификации по отпечаткам пальцев, но и обновили Compatibility Definition Document, которому обязаны следовать все производители, желающие сертифицировать свои устройства для установки сервисов Google (это очень важный момент, о нем чуть позже).
Было выпущено сразу два референсных устройства: Nexus 5X и Nexus 6P. В них — и не отключаемое шифрование раздела данных, и правильная реализация датчиков отпечатков, получившая название Nexus Imprint.
Итак, чего же требует Google от производителей для получения сертификата соответствия? В отличие от ситуации с обязательным шифрованием на Android 5.0, на сей раз список требований не допускает двойных толкований. Переведем выдержку из официального документа.
7.3.10. Датчик отпечатков пальцев
В устройствах, в которых возможно использование блокировки экрана, рекомендуется использование датчика отпечатков пальцев. Требования к устройствам, оборудованным таким датчиком и предоставляющим доступ к API сторонним разработчикам:
- Обязательно декларировать поддержку android.hardware.fingerprint.
- Обязательно полная реализация fingerprint API из документации к Android SDK [Resources, 95].
- Обязательно иметь уровень ложноположительных срабатываний менее 0,002%.
- Рекомендуется уровень ложно отрицательных срабатываний менее 10%, задержка срабатывания менее 1 секунды (для 1 сохраненного отпечатка).
- Обязательно ограничивать скорость попыток 30-секундной задержкой после 5 неудачных попыток.
- Обязательно иметь аппаратное безопасное хранилище, а верификацию отпечатков проводить исключительно в доверенной зоне Trusted Execution Environment (TEE) или на выделенном процессоре с безопасным каналом связи с TEE. (На этом погорел Samsung S5, в котором с безопасным каналом связи была проблема)
- Обязательно шифровать данные отпечатков таким образом, чтобы доступ к ним невозможно было получить за пределами Trusted Execution Environment (TEE) согласно Android Open Source Project [Resources, 96].
- Обязательно не разрешать добавлять отпечатки без установления доверенной цепочки (пользователь должен добавить или верифицировать PIN/паттерн/пароль через TEE согласно Android Open Source).
- Не позволять сторонним приложениям различать отдельные отпечатки.
- Обязательно корректно обрабатывать флаг DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT.
- При обновлении до Android 6.0, при этом данные отпечатков должны быть или мигрированы безопасным образом, или сброшены.
- Желательно использовать иконку Android Fingerprint из Android Open Source Project.
Как видим, документ не подразумевает двойных толкований. Производители, желающие сертифицировать устройства на базе Android 6.0 и выше, оборудованные датчиками отпечатков, должны полностью выполнить все требования. Более того: устройства, которые обновляются на Android 6.0, также обязаны соответствовать новым требованиям (и, соответственно, проходить сертификацию).
В другой части документа приведено требование обязательно включать шифрование при использовании безопасной блокировки экрана (в том числе датчика отпечатков пальцев). Как видим, в теории дела обстоят неплохо. А что на самом деле?
Android Smart Lock.
А на самом деле в Android до сих пор есть ряд зияющих дыр в безопасности, позволяющих не просто обходить, а обходить на раз плюнуть все эти отпечатки и пароли. Одна из таких дыр — система Android Smart Lock, с помощью которой можно автоматически разблокировать телефон при совпадении некоторых внешних факторов. К примеру, многие пользователи разрешают автоматическую разблокировку дома, забывая о том, что точность позиционирования далеко не идеальна и понятие «дом» для телефона будет охватывать 80-метровый радиус. Многие активируют разблокировку доверенным устройством Bluetooth или включают псевдобиометрическую разблокировку по снимку лица (обходится довольно легко демонстрацией видеоролика или трехмерной модели).
Что интересно, никакой необходимости в Smart Lock при наличии работоспособного датчика отпечатков нет: экран в любом случае включается и разблокируется нажатием одной кнопки. Почему в Compatibility Definition нет требования отключать Smart Lock при активном датчике отпечатков? Загадка. Но ты можешь использовать эту систему для разблокирования устройства. Только имей в виду, что Smart Lock не будет активна сразу после перезагрузки устройства; для активации системы устройство нужно будет разблокировать паролем или паттерном хотя бы раз.
Наши китайские друзья.
А как обстоят дела в многочисленных китайских телефонах, которые тоже идут с датчиками отпечатков? Там все очень по-разному.
Выше мы говорили о требованиях Google, изложенных в Android Compatibility Document. Если производитель хочет сертифицировать свои устройства для установки на них сервисов Google, его устройство под управлением конкретной версии прошивки должно пройти сертификацию в одной из лабораторий.
В Китае Google под запретом, и многие полуподвальные производители совершенно не собираются заморачиваться с ненужными сертификациями. Да ты и сам знаешь, с какими прошивками зачастую приходят устройства из Китая. В угоду производительности шифрование, как правило, не включается даже в прошивках на основе Android 6.0, а загрузчик не блокируется принципиально (в случае с процессорами MediaTek) или может быть легко разблокирован. Соответственно, есть там датчик отпечатков или нет — не играет ни малейшей роли.
Даже если шифрование будет включено пользователем (маловероятно в случае дешевых устройств, но все же), у пользователя нет никакой гарантии, что датчик отпечатков интегрирован правильным образом. Особенно это касается устройств, которые продавались с Android 5 и более ранними версиями на борту, а обновление до 6-й версии Android получили позднее.
Из этого правила бывают исключения. Все международные модели Huawei, Lenovo в обязательном порядке сертифицируются Google (а вот о специфически китайских моделях этого сказать нельзя). Интересна ситуация со смартфонами LeEco, которые продаются в Китае и пытаются завоевать внешние рынки. В случае с LeEco для одной и той же модели часто существуют как чисто китайские, так и международные прошивки. Отличаются они далеко не только предустановленным магазином Google Play, списком доступных языков и наличием/отсутствием «китайского мусора». В случае с международными прошивками (Индия, США, Россия) компания формально сертифицирует устройство для установки Google Play Services.
В частности, в международных прошивках LeEco на основе Android 6.0 (например, для Le2 Max) активируется (и не отключается) шифрование раздела данных — в полном соответствии с требованиями Android Compatibility Document. Многими пользователями это воспринимается как неудобство, и они пытаются перейти с таких прошивок на что-то другое, основанное на китайских сборках, что в свете разблокированного загрузчика полностью обесценивает всю модель безопасности.
Как взломать сканер отпечатков пальцев?
Взлом датчика отпечатков для Android подразумевает имитацию пальца, с помощью которого можно разблокировать смартфон. Насколько подробной и качественной должна быть имитация, из какого материала выполнена — зависит от технологии, на которой построен датчик конкретной модели смартфона.
Так, ультразвуковые датчики бесполезно пытаться обмануть с помощью отпечатка, распечатанного с высоким разрешением на специальной токопроводящей бумаге, — но стандартные емкостные сканеры таким образом перехитрить можно.
А вот ультразвуковой датчик обманывается с помощью пальца, отпечатанного на 3D-принтере, причем материал особого значения не имеет. Наконец, практически любой датчик примет за настоящий накладной отпечаток, выполненный из тонкого слоя токопроводящего материала и надетый поверх пальца.
Наверное, о том, что для разблокирования телефона, оборудованного дактилоскопическим датчиком, можно использовать палец спящего, бессознательного человека или даже трупа (полиция пользуется этим способом постоянно), упоминать нет необходимости.
А вот о том, что в некоторых странах правительства собирают базы данных отпечатков пальцев своих и не только своих граждан (когда-нибудь получал американскую визу?), упомянуть необходимо. И если сейчас законодательные ограничения не позволяют использовать эти базы для разблокирования телефонов просто по подозрению, то в будущем я такой гарантии не дам.
Сравнение с Touch ID
Напрямую сравнить безопасность Apple Touch ID с ситуацией в мире Android не получится: если у Apple устройств единицы, то смартфонов на Android, наоборот, слишком много. В них могут использоваться самые разные датчики, основанные на разнообразных технологиях (от емкостных и оптических до ультразвуковых). Для разных датчиков подбирают разные технологии обхода. К примеру, для Samsung Galaxy S6 вполне срабатывает финт с разблокированием телефона моделью пальца, напечатанной на 3D-принтере из самого обычного пластика (с Apple Touch ID такой простой трюк не пройдет; для печати нужно будет использовать материал, обладающий особыми свойствами). Некоторые другие устройства легко обманываются распечатанными с высоким разрешением картинками.
А вот сравнение с Nexus Imprint вполне имеет смысл. В Nexus 5X и 6P Google использовал образцово-показательный подход к безопасности. Это и не отключаемое шифрование раздела данных, и грамотная интеграция датчиков отпечатков, да и сами датчики выбраны не абы как.
В устройствах сторонних производителей могут использоваться недостаточно безопасные датчики, могут зиять откровенные дыры в безопасности (несмотря на формальное соответствие требованиям Android Compatibility Definition).
Как защититься от взлома сканера отпечатков пальцев?
Прочитал статью и твердо решил отключить злосчастный датчик в своем устройстве, использовав вместо него сложный буквенно-цифровой пароль? Не спеши. На самом деле все не так плохо. В случае с относительно современными устройствами Apple (начиная с iPhone 6, iPad mini 4, iPad Air) взлом дактилоскопического датчика тебе не грозит: даже если твой отпечаток сумеют отсканировать в достаточно высоком разрешении, времени на то, чтобы его использовать, у злоумышленника будет совсем немного. Правоохранительные органы могут заставить тебя разблокировать телефон отпечатком (и в отличие от разблокировки паролем они имеют на это полное право), но для этого действия им потребуется получить специальный ордер, в котором будет оговорена вся процедура. На получение ордера нужно время, за которое данные отпечатка в твоем iPhone успеют «протухнуть».
А вот если у тебя смартфон на Android. Включи шифрование. Без него данные с твоего телефона сольют безо всяких датчиков. Отключи Smart Lock — это зияющая дыра в безопасности. Убедись, что твой аппарат сертифицирован Google и работает под управлением Android 6.0 или более новой системы. Если это не так — я бы датчик отключил от греха подальше. Наконец, не поленись поискать информацию о том, был ли взломан датчик отпечатков для твоего устройства и если был — просто или сложно это сделать. Принимай решение в зависимости от того, насколько лично тебя устраивает сложность взлома дактилоскопического датчика потенциальным злоумышленником именно на твоем устройстве.
Заключение.
Дактилоскопическая аутентификация — не панацея. Ее основное предназначение не в том, чтобы сделать более безопасным конкретно твое устройство, а в том, чтобы снизить неудобства, связанные с безопасной блокировкой телефона, и таким образом убедить основную массу пользователей все-таки блокировать свои устройства. У Apple — получилось. В Android ситуация сложнее: референсная система Nexus Imprint работает идеально, практически полностью копируя методы Touch ID. У других производителей дела обстоят не так радужно. Качество и безопасность датчиков временами вызывают сомнения, а в устройствах под управлением Android 5.1 и более ранних версий дактилоскопические датчики и вовсе остаются открытой дырой в безопасности. В случае с китайскими устройствами с разблокированным загрузчиком наличие дактилоскопического датчика никак не ухудшит и без того отсутствующую безопасность (впрочем, может и ухудшить: если попавший в твои руки телефон включен, а раздел данных зашифрован, то обман такого датчика — отличный способ обойти шифрование).
INVISIBLE - Юмор и мануалы по анонимности!
HIDDEN_PEOPLE - Самый анонимный чат в Telegram