Fortaleza, 30 de agosto de 2008 

Índice

1.     Introdução

1.1     Introdução a criptografia                                                                                                                                          

1.2     Criptografia Simétrica                                                                                                                                               

1.3     Criptografia Assimétrica                                                                                                                                             

2.     Criptografia no PHP                                                                                                                                                           
2.1     Principais funções do PHP que implementam Criptografia                                                                                

2.1.1        Usando base64_encode()                                                                                              

2.1.2        Usando md5()                                                                                                               

2.1.3        Usando crypt()                                                                                                               

3.    Bibliografia                                                                                                                                                                            


1.          Introdução

1.1           Introdução a criptografia

Criptografia (Do Grego kryptós, "escondido", e gráphein, "escrita") é o estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas por seu destinatário (detentor da "chave secreta"), o que a torna difícil de ser lida por alguém não autorizado. Assim sendo, só o receptor da mensagem pode ler a informação com facilidade.

Desde a antiguidade houve a necessidade de envio e recebimento de mensagens sigilosas. Mas houve um crescimento maior dessa necessidade na época da Segunda Guerra Mundial. E com o aparecimento da internet anos mais tarde com sua facilidade de trafegar informações de forma extremamente rápida e precisa e com isso o fluxo de informações trafegadas aumentou exponencialmente tornando assim a criptografia indispensável para evitar que usuários estranhos da internet tenham acesso indevido a informações, ou seja, garantir que só o emissor e o receptor tenham livre acesso a mensagem trafegada.

Um dos conceitos importantes da criptografia é que se tem a mensagem original, tenha-se a regra para criptografá-la transformando-a em uma mensagem criptografada, ou seja, tem-se a mensagem original M, a chave criptográfica (regra) K e a mensagem criptografada C, ou ainda em linguagem matemática temos:

K(M) = C

Na maioria dos casos temos que ter a chave decriptação D, ou seja, a regra para da mensagem criptografada chegar na mensagem original ou ainda,

D(K(M)) = D(C) = M

Criptografia
Tem-se a acrescentar que os objetivos da criptografia são confidencialidade e integridade da mensagem, autenticação do remetente e não-repúdio ou irretratabilidade do destinatário. Sendo que nem todos algoritmos que implementam criptografia visam todos os objetivos acima, em geral tem-se algoritmos específicos para cada um objetivo.

Como forma de apresentar a criptografia ela se divide em grandes grupos, que são eles:

a)      Criptografia Clássica

Como já foi dito desde a antiguidade havia a preocupação em criptografar mensagens e como na época não havia computadores foram desenvolvidas diversas técnicas de se ocultar mensagens e essas técnicas se enquadram na Criptografia Clássica também conhecida como criptografia pré-computacional. Dentre essas técnicas se destacam os métodos de substituição e transposição de caracteres que em geral eram feitos a mão pelos emissores e receptores da mensagem.

b)      Criptografia Moderna

Com o surgimento de maquinas e computadores especializados em criptografia as técnicas da criptografia Clássica evoluíram e essa evolução dos algoritmos foram enquadrados na Criptografia Moderna. Dentre os algoritmos mas usados estão os de chave-simétrica, chave-assimétrica, certificado e assinatura digital.

c)      Criptografia Quântica

È a junção da teoria Quântica com a criptografia. Onde podemos ter duas mensagens sendo enviadas em uma única transmissão quântica mas nunca podendo serem abertas simultaneamente. Ainda se permite que duas pessoas escolham suas chaves secretas sem nunca terem se visto ou trocado alguma mensagem. Porem, ainda se tem um grande problema que é a transmissão de dados que é dado por transmissão de fótons. Mas que por sua vez, especialistas afirmam que será a criptografia padrão da segurança de dados.

 

1.2           Criptografia Simétrica

Uma definição sucinta de chave simétrica é que é utilizado uma única chave pra decifrar e criptografar dados, essa chave é compartilhada apenas por duas ou mais pessoas que tem em mente manter uma conexão e ligação confidencial da informação. Também tem-se em mente que essa chave é conhecida apenas por essas pessoas.

Criptografia Simétrica
Exemplos de algoritmos simétricos: DES, RC4, IDEA, AES, RC6 etc.

1.3           Criptografia Assimétrica

