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

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

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

В идеале в таком случае я бы хотел, чтобы мое приложение отказывалось подключаться к серверу. Я хочу, чтобы он установил соединение только в том случае, если сертификат, представленный сервером, подписан ключом в наборе контактов И, исходит от ЦС, которому доверяет ОС/пользователь. Обеспечивает ли это закрепление ключа в файле конфигурации сетевой безопасности? Или закрепленным ключам доверяют несмотря ни на что?


person duggulous    schedule 25.04.2019    source источник


Ответы (1)


HPKP указывает браузеру хранить подпись для сертификата вашего сервера в течение указанного вами периода времени. Использование HPKP не заменяет стандартную проверку сертификата.

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

person Misantorp    schedule 25.04.2019
comment
Я просто хотел бы уточнить - это не браузер (по типичному определению), а мобильное приложение, и есть некоторые отличия в механике закрепления ключей/сертификатов по сравнению с тем, к чему может привыкнуть веб-разработчик. Ваши знания специфичны для Android-приложений? Если да, не могли бы вы указать на какую-нибудь документацию по этому поводу? - person duggulous; 25.04.2019
comment
@duggulous Вы правы, между стандартными веб-браузерами и мобильными приложениями есть некоторые различия. У меня есть опыт как стандартной веб-разработки, так и разработки приложений для Android. Моему опыту разработки для Android уже несколько лет, но использование HPKP с самозаверяющими сертификатами, которым не доверяли, как и в вашем примере с ненадежным центром сертификации, не сработало. К сожалению, я не могу найти много документации по этому вопросу. - person Misantorp; 25.04.2019