Nota rápida: las últimas versiones de Android (¿o una próximamente?) ahora cuentan con la protección contra jailbreak incorporada, y puedes especificar que no deseas que tu aplicación esté instalada en ningún dispositivo roto en la cárcel.
Esto está un poco fuera de mi área inmediata de experiencia, pero creo que tengo una buena respuesta para ti de todos modos. Como todo lo demás, se trata del análisis de costo / beneficio, y desafortunadamente solo usted puede hacer eso. Podemos ejecutar eso rápidamente, pero tenga en cuenta que no le estoy pidiendo que responda a estas preguntas aquí. Le doy la bienvenida, pero estoy tratando de guiarlo a través del tipo de preguntas que me haría para responder a su pregunta.
- Estás intentando detectar jailbreaking por una razón. ¿Por qué? ¿Qué pérdida está tratando de evitar al impedir que su aplicación se ejecute en dispositivos con jailbreak? ¿Está perdiendo ingresos de un solo cliente? ¿O está filtrando potencialmente documentos confidenciales o información protegida?
- ¿Qué porcentaje de sus usuarios espera tener la capacidad técnica y la motivación para aplicar ingeniería inversa a su aplicación para que puedan vencer su detección de jailbreak y ejecutar su aplicación en un dispositivo con jailbreak?
Para dar dos ejemplos extremos: si su aplicación es un juego y la pérdida potencial para su empresa son las ventas de divisas en el juego o los ingresos publicitarios del juego porque la persona que revierte la ingeniería de su aplicación puede obtener todo de forma gratuita, entonces esto es probablemente No vale más de 5 minutos para asegurarte en tu final. La razón es porque muy pocas personas tienen el conocimiento técnico para lograr estas cosas, y la pérdida por persona es tan pequeña, que incluso el tiempo que tomó para escribir esta pregunta ya le cuesta más que la posible pérdida.
Por otra parte, si su aplicación es un lector de documentos para los documentos clasificados como el nivel más alto de secreto por parte de la NSA, y los gobiernos extranjeros intentarán entrar a robar nuestros secretos más valiosos (no es que los La NSA ya tiene secretos), entonces la ofuscación de código no es lo suficientemente segura.
La respuesta depende de su propio saldo de costo / beneficio. Su riesgo está probablemente en medio de estos dos casos extremos. Sin embargo, en última instancia, creo que solo usted puede responder su pregunta.
Tiempo para una evaluación de riesgos
Creo que para cuando llegues a "¿Deberíamos ofuscar nuestro código para evitar que los competidores realicen una ingeniería inversa de nuestro software?" Ya has pasado el punto de necesitar una prueba de penetración. En su lugar, lo que necesita es una evaluación de riesgos. Creo que ahora es una pregunta de negocios, no una pregunta de seguridad, porque ahora estás entrando en un territorio legal. Los competidores que intentan tomar parte en sus sistemas son un tipo de problema diferente. Tomar algunos pasos en el aspecto técnico para desalentar este tipo de comportamiento es probablemente razonable, pero en última instancia es posible que le sirvan mejor con algo de detección de intrusos y un buen conjunto de abogados. Parece que este esfuerzo puede estar olvidando la otra cara de la seguridad: algunas medidas de seguridad no merecen la pena, y todos los pasos de seguridad deben ser importantes en relación con su costo para el negocio. Su empresa debe decidir dónde se encuentra ese equilibrio entre la seguridad y el costo de mantenimiento en su caso particular.