Está en la página 1de 39

Protección de

productos de software
MCC Eugenio Jacobo Hernández Valdelamar

Fundación Arturo Rosenblueth


Octubre, 2004
México.
2 Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004
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

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


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

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


PRODUCCIÓN DE SOFTWARE

DESARROLLO ADMINISTRACIÓN
Creación del producto Producción Eficiente & Efecti

Implica: Implica:
Métodos & Heurísticas Métodos & Heurísticas

Medida del éxito: Medida del éxito:


Calidad Productividad
f (aptitud de uso) f (Esfuerzo)
Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004
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)

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


Principio: Separar las preocupaciones

Métricas de desarrollo
Administración del Métricas de calidad
proyecto

monitorea

software & ajustes


Aseguramiento
Desarrollo de SW
de calidad
prueba & reportes
Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004
Modelo de costos del Software
5 parámetros básicos

1. Tamaño del producto final

3. Proceso usado para producir el producto final

5. Capacidades del personal (experiencia)

7. Ambiente (herramientas y técnicas)

9. 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


8 Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004
Etapas de una Creación
Creación del
concepto

Implementar /
Mejorarla
Desarrollar

Obtener un
Defenderla
Prototipo

Probar en la
Comercializarla
Realidad

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

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


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.
10 Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004
La experiencia del usuario
 Todos los
aspectos de
un producto o
servicio
percibidos por
el usuario.

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


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

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


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.

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

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


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).

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


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

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


Ataques al software en
anfitriones maliciosos

Descargar
Instalar
Cliente benigno
(programa) Anfitrión malicioso

Ataque Defensa

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

Ingeniería en reversa Ofuscación

Tampering (copiado-transformación Tamperproofing


de contenidos)

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


Ataques contra el software
María Mai

Piratería

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

María Mai

Ingeniería M M
en reversa
M M

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


su propio programa.
17 Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004
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

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


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.
19 Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004
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)
20 Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004
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

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


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

Desensamblador Editor Hex

Aplicación

Funcionalidad restringida:
- Por tiempo de sesión
- Modo de evaluación (acceso
solo a algunas funciones)
22 Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004
¿Qué hace el programa?
Tiempo de sesión limitado a 30 segundos

Suma y multiplica
(una calculadora
en ciernes) Funciones
inhibidas

Requiere una clave de activación


para terminar el modo de evaluación

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


Identificando la clave de activación

Salida del desensamblador

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

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


Identificando el punto de
activación

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

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


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)

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


'bandera para determinar si el programa esta en modo de evaluación
Private activa As Boolean
'# de ciclos que determina el tiempo de una sesion (30 segs)
Código del programa
Private ciclos As Integer Victima (VB)
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 If
End 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 If
End Sub

Private Sub Form_Load()


activa = False: ciclos = 0
End 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 If
End Sub

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


Defensas contra ataques maliciosos
María Cliente

Marcado
(watermarking)

María marca su programa con una clave secreta K.


El cliente accede al producto mediante una clave que valide el marcado.
Mai
María

Ofuscación

María transforma su programa en uno equivalente para prevenir que


pueda desensamblarse o decompilarse.

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


¿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.

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


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)
30 Eugenio Jacobo Hernández Valdelamar - Protección de productos de software - 2004
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

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


Class Splitting

class C { float f
float f; Class C0
int v; int v
public C() { }
public void P() { method 
f=1.2; P
}
public void Q() { Class C1
v=1;
P(); method 
} Q
} Class C

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


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.

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


Protección de código

.EXE Ofuscador .EXE’

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

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


Protección de código

• .EXE’
.EXE wrapper • Cargador

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

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


Procesos de protección de
software Galileo

Producción de
Restricción de uso
Validación de llave medios
por tiempo o sesiones
(física o lógica) con protección
Ofuscación
hasta que se registre
contra copiado

Restricción legales
por licencia

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


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)

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


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.

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


Referencias

 http://www.computercommunications.jeanm
 http://shadowz.s5.com/cracktools/softice.ht

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

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

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