цифровая Подпись приложений

ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ ЭЦП

Сейчас мы наблюдаем разгар баталий между компанией Apple и регуляторами нескольких государств, пытающихся заставить компанию открыть экосистему iOS для установки приложений из независимых от Apple источников. Аргументы Apple — целостность и безопасность системы. Антимонопольные органы, в свою очередь, ссылаются на свободу конкуренции и монополизацию рынка. В то же время у пользователей iOS существует ряд способов, позволяющих устанавливать приложения из сторонних источников. Некоторые из этих способов используются экспертами-криминалистами для того, чтобы устанавливать на iPhone агент-экстрактор, позволяющий добраться до файловой системы устройства.

Для чего эксперту-криминалисту может потребоваться установить на iPhone приложение в обход App Store? В первую очередь таким образом устанавливаются упомянутые приложения для извлечения данных; к ним относится, например, агент-экстрактор из состава iOS Forensic Toolkit. Кроме того, в обход App Store устанавливаются утилиты для взлома (джейлбрейка) iPhone. Ниже мы рассмотрим возможные варианты установки таких приложений.

Содержание
  1. Почему нельзя просто установить приложение на iPhone
  2. Почему Google хочет, чтобы разработчики переключились на подписание приложений с помощью Google Play?
  3. Мой ключ подписи приложения был сгенерирован много лет назад, и я боюсь, что его криптографическая сила больше не соответствует сегодняшним стандартам, или мне кажется, что произошла утечка моего ключа подписи приложения. Что я могу сделать для обновления?
  4. Мне нужен публичный сертификат для регистрации внешних сервисов, но у меня нет доступа к своему ключу. Что я могу сделать?
  5. Я потерял ключ, используемый для подписи артефактов релиза, которые я загружаю в Google Play. Какие у меня есть варианты?
  6. Подпись в режиме онлайн собственным сертификатом
  7. Отличаются ли артефакты, которые Google Play распространяет среди пользователей моего приложения, от тех, которые я создаю локально, кроме ключа, используемого для их подписи?
  8. Как я могу продолжать распространять свое приложение в других магазинах, если я хочу использовать подпись приложения в Google Play?
  9. Я занят работой над функционалом, и все это звучит сложно. Нужно ли мне переключаться на пакеты приложений для Android или использовать расширенные функции, такие как динамическая доставка?
  10. Я включил функцию подписи приложений в Google Play для своего приложения, но передумал и хотел бы загрузить ключ подписи приложений, хранящийся в инфраструктуре Google.
  11. Джейлбрейк
  12. Сервисы для подписывания приложений
  13. Как я могу получить доступ к последним артефактам, которые Google Play распространяет среди пользователей моего приложения?
  14. TestFlight
  15. Альтернативные магазины приложений онлайн
  16. AltDeploy и AltStore
  17. Как я могу быть уверен, что мой закрытый ключ не будет перехвачен при передаче его в Google Play?
  18. Как ключ защищен на остальной инфраструктуре Google? Как я могу быть уверен, что никто не имеет к нему доступа?
  19. Ключ загрузки, который я использовал для подписи своих артефактов, был украден. Какие у меня есть варианты?
  20. Подпись пакета обычным Apple ID
  21. Решение первое
  22. Полуофициальное
  23. Заключение

Почему нельзя просто установить приложение на iPhone

С точки зрения Apple, проблемы установки приложений на iPhone не существует: для этого достаточно воспользоваться штатным магазином App Store. В то же время экосистему Apple недаром называют «огороженным садом»: компания жёстко контролирует, что именно пользователь может, а что – не может устанавливать на свои устройства. И если пользователей macOS компания предпочитает особо не притеснять, то у пользователей мобильных устройств, работающих на iOS или iPadOS, степень свободы значительно меньше.

Почему же нельзя просто установить на устройство пакет приложения и запустить его? На современных мобильных платформах (даже Android не является исключением) можно запускать только код, подписанный цифровой подписью. Но если в телефон на Android можно установить пакет приложения, подписанный цифровым сертификатом без вмешательства в процесс компании Google, то в iOS ситуация сложнее: в процессе установки в «ручном» режиме (то есть, не из магазина приложений Apple App Store) пакет подписывается компанией Apple в момент установки, а уникальная для каждого устройства цифровая подпись разрешает запускать его лишь на том устройстве, для которого она была создана. Из этого правила есть исключения — сертификаты разработчика и сертификаты корпоративной дистрибуции, — о которых мы поговорим ниже. Для нас же важен следующий момент: цифровые подписи выдаёт (а время от времени и отзывает) компания Apple и никто более. В результате никакой неподписанный (точнее – подписанный «неправильной» цифровой подписью) код на устройстве выполняться не может.

Если есть ограничение, то должны быть и способы его обхода. Таких способов нам известно несколько; впрочем, далеко не все из них подойдут для целей мобильной криминалистики.

