Как выполнить закрепление SSL в приложениях iOS

Опубликовано: 2020-02-24

В тот момент, когда люди выходят из дома, они отправляются на поиски открытых сетей Wi-Fi . Ожидают ли они в аэропорту или сидят в кафе, главная задача — найти открытое соединение Wi-Fi .

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

Хотя HTTPS в некоторой степени эффективен, это протокол SSL, который, как известно, обеспечивает безопасность пользователей, будучи неуязвимым и в значительной степени безопасным. Но атаки «Человек посередине» (MITM) также нашли способы нарушить это .

Именно здесь на сцену выходит технология SSL Pinning как одна из лучших практик безопасности мобильных приложений . Говоря конкретно о платформах, это идеальное решение для обеспечения безопасности приложений для iPhone, которое отлично справляется с решением проблемы.

В этой статье мы рассмотрим типы и процесс включения SSL-пиннинга в приложения iOS для предотвращения атак «человек посередине». Процесс, который является активной частью практики тестирования безопасности мобильных устройств OWASP .

Типы SSL-сертификатов Метод закрепления

Существует два основных метода проверки SSL-пиннинга, как описано ниже:

SSL-закрепление

SSL-certificate

  • Закрепите сертификат — вы можете скачать сертификат сервера и связать их в приложении. Во время выполнения приложение сравнивает сертификат сервера со встроенными сертификатами.
  • Закрепить открытый ключ. Вы можете получить открытый ключ сертификата в коде в виде строки. Во время выполнения приложение сравнивает открытый ключ сертификата с ключом, жестко запрограммированным в коде.

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

Давайте теперь рассмотрим шаги по реализации SSL Pinning в вашем приложении для iOS.

*Примечание. Шаги, указанные ниже, соответствуют процессу закрепления сертификата iOS с помощью Swift.

Как реализовать закрепление SSL в вашем приложении для iOS

1. NSURLSсессия

В случае NSURLSession основным методом обработки закрепления SSL является URLSession:didReceiveChallenge:completionHandler:delegate. Разработчики должны будут настроить класс на соответствие URLSessionDelegate и вставить эту функцию в класс:

Функция будет « запрашивать учетные данные у делегата в ответ на запрос аутентификации с удаленного сервера ». Затем разработчик приложения для iPhone сравнит сертификаты с сервера с сертификатом, сохраненным в комплекте приложения. Если два сертификата будут найдены идентичными, аутентификация позволит пройти, и клиент сможет подключиться к серверу.

2. Закрепление сертификата Alamofire

Alamofire — одна из самых известных библиотек для сетей HTTP на языке Swift. Он поставляется со встроенными функциями для закрепления SSL в iOS Swift и чрезвычайно прост в использовании. Вот как создать безопасное приложение для iOS с закреплением сертификата Alamofire.

Общие проблемы, связанные с реализацией закрепления SSL, и способы их решения

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

Вот некоторые из распространенных причин этого:

  • Одним из самых больших недостатков закрепления SSL в приложении iOS является его реализация. Процесс сложен, и он может заставить разработчиков писать код снова и снова и усложнить процесс создания приложения .
  • Закрепление SSL-сертификатов iOS, которые должны регулярно меняться, может заставить разработчиков обновлять двоичный файл приложения каждый раз при изменении сертификата.
  • Необходимо приложить множество усилий, чтобы защитить способы обхода проверки iOS SSL.

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

Проверка булавки

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

Обработка изменения сертификата

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

Прежде чем SSL-сертификат iOS станет активным на веб-сайте, вы должны закрепить его в приложении в дополнение к текущему активному сертификату, а затем выпустить обновление. Когда мы выполняем этот шаг в Appinventiv, чтобы создать безопасное приложение для iOS , мы временно выполняем быстрый тест с новым сертификатом и тестируем приложение с обоими закрепленными сертификатами.

Часто задаваемые вопросы о закреплении SSL в приложениях iOS

1. Где хранить конфиденциальные данные в приложении для iOS?

Конфиденциальные данные приложения всегда должны храниться в iCloud или связке ключей в iOS или даже в базе данных после надлежащего шифрования.

2. Как работает SSL?

SSL Pinning — один из самых распространенных советов по безопасности iOS-приложений . Но чтобы понять, что это значит, вам сначала нужно узнать, как работает SSL.

  • Браузер пытается подключиться к веб-сайту, защищенному SSL. Затем браузер запрашивает веб-сервер, чтобы идентифицировать себя.
  • Затем веб-сервер отправляет браузеру копию своего SSL-сертификата.
  • Браузер проверяет, следует ли доверять сертификату SSL. Если это возможно, сообщение отправляется на веб-сервер.
  • Затем веб-сервер отправляет обратно подтверждение для начала зашифрованного сеанса SSL.
  • Затем зашифрованные данные передаются между браузером и веб-сервером.

Окончание мыслей

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

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

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