Protección de software

39
Protección de productos de software MCC Eugenio Jacobo Hernández Valdelamar Fundación Arturo Rosenblueth Octubre, 2004 México.

description

Eugenio Jacobo Hernández Valdelamar. 2004. Protección de software y descripción de técnicas.

Transcript of Protección de software

Protección de productos de software

MCC Eugenio Jacobo Hernández Valdelamar

Fundación Arturo RosenbluethOctubre, 2004México.

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

2

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

3

Objetivos

Exponer la problemática de la piratería en la producción de software en nuestro país

Mostrar algunas estrategias y técnicas para la protección de productos de software, y sus contrapartes.

Dirigido a: Programadores, lideres de proyecto,

gerentes de producto Público en general

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

4

Agenda

Producción de software La piratería de software Protección de productos de software Técnicas de protección de software y

sus contrapartes Conclusiones

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

PRODUCCIÓN DE SOFTWARE

DESARROLLOCreación del producto

Implica:Métodos & Heurísticas

Medida del éxito:

Calidad f (aptitud de uso)

ADMINISTRACIÓNProducción Eficiente & Efectiva

Implica:Métodos & Heurísticas

Medida del éxito:Productividad

f (Esfuerzo)

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

6

La calidad del software

“La calidad del software es el grado con el que un sistema, componente o proceso cumple los requerimientos especificacados y las necesidades o expectativas del cliente o usuario”. (IEEE, Std. 610-1990).

“Concordancia del software producido con los requerimientos explícitamente establecidos, con los estándares de desarrollo prefijados y con los requerimientos implícitos no establecidos formalmente, que desea el usuario” (Pressman, 1998)

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

Administración del proyecto

Desarrollo de SW Aseguramiento de calidad

software & ajustes

prueba & reportes

monitorea

Métricas de calidadMétricas de desarrollo

Principio: Separar las preocupaciones

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

8

Modelo de costos del Software5 parámetros básicos

1. Tamaño del producto final

2. Proceso usado para producir el producto final

3. Capacidades del personal (experiencia)

4. Ambiente (herramientas y técnicas)

5. Requerimientos de calidad del producto final

Esfuerzo = (Personal)(Ambiente)(Calidad)(Tamaño del proceso)

Estando el producto listo, el objetivo es recuperar la inversión

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

9

Etapas de una Creación

Probar en la Realidad

Obtener unPrototipo

Implementar /Desarrollar

Creación delconcepto

Protegerla

Mejorarla

Defenderla

Comercializarla

www.conicyt.cl/revista/presentaciones/dpi.ppt

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

10

Cadena de distribución del software

Atención – Ganar la atención del consumidor para el producto;

Introducción – presentar el producto al consumidor;

Evaluación – que el consumidor evalúe el producto;

Adquisición – que el consumidor compre y use el producto.

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

11

La experiencia del usuario

Todos los aspectos de un producto o servicio percibidos por el usuario.

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

12

Piratería de Software Descargar, instalar, ejecutar o copiar un programa sin

la licencia apropiada del productor del software. Tipos de piratería:

Shoplifting: comprar una licencia y cargarla en varias maquinas, contrario a los términos de la licencia (“compartir” el software con amigos)

Counterfeiting: duplicar ilegalmente y vender software registrado de forma que parezca legitimo.

Carga y descarga de software: hacer copias no autorizadas de un programa accesibles a usuarios finales conectados a una red pública.

Carga en disco duro: instalar copias en equipos como incentivo para que el consumidor adquiera un equipo de hardware

Renta

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

13

Fuente: BSA http://www.bsa.org/mexico/

Las pérdidas por piratería en México aumentaron de 133,964 millones de dólares en 1999 a 180,164 millones de dólares durante el año 2000.

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

14

Problemática

Los productores de software venden menos, por lo que el costo de los productos se incrementa.

No se generan nuevas empresas que creen productos, pues no hay garantías de retorno de inversión y si de perdidas inmediatas. La única opción son los desarrollos a la medida (y aun estos tienen riesgo).

El comercio informal crece sin invertir en investigación y desarrollo de software (solo se invierte en reproducción de medios).