Приложения для Android имеют криптографическую подпись разработчика. С ее помощью менеджер пакетов на устройстве пользователя может проверить, что каждое обновление приложения происходит из одного и того же источника, и что оно не было подделано. Google Play также применяет эту проверку подписи, когда вы загружаете свой APK-файл на консоль Google Play, так что даже если бы у кого-то были ваши учетные данные для входа, было бы невозможно отправить вредоносное обновление, не имея также доступа к вашему закрытому ключу.

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

В настоящее время у разработчиков есть привлекательная альтернатива для управления ключами самостоятельно: подписание приложения на Google Play, где ключ загрузки (тот, который вы используете, чтобы загрузить свои артефакты в Google Play) и ключ для подписи приложения (который используется для подписи APK-файлов, распространяющихся на устройства) могут быть разными, и второй ключ хранится на Google инфраструктуре.

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

Вот почему я хочу развеять некоторые распространенные заблуждения относительно подписи приложений в Google Play, а также дать рекомендации по конкретным сценариям, с которыми вы можете столкнуться.

Этот совет основан на вопросах, которые наша команда по связям с разработчиками слышала на конференциях, в онлайн-форумах и наших чатах 1:1.

Давайте начнем с самой убедительной причины для перехода на подписание приложений с помощью Google Play:

Почему Google хочет, чтобы разработчики переключились на подписание приложений с помощью Google Play?

Первым приоритетом Google Play является создание безопасной и надежной платформы для миллиардов пользователей и миллионов разработчиков.

От этого зависит устойчивость и успех экосистемы. Большинство разработчиков не могут обеспечить тот уровень безопасности, который может предложить Google.

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

Например, ряд приложений, находящихся в настоящее время в Play Store, до сих пор не приняли более безопасную схему подписи v2. После регистрации в приложении подписи от Google Play приложения автоматически получают преимущества новых механизмов защиты и будущих улучшений, без необходимости работы разработчика.

И наконец, разделение формата публикации (с использованием пакетов приложений для Android) и формата обслуживания (разделенные APK) открывает преимущества как для разработчиков, так и для пользователей: от повышения безопасности до оптимизации, снижения сложности и фрагментации. Однако для этого Play должен иметь возможность подписывать обслуживающие артефакты.

Некоторые примеры функций, доступных прямо сейчас, — это автоматическая оптимизация размера для доставки приложений, а также новые настраиваемые параметры доставки модулей в вашем приложении.

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

Несмотря на то, что мы продолжаем совершенствовать наш стек обслуживания, мы не изменяем и не распространяем код вашего приложения без вашего ведома и одобрения, и новые оптимизации, которые выполняет Play, доступны для вашего контроля в bundletool с открытым исходным кодом. Далее в этом часто FAQ мы обсудим некоторые метаданные (те, которые не влияют на работу вашего приложения), которые вы можете увидеть между артефактами, загруженными из Play и созданными локально.

Что такое UDID устройства?

UDID – уникальный идентификатор устройства, состоящий из 40 символов. Используется при установке подписанных приложений и бета-версий прошивок.

Сообщение отредактировал directorgeneral — 29.07.16, 13:12

Как мне узнать мой UDID?

Инструкция в картинках

1. Откройте iTunes.2. Подключите своё устройство к компьютеру.3. Выберите своё устройство в верхнем меню.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

4. Откройте самую первую вкладку. Там вы увидите поле «Серийный номер» как на скриншоте.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

5. Нажмите на этот серийный номер, и на его месте появится UDID.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

Сообщение отредактировал The1Day — 17.10.16, 13:20

Как работает данный метод?

Разработчик Apple на то и разработчик, что он делает приложения. И ему нужно как-то тестировать эти приложения до того, как он выложит их в AppStore. Вот разработчик и подписывает приложения, чтобы протестировать их на своем устройстве.

Таким образом, любой человек, имеющий сертификат разработчика может подписать любое приложение и установить себе на устройство. При этом данное приложение будет считаться девелоперским билдом.

Как получить сертификат?

Если Вы — разработчик

1. Создание запроса Apple

1. Запустите «Связку ключей».2. В настройках выключите(“Off”) Online Certificate Status Protocol (OSCP) и Certificate Revocation List (CRL).


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

4. Заполните все поля так же, как и при регистрации разработчика. Поле «CA Email Address» заполнять не надо. Выберите «Saved to disk» и «Let me specify key pair information».


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

5. Заполните все поля, как показано на рисунке.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

6. Файл CSR лежит у вас на рабочем столе.

2. Отправка CSR в Apple


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

3. Заберите файл .cer из «Certificates» и добавьте в «Связку ключей».

3. Создание сертификата .p12

1. Откройте «Связку ключей».2. Перейдите в раздел «Keys».3. Нажмите правой кнопкой мыши на ключе и выберите «Export».


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

4. Укажите формат(.p12), пароль и место сохранения.

Если Вы не разработчик1. Найдите разработчика, готового добавить Ваш UDID.2. Добавьте UDID к нему.3. Попросите у разработчика выслать Вам сертификат и файл профиля.

ЭЦП:  Браузер не видит эцп

Как добавить сертификат в связку ключей?

1. Двойной клик на сертификате.2. Введите пароль к сертификату.

