Upload
hedervieira
View
6
Download
0
Embed Size (px)
Citation preview
Company LOGO
www.testset.com.br
Criptografia de dados em PHP
www.testset.com.br
Company LOGO
Introdução a criptografia
• Criptografia (Do Grego kryptós, "escondido", e gráphein, "escrita").
• Desde a antiguidade houve a necessidade de envio e recebimento de mensagens sigilosas. O crescimento foi maior na Segunda Guerra Mundial, e anos depois com o surgimento da internet.
• Tem-se a mensagem original M, a chave criptográfica (regra) K e a mensagem criptografada C, assim temos:
K(M) = C
• Na maioria dos casos temos que ter a chave de decriptação D, que é a regra para da mensagem criptografada voltar à mensagem original:
D(C) = M
www.testset.com.br
Company LOGO
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.
www.testset.com.br
Company LOGO
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.
www.testset.com.br
Company LOGO
Criptografia no PHP
• O uso da criptografia no PHP é o mais variado possível, vai desde encriptação de formulários, senhas, arquivos e até encriptação de XML.
Principais funções do PHP que implementam Criptografia
• Alguns Exemplos de funções no PHP que utilizam criptografia:
• base64_encode() / base64_decode()
• md5()
• sha1()
• cript()
• md5_file()
• sha1_file()
www.testset.com.br
Company LOGO
Usando base64_encode()
• Codifica dados binários tratando-os numericamente, retornando uma string na base 641 do tipo MIME2 que trafegam sobre camadas de transporte que não são 8-bit clean (sistema que resolve caracteres de 8bits), como mensagens de e-mail.
• Dados codificados na Base-64 tem aproximadamente 33% mais espaço que dos dados originais.
• Usa-se a função base64_decode() para decodificar a mensagem.
$texto = “informação”;echo base64_encode($texto); // RESULTADO: ZWRzb24=
$texto1 = “ZWRzb24=”; // para voltar:echo base64_decode($texto1); // RESUTADO: informação
2 MIME = Multipurpose Internet Mail Extensions. Tipos de extenções comuns que trafegam na rede.1 Base64 = Constituída por 64 caracteres ([A-Za-z0-9], "/" e "+") que dão origem ao seu nome.
www.testset.com.br
Company LOGO
base64_encode e base64_decode, em conjunto com a função strrev.
//function to encrypt the stringfunction encode5t($dado) { for($i=0; $i=5;$i++) { $dado=strrev(base64_encode($dado)); //aplica base64 primeiro depois reverte a string } return $dado; } //function to decrypt the stringfunction decode5t($dado) { for($i=0; $i=5;$i++) { $dado=base64_decode(strrev($dado)); //apply base64 first and then reverse the string } return $dado; }
www.testset.com.br
Company LOGO
Usando md5()
• É um algoritmo de hash de 128 bits unidirecional (não há retorno). É muito utilizado por softwares com protocolo ponto-a-ponto3.
• Sua sintaxe é string md5 ( valor [, booleano] );
• Calcula o hash4 em conjunto com “RSA Data Security, Inc. MD5 Message-Digest Algorithm”, e como resultado retorna uma string de 32 caracteres com valor hexadecimal ou 16 caso seja passado o argumento booleano como TRUE.
$texto = “informação";echo md5($texto);
//RESUTADO: cd4fbce046c46f107e45ae0ddd0db7d3
3 Ponto-a-ponto = Peer-to-peer - é uma topologia de redes caracterizada pela descentralização das funções na rede, onde cada terminal realiza tanto funções de servidor quanto de cliente. 4 Hash = É um método de cifrar dados de forma a manter a sua integridade. Ele cria uma string de tamanho fixo a partir de uma cadeia de caracteres de qualquer tamanho.
www.testset.com.br
Company LOGO
Usando crypt()
• Sua sintaxe é string crypt(valor);
• Retorna uma string e em geral implementa o algoritmo de encriptação Unix Standard DES-based5.
$texto = “informação";echo crypt($texto);
// RESUTADO: $1$fs2.68/.$VM9iirUeSlJvl4WPWZZmx0
5 DES = Método de encriptação em que a string é dividida em oito caracteres e estes são restringidos a 7 bits cada, originando uma chave de 56 bits. Desde 1999 é considerado um script inseguro.
www.testset.com.br
Company LOGO
Usando sha1()
• Foi considerado o sucessor do MD5, é a melhor e mais estável das funções de hash SHA. Os algoritmos SHA foram desenhados pela National Security Agency (NSA 6) e publicados como um padrão do governo Norte-Americano.
• Calcula a hash sha1 usando “US Secure Hash Algorithm 1”, e retorna esta hash. A hash é um número hexadecimal de 40 caracteres.
<?php$str = 'apple';
if (sha1($str) === 'd0be2dc421be4fcd0172e5afceea3970e2f3d940') { echo "Senha válida"; exit;}?>
6 NSA = Método de encriptação em que a string é dividida em oito caracteres e estes são restringidos a 7 bits cada, originando uma chave de 56 bits. Desde 1999 é considerado um script inseguro.
www.testset.com.br
Company LOGO
Usando md5_file() e sha1_file()
• Tanto a função md5() quanto sha1() possuem seus equivalentes para gerar hash de arquivos. Isso é util no caso de se verificar a integridade do conteúdo dos mesmos.
<?php$str = ‘arquivo.doc';
if (sha1($str) === 'd0be2dc421be4fcd0172e5afceea3970e2f3d940') { echo “Arquivo válido"; exit;}?>
www.testset.com.br
Company LOGO
Exemplo Prático
• http://www.testset.com.br/home/cripto.php
www.testset.com.br
Company LOGO
Bibliografia
• http://www.google.com.br
• http://pt.wikipedia.org
• http://forum.imasters.uol.com.br
• http://revistaphp.com.br
• http://phpavancado.net
• http://php.net
Recursos avançados de criptografia em PHP
• http://www.php.net/manual/pt_BR/intro.mcrypt.php
Obrigado