Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Am I right or am I right?

Am I right or am I right?

Scheduled Pinned Locked Moved The Lounge
questioncryptographyhelptutorialannouncement
34 Posts 17 Posters 5 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • X xiecsuk

    I have been fretting over the question of hacked userids/passwords. As I understand it, the stolen password is not actually the password but a hashed version of it which the hacker then decodes by brute force and ignorance to arrive at the actual password. But what if that wasn't the actual password. What if the system I was using performed some sort of transformation before it hashed the password for storage. For example, when I log on to my account, I type in pass123 as my password, but unbeknown to me, the system translates that to 321ssap, hashes it and stores it. The hacker tries to log onto my userid and types in 321ssap as my password which is what he thinks it is. This gets translated to 123pass and hashed for checking. But that hash value is not the same as the one that is stored. Therefore an "Incorrect password" error message is generated. Am I missing something here?

    N Offline
    N Offline
    newton saber
    wrote on last edited by
    #22

    xiecsuk wrote:

    I type in pass123 as my password, but unbeknown to me, the system translates that to 321ssap, hashes it and stores it

    This is very close. Actually, what you are thinking of is a salted hash. In other words, the user types in the password, the receiving application receives the password over some secure method (like HTTPS) then it 1. takes the original password 2. adds a secret salt value 3. hashes the entire thing (pass + salt) Since a hash is one-way, no one can really decrypt them -- that we know of. Same Is Same But look, every time you hash "ABCD" with the same algorithm, you get the same hash. That means a nefarious character can create tables of hashes (rainbow tables) of common words. Then, just compare the hash they have to the hashes stored in the datbase. Proper Salt Probably Prevents However, if the original value were properly salted, this would protect against that problem, unless the nefarious character should learn what the salt is. which is usually not the problem. Usually the problem is that the passwords are stored in the database in clear text or simply not salted.

    R 1 Reply Last reply
    0
    • M Mark_Wallace

      Correct. To horse with passwords, you need a battery of scripts, to handle the myriad staple functions that protect them.

      I wanna be a eunuchs developer! Pass me a bread knife!

      R Offline
      R Offline
      Rage
      wrote on last edited by
      #23

      Do we get extra points when understanding the reference here ? Or minus points for those who don't ?

      Do not escape reality : improve reality !

      P M 2 Replies Last reply
      0
      • N newton saber

        xiecsuk wrote:

        I type in pass123 as my password, but unbeknown to me, the system translates that to 321ssap, hashes it and stores it

        This is very close. Actually, what you are thinking of is a salted hash. In other words, the user types in the password, the receiving application receives the password over some secure method (like HTTPS) then it 1. takes the original password 2. adds a secret salt value 3. hashes the entire thing (pass + salt) Since a hash is one-way, no one can really decrypt them -- that we know of. Same Is Same But look, every time you hash "ABCD" with the same algorithm, you get the same hash. That means a nefarious character can create tables of hashes (rainbow tables) of common words. Then, just compare the hash they have to the hashes stored in the datbase. Proper Salt Probably Prevents However, if the original value were properly salted, this would protect against that problem, unless the nefarious character should learn what the salt is. which is usually not the problem. Usually the problem is that the passwords are stored in the database in clear text or simply not salted.

        R Offline
        R Offline
        Rage
        wrote on last edited by
        #24

        What he suggests is that the password is transformed again before being hashed, using an algorithm proper to the website. I still fail to see why this is not clever (and it is probably not, otherwise they would all do it. Or maybe they all do it already and nobody knows ?).

        Do not escape reality : improve reality !

        L OriginalGriffO D K 4 Replies Last reply
        0
        • K Keith Barrow

          xiecsuk wrote:

          Am I missing something here?

          Quite a lot, because it's pretty complicated. Firstly, you are assuming they've hashed the password, some (even large companies) don't they use a symmetric algorithm. If a company can send your password to you, say via e-mail, they are using a symmetric algorithm (at best).This is insecure. The idea is the hashing is one way, so the hash cannot be reversed, so password123 ---> 7FDEADBEEF or whatever. It the password table is stolen there are two immediate vulnerabilities. First off, if the system allows a bad password such as "password" this is going to be the most common value stored in the password field across the table, and you can work backwards through the most probable ones. The second vulnerability is something called a rainbow table, this reduces the amount of time it takes to reverse engineer a password that is going to lead to a particular hash. Worse, these tables are readily available, so you don't need the compuation time to get started. You can salt the password (adding a random bit of text which you store) in various ways, e.g. add then hash or has the password, salt then hash the result. This mitigates against the vunerabilities described above, but given enough time brute force strategies will always win - even if enough time means from now until after the end of the universe.

          KeithBarrow.net[^] - It might not be very good, but at least it is free!

          R Offline
          R Offline
          Rage
          wrote on last edited by
          #25

          See my reply here : http://www.codeproject.com/Messages/5021585/Re-Am-I-right-or-am-I-right.aspx

          Do not escape reality : improve reality !

          1 Reply Last reply
          0
          • R Rage

            What he suggests is that the password is transformed again before being hashed, using an algorithm proper to the website. I still fail to see why this is not clever (and it is probably not, otherwise they would all do it. Or maybe they all do it already and nobody knows ?).

            Do not escape reality : improve reality !

            L Offline
            L Offline
            Lost User
            wrote on last edited by
            #26

            It is as clever as prefixing the password with a constant.

            Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^]

            1 Reply Last reply
            0
            • R Rage

              What he suggests is that the password is transformed again before being hashed, using an algorithm proper to the website. I still fail to see why this is not clever (and it is probably not, otherwise they would all do it. Or maybe they all do it already and nobody knows ?).

              Do not escape reality : improve reality !

              OriginalGriffO Offline
              OriginalGriffO Offline
              OriginalGriff
              wrote on last edited by
              #27

              Because it wouldn't prevent the commonest way to bypass hashes: look for identical values. Even if you reverse every password before you hash it, every user that uses "password" gets the same hash value. Salting uses different values for each user - the username or row id value for example - and so every user gets a different hash value even if they share a password.

              Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...

              "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
              "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

              1 Reply Last reply
              0
              • R Rage

                What he suggests is that the password is transformed again before being hashed, using an algorithm proper to the website. I still fail to see why this is not clever (and it is probably not, otherwise they would all do it. Or maybe they all do it already and nobody knows ?).

                Do not escape reality : improve reality !

                D Offline
                D Offline
                Deflinek
                wrote on last edited by
                #28

                "Clever" is never secure, because the security vanish the moment someone figure it out. And if attacker could get their hands on the DB then they also could get the application (possibly even source code). So as other said slow(!) salted hashes are secure because it doesn't matter that you know how to create the hash. The way back is expensive. If the "secret way" would be enough then everyone will just XOR the password with something "secret", right?

                -- "My software never has bugs. It just develops random features."

                1 Reply Last reply
                0
                • R Rage

                  Do we get extra points when understanding the reference here ? Or minus points for those who don't ?

                  Do not escape reality : improve reality !

                  P Offline
                  P Offline
                  Pablo Aliskevicius
                  wrote on last edited by
                  #29

                  Minus points for those that don't read XKCD regularly. ;)

                  1 Reply Last reply
                  0
                  • R Rage

                    What he suggests is that the password is transformed again before being hashed, using an algorithm proper to the website. I still fail to see why this is not clever (and it is probably not, otherwise they would all do it. Or maybe they all do it already and nobody knows ?).

                    Do not escape reality : improve reality !

                    K Offline
                    K Offline
                    Keith Barrow
                    wrote on last edited by
                    #30

                    Rage wrote:

                    I still fail to see why this is not clever

                    Depending on the function, it could be just as susceptible to rainbow attacks as not applying the function. Also, given the function, it might still be statistically breakable (e.g. "password" most common) which is even quicker if applicable. The reverse example he gives has both these flaws, especially given the apparent lack of salt. As Eddie Vluggen says, about as clever as prefixing with a constant- it'll increase the time taken to break, but not by much. [Edit] My understanding was the OP was trying to get at how a hashes work generally, rather than a specific implementation :~

                    KeithBarrow.net[^] - It might not be very good, but at least it is free!

                    1 Reply Last reply
                    0
                    • M Mark_Wallace

                      Correct. To horse with passwords, you need a battery of scripts, to handle the myriad staple functions that protect them.

                      I wanna be a eunuchs developer! Pass me a bread knife!

                      F Offline
                      F Offline
                      Forogar
                      wrote on last edited by
                      #31

                      ...and this proves the "easily remembered" part of that password scheme.

                      - I would love to change the world, but they won’t give me the source code.

                      1 Reply Last reply
                      0
                      • X xiecsuk

                        I have been fretting over the question of hacked userids/passwords. As I understand it, the stolen password is not actually the password but a hashed version of it which the hacker then decodes by brute force and ignorance to arrive at the actual password. But what if that wasn't the actual password. What if the system I was using performed some sort of transformation before it hashed the password for storage. For example, when I log on to my account, I type in pass123 as my password, but unbeknown to me, the system translates that to 321ssap, hashes it and stores it. The hacker tries to log onto my userid and types in 321ssap as my password which is what he thinks it is. This gets translated to 123pass and hashed for checking. But that hash value is not the same as the one that is stored. Therefore an "Incorrect password" error message is generated. Am I missing something here?

                        P Offline
                        P Offline
                        PIEBALDconsult
                        wrote on last edited by
                        #32

                        Quote:

                        the hacker then decodes by brute force and ignorance to arrive at the actual password

                        No. What you propose is little different from another common technique that doesn't really improve security -- that of hashing multiple times. Attackers don't care what the original password was or how the stored value was calculated, they only care about what they can pass in to gain access.

                        1 Reply Last reply
                        0
                        • OriginalGriffO OriginalGriff

                          No, no - they store your password and check it as a nice secure SHA-2 hash value. And in case you need to recover it (as you did) they store the plain text version in the same table! :laugh:

                          Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...

                          P Offline
                          P Offline
                          PIEBALDconsult
                          wrote on last edited by
                          #33

                          I had a profile on a site that continually (daily) sent me "we want you back" emails. I ignored them, but last week I noticed that they included my username and password -- in case I had forgotten. :omg:

                          1 Reply Last reply
                          0
                          • R Rage

                            Do we get extra points when understanding the reference here ? Or minus points for those who don't ?

                            Do not escape reality : improve reality !

                            M Offline
                            M Offline
                            Mark_Wallace
                            wrote on last edited by
                            #34

                            Both, and leave the zero free for those who know but don't respond.

                            I wanna be a eunuchs developer! Pass me a bread knife!

                            1 Reply Last reply
                            0
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • World
                            • Users
                            • Groups