Red de Respuestas Legales - Conocimientos legales - Prefacio al cifrado y descifrado de software

Prefacio al cifrado y descifrado de software

El software oculto es una nueva rama de la investigación sobre seguridad informática en la última década. En el proceso de investigación de software encubierto, no sólo debemos recurrir a tecnologías de seguridad informática, sino también utilizar una gran cantidad de tecnologías de otros campos de la informática, como la criptografía, la esteganografía, las marcas de agua digitales, las métricas de software, la ingeniería inversa y los compiladores. mejoramiento. Utilizamos estas tecnologías para satisfacer la necesidad de almacenar de forma segura información secreta en programas informáticos, aunque estas necesidades se expresan de diferentes formas. La palabra "secreto" en este libro tiene un significado amplio, y las técnicas introducidas en el libro (ofuscación de código, marcas de agua y huellas dactilares de software, tecnología antimanipulación, "marcas de nacimiento" de software, etc.) se utilizan para evitar que otros plagien el logros intelectuales en el software. Por ejemplo, la tecnología de huellas dactilares utilizada en el software se puede utilizar para rastrear si el software es pirateado, la tecnología de ofuscación de código puede dificultar que los atacantes realicen ingeniería inversa del software y la tecnología antimanipulación puede dificultar que otros creen versiones descifradas. del software,etc.

Bien, ahora hablemos de por qué deberías leer este libro, quién utiliza software encubierto y de qué hablará este libro.

¿Por qué deberías leer este libro?

A diferencia de la investigación de seguridad tradicional, al software encubierto no le importa cómo evitar que los ordenadores sean invadidos por virus informáticos. ¡Lo que le importa es cómo el autor del virus informático impide que otros analicen el virus! Asimismo, no nos importa si el software tiene vulnerabilidades de seguridad. Lo que nos importa es cómo agregar secretamente algún código al programa que solo se ejecutará cuando el programa sea manipulado. En el campo de la criptografía, la seguridad de los datos cifrados depende de la confidencialidad de la clave de cifrado y ahora estamos estudiando cómo ocultar la clave. Existen muchas técnicas de medición de software en ingeniería de software para garantizar una buena estructura del programa. Este libro utilizará las mismas técnicas para hacer programas complejos y difíciles de leer. Muchas de las técnicas descritas en este libro son algoritmos desarrollados basados ​​en la tecnología de optimización del compilador, pero el propósito de la optimización del compilador es hacer que el programa generado por el compilador sea lo más pequeño y rápido posible. Sin embargo, utilizar algunas de las técnicas descritas en este libro puede hacer que el programa resultante sea muy grande y lento de ejecutar. Finalmente, las marcas de agua digitales tradicionales y la esteganografía intentan ocultar la información que se ocultará en imágenes, audio, videos e incluso archivos de texto sin formato, mientras que el software de esteganografía oculta la información que se ocultará en el código de computadora.

Entonces, ¿por qué deberías leer este libro? ¿Por qué conocer una tecnología de seguridad que no protege su computadora contra virus o gusanos? ¿Por qué debería aprender una tecnología de optimización de compilación que solo hará que el código sea más grande y reducirá la velocidad de ejecución? ¿Por qué gastar esfuerzos en una rama de la criptografía que viola la premisa básica de la criptografía: que un atacante no puede obtener las claves?

La respuesta es que los resultados de las investigaciones tradicionales sobre seguridad informática y criptografía a veces no pueden resolver los problemas de seguridad urgentes que se encuentran en el trabajo real. Por ejemplo, este libro mostrará cómo utilizar la tecnología de marcas de agua de software para prevenir la piratería de software. Una marca de agua de software es un identificador único integrado en un programa (similar a un número de tarjeta de crédito o una declaración de derechos de autor). A través de esta identificación, la copia del Programa se asocia con usted, el autor del programa o el cliente. Si encuentra un CD pirateado de su software en el mercado, puede utilizar la marca de agua extraída por el software pirateado para rastrear al propietario del software pirateado que se lo compró. También puede agregar una marca de agua digital a las versiones beta de juegos recientemente desarrollados cuando los ponga a disposición de los socios. Si cree que alguien ha filtrado su código, puede encontrar al perpetrador (entre muchos socios) y llevarlo a los tribunales.

