Пароли хэширования bcrypt в App Engine работают очень медленно (с использованием pybcrypt lib)? - PullRequest
0 голосов
/ 21 апреля 2019

Использование bcrypt в App Engine кажется очень медленным при хешировании паролей. Я читал, что рекомендуемое (по крайней мере, с 2017 года) - 10 или более раундов, и оно должно основываться на времени, которое требуется для обработки шифрования / расшифровка, а не заданное количество раундов. Тем не менее, когда мы попытались установить различные значения log_round, начинающиеся с 10, это заняло очень много времени, и мы достигли значения DeadlineExceededError, которое возникает в GAE, если запрос занимает более 60 секунд! Мы используем класс экземпляра F1 по умолчанию, так как мы не установили его для другого класса в app.yaml.

Мы тестировали на экземплярах F2 и F4, которые действительно были более быстрыми, но в целом все еще медленными с точки зрения UX. Я думаю, что это заняло ~ 5 секунд на экземпляре F2 для 7 log_rounds! Есть ли известная проблема для этой конкретной библиотеки? passlib лучший выбор? Или это нормальное поведение? Мы думаем, что можем что-то упустить здесь, но не уверены, что!

from pybcrypt import bcrypt

# What we use for hashing
user_pass = "secret_password"
password = bcrypt.hashpw(user_pass, bcrypt.gensalt(log_rounds = 10))

# What we use to verify correct password
if bcrypt.hashpw(password_attempt, user.hashed_password) == user.hashed_password:
   #User login success
   print "Logged in!"
else:
   #User login failed
   print "Wrong credentials!"

Некоторые из постов, через которые я прошел:

1) https://security.stackexchange.com/questions/17207/recommended-of-rounds-for-bcrypt

2) https://security.stackexchange.com/questions/3959/recommended-of-iterations-when-using-pkbdf2-sha256/3993#3993

3) Что такое соляные раунды и как соли хранятся в Bcrypt?

4) yii CPasswordHelper: hashPassword и verifyPassword

...