Pergunta

Eu preciso de uma solução de criptografia de cliente-servidor para transferência de web, (ou seja assinada e criptografada do lado do cliente, e verificada e descodificada do lado do servidor).

Eu estou usando HTTP, mas SSL não está disponível devido a restrições de hospedagem compartilhada (o meu servidor é um ambiente de servidor compartilhado). Olhando para soluções alternativas, eu ter decidido sobre OpenPGP usando GnuPG . Uma das razões é que ele é suportado no PHP através de vários PERA e módulos PECL (PHP é a linguagem que pretende usar para ambos meu script de cliente e meu script de servidor, embora Perl também está disponível como um último recurso).

Agora estou tentando decidir sobre a melhor maneira de transmitir os dados. Eu vim através de RFC 1847 , que define criptografadas e assinadas mensagens MIME com várias partes. Este protocolo é estendida para especificamente PGP em RFC 3156 . (Eu acho que esses protocolos estão relacionados com o S / MIME criptografadas protocolo de e-mail).

A minha pergunta é: existe alguma razão para seguir esses padrões? Tanto quanto protocolos ir, eles se parecem com soluções sensatas, mas existem clientes que usam realmente este protocolo? Por exemplo, se eu fiz um multipart / solicitação criptografada para um servidor web Apache, haverá alguma maneira fácil de recuperar os dados? Meus testes usando um script PHP que me fez pensar que o PHP seria inútil tentar decifrar os pedidos como estes ($ _ POST dados parece vir de 'multipart / form-data' dados MIME-type).

Como o meu anfitrião irá Deixe-me sockets abertos, ele se ser possível para mim usar API programação de socket do PHP para escrever um script PHP para agir como um servidor que irá aceitar 'multipart / criptografada' e 'multipart / assinado' http solicitações, mas este parece ser um exagero.

Todas as sugestões?

Para obter mais informações sobre o meu problema, consulte esta questão .

Foi útil?

Solução

Você está certo - esses protocolos estão relacionados ao protocolo de correio enrypted, usando que no seu caso é um pouco de exagero e você wolud têm de extensão php uso OpenSSL. Vá com OpenPGP.

Uma vez que seu cliente será escrito em PHP - considerar seguintes cenários:

Cenário 1: criar SABÃO simples webservice

métodos de Servidor e Cliente seria o mesmo:

  • getPublicKey () - retorna a chave pública
  • SendMessage (msg) - retorna resposta

Cenário 2: uso GET / POST mensagem

  • Cliente -> HTTP GET (me envie seu chave pública) -> Servidor
  • Cliente <- (meu chave pública é xxxx) <- Servidor
  • Cliente criptografa mensagem com público do servidor Cliente chave acrescenta própria chave pública para o mensagem
  • Cliente -> HTTP POST (envia mensagem criptografada) -> Servidor
  • Servidor decodifica a mensagem, e codifica resposta com clientes chave pública
  • Cliente <- (resposta codificado para cliente) <- Servidor
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top