owasp @ iscte-iul, criptografia em php
DESCRIPTION
Apresentação realizada no OWASP @ ISCTE-IUL, Workshop de Segurança Aplicacional, sobre Criptografia em PHP.TRANSCRIPT
![Page 1: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/1.jpg)
ISCTE-‐IUL/DCTI
Instituto Superior de Ciências do Trabalho e da EmpresaInstituto Universitário de Lisboa
Departamento de Ciências e Tecnologias de Informação
Carlos Serrão
[email protected]@gmail.com
http://www.carlosserrao.nethttp://blog.carlosserrao.nethttp://www.linkedin.com/in/carlosserrao
OWASP @ ISCTE-IULWorkshop de Segurança Aplicacional
Criptografia em PHP
![Page 2: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/2.jpg)
Abril 2010OWASP @ ISCTE-IUL
agenda2
criptografia em aplicações web criptografia 101 criptografia em PHP
funções hash criptografia simétrica criptografia assimétrica certificados digitais
![Page 3: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/3.jpg)
criptografia em aplicações web3
![Page 4: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/4.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em aplicações web
criptografia?
$notEncrypted = base64_encode($data);
$notEncrypted = urlencode($data);
$notEncrypted = crc32();
4
![Page 5: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/5.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em aplicações web
criptografia!
$encrypted = mcrypt_generic($mcryptResource, $data);
$hash = hash($algorithm, $data);
$hmac = hash_hmac($algorithm, $data, $key);
5
![Page 6: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/6.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em aplicações web
porquê? necessidade de garantir confidencialidade necessidade de garantir integridade necessidade de verificar a identidade necessidade de garantir não-repúdio
6
![Page 7: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/7.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em aplicações web
OWASP Top 10 evitar o A9 - Armazenamento Criptográfico Inseguro
cifrar ficheiros, cifrar BD, cifrar elementos XML usar a criptografia de forma apropriada
não invente!!! usar apenas mecanismos criptográficos conhecidos e testados
7
![Page 8: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/8.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em aplicações web
cifrar dados em trânsito SSL/TLS, HTTPS
cifrar dados no armazenamento armazenar apenas aquilo que necessita recorrer a cifra simétrica e assimétrica
cifrar passwords - trânsito básica: cifra HTTPS de dados do login (POST) média: usar desafio-resposta elevada: não usar passwords
8
![Page 9: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/9.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em aplicações web
cifrar dados em trânsito SSL/TLS, HTTPS
cifrar dados no armazenamento armazenar apenas aquilo que necessita recorrer a cifra simétrica e assimétrica
cifrar passwords - trânsito básica: cifra HTTPS de dados do login (POST) média: usar desafio-resposta elevada: não usar passwords
9
![Page 10: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/10.jpg)
criptografia 10110
![Page 11: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/11.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
ao longo da história têm sido concebidos diversos métodos para ocultar informação antiga Grécia antigo Império Romano
atribui-se a Júlio César a criação de um método de cifra (designado por Cifra de César) para esconder informação dos inimigos
11
![Page 12: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/12.jpg)
Abril 2010OWASP @ ISCTE-IUL confidencialidade
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
12
criptografia 101
![Page 13: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/13.jpg)
Abril 2010OWASP @ ISCTE-IUL confidencialidade
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
chave = 2
12
criptografia 101
![Page 14: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/14.jpg)
Abril 2010OWASP @ ISCTE-IUL confidencialidade
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
C D E F G H I J K L M N O
P Q R S T U V W X Y Z A B
chave = 2
12
criptografia 101
![Page 15: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/15.jpg)
Abril 2010OWASP @ ISCTE-IUL confidencialidade
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
C D E F G H I J K L M N O
P Q R S T U V W X Y Z A B
CARLOS SERRAO
chave = 2
12
criptografia 101
![Page 16: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/16.jpg)
Abril 2010OWASP @ ISCTE-IUL confidencialidade
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
C D E F G H I J K L M N O
P Q R S T U V W X Y Z A B
CARLOS SERRAO = ECTNQU UGTTCQ
chave = 2
12
criptografia 101
![Page 17: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/17.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 10113
![Page 18: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/18.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 10113
![Page 19: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/19.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
a criptografia estuda do ponto de vista matemático os métodos de protecção da informação
a cripto-análise estuda as técnicas que permitem quebrar um algoritmo criptográfico
ao conjunto da criptografia e da cripto-análise, designa-se por criptologia
14
![Page 20: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/20.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
para garantir a confidencialidade (informação em segredo) usa-se a cifra dado M = mensagem que queremos proteger, texto em claro para cifrar usa-se um algoritmo de cifra ƒ obtém-se o texto cifrado C C = ƒ(M)
para decifrar a informação usa-se a transformação inversa M = ƒ-1(C)
15
![Page 21: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/21.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
chave parâmetro que permite manipular as transformações
aplicadas pela função criptográfica chave de cifra k, chave de decifra x
C = e(k, M) M = d(x, C) = d(x, e(k, M))
16
![Page 22: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/22.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
princípio de Kerckhoffs Auguste Kerckhoffs, "La cryptographie
militaire", Journal des sciences militaires, vol. IX, pp. 5–83, Jan. 1883, pp. 161–191, Feb. 1883
permissa fundamental da criptografia moderna, que estabelece que os algoritmos devem ser conhecidos publicamente e que a sua segurança depende da chave
17
![Page 23: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/23.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
um algoritmo criptográfico pode ser considerado como seguro se a um adversário for impossível obter um texto em claro M, conhecendo apenas algoritmo de cifra o texto cifrado C
ou seja, é impossível decifrar a mensagem sem conhecer a chave
18
![Page 24: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/24.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
confidencialidade integridade autenticação (não-repúdio)
19
![Page 25: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/25.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
criptografia chave simétrica chave assimétrica funções resumo/síntese assinaturas digitais certificados digitais (X.509)
20
![Page 26: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/26.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
criptografia chave simétrica21
!"#$%& '()&
*+,-%&.%$/%0,&1.23&
.2&1456(/7,89(3&
![Page 27: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/27.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
criptografia chave assimétrica22
!"#$%& '()&
*+,-%&./)"#$,&0(&'()&1234(56,78(9&
.,5&0%&*+,-%:& .,5&0%&*+,-%:&
*+,-%&./)"#$,&0,&!"#$%&
*+,-%&.5#-,0,&0,&!"#$%&
*+,-%&./)"#$,&0(&'()&
*+,-%&.5#-,0,&0(&'()&
*+,-%&./)"#$,&0,&!"#$%&1234(56,78(9&
![Page 28: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/28.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
funções de resumo/síntese one-way functions
23
ƒ(x)M hdimensão fixa
h = ƒ(M)mas não existe ƒ-1(h) = M
![Page 29: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/29.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
funções de resumo/síntese24
M
H
M M H
comparação
transmissão
![Page 30: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/30.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
assinaturas digitais25
Mensagem
Alg. Resumo
Resumo
Mensagem Enc.
Alice Bob
Enc. Resumo
Resumo
Mensagem
Resumo
Dec. Mensagem Alg. Resumo Resumo’
Dec. Resumo
Transmissão
Comparação
Chv. Privada Alice
Chv. Pública Alice
Chv. Privada Bob
Chv. Pública Bob
Chv. Pública Bob
Chv. Privada Alice
Chv. Privada Bob
Chv. Pública Alice
![Page 31: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/31.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
certificados digitais (X.509) documento digital, emitido por CA, para garantir confiança
na chave pública de uma entidade (e na correspondente chave privada)
baseada em assinaturas digitais
26
![Page 32: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/32.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
certificados digitais (X.509) CA«A»=CA{V, SN, AI, CA, [UCA], A, [UA], Ap, TA, [Ext]}
V: o número de versão do certificado (1, 2 ou 3); SN: o número de série do certificado; AI: identifica o algoritmo de assinatura usado para assinar o certificado; CA: o nome distinto da CA emissora; UCA: o identificador único da CA (opcional); A: o nome distinto do sujeito identificado pelo certificado; UA: o identificador único do sujeito (opcional); Ap: a chave pública do sujeito A; TA: o período de validade do certificado descrito por uma data de início e de
fim durante a qual o certificado é válido; Ext: define um conjunto de extensões que permitem a inclusão de informação
adicional no certificado sem alterar o seu formato (opcional).
27
![Page 33: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/33.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
certificados digitais (X.509)28
![Page 34: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/34.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia 101
ok, agora que já sabemos tudo sobre criptografia, como podemos usar isto em PHP?
29
![Page 35: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/35.jpg)
criptografia em PHP30
![Page 36: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/36.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
existem muitas alternativas PEAR (Crypt_Blowfish, Crypt_CBC, Crypt_DiffieHellman,
Crypt_GPG, Crypt_HMAC, Crypt_RC4, Crypt_RSA) extensões criptográficas PHP
Básicas Crack Hash Mcrypt Mhash OpenSSL
phpseclib (PHP Secure Communications Library) ...
31
![Page 37: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/37.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
vamos optar por usar as extensões criptográficas do PHP integradas na própria linguagem (ou dependem de
extensões que necessitar ser activadas)
bibliotecas implementadas em PHP (PEAR e phpseclib) têm problemas de performance
32
![Page 38: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/38.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
extensões criptográficas PHP Básicas Crack Hash Mcrypt Mhash OpenSSL
33
![Page 39: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/39.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
extensões criptográficas PHP34
<?php phpinfo();?>
![Page 40: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/40.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Básicas crypt md5, md5_file sha1, sha1_file
35
![Page 41: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/41.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
crypt algoritmo Unix DES (one-way) string crypt(string $str [, string $salt])
36
![Page 42: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/42.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
md5 calcula o hash md5 de uma string (one-way, 128 bits) string md5 ( string $str [, bool $raw_output = false ] )
37
![Page 43: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/43.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
md5_file calcula o hash md5 de um ficheiro (one-way, 128 bits) string md5_file ( string $filename [, bool $raw_output =
false ] )
38
![Page 44: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/44.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
sha1 calcula o hash sha1 de uma string (one-way, 160 bits) string sha1 ( string $str [, bool $raw_output = false ] )
39
![Page 45: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/45.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
sha1_file calcula o hash sha1 de um ficheiro (one-way, 160 bits) string sha1_file ( string $filename [, bool $raw_output =
false ] )
40
![Page 46: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/46.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Crack/CrackLib funções em PHP que permitem testar a robustez de passwords
resource crack_opendict ( string $dictionary ) bool crack_check ( [resource $dictionary , ]string $password ) string crack_getlastmessage ( void ) bool crack_closedict ([ resource $dictionary ] )
41
![Page 47: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/47.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Hash engine de Message Digest suporta múltiplos algoritmos de digest principais funções:
array hash_algos ( void ) string hash ( string $algo , string $data [, bool $raw_output = false ] ) string hash_file ( string $algo , string $filename [, bool $raw_output =
false ] ) string hash_hmac ( string $algo , string $data , string $key [, bool
$raw_output = false ] ) string hash_hmac_file ( string $algo , string $filename , string $key [,
bool $raw_output = false ] )
42
![Page 48: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/48.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Hash array hash_algos ( void )
43
![Page 49: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/49.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Hash string hash ( string $algo , string $data [, bool $raw_output =
false ] ) string hash_file ( string $algo , string $filename [, bool
$raw_output = false ] )
44
![Page 50: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/50.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Hash string hash_hmac ( string $algo , string $data , string $key [,
bool $raw_output = false ] ) string hash_hmac_file ( string $algo , string $filename , string
$key [, bool $raw_output = false ] )
45
![Page 51: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/51.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Mhash interface para biblioteca Mhash no PHP (http://
mhash.sourceforge.net/) instalada e actividada na configuração do PHP suporte para múltiplos algoritmos de hash lista de hash suportados
MHASH_ADLER32, MHASH_CRC32, MHASH_CRC32B, MHASH_GOST, MHASH_HAVAL128, MHASH_HAVAL160, MHASH_HAVAL192, MHASH_HAVAL256, MHASH_MD4, MHASH_MD5, MHASH_RIPEMD160, MHASH_SHA1, MHASH_SHA256, MHASH_TIGER, MHASH_TIGER128, MHASH_TIGER160
46
![Page 52: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/52.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Mhash string mhash ( int $hash , string $data [, string $key ] )
47
![Page 53: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/53.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Mcrypt interface para a biblioteca mcrypt que suporta um conjunto de
algoritmos de cifra de chave secreta cifra de bloco modos:
Cipher-block Chaining (CFC) Electronic Codebook (ECB) Cipher Feedback (CFB) Output Feedback (OFB)
alguns algoritmos: DES, TripleDES, Blowfish, 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH,
TEA, RC2, GOST, Rijndael (AES), RC6, IDEA
48
![Page 54: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/54.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Mcrypt mcrypt_*
string mcrypt_cbc ( string $cipher , string $key , string $data , int $mode [, string $iv ] )
string mcrypt_cfb ( string $cipher , string $key , string $data , int $mode [, string $iv ] )
string mcrypt_ecb ( string $cipher , string $key , string $data , int $mode [, string $iv ] )
string mcrypt_ofb ( string $cipher , string $key , string $data , int $mode [, string $iv ] )
49
![Page 55: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/55.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Mcrypt mcrypt_*
cipher nome do algoritmo de cifra a usar
key cadeia de caracteres com a dimensão apropriada para o algoritmo a usar
(p.e. AES128, chaves de 128 bits = 128/8 = 16 caracteres) data
dados a serem cifrados ou decifrados mode
operação a ser realizada: cifra ou decifra iv
vector de inicialização
50
![Page 56: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/56.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Mcrypt cifrar e decifrar informação com AES
51
![Page 57: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/57.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
Mcrypt cifrar e decifrar informação com 3DES
52
![Page 58: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/58.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL é um módulo que usa as funções do OpenSSL
(www.openssl.org) para: cifrar e decifrar informação gerar e verificar certificados digitais assinar e verificar digitalmente assinaturas
53
![Page 59: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/59.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL operações (mais relevantes):
criação de um par de chaves criação de um certificado digital cifrar e decifrar informação com criptografia de chave pública assinar e verificar dados com criptografia de chave pública
54
![Page 60: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/60.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de um par de chaves
55
variável password
![Page 61: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/61.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de um par de chaves
56
![Page 62: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/62.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de um par de chaves (escrever ficheiro)
57
![Page 63: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/63.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de um par de chaves (ler de um ficheiro)
58
![Page 64: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/64.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de certificados digitais
59
![Page 65: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/65.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de certificados digitais
60
![Page 66: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/66.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de certificados digitais
61
![Page 67: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/67.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de certificados digitais
62
![Page 68: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/68.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de certificados digitais
63
![Page 69: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/69.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de certificados digitais
64
![Page 70: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/70.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de certificados digitais
64
![Page 71: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/71.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de certificados digitais
64
![Page 72: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/72.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de certificados digitais
64
![Page 73: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/73.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL criação de certificados digitais (leitura de ficheiro)
65
![Page 74: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/74.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL cifrar informação com criptografia de chave pública
66
![Page 75: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/75.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL cifrar informação com criptografia de chave pública
66
![Page 76: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/76.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL decifrar informação com criptografia de chave pública
67
![Page 77: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/77.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL assinatura digital com criptografia de chave pública
68
![Page 78: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/78.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL assinatura digital com criptografia de chave pública
68
![Page 79: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/79.jpg)
Abril 2010OWASP @ ISCTE-IUL
criptografia em PHP
OpenSSL verificar assinatura digital com criptografia de chave pública
69
![Page 80: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/80.jpg)
recomendações70
![Page 81: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/81.jpg)
Abril 2010OWASP @ ISCTE-IUL
recomendações71
![Page 82: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/82.jpg)
Abril 2010OWASP @ ISCTE-IUL
recomendações
não invente!!! não pense que vai inventar um mecanismo criptográfico mais seguro do que outro já existente!
71
![Page 83: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/83.jpg)
Abril 2010OWASP @ ISCTE-IUL
recomendações
não invente!!! não pense que vai inventar um mecanismo criptográfico mais seguro do que outro já existente!
use bibliotecas criptográficas que tenham provas dadas no mercado - em particular (e se possível) open-source
71
![Page 84: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/84.jpg)
Abril 2010OWASP @ ISCTE-IUL
recomendações
não invente!!! não pense que vai inventar um mecanismo criptográfico mais seguro do que outro já existente!
use bibliotecas criptográficas que tenham provas dadas no mercado - em particular (e se possível) open-source
use as bibliotecas criptográficas *correctamente* - o facto de ter uma ferramenta poderosa, não significa que a saiba usar correctamente
71
![Page 85: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/85.jpg)
Abril 2010OWASP @ ISCTE-IUL
recomendações
não invente!!! não pense que vai inventar um mecanismo criptográfico mais seguro do que outro já existente!
use bibliotecas criptográficas que tenham provas dadas no mercado - em particular (e se possível) open-source
use as bibliotecas criptográficas *correctamente* - o facto de ter uma ferramenta poderosa, não significa que a saiba usar correctamente
gerir e proteger as chaves - IMPORTANTE!!! Não serve de nada cifrar informação se a chave ficar comprometida!!!!
71
![Page 86: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/86.jpg)
Abril 2010OWASP @ ISCTE-IUL
gestão do ciclo de vida das chaves72
![Page 87: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/87.jpg)
referências73
![Page 88: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/88.jpg)
Abril 2010OWASP @ ISCTE-IUL
referências
manual online do php, www.php.net/manual Carlos Serrão, Joaquim Marques, “Programação com PHP 5.3”,
FCA, 2009 Carlos Serrão, “Secure Your Data with Cryptography”, php|
architect, Volume 6, Issue 2, pages 8-15, 2007 André Zúquete, “Segurança em Redes Informáticas”, FCA, 2008 Bruce Schneier, “Applied Cryptography”, John Wiley & Sons,
1996 Ross Anderson, “Security Engineering”, Wiley, 2008 (http://
www.cl.cam.ac.uk/~rja14/book.html)
74
![Page 89: OWASP @ ISCTE-IUL, Criptografia em PHP](https://reader034.vdocuments.net/reader034/viewer/2022050721/5573a83cd8b42a51278b4863/html5/thumbnails/89.jpg)
ISCTE-‐IUL/DCTI
Instituto Superior de Ciências do Trabalho e da EmpresaInstituto Universitário de Lisboa
Departamento de Ciências e Tecnologias de Informação
Carlos Serrão
[email protected]@gmail.com
http://www.carlosserrao.nethttp://blog.carlosserrao.nethttp://www.linkedin.com/in/carlosserrao
OWASP @ ISCTE-IULWorkshop de Segurança Aplicacional
Criptografia em PHP