Показать/Скрыть содержание

    Контроль целостности мобильных приложений

    КриптоПро Ключ распространяется в соответствии с требованиями раздела 3 документа "ЖТЯИ.00118-01 95 01. Правила пользования". Установка клиентского компонента (мобильного приложения) КриптоПро Ключ на мобильное устройство пользователя может быть осуществлена только в случае подтверждения целостности полученного мобильного приложения и входящего в его состав SDK в соответствии с настоящим разделом.

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

    1. Реализация контроля целостности при встраивании SDK в мобильное приложение (iOS, Android) - выполняется разработчиком собственного мобильного приложения.

    2. Проведение контроля целостности после публикации приложения (iOS, Android) - выполняется разработчиком мобильного приложения (испытательной лабораторией).

    3. Проверка целостности приложения, устанавливаемого конечным пользователям - выполняется Администратором (безопасности) или конечным пользователем.

    Проверка целостности приложения, устанавливаемого конечным пользователям

    На ПК администратора/пользователя для контроля целостности МП, предназначенного для использования под управлением ОС iOS, необходимо установить ПО iMazing, в случае использования ОС семейства Windows установить ПО Git.

    Для контроля целостности МП, предназначенного для использования под управлением ОС Android, на ПК администратора/пользователя необходимо установить утилиту командной строки Android Device Bridge (ADB) и архиватор (WinRAR).

    Перед проведением контроля целостности необходимо получить доверенным образом средство контроля целостности (cpverify) из состава КриптоПро CSP.

    Проверка целостности мобильного приложения для ОС iOS со встроенным SDK

    Для проверки целостности мобильного приложения (МП), скачиваемого из магазина приложений (App Store), пользователю необходимо провести следующие действия:

    1. Скачать и установить МП на iPhone;

    2. Получить ipa-файл МП одним из следующих способов:

    С использованием ПО iMazing:

    • iPhone подключить к ПК (в случае Windows дать согласие iPhone на доверие компьютеру) через USB-соединение;
    • Запустить ПО iMazing и выбрать подключенное устройство с выбором пункта «Управление приложениями»;

    • Выбрать МП из списка и через контекстное меню выбрать команду «Загрузить в библиотеку». При необходимости может потребоваться ввести Apple ID и пароль в открывшемся окне;

    • Через контекстное меню выбрать ставшую активной команду «Экспорт .IPA». При необходимости может потребоваться ввести Apple ID и пароль в открывшемся окне;

    Примечание

    В случае невозможности попытки получения ipa-файла с использованием ПО iMazing следует воспользоваться ПО Apple Configurator (доступно только для ОС MacOS).

    С использованием ПО Apple Configurator:

    • iPhone подключить к ПК через USB-соединение или Type-C-соединение;
    • Запустить ПО Apple Configurator и выбрать подключенное устройство с выбором пункта «Apps» («Приложения»). При необходимости может потребоваться ввести Apple ID и пароль в открывшемся окне;

    • Для МП через контекстное меню выбрать команду «Add»;

    • Выбрать необходимый путь и сохранить ipa-файл.

    3. Получить скрипт verifier.sh для проверки КЦ, опубликованный разработчиком мобильного приложения;

    4. Поместить в одну директорию скрипт verifier.sh и cpverify;

    5. Запустить скрипт verifier.sh с указанием сохраненного ранее ipa-файла:

    ./verifier.sh APP.ipa
    ...
    Verification successful
    

    6. При успехе отобразится результат проверки КЦ – «Verification successful», иначе искаженный файл и статус – «Checksum mismatch!»:

    File 'Payload/Client.app/<filename>' is corrupted
    Checksum mismatch!
    Verification successful
    

    В случае запуска скрипта verifier.sh в ОС Windows необходимо выполнить следующее (требуется ПО Git):

    1. Поместить в одну директорию скрипт verifier.sh и cpverify.exe;

    2. Запустить скрипт verifier.sh с указанием сохраненного ipa-файла с использованием исполняемого файла bash.exe, входящего в состав ПО Git:

    <Полный путь bash.exe> verifier.sh APP.ipa 
    

    3. При успехе отобразится результат проверки КЦ – «Verification successful», иначе искаженный файл и статус – «Checksum mismatch!»:

    File 'Payload/Client.app/<filename>' is corrupted
    Checksum mismatch!
    Verification successful
    

    Проверка целостности мобильного приложения для ОС Android со встроенным SDK

    Для проверки целостности МП, скачиваемого из магазина приложений, необходимо провести следующие действия:

    1. Установить МП на устройство с ОС Android;

    2. Подключить устройство к ПК по USB-кабелю;

    3. Для вывода всех установленных на Android устройстве apk-файлов ввести в командной строке следующую команду:

    adb shell pm list packages
    

    4. В списке всех установленных на Android устройстве apk-файлов найти необходимый пакет и скопировать полное название пакета (без префикса «package:»);

    5. Выполнить поиск расположения apk-файла на Android устройстве следующей командой:

    adb shell pm path <Полное наименование apk-файла>
    

    Для оптимизации поиска можно воспользоваться утилитой findstr, при наличии части названия apk-файла:

    adb shell pm list packages -f |findstr <Часть наименования apk-файла>
    

    6. Скопировать полный путь расположения apk-файл (без префикса «package:»);

    7. Скачать apk-файл на ПК:

    adb pull <Полный путь расположения apk-файла>
    

    8. Распаковать apk-файл с использованием архиватора;

    9. Вычислить значения хэш-функции (в соответствии с ГОСТ 34.11-2012 с длиной хэша 256 битов) для всех файлов classes[n].dex и *.aap (модули, содержащие код приложения) с помощью команды:

    cpverify -mk <file> -alg GR3411_2012_256
    

    10. При успешной проверке контроля целостности следующие хэш-значения должны быть равны:

    • хэш-значение, записанное в файле <name> в ресурсах apk-файла по пути <Path>;
    • хэш-значение, вычисленное на предыдущем шаге;
    • зафиксированное ранее при проверке разработчиком мобильного приложения эталонное хэш-значение.
    В начало © ООО "КРИПТО-ПРО", 2000–2025