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?
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".
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:
- 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.
- 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.
Yes, it is a cryptographic primitive, and even better it's the most general one.
If one can perform indistinguishability obfuscation of some circuit, then he can also repurpose it for every other cryptographic primitive in existence, including homomorphic encryption, public-key encryption and zero-knowledge proofs.