Зашифрованные и подписанные MIME-сообщения с использованием RFC 1847

StackOverflow https://stackoverflow.com/questions/1036872

Вопрос

Мне нужно решение для шифрования клиент-сервер для веб-передачи, (т.е.подписанный и зашифрованный на стороне клиента, а также проверенный и расшифрованный на стороне сервера).

Я использую HTTP, но SSL недоступен из-за ограничений общего хостинга (мой сервер является средой общего хостинга).Изучая альтернативные решения, я остановил свой выбор на OpenPGP, используя GnuPG.Одна из причин заключается в том, что он поддерживается в PHP с помощью различных модулей PEAR и PECL (PHP - это язык, который я намерен использовать для и то , и другое мой клиентский скрипт и мой серверный скрипт, хотя Perl также доступен в качестве последнего средства).

Сейчас я пытаюсь определиться с наилучшим способом передачи данных.Я наткнулся на RFC 1847, который определяет зашифрованные и подписанные составные MIME-сообщения.Этот протокол расширен специально для PGP в RFC 3156.(Я думаю, что эти протоколы связаны с протоколом зашифрованной электронной почты S / MIME).

Мой вопрос заключается в следующем:есть ли какие-либо причины следовать этим стандартам?Что касается протоколов, они выглядят как разумные решения, но есть ли какие-либо клиенты, которые действительно используют этот протокол?Например, если я отправил составной / зашифрованный запрос на веб-сервер Apache, будет ли какой-нибудь простой способ получить данные?Мои тесты с использованием PHP-скрипта заставили меня подумать, что PHP бесполезно пытаться расшифровать подобные запросы (данные $ _POST, похоже, поступают из данных MIME-типа 'multipart / form-data').

Как мой хозяин будет позвольте мне открыть розетки, это бы я мог бы использовать PHP socket programming API для написания PHP-скрипта, который действовал бы как сервер, который будет принимать HTTP-запросы "multipart / encrypted" и "multipart / signed", но это кажется излишним.

Есть какие-нибудь предложения?

Для получения дополнительной информации о моей проблеме, пожалуйста, смотрите этот вопрос.

Это было полезно?

Решение

Вы правы - эти протоколы связаны с протоколом зашифрованной почты, использование которого в вашем случае немного излишне, и вам придется использовать расширение OpenSSL php.Используйте OpenPGP.

Поскольку ваш клиент будет написан на PHP - рассмотрите следующие сценарии:

Сценарий 1:создайте простой веб-сервис SOAP

Серверные и клиентские методы были бы одинаковыми:

  • getPublicKey() - возвращает открытый ключ.
  • SendMessage(msg) - возвращает ответ

Сценарий 2:используйте GET / POST сообщение

  • Клиент -> HTTP GET (пришлите мне свой открытый ключ) -> Сервер
  • Клиент <- (мой открытый ключ - xxxx) <- Сервер
  • Клиент шифрует сообщение с общественными сервера ключевой клиент добавляет собственный открытый ключ сообщение
  • Клиент -> HTTP POST (отправляет зашифрованное сообщение) -> Сервер
  • Сервер декодирует сообщение и кодирует ответ открытым ключом клиента
  • Клиент <- (закодированный ответ клиенту) <- Сервер
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top