1
$\begingroup$

I'm looking for a non-invertible bijective function mapping a 64bit value into another 64bit value.

I can't use a hash because it isn't bijective.

Could this be done with public key cryptography ? The key and function may be big. It's just the data that would be small. I would destroy the private key as I never need to decipher.

Since the application is distributed, using a public key or equivalent would be great for security.

$\endgroup$
4
  • $\begingroup$ Not an answer for 64 bit output, but have a look at this; one of the answers would be white box cryptography, which could be useful for your use case... or not. $\endgroup$
    – Maarten Bodewes
    Commented May 22, 2022 at 20:21
  • $\begingroup$ What about DES or any modern lightweight cipher with a fixed key? $\endgroup$
    – kelalaka
    Commented May 22, 2022 at 22:44
  • $\begingroup$ @kelalaka I ruled it out due to the way the question was asked, but yeah, the question becomes: "non-invertable to whom?" I think the idea was to have it not invertable to anybody. TBH, I think that also rules out asymmetric crypto, unless you've got a trusted third party that generates the key pair. $\endgroup$
    – Maarten Bodewes
    Commented May 23, 2022 at 8:00
  • $\begingroup$ @MaartenBodewes that is right. Whoever gets the key can invert the function and the original data wouldn't be concealed anymore. With public key cryptography it wouldn't be the case. I didn't detailed it in the question, but it is to be used in a distributed system. The probability for a node to be compromised or evil is high. $\endgroup$
    – chmike
    Commented May 23, 2022 at 8:07

1 Answer 1

3
$\begingroup$

I'm looking for a non-invertible bijective function mapping a 64bit value into another 64bit value.

Actually, if the function is public, then it obviously can be inverted with $O(2^{64})$ work (by simply trying every possible input). That amount of work is achievable by dedicated adversaries, hence it would indicate that what you're asking for is impossible.

$\endgroup$
1
  • $\begingroup$ This is obviously correct for $2^{64}$, but I'm a bit disappointed that it doesn't address the same for (much) larger domains. $\endgroup$
    – Maarten Bodewes
    Commented May 23, 2022 at 15:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.