É um método de criptografia que utiliza duas chaves, uma publica e outra privada. A publica é de acesso de todos e a privada é de acesso apenas do dono. A mensagem é criptografada com a chave publica e só é descriptografada pela sua chave privada.

Criptografia Assimétrica
Exemplos de algoritmos assimétricos: Diffie-Hellman, DSA de curvas elípticas, RSA etc.

É importante salientar que pelo fato da criptografia simétrica usar chave única, isso compromete a segurança, pois se dois computadores se comunicarem pela internet ambos antes tem que saber qual a chave privada e a divulgação dessa chave é insegura na conexão. Daí a necessidade de junção das duas criptografias, a simétrica e a assimétrica, que de fato é racional, porque no momento da conexão usa-se a assimétrica pelo fato de não ter problema em compartilhar a chave publica e nessa conexão é passada a chave simétrica, então os dois computadores a terão em mãos e assim a conexão continua usando somente ela. Não usa-se somente a chave assimétrica pelo fato de seu uso ser computacionalmente complexo e já a simétrica por realizar operações matemáticas relativamente simples se torna mais viável computacionalmente.


2.          Criptografia no PHP

Como já foi citado acima a criptografia de dados é crucial no meio em que vivemos. E o seu uso em linguagens de programação é fundamental e uma delas é o PHP uma linguagem de programação web com tecnologia de servidor, ou seja, as paginas PHP são carregadas mas só o HTML e os outros scripts que são interpretados na maquina cliente e o código PHP é interpretado no servidor e passado somente o seu resultado para o cliente.

Deixar dados confidenciais sem encriptação, como senhas de bancos ou arquivos não é algo seguro, então o mais aconselhável é que criptografe esses dados. O uso da criptografia no PHP é o mais variado possível, vai desde encriptação formulários e de senhas até encriptação de XML. Foge do meu escopo esta mostrando essas aplicações, mas trataremos de mostrar as principais funções do PHP aplicando a criptografia. As implementações são simples mas são expansíveis para maior complexidade de código.

2.1    Principais funções do PHP que implementam Criptografia

Alguns Exemplos de implementação no PHP com o uso das funções base64_encode(), md5() e cript().        

2.1.1  Usando base64_encode()

Sua sintaxe é string base64_encode(valor);

Retorna uma string na base 64 e usa a função base64_decode para decodificar a mensagem.

Exemplo:

$texto = "edson";

echo base64_encode($texto);

// RESULTADO: ZWRzb24=

// para voltar:

$texto1 = " ZWRzb24= ";

echo base64_decode($texto1);

// RESUTADO: edson

?>

2.1.2   Usando md5()

Sua sintaxe é string md5 ( valor [, booleano] );

E como resultado retorna uma string de 32 caracteres com valor hexadecimal ou 16 caso seja passado o argumento booleano como TRUE, mas por default é FALSE. E não há decodificação.

Exemplo:

$texto = "edson";

echo md5($texto);

// RESUTADO: cd4fbce046c46f107e45ae0ddd0db7d3

// para voltar:

// sem volta

?>

2.1.3   Usando crypt()

Sua sintaxe é string crypt(valor);

Retorna uma string e em geral implementa o algoritmo de encriptação Unix Standard DES-based. E também não tem decodificação.

Exemplo:

$texto = "edson";

echo crypt($texto);

// RESUTADO: $1$fs2.68/.$VM9iirUeSlJvl4WPWZZmx0

// para voltar:

// sem volta

?>

 

3.          Bibliografia

Viktoria Tkotz, Criptografia - Segredos Embalados para Viagem. Novatec Editora

Documentação PHP - site PHP, MD5. http://www.php.net/md5

Sandro J. S. Souza, PHP descomplicado: Criptografando dados confidenciais com o padrão MD5. http://www.htmlstaff.org/ver.php?id=5380

Site Wikipédia, Criptografia. http://pt.wikipedia.org/wiki/Criptografia

Site htmlstaff, Criptografia em PHP usando as funções base64_encode, md5 ou crypt. http://www.htmlstaff.org/ver.php?id=10854

Site Wikipédia, Algoritmo de Chave-simétrica. http://pt.wikipedia.org/wiki/Criptografia_sim%C3%A9trica

Site Wikipédia, Criptografia de chave pública. http://pt.wikipedia.org/wiki/Sistema_de_criptografia_de_chave_p%C3%BAblica