A Failure-Friendly Design Principle for Hash Functions
merkle - damgard revisited : how to construct a hash function .