La cultura del “dealer” prevalece (quien puede conseguir lo que necesito bara-bara).

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

15

Protecciones para prevenir la piratería de software Protección contra copiado Físicas: distribución en ROM, dispositivos

de llave externos Electrónicas: encripción, passwords,

restricciones de uso (tiempo, sesiones, etc) Humana: proveer un buen servicio de

soporte al usuario; educación Legal: términos legales de la licencia de

distribución y uso

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

16

Ataques al software en anfitriones maliciosos

Cliente benigno(programa)

DescargarInstalar

Anfitrión malicioso

Ataque Defensa

Piratería de software (copiado ilegal) Marcado (software watermarking)

Ingeniería en reversa Ofuscación

Tampering (copiado-transformación de contenidos)

Tamperproofing

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

17

Ataques contra el software

Piratería

MaiMaría

El Mai hace copias ilegales del producto de María para revender.

Ingenieríaen reversa

MaiMaría

El Mai extrae módulos del programa de María y los reusa para su propio programa.

M

M

M

M

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

18

Ingeniería en reversa

Cuando se quiere entrar de forma rápida a un negocio, puede comprarse un “bonche” de productos y aplicarles ingeniería en reversa para: Aprender como construir el producto (sin pagar los

derechos del diseño) Mejorar un diseño existente (de ser posible) Reemplazar una parte del producto de la que no se

tenga la especificación Proceso:

Documentar el diseño del producto Intentar comprender las restricciones y decisiones

implícitas en el diseño

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

19

Ingeniería en reversa

En el mundo del software, el producto de la ingeniería en reversa –el código- se usa para: Recuperar sistemas legados (conocimiento

de la arquitectura, diseño y/o código) se corta y se pega en un nuevo producto

(uso malicioso)

Procesos de reingeniería más sofisticados pueden permitir no solo la duplicación de código, sino la extracción del diseño de un sistema y su refabricación.

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

20

Crackers de software

Los crackers rompen la seguridad del software

Disecan el código en ensamblador o usan generadores de claves

El producto final es el acceso al software sin pagar (de hecho el alto costo del software es el argumento y motivación de los crackers)

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

21

Cracks y herramientas

Tipos de cracks: Conseguir la clave serial Modificar el registro del SO con los datos apropiados Patches (versiones del ejecutable sin protección o

archivos de protección modificados) Herramientas:

Depuradores Desensambladores Decompiladores Editores hexadecimales Generadores de seriales Herramientas CASE

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

22

Ejemplo: ataque de ingeniería en reversa a un programa

Aplicación

Funcionalidad restringida:- Por tiempo de sesión- Modo de evaluación (accesosolo a algunas funciones)

Desensamblador Editor Hex

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

23

¿Qué hace el programa?

Tiempo de sesión limitado a 30 segundos

Funciones inhibidas

Requiere una clave de activaciónpara terminar el modo de evaluación

Suma y multiplica(una calculadoraen ciernes)

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

24

Salida del desensamblador

Comparación de texto de la clave de activación (EAX) con la clave (“ok”)

Identificando la clave de activación

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

25

Identificando el punto de activación

Asignación de false a la variable de activación (?)

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

26

Identificando la validación de fin de sesión por tiempo

Incremento de ciclos+1

Comparación de ciclos con el máximo (30-1E hex)

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

27

'bandera para determinar si el programa esta en modo de evaluaciónPrivate activa As Boolean'# de ciclos que determina el tiempo de una sesion (30 segs)Private ciclos As Integer

Private Sub Command1_Click() Label1.Caption = CInt(Text1.Text) + CInt(Text2.Text)End Sub

Private Sub Command2_Click() 'valida el acceso a una funcion del programa If activa = True Then Label1.Caption = CInt(Text1.Text) * CInt(Text2.Text) Else MsgBox "La función no esta disponible en modo de evaluación" End IfEnd Sub

Private Sub Command3_Click() 'se valida la clave de activacion If Text3.Text = "ok" Then activa = True: Timer1.Enabled = False: Command3.Enabled = False End IfEnd Sub

Private Sub Form_Load() activa = False: ciclos = 0End Sub

