Зашифрованные и подписанные сообщения MIME с использованием RFC 1847 - PullRequest
0 голосов
/ 24 июня 2009

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

Я использую 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').

Поскольку мой хост будет позволять мне открывать сокеты, будет иметь возможность использовать API программирования сокетов PHP для написания PHP-скрипта, который будет действовать как сервер, который будет принимать ' HTTP-запросы «multipart / encrypted» и «multipart / signature», но это выглядит как перебор.

Есть предложения?

Подробнее о моей проблеме см. этот вопрос .

1 Ответ

1 голос
/ 24 июня 2009

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

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

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

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

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

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

  • Клиент -> HTTP GET (пришлите мне свой открытый ключ) -> Сервер
  • Клиент <- (мой открытый ключ - хххх) <- сервер </li>
  • Клиент зашифровывает сообщение публичным сервером Ключ клиента добавляет собственный открытый ключ к сообщение
  • Клиент -> HTTP POST (отправляет зашифрованное сообщение) -> Сервер
  • Сервер декодирует сообщение и кодирует ответ с открытым ключом Клиента
  • Клиент <- (закодированный ответ клиенту) <- Сервер </li>
...