Otro ejemplo es el nuevo algoritmo añadido a la nueva versión del programa. Por supuesto, no desea que los competidores obtengan este algoritmo y lo agreguen a su software. Aquí es cuando puedes estropear el programa y hacerlo lo más complejo posible, haciendo que el software de ingeniería inversa de la competencia sea ineficiente. Y si realmente sospecha que alguien ha plagiado su código, este libro también le enseñará cómo utilizar "marcas de nacimiento" de software para probar sus sospechas.

Por ejemplo, su programa contiene algún código desconocido y desea asegurarse de que el programa no pueda ejecutarse correctamente sin estos códigos. Por ejemplo, definitivamente no desea que los piratas informáticos modifiquen el código de verificación de la licencia del software en el programa o la clave en el sistema de gestión de derechos digitales que se puede utilizar para descifrar archivos MP3. El Capítulo 7 discutirá varias técnicas anti-manipulación para garantizar que los programas manipulados dejen de funcionar correctamente.

¿Escuché que pusiste la clave en el archivo ejecutable? ¡Qué mala idea! La experiencia pasada nos dice que cualquier enfoque similar "secreto, es decir, seguro" eventualmente terminará en un fracaso, no importa cómo se esconda la clave en el programa, no puede escapar de las manos de tenaces analistas inversos. Por supuesto, debes admitir que lo que hiciste sigue siendo correcto.

Ninguna de las técnicas presentadas en este libro garantiza que su software esté siempre a salvo de los piratas informáticos. No es necesario garantizar que algo se mantendrá siempre en secreto, que el programa nunca será manipulado y que el código nunca será plagiado. A menos que haya un gran avance en esta área de investigación, todo lo que podemos esperar es retrasar el ataque del oponente. El objetivo es hacer que el ataque del atacante sea lo suficientemente lento como para que le resulte demasiado doloroso o costoso atacar su software, por lo que abandonará el ataque. Puede ser que el atacante haya pasado pacientemente mucho tiempo para romper su defensa, pero en ese momento ya ha ganado suficiente dinero con este software o ha utilizado una versión más nueva del código (en este momento, lo que obtuvo no tiene valor). ).

Por ejemplo, si eres un operador de canales pagos, los usuarios pueden ver los programas de TV que ofreces a través de decodificadores. Cada decodificador está etiquetado: la identificación única asignada a cada usuario se almacena en algún lugar del código, por lo que puede decidir si permite o deniega el acceso de un usuario específico a un canal en función de lo que el usuario ha pagado. Pero ahora un grupo de piratas informáticos descubrió y desarmó este código, encontró el algoritmo para calcular las identificaciones de usuario y vendió el método para modificar las identificaciones de usuario a los internautas a precios bajos en línea. ¿Qué debes hacer en este momento? Es posible que haya pensado en utilizar una tarjeta inteligente a prueba de manipulaciones, pero no es tan difícil de descifrar como parece, como se explicará en el Capítulo 11. O podría pensar en ofuscar el código para que sea más difícil de analizar. O puede utilizar tecnología a prueba de manipulaciones para detener automáticamente el programa tan pronto como se modifique. Lo más probable es que utilice una combinación de las técnicas anteriores para proteger su código. Pero a pesar de toda la tecnología, usted todavía tiene que saber y aceptar el hecho de que su código aún puede ser descifrado y sus secretos aún expuestos (en este caso, la identificación de usuario en el decodificador aún puede ser manipulada). ¿Cómo sucedió esto? Esto se debe simplemente a que la idea de "seguridad sin divulgación" es fundamentalmente errónea. Pero dado que todas las técnicas presentadas en este libro no pueden ofrecerle una "garantía de seguridad perfecta y a largo plazo", ¿por qué debería seguir utilizando estas técnicas y comprar un libro así? La respuesta es sencilla. Cuanto más tiempo el código permanezca resistente a los piratas informáticos, más clientes se suscribirán al canal y cuanto más largo sea el ciclo de actualización del decodificador, más dinero ganará y más dinero ahorrará.

