Высокая стоимость шифрования, но меньшая стоимость дешифрования

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

Еще раз я не говорю о SSL.

3 ответа

Решение

Звучит так, как будто вы ищете схему проверки работоспособности - одно из приложений для такой схемы как раз то, что вы описываете: заставить клиента выполнить определенный объем работы и таким образом предотвратить его затопление. сервер с запросами.

Одна глупая идея, которая может сработать очень хорошо, - это прикрепить "загадку" к схеме шифрования. Сделайте так, чтобы для отправки зашифрованных данных на сервер вам пришлось решить некоторую известную NP-сложную задачу (например, найти удовлетворительное назначение для большой логической формулы) и отправить ответ вместе с. Затем сервер может легко проверить решение, но в предположении, что P ≠ NP, клиенты, пытающиеся разместить данные, должны выполнить сверхполиномиальный объем дополнительной работы, предотвращая их переполнение вашего сервера.

Надеюсь это поможет!

Вы можете использовать подписи RSA (например, PKCS # 1).

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

RSA обладает свойством, что проверка выполняется намного быстрее, чем подписывание, когда вы выбираете небольшую общедоступную экспоненту (обычно, например, называемую е. e=3) в 10 или 10 раз, в зависимости от длины ключа и того, достаточно ли умны ваши клиенты для использования CRT.

Генерация ключей RSA чрезвычайно медленная, но, вероятно, достаточно использовать один ключ для всех клиентов, если вы включаете в свой протокол вызов для предотвращения атак воспроизведения.

Наконец, подписание RSA не дает вам конфиденциальности.

Другие вопросы по тегам