La ofuscación es "obligatoria" cuando se aplica cualquiera de las tres situaciones siguientes:
- La aplicación hace algo que es inherentemente débil, como incrustar un valor secreto en el código fuente.
- El diseñador de la aplicación quiere "sentirse seguro" y es lo suficientemente incompetente en la criptografía para que la ofuscación proporcione ese sentimiento (la ignorancia es una bendición).
- El proveedor de la aplicación quiere proteger su "propiedad intelectual". La ofuscación del código no impedirá en última instancia que las copiadoras comprendan cómo funciona el código, pero puede demorar sus esfuerzos de ingeniería inversa unos días (no mucho más que eso); lo que es más importante, la ofuscación es una forma de que sea obvio que los contenidos del código no sean para inspección externa, lo que ayuda a obtener la calificación legal de ingeniería inversa prohibida en algunas jurisdicciones.
Eliminar y / u ofuscar OpenSSL no ayudará realmente si la aplicación incluye secretos o trata de hacer "protección de contenido"; El esfuerzo es desesperado de todos modos (ese es el caso 1). En cuanto al caso 3, no hay propiedad intelectual para proteger en AES porque AES ya es pública y, para empezar, no es propiedad del vendedor. Sin embargo, ofuscar OpenSSL (o eliminarlo y reemplazarlo con una implementación casera, o cualquier otro encantamiento ritualista) puede contribuir en gran medida a ayudar al diseñador a dormir por la noche; si eso es lo que se necesita para hacerlo feliz ...
La idea subyacente es que, a pesar de lo que algunas personas creen firmemente o afirman, la ofuscación no funciona. Bueno, no rompe el código, el software aún funciona después de la ofuscación; pero no aumenta la seguridad técnica contra la ingeniería inversa, y no mejora la protección del contenido. El único punto que puede hacer de la ofuscación una decisión racional es calificación legal ; y ese no se aplica a OpenSSL, que ya es de código abierto.