Puan
28,728
Çözümler
0
- Konum
- Freanchey
- Mesajlar
- 3,049
- Katılım
- 2 Eki 2026
- Tepkime puanı
- 3,565
- Puan
- 28,728
- Web sitesi
- glomaxgpt.com
New StoryLength Extension Attacks: How Hash-Based Signatures Can Be Forgedbyviodexbyviodex|@viodexDedicated Bug-Bounty hunter & pentetration tester.October 9th, 2026TLDR Your browser does not support the audio element.Speed1xVoiceDr. One Ms. Hacker byviodex@viodexbyviodex|@viodexDedicated Bug-Bounty hunter & pentetration tester.Story's Credibilitybyviodex|@viodexDedicated Bug-Bounty hunter & pentetration tester.Story's CredibilityWhat if it were possible to alter a message without knowing the secret associated with it and it still appeared entirely legitimate?It seems impossible; it’s believed that a secret will prevent you from producing something valid if you don’t know it.However, the way in which something is constructed can allow that to happen.That’s whereLength Extension Attacks come into play.
This will be my first advanced-level article, so I hope you enjoy it! 🙂 Introduction
When an application wants to make sure that some data hasn’t been modified, it can create a hash of that data.
For example, imagine an application receives:
username=admin
It can calculate a hash for this value and use it to detect whether the data has been changed.
Hashing is a one-way process that takes some data and produces a fixed-size value. One of its important properties is that even a small change to the original data should produce a completely different hash.
You can read more about hashing here
But there is a problem.
If an application simply uses:
MD5(data)
anyone can calculate the same hash.
For example:
MD5(admin)
produces:
21232f297a57a5a743894a0e4a801fc3
So if an application uses the hash as a signature, an attacker could change:
role=guest
and simply calculate a new MD5 hash for admin :
The application has no way to tell whether the hash was generated by the trusted server or by the attacker.Adding a Secret
To solve this problem, an application may use a keyed hash.
Instead of hashing only the data:
MD5(data)
the application adds a secret that only the server knows:
MD5(SECRET + data)
For example, imagine the server has the secret:
ABC123
The server would calculate:
MD5(SECRET+DATA) =
MD5(ABC123admin)
So they cannot simply calculate the same signature.
MD5(admin)
This will be my first advanced-level article, so I hope you enjoy it! 🙂 Introduction
When an application wants to make sure that some data hasn’t been modified, it can create a hash of that data.
For example, imagine an application receives:
username=admin
It can calculate a hash for this value and use it to detect whether the data has been changed.
Hashing is a one-way process that takes some data and produces a fixed-size value. One of its important properties is that even a small change to the original data should produce a completely different hash.
You can read more about hashing here
But there is a problem.
If an application simply uses:
MD5(data)
anyone can calculate the same hash.
For example:
MD5(admin)
produces:
21232f297a57a5a743894a0e4a801fc3
So if an application uses the hash as a signature, an attacker could change:
role=guest
and simply calculate a new MD5 hash for admin :
The application has no way to tell whether the hash was generated by the trusted server or by the attacker.Adding a Secret
To solve this problem, an application may use a keyed hash.
Instead of hashing only the data:
MD5(data)
the application adds a secret that only the server knows:
MD5(SECRET + data)
For example, imagine the server has the secret:
ABC123
The server would calculate:
MD5(SECRET+DATA) =
MD5(ABC123admin)
So they cannot simply calculate the same signature.
MD5(admin)