Así de simple.

¿Quién utiliza software secreto?

Muchas empresas conocidas están interesadas en software secreto. De hecho, es difícil saber realmente cuánto se utiliza esta tecnología en la práctica (ya que la mayoría de las empresas son absolutamente reservadas sobre cómo protegen su código), pero aún podemos adivinar su interés en ocultar software basándose en sus solicitudes de patentes y propiedad. Microsoft creó una empresa exitosa con muchas marcas de agua de software, desorden de códigos y "marcas de nacimiento" de software. Apple tiene una patente sobre ofuscación de códigos, que probablemente protegerá su software iTunes. Convera es una empresa independiente de Intel Corporation que se centra en tecnología de código a prueba de manipulaciones aplicada a la gestión de derechos digitales [27, 268-270]. Cloak, que se escindió de la canadiense Northern Telecom, es también una de las empresas de mayor éxito en el sector. La empresa tiene una patente llamada "cifrado de caja blanca" [67, 68, 182], que oculta el algoritmo de cifrado y la clave en el código del programa. En junio de 5438 + febrero de 2007, Cloak fue adquirida por Irdeto, una empresa holandesa dedicada principalmente al negocio de la televisión de pago, por 72,5 millones de dólares. Incluso Sun Microsystems, relativamente recién llegado, ha presentado algunas solicitudes de patente en el campo de la ofuscación de códigos.

El cliente VoIP de Skype también utiliza tecnologías de ofuscación de código y antimanipulación similares a Arxan [24], Intel [27] y [89]. Estas tecnologías se mencionarán en este libro como contramedidas. Para Skype, proteger la integridad de su cliente es sin duda extremadamente importante, porque una vez que alguien analiza con éxito su software cliente y analiza el protocolo de red utilizado por Skype, los piratas informáticos pueden escribir programas baratos que puedan funcionar normalmente con el software de comunicación de Skype (en cuyo caso. no sería necesario utilizar Skype). Por lo tanto, mantener privado el protocolo de red ayudará a Skype a tener una gran base de usuarios, lo que probablemente sea la razón por la que eBay adquirió Skype en 2005 por 2.600 millones de dólares. De hecho, el uso de tecnología de software encubierta también le dio a Skype suficiente tiempo para convertirse en el líder en tecnología VoIP.

Incluso si se analizara el protocolo de Skype en este momento (como lo hicieron los piratas informáticos, consulte la Sección 7.2.4 para obtener más detalles), es imposible que los piratas informáticos encuentren un software similar que pueda sacudir la posición de Skype en el mercado.

Los investigadores académicos han estudiado la tecnología de software encubierto desde diferentes ángulos. Algunos investigadores con experiencia en compiladores y lenguajes de programación, como nosotros, se unirán naturalmente a esta investigación, porque la mayoría de los algoritmos que involucran transformación de código implicarán análisis estático, que es familiar para los investigadores en tecnología de optimización de compilación. Aunque en el pasado, la mayoría de los criptógrafos desdeñaban estudiar la cuestión de "la privacidad es seguridad", recientemente algunos criptógrafos han comenzado a aplicar técnicas relacionadas con la criptografía a las marcas de agua de software y han descubierto las limitaciones de la tecnología de ofuscación de códigos. Investigadores de marcas de agua multimedia, seguridad informática e ingeniería de software también han publicado muchos artículos sobre software encubierto. Desafortunadamente, el progreso de la investigación en este campo se ha retrasado significativamente debido a la falta de publicaciones específicas y conferencias académicas (para que los investigadores se comuniquen entre sí). De hecho, los investigadores han estado trabajando duro y todavía están trabajando duro para que los resultados de estas investigaciones sean aceptados en las revistas y conferencias académicas tradicionales. Las conferencias académicas que han publicado resultados de investigaciones de software encubierto incluyen el simposio de ACM sobre POPL (Principios de lenguajes de programación), el Simposio de ocultación de información, el Simposio de ingeniería de software IEEE, la Conferencia de criptografía avanzada (CRYPTO), la ISC (Conferencia de seguridad de la información), etc. Gestión de Derechos. A medida que la investigación en el campo del software encubierto se vuelve cada vez más común en la investigación académica, se espera que tengamos revistas, simposios e incluso seminarios dedicados al estudio del software encubierto, pero desafortunadamente esto aún no ha sucedido.

