В первой части мы рассматривали сканеры отпечатков, используемые для разблокировки устройства. Во второй части поговорим о том, как интегрировать сканер в приложение. Кроме того, мы рассмотрим различные идеи, связанные с защитой или взломом приложений, использующих биометрию.
Автор: Lee Neely
В первой части мы рассматривали сканеры отпечатков, используемые для разблокировки устройства. Во второй части поговорим о том, как интегрировать сканер в приложение. Кроме того, мы рассмотрим различные идеи, связанные с защитой или взломом приложений, использующих биометрию.
В первой части я рассказывал о безопасной среде, предназначенной для управления отпечатками. Эта среда называется по-разному, но чаще всего двумя именами: Trusted Execution Environment (TEE) и Secure Enclave. По сути, обе эти среды представляют собой изолированные области, используемые для управления и проверки достоверной информации.
Введение
Global Platform, международная организация по стандартизации, разработала набор стандартов для программной части достоверной среды безопасности, а также для различных служб безопасности. Эти документы были опубликованы в 2010 году, а сами программные интерфейсы, соединяющие достоверное приложение (Trusted Application) и достоверную ОС (Trusted OS), появились в 2011 году. На рисунке ниже, взятого с сайта www.arm.com, описан стандарт TrustZone.
Рисунок 1: Наглядная схема, описывающая стандарт TrustZone
С появлением этого стандарта компании Apple и Samsung начали выпускать разработки на базе безопасного микроядра, находящегося в прикладном сопроцессоре (application coprocessor). Процессор, использующий стандарт TrustZone, позволяет изолировать аппаратную часть для выполнения безопасных операций. Даже если вы получили неограниченные права в операционной системе или сделали джейлбрейк, это никак не повлияет на безопасное микроядро.
Обе платформы построены по одному и тому же принципу: на базе двух областей (обычная и безопасная) и программных интерфейсов, позволяющих приложениям из обычной области получать доступ к безопасной области. В обоих случаях сканер отпечатков соединён с безопасной областью, и, соответственно, приложения из обычной области доступ к сканеру не имеют. В обеих платформах интерфейсы скрывают от разработчика детали реализации, что упрощает внедрение и использование этих функций.
Детали реализации платформы в устройствах от Apple
Компания Apple представила сопроцессор Secure Enclave вместе с iPhone 5S, где появился Touch ID и процессор A7. Secure Enclave использует зашифрованную память, аппаратный генератор случайных чисел и микроядро на базе семейства L4 (с модификациями от Apple). Во время производства сопроцессору Secure Enclave присваивается уникальный идентификатор (Unique ID; UID), который, предположительно, даже не знает Apple. Во время запуска устройства создается эфемерный ключ на основе UID, который затем используется для шифрования памяти, принадлежащей Secure Enclave. Данные, относящиеся к Secure Enclave, которые записаны в файловую систему, шифруются при помощи ключа, связанного с UID и бесповторного счетчика (anti-replay counter). Во время запуска устройства сопроцессор Secure Enclave также использует процесс безопасной загрузки, чтобы удостовериться, что программное обеспечение проверено и подписано компанией Apple. Если проверка на целостность окажется неудачной, устройство переходит в режим обновления прошивки, и вы должны восстановить заводские настройки.
Доступ к Touch ID из приложений
Сторонние приложения могут использовать системные интерфейсы, чтобы организовать аутентификацию при помощи Touch ID или пароля. Приложение может считать лишь статус аутентификации, но не может получить доступ к Touch ID или к данным об отпечатках.
Элементы хранилища keychain также можно защитить посредством Touch ID. Secured Enclave будет выдавать информацию лишь при совпадении отпечатков или пароля. У разработчиков имеются средства, во-первых, для проверки того, что пароль установлен пользователем и, соответственно, во-вторых, для аутентификации и разблокировки элементов из keychain при помощи Touch ID.
Apple API
На первый взгляд, может показаться, что получить доступ к Touch ID довольно сложно. Однако компания Apple предоставила соответствующий пример кода через Apple iOS Developer Library. Примечание: загрузка iOS SDK возможна только при наличии членства в Apple Developer Program.
Используя примеры кода из Local Authentication Framework, можно легко внедрить в приложение аутентификацию при помощи Touch ID:
Рисунок 2: Пример кода для внедрения аутентификации через Touch ID
Детали реализации платформы в устройствах от Samsung
В устройствах компании Samsung появилась достоверная среда выполнения (Trusted Execution Environment), начиная с Galaxy SIII. Samsung использует микроядро Mobicore, разработанное компанией Giesecke & Devrient GmbH (G&D). Микроядро использует расширение TrustZone у процессоров на базе архитектуры ARM для создания отдельной среды, где выполняются программы и хранятся данные, которая находится рядом с операционной системой устройства. Эта ограниченная среда и называется Trusted Execution Environment. Безопасное приложение, запускаемое внутри Mobicore, называется trustlet. Приложения взаимодействуют с trustlet’ами через библиотеку Mobicore, службу и драйвера устройства.
Хотя разработчики и могут создать свой собственный trustlet, это приложение должно быть встроено в Mobicore компанией G&D.
На рисунке ниже показана архитектура микроядра Mobicore:
Рисунок 3: Архитектура Mobicore
Доступ к Samsung Fingerprint Scanner из приложений
Samsung Fingerprint Scanner может использоваться при авторизации в веб-приложениях и верификации учетной записи в Samsung. Кроме того, сканер отпечатков можно внедрить в приложение, предназначенное для работы с платежной системой Samsung Pay.
Схема работы авторизации на основе отпечатков выглядит следующим образом:
Samsung API
Для работы с отпечатками необходимо использовать Pass SDK, который совместим с сенсорами типа Swipe (S5, Note 4) и Touch (S6). Pass SDK позволяет проверять отпечатки, но и имеет механизмы добавления и даже вызова обрабатываемых исключений в случае, если ваше приложение запущенно на устройстве, которое не поддерживает сканер отпечатков.
На рисунке ниже показан пример кода из Pass SDK, позволяющий выполнить аутентификацию при помощи отпечатка:
Рисунок 4: Пример кода, реализующего механизм аутентификации при помощи отпечатков
Как скомпрометировать систему аутентификации на основе отпечатков
Теперь, когда мы познакомились с архитектурой, у вас, вероятно, возник вопрос, как скомпрометировать эту систему и какие риски.
Первый способ – прямая атака на базу данных с отпечатками. Команда FireEye обнаружила, что смартфоны HTC хранят базу отпечатков в файле, доступном всем на чтение и запись. То есть любое приложение может читать и модифицировать содержимое этого файла. Позже были выпущены отчеты о патчах, касаемо данной уязвимости.
Второй способ – вмешательство во взаимодействие между сканером отпечатков и безопасной средой. Если вы подцепитесь к нужному процессу, то сможете собрать коллекцию отпечатков для доступа к устройству или даже пополнить базу своими собственными отпечатками. И снова команда FireEye продемонстрировала методы компрометирования, а разработчики выпустили патчи.
Третий способ – модификация драйверов на устройстве, отвечающих за взаимодействие между обычной и безопасной средой. Можно сделать так, чтобы проверка отпечатков всегда заканчивалась успешно. Остальные данные, хранимые в безопасной среде, так просто подделать нельзя.
Ди Шен (Di Shen) на конференции Black Hat 2015 презентовал метод, использующий бреши в TEE OS и драйвере на устройствах Huawei на базе чипсета Huawie HiSilicon. При помощи этого метода можно изменять достоверную память, инжектировать шеллкод, получать доступ к отпечаткам и выполнять другие трюки. Но здесь необходимо иметь права суперпользователя.
Наиболее частая причина присутствия уязвимостей – несвоевременная установка патчей. В частности, эта проблема имеется у владельцев устройств на базе Android. 5 августа компания Google анонсировала старт ежемесячных обновлений по технологии Over the Air (OTA) для устройств Nexus. В тот же день компания Samsung также сделала подобное заявление. Компания Samsung ведет переговоры о сотрудничестве касательно обновлений с мобильными операторами по всему миру. Другие производители устройств тоже планируют присоединиться к этой акции. Важно упомянуть об обновлениях для устаревших систем. Обычно для Android, в лучшем случае, выпускаются патчи в течение 18 месяцев после окончания продаж устройства. В то же время, Apple iOS 8.4.1 поддерживает устройства iPhone 4s, выпущенные 4 года назад. После того как вы выбрали платформу для обновлений, своевременно проверяйте выход новых патчей и обновляйте свою систему.
Существуют различные сервисы, информирующие о выходе обновлений. Компания Google недавно создала сервис Android Security Updates Google Group. Компания Apple оповещает о выходе обновлений в специальном разделе или в рассылке.
Заключение
Если вы хотите использовать биометрию на устройстве или в приложении, учитывайте все риски, как и в случае с внешней службой аутентификации. Сканеры отпечатков до сих пор находятся в поле зрения злоумышленников (см. Часть 1). Прежде чем использовать любую внешнюю службу аутентификации на устройстве либо в приложении, всегда выполняйте проверки на целостность. Кроме того, не забывайте о физической безопасности мобильного устройства. Защищайте свой смартфон так же как кошелек, набитый банкнотами.
Если риски допустимы, пользователям следует использовать такие механизмы аутентификации, которые нельзя обойти посредством просмотра из-за спины. В современных системах, аутентификационная информация надежно защищена, а приложение осуществляет проверку через специальные программные интерфейсы, спроектированные так, чтобы вовремя обнаружить факты взлома. Теперь приложению не нужно управлять паролями.
Можно пойти еще дальше и выбрать двухуровневую защиту. Например, если с важным корпоративным приложением работает команда администраторов мобильных устройств. В этом случае для доступа к приложению можно использовать и пароль и биометрическую аутентификацию. С другой стороны, если с приложением работают конечные пользователи, следует хорошо подумать, прежде чем использовать двухуровневую защиту.
Короче говоря, у биометрии есть множество плюсов, один из которых – упрощение жизни для обычных пользователей. Рекомендую вам обратить внимание на этот вид аутентификации при разработке следующего мобильного приложения.
Ссылки
Apple iOS Security Guide: https://www.apple.com/business/docs/iOS_Security_Guide.pdf
Brute Force Android PIN:
http://www.brotherton.com/main/androidpinbruteforce
Samsung Fingerprint 4.4: http://www.samsung.com/us/support/howtoguide/N0000011/16610/225807
Samsung S5 Fingerprint Hacked:
http://www.tomsguide.com/us/samsung-galaxy-s5-fingerprint-hack,news-18655.html
Samsung/Apple face-off:
http://www.cio.com/article/2454883/consumer-technology/fingerprint-faceoff-apple-touch-id-vs-samsung-finger-scanner.html
Improvements to iPhone 6 Fingerprint scanner:
http://9to5mac.com/2014/09/24/hack-test-shows-apple-improved-security-and-reliability-of-still-not-perfect-touch-id-sensor-in-iphone-6/
CCC how-to make a fake fingerprint: http://dasalte.ccc.de/biometrie/fingeradbdruck_kopieren.en
FAR/FRR Graph: http://www.securitysales.com/article/knowing-how-biometrics-can-be-beaten-helps-you-win
Entrust Blog:
http://www.entrust.com/bypassing-fingerprint-biometrics-nothing-new/
iOS Authenticate with Touch ID: https://developer.apple.com/library/ios/documentation/LocalAuthentication/Reference/LocalAuthentication_Framework/
5778 К? Пф! У нас градус знаний зашкаливает!