Предотвращение атак по времени

Похоже, что какое-то время утилита входа в систему в системах Unix вычисляла хэш только тогда, когда действительное имя пользователя существовал; это открыло брешь в системе безопасности, которая позволила провести временную атаку, поскольку пользователь мог определить, когда имя пользователя было найдено, по количеству времени, которое потребовалось для генерации хешированного ключа для сравнения.

Это имеет смысл для настольных приложений, но будет ли это иметь смысл и для веб-приложений? Я бы склонился к этому, но нужно ли такое исправление?

Например, в модуле аутентификации Django:

class MyBackend(ModelBackend):

    def authenticate(self, email=None, password=None):
        try:
            user = User.objects.get(email=email)
            return user if user.check_password(password) else None
        except User.DoesNotExist:
            User().check_password(password) # is this line necessary?
            return None

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

11
задан Naftuli Kay 6 November 2011 в 20:08
поделиться