Сколько итераций использует параметр scram-sha-256 в PostgreSQL 10?

Сколько итераций использует параметр scram-sha-256 в PostgreSQL 10?

просто говорят

Установка этого параметра на scram-sha-256 зашифрует пароль с помощью SCRAM-SHA-256.

Читается журнал сборки.

Добавление поддержки SCRAM-SHA-256 для согласования и хранения паролей (Майкл Пакье, Хейкки Линнакангас). Это доказывает лучшую безопасность, чем существующий метод согласования и хранения md5.


person Evan Carroll    schedule 27.04.2017    source источник


Ответы (1)


Это переменная времени компиляции в scram-common.h, известная как SCRAM_ITERATIONS_DEFAULT. В настоящее время установлено 4096.

Это в значительной степени соответствует «практическому правилу» спецификаций, которое, по данным на ноябрь 2015 года, составляет 15 000. В настоящее время это самое низкое значение для допустимых итераций. Из RFC-7677

Сила этого механизма частично зависит от количества итераций хеширования, как обозначено «i» в [RFC5802]. Как показывает практика, количество итераций хеширования должно быть таким, чтобы современная машина выполняла полный алгоритм за 0,1 секунды; однако это вряд ли будет практично на мобильных устройствах и других относительно низкопроизводительных системах. На момент написания этого эмпирического правила требовалось около 15 000 итераций; тем не менее, на текущих мобильных телефонах на хеш-итерацию, равную 4096, уходит около 0,5 секунды. Этих вычислительных затрат можно избежать, кэшируя ClientKey (при условии, что количество итераций Salt и хэша стабильно). Поэтому рекомендация данной спецификации состоит в том, что количество итераций хеш-функции ДОЛЖНО быть не менее 4096, но следует внимательно рассмотреть возможность использования значительно более высокого значения, особенно когда мобильное использование менее важно.

person Evan Carroll    schedule 27.04.2017
comment
Вы можете написать в список -hackers и предложить увеличить счет. Изменение этого значения сделает все существующие пароли недействительными, верно? - person Laurenz Albe; 28.04.2017
comment
Я подумал об этом еще немного и сказал бы, что было бы не очень хорошей идеей устанавливать это значение выше минимального значения, которое считается безопасным. Установка высокого значения замедлит проверку, что хорошо против атак грубой силы, которая пытается угадать пароль, но замедлит каждое подключение к базе данных. На мой взгляд, это слишком высокая цена. - person Laurenz Albe; 28.04.2017
comment
@LaurenzAlbe по тому же токену, все, что угодно, кроме обычного текста, замедляет соединение с базой данных. =) Чем медленнее вы устанавливаете соединение, тем надежнее пароль. И, кроме того, должна ли скорость соединения иметь значение или приложения должны объединяться в пул соединений? В любом случае, мне просто было любопытно узнать, что это за сеттинг, и я думаю, что и другие тоже. - person Evan Carroll; 28.04.2017
comment
в ответ на изменение этого значения сделает все существующие пароли недействительными, не так ли ?: Нет, не будет. Счетчик итераций встроен в зашифрованный пароль, хранящийся в Postgres. Таким образом, увеличение количества итераций повлияет только на вновь установленные пароли, но существующие пароли просто продолжат использовать ранее меньшее количество итераций. - person Vogelsgesang; 03.02.2021