Закрепление сертификатов и SSL - PullRequest
0 голосов
/ 28 декабря 2018

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

Ответы [ 2 ]

0 голосов
/ 02 января 2019

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

https гарантирует, что данные, передаваемые между вашим мобильным приложением и APIСервер зашифрован и не может быть отслежен третьими лицами, что частично предотвращает его от атак «Человек посреди».

Поэтому я частично говорю, потому что злоумышленник может побудить пользователей установить собственный сертификат ssl, чтобы они моглииспользовать бесплатный Wi-Fi.Обычно это делается с помощью поддельных порталов Wi-Fi, на которых вы должны войти, чтобы иметь бесплатный Wi-Fi, например, те, которые вы нашли в аэропортах, поездах и т. Д. Если злоумышленнику удастся обмануть пользователя, весь трафик направляется череззлоумышленника, и, несмотря на то, что он является https, его можно расшифровать, если мобильное приложение использует специальный сертификат злоумышленника, но злоумышленник всегда будет использовать исходный сертификат при взаимодействии с сервером API, поэтому ни API, ни сервер, ни мобильное приложение, ни пользовательПомните, что сообщение перехвачено и, возможно, даже подделано.

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

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

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

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

Редактировать

Вы можете прочитать статью Украсть, чтоКлюч API с атакой «человек посередине» , чтобы увидеть практический пример того, как секрет можно извлечь из запроса https, отправленного из мобильного приложения в бэкэнд-API, путем выполнения атаки MitM.

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

Хотя мы можем использовать передовые методы, такие как JNI / NDK, для сокрытия ключа API в коде мобильного приложения, это не будет препятствовать кому-либоот выполнения атаки MitM, чтобы украсть ключ API.На самом деле MitM-атака проста до такой степени, что ее могут достичь даже не разработчики.

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

В этой статье вы узнали, что закрепление сертификата является актом связывания доменного имени с ожидаемым сертификатом X.509 и что это необходимо для защиты основанных на доверии предположений в цепочке сертификатов.Ошибочно выданные или скомпрометированные сертификаты представляют собой угрозу, и также необходимо защитить мобильное приложение от их использования в неблагоприятных средах, таких как общедоступный Wi-Fi, или от атак DNS Hijacking.

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

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

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

0 голосов
/ 28 декабря 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...