Non-malleable cryptography