Protección de software
-
Upload
jacobo-hernandez-v -
Category
Documents
-
view
1.855 -
download
0
description
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
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.