Skip to main content
1 of 2
kelalaka
  • 5.6k
  • 4
  • 26
  • 50

Short info: AES

AES is a family of permutations like any block cipher. A block cipher has a short block size like AES has 128-bit. In order to operate you need a mode of operation.

Short info: Hash functions

Hash functions are one-way, deterministic, and in some sense have an unpredictable output ( until one calculates). They are mainly built for collision resistance and pre-image resistance (first and second).

A. The key of the AES is never exposed. (Without knowing the key, I believe there is no possibility of decryption and hence one-way function as a hash)

B. For some applications, the input size is always fixed. In this case, if someone uses AES encryption as the purpose of hash, do any possible problems exist?

  • The output size is the first problem. For example; for an integrity check, a good 512-bit hash function is enough. With encryption, there is no integrity without a proper mode of operation and those are not part of encryption like CBC-MAC, HMAC, KMAC, NMAC, GCM, Poly1305, etc.

  • One needs the key to verify, on the other hand, hashing is free. Consider you build a password from a hash function than without the key you can verfity the password. With encrypted passwords, one needs the key to verify.

  • You want to sign documents and hashing before signing is part of the security since the first true Rabim-signature scheme. How do you consider reducing the size to 256 or 512-bit to sign the document with encryption?

  • File comparison; one can simply exchange the hash of the files to check the equality; right just 512-bits. Do you want to send the 5GB file encrypted then compared it?

There is a method to make a hash function based on the block cipher.

This is Merle-Damgard (MD) based construction that uses block cipher on Devies-Mayer method to build compression function. Unfortunately, there are two major problems for AES to be used in MD

  • AES has related-key attacks that enable building collision if used in MD
  • The block size is 128 and this makes the output of the hash function is 128-bit. Not secure enough to find the collisions!
kelalaka
  • 5.6k
  • 4
  • 26
  • 50