OWASP @ ISCTE-IUL, Criptografia em PHP
Upcoming SlideShare
Loading in...5
×
 

OWASP @ ISCTE-IUL, Criptografia em PHP

on

  • 3,842 views

Apresentação realizada no OWASP @ ISCTE-IUL, Workshop de Segurança Aplicacional, sobre Criptografia em PHP.

Apresentação realizada no OWASP @ ISCTE-IUL, Workshop de Segurança Aplicacional, sobre Criptografia em PHP.

Statistics

Views

Total Views
3,842
Views on SlideShare
3,583
Embed Views
259

Actions

Likes
2
Downloads
91
Comments
0

7 Embeds 259

http://webappsec.netmust.eu 208
http://www.websegura.net 26
http://www.slideshare.net 15
http://www.carlosserrao.net 7
http://blog.carlosserrao.net 1
http://www.netmust.eu 1
http://webcache.googleusercontent.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

OWASP @ ISCTE-IUL, Criptografia em PHP OWASP @ ISCTE-IUL, Criptografia em PHP Presentation Transcript

  • OWASP @ ISCTE-IUL Workshop de Segurança Aplicacional Criptografia em PHP ISCTE-­‐IUL/DCTI Carlos  Serrão Instituto  Superior  de  Ciências  do  Trabalho  e  da  Empresa carlos.serrao@iscte.pt Instituto  Universitário  de  Lisboa carlos.j.serrao@gmail.com Departamento  de  Ciências  e  Tecnologias  de  Informação http://www.carlosserrao.net http://blog.carlosserrao.net http://www.linkedin.com/in/carlosserrao
  • agenda 2  criptografia em aplicações web  criptografia 101  criptografia em PHP  funções hash  criptografia simétrica  criptografia assimétrica  certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • 3 criptografia em aplicações web
  • criptografia em aplicações web 4  criptografia?  $notEncrypted  =  base64_encode($data);  $notEncrypted  =  urlencode($data);  $notEncrypted  =  crc32(); OWASP @ ISCTE-IUL Abril 2010
  • criptografia em aplicações web 5  criptografia!  $encrypted  =  mcrypt_generic($mcryptResource,   $data);  $hash  =  hash($algorithm,  $data);  $hmac  =  hash_hmac($algorithm,  $data,  $key); OWASP @ ISCTE-IUL Abril 2010
  • criptografia em aplicações web 6  porquê?  necessidade de garantir confidencialidade  necessidade de garantir integridade  necessidade de verificar a identidade  necessidade de garantir não-repúdio OWASP @ ISCTE-IUL Abril 2010
  • criptografia em aplicações web 7  OWASP Top 10  evitar o A9 - Armazenamento Criptográfico Inseguro  cifrarficheiros, cifrar BD, cifrar elementos XML  usar a criptografia de forma apropriada  não invente!!! usar apenas mecanismos criptográficos conhecidos e testados OWASP @ ISCTE-IUL Abril 2010
  • criptografia em aplicações web 8  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 OWASP @ ISCTE-IUL Abril 2010
  • criptografia em aplicações web 9  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 OWASP @ ISCTE-IUL Abril 2010
  • 10 criptografia 101
  • criptografia 101 11  ao longo da história têm sido concebidos diversos métodos para ocultar informação  antiga Grécia  antigo Império Romano  atribui-sea 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 OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 12 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 OWASP @ ISCTE-IUL Abril 2010 confidencialidade
  • criptografia 101 12 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 OWASP @ ISCTE-IUL Abril 2010 confidencialidade
  • criptografia 101 12 A B C D E F G H I J K L M C D E F G H I J K L M N O N O P Q R S T U V W X Y Z P Q R S T U V W X Y Z A B chave = 2 OWASP @ ISCTE-IUL Abril 2010 confidencialidade
  • criptografia 101 12 A B C D E F G H I J K L M C D E F G H I J K L M N O N O P Q R S T U V W X Y Z P Q R S T U V W X Y Z A B chave = 2 CARLOS SERRAO OWASP @ ISCTE-IUL Abril 2010 confidencialidade
  • criptografia 101 12 A B C D E F G H I J K L M C D E F G H I J K L M N O N O P Q R S T U V W X Y Z P Q R S T U V W X Y Z A B chave = 2 CARLOS SERRAO = ECTNQU UGTTCQ OWASP @ ISCTE-IUL Abril 2010 confidencialidade
  • criptografia 101 13 OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 13 OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 14  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 OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 15  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) OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 16  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)) OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 17  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 OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 18  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 OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 19  confidencialidade  integridade  autenticação  (não-repúdio) OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 20  criptografia  chave simétrica  chave assimétrica  funções resumo/síntese  assinaturas digitais  certificados digitais (X.509) OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 21  criptografia chave simétrica *+,-%&.%$/%0,&1.23& .2&1456(/7,89(3& !"#$%& '()& OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 22  criptografia chave assimétrica *+,-%&.5#-,0,& *+,-%&.5#-,0,& *+,-%&./)"#$,& *+,-%&./)"#$,& 0,&!"#$%& 0(&'()& 0,&!"#$%& 0(&'()& .,5&0%&*+,-%:& .,5&0%&*+,-%:& *+,-%&./)"#$,&0(&'()&1234(56,78(9& *+,-%&./)"#$,&0,&!"#$%&1234(56,78(9& !"#$%& '()& OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 23  funções de resumo/síntese  one-way functions M ƒ(x) h dimensão fixa h = ƒ(M) mas não existe ƒ-1(h) = M OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 24  funções de resumo/síntese M M trans mis s ão M H c omparaç ão H OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 25  assinaturas digitais Chv. Privada Bob Chv. Pública Bob Transmissão Alg. Mensagem Enc. Mensagem Mensagem Dec. Mensagem Resumo’ Resumo Resumo Resumo Alg. Chv. Privada Alice Chv. Pública Alice Resumo Comparação Resumo Enc. Resumo Dec. Resumo Chv. Privada Alice Chv. Privada Bob Alice Chv. Pública Alice Bob Chv. Pública Bob OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 26  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 OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 27  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). OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 28  certificados digitais (X.509) OWASP @ ISCTE-IUL Abril 2010
  • criptografia 101 29  ok, agora que já sabemos tudo sobre criptografia, como podemos usar isto em PHP? OWASP @ ISCTE-IUL Abril 2010
  • 30 criptografia em PHP
  • criptografia em PHP 31  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)  ... OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 32  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 OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 33  extensões criptográficas PHP  Básicas  Crack  Hash  Mcrypt  Mhash  OpenSSL OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 34  extensões criptográficas PHP <?php        phpinfo(); ?> OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 35  Básicas  crypt  md5, md5_file  sha1, sha1_file OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 36  crypt  algoritmo Unix DES (one-way)  string crypt(string $str [, string $salt]) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 37  md5  calcula o hash md5 de uma string (one-way, 128 bits)  string md5 ( string $str [, bool $raw_output = false ] ) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 38  md5_file  calcula o hash md5 de um ficheiro (one-way, 128 bits)  string md5_file ( string $filename [, bool $raw_output = false ] ) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 39  sha1  calcula o hash sha1 de uma string (one-way, 160 bits)  string sha1 ( string $str [, bool $raw_output = false ] ) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 40  sha1_file  calcula o hash sha1 de um ficheiro (one-way, 160 bits)  string sha1_file ( string $filename [, bool $raw_output = false ] ) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 41  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 ] ) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 42  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 ] ) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 43  Hash  array hash_algos ( void ) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 44  Hash  string hash ( string $algo , string $data [, bool $raw_output = false ] )  string hash_file ( string $algo , string $filename [, bool $raw_output = false ] ) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 45  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 ] ) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 46  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 OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 47  Mhash  string mhash ( int $hash , string $data [, string $key ] ) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 48  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 OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 49  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 ] ) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 50  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 OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 51  Mcrypt  cifrar e decifrar informação com AES OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 52  Mcrypt  cifrar e decifrar informação com 3DES OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 53  OpenSSL é um módulo que usa as funções do OpenSSL (www.openssl.org) para:  cifrare decifrar informação  gerar e verificar certificados digitais  assinar e verificar digitalmente assinaturas OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 54  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 OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 55  OpenSSL  criação de um par de chaves variável password OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 56  OpenSSL  criação de um par de chaves OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 57  OpenSSL  criação de um par de chaves (escrever ficheiro) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 58  OpenSSL  criação de um par de chaves (ler de um ficheiro) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 59  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 60  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 61  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 62  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 63  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 64  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 64  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 64  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 64  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 65  OpenSSL  criação de certificados digitais (leitura de ficheiro) OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 66  OpenSSL  cifrar informação com criptografia de chave pública OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 66  OpenSSL  cifrar informação com criptografia de chave pública OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 67  OpenSSL  decifrar informação com criptografia de chave pública OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 68  OpenSSL  assinatura digital com criptografia de chave pública OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 68  OpenSSL  assinatura digital com criptografia de chave pública OWASP @ ISCTE-IUL Abril 2010
  • criptografia em PHP 69  OpenSSL  verificar assinatura digital com criptografia de chave pública OWASP @ ISCTE-IUL Abril 2010
  • 70 recomendações
  • recomendações 71 OWASP @ ISCTE-IUL Abril 2010
  • recomendações 71  não invente!!! não pense que vai inventar um mecanismo criptográfico mais seguro do que outro já existente! OWASP @ ISCTE-IUL Abril 2010
  • recomendações 71  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 OWASP @ ISCTE-IUL Abril 2010
  • recomendações 71  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 OWASP @ ISCTE-IUL Abril 2010
  • recomendações 71  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!!!! OWASP @ ISCTE-IUL Abril 2010
  • gestão do ciclo de vida das chaves 72 OWASP @ ISCTE-IUL Abril 2010
  • 73 referências
  • referências 74  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) OWASP @ ISCTE-IUL Abril 2010
  • OWASP @ ISCTE-IUL Workshop de Segurança Aplicacional Criptografia em PHP ISCTE-­‐IUL/DCTI Carlos  Serrão Instituto  Superior  de  Ciências  do  Trabalho  e  da  Empresa carlos.serrao@iscte.pt Instituto  Universitário  de  Lisboa carlos.j.serrao@gmail.com Departamento  de  Ciências  e  Tecnologias  de  Informação http://www.carlosserrao.net http://blog.carlosserrao.net http://www.linkedin.com/in/carlosserrao