Private Sub Timer1_Timer() ciclos = ciclos + 1 'determina si el tiempo de la sesion ha expirado If ciclos = 30 Then MsgBox "Termino el tiempo de evaluación" Timer1.Enabled = False: End End IfEnd Sub

Código del programaVictima (VB)

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

28

Defensas contra ataques maliciosos

Marcado (watermarking)

ClienteMaría

María marca su programa con una clave secreta K.El cliente accede al producto mediante una clave que valide el marcado.

Ofuscación

María

María transforma su programa en uno equivalente para prevenir que pueda desensamblarse o decompilarse.

Mai

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

29

¿Qué es ofuscación?

Es el proceso que esconde la lógica del programa Confunde al observador, pero se mantiene la

funcionalidad del programa (incluso puede mejorarla) Si el programa esta encriptado, y la encripción se

rompe, el código ofuscado se mantiene ilegible.

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

30

Transformaciones de ofuscación Renombrado de símbolos : se aplica a tipos,

interfaces, métodos, campos, etc. ; reemplaza nombres con sentido por otros sin significado; confunde al lector del código decompilado. No afecta el desempeño.

Métodos: Hashing 1:1 Overload induction (inducción de sobrecarga) :

renombra tantos métodos como sea posible con el mismo nombre

GetPayroll() -> a()MakeDeposit(float amount)-> a(float a)SendPayment(String dest) -> a(String a)

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

31

Transformaciones de ofuscación Remoción de metadatos innecesarios: aplica a

eventos, propiedades y parámetros; esta información puede quitarse; se reduce el tamaño de la aplicación. No afecta el desempeño.

Modificación del flujo de control: hace más difícil de seguir la lógica del programa: es equivalente a la lógica original. Confunde al humano y a los decompiladores. Incrementa el tamaño del código.

Métodos: Reordenamiento de bloques Predicados opacos: agrega “ifs” falsos

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

32

Class C

Class C1

Class C0

Class Splitting

class C {float f;int v;public C() { }public void P() {

f=1.2;}public void Q() {

v=1;P();

}}

method P

method Q

float f

int v

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

33

Transformaciones de ofuscación Encripción de cadenas: esconde

información sensible y posibles pistas de lo que este haciendo el código. Las cadenas se desencriptan por demanda. Aumenta el tamaño del código.

Compactación : analiza el conjunto de instrucciones ASM y remueve elementos no usados. Efectivo en aplicaciones distribuidas.

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

34

Protección de código

.EXE Ofuscador .EXE’

• Compresión• Encripción• Detección de debuggers• Redirección API• Anti-dump• Remueve OEP

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

35

Protección de código

.EXE wrapper• .EXE’• Cargador

• Genera Cargador • Modo trial • Encripción• Detección de debuggers• Detecta modificaciones en el archivo • una sola copia

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

36

Procesos de protección de software Galileo

Ofuscación Restricción de uso

por tiempo o sesioneshasta que se registre

Producción de medios

con protección contra copiado

Validación de llave (física o lógica)

Restricción legalespor licencia

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

37

Conclusiones

Es prioritario contar con soluciones de seguridad para asegurar el éxito comercial de cualquier producto.

…incluso para fomentar que los pequeños productores puedan hacer que sus proyectos sean rentables.

Es critica la educación de los usuarios para que dejen de comprar productos apócrifos.

…y que el costo de los productos sea razonable (accesible es deseable)

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

38

Para reflexionar

Ante la queja de que somos un país dependiente tecnológicamente…

¿Qué tipo de tecnología…? Necesita el país, sus empresas e instituciones;

Caso del instituto Weizmann: investigadores de primera línea que querían “solo investigar”; acabaron desarrollando productos utiles para la industria israelí (medicina, agricultura, defensa, etc).

Práctica común en México: Hacemos N sistemas de información a la medida, M páginas web; y no hay soluciones genéricas que aprovechen la experiencia.

Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004

39

Referencias

http://www.computercommunications.jeanmason.ca/internet%20security/sld009.htm

http://shadowz.s5.com/cracktools/softice.htm

http://www.acrigs.com/FRAVIA/vbzero.htm

http://home.t-online.de/home/Ollydbg/