Um caso de uso muito interessante para a ofuscação é rastrear a origem das cópias ilícitas. Supondo que a ofuscação seja uma operação relativamente barata, o autor original pode fornecer a cada cliente versões ofuscadas do aplicativo, se uma cópia ilícita for encontrada, o autor poderá comparar com as versões fornecidas e rastrear a fonte da pirataria.
Essa é uma forma de esteganografia , inspirada e na variação do "transporte de traidores "esquemas criptográficos . Não faço ideia se é comum 1 , ou mesmo se é uma boa ideia, mas já o vi aplicado na prática sob os seguintes parâmetros:
- Mercado nacional altamente competitivo com apenas dois fornecedores,
- Cerca de 50 implantações cobriram o mercado,
- O tempo médio de desenvolvimento de ambos os aplicativos foi de dois anos (mais ou menos),
- O tempo médio de ofuscação para nosso aplicativo foi de algumas horas,
- Espera-se que o tempo de vida de ambos os aplicativos seja de aproximadamente dez anos.
O raciocínio foi, obviamente, segurança através da obscuridade inicialmente, e evoluiu no esquema acima mencionado em algum momento 2 . Ambos os fornecedores tinham acesso ao código binário do outro, legalmente, e eu acho que é óbvio que as tentativas de decompilação de ambos eram esperadas. A ofuscação não fez nada em termos de segurança, a longo prazo. Ambos os fornecedores tinham equipes altamente motivadas e talentosas, trabalhando em um mercado extremamente lucrativo e de nicho, no final, nossos produtos eram mais semelhantes do que não, e qualquer vantagem competitiva foi obtida através de outros meios menos obscuros.
Eu não posso realmente expandir, porque (a) foi muito cedo na minha carreira e não obtive uma visão clara das decisões de design ou os resultados do esquema de rastreamento (se houver) e (b) alguns do meu envolvimento com o projeto estava sob um NDA.
Outro caso de uso válido para ofuscação pode ser quando você está de alguma forma legalmente obrigado a enviar seu código para terceiros :
If your firm does IP work for technology companies, or is involved in cases involving software source code, you may be obliged to submit your client’s source code to the USPTO, a court or third party.
Since source code is considered a trade secret, most regulatory agencies use a "50%" rule. Source code submitted is obscured so that it cannot be used as-is.
IANAL, e o link é mais relevante para cópias impressas de código, em vez de código de trabalho real, então isso pode ser completamente irrelevante.
Agora, como o Javascript é o exemplo canônico de ofuscação, há um efeito colateral que não é comumente considerado, e isso está escondendo códigos maliciosos no JavaScript ofuscado. Embora haja vantagens definitivas em minar o Javascript, eu não vejo nenhum ponto na ofuscação real e estou feliz. / 06 / minification-v-ofuscação / "> Douglas Crockford concorda comigo :
Then finally, there is that question of code privacy. This is a lost cause. There is no transformation that will keep a determined hacker from understanding your program. This turns out to be true for all programs in all languages, it is just more obviously true with JavaScript because it is delivered in source form. The privacy benefit provided by obfuscation is an illusion. If you don’t want people to see your programs, unplug your server.
Quanto à ofuscação de "segurança no emprego", esse é um comportamento que nunca deve passar pela revisão de código e, se identificado, não deve ser tolerado. Eu não iria tão longe quanto demitir o culpado no início, mas os ofensores repetitivos definitivamente merecem uma boa palmada, pelo menos.
Em conclusão, ofuscação é um exemplo típico de segurança através da obscuridade, é apenas mérito óbvio é como um impedimento e nada mais. Pode haver casos de uso criativos 4 que não conheço, mas em geral os benefícios são mínimos, na melhor das hipóteses. 1 Depois de escrever isto, descobri esta resposta que basicamente descreve o mesmo esquema, por isso pode ser mais comum que eu pensava.
2 Embora a esteganografia ainda seja segurança através da obscuridade.
3 Minification ~ removendo espaços em branco e encurtando tokens, não obscurecendo intencionalmente.
4 O Concurso Internacional de Código Ofuscado C conta?