Re: Как сократить список доступных элиптические кривых?
Maxim Dounin
mdounin на mdounin.ru
Ср Июл 20 14:31:26 UTC 2016
Hello!
On Wed, Jul 20, 2016 at 11:32:11AM +0300, Ivan wrote:
> Здравствуйте!
> Онлайн тест на сайте https://www.htbridge.com/ssl/
> указывает на доступность слабых/не совместимых со стандартом NIST
> эллиптических кривых:
>
> SUPPORTED ELLIPTIC CURVES
> List of all elliptic curves supported by the server:
>
> B-571 (sect571r1) (570 bits) Good configuration
> K-571 (sect571k1) (570 bits) Good configuration
> P-521 (secp521r1) (521 bits) Good configuration
> brainpoolP512r1 (512 bits) Good configuration
> K-409 (sect409k1) (407 bits) Good configuration
> B-409 (sect409r1) (409 bits) Good configuration
> brainpoolP384r1 (384 bits) Good configuration
> P-384 (secp384r1) (384 bits) Good configuration
> K-283 (sect283k1) (281 bits) Good configuration
> B-283 (sect283r1) (282 bits) Good configuration
> brainpoolP256r1 (256 bits) Good configuration
> secp256k1 (256 bits) Good configuration
> P-256 (prime256v1) (256 bits) Good configuration
> sect239k1 (238 bits) Good configuration
> K-233 (sect233k1) (232 bits) Good configuration
> B-233 (sect233r1) (233 bits) Good configuration
> secp224k1 (225 bits) Good configuration
> P-224 (secp224r1) (224 bits) Good configuration
> sect193r1 (193 bits) Non-compliant with NIST guidelines
> sect193r2 (193 bits) Non-compliant with NIST guidelines
> secp192k1 (192 bits) Non-compliant with NIST guidelines
> P-192 (prime192v1) (192 bits) Non-compliant with NIST guidelines
> K-163 (sect163k1) (163 bits) Non-compliant with NIST guidelines
> sect163r1 (162 bits) Non-compliant with NIST guidelines
> B-163 (sect163r2) (163 bits) Non-compliant with NIST guidelines
> secp160k1 (161 bits) Non-compliant with NIST guidelines
> secp160r1 (161 bits) Non-compliant with NIST guidelines
> secp160r2 (161 bits) Non-compliant with NIST guidelines
А какая версия OpenSSL используется ("nginx -V" покажет)? Судя по
списку, это что-то из диапазона OpenSSL 1.0.2 - 1.0.2a. Если
действительно так, то имеет смысл обновить и/или как минимум
убедится, что известные дырки заткнуты. Если нет - то интересно
узнать версию.
В современных версиях (OpenSSL 1.0.2b и новее) по умолчанию
включены только кривые не менее 256 бит.
> попытка подрезать ненужные, указав в одном из сайтов параметр
> ssl_ecdh_curve sect571r1:sect571k1:secp521r1:brainpoolP512r1:sect409k1:sect409r1:brainpoolP384r1:secp384r1:sect283k1:sect283r1:brainpoolP256r1:secp256k1:prime256v1;
> не привела к результату.
> Отсюда вопрос, как сократить список доступных эллиптических кривых с
> разрядностью менее 256 бит?
Директиву ssl_ecdh_curve надо указывать в сервере по умолчанию
для конкретного сокета. Ну или на уровне http, тогда будет
работать для всех серверов.
Теоретически должно работать и в рамках выбора виртуального
сервера по SNI, как например работает выбор шифров, но по факту
OpenSSL так пока не умеет. Возможно, научится в следующих версиях.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru