The general definition of obfuscation is the process of obscuring a message (not necessarily source code). There is a "rigorous" method for obfuscation (indistinguishability obfuscation, extractability obfuscation) and a less rigorous one (spaghetti code, antipatterns, seldom used languages behaviours, ...). But is obfuscation a type of cryptographic primitive?

  • $\begingroup$ Instead, I would have asked: can obfuscation be a legitimate feature of a protocol? $\endgroup$ – Patriot Oct 2 '19 at 9:09
  • $\begingroup$ Perhaps you mean "feature", "useful feature", or "legitimate feature" instead of "type" in your last sentence. Is that so? $\endgroup$ – Patriot Oct 2 '19 at 9:11
  • $\begingroup$ To be fair, the term "cryptographic primitive" does not seem to be specified all too well. $\endgroup$ – Maarten Bodewes Oct 3 '19 at 2:44

I don't think this can be answered with facts or definitions - so this answer is just my opinion:

If you have a specific obfuscation with some cryptographic security property in mind, e.g. IO, and use it to build something else: Then yes, it is. If you just use it as a general term to describe something possibly non-cryptographic (code obfuscation, etc.), then it isn't.

Generally, I think the word obfuscation alone is underspecified. So the first counter-question probably should be: What do you mean? At least in the context of cryptography, definitions matter a lot. And if in doubt: Assume the 'wrong' meaning and say "No, it isn't".

| improve this answer | |

Wikipedia gives: "Cryptographic primitives are well-established, low-level cryptographic algorithms that are frequently used to build cryptographic protocols for computer security systems." The problem with that statement is that it seems hard to distinguish between algorithms, primitives, schemes and protocols (in no particular order). That's generally made clear in the context.

However, I would submit that we can establish that obfuscation by itself is not a cryptographic primitive with two arguments:

  1. No, because obfuscation is a generic term that describes a goal rather than an algorithm.

Confidentiality is not a primitive either, it is what you're trying to accomplish. A block cipher on the other hand is a primitive as it is both low-level and a building block. A "cipher" can however be anything, it could be symmetric or asymmetric so it isn't useful to think as the term cipher to be a primitive by itself; it requires clarification about what kind of cipher is meant.

A specific obfuscation technique or algorithm could be thought of as a primitive in the realm of obfuscation though; it just needs to be used as a building block for a larger protocol and to be well described after all.

  1. No, because obfuscation is generally not considered part of cryptography.

It may be useful to achieve a secure system, but security is not cryptography. Both obfuscation and cryptography are part of the realm of security, but that doesn't mean that one is part of the other. Even if it is used to achieve security then it might not be considered part of cryptography just like encoding / decoding of data is not considered part of cryptograpy.

That's not to say that there might be some overlap between the two fields of security of course, there usually is, and I'm looking forward to answers that include obfuscation techniques that are either using cryptographic techniques or are used as building block for cryptographic protocols. Squamish has already mentioned indistinguishable obfuscation as example, which seems to be a obfuscation primitive used in cryptographic protocols. Hence indistinguishable obfuscation, which implies a specific kind of lowlevel algorithm seems to be a cryptographic primitive.

But in the end nobody would argue that e.g. obfuscating source code by itself is part of cryptography. It is perfectly possible to obfuscate non-crypto source code using obfuscation techniques after all.

| improve this answer | |
  • 2
    $\begingroup$ Actually indistinguishable Obfuscation (iO) is quite a common assumption for more complex cryptographic protocols (like MPC I think). $\endgroup$ – SEJPM Oct 1 '19 at 16:35
  • $\begingroup$ Well, if it is a specific technique then it could be a primitive. If it uses cryptographic principles then it might be considered part of the realm of cryptography (just being in a cryptographic protocol doesn't count, encoding / decoding is often also part of a cryptographic protocol after all). So maybe there are some obfuscation techniques that could be thought of as cryptographic primitives, but that doesn't identify the term obfuscation itself as cryptographic primitive, in my opinion. $\endgroup$ – Maarten Bodewes Oct 1 '19 at 16:40
  • 1
    $\begingroup$ Again, in my experience that's not how the term is used. A generic MAC, encryption scheme or digital signature scheme is definitely a primitive in my opinion. $\endgroup$ – Maeher Oct 1 '19 at 17:24
  • 1
    $\begingroup$ @EllaRose My point is more that you need specific properties for a primitive for it to make sense as a building block. That's true when we speak about a cryptographic hash, but not so much for the very generic term "cipher", because there are many kinds of ciphers. Symmetric? Asymmetric? Authenticated? Format Preserving? Expanding the ciphertext or not etc. etc. etc. $\endgroup$ – Maarten Bodewes Oct 2 '19 at 0:03
  • 1
    $\begingroup$ No, those references are merely to papers that deal with tightness for those primitives or specific instantiations of those primitives. Sure you can take the prescriptivist approach and declare any and all use of the word in the cryptographic literature improper, but that's not really helpful. You can go through any number of crypto papers and virtually always when the word primitive is used, it refers to a generic building block, not a specific instantiation. $\endgroup$ – Maeher Oct 2 '19 at 6:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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