Loading ...
Sorry, an error occurred while loading the content.

Algoritmo pra salvar senha no banco. (Motivado pelo pdf da última reunião)

Expand Messages
  • Felipe Cypriano
    Olá pessoal, Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5. Hoje
    Message 1 of 12 , Mar 2 6:14 AM
    • 0 Attachment
      Olá pessoal,

      Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5.

      Hoje eu uso MD5 para salvar as senhas dos usuário no banco. Estimulado pelo pdf fui procurar alternativas, encontrei o Blowfish (jBcrypt) e Twofish são ambos do mesmo autor o Twofish é a evolução do primeiro mas, é menos usado.

      Vocês conhecem, já usaram?


      ---
      Felipe Marin Cypriano
      Vitória - ES
    • Alex Rodrigues
      Bom Dia,Eu também li esse tópico e fiquei curioso como você. Realmente vamos ter sistemas que vão precisar de mais do que MD5. Já leu sobre o SHA-256 ou
      Message 2 of 12 , Mar 2 6:30 AM
      • 0 Attachment
        Bom Dia,
        Eu também li esse tópico e fiquei curioso como você.
        Realmente vamos ter sistemas que vão precisar de mais do que MD5.
        Já leu sobre o SHA-256 ou SHA-512?



        2009/3/2 Felipe Cypriano <fmcypriano@...>

        Olá pessoal,

        Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5.

        Hoje eu uso MD5 para salvar as senhas dos usuário no banco. Estimulado pelo pdf fui procurar alternativas, encontrei o Blowfish (jBcrypt) e Twofish são ambos do mesmo autor o Twofish é a evolução do primeiro mas, é menos usado.

        Vocês conhecem, já usaram?


        ---
        Felipe Marin Cypriano
        Vitória - ES




        --
        Alex Rodrigues da Silva
        Analista de Sistemas
        alrsilva@...
      • Felipe Cypriano
        Lendo rapidamente mais um pouco sobre o assunto descobri que existem Salted Hash: The reader might now say that saving the password as a hash would be ...
        Message 3 of 12 , Mar 2 6:58 AM
        • 0 Attachment
          Lendo rapidamente mais um pouco sobre o assunto descobri que existem Salted Hash:

          "The reader might now say that saving the password as a hash would be sufficient, but why is this wrong?

          The reason for this is that usually so called 'Dictionary Attacks' are run against hashed passwords - a good example being the MD5 hashed passwords of NT4. This is a Brute Force attack: all entries in a dictionary were hashed using MD5 and those hash values then are compared against the password database. Have a guess how quickly some passwords are found this way.

          The intention behind a Salted Hash is to have this type of attack fail by attaching a random value - the so called salt - to each password and only then compute the hash over password and salt. For comparison of the password the salt has to be stored alongside the salted hash, but the only vector of attack is to re-code the dictionary for each individually stored password with the salt - and this takes quite a long time."


          Para evitar ataques simples é preciso usar um algoritmo de hash que use "Salt". O MD5 não usa, acho que SHA também não, o jBcrypt usa (Blowfish). Estou lendo mais para entender melhor.

          Att,
          ---
          Felipe Marin Cypriano
          Vitória - ES


          2009/3/2 Alex Rodrigues <alrsilva@...>

          Bom Dia,

          Eu também li esse tópico e fiquei curioso como você.
          Realmente vamos ter sistemas que vão precisar de mais do que MD5.
          Já leu sobre o SHA-256 ou SHA-512?



          2009/3/2 Felipe Cypriano <fmcypriano@...>

          Olá pessoal,

          Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5.

          Hoje eu uso MD5 para salvar as senhas dos usuário no banco. Estimulado pelo pdf fui procurar alternativas, encontrei o Blowfish (jBcrypt) e Twofish são ambos do mesmo autor o Twofish é a evolução do primeiro mas, é menos usado.

          Vocês conhecem, já usaram?


          ---
          Felipe Marin Cypriano
          Vitória - ES




          --
          Alex Rodrigues da Silva
          Analista de Sistemas
          alrsilva@...

        • Felipe Cypriano
          Faltou a fonte da citação: http://www.aspheute.com/english/20040105.asp Att, ... Felipe Marin Cypriano Vitória - ES 2009/3/2 Felipe Cypriano
          Message 4 of 12 , Mar 2 6:59 AM
          • 0 Attachment
            Faltou a fonte da citação: http://www.aspheute.com/english/20040105.asp

            Att,
            ---
            Felipe Marin Cypriano
            Vitória - ES


            2009/3/2 Felipe Cypriano <fmcypriano@...>
            Lendo rapidamente mais um pouco sobre o assunto descobri que existem Salted Hash:

            "The reader might now say that saving the password as a hash would be sufficient, but why is this wrong?

            The reason for this is that usually so called 'Dictionary Attacks' are run against hashed passwords - a good example being the MD5 hashed passwords of NT4. This is a Brute Force attack: all entries in a dictionary were hashed using MD5 and those hash values then are compared against the password database. Have a guess how quickly some passwords are found this way.

            The intention behind a Salted Hash is to have this type of attack fail by attaching a random value - the so called salt - to each password and only then compute the hash over password and salt. For comparison of the password the salt has to be stored alongside the salted hash, but the only vector of attack is to re-code the dictionary for each individually stored password with the salt - and this takes quite a long time."


            Para evitar ataques simples é preciso usar um algoritmo de hash que use "Salt". O MD5 não usa, acho que SHA também não, o jBcrypt usa (Blowfish). Estou lendo mais para entender melhor.

            Att,

            ---
            Felipe Marin Cypriano
            Vitória - ES


            2009/3/2 Alex Rodrigues <alrsilva@...>

            Bom Dia,

            Eu também li esse tópico e fiquei curioso como você.
            Realmente vamos ter sistemas que vão precisar de mais do que MD5.
            Já leu sobre o SHA-256 ou SHA-512?



            2009/3/2 Felipe Cypriano <fmcypriano@...>

            Olá pessoal,

            Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5.

            Hoje eu uso MD5 para salvar as senhas dos usuário no banco. Estimulado pelo pdf fui procurar alternativas, encontrei o Blowfish (jBcrypt) e Twofish são ambos do mesmo autor o Twofish é a evolução do primeiro mas, é menos usado.

            Vocês conhecem, já usaram?


            ---
            Felipe Marin Cypriano
            Vitória - ES




            --
            Alex Rodrigues da Silva
            Analista de Sistemas
            alrsilva@...


          • Victor Hogemann
            Hummm, MD5 não é um algorítmo de cifra, mas sim um algoritmo de Hash. Quando você usa MD5 para autenticação o que você salva no banco não é a senha
            Message 5 of 12 , Mar 2 7:03 AM
            • 0 Attachment
              Hummm,

              MD5 não é um algorítmo de cifra, mas sim um algoritmo de Hash.

              Quando você usa MD5 para autenticação o que você salva no banco não é a senha criptografada, mas sim o CheckSum dela usando MD5. Para autenticar, o fluxo é mais ou menos o seguinte:

              1) Usuário fornece a senha
              2) Aplicação aplica MD5 no valor informado
              3) Aplicação compara o valor do MD5 calculado com o armazenado em banco
              4) Se os valores forem iguais, autoriza o login

              O MD5 em si não preserva nenhuma informação a respeito da senha, então mesmo que alguém tenha acesso ao seu banco de dados não vai conseguir recuperar as senhas a princípio. Mas existem formas de utilizar o MD5 para chegar a senha original, ou a uma outra seqüência de caracteres que gere o mesmo hash, utilizando tabelas com pares de senha/hash comuns. Mas isso é um problema somente se:

              a) Você transmite o MD5 da senha sobre uma conexão não segura
              b) Muitas pessoas tem acesso ao banco de dados do seu aplicativo

              Além disso, existe uma forma de minimizar, ou até mesmo eliminar, o problema, que é adicionar uma string a senha (prática conhecida como salting) antes de aplicar o MD5. Essa string é conhecida somente pela sua aplicação, e é adicionada a todas as senhas antes de aplicar o MD5 para ser salvo no banco.

              O Blowfish é um algoritmo de cifra, mas pode ser utilizado para gerar Hashes também. Sendo que ele não sofre da mesma vulnerabilidade do MD5.

              Resumindo, o importante é que independente do algoritmo utilizado a prática correta é salvar o HASH da senha no banco, e não a senha em si... mesmo que criptografada.

              [ ]s

              Victor Hogemann

              On Mar 2, 2009, at 11:14 AM, Felipe Cypriano wrote:

              Olá pessoal,

              Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5.

              Hoje eu uso MD5 para salvar as senhas dos usuário no banco. Estimulado pelo pdf fui procurar alternativas, encontrei o Blowfish (jBcrypt) e Twofish são ambos do mesmo autor o Twofish é a evolução do primeiro mas, é menos usado.

              Vocês conhecem, já usaram?


              ---
              Felipe Marin Cypriano
              Vitória - ES


            • Peter P. Lupo
              Qualquer algoritmo de hash pode ser usado com salt e não é difícil... basta googlar... Abraço! Peter P. Lupo Undergraduating in Computer Science DCC/UFRJ
              Message 6 of 12 , Mar 2 7:16 AM
              • 0 Attachment
                Qualquer algoritmo de hash pode ser usado com salt e não é difícil... basta googlar...

                Abraço!


                Peter P. Lupo
                Undergraduating in Computer Science DCC/UFRJ
                MPS.BR Authorized Implementation Practitioner
                Sun Certified Java Associate
                http://pplupo.googlepages.com/
                Cell. +55 (021) 81742487


                2009/3/2 Felipe Cypriano <fmcypriano@...>
                Faltou a fonte da citação: http://www.aspheute.com/english/20040105.asp


                Att,
                ---
                Felipe Marin Cypriano
                Vitória - ES


                2009/3/2 Felipe Cypriano <fmcypriano@...>
                Lendo rapidamente mais um pouco sobre o assunto descobri que existem Salted Hash:

                "The reader might now say that saving the password as a hash would be sufficient, but why is this wrong?

                The reason for this is that usually so called 'Dictionary Attacks' are run against hashed passwords - a good example being the MD5 hashed passwords of NT4. This is a Brute Force attack: all entries in a dictionary were hashed using MD5 and those hash values then are compared against the password database. Have a guess how quickly some passwords are found this way.

                The intention behind a Salted Hash is to have this type of attack fail by attaching a random value - the so called salt - to each password and only then compute the hash over password and salt. For comparison of the password the salt has to be stored alongside the salted hash, but the only vector of attack is to re-code the dictionary for each individually stored password with the salt - and this takes quite a long time."


                Para evitar ataques simples é preciso usar um algoritmo de hash que use "Salt". O MD5 não usa, acho que SHA também não, o jBcrypt usa (Blowfish). Estou lendo mais para entender melhor.

                Att,

                ---
                Felipe Marin Cypriano
                Vitória - ES


                2009/3/2 Alex Rodrigues <alrsilva@...>

                Bom Dia,

                Eu também li esse tópico e fiquei curioso como você.
                Realmente vamos ter sistemas que vão precisar de mais do que MD5.
                Já leu sobre o SHA-256 ou SHA-512?



                2009/3/2 Felipe Cypriano <fmcypriano@...>

                Olá pessoal,

                Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5.

                Hoje eu uso MD5 para salvar as senhas dos usuário no banco. Estimulado pelo pdf fui procurar alternativas, encontrei o Blowfish (jBcrypt) e Twofish são ambos do mesmo autor o Twofish é a evolução do primeiro mas, é menos usado.

                Vocês conhecem, já usaram?


                ---
                Felipe Marin Cypriano
                Vitória - ES




                --
                Alex Rodrigues da Silva
                Analista de Sistemas
                alrsilva@...





              • Alex Rodrigues
                http://www.owasp.org/index.php/Hashing_Java 2009/3/2 Peter P. Lupo ... -- Alex Rodrigues da Silva Analista de Sistemas
                Message 7 of 12 , Mar 2 8:10 AM
                • 0 Attachment
                  http://www.owasp.org/index.php/Hashing_Java

                  2009/3/2 Peter P. Lupo <peterplupo@...>

                  Qualquer algoritmo de hash pode ser usado com salt e não é difícil... basta googlar...

                  Abraço!


                  Peter P. Lupo
                  Undergraduating in Computer Science DCC/UFRJ
                  MPS.BR Authorized Implementation Practitioner
                  Sun Certified Java Associate
                  http://pplupo.googlepages.com/
                  Cell. +55 (021) 81742487




                  2009/3/2 Felipe Cypriano <fmcypriano@...>
                  Faltou a fonte da citação: http://www.aspheute.com/english/20040105.asp


                  Att,
                  ---
                  Felipe Marin Cypriano
                  Vitória - ES


                  2009/3/2 Felipe Cypriano <fmcypriano@...>
                  Lendo rapidamente mais um pouco sobre o assunto descobri que existem Salted Hash:

                  "The reader might now say that saving the password as a hash would be sufficient, but why is this wrong?

                  The reason for this is that usually so called 'Dictionary Attacks' are run against hashed passwords - a good example being the MD5 hashed passwords of NT4. This is a Brute Force attack: all entries in a dictionary were hashed using MD5 and those hash values then are compared against the password database. Have a guess how quickly some passwords are found this way.

                  The intention behind a Salted Hash is to have this type of attack fail by attaching a random value - the so called salt - to each password and only then compute the hash over password and salt. For comparison of the password the salt has to be stored alongside the salted hash, but the only vector of attack is to re-code the dictionary for each individually stored password with the salt - and this takes quite a long time."


                  Para evitar ataques simples é preciso usar um algoritmo de hash que use "Salt". O MD5 não usa, acho que SHA também não, o jBcrypt usa (Blowfish). Estou lendo mais para entender melhor.

                  Att,

                  ---
                  Felipe Marin Cypriano
                  Vitória - ES


                  2009/3/2 Alex Rodrigues <alrsilva@...>

                  Bom Dia,

                  Eu também li esse tópico e fiquei curioso como você.
                  Realmente vamos ter sistemas que vão precisar de mais do que MD5.
                  Já leu sobre o SHA-256 ou SHA-512?



                  2009/3/2 Felipe Cypriano <fmcypriano@...>

                  Olá pessoal,

                  Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5.

                  Hoje eu uso MD5 para salvar as senhas dos usuário no banco. Estimulado pelo pdf fui procurar alternativas, encontrei o Blowfish (jBcrypt) e Twofish são ambos do mesmo autor o Twofish é a evolução do primeiro mas, é menos usado.

                  Vocês conhecem, já usaram?


                  ---
                  Felipe Marin Cypriano
                  Vitória - ES




                  --
                  Alex Rodrigues da Silva
                  Analista de Sistemas
                  alrsilva@...








                  --
                  Alex Rodrigues da Silva
                  Analista de Sistemas
                  alrsilva@...
                • Andre Rodrigues
                  Prezado Felipe, A que reunião você se refere? Tem como enviar este PDF? O assunto segurança muito me interessa. Obrigado, André ... From: Alex Rodrigues
                  Message 8 of 12 , Mar 2 10:32 AM
                  • 0 Attachment
                    Prezado Felipe,

                    A que reunião você se refere?

                    Tem como enviar este PDF? O assunto segurança muito me interessa.


                    Obrigado,
                    André

                    --- On Mon, 3/2/09, Alex Rodrigues <alrsilva@...> wrote:
                    From: Alex Rodrigues <alrsilva@...>
                    Subject: Re: [riojug] Algoritmo pra salvar senha no banco. (Motivado pelo pdf da última reunião)
                    To: riojug@yahoogroups.com
                    Date: Monday, March 2, 2009, 6:30 AM

                    Bom Dia,

                    Eu também li esse tópico e fiquei curioso como você.
                    Realmente vamos ter sistemas que vão precisar de mais do que MD5.
                    Já leu sobre o SHA-256 ou SHA-512?



                    2009/3/2 Felipe Cypriano <fmcypriano@gmail. com>

                    Olá pessoal,

                    Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5.

                    Hoje eu uso MD5 para salvar as senhas dos usuário no banco. Estimulado pelo pdf fui procurar alternativas, encontrei o Blowfish (jBcrypt) e Twofish são ambos do mesmo autor o Twofish é a evolução do primeiro mas, é menos usado.

                    Vocês conhecem, já usaram?


                    ---
                    Felipe Marin Cypriano
                    Vitória - ES




                    --
                    Alex Rodrigues da Silva
                    Analista de Sistemas
                    alrsilva@gmail. com

                  • Felipe Cypriano
                    O link: http://groups.yahoo.com/group/riojug/files/Palestras/Reuniao_RioJUG_20090210_CodificacaoSegura.pdf ... Felipe Marin Cypriano Vitória - ES 2009/3/2
                    Message 9 of 12 , Mar 2 10:41 AM
                    • 0 Attachment
                      O link: http://groups.yahoo.com/group/riojug/files/Palestras/Reuniao_RioJUG_20090210_CodificacaoSegura.pdf


                      ---
                      Felipe Marin Cypriano
                      Vitória - ES


                      2009/3/2 Andre Rodrigues <acastanheira2001@...>

                      Prezado Felipe,

                      A que reunião você se refere?

                      Tem como enviar este PDF? O assunto segurança muito me interessa.


                      Obrigado,
                      André

                      --- On Mon, 3/2/09, Alex Rodrigues <alrsilva@...> wrote:
                      From: Alex Rodrigues <alrsilva@...>
                      Subject: Re: [riojug] Algoritmo pra salvar senha no banco. (Motivado pelo pdf da última reunião)
                      To: riojug@yahoogroups.com
                      Date: Monday, March 2, 2009, 6:30 AM

                      Bom Dia,

                      Eu também li esse tópico e fiquei curioso como você.
                      Realmente vamos ter sistemas que vão precisar de mais do que MD5.
                      Já leu sobre o SHA-256 ou SHA-512?



                      2009/3/2 Felipe Cypriano <fmcypriano@gmail. com>

                      Olá pessoal,

                      Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5.

                      Hoje eu uso MD5 para salvar as senhas dos usuário no banco. Estimulado pelo pdf fui procurar alternativas, encontrei o Blowfish (jBcrypt) e Twofish são ambos do mesmo autor o Twofish é a evolução do primeiro mas, é menos usado.

                      Vocês conhecem, já usaram?


                      ---
                      Felipe Marin Cypriano
                      Vitória - ES




                      --
                      Alex Rodrigues da Silva
                      Analista de Sistemas
                      alrsilva@gmail. com


                    • Felipe Cypriano
                      Então o ataque de dicionário sobre unsalted hash é para quando o atacante tem o hash e compara com um sequencia de possíveis combinações que ele tem,
                      Message 10 of 12 , Mar 4 9:38 AM
                      • 0 Attachment
                        Então o ataque de dicionário sobre unsalted hash é para quando o atacante tem o hash e compara com um sequencia de possíveis combinações que ele tem, como a maioria dos usuário usa senha fraca não seria difícil achar um hash que seja igual? Certo?

                        Então não preciso mudar de algoritmo de hash para proteger melhor as senhas salvas no banco, basta implementar uma "string secreta" (salting) ao fazer o hash. Assim é mais simples, pois tenho uma aplicação em Delphi que precisaria acessar os usuários e eu não estava encontrando implementações em Delphi dos outros algoritmos.


                        Abraços,

                        ---
                        Felipe Marin Cypriano
                        Vitória - ES


                        2009/3/2 Victor Hogemann <victor.hogemann@...>

                        Hummm,


                        MD5 não é um algorítmo de cifra, mas sim um algoritmo de Hash.

                        Quando você usa MD5 para autenticação o que você salva no banco não é a senha criptografada, mas sim o CheckSum dela usando MD5. Para autenticar, o fluxo é mais ou menos o seguinte:

                        1) Usuário fornece a senha
                        2) Aplicação aplica MD5 no valor informado
                        3) Aplicação compara o valor do MD5 calculado com o armazenado em banco
                        4) Se os valores forem iguais, autoriza o login

                        O MD5 em si não preserva nenhuma informação a respeito da senha, então mesmo que alguém tenha acesso ao seu banco de dados não vai conseguir recuperar as senhas a princípio. Mas existem formas de utilizar o MD5 para chegar a senha original, ou a uma outra seqüência de caracteres que gere o mesmo hash, utilizando tabelas com pares de senha/hash comuns. Mas isso é um problema somente se:

                        a) Você transmite o MD5 da senha sobre uma conexão não segura
                        b) Muitas pessoas tem acesso ao banco de dados do seu aplicativo

                        Além disso, existe uma forma de minimizar, ou até mesmo eliminar, o problema, que é adicionar uma string a senha (prática conhecida como salting) antes de aplicar o MD5. Essa string é conhecida somente pela sua aplicação, e é adicionada a todas as senhas antes de aplicar o MD5 para ser salvo no banco.

                        O Blowfish é um algoritmo de cifra, mas pode ser utilizado para gerar Hashes também. Sendo que ele não sofre da mesma vulnerabilidade do MD5.

                        Resumindo, o importante é que independente do algoritmo utilizado a prática correta é salvar o HASH da senha no banco, e não a senha em si... mesmo que criptografada.

                        [ ]s

                        Victor Hogemann

                        On Mar 2, 2009, at 11:14 AM, Felipe Cypriano wrote:

                        Olá pessoal,

                        Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5.

                        Hoje eu uso MD5 para salvar as senhas dos usuário no banco. Estimulado pelo pdf fui procurar alternativas, encontrei o Blowfish (jBcrypt) e Twofish são ambos do mesmo autor o Twofish é a evolução do primeiro mas, é menos usado.

                        Vocês conhecem, já usaram?


                        ---
                        Felipe Marin Cypriano
                        Vitória - ES



                      • Felipe Cypriano
                        Achei uma ótima documentação dando dicas de como fazer para salvar as senhas de modo seguro: http://www.jasypt.org/howtoencryptuserpasswords.html A lista
                        Message 11 of 12 , Mar 4 10:20 AM
                        • 0 Attachment
                          Achei uma ótima documentação dando dicas de como fazer para salvar as senhas de modo seguro: http://www.jasypt.org/howtoencryptuserpasswords.html

                          A lista resumida de regras que o artigo diz, no artigo cada uma é explicada com mais detalhes:
                          I. Criptografe as senhas usando técnicas one-way, isto é, use digest (hash).
                          II. Compare a entrada de dados do usuário e sua senha comparando os hashs, não senhas "limpas".
                          III. Use um salt de no mínimo 8 bytes randomicos, e salve esses bytes randomicos, sem hash, ao resultado.
                          IV. Repita recursivamente a função de hash no mínimo 1000 vezes.
                          V. Antes de fazer o hash, faça uma tradução string-para-byte usando uma codificação fixa, preferencialmente UTF-8.
                          VI. Finalmente, aplique a codificação BASE64 e salve o hash como US-ASCII string de caracteres.

                          Em java parece ser bem simples para implementar isso, todos os recursos já estão disponíveis. Agora em Delphi... ainda nem procurei mas já estou pressentindo que não será simples.


                          Abraços,

                          ---
                          Felipe Marin Cypriano
                          Vitória - ES


                          2009/3/4 Felipe Cypriano <fmcypriano@...>
                          Então o ataque de dicionário sobre unsalted hash é para quando o atacante tem o hash e compara com um sequencia de possíveis combinações que ele tem, como a maioria dos usuário usa senha fraca não seria difícil achar um hash que seja igual? Certo?

                          Então não preciso mudar de algoritmo de hash para proteger melhor as senhas salvas no banco, basta implementar uma "string secreta" (salting) ao fazer o hash. Assim é mais simples, pois tenho uma aplicação em Delphi que precisaria acessar os usuários e eu não estava encontrando implementações em Delphi dos outros algoritmos.


                          Abraços,


                          ---
                          Felipe Marin Cypriano
                          Vitória - ES


                          2009/3/2 Victor Hogemann <victor.hogemann@...>

                          Hummm,


                          MD5 não é um algorítmo de cifra, mas sim um algoritmo de Hash.

                          Quando você usa MD5 para autenticação o que você salva no banco não é a senha criptografada, mas sim o CheckSum dela usando MD5. Para autenticar, o fluxo é mais ou menos o seguinte:

                          1) Usuário fornece a senha
                          2) Aplicação aplica MD5 no valor informado
                          3) Aplicação compara o valor do MD5 calculado com o armazenado em banco
                          4) Se os valores forem iguais, autoriza o login

                          O MD5 em si não preserva nenhuma informação a respeito da senha, então mesmo que alguém tenha acesso ao seu banco de dados não vai conseguir recuperar as senhas a princípio. Mas existem formas de utilizar o MD5 para chegar a senha original, ou a uma outra seqüência de caracteres que gere o mesmo hash, utilizando tabelas com pares de senha/hash comuns. Mas isso é um problema somente se:

                          a) Você transmite o MD5 da senha sobre uma conexão não segura
                          b) Muitas pessoas tem acesso ao banco de dados do seu aplicativo

                          Além disso, existe uma forma de minimizar, ou até mesmo eliminar, o problema, que é adicionar uma string a senha (prática conhecida como salting) antes de aplicar o MD5. Essa string é conhecida somente pela sua aplicação, e é adicionada a todas as senhas antes de aplicar o MD5 para ser salvo no banco.

                          O Blowfish é um algoritmo de cifra, mas pode ser utilizado para gerar Hashes também. Sendo que ele não sofre da mesma vulnerabilidade do MD5.

                          Resumindo, o importante é que independente do algoritmo utilizado a prática correta é salvar o HASH da senha no banco, e não a senha em si... mesmo que criptografada.

                          [ ]s

                          Victor Hogemann

                          On Mar 2, 2009, at 11:14 AM, Felipe Cypriano wrote:

                          Olá pessoal,

                          Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5.

                          Hoje eu uso MD5 para salvar as senhas dos usuário no banco. Estimulado pelo pdf fui procurar alternativas, encontrei o Blowfish (jBcrypt) e Twofish são ambos do mesmo autor o Twofish é a evolução do primeiro mas, é menos usado.

                          Vocês conhecem, já usaram?


                          ---
                          Felipe Marin Cypriano
                          Vitória - ES




                        • Victor Hogemann
                          Exatamente, O grande perigo de usar MD5 são senhas fracas, que podem ser quebradas usando um ataque de dicionário. Com salting esse risco praticamente
                          Message 12 of 12 , Mar 5 5:25 AM
                          • 0 Attachment
                            Exatamente,

                            O grande perigo de usar MD5 são senhas fracas, que podem ser quebradas usando um ataque de dicionário. Com salting esse risco praticamente desaparece.

                            [ ]s

                            2009/3/4 Felipe Cypriano <fmcypriano@...>

                            Então o ataque de dicionário sobre unsalted hash é para quando o atacante tem o hash e compara com um sequencia de possíveis combinações que ele tem, como a maioria dos usuário usa senha fraca não seria difícil achar um hash que seja igual? Certo?

                            Então não preciso mudar de algoritmo de hash para proteger melhor as senhas salvas no banco, basta implementar uma "string secreta" (salting) ao fazer o hash. Assim é mais simples, pois tenho uma aplicação em Delphi que precisaria acessar os usuários e eu não estava encontrando implementações em Delphi dos outros algoritmos.


                            Abraços,



                            ---
                            Felipe Marin Cypriano
                            Vitória - ES


                            2009/3/2 Victor Hogemann <victor.hogemann@...>

                            Hummm,


                            MD5 não é um algorítmo de cifra, mas sim um algoritmo de Hash.

                            Quando você usa MD5 para autenticação o que você salva no banco não é a senha criptografada, mas sim o CheckSum dela usando MD5. Para autenticar, o fluxo é mais ou menos o seguinte:

                            1) Usuário fornece a senha
                            2) Aplicação aplica MD5 no valor informado
                            3) Aplicação compara o valor do MD5 calculado com o armazenado em banco
                            4) Se os valores forem iguais, autoriza o login

                            O MD5 em si não preserva nenhuma informação a respeito da senha, então mesmo que alguém tenha acesso ao seu banco de dados não vai conseguir recuperar as senhas a princípio. Mas existem formas de utilizar o MD5 para chegar a senha original, ou a uma outra seqüência de caracteres que gere o mesmo hash, utilizando tabelas com pares de senha/hash comuns. Mas isso é um problema somente se:

                            a) Você transmite o MD5 da senha sobre uma conexão não segura
                            b) Muitas pessoas tem acesso ao banco de dados do seu aplicativo

                            Além disso, existe uma forma de minimizar, ou até mesmo eliminar, o problema, que é adicionar uma string a senha (prática conhecida como salting) antes de aplicar o MD5. Essa string é conhecida somente pela sua aplicação, e é adicionada a todas as senhas antes de aplicar o MD5 para ser salvo no banco.

                            O Blowfish é um algoritmo de cifra, mas pode ser utilizado para gerar Hashes também. Sendo que ele não sofre da mesma vulnerabilidade do MD5.

                            Resumindo, o importante é que independente do algoritmo utilizado a prática correta é salvar o HASH da senha no banco, e não a senha em si... mesmo que criptografada.

                            [ ]s

                            Victor Hogemann

                            On Mar 2, 2009, at 11:14 AM, Felipe Cypriano wrote:

                            Olá pessoal,

                            Estava lendo o pdf da última reunião que fala sobre segurança. A parte de criptografia fala para não usar criptografia fraca, ex. MD5.

                            Hoje eu uso MD5 para salvar as senhas dos usuário no banco. Estimulado pelo pdf fui procurar alternativas, encontrei o Blowfish (jBcrypt) e Twofish são ambos do mesmo autor o Twofish é a evolução do primeiro mas, é menos usado.

                            Vocês conhecem, já usaram?


                            ---
                            Felipe Marin Cypriano
                            Vitória - ES






                            --
                            Victor Guilherme Hogemann
                            http://victor.hogemann.eti.br
                          Your message has been successfully submitted and would be delivered to recipients shortly.