El ejército también gasta mucho esfuerzo (y dinero de los contribuyentes) en software secreto. Por ejemplo, la patente del algoritmo de marca de agua de software [95] propiedad de Kusote Company pertenece al grupo francés Thales, el noveno contratista de ingeniería de defensa más grande del mundo. La siguiente es una cita del último documento de licitación militar estadounidense (2006) [303] sobre la investigación de tecnología AT (anti-manipulación).

Actualmente, todos los departamentos de ejecución de programas militares (PEO) y gerentes de proyectos (PM) de EE. UU. deben utilizar las estrategias de AT desarrolladas por el ejército y el Departamento de Defensa al diseñar e implementar sistemas relacionados. El software integrado es el núcleo de los sistemas de armas modernos y una de las tecnologías que más necesita protección. La tecnología AT puede garantizar eficazmente que estas tecnologías no sean analizadas ni utilizadas por otros países (personas) en ingeniería inversa. Sin la protección de la tecnología AT, es fácil realizar un análisis inverso del código compilado por el compilador estándar. Cuando los analistas de ingeniería inversa analizan el software, utilizan muchas herramientas, como depuradores, descompiladores y desensambladores, así como varias técnicas de análisis estático y dinámico. El propósito del uso de la tecnología AT es dificultar la ingeniería inversa, evitando así que otros países roben las ventajas tecnológicas de Estados Unidos. En el futuro, será necesario proporcionar al Ejército un conjunto más útil, eficaz y diverso de herramientas de prueba automatizadas para PEO y mantenimiento preventivo... La tecnología AT se desarrolló con el objetivo de proporcionar un recinto de alta resistencia que pueda resistir el análisis de ingeniería inversa en la mayor medida posible. Retrasar los ataques enemigos al software protegido. De esta manera, Estados Unidos tiene la oportunidad de mantener sus ventajas en campos de alta tecnología o frenar la fuga de su tecnología armamentística. En última instancia, el ejército estadounidense puede seguir manteniendo su superioridad tecnológica, asegurando así su superioridad absoluta en armamento.

Este documento de licitación proviene del Programa Espacial y de Misiles (Departamento de Diseño) del ejército estadounidense y se centra en la protección de sistemas integrados en tiempo real. Tenemos razones para creer que el motivo de este documento de licitación es que al ejército estadounidense le preocupa que los misiles lanzados al enemigo no exploten después del aterrizaje por varias razones, lo que le dará al enemigo la oportunidad de acceder al software de control integrado en el misil. y guiar el misil para que vuele sobre el objetivo.

El siguiente es otro pasaje del Departamento de Defensa de Estados Unidos [115].

La Protección Proactiva de Software (SPI) es una de las responsabilidades del Departamento de Defensa, que debe desarrollar e implementar tecnologías de protección relevantes para garantizar la seguridad de los programas informáticos que contienen información crítica sobre los sistemas de armas de defensa. SPI proporciona una nueva forma de protección de la seguridad. No protege la seguridad de las computadoras o redes (como las tecnologías de seguridad tradicionales), sino que solo fortalece la seguridad del programa informático en sí. Este nuevo enfoque podría mejorar significativamente la seguridad de la información del Departamento de Defensa. SPI tiene una amplia gama de aplicaciones y todos los programas, desde computadoras de escritorio hasta supercomputadoras, pueden protegerse mediante la tecnología SPI. Es una capa completa y es un ejemplo de "defensa en profundidad". La tecnología SPI complementa las tecnologías de seguridad tradicionales, como los firewalls de red y la seguridad física, pero su implementación no depende de estos dispositivos de seguridad tradicionales.