Сертификат следует добавлять в связку «Система».

Как добавить сертификат в UDK?

1. Запустите «Unreal iOS Configuration»


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

2. Перейдите на вкладку «Already a registered iOS developer».


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

3. Добавьте .mobileprovision.

4. Добавьте сертификат, введите пароль к нему.

4. Измените данные в Info.plist. Можно написать все, что угодно, нам это все равно не понадобится.

5. Нажмите «Ready to Package»

Домашняя страница: iGuides.ruРазработчик: ILYA2606 (основано на исходниках)

2. Вручную напишите имя сертификата разработчика из связки ключей.

3. Выберите подписываемые ipa.

4. Дождитесь окончания операции. Подписанные ipa будут лежать в папке с оригиналами(-подписанный).

Сообщение отредактировал directorgeneral — 29.07.16, 13:13

Домашняя страница: http://instasign.uhelios.com/

2. Выберите имя сертификата.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

3. Перетащите нужные ipa.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

Домашняя страница: iMZDL.com

1. Запускаете программу.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

3. Нажимаете «Certificate Chooser» и выбираете свой сертификат в меню.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

5. Переносите ipa-файл в окно приложения.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

6. Нажимаете «Start Job» и ждёте окончания подписи.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

Сообщение отредактировал The1Day — 17.10.16, 13:21

Подпись под ОС Windows

Unreal Development Kit(UDK) — среда разработки игр и приложений на движке Unreal Engine.

1. Добавьте сертификат в UDK.2. Запустите «Signing Tool»


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

3. Выберите подписываемый .ipa


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

4. Если нужно, укажите .mobileprovision файл.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

6. Дождитесь окончания операции.

Пока подписываются только игры и приложения, написанные на Unreal Engine. Infinity Blade, например.

Конвертирование *.deb в *.ipa

Для конвертирования нам понадобится программа InstaSign.

Домашняя страница: instasign.uhelios.com

2. Перетащите нужный .deb в окно программы.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

4. Дождитесь окончания операции. Заберите полученный ipa.

Конвертированные таким способом deb файлы без каких-либо проблем установятся на устройство после подписи с помощью iModSign или iOS App Signer. Но если для работы им нужен доступ к файловой системе или другим функциям, доступным лишь после джейлбрейка, корректно работать они не будут!

Сообщение отредактировал The1Day — 24.05.17, 19:12

Добавление файла .mobileprovision в устройство

Есть два способа установки .mobileprovision: с помощью iTunes или непосредственно на устройстве.

С помощью iTunes1. Перетащите файл .mobileprovision на ярлык iTunes


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

2. Нажмите «Установить». Подтвердите установку.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

Сообщение отредактировал directorgeneral — 29.07.16, 13:14

Сообщение отредактировал directorgeneral — 29.07.16, 13:15

спасибо за инструкцию)проблема в подписи через UDKпишет Error Недопустимые данные на корневом диске,строка 1,позиция 1что делать?

moriak, в этом вся проблема. Пока можно подписывать только приложения написанные в UDK, то есть на Unreal Engine. Infinity Blade, например.

Сейчас времени нет заниматься этим — вот исходники IPhonePackager.zip ( 680.89 КБ )

Сообщение отредактировал xGETSx — 26.02.12, 17:03

Iphoto подписанный работает у кого нибудь?

Да, у меня работает. На 5.1. На прошивках ниже вылетает.

