I am an industrial biotecnologist from Italy. I am very interested in computational complexity and in protein folding problem in particular. I have a question. Hash functions are functions that given a slightly different input generate a very different output and are practically impossible to reverse. Is there a parallelism with the protein folding? I mean, slightly different aminoacidics sequences give different to very different 3D structures and the protein folding problem is Np and still unsolved . Can be an hash function implemented in this way? For example map the plaintext in a sort of aminoacidics sequence, run in an environment that mimics a molecular dynamics simulation. The key can be a parameter like temperature or solvent characteristic...Give me an opinion or impression. Thanks to everyone!!!
2 Answers
It is unclear what properties you are hoping such a function will have. such as preimage resistance, collision resistance or indisteiguisability from random function(In a keyed version).
To the best of my knowledge protein folding is hard in both directions, It's hard from amino acid list to determine 3d structure and it's hard in the other direction from 3d structure to find a list of amino acids. When building hash functions we want something efficient, for general purpose hash functions very efficient in one directions and impractical in the other.
It is unclear if there is a good mapping from arbitrary data to amino acids such that the desired properties are presrerved. For instance If in a naive mapping most random input won't cause interesting folding that could be an issue. Also on the other direction you would need some mapping from 3d structure to some encoding. It ia unlikely you can make a reasonable encoding with high information density. We would like the output to look pseudo random. An encoded 3d structure is unlikely to look random.
I see little hope for protein inspired cryptographic hash functions.
One property of cryptographic hash functions is that it's output should always be indistinguishable from uniformly distributed random data.
Using a chaotic process, like protein folding, is not enough to build a hash function. Indeed, while protein folding might produce unpredictable output from slight variations in the input, it is not proven that those variations are uniformly distributed, and it is not proven that the output is always indistinguishable from uniformly distributed random data. The answer by Meir Maor details this further.
Multiple other properties are also required in hash functions, such as performance. A function build expressly for the purpose of a cryptographic hash will most likely outperform a retrofitted function that was build with other goals in mind. There were previous attempts to use chaotic processes to build hash function, but all failed to outperform existing cryptographic hashes.