Hashing Algorithms 🛠️
MD5 (Message-Digest Algorithm 5) 📜
Introduction: Developed in the early 1990s, MD5 generates a 128-bit hash digest from 512-bit blocks.
Issues:
Design Flaw: Discovered in 1996, leading cryptographers to recommend SHA1 as a more secure alternative.
Collision Vulnerability: By 2004, it was found that MD5 was susceptible to hash collisions, allowing different inputs to produce the same hash.
Exploitation: In 2008, researchers demonstrated creating a fake SSL certificate using MD5 collisions, leading to serious security breaches like the Flame malware in 2012.
Recommendation: By 2010, it was advised to stop using MD5 for cryptographic applications due to its vulnerabilities.
SHA1 (Secure Hash Algorithm 1) 🔐
Introduction: Part of the Secure Hash Algorithm suite published by NSA in 1995. It generates a 160-bit hash digest from 512-bit blocks.
Usage: Employed in various protocols like TLS/SSL, PGP/SSH, IPSec, and version control systems like Git.
Vulnerabilities:
Weaknesses: Theoretical attacks were developed in the 2000s, with practical implications emerging in 2015. A full collision attack was estimated to be feasible with significant computing resources.
Full Collision: In 2017, researchers published the first full SHA1 collision, using substantial CPU and GPU resources equivalent to 6,500 years of a single CPU and 110 years of a single GPU.
Recommendation: SHA1 should be replaced with SHA2 or SHA3 due to its vulnerabilities.
Message Integrity Check (MIC) vs. Message Authentication Code (MAC) 🔍
MIC (Message Integrity Check):
Function: A hash digest of a message ensuring that its contents remain unchanged during transit.
Limitations: Does not use secret keys, hence it does not authenticate the message. It is susceptible to tampering if an attacker can recompute the checksum.
Use Case: Protects against accidental corruption or loss, but not against intentional modifications.
MAC (Message Authentication Code):
Function: Provides both integrity and authentication by using a secret key.
Summary 📜
MD5: Once popular but now obsolete for cryptographic purposes due to serious vulnerabilities and hash collisions.
SHA1: Still used but vulnerable to collisions, and should be replaced by more secure algorithms like SHA2 or SHA3.
MIC: Ensures data integrity but does not offer message authentication.
🔐📉💻
Hashing Algorithms and Security Measures 🔐
Authentication and Password Hashing 🔑
Importance of Hashing:
Why Hash Instead of Plain Text: Storing passwords in plain text is insecure. If a system is compromised, attackers would gain access to all user passwords.
Hashing Process: Instead of storing passwords directly, systems store a hash of the password. During login, the entered password is hashed and compared to the stored hash. If they match, authentication is successful.
Brute Force Attacks 🛡️
Definition:
An attacker tries all possible input values to find a match for a hashed password.
Computational Intensity: Brute force attacks are time and resource-intensive. Theoretically, any system can be attacked with unlimited resources, so the goal is to make this process impractically difficult.
Mitigation:
Hashing Iterations: Increasing the number of times a password is hashed (e.g., thousands of times) makes brute force attacks more difficult and time-consuming.
Rainbow Tables 🌈
Definition:
A precomputed table of possible passwords and their corresponding hashes.
Purpose: Speed up the process of cracking hashed passwords by looking up precomputed values instead of hashing each guess.
Protection Against Rainbow Tables:
Salting: Adding a unique, random value (salt) to the password before hashing.
How It Works:
A random salt is concatenated with the password and hashed together.
The salt is stored along with the hash, making each password hash unique.
Impact: Attackers would need to generate a separate rainbow table for each possible salt value, making it computationally and storage-wise impractical.
Salt Size:
Early Systems: Used 12-bit salts (about 4,096 possible values).
Modern Systems: Use 128-bit salts (over 340 undecillion possible values), raising the difficulty to infeasible levels.
Summary 📜
Hashing: Essential for secure password storage. Avoids storing sensitive data in plain text.
Brute Force Attacks: Difficult to prevent entirely but can be mitigated by increasing the number of hashing iterations.
Rainbow Tables: Precomputed tables of hashes can be defeated by using salts, which make each password hash unique and harder to crack.
🔑🛡️💻
Last updated