Рейтинг:1

Алгоритмы двустороннего шифрования, подобные bcrypt

флаг za

Мне нужен алгоритм, который может выполнять очень специфическую задачу: взять короткую строку, зашифровать ее с помощью алгоритма, который можно масштабировать, чтобы не отставать от закона Мура/имеет фактор доказательства работы/необычно медленный, а затем, позже, расшифровать его за те же затраты времени.

Вариант использования — это список адресов электронной почты, сохраняемых для списка рассылки клиентом, заботящимся о безопасности, которые должны быть расшифрованы по одному для каждого электронного письма; цель состоит в том, чтобы сделать брут-форс как можно более трудоемким. Я просмотрел некоторые из вероятных кандидатов (AES-256, mcrypt, twofish, scrypt), но неясно, какой из них лучше всего подходит.

kelalaka avatar
флаг in
Выберите AES-256-GCM или xChaCha20-Poly1305.
poncho avatar
флаг my
"расшифровать его заодно"; Вы имеете в виду «такую ​​же стоимость времени, что и шифрование»? Или вы имеете в виду «по временным затратам, которые не зависят от фактора стоимости шифрования»?
poncho avatar
флаг my
@kelalaka: как AES-GCM или ChaCha имеют фактор «доказательства работы»?
kelalaka avatar
флаг in
@poncho Я не думаю, что OP действительно хочет медленного шифрования, скорее «цель состоит в том, чтобы сделать перебор как можно более трудоемким». Достаточно 256-битного шифрования с хорошим паролем и PBKDF. У AES-GCM или ChaCha нет доказательства работы, да и не нужно.
kelalaka avatar
флаг in
Обратите внимание, что [scrypt — это функция получения ключа на основе пароля, созданная Колином Персивалем] (https://en.wikipedia.org/wiki/Scrypt). Вы действительно хотите медленный PBKDF и быстрое шифрование, достаточно безопасное для перебора?
флаг kr
*bcrypt* - это алгоритм хеширования, а не алгоритм шифрования.
kelalaka avatar
флаг in
Вы можете [отредактировать] (https://crypto.stackexchange.com/posts/95643/edit) свой вопрос, чтобы уточнить, и вы можете прокомментировать свой вопрос и ответы на него без ограничения репутации.
Maarten Bodewes avatar
флаг in
Пожалуйста, все, сосредоточьтесь на (авто?-) увеличивающемся факторе работы. Лично я, вероятно, выбрал бы PBKDF, такой как одна из конфигураций Argon2, PBKDF2 или bcrypt, а затем увеличивал количество итераций каждый год или около того и использовал полученный ключ для обертывания фактического полностью случайного ключа шифрования. Я знаю, что это делается вручную, но алгоритмы/вывод алгоритма сами по себе не имеют временной составляющей. Как упоминал kelalaka, если размер вашего пароля/ключа достаточно случайный, вам вообще не нужно беспокоиться о KDF, вот и все.
флаг ph
Меня не устраивает необходимость добавления рабочего коэффициента для перебора 256-битного пространства ключей. Я думаю, что модель угроз не была полностью продумана.
Рейтинг:0
флаг ru

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

Я рекомендую использовать режим выходной обратной связи (OFB). Генерировать уникальное начальное значение; передать это в (например) блочный шифр AES; затем верните вывод обратно в шифр и повторите, скажем, $2^{35}$ раз в зависимости от точно сколько времени вы хотите требовать от клиента. Затем XOR будущего выводит на адрес электронной почты. Время шифрования/дешифрования уменьшится в соответствии с законом Мура, но нет никакой выгоды в покупке дополнительного оборудования.

Теперь, после однократной расшифровки, клиент может просто сохранить последнее выходное значение до операции XOR, но в равной степени он может сохранить адрес после расшифровки.

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

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

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