C ++ зашифровать текст с ключом, полученным через пакет?keyczar? - PullRequest
0 голосов
/ 04 апреля 2011

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

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

Даже если он не идеален, он звучит более безопасно, чем использование одного статического ключа, хранящегося на клиенте и сервере.

Звучит достаточно просто, и я смотрел на библиотеку шифрования c ++ (crypto ++), выглядит слишком сложно.

Найдено, что им легко пользоваться. Keyczar.

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

Если это можно сделать в c ++ или keyczar (возможно, я упустил, что он может делать)
пожалуйста, просветите меня, как.

Спасибо.

Платформа Linux / Mac.

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

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

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

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

Если вам нравится идея, но не нравится TLS, поскольку x509 чрезвычайно сложен, возможно, было бы проще интегрировать ssh управление сеансами с использованием ключей ssh. С ключами ssh работать намного проще, чем с ключами x509, но их простота означает, что они не везде применимы.

1 голос
/ 04 апреля 2011

если обмен ключами не обеспечен, вы абсолютно ничего не получите (кроме уменьшенной атаки на повтор) возможно просто заглянуть в TLS / SSL с целью защиты транспорта

...