Использование AES с целью коммитмента


Можно ли для коммитмента данных B размером в AES-блок вместо хеш-функции H(B) использовать значение C=AESB(B)?
По идее, функция необратимая и должна обеспечивать и binding, и hiding.
Так ли это? Используется ли такой подход на практике вместо хеш-функций?

Комментарии
— unknown (10/06/2014 21:23)   
На картинках в вики показано[link1], что используется на практике. Кроме того, блок AES для этого слишком мал, а поскольку он и нестоеек к атакам со связанным ключами, то лучше из него хэш-функцию по приведённым схемам не делать.
— ZAS (11/06/2014 07:19)   
Можно ли для коммитмента данных B размером в AES-блок вместо хеш-функции H(B) использовать значение C=AESB(B)?


Можно. Безопасно, но неэффективно.
Классический вариант: С = B xor AES(B,k), где k – несекретный ключ.
Чтобы не переинициализировать раундовые ключи всякий раз.

http://www.zas-comm.ru
— gegel (11/06/2014 09:44)   
Классический вариант: С = B xor AES(B,k), где k – несекретный ключ.

Спасибо. Можно ссылку, или хотя бы авторов?
— unknown (11/06/2014 11:29, исправлен 11/06/2014 11:34)   

Можете рассмотреть это для вашего случая как вариант Matyas–Meyer–Oseas из ссылки в вики, приведённой выше. Вместо g(Hi-1) — произвольный фиксированный несекретный ключ.


Ссылки
[link1] https://en.wikipedia.org/wiki/One-way_compression_function