Questions tagged [software-obfuscation]

Software obfuscation is the deliberate act of creating obfuscated code by making source or machine code difficult to understand from a human point of view. This may be by either ad-hoc heuristic techniques, or by cryptographic techniques based on hard problems.

Software obfuscation refers to one of two subjects:

  • The deliberate act of creating obfuscated code by making source or machine code difficult to understand from a human point of view in an ad-hoc manner.
  • A cryptographic approach to obfuscation e.g. Indistinguishability Obfuscation

Programmers may deliberately obfuscate code to conceal its purpose (security through obscurity) or its logic, in order to prevent tampering, deter reverse engineering, or as a puzzle or recreational challenge for someone reading the source code. Programs known as obfuscators transform readable code into obfuscated code using various techniques; including cryptographic techniques. This approach (at best) increases the time and effort required to reverse-engineer the program, but it does not make doing so infeasible.

The cryptographic approach to obfuscation attempts to build obfuscated programs from cryptographic hardness assumptions, such that de-obfuscating the program is infeasible.

37 questions
28
votes
5 answers

What is Indistinguishability Obfuscation?

I've been studying functional encryption. I recently read that a multi-input functional encryption (MIFE) implies indistinguishability obfuscation (IO). Can someone please brief me: what is indistinguishability obfuscation (IO), and are its…
user45080
17
votes
2 answers

Practical consequences of using functional encryption for software obfuscation

I came across this article, which describes a method, developed by UCLA CS professor Amit Sahai et al, for using functional encryption in order to achieve software obfuscation. The paper that the article refers to is available here. Has anyone…
Henrick Hellström
  • 10,556
  • 1
  • 32
  • 59
11
votes
3 answers

What is the state of cryptographic obfuscation in 2015?

Cryptographic Obfuscation is a technique that allows one to obfuscate source code in a secure way (as opposed to insecurely mangling it into spaghetti code.) For example, here is a way to protect a piece of data with a password: cipher_text =…
Christopher King
  • 839
  • 5
  • 20
9
votes
5 answers

Ways to make white-box cryptography AES implementation more difficult to be broken

Background: I want to use white-box cryptography to hide the keys stored in a client application. I am looking for existing implementations of white-box cryptography, such as AES 128 or 256. But I found that almost all the existing implementations…
TJCLK
  • 497
  • 5
  • 19
9
votes
1 answer

The notion of sub-exponential security

I have been reading a paper where they construct probabilistic IO (indistinguishability obfuscation) from sub exponential IO. I want to know if the following two notions of sub-exponential security equivalent? A scheme is sub-exponentially secure…
user38956
9
votes
1 answer

What functions allow for practical indistinguishability obfuscation?

Recently, there has been a major theoretical breakthrough in program obfuscation, in the area of indistinguishability obfuscation. Background: Indistinguishability obfuscation is a form of program obfuscation, with the following security property:…
D.W.
  • 36,982
  • 13
  • 107
  • 196
8
votes
1 answer

Obfuscating functions that are mostly zero

Let $f_k(x)$ be a boolean function of two arguments with two properties: The function $f$ can be efficiently computed. The output is always 0 or 1, and for any fixed $k$, if we choose $x$ randomly, $\Pr[f_k(x)=1]$ is tiny (say, exponentially…
D.W.
  • 36,982
  • 13
  • 107
  • 196
8
votes
2 answers

Why do we use multilinear maps for obfuscation?

I have recently developed interest about obfuscation, and I see that (all?) the proposals use multilinear maps. What's the reason to this? As I also that many of the multilinear map proposals get broken too. Are there any other approaches to achieve…
typos
  • 829
  • 6
  • 11
6
votes
1 answer

Intuitively what makes indistinguishability obfuscation useful?

I am reading some papers about the application of indistinguishability obfuscators (IO). As far as I know, there are two techniques which enables the application of IO: shell game of secrets and punctured programs. It seems to me obfuscators are…
user50394
  • 295
  • 1
  • 6
6
votes
1 answer

Rewarding the finding of zeroes of a hash function

I've been thinking about the following problem and haven't yet found a solution. We have an arbitrary and public hash function $\text{Hash}$. Could I possibly publish a function $F$ (that is, publish an algorithm that returns $F(M)$ given $M$) such…
aleph2
  • 173
  • 5
5
votes
1 answer

Are there lower bounds to how efficient one can make obfuscated code?

I am wondering if there are any theoretical reasons why obfuscated programs cannot be nearly as efficient as the plaintext programs and whether there is any necessary computational overhead from running obfuscated code instead of plaintext code. Let…
Joseph Van Name
  • 1,265
  • 12
  • 21
5
votes
1 answer

Why are obfuscators generally defined to be probabilistic algorithms, rather than deterministic ones?

One possible explanation is, randomness is not going to hurt you, so might as well use it. Also, if we are hoping to prove impossibility, it only makes the result stronger. One other explanation is if the obfuscators are defined to be…
heisenberg
  • 51
  • 2
5
votes
2 answers

Obfuscate an "I'll reveal if you do" function

Is there any cryptographic obfuscation scheme that will let me obfuscate a program that reveals my secret, if you reveal yours? Formalization. Let $C(\cdot),V(\cdot)$ be a secure commitment scheme. In other words, $C(x,r)$ is a commitment to $x$…
D.W.
  • 36,982
  • 13
  • 107
  • 196
5
votes
1 answer

Universal Circuits in Indistinguishability Obfuscation Candidate Construction

I am currently working on an implementation of the candidate construction for an indistinguishability obfuscator that was recently proposed by Garg et al. The relevant paper can be found here. Specifically I am only implementing the construction for…
4
votes
1 answer

Is obfuscation always reversable?

Let's say we have a program that only accepts numerical inputs and the output is simply an increment by one of the input. Example with input "a" and output "b": $$Input: a = 7$$ $$Output: b= a+1 = 8$$ So it would be easy to know what the program is…
AleksanderCH
  • 6,511
  • 10
  • 31
  • 64
1
2 3