SlideShare ist ein Scribd-Unternehmen logo
1 von 89
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Mehr von Carlos Serrao

Prevenir o "ransomware" - Guia da OWASP para prevenção do "ransomware"
Prevenir o "ransomware" - Guia da OWASP para prevenção do "ransomware"Prevenir o "ransomware" - Guia da OWASP para prevenção do "ransomware"
Prevenir o "ransomware" - Guia da OWASP para prevenção do "ransomware"Carlos Serrao
 
OWASP Mobile Top 10 - Principais Riscos no Desenvolvimento Seguro de Aplicaçõ...
OWASP Mobile Top 10 - Principais Riscos no Desenvolvimento Seguro de Aplicaçõ...OWASP Mobile Top 10 - Principais Riscos no Desenvolvimento Seguro de Aplicaçõ...
OWASP Mobile Top 10 - Principais Riscos no Desenvolvimento Seguro de Aplicaçõ...Carlos Serrao
 
Vamos tirar uma selfie? [... como a privacidade morreu e ninguém nos avisou]
Vamos tirar uma selfie? [... como a privacidade morreu e ninguém nos avisou]Vamos tirar uma selfie? [... como a privacidade morreu e ninguém nos avisou]
Vamos tirar uma selfie? [... como a privacidade morreu e ninguém nos avisou]Carlos Serrao
 
A OWASP e a Segurança Aplicacional para a Web
A OWASP e a Segurança Aplicacional para a WebA OWASP e a Segurança Aplicacional para a Web
A OWASP e a Segurança Aplicacional para a WebCarlos Serrao
 
Segurança e Privacidade em Redes Sociais
Segurança e Privacidade em Redes SociaisSegurança e Privacidade em Redes Sociais
Segurança e Privacidade em Redes SociaisCarlos Serrao
 
Segurança e Privacidade em Redes Sociais
Segurança e Privacidade em Redes SociaisSegurança e Privacidade em Redes Sociais
Segurança e Privacidade em Redes SociaisCarlos Serrao
 
OWASP e o desenvolvimento seguro de aplicações para a Web
OWASP e o desenvolvimento seguro de aplicações para a WebOWASP e o desenvolvimento seguro de aplicações para a Web
OWASP e o desenvolvimento seguro de aplicações para a WebCarlos Serrao
 
Principios básicos de segurança on-line
Principios básicos de segurança on-linePrincipios básicos de segurança on-line
Principios básicos de segurança on-lineCarlos Serrao
 
To DRM or not to DRM?
To DRM or not to DRM?To DRM or not to DRM?
To DRM or not to DRM?Carlos Serrao
 
OWASP presentation on FISTA2011
OWASP presentation on FISTA2011OWASP presentation on FISTA2011
OWASP presentation on FISTA2011Carlos Serrao
 
Análise de Vulnerabilidades em Aplicações na Web Nacional
Análise de Vulnerabilidades em Aplicações na Web NacionalAnálise de Vulnerabilidades em Aplicações na Web Nacional
Análise de Vulnerabilidades em Aplicações na Web NacionalCarlos Serrao
 
Segurança e Privacidade em Redes Sociais
Segurança e Privacidade em Redes SociaisSegurança e Privacidade em Redes Sociais
Segurança e Privacidade em Redes SociaisCarlos Serrao
 
OWASP, PT.OWASP, IBWAS'10 & Cia.
OWASP, PT.OWASP, IBWAS'10 & Cia.OWASP, PT.OWASP, IBWAS'10 & Cia.
OWASP, PT.OWASP, IBWAS'10 & Cia.Carlos Serrao
 
Owasp@iscte iul ferramentas-analise_vulnerabilidades
Owasp@iscte iul ferramentas-analise_vulnerabilidadesOwasp@iscte iul ferramentas-analise_vulnerabilidades
Owasp@iscte iul ferramentas-analise_vulnerabilidadesCarlos Serrao
 
OWASP@ ISCTE-IUL, Segurança em PHP
OWASP@ ISCTE-IUL, Segurança em PHPOWASP@ ISCTE-IUL, Segurança em PHP
OWASP@ ISCTE-IUL, Segurança em PHPCarlos Serrao
 
OWASP @ ISCTE-IUL, OWASP Top 10 2010
OWASP @ ISCTE-IUL, OWASP Top 10 2010OWASP @ ISCTE-IUL, OWASP Top 10 2010
OWASP @ ISCTE-IUL, OWASP Top 10 2010Carlos Serrao
 
OWASP @ ISCTE-IUL - OWASP Top 10 (v2010)
OWASP @ ISCTE-IUL - OWASP Top 10 (v2010)OWASP @ ISCTE-IUL - OWASP Top 10 (v2010)
OWASP @ ISCTE-IUL - OWASP Top 10 (v2010)Carlos Serrao
 
OWASP @ ISCTE-IUL, OWASP e OWASP Portugal
OWASP @ ISCTE-IUL, OWASP e OWASP PortugalOWASP @ ISCTE-IUL, OWASP e OWASP Portugal
OWASP @ ISCTE-IUL, OWASP e OWASP PortugalCarlos Serrao
 

