Контроль целостности
В целях исключения рисков модификации исполняемого кода SDK и разработанного с его использованием мобильного приложения предусмотрен механизм контроля целостности, включающий в себя следующие этапы.
1. Реализация контроля целостности при встраивании SDK в мобильное приложение - выполняется разработчиком собственного мобильного приложения.
2. Проведение контроля целостности после публикации приложения - выполняется разработчиком мобильного приложения (испытательной лабораторией).
3. Проверка целостности приложения, устанавливаемого конечным пользователям - выполняется Администратором (безопасности) или конечным пользователем.
Реализация контроля целостности при встраивании SDK в мобильное приложение
При встраивании Ключ SDK в собственное мобильное приложение требуется предусмотреть следующие процедуры контроля целостности, обеспечиваемые средствами встраиваемого в мобильное приложение СКЗИ «КриптоПро CSP» и Ключ SDK.
Примечание
В случае ошибки при тестировании или обнаружения нарушения целостности выполнение криптографических функций СКЗИ будет заблокировано.
1. Пусковой контроль целостности. Выполняется при запуске приложения. Необходимо корректным образом настроить сборку мобильного приложения и предусмотреть вызов перечисленных в настройках сборки методов.
2. Регламентный контроль целостности.
Для выполнения предъявляемых требований в мобильное приложение
следует встроить кнопку, при нажатии на которую будет проверяться целостность приложения.
Кнопка должна использовать метод checkIntegrity
класса SDKFramework.
Пример реализации:
3. Автоматический контроль целостности. По умолчанию контроль целостности выполняется автоматически для SDK каждые 10 минут. Выполнение настроек встраивания приложения дополнительно активирует автоматический контроль целостности мобильного приложения каждые 10 минут. В случае если хотя бы один из модулей (SDK или приложение) не пройдет автоматический контроль целостности, будет отключена возможность использования криптографических функций, что делает невозможным установление защищенного соединения с сервером, подпись, подтверждение операций и т.д.
Проведение контроля целостности после публикации приложения
Порядок обеспечения целостности
Для исключения рисков преднамеренной и непреднамеренной модификации мобильного приложения (МП), загруженного в магазин приложений (далее - App Store), разработчику МП необходимо выполнить следующие действия в рамках проведения контроля целостности МП после публикации.
1. Зафиксировать исполняемый код МП перед загрузкой в магазин приложений.
2. После загрузки МП в магазин приложений осуществить контрольное скачивание МП и проверить соответствие значимых модулей скачанного МП зафиксированным на этапе 1.
3. Сформировать эталонные контрольные суммы для проверки целостности МП конечным пользователем (Администратором (безопасности)).
Перед проведением контроля целостности необходимо получить доверенным образом средство контроля целостности (cpverify) из состава КриптоПро CSP.
Для контроля целостности МП, предназначенного для использования под управлением ОС iOS, на персональном компьютере (далее – ПК) разработчика под управлением ОС Mac OS X необходимо установить следующее программное обеспечение:
- ПО iMazing;
- ПО Apple Configurator;
- ПО Frida, также ПО Frida требуется на jailbreak iPhone (права доступа суперпользователя);
- инструменты Frida: frida-tools и bagpak, вместо bagpak также можно воспользоваться frida-ios-dump.
Проверка соответствия опубликованного приложения и формирование эталонных контрольных сумм
Для контроля целостности МП, полученного из магазина приложений App Store, необходимо провести следующие действия:
- МП скомпилировать и собрать для публикации в App Store;
- Выполнить публикацию МП в App Store;
- Установить МП на iPhone с jailbreak;
- С использованием ПО Frida для получения раскодированного ipa-файла выполнить следующие действия:
- iPhone подключить к ПК (в случае Windows дать согласие iPhone на доверие компьютеру) через USB-соединение;
- Выполнить следующую команду (флаг
-U
для указания подключения по USB):
SSH_USERNAME=my_name SSH_PASSWORD=my_password bagbak -U APP
Аналогичные действия можно выполнить с использованием утилиты frida-ios-dump:
iproxy 2222 22
git clone https://github.com/AloneMonkey/frida-ios-dump
cd frida-ios-dump
. venv/bin/activate
pip3 install -r requirements.txt
python3 dump.py -u my_name -P APP
- Результатом выполнения команды будет раскодированный ipa-файл.
5. Сравнить секции исполняемого кода МП, загружаемого в App Store (п. 1), и полученного с использованием ПО Frida (п. 4); 6. При искажении или подмене кода выполнить удаление МП из App Store; 7. При неизменности сравниваемого исполняемого кода для получения ipa-файла выполнить следующие действия с использованием ПО iMazing:
- iPhone подключить к ПК через USB-соединение или Type-C-соединение;
Запустить ПО iMazing и выбрать подключенное устройство с выбором пункта «Управление приложениями»;
Для МП через контекстное меню выбрать команду «Загрузить в библиотеку» в разделе «Медиатека», при необходимости введите Apple ID и пароль в открывшемся окне;
- Через контекстное меню выбрать ставшую активной команду «Экспорт .IPA», при необходимости ввести Apple ID и пароль в открывшемся окне;
- Выбрать необходимый путь и сохранить ipa-файл.
Альтернативный способ с использованием ПО Apple Configurator:
- iPhone подключить к ПК через USB-соединение или Type-C-соединение;
- Запустить ПО Apple Configurator и выбрать подключенное устройство с выбором пункта «Apps» («Приложения»). При необходимости ввести Apple ID и пароль в открывшемся окне;
Для МП через контекстное меню выбрать команду «Add»;
Выбрать необходимый путь и сохранить ipa-файл.
8. Выполнить проверку соответствия раскодированных ipa-файлов: ранее полученного при помощи Frida в п. 4 и нового, полученного следующим образом:
- Привести jailbreak iPhone в начальное состояние (до установки МП на устройство);
- В случае использования ПО iMazing установить на iPhone ipa-файл, полученный в п. 7, с ПК, выбрав пункт «Установить файл .IPA» в разделе «Устройство»;
Примечание
В случае невозможности попытки получения ipa-файла с использованием ПО iMazing следует воспользоваться ПО Apple Configurator (подходит только для ОС MacOS).
В случае использования ПО Apple Configurator установить на iPhone ipa-файл, полученный в п. 7, с ПК, выбрав пункт «Add». Для выбора файла с ПК, а не из памяти устройства, необходимо воспользоваться пунктом «Choose from my Mac»;
Повторить шаги п. 4 для только что установленного МП;
- Сравнить новый раскодированный ipa-файл с ipa-файлом из п.4.
9. При успешном сравнении запустить скрипт create_verifier.sh
с указанием сохраненного на предыдущем шаге ipa-файла:
./create_verifier.sh APP.ipa
...
Verifier verifier.sh created successfully
Результатом работы скрипта create_verifier.sh
является сгенерированный скрипт verifier.sh
,
который содержит в себе эталонные контрольные суммы для проверки КЦ ipa-файла.
10. Опубликовать сгенерированный скрипт verifier.sh
для последующей проверки установленных приложений Администратором (безопасности) или пользователем.