ага все норм,видимо крякнули кривоа photoshop touch работает?я все версии перепробовал,висит на заставке и дальше не идет(

Кто сможет поделиться своим сертификатом и добавить мой UDID? Либо как создать «липовый», чтоб не платить 99$?

Сообщение отредактировал basy56 — 31.03.12, 22:04

Мой ключ подписи приложения был сгенерирован много лет назад, и я боюсь, что его криптографическая сила больше не соответствует сегодняшним стандартам, или мне кажется, что произошла утечка моего ключа подписи приложения. Что я могу сделать для обновления?

Без подписи приложения в Google Play: как уже упоминалось ранее, вы не можете просто переключиться на новый ключ, так как это будет означать, что ваши существующие пользователи не смогут получать обновления приложений. Вы должны либо продолжать использовать существующий ключ и рисковать безопасностью данных ваших пользователей, либо начать новую запись приложения с нуля.

С подписью приложения в Google Play: если вы используете слабый ключ или ваш ключ был скомпрометирован, вы можете обновить его для новых установок.

Это осуществляется путем доставки APK, подписанных вашим устаревшим ключом, существующим пользователям, когда они обновляют приложение, в то время как новые установки приложений получают APK, подписанные обновленным безопасным ключом.

Рассмотрите включение подписи приложения сейчас и как можно скорее переключитесь на использование отдельного ключа загрузки, что снизит вероятность компрометирования ключа подписи приложения.

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

Обратите внимание, что текущий процесс обновления ключа не использует преимущества функции ротации ключа, введенной в Android 9 (Pie) и выше. В настоящее время мы изучаем поддержку ротации ключей с помощью подписи приложения версии 3 для устройств на этих версиях ОС и сообщим об этом сообществу разработчиков, как только оно будет готово, в отдельном объявлении.

Мне нужен публичный сертификат для регистрации внешних сервисов, но у меня нет доступа к своему ключу. Что я могу сделать?

Если вы хотите использовать сервисы или API, которые требуют регистрации с хэшем публичного сертификата вашего приложения, вы можете просмотреть или загрузить “отпечатки пальцев” публичного сертификата из раздела “App signing“ консоли Google Play:

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

Большинство сервисов позволяют включить несколько сертификатов для приложения, поэтому вы можете продолжить тестирование с локально построенными APK, а также APK, генерируемыми Google Play.

Я потерял ключ, используемый для подписи артефактов релиза, которые я загружаю в Google Play. Какие у меня есть варианты?

Без подписи приложения в Google Play: благодаря защите безопасности, встроенной в Android, без ключа вы или Google ничего не можете сделать для продолжения обновления вашего приложения. Ваш единственный вариант — это создать новый список с новым именем пакета и начать с нуля.

С подписью приложения в Google Play: вы можете запросить новый ключ загрузки. Play сможет продолжать подписывать обновления вашего приложения с помощью ключа подписи приложения, который надежно хранится в Google.

Если бы я назвал одну причину, которая говорит за принятие подписи приложения, то это была бы та, что выше. Но прежде чем мы пойдем дальше и поговорим о конкретных сценариях, которые этот метод может помочь исправить (есть и другие!), давайте сначала сделаем паузу, чтобы ответить на мета-вопрос:

Подпись в режиме онлайн собственным сертификатом

ВНИМАНИЕ: мы ни в коем случае не рекомендуем пользоваться сервисами, для работы которых требуется передать собственный сертификат на удалённый сервер. Перед тем, как это сделать, просто подумайте, откуда берутся многочисленные «утечки» сертификатов, которые впоследствии используются пиратскими магазинами приложений и онлайновыми сервисами по установке IPA.

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


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

Помимо собственно файла IPA, сервис затребует сертификат p12 для подписи, пароль и файл provisioning. Сервис работает просто: достаточно предоставить файл IPA для подписи, сертификат, пароль сертификата, файл mobile provisioning. Сервис выдаст QR-код, отсканировав который на iPhone, можно установить подписанный IPA без связи с компьютером. Детали реализации неизвестны.

Отличаются ли артефакты, которые Google Play распространяет среди пользователей моего приложения, от тех, которые я создаю локально, кроме ключа, используемого для их подписи?

Как уже говорилось ранее, Play не будет изменять функциональность вашего приложения без вашего ведома и одобрения. Однако он вставляет небольшое количество метаданных, которые помогают проверить источник и целостность распространения. Эти метаданные бывают двух видов:

• Для всех приложений, загруженных в Google Play, Play добавлял метаданные безопасности после блока подписи, чтобы включить такие функции, как авторизованный обмен приложениями P2P. Мы объявили об этом первоначально в своем блоге в 2017 году.

• Для приложений, загруженных в виде пакетов приложений, мы улучшим безопасность, введя так называемый штамп источника. Эти исходные метаданные вставляются в манифест приложения с помощью bundletool. Когда APK генерируется на сервере Play, он также подписывается с помощью ключа Google в дополнение к вашему ключу подписи приложения.

Это означает, что метаданные безопасности не могут быть удалены или изменены без аннулирования подписи Google. Такой подход дает сигнал высокой уверенности в том, что немодифицированные АПК, содержащие исходный штамп, пришли из Google Play.

Вы можете локально использовать bundletool с открытым исходным кодом для генерации APK из пакетов точно так же, как это делает Play на сервере. Метаданные исходного штампа, добавленные bundletool, не будут подписаны ключом Google. Другие исходные подписи будут возможны, когда ApkSigner будет обновлен со следующим выпуском Android.

Как я могу продолжать распространять свое приложение в других магазинах, если я хочу использовать подпись приложения в Google Play?

Приложения можно распространять несколькими способами и по разным каналам. Есть несколько соображений, которые вы должны иметь в виду, в зависимости от того, является ли это приложение новым или существующим.

Для новых приложений вы можете использовать отдельные ключи подписи для каждого канала распространения, а Google будет генерировать ключ, используемый Google Play для вас. Это самый безопасный способ для приложений, распространяемых в Play, так как ключ никогда не покидает серверы Google, что сводит вероятность того, что кто-то перехватит ключ, почти к нулю.

Кроме того, для тех, кто не хочет управлять несколькими ключами, но все еще использует преимущества безопасности подписи приложений в Google Play, мы скоро предоставим возможность загружать подписанные универсальные APK из проводника пакетов приложений и распространять их в других магазинах.

Для существующих приложений: если вы уже используете один ключ для разных магазинов, при желании вы можете продолжать это делать. При включении входа в приложение в Google Play вам будет предложено загрузить существующий ключ.

При необходимости вы можете рассмотреть функцию обновления ключа, упомянутую ранее, чтобы со временем отказаться от совместного использования ключа, используемого Google Play, с другими каналами распространения.

Есть одно предостережение, которое приходит вместе с вышеприведенным советом: пожалуйста, обратите внимание, что если вы решите использовать отдельные ключи подписи для разных магазинов, ваши пользователи не смогут перекрестно обновлять приложение между различными каналами распространения. Например, когда кто-то изначально установил приложение через другой магазин, а затем пытается обновить его через Play. Они должны будут удалить и установить приложение снова.

ЭЦП:  ПОДКЛЮЧЕНИЕ К СТОИМОСТИ СМЭВ

Я занят работой над функционалом, и все это звучит сложно. Нужно ли мне переключаться на пакеты приложений для Android или использовать расширенные функции, такие как динамическая доставка?

Нет, вы не должны делать все сразу.

Вы можете выбрать подписание приложений от Google Play и продолжить публикацию APK. Когда вы будете готовы, вы можете начать публиковать пакеты приложений для Android.

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

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

Если вы хотите начать использовать подпись приложений, но ваши менеджеры или команды по безопасности нуждаются в объяснении преимуществ и предостережений касательно подписи приложений, то покажите им эту статью.

Перевод: Лебедев Даниил.

Еще больше полезной и нужной информации вы найдете в нашем Телеграм-канале по ссылке:

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

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

Если вы предвидите ситуацию, в которой вам потребуется постоянный доступ к ключу подписи вашего приложения, вам следует сделать следующее при включении подписи приложения:

· Не выбирайте опцию, в которой Google Play создает ключ подписи приложения за вас. Вместо этого создайте свой ключ подписи локально на вашем компьютере.

· Надежно перенесите свой ключ в Google Play и не удаляйте его с вашего компьютера.

· Храните ключ в надежном месте, чтобы он не просочился к третьим лицам.

· Убедитесь, что вы регулярно создаете и тестируете резервные копии своего ключа, так как в случае его потери вы не сможете загрузить его из Google.

Эти шаги описаны в документации. В инструкции о том, как ”выбрать существующее приложение”, показано, как зашифровать свой ключ подписи, чтобы загрузить его на консоль Google Play из Android Studio или командной строки.

Если вы абсолютно уверены, что вам не понадобится постоянный доступ к ключу подписи вашего личного приложения, мы рекомендуем вам либо разрешить Play генерировать ваш ключ (для новых приложений), либо удалить свою копию после передачи ее в Play и переключиться на использование ключа загрузки.

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

Джейлбрейк

Для взломанных устройств доступно несколько магазинов приложений: Cydia и Sileo, а также Zebra и Installer 5. У разработчиков джейлбрейков, как правило, есть рекомендованный магазин приложений, который и будет установлен на устройство после взлома. Для чего нужны магазины приложений в процессе криминалистического анализа? Некоторые джейлбрейки не имеют встроенного сервиса SSH, и его требуется доустановить из магазина приложений. Как правило, устанавливается приложение OpenSSH.

На взломанных устройствах нет ограничений, связанных с использованием персональных профилей. Можно устанавливать любое количество приложений; не будет и ограничений по времени работы.

Сервисы для подписывания приложений

Существуют и платные сервисы, которые подпишут IPA и установят его на iPhone. Сам факт того, что сервис стоит денег, ни в коем случае не означает его легальности или лицензионной чистоты: напротив, подобные сервисы не брезгуют монетизировать краденый и взломанный контент. Напомним, что мы ни в коем случае не рекомендуем пользоваться любыми сервисами, для работы которых требуется передать собственный сертификат на удалённый сервер, какими бы убедительными не выглядели обещания немедленно удалить сертификат после использования.

Сервис IPAWind позволяет не только подписывать пакеты, но и в некоторых пределах редактировать манифест. В свою очередь это позволяет устанавливать дубликат приложения (например, иметь на iPhone два WhatsApp), а также включать опцию iTunes Sharing, которая сделает рабочие файлы приложения доступными через iTunes.

Сервис AppDB, с одной стороны, предлагает каталог взломанных приложений, но есть и возможность подписать собственный IPA. Для установки приложений через этот сервис требуется привязка устройства. Подобным же образом работает сервис Signulous.

Как я могу получить доступ к последним артефактам, которые Google Play распространяет среди пользователей моего приложения?

Есть несколько вариантов, доступных для вас:

• В целях тестирования вы можете использовать внутреннюю ссылку на общий доступ к приложению для любой исторической версии вашего приложения из проводника пакетов приложений консоли Google Play. Нажатие на ссылку на устройстве приведет к установке APK, которые Play Store установит в prod для этого устройства.

• Вы также можете загрузить подписанные APK-файлы для конкретных устройств из проводника пакетов приложений консоли Google Play.

TestFlight

TestFlight – это сервис тестирования iOS-приложений и одноимённое приложение, которое пользователь может установить на своё устройство. С технической точки зрения TestFlight упрощает дистрибуцию тестовых сборок, облегчая процесс сбора кодов тестовых устройств (UDID) и позволяя распространять сборки среди зарегистрированных участников тестирования. До бесконечности тестовыми сборками пользоваться нельзя; рано или поздно сертификат истекает, и пользователю приходится или обновляться на официальную версию приложения, или устанавливать свежую тестовую сборку, которую предоставит разработчик.

Сервисом TestFlight могут воспользоваться как корпоративные, так и частные разработчики. В последнем случае будет ограничение на максимальное число участников бета-тестирования – не более сотни UDID в год. Удаление UDID из программы не освобождает слот. Некоторые разработчики пользуются этим сервисом для дистрибуции ПО, которое по тем или иным причинам не принимают в App Store.

Альтернативные магазины приложений онлайн

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

Первый такой вариант – сторонние магазины приложений. Все подобные решения характеризуются простотой установки и использования (открыть страницу магазина в Safari – нажать на кнопку – получить на устройство альтернативный магазин приложений; подтвердить сертификат – можно работать). Есть как платные, так и бесплатные варианты. Среди подобных магазинов отметим Ignition — специализируется на утилитах джейлбрейка, твиках и патченных приложениях. Именно на этот сервис чаще всего ссылаются разработчики джейлбрейков в инструкциях по установке.

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

Какие риски возможны при использовании подобных сервисов? Отозванный Apple сертификат может привести к невозможности запуска установленного приложения. Техническая возможность модифицировать приложения на стороне сервиса означает вероятность получить вместе с установленной программой неприятный «довесок», который (в случае старых версий iOS) может даже взломать устройство.

AltDeploy и AltStore

Распространённый способ установки приложений из сторонних источников — AltDeploy и AltStore.

AltStore – интересный и распространённый способ для установки неофициальных приложений и эмуляторов на устройства с iOS без джейлбрейка. С инструкциями по установке можно ознакомиться на сайте проекта.

В сравнении с онлайновыми магазинами приложений AltStore – действительно достойная альтернатива. Есть возможность проконтролировать происхождение пакета IPA, а подписан он будет персональным сертификатом пользователя, который не может быть аннулирован Apple, как это часто происходит с альтернативными магазинами приложений.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

Недостатков у этого решения достаточно. Во-первых, если используется персональный сертификат, то вы получаете все минусы персональных сертификатов: ограничение на число установленных приложений (не более трёх) и время их работы (не более 7 дней). Разумеется, использование сертификата разработчика снимает это ограничение — но если у вас есть такой сертификат, то и необходимости в установке AltStore нет никакой.

Во-вторых, необходимость установки и настройки как приложения iTunes с включённой синхронизацией через Wi-Fi, так и серверной части AltServer (которая будет использоваться, чтобы автоматически переподписывать установленные приложения каждые 7 дней).


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

Стоят ли усилия того, чтобы установить на устройство до трёх сторонних утилит? Сомнительно. А вот совместно с учётной записью разработчика это уже вполне может иметь смысл для установки приложений, которых нет и не будет в официальном App Store.

AltDeploy — фактически, форк AltStore. В отличие от AltStore, который устанавливается на само устройство с iOS, AltDeploy позволяет установить и подписать приложение непосредственно с компьютера. При этом требуется компьютер с macOS и преодоление традиционных для AltServer сложностей с установкой. Подробные инструкции по установке.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

Как я могу быть уверен, что мой закрытый ключ не будет перехвачен при передаче его в Google Play?

Если вы включаете подпись приложения для нового приложения и выбираете опцию создания нового ключа в консоли Google Play, ключ никогда не передается и генерируется непосредственно на защищенном сервере Google.

Если вам нужно передать существующий ключ подписи (необязательно для новых приложений и обязательно для существующих приложений), вы всегда делаете это в зашифрованном виде. Независимо от того, экспортируете ли вы ключ из Android Studio или из командной строки, вы будете использовать инструмент шифрования закрытого ключа Play (PEPK) локально на вашем компьютере перед передачей ключа.

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

Используйте только версии PEPK, загруженные с консоли Google Play, никогда не загружайте его или его источник с непроверенных сторонних веб-сайтов.

Как ключ защищен на остальной инфраструктуре Google? Как я могу быть уверен, что никто не имеет к нему доступа?

Когда вы используете подпись приложения в Google Play, ваши ключи хранятся в той же инфраструктуре, где и Google хранит свои собственные.

Доступ к ключам регулируется строгими ACL и аудиторскими следами с защитой от несанкционированного доступа для всех операций.

ЭЦП:  СУБЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ КОМПЬЮТЕРНАЯ ПРОГРАММА

Все артефакты, созданные и подписанные ключом разработчика, становятся доступными в консоли Google Play для проверки/аттестации.

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

Ключ загрузки, который я использовал для подписи своих артефактов, был украден. Какие у меня есть варианты?

Без подписи приложения в Google Play: нет никакой концепции отдельного “ключа загрузки”, поэтому, если ваш ключ подписи выпуска утечет, вы можете оказаться в большой беде: кто-то может создать вредоносные или несанкционированные версии вашего приложения, которые будут неразличимы (и обновляемы!) от вашего оригинального APK.

Конечно, защита учетной записи Google применяется к доступу к консоли Google Play (и мы рекомендуем разработчикам включить 2-ступенчатую проверку), поэтому злоумышленнику все равно придется найти способ обмануть пользователя, чтобы он загрузил такой измененный APK. Тем не менее безопасность вашего приложения ослаблена.

Обратитесь к вопросу 3 о скомпрометированном ключе подписи приложения, чтобы узнать, какие исправления доступны, а также как обновить ключ для новых установок.

С подписью приложения в Google Play: если ваш ключ загрузки отделен от ключа подписи приложения (рекомендованный вариант), и просочился только первый, то данные ваших пользователей будут в безопасности — одного ключа загрузки недостаточно, чтобы подменить APK, подписанные ключом подписи приложения. Просто запросите новый ключ загрузки.

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

Подпись пакета обычным Apple ID

Как подписать пакет приложения обычным Apple ID, не зарегистрированным в программе Apple для разработчиков? До 2019 года существовала малоизвестная опция с некоторыми ограничениями: подписанное таким образом приложение работало только 7 дней, а установить на одно устройство можно было не более трёх подписанных персональными сертификатами приложений. Три года назад в Apple изменили соответствующие API, после чего существующие инструменты (в частности — Cydia Impactor) перестали работать с персональными сертификатами. Однако сама возможность — по крайней мере, на компьютерах с macOS, — сохранилась, хоть и обставлена рядом ограничений

Способ для экспертов-криминалистов

В iOS Forensic Toolkit в редакции для компьютеров Mac используется способ, позволяющий устанавливать приложение агента-экстрактора на устройства под управлением iOS без обязательной регистрации в программе для разработчиков. Новый способ работает только с компьютеров под управлением macOS, и поддерживается исключительно в версии iOS Forensic Toolkit для Mac. Пользователям редакции для Windows по-прежнему доступна только работа с учётной записью для разработчиков; в качестве опции этот режим остался доступен и для пользователей редакции для Mac.

Способ полностью прозрачен: для установки агента-экстрактора в iOS Forensic Toolkit используется та же процедура, что и с учётной записью разработчика. Разница в том, что для запуска установленного приложения на iPhone нужно будет открыть приложение «Настройки» и подтвердить цифровой сертификат. В процессе устройство выходит в сеть интернет, что нарушает криминалистическую чистоту исследования. Подробности — в статье Извлечение данных из iPhone без учётной записи для разработчиков.

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


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

nullximpactor — фактически, альтернатива Cydia Impactor, работающая только на macOS, но позволяющая использовать для подписи обычные учётные записи. Для подписи приложения используется код AltServer.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

Этот способ доступен только macOS; требуется начальная настройка AltDeploy; остаются все ограничения персональной учётной записи (приложение будет работать не дольше 7 дней, а установить можно не более трёх приложений).


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

iOS App Signer — решение, принципиально отличающееся от всех остальных программ подобного назначения. i OS App Signer использует для подписи IPA штатную среду разработки Xcode, обходя при этом требование учётной записи разработчика (впрочем, семидневное ограничение или ограничение на число установленных таким образом приложений разработчикам обойти не удалось).

Пользоваться iOS App Signer достаточно сложно, но на GitHub есть подробные инструкции.


ЦИФРОВАЯ ПОДПИСЬ ПРИЛОЖЕНИЙ

Достоинства решения оригинальном методе, не требующием установки AltDeploy. Недостатки: только macOS; требуется Xcode; сложно настраивать; ограничения персональной учётной записи.

Решение первое

Самый простой и гарантированно работоспособный способ – одно из официальных решений. Приложения можно устанавливать, минуя App Store, но путь этот тернист, а для обычного пользователя – недоступен.

Корпоративная дистрибуция (enterprise-сертификат)

Один из официальных способов – различные варианты корпоративной и специальной дистрибуции. Так, в случае с корпоративной дистрибуцией клиент (образовательное учреждение или крупная компания – например, транспортная) регистрирует корпоративную учётную запись, получая возможность самостоятельно подписывать пакеты приложений и рассылать их на корпоративные устройства через MDM (Mobile Device Management).

Для подписи используется специальный enterprise-сертификат, срок действия которого, как правило, ограничен одним годом, зато отсутствуют ограничения на число подписываемых им приложений. При первом запуске подписанного таким сертификатом приложения пользователю (если его устройство не было заранее настроено компанией-владельцем) нужно будет открыть настройки и добавить сертификат в список доверенных. В этот момент устройство свяжется с сервером Apple, который и выдаст (или не выдаст; об этом — ниже) разрешение на это действие. Процедура подробно описана на сайте Apple.

В чём подвох? Их сразу несколько. Во-первых, в программе корпоративной дистрибуции могут участвовать организации, но не частные лица. Во-вторых, участие в программе – платное. Наконец, при использовании этого способа Apple сохраняет контроль над тем, разрешить ли запуск приложения на конкретном устройстве. Если Apple решит, что выданный организации enterprise-сертификат используется с нарушением лицензионного соглашения, этот сертификат будет моментально отозван, и подписать с его помощью вновь устанавливаемые приложения не удастся. Подобные сертификаты регулярно «утекают» и используются различными «альтернативными магазинами приложений» для подписи IPA, что и является частой причиной отзыва таких сертификатов. Это может произойти буквально в любой момент:

После проверки программы в первый раз устройство iPhone, iPad или iPod touch должно периодически перепроверять сертификат разработчика для поддержания доверия. Если перепроверить не удается, возможен вывод сообщения о том, что проверка скоро истечет. Для поддержания доверия подключите устройство к Интернету и нажмите кнопку «Проверить программу» или запустите саму программу.

Если сертификат был отозван, то на устройстве мгновенно перестанут работать все ранее установленные посредством отозванного сертификата приложения; нельзя будет установить и новые приложения, подписанные таким сертификатом.

Специальная дистрибуция для разработчиков (developer-сертификат)

Альтернативный вариант – специальная дистрибуция для участников программы Apple для разработчиков. Именно этот способ мы усиленно рекомендуем для установки агента-экстрактора на исследуемые устройства. Её основное предназначение – тестирование разработчиками программ собственного производства на своих же устройствах; соответственно, для её использования нужна учётная запись разработчика (Apple Developer Account). В рамках специальной дистрибуции возможно пакетирование: одну и ту же сборку можно подписать сразу для сотни устройств.

Рекомендованный способ установки приложений (например, агента-экстрактора из состава Elcomsoft iOS Forensic Toolkit) — регистрация в программе Apple для разработчиков.

У этого способа есть как несомненные преимущества, так и недостатки в сравнении с методом корпоративной дистрибуции.

В достоинства запишем в первую очередь тот факт, что приложение просто устанавливается и запускается; нет необходимости подтверждать сертификат, как нет и необходимости каждый раз для установки приложения связываться с сервером Apple. Отсюда следует возможность установить приложение на iPhone, у которого отсутствует подключение к сети – в полностью офлайновом режиме, что важно в процессе криминалистического анализа iPhone.

Второе достоинства метода – это его доступность для обычного пользователя. Участие в программе стоит 99 американских долларов в год, а учётная запись разработчика позволит устанавливать приложения на устройства числом до сотни ежегодно. Обратите внимание: удаление ранее зарегистрированного в программе устройства из учётной записи не высвобождает один из ста слотов; при достижении максимального числа устройств придётся или ждать, пока освободится один из слотов, или регистрировать ещё одну учётную запись за дополнительные деньги.

Недостаток метода – открыть учётную запись для разработчика частному лицу непросто из-за искусственных сложностей, установленных Apple. Об использовании одноразовых Apple ID можно забыть: Apple верифицирует данные и может отказать в регистрации без объяснения причин. Максимальные шансы получить регистрацию — при использовании ненового Apple ID, в котором указан реальный адрес (тот же, к которому привязана платёжная карта); наличие платёжной активности и истории покупок с учётной записи повышает шансы. Несмотря на это, гарантии того, что учётную запись в программе для разработчиков зарегистрируют – нет; Apple часто отказывает без указания причин.

На этом официальные способы заканчиваются, и начинаются полуофициальные.

Полуофициальное

Недостаток один: обязательно нужна учётная запись Apple ID, зарегистрированная в программе Apple для разработчиков. Для подписи потребуется создать в учётной записи Apple ID так называемый «пароль приложения». Последовательность шагов такова:

После этого приложение сразу можно запускать. Обратите внимание: если вы пользовались Cydia Impactor несколько лет назад, то проделать эту процедуру можно было и с обычной учётной записью. В этом случае приходилось заходить в настройки устройства и подтверждать сертификат, для чего устройство выходило в интернет. Учётная запись для разработчика избавляет от лишнего шага: ничего дополнительно подтверждать в настройках не нужно.

Elcomsoft iOS Forensic Toolkit использует аналогичный механизм для установки на iPhone агента-экстрактора, посредством которого осуществляется связь с компьютером, извлечение файловой системы и расшифровка связки ключей. Установка осуществляется непосредственно; в использовании Cydia Impactor необходимости нет.

Способ корректный, но небесплатный. Существует ли возможность использовать для подписи IPA обычные Apple ID, не зарегистрированные в программе для разработчиков? Такая возможность существует, но такое использование обставлено рядом ограничений.

Заключение

Участие в программе Apple для разработчиков — единственный рекомендуемый нами способ установки сторонних приложений. Для пользователей компьютеров Mac в нашем продукте iOS Forensic Toolkit доступен альтернативный способ, позволяющий установить приложение агента-экстрактора с использованием обычного Apple ID. У этого способа есть недостатки, основной из которых — нарушение криминалистической чистоты анализа из-за того, что для проверки цифровой подписи устройство приходится «выпустить» в интернет. Многочисленные альтернативы либо сложны в использовании, либо нарушают права правообладателей; многие из них небезопасны. Тем не менее, некоторые подобные сервисы можно использовать для установки джейлбрейков.

Оцените статью
ЭЦП64
Добавить комментарий