Рейтинг:0

Ключевая функция деривации/хеширования с быстрым сравнением

флаг in

Существует ли ключевая функция деривации/хеширования (имеющая какое-либо реальное значение), которая удовлетворяет обоим этим критериям:

  • Медленно вычисляет хэш
  • Быстрая проверка хэша на основе входной строки (без второй существующей копии указанного хэша)

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

Я хочу настроить систему аутентификации, в которой пользователь должен указать имя пользователя, пароль и хэш пароля Proof of Work, за исключением .. Я бы хотел, чтобы мне не приходилось самому выполнять работу, чтобы быстро проверить.

Хэш не сравнивается с фактическим хэшем в базе данных (например, это должен быть другой алгоритм хеширования, отличный от алгоритма в базе данных. где злоумышленник может заставить мой сервер выполнять тяжелую работу... ни за что.

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

kelalaka avatar
флаг in
Противоречивое требование? Если вы можете быстро проверить, почему злоумышленник не может?
флаг in
Мне просто кажется, что я должен иметь возможность использовать функцию получения ключа, чтобы смешать закрытый ключ с ключом, который пользователь будет использовать для хэширования/получения другого ключа, что должно упростить проверку (учитывая закрытый ключ, который пользователь не будет иметь).
флаг in
@kelalaka смотрите мой последний комментарий; Я не знаю, обязательно это или нет.Но я имею в виду, что это свойство PKI (например, имея закрытый ключ, вы можете просто расшифровать сообщение, иначе вы должны его взломать). Я чувствую, что то же самое должно быть каким-то образом преобразовано в PoW...
флаг in
Я имею в виду, что даже просто установка PKI, где шифрование с помощью открытого ключа намного сложнее, чем расшифрование с помощью закрытого ключа, будет работать.
Рейтинг:0
флаг in

Простой поиск Brave по запросу «Proof of Work hashing» ответил на это... https://www.npmjs.com/package/hashcash

kelalaka avatar
флаг in
Итак, вы сохраняете значение hashcash, чтобы иметь быструю проверку? Это не то, как работает Key Derivation. Если вы хотите иметь медленную версию, используйте Argon2.
флаг in
@kelalaka * например, это должен быть алгоритм хеширования, отличный от алгоритма в базе данных.. PBKDF2* Нет. Я храню PBKDF2 в базе данных. Хэш-кэш/доказательство работы не хранятся... Я нигде не подразумевал, что буду хранить хэш-кэш.
флаг in
Это будет работать так.... 1.) Пользователь вычисляет hashcash, отправляет имя пользователя, пароль, hashcash и значение счетчика 2.) Я проверяю hashcash с помощью счетчика и входных данных (скажем, имя пользователя + пароль). 3. Только _после_ проверки я затем проверяю базу данных (где я затем хеширую пароль, предоставленный пользователем с помощью PBKDF2, и сравниваю его с записью в базе данных). Дело в том, что злоумышленник не может заставить мой сервер повторно проверять хэш PBKDF2, не проделав заранее массу работы (гораздо больше работы, чем мой сервер).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.