Difference between revisions of "Introduction to Hash Functions"
Crechberger (talk | contribs) |
m (HashIntro moved to Introduction to Hash Functions: Add blank spaces.) |
||
| (5 intermediate revisions by one other user not shown) | |||
| Line 1: | Line 1: | ||
| − | + | = Security Requirements = | |
The security properties that hash functions are expected to provide, | The security properties that hash functions are expected to provide, | ||
are summarized in the following three basic requirements: | are summarized in the following three basic requirements: | ||
| − | - '''Collision resistance''': it is infeasible in practice to find two messages m and m | + | - '''Collision resistance''': it is infeasible in practice to find two messages m and m* != m such that h(m) = h(m*). |
| − | - '''Second preimage resistance''': for a given message m, it is infeasible in practice to find a second message m | + | - '''Second preimage resistance''': for a given message m, it is infeasible in practice to find a second message m* != m such that h(m) = h(m*). |
- '''Preimage resistance''': it is infeasible in practice to find, for a given hash value y, a message m such that h(m) = y. | - '''Preimage resistance''': it is infeasible in practice to find, for a given hash value y, a message m such that h(m) = y. | ||
| Line 12: | Line 12: | ||
In practice there are several other requirements, but for sake of | In practice there are several other requirements, but for sake of | ||
simplicity we stick to them. | simplicity we stick to them. | ||
| + | |||
| + | = On the construction of hash functions = | ||
| + | |||
| + | Most hash functions in use today are designed following the | ||
| + | Damgaard-Merkle design principle | ||
| + | The idea is | ||
| + | to split the input message m into l-bit blocks, which are | ||
| + | then processed one after another by iterating a compression function | ||
| + | f. Messages whose length is not a multiple of l bits need to | ||
| + | be padded first. | ||
| + | |||
| + | <bibtex> | ||
| + | @inproceedings{cryptoDamgard89a, | ||
| + | author = {Ivan Damg{\aa}rd}, | ||
| + | title = {A Design Principle for Hash Functions}, | ||
| + | booktitle = {CRYPTO}, | ||
| + | year = {1989}, | ||
| + | pages = {416-427}, | ||
| + | url = {http://link.springer.de/link/service/series/0558/bibs/0435/04350416.htm}, | ||
| + | editor = {Gilles Brassard}, | ||
| + | publisher = {Springer}, | ||
| + | series = {LNCS}, | ||
| + | volume = {435}, | ||
| + | isbn = {3-540-97317-6}, | ||
| + | } | ||
| + | </bibtex> | ||
| + | |||
| + | <bibtex> | ||
| + | @inproceedings{cryptoMerkle89a, | ||
| + | author = {Ralph C. Merkle}, | ||
| + | title = {One Way Hash Functions and DES}, | ||
| + | booktitle = {CRYPTO}, | ||
| + | year = {1989}, | ||
| + | pages = {428-446}, | ||
| + | url = {http://link.springer.de/link/service/series/0558/bibs/0435/04350428.htm}, | ||
| + | editor = {Gilles Brassard}, | ||
| + | publisher = {Springer}, | ||
| + | series = {LNCS}, | ||
| + | volume = {435}, | ||
| + | isbn = {3-540-97317-6}, | ||
| + | } | ||
| + | </bibtex> | ||
Latest revision as of 18:17, 2 November 2008
1 Security Requirements
The security properties that hash functions are expected to provide, are summarized in the following three basic requirements:
- Collision resistance: it is infeasible in practice to find two messages m and m* != m such that h(m) = h(m*).
- Second preimage resistance: for a given message m, it is infeasible in practice to find a second message m* != m such that h(m) = h(m*).
- Preimage resistance: it is infeasible in practice to find, for a given hash value y, a message m such that h(m) = y.
In practice there are several other requirements, but for sake of simplicity we stick to them.
2 On the construction of hash functions
Most hash functions in use today are designed following the Damgaard-Merkle design principle The idea is to split the input message m into l-bit blocks, which are then processed one after another by iterating a compression function f. Messages whose length is not a multiple of l bits need to be padded first.
Ivan Damg\aard - A Design Principle for Hash Functions
- CRYPTO 435:416-427,1989
- http://link.springer.de/link/service/series/0558/bibs/0435/04350416.htm
BibtexAuthor : Ivan Damg\aard
Title : A Design Principle for Hash Functions
In : CRYPTO -
Address :
Date : 1989
Ralph C. Merkle - One Way Hash Functions and DES