Mehr von Carlos Serrao (20)

Prevenir o "ransomware" - Guia da OWASP para prevenção do "ransomware"
Prevenir o "ransomware" - Guia da OWASP para prevenção do "ransomware"Prevenir o "ransomware" - Guia da OWASP para prevenção do "ransomware"
Prevenir o "ransomware" - Guia da OWASP para prevenção do "ransomware"
 
OWASP Mobile Top 10 - Principais Riscos no Desenvolvimento Seguro de Aplicaçõ...
OWASP Mobile Top 10 - Principais Riscos no Desenvolvimento Seguro de Aplicaçõ...OWASP Mobile Top 10 - Principais Riscos no Desenvolvimento Seguro de Aplicaçõ...
OWASP Mobile Top 10 - Principais Riscos no Desenvolvimento Seguro de Aplicaçõ...
 
OWASP Mobile Top 10
OWASP Mobile Top 10OWASP Mobile Top 10
OWASP Mobile Top 10
 
Vamos tirar uma selfie? [... como a privacidade morreu e ninguém nos avisou]
Vamos tirar uma selfie? [... como a privacidade morreu e ninguém nos avisou]Vamos tirar uma selfie? [... como a privacidade morreu e ninguém nos avisou]
Vamos tirar uma selfie? [... como a privacidade morreu e ninguém nos avisou]
 
A OWASP e a Segurança Aplicacional para a Web
A OWASP e a Segurança Aplicacional para a WebA OWASP e a Segurança Aplicacional para a Web
A OWASP e a Segurança Aplicacional para a Web
 
Segurança e Privacidade em Redes Sociais
Segurança e Privacidade em Redes SociaisSegurança e Privacidade em Redes Sociais
Segurança e Privacidade em Redes Sociais
 
Segurança e Privacidade em Redes Sociais
Segurança e Privacidade em Redes SociaisSegurança e Privacidade em Redes Sociais
Segurança e Privacidade em Redes Sociais
 
OWASP e o desenvolvimento seguro de aplicações para a Web
OWASP e o desenvolvimento seguro de aplicações para a WebOWASP e o desenvolvimento seguro de aplicações para a Web
OWASP e o desenvolvimento seguro de aplicações para a Web
 
Principios básicos de segurança on-line
Principios básicos de segurança on-linePrincipios básicos de segurança on-line
Principios básicos de segurança on-line
 
To DRM or not to DRM?
To DRM or not to DRM?To DRM or not to DRM?
To DRM or not to DRM?
 
OWASP presentation on FISTA2011
OWASP presentation on FISTA2011OWASP presentation on FISTA2011
OWASP presentation on FISTA2011
 
Análise de Vulnerabilidades em Aplicações na Web Nacional
Análise de Vulnerabilidades em Aplicações na Web NacionalAnálise de Vulnerabilidades em Aplicações na Web Nacional
Análise de Vulnerabilidades em Aplicações na Web Nacional
 
Segurança e Privacidade em Redes Sociais
Segurança e Privacidade em Redes SociaisSegurança e Privacidade em Redes Sociais
Segurança e Privacidade em Redes Sociais
 
OWASP, PT.OWASP, IBWAS'10 & Cia.
OWASP, PT.OWASP, IBWAS'10 & Cia.OWASP, PT.OWASP, IBWAS'10 & Cia.
OWASP, PT.OWASP, IBWAS'10 & Cia.
 
Is the Web at Risk?
Is the Web at Risk?Is the Web at Risk?
Is the Web at Risk?
 
Owasp@iscte iul ferramentas-analise_vulnerabilidades
Owasp@iscte iul ferramentas-analise_vulnerabilidadesOwasp@iscte iul ferramentas-analise_vulnerabilidades
Owasp@iscte iul ferramentas-analise_vulnerabilidades
 
OWASP@ ISCTE-IUL, Segurança em PHP
OWASP@ ISCTE-IUL, Segurança em PHPOWASP@ ISCTE-IUL, Segurança em PHP
OWASP@ ISCTE-IUL, Segurança em PHP
 
OWASP @ ISCTE-IUL, OWASP Top 10 2010
OWASP @ ISCTE-IUL, OWASP Top 10 2010OWASP @ ISCTE-IUL, OWASP Top 10 2010
OWASP @ ISCTE-IUL, OWASP Top 10 2010
 
OWASP @ ISCTE-IUL - OWASP Top 10 (v2010)
OWASP @ ISCTE-IUL - OWASP Top 10 (v2010)OWASP @ ISCTE-IUL - OWASP Top 10 (v2010)
OWASP @ ISCTE-IUL - OWASP Top 10 (v2010)
 
OWASP @ ISCTE-IUL, OWASP e OWASP Portugal
OWASP @ ISCTE-IUL, OWASP e OWASP PortugalOWASP @ ISCTE-IUL, OWASP e OWASP Portugal
OWASP @ ISCTE-IUL, OWASP e OWASP Portugal
 

