Как зашифровать значение на клиенте и передать его через веб-сервер, не расшифровывая его - PullRequest
2 голосов
/ 15 октября 2008

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

Так что мой вопрос в том, какие варианты доступны нам для сохранения зашифрованного состояния для значения из браузера обратно, без расшифровки его где-нибудь по пути?

Спасибо Mark

Ответы [ 4 ]

4 голосов
/ 15 октября 2008

Задумывались ли вы о том, чтобы сделать простое RSA-шифрование значений и отправить его через систему? Вам нужно убедиться, что у клиентов есть открытый ключ, с помощью которого можно зашифровать данные, но это будет достаточно просто и безопасно для передачи.

Насколько мне известно, большинство библиотек будут поддерживать RSA. Хорошую демонстрацию того, как сделать это исключительно в Javascript, можно найти здесь .

2 голосов
/ 15 октября 2008

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

вот ужасная диаграмма, описывающая поток данных

        client browser    web server       random server       blackbox
route   ---- SSL -------------><------------- not encrypted ------->
data                          *-------- PGP/GPG encrypted --------->

в основном ваши данные шифруются через SSL на веб-сервере, где они шифруются PGP / GPG, а затем отправляются в нисходящем направлении. На данном этапе SSL не имеет значения (или, по крайней мере, не является основной формой шифрования).

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

1 голос
/ 15 октября 2008

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

0 голосов
/ 15 октября 2008

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

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