Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Santana Diego

Criptografia simétrica com PHP (cliente x servidor)

Recommended Posts

Olá pessoal,

sou novo em PHP (na verdade me aventurei a fazer uma aplicação web para ver no que dava) e estou com uma grande dificuldade para utilizar criptografia simétrica em PHP.

 

A idéia é a seguinte:

 

- Tenho uma tela onde o usuário vai informar um valor para uma transação e não quero que o valor da transação chegue ao servidor (trafegue pela rede) de maneira aberta e sim criptografada;

- Não quero utilizar o HTTPS: pois assim eu estaria transferindo a responsabilidade de segurança para o servidor, a idéia é aprender a tratar isso com uma aplicação web;

- Preciso "manipular" o que o usuário digitar no campo 'valor' antes que o método POST_ envie as informações;

- Preciso que o metodo POST_ criptografe o valor do campo e somente depois disso envie ao servidor (trafegue pela rede);

 

Já tentei diversas alternativas, mas não consegui recuperar os dados digitados pelo usuario, trata-los e empacotá-los novamente para o metodo POST_ .

 

 

 

________________________________________________________________________________________________

encontrei ( http://www.nacaolivre.com.br/php/criptografia-aes-em-objeto-php/ ) um exemplo do que exemplifica +/- o que eu pretendo fazer, com a diferença de que neste caso o valor a ser criptografado é estático e o que eu preciso é que o valor seja dinâmico, executando a criptografia na parte do cliente, antes de enviar ao servidor;

 

<?php

include( 'aes.class.php' );

 

/**

* Gerando um chave de 128 bits com o auxílio do método "keygen" e

* agregando um sal a geração da chave.

*

*/

$key = AES::keygen( AES::KEYGEN_128_BITS, " esta é a chave da criptografia que deverá ser utilizada pelo servidor para decriptografar a mensagem" );

/**

* Instância do objeto AES de criptografia e descriptografia de dados.

*

*/

$aes = new AES( $key );

// Cofigicando.

$encode = $aes->encrypt( "Mensagem a ser criptografada" );

// Chave simétrica gerada de 128 bits

echo "<p><b>Chave Simétrica 128 bits: ".$key."</b></p><br />";

 

echo "<p><b>Texto criptografado: ".base64_encode($encode)."</b></p><br />";

 

// Decodificando a string (parte que o servidor deverá fazer )

$decode = $aes->decrypt( $encode );

 

echo "<p><b>Texto descriptografado: ".$decode."</b></p><br />";

 

?>

________________________________________________________________________________________________

 

sobre a criptografia, neste momento não importa qual algoritmo, DES, TDES, AES... O importante é fazer com que um determinado valor do form trafeque pela rede criptografia

 

Então pessoal, alguém já passou por alguma situação ou tem alguma idéia?

Muito obrigado pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

estava lendo os requisitos e parei aqui:

- Preciso "manipular" o que o usuário digitar no campo 'valor' antes que o método POST_ envie as informações;

 

se isso for um requisito, recomendo a pensar em outras formas, pois a segurança morrerá nesse ponto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não necessariamente hinom, tive que que fazer isso em uma aplicação onde a segurança era o principal requisito.

 

Na pratica, os dados são criptografatos no client antes de serem transmitidos via SSL.

 

1. O servidor é configurado para trafegar somente em SSL.

2. Cada conta de usuário gera um certificado digital que será instalado no client.

3. A autenticação é feita usando o cerrificado no client.

4. Quando houver transmissão de dados sensíveis, usa-se o certificado do client para criptografar os dados e, somente então, eles são enviados via SSL.

 

Caso a segurança do servidor venha a ser comprometida, os dados estarão relativamente seguros, já que cada usuário possuirá seu próprio certificado e, consequentemente, sua própria chave privada. Mas existe a questão do desempenho.

 

Se estiver disposto a ir por esse caminho, posso postar um exemplo simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o ponto é que a segurança dependerá do lado cliente.

 

não compromete a todos mas ao usuário que está afetado por exemplo, com um virus, keylogger, etc..

 

esse é o ponto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o ponto é que a segurança dependerá do lado cliente.

 

Sim, o client será responsável pela criptografia.

 

não compromete a todos mas ao usuário que está afetado por exemplo, com um virus, keylogger, etc..

 

esse é o ponto.

 

Fato, o usuário que estiver infectado por alguma coisa pode ter seus próprios dados comprometidos.

 

Mas para se ter um sistema 100% seguro, ele teria de ser offline em uma máquina desconectada e sendo mantido por um homem e um cachorro.

 

O homem para alimentar o cachorro, e o cachorro para impedir que o homem se aproxime do sistema.

 

:devil:

Compartilhar este post


Link para o post
Compartilhar em outros sites

100% seguro não existe, nem sequer comentei isso..

 

tudo que temos de segurança hoje em dia são meras gambiarras para dificultar a ação de criminosos.

quem conehce as "gambiarras", conhece os pontos falhos.

 

entrar em servidores hoje em dia é mais complicado, por isso o alvo dos criminosos está no lado mais vulnerável, o cliente.

 

você pode colocar a criptografia que for que vai dar na mesma se o cliente continuar vulnerável como é.

 

contudo, obviamente tem que ter algum tipo de criptografia para evitar que os dados trafeguem de forma aberta pela rede, pois é relativamente fácil usar sniffers para capturar dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se estiver disposto a ir por esse caminho, posso postar um exemplo simples.

 

João se puder passar um exemplo simples seria muito bacana, pois procurei em outros foruns e de fato não encontrei algo claro e dirigido a criptografia no cliente.

 

Obrigado pelo apoio pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.