Можно ли ограничить приложение мобильного приложения (Android/iOS) для использования только определенной версии TLS?

Можно ли проверить конкретную версию TLS или SSL на уровне кода приложения? Можно ли ограничить приложение использованием только определенной версии TLS или SSL?

Рассмотрим сценарий, веб-сервер поддерживает TLS 1.0, 1.1 и 1.2. Мобильное приложение (для Android или iOS) построено на более новой версии API/SDK, которая также поддерживает TLS 1.2. Теоретически контекст TLS будет возвращаться к нижнему в любых случаях исключений согласования. Итак, есть ли какой-либо возможный способ проверить в коде приложения, что он должен использовать только TLS 1.2 и не должен принимать более низкие версии.

Я видел здесь обсуждение контекста SSL, который можно проверить в android. Подключение Android TLS и самоподписанный сертификат. Но переопределит ли ОС это, если на стороне сервера произойдет какой-либо откат?


person s4n7h0    schedule 22.01.2016    source источник
comment
Да, вы можете настроить свой клиент SSL/TLS для подключения только с TLS 1.2 или новее. Конкретные сведения зависят от используемого вами клиента.   -  person laalto    schedule 22.01.2016


Ответы (1)


Если и сервер, и клиент поддерживают TLS 1.2, то только TLS 1.2 будет согласовываться правильно реализованными стеками TLS/SSL. Они должны согласовать самую высокую версию протокола, поддерживаемую всеми сторонами, а не самую низкую.

На ваш вопрос о том, как ограничить, какие версии протокола принимать/согласовывать, это зависит от используемой вами сетевой библиотеки. Например, на Android, если вы используете экземпляры SSLSocket напрямую, вы можете установить включенные протоколы для каждого экземпляра SSLSocket. Если вы используете HTTP-библиотеку, она может предложить возможность параметризации с помощью SSLSocketFactory, где вы можете предоставить свою собственную SSLSocketFactory, которая обертывает SSLSocketFactory по умолчанию, получает экземпляры SSLSocket, устанавливает для них набор включенных протоколов и возвращает эти настроенные экземпляры SSLSocket в стек HTTP.

Имейте в виду, что некоторые стеки HTTP (например, okhttp) реализуют собственную резервную логику протокола TLS, которая не обнаруживает понижение версии протокола TLS посредником. Такое поведение способствовало уязвимости POODLE.

person Alex Klyubin    schedule 24.01.2016