OWASP @ ISCTE-IUL, Criptografia em PHP

  • 1. 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
  • 2. 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. 3 criptografia em aplicações web
  • 4. criptografia em aplicações web 4  criptografia?  $notEncrypted  =  base64_encode($data);  $notEncrypted  =  urlencode($data);  $notEncrypted  =  crc32(); OWASP @ ISCTE-IUL Abril 2010
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. criptografia 101 13 OWASP @ ISCTE-IUL Abril 2010
  • 18. criptografia 101 13 OWASP @ ISCTE-IUL Abril 2010
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. criptografia 101 19  confidencialidade  integridade  autenticação  (não-repúdio) OWASP @ ISCTE-IUL Abril 2010
  • 25. 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
  • 26. criptografia 101 21  criptografia chave simétrica *+,-%&.%$/%0,&1.23& .2&1456(/7,89(3& !"#$%& '()& OWASP @ ISCTE-IUL Abril 2010
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. criptografia 101 28  certificados digitais (X.509) OWASP @ ISCTE-IUL Abril 2010
  • 34. criptografia 101 29  ok, agora que já sabemos tudo sobre criptografia, como podemos usar isto em PHP? OWASP @ ISCTE-IUL Abril 2010
  • 36. 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
  • 37. 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
  • 38. criptografia em PHP 33  extensões criptográficas PHP  Básicas  Crack  Hash  Mcrypt  Mhash  OpenSSL OWASP @ ISCTE-IUL Abril 2010
  • 39. criptografia em PHP 34  extensões criptográficas PHP <?php        phpinfo(); ?> OWASP @ ISCTE-IUL Abril 2010
  • 40. criptografia em PHP 35  Básicas  crypt  md5, md5_file  sha1, sha1_file OWASP @ ISCTE-IUL Abril 2010
  • 41. criptografia em PHP 36  crypt  algoritmo Unix DES (one-way)  string crypt(string $str [, string $salt]) OWASP @ ISCTE-IUL Abril 2010
  • 42. 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
  • 43. 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
  • 44. 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
  • 45. 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
  • 46. 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
  • 47. 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
  • 48. criptografia em PHP 43  Hash  array hash_algos ( void ) OWASP @ ISCTE-IUL Abril 2010
  • 49. 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
  • 50. 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
  • 51. 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
  • 52. criptografia em PHP 47  Mhash  string mhash ( int $hash , string $data [, string $key ] ) OWASP @ ISCTE-IUL Abril 2010
  • 53. 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
  • 54. 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
  • 55. 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
  • 56. criptografia em PHP 51  Mcrypt  cifrar e decifrar informação com AES OWASP @ ISCTE-IUL Abril 2010
  • 57. criptografia em PHP 52  Mcrypt  cifrar e decifrar informação com 3DES OWASP @ ISCTE-IUL Abril 2010
  • 58. 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
  • 59. 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
  • 60. criptografia em PHP 55  OpenSSL  criação de um par de chaves variável password OWASP @ ISCTE-IUL Abril 2010
  • 61. criptografia em PHP 56  OpenSSL  criação de um par de chaves OWASP @ ISCTE-IUL Abril 2010
  • 62. criptografia em PHP 57  OpenSSL  criação de um par de chaves (escrever ficheiro) OWASP @ ISCTE-IUL Abril 2010
  • 63. criptografia em PHP 58  OpenSSL  criação de um par de chaves (ler de um ficheiro) OWASP @ ISCTE-IUL Abril 2010
  • 64. criptografia em PHP 59  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • 65. criptografia em PHP 60  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • 66. criptografia em PHP 61  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • 67. criptografia em PHP 62  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • 68. criptografia em PHP 63  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • 69. criptografia em PHP 64  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • 70. criptografia em PHP 64  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • 71. criptografia em PHP 64  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • 72. criptografia em PHP 64  OpenSSL  criação de certificados digitais OWASP @ ISCTE-IUL Abril 2010
  • 73. criptografia em PHP 65  OpenSSL  criação de certificados digitais (leitura de ficheiro) OWASP @ ISCTE-IUL Abril 2010
  • 74. criptografia em PHP 66  OpenSSL  cifrar informação com criptografia de chave pública OWASP @ ISCTE-IUL Abril 2010
  • 75. criptografia em PHP 66  OpenSSL  cifrar informação com criptografia de chave pública OWASP @ ISCTE-IUL Abril 2010
  • 76. criptografia em PHP 67  OpenSSL  decifrar informação com criptografia de chave pública OWASP @ ISCTE-IUL Abril 2010
  • 77. criptografia em PHP 68  OpenSSL  assinatura digital com criptografia de chave pública OWASP @ ISCTE-IUL Abril 2010
  • 78. criptografia em PHP 68  OpenSSL  assinatura digital com criptografia de chave pública OWASP @ ISCTE-IUL Abril 2010
  • 79. criptografia em PHP 69  OpenSSL  verificar assinatura digital com criptografia de chave pública OWASP @ ISCTE-IUL Abril 2010
  • 81. recomendações 71 OWASP @ ISCTE-IUL Abril 2010
  • 82. 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
  • 83. 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
  • 84. 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
  • 85. 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
  • 86. gestão do ciclo de vida das chaves 72 OWASP @ ISCTE-IUL Abril 2010
  • 88. 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
  • 89. 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