Hoy en día, la tecnología SPI se implementa en centros HPC seleccionados, más de 150 agencias de defensa y otras bases militares construidas y mantenidas por empresas comerciales. El despliegue generalizado de la tecnología SPI mejorará efectivamente la protección de tecnologías de aplicaciones críticas por parte de Estados Unidos y el Departamento de Defensa de Estados Unidos.

¿Qué ilustra el pasaje anterior? Muestra que al Departamento de Defensa de Estados Unidos no sólo le preocupa si los misiles caerán en territorio enemigo, sino también la seguridad del software que se ejecuta en sus propios centros informáticos con alta seguridad y rendimiento. De hecho, el espionaje y el contraespionaje son temas eternos entre las agencias de contrainteligencia y las agencias de inteligencia. Por ejemplo, es necesario actualizar el programa de un avión de combate. En este momento, es probable que usemos una computadora portátil para conectarnos al avión de combate para realizar operaciones de actualización. Pero, ¿qué sucede si esta computadora portátil se pierde accidentalmente o simplemente otro gobierno se apodera de ella, como suele ocurrir en las películas? La otra parte tomará inmediatamente el código relevante para el análisis de ingeniería inversa y utilizará los resultados del análisis para mejorar el software utilizado en sus aviones de combate. Es más, la otra parte agregará en secreto un caballo de Troya a su software para hacer que el avión caiga del cielo en un momento determinado. Si no hay una garantía absoluta de que el escenario anterior sea 100% imposible, entonces el software encubierto puede al menos servir como última línea de defensa (al menos se le puede responsabilizar después). Por ejemplo, el software de un avión podría crear una firma dactilar con el ID de la persona que tiene acceso al software en cuestión. Si algún día se descubren estos códigos en aviones de combate de otros países, inmediatamente podremos aplicar ingeniería inversa a los códigos y calcular quién es el culpable de la filtración.

¿Qué? Te escucho decir, ¿por qué debería interesarme saber cómo proteger sus secretos entre gobiernos y gigantes empresariales? Si un hacker descifra este software, sólo obtendrá unos escasos beneficios gracias a su propio trabajo. Dicho esto, los beneficios de estas tecnologías de protección en última instancia superan los beneficios que aportan a los gigantes empresariales. La razón es que para usted, las protecciones legales (como patentes, marcas registradas, derechos de autor) sólo funcionarán si tiene suficientes recursos financieros para acudir a los tribunales y demandar a la otra parte. En otras palabras, incluso si cree que una gran empresa ha plagiado una idea que tiene mucho "dinero" al descifrar su código, no podrá acudir a los tribunales para demandar a Microsoft a través de esa demanda maratónica a menos que tenga suficiente fortaleza financiera para Hazlo. Sobrevive a esta competencia financiera. Las técnicas de protección analizadas en este libro, como la ofuscación de códigos y la resistencia a la manipulación, son asequibles, fáciles de usar y pueden ser utilizadas tanto por pequeñas y medianas empresas como por gigantes comerciales. Y si demanda a esta gran empresa en este momento, también puede utilizar tecnologías como marcas de agua o "marcas de nacimiento" de software para mostrar evidencia real de plagio de código en los tribunales.

Finalmente, tengo que mencionar brevemente otro tipo de personas que son extremadamente buenas usando software oculto: los malos. El autor del virus ha tenido mucho éxito al utilizar tecnología de ofuscación de código para disfrazar el código del virus y así evadir la detección por parte del software antivirus. Vale la pena mencionar que cuando las personas usan estas técnicas (como proteger DVD, juegos y televisión por cable), los piratas informáticos a menudo las descifran, pero cuando los piratas informáticos usan estas técnicas (como crear malware), es difícil para las personas luchar. contra.

Contenido de este libro

