Advances in Obfuscation
bit-player.org
bit-player.org
Whatever you think on the matter, its best if articles explain RMS's stance accurately and with the right weight in the right place.
Did you even read it?
Just because he mentions it doesn't make this an article about software freedom. It's a quote, that's all. It's tangentially related, but that's about it.
The GNU stance on freedom software seems to be that it should be for free as well and that programmers should make money on activities related to their primary produce.
As RMS is driving for GNU/Linux so could we have a drive for freedom software or libre/liberty software to make no mistake what we mean. We can focus later on the discussion of price of software and how to compensate the developers.
I guess liberty software is a bit too much to swallow for the enterprise types that back open source. Free software is easier, but still was not easy enough for open source people, or did the open source people deploy their term due to free meaning gratis, so open source could be marketed as non-gratis freedom software?
In general my impression is that GNU/Freedom-people avoid the question of compensation.
I find that the article's most intriguing point is the link between homomorphic encryption and indistinguishable obfuscation.
I don't follow this part. Obviously, if you have two distinct programs, they are different and you could arbitrarily label one A and the other B. And even if you couldn't do that, so what? Anyone care to explain?
Or obfuscation could help in producing "crippleware"—try-out versions of a program that have certain functions disabled.
Because then they wouldn't be computing the same thing, would they?
because implementation details matter, like the given example, demonstrating the ability to factor large numbers, without giving away the algorithm that does so.
In this case, we've defined a function, PrimeFactor(x), which returns the prime factorization of x.
you can write a naive program that computes PrimeFactor(x) by brute force. it will be slow but it will work. let's call this ProgramA.
let's say I write a magic, genius program that computes PrimeFactor(x) in constant time. This is ProgramB.
Given ProgramA, and ProgramB, you can correctly assert that ProgramA(x) == ProgramB(x) for all x.
If you ran A and B through a indistinguishability obfuscator to obtain ObfuscatedProgramC and ObfuscatedProgramD, the assertion that C(x) == D(x) holds, but you'd have no way of telling whether C comes from A or B (apart from runtime, which is ignored here)
By the same token, you couldn't tell if C and D both came from A, or both came from B, or any other possible program that correctly computes PrimeFactor(x).
so in theory, an indistinguishability obfuscator allows someone to know what a program computes, but not how it computes it, and implementation can matter a great deal.
Ah, that's a good way to think about it. Thanks!
The weaker obfuscator has no guarantee about that.
Consider the following example: a vendor provides a free demo and a paid version of the same program. Functionality is the same (`computes the same function'), the paid full version uses a good O(log(m) + log(n)) algorithm while the free demo is purposefully encumbered with a bad O(m * n) algorithm -- in hopes of making you pay for heavy use of the program.
Now the property means you can't really trace which exactly part of the program encodes the key algorithm, thus you can't really patch the demo version to the full version.
It is not always true that minifying method names is the same as gzip, as a good minifier will understand scopes and arrange many of the variables to have both the same name and smaller distances between like symbols. This shifts the frequency distribution of the symbols as well as the distances allowing the huffman coding to be more optimal.
I encourage JS developers who strongly believe in distributing source along with their webapps to use source maps instead of delivering slow, unminified code. They are only downloaded when a user opens the web inspector (no overhead for regular users) and provide transparent access to source as if it had been delivered instead.