views:

315

answers:

7

There's been quite a few questions about Obfuscation and how to avoid Reverse Engineering, etc... that got me thinking about a few points:

  • Why do people believe that they have some incredibly valuable algorithm. Even if an algorithm is awesome, a single algorithm doesn't make a program. The experience and Business model have more power to make or break a program.

  • Although patenting algorithms is iffy in my moral book its perfectly legal, so why do people try to use obfuscation when they should be using patents? After all, when someone has reversed engineered a program, they have totally free power of doing whatever they want with their findings unless its patented, so why not just patent it?

  • Last but not least shouldn't we keep our customers through quality and service?

Now I'm probably being hard-headed, so please help me out here, what benefits can someone actually gain from obfuscating their algorithms/software instead of using patents?

After all the richest companies say Microsoft and Google were built upon patenting of software, not obfuscation of software (although Microsoft also used that for a time, Bill Gates strategy was to build a company upon patents)

Note: I'm coming from a background in the Game Industry, we so patent all sorts of crazy stuff. That might be a reason I'm having trouble understanding the Obfuscation people.

+2  A: 
  • Google PageRank? ;-)
  • Patenting can be hard to enforce - if a patent infringement is never discovered, the patent isn't much good. Obfuscation makes the infringement more difficult in the first place.
  • Yes, but I guess that doesn't exclude obfuscation if you want to do it...
David Zaslavsky
But if it has any value, people will reverse-engineer it anyways. There is always someone with the time and boredom to reverse-engineer even silly useless stuff.
Robert Gould
+2  A: 

The essence of a patent is that it exposes the invention, and the inventor gets a restricted monopoly on the invention in exchange to exposing it. Often it is better to keep an invention as a business secret instead; in this way, other companies won't get a hint of how the magic thing was implemented. Often a patented implementation can be worked around, and then the inventing company is worse off than if it had kept the thing secret.

Now then they might try to resort to reverse engineering, which is why you want to do obfuscation etc. to protect against it. Reverse engineering is in general illegal, but it can still happen.

antti.huima
Why is reverse-engineering illegal? Is it?
Robert Gould
In my industry (Games) we use patents for everything, there are very few secret inventions.
Robert Gould
Mostly depends on *where* you are doing it... but RE is not illegal in general: Finding out how that new coffee machine works is RE, but legal. Building cheap clones of it, thereby violating a patient from the manufacturer is. Just for software it can be different (DMCA etc).
Treb
+2  A: 

It's often hard to detect that some program over there really implements this very algorithm and start legal action if needed. The legal action itself can also be resource consuming. That's why consealing the algorithm is preferable in some cases.

sharptooth
That makes sense
Robert Gould
+2  A: 

Obfuscation is used more than patenting because, I suspect, it is cheaper. The companies with the big pockets use patents. It is, however, expensive to file a patent. It is even more expensive to defend that patent once issued. If you can keep something a secret, you don't need to spend money on it.

You are correct though that--sans moral implications--patenting is probably a better form of protection. It is enforced through a government monopoly which is probably stronger than your obfuscation attempts.

Steve Rowe
A: 

Obfuscation is sooo 90s. Nowadays, we just hire bad programmers.

Nice joke, but seriously hiring bad programmers is not very good for writing anything innovative.
sharptooth
+2  A: 

I can see several reasons why people opt for obfuscation instead of patents:

  • As Steve Rowe sais, it is easier to implement (needs fewer lawyers, no need to wait until the application has been processed, etc)
  • As antti.huima points out, a patent requires the exposition of the invention.
  • sharptooth and David are correct in saying that a violation of your patent could be difficult to detect, and the legal action required to fight it is no small feat, either.
  • Moral questions aside, in most countries it is not possible to patent your code. You may get a patent on an algorithm, but not a specific implementation.

Funny though, that everybody's first reaction (myself included) is to think along the lines of patents versus obfuscation. Looking closer at the issue, they are definitely not mutually exclusive. In the contrary, they could to some extent complement each other:

A patent gives you legal leverage to keep others from using your idea in their software. That will keep out those that are honest (and those that are not, but are afraid of lawsuits). Obfuscation can keep those at bay who don't care about the illegality of their actions.

That being said, I believe that there is another, completely different reason why so many programmers go for obfuscation: It is a programming solution. We are so used to solve problems by programming means. I mean, this is what we are doing every day at work, right? It's what we get paid for, it's what is expected from us. That's why a programmer will always tend to prefer a solution that involves programming.

Ah yes, nearly forgot: IANAL, but I did my share of reverse engineering. Obfuscation can slow people who want to steal your code down, but it can't stop them.

Treb
A: 

It should be noted that applying for a patent doesn't mean you'll get one. At least if you obfiscate somebody elses patented algorythm, it might delay them suing you ;-)

Just a note for patent newbies: patents were invented by lawyers and these lawyers are amoung the highest earners in the corporate world. Thats no accident.

andora