El propósito de la investigación de software encubierto es inventar un algoritmo que pueda retrasar el progreso del oponente (análisis de ingeniería inversa) tanto como sea posible, y al mismo tiempo Al mismo tiempo, reduce el riesgo de La sobrecarga computacional agregada a la ejecución del programa utilizando esta técnica. Al mismo tiempo, necesitamos inventar una tecnología de evaluación para que podamos decir: "Después de usar el algoritmo A en el programa, a los piratas informáticos les cuesta T unidades más entrar en el nuevo programa que en el programa original, y la sobrecarga de rendimiento del El nuevo programa es 0", o al menos debería decirse "Con el algoritmo El código protegido por el algoritmo A es más difícil de descifrar que el B". Es particularmente importante enfatizar que la investigación sobre software encubierto aún está en sus inicios. Aunque en el libro le presentaremos todos los algoritmos de protección y algoritmos de evaluación relevantes, la situación actual de este arte aún no es ideal (para entonces no puede estar demasiado decepcionado).

En este libro, intentamos organizar todos los resultados de las investigaciones actuales sobre software oculto y presentarlos a los lectores de forma sistemática. Nos esforzamos por cubrir una técnica por capítulo y describir las áreas de aplicación de esta técnica y los algoritmos disponibles actualmente. El Capítulo 1 brindará algunos conceptos básicos en el campo del software encubierto; el Capítulo 2 utiliza el modo de demostración adversarial para presentar las herramientas y técnicas comúnmente utilizadas por los piratas informáticos en el software de análisis inverso, y luego presenta cómo prevenir ataques de piratas informáticos basados ​​​​en estas herramientas y técnicas; El Capítulo 3 describe en detalle las técnicas utilizadas por los piratas informáticos y los defensores del software para analizar programas informáticos; los Capítulos 4, 5 y 6 presentan algoritmos relevantes para la ofuscación de código, respectivamente.

El Capítulo 7 presenta algoritmos relacionados con la tecnología antimanipulación; los Capítulos 8 y 9 presentan algoritmos relacionados con las marcas de agua, respectivamente. El Capítulo 10 presenta algoritmos relacionados con las “marcas de nacimiento” del software; el Capítulo 11 describe la tecnología de protección de software basada en dispositivos de hardware.

Si usted es un gerente de negocios que solo está interesado en el estado actual de la investigación de software oculto y cómo estas tecnologías se pueden aplicar a sus proyectos, simplemente lea los Capítulos 1 y 2. Si es un investigador con experiencia en diseño de compiladores, se recomienda pasar al Capítulo 3 y comenzar a leer. Pero es mejor leer los siguientes capítulos en orden. Esto se debe a que... bueno, por ejemplo, el conocimiento introducido en el capítulo sobre ofuscación de código se utilizará en el capítulo que presenta la tecnología de marcas de agua. Por supuesto, mientras escribíamos el libro, intentamos que cada capítulo fuera independiente, por lo que (si tienes algún conocimiento previo) no está mal saltarse uno o dos capítulos de vez en cuando. Si es ingeniero y desea utilizar tecnologías relacionadas para mejorar su software, le recomendamos encarecidamente que lea atentamente todo el contenido del Capítulo 3. Si es posible, también debe consultar algunos libros de texto sobre principios de compilación para compensar la "estática". análisis de programas" Conocimiento. Luego podrás saltar a los capítulos que te interesen y leerlos a tu antojo. Si eres un estudiante universitario y lees este libro como libro de texto de un curso, léelo página por página y no olvides revisarlo al final del semestre.

Espero que este libro sirva para dos cosas. En primer lugar, espero demostrarles a los lectores que hay muchas ideas interesantes en materia de ofuscación de código, marcas de agua de software, "marcas de nacimiento" de software y resistencia a manipulaciones que vale la pena aprender, y que estas técnicas también se pueden utilizar para proteger el software. En segundo lugar, espero que este libro pueda recopilar toda la información útil disponible actualmente en este campo, proporcionando así un buen punto de partida para una investigación en profundidad sobre el software encubierto.

Christian Kohlberg y Jasvir Nagra

2 de febrero de 2009 (Día de la Marmota)

P.D. En realidad, hay un tercer propósito al escribir este libro. Si, mientras lee este libro, de repente tiene una epifanía y se le ocurre una idea brillante, que a su vez inspira su ambición de dedicarse a la investigación de software oculto, entonces, queridos lectores, mi tercer objetivo se ha logrado. ¡Cuéntenos sobre su nuevo algoritmo y lo agregaremos a la próxima edición de este libro!