Logo

dev-resources.site

for different kinds of informations.

Sony FAIL : why it is absolutely necessary to encrypt passwords

Published at
10/16/2021
Categories
cryptography
hashing
itsecuritypassword
nerdspeak
Author
diskdrive
Author
9 person written this
diskdrive
open
Sony FAIL : why it is absolutely necessary to encrypt passwords

As you may have read in the news lately, Sony is in a lot of hot water after it's network was hacked.

So far, Sony has admitted that personal account details of 77 million users were stolen. This would make it the greatest data theft in history.

Sony is still investigating whether credit card information were stolen but apparently, user records containing information such as name, date of birth, email and passwords were.

Whilst PS3 users seem concerned about their network being down for a week - the thing I was more fixated on was how the passwords could possibly be stolen. Well, apparently, Sony never bothered to encrypt them!

Now, I'm by no means a IT security expert here but I've worked on enough IT systems and projects to understand that ** **

YOU NEVER STORE USER PASSWORDS IN PLAINTEXT!

Never, ever, ever!

It doesn't matter how small or insignificant your site is. In fact, it always used to bug me whenever I registered a user account from a new site or forgotten my password, and I received an email with my password in it.

I would be quick to either deregister myself or at the very least, change the password and hope that my normal password wasn't sitting in some audit table somewhere.

Because the fact they could retrieve my password meant that they had it.

And it happens more than you think - not just on small sites, I've been surprised by a few relatively big players. I remember Prometric (they also have a really crap website) - the company that manages Microsoft certification exams emailed me my password. This is a company that makes its living testing and certificating IT professionals!

Frankly, I think somebody should set up a Name and Shame list of any websites that store passwords in plain text.

But for a company like Sony - a huge multinational, a company worth billions of dollars, a company that made the PS3 which for a long while, was considered the first unhackable console (until it was) , it's just utterly unbelievable that they did not follow such basic and rudimentary security measures.

The reason you don't store passwords in the database is that most users, lacking an eidetic memory tend to re-use the same passwords over and over again. If they have their password stolen from your site, its likely the hackers will have access to other accounts they own.

The other reason is that all staff members with production db access can see it. It takes one disgruntled employee.

You should never store passwords in plain text cause you don't want the liability.

INSTEAD, STORE A HASH VALUE GENERATED BY THE PASSWORD.

Hashingis the process of running some plaintext (password) into an algorithm (eg. MD5) which returns a "hash" - basically an encrypted string value. It's a one way street - you can convert the plaintext to a hash, but you cannot use a hash to retrieve the original text. You compare the hash to verify when someone tries to log on.

The fact is, implementing hashing is not even that hard. There's really no mathematical or cryptographic knowledge required. All major programming frameworks have class libraries of the hashing functions pre-installed. All you have to do is call the function.

That's the absolute minimum you would expect of any website.

Although these days, simply hashing is probably not enough as it will not protect you from Rainbow attacks. Now rainbow attacks sound cute and kind of a bit queer, but essentially, a rainbow attack uses a rainbow table - which is a prepopulated table containing hash codes for every possible password combination - to quickly look up your password.

With the super fast processors and distributed computing options we have today, you would be surprised how entirely possible it is to get the hash for every combination of letters and numbers that a password could have. There are several freely available on the net. This page nicely illustrates how much time it would take based on the complexity and length of the password.

IN ORDER TO COMBAT RAINBOW ATTACKS, YOU MUST ADD SALT.

In layman's terms, this is the process of messing with the plaintext a bit before you hash it to order to ensure it is unique and will not appear in any pre-populated rainbow table.

To illustrate, a hash without salt looks like this

cipher = hash(plaintext)

After salt, it should look like this

cipher = salt + hash(salt + plaintext)

The salt is typically a GUID as it guarantees uniqueness. You don't need to hide the salt - in fact, the salt is used when verifying if the user has entered the right user name by taking the value of the salt into account when comparing the hash values.

A hacker cannot use a rainbow attack on you because the salt makes the plaintext unique. They will need to re-generate their rainbow tables again using your salt prefixed which will take as much time as a brute force attack.

No encryption is unbreakable of course, it's all just a matter of how much time a hacker has to spend before he breaks it so there are additional measures such as adding multiple iterations of hashing to provide additional protection which I may discuss in another post.

The point is, hashing and salting - these are not complicated concepts and they're really not that hard to implement. Somebody really dropped the ball at Sony and as a result, they're probably going to lose millions from a tarnished brand name and potential law suits.

hashing Article's
30 articles in total
Favicon
What is Hashing? A Complete Guide for Developers and Security Professionals
Favicon
The Evolution of Hashing Algorithms: From MD5 to Modern Day
Favicon
Pattern 9: Hashing
Favicon
Lithe Hash: Um MΓ³dulo Robusto para Hashing Seguro de Senhas
Favicon
The Bcrypt Algorithm for Secure Password Hashing
Favicon
Sorting Algorithms That Use Hash Tables
Favicon
π–€π—‡π–Όπ—‹π—’π—‰π—π—‚π—ˆπ—‡ 𝖺𝗇𝖽 π–§π–Ίπ—Œπ—π—‚π—‡π—€: π–§π—ˆπ— 𝖳𝗁𝖾𝗒 π–―π—‹π—ˆπ—π–Ύπ–Όπ— π–Έπ—ˆπ—Žπ—‹ 𝖣𝖺𝗍𝖺 𝖣𝗂𝖿𝖿𝖾𝗋𝖾𝗇𝗍𝗅𝗒
Favicon
Two Unconventional Ways to store Passwords: Honeywords & Rock Salt
Favicon
Difference Between Encryption and Hashing πŸ”πŸ”‘
Favicon
Basic File Integrity Monitoring System
Favicon
Lithe Hash: A Robust Module for Secure Password Hashing
Favicon
Comparative Analysis of Password Hashing Algorithms: Argon2, bcrypt, scrypt, and PBKDF2
Favicon
Cryptojs vs. Bcryptjs: Which password hashing method should you trust?
Favicon
Distributed Hash Generation Algorithm in Python β€” Twitter Snowflake Approach
Favicon
Understanding Bcrypt Rounds: Balancing Security and Performance
Favicon
Wednesday Links - Edition 2023-05-03 πŸ‡΅πŸ‡±πŸ“œ
Favicon
Understanding Hashing Algorithms: A Beginner's Guide
Favicon
Hashing in Blockchain Technology: How it Ensures Data Integrity
Favicon
Using Hash Codes as Unique Identifiers
Favicon
What is Password Hashing Algorithm?
Favicon
Hashing
Favicon
πŸ”How to encrypt variables in NodeJS
Favicon
Lava lamps securing the Web?πŸ€·β€β™‚οΈ
Favicon
What is the difference between encryption, hashing and salting?
Favicon
Security in The Blockchain
Favicon
Hashing Algorithms and creating a simple file integrity monitor (FIM)
Favicon
Hashing, Explain it to me like I'm 5.
Favicon
#Hashing in Java
Favicon
How to hash a password in Go
Favicon
Sony FAIL : why it is absolutely necessary to encrypt passwords

Featured ones: