Autor Tema: Firma digital en los PICs  (Leído 9951 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Firma digital en los PICs
« Respuesta #15 en: 27 de Agosto de 2009, 17:39:31 »
Hola amigos

Interesante este hilo, seguridad en los pic.

Me lo apunto


Un saludo

Desconectado droky

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 628
    • Diseños radikales libres
Re: Firma digital en los PICs
« Respuesta #16 en: 27 de Agosto de 2009, 21:03:58 »
Hola,
Para hacerlo más dificil, pero no serviría en PICs pequeños por su capacidad, yo implementaría un algoritmo MD5 en el PIC.
Desde el PC le envías una cadena de bytes y el PIC te lo retorna operandolo con una ID que tu definas (tipo "secreto") y en MD5.
En el PC haces el mismo proceso y verificas la palabra retornada.
Claro está que la lectura del PIC ha de estar protegida.
Si tu palabra "secreta" solo la sabes tú, aunque tu código esté disponible, no podrán suplantarlo. A no ser que apliquen ingeniería inversa al software.

Si tu pic solo envía una ID es fácilmente suplantable por otro firm que haga lo mismo y con un simple analizador lógico lo habremos identificado.
Si usas un algoritmo de respuesta basado en operaciones lógicas, sustitución, desplazamientos de una palabra enviada al PIC, se puede romper con fuerza bruta o creando una pequeña red neuronal que "aprenda" y lo acabe rompiendo.
El tema está en el tipo de protección que quieras darle a tu dispositivo.
Puedes proteger el PIC todo lo que quieras, pero por 1500$US hay empresas que te leen el código fuente usando técnicas de laboratorio.
Si simplemente quieres identificar los pics, pues puedes usar una rutina de tipo Acknowledge (PC:"Eres de los mios?" --- PIC:"Si, soy el hDA3FE2"
SI quieres seguridad sin pensar en que te copien el PIC , pues una rutina de encriptación  (MD5 está muy bien) o un sistema de clave pública-privada.
Pero ten en cuenta que puedes proteger el PIC, pero si no proteges el sistema con el que se comunica (soft del PC) no has conseguido nada.
Un caso propio:
Hace un par de meses, actualicé una versión de software de un dispositivo que tengo de hace algún tiempo.
El "suministrador" me dice que esta versión, debido a sus nuevas funciones necesita un hardware diferente al que ya tengo (incremento de precio).
Cuando me llega el nuevo hardware, es el mismo de siempre pero incorpora un chip a mayores: un AT88SC02.
Busco en internet y resulta que es una criptomemoria recien salida al mercado de la que casi no hay ni información en Atmel.
Problemas. Necesito hacer varios dispositivos que me funcionen con el soft que he pagado a precio de oro, pero el nuevo soft hace una verificación de un número de serie encriptado en el AT88SC02.
El tío ha estado fino. Ahora si quiero manejar más cacharros, debo pagarle el software completo y el hardware de cada uno.
¿Atacar la criptomemoria?-.... Imposible. No con mis medios.
La solución: Ingeniería inversa en el software.
Analizo y encuentro:
Programa hecho en Delphi sin ningún tipo de empaquetado, no hay ofuscación de código ni nada parecido.
Parece chupado. Un par de vueltas con el Olly y aparece mi serial encriptado.
Me encuentro que al modificar un byte del soft me salta un error de integridad en el programa. Es una rutina de chequeo de CRC.
Busco el salto condicional en el test del byte del CRC y lo modifico.
Hago pruebas con el serial, pero no estoy por la labor de identificar el algoritmo, así que me cargo todos los saltos condicionales en los chequeos del serial.
Es tan mala la protección, que hace la llamada a la rutina de comprobación del serial en cada comando, menú o botón al que se le llama, y como en cualquier compilador, el Delphi crea una especie de macro que se repite en cada rutina muy fácil de localizar e identificar.
Después de un par de horas, el AT88SC02 se ha convertido en un trozo de plástico en la placa.
Finalmente se han gastado recursos en proteger el hardware dejando totalmente desprotegido el software, con lo que la protección no ha servido de nada.
Es algo a tener en cuenta a la hora de proteger. Debemos aplicar los mismos recursos en ambos lados de la comunicación.

De nada sirve poner guardias armados en la puerta principal, si la puerta de servicio está entornada. :mrgreen:
Salu2
Yo... he visto cosas que vosotros no creeríais... atacar naves en llamas más allá de Orión, he visto rayos C brillar en la oscuridad cerca de la puerta Tannhäuser.
Todos esos momentos se perderán en el tiempo como lágrimas en la lluvia.
Es hora de morir.

Si me buscas en twitter, me tienes por @radikaldesig

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Firma digital en los PICs
« Respuesta #17 en: 27 de Agosto de 2009, 21:47:31 »
Hola, Oye muy buena esa observacion Droky de nada vale proteger hardware y no soft o software y no hardware asi que tengan eso muy pendiente.

Saludos y estamos en contacto.
Atten.
Alexander Santana.
Venezuela-Barcelona.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Firma digital en los PICs
« Respuesta #18 en: 28 de Agosto de 2009, 09:01:25 »
Hola buenos dias, estuve haciendo una pruebas con lo del ID de los pic y resulto provechoso si se puede identificar el pic aun estando el codigo protegido es decir, si proteges el codigo y luego lo lees logicamente no veras el hex del pic pero en la interface grafica del programador que uses si sabe el id.

Saludos y muy buen tema ya se tiene una idea de como poder saber si un proyecto el codigo es tuyo al menos que otra persona use el mismo codigo de Id que usted.
Atten.
Alexander Santana.
Barcelona-Venezuela.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado Kid_Bengala

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 490
Re: Firma digital en los PICs
« Respuesta #19 en: 28 de Agosto de 2009, 10:38:52 »
hola

si que se pueden implementar mil cosas,pero si simplemente quiere saber si el pic es suyo,que ponga algo en la eeprom y en el firm que si ese dato no funcione.para temas mas gordos yo no utilizaria un pic,mas que nada porque tengo un amigo que ha montando una empresa (realiza diseños de seguridad entre otras cosas con fpga y demas) y no me ha aconsejado los pic para esto,para temas mas serios me ha dicho utilizar micros con rsa, des y no se que otras cosas.si tienes alguna duda,te puedo dar su email,que es muy majete y seguro que te contesta,no se cuanto tardara porque debe andar liado(hace tiempo que no se nada de el)

saludos de antonio

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Firma digital en los PICs
« Respuesta #20 en: 28 de Agosto de 2009, 18:13:31 »

En la página de microchip , en la lista de pics que despliega con sus caracteristicas indica tambien el nivel de seguridad que tiene o puede brindar cada uno.

Saludos!

Desconectado macedo

  • PIC18
  • ****
  • Mensajes: 270
Re: Firma digital en los PICs
« Respuesta #21 en: 31 de Agosto de 2009, 19:07:31 »
Hola yo le ponia al final del codigo esto:
;===========================================================================================================
; Embedded Release & Copyright Information
;===========================================================================================================
 
      DA  "Interface PIC-SAS 6.00, 6.01, 6.02 - $Revision: 3.00 $ - Copyright 2007, Alejandro MACEDO., All Rights Reserved."

; End of Embedded Release & Copyright Information

Por ponerle algo pero al comilarlo me lo volvia todo a lenguaje maquina y no se leia, cuando le das lectura por programador, lo estoy haciendo mal?

Desconectado Kid_Bengala

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 490
Re: Firma digital en los PICs
« Respuesta #22 en: 01 de Septiembre de 2009, 14:45:03 »
Los comentarios no se te compilaran, solo el DA.

saludos de antonio

Desconectado macedo

  • PIC18
  • ****
  • Mensajes: 270
Re: Firma digital en los PICs
« Respuesta #23 en: 02 de Septiembre de 2009, 18:08:20 »
Hola, el DA es el que quiero poner y que se vea en el PIC leido, habra que pasarlo a otro lenguaje para que quede talcual? :shock:

Desconectado macedo

  • PIC18
  • ****
  • Mensajes: 270
Re: Firma digital en los PICs
« Respuesta #24 en: 10 de Septiembre de 2009, 10:01:58 »
Hola lo que logre es ponerlo al final del programa y que se vea asi:

;================================================================
; Embedded Release & Copyright Information
;===============================================================
        ORG   0X3A8
        DE    "Pulsador de Bar - $Revision: 1.00 $ - Copyright 2009, Alejandro, All Rights Reserved."
; End of Embedded Release & Copyright Information

Se lee talcual se ve al final del programa, tengan cuidado al poner la direccion del programa para no sobreescribir el OSCCAL.
Saludos

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Firma digital en los PICs
« Respuesta #25 en: 15 de Febrero de 2010, 22:30:20 »

Pero ten en cuenta que puedes proteger el PIC, pero si no proteges el sistema con el que se comunica (soft del PC) no has conseguido nada.

De nada sirve poner guardias armados en la puerta principal, si la puerta de servicio está entornada.
Hola buenas noches Droky, oye se me olvido preguntarte que tipo de herramienta necesito para hacer proteccion en los soft que hago en la pc especificamente en delphi para que no pase lo que tu mismo comentas en este  post que de nada sirve proteger el hardwarte y luego se puede rromper el soft y asi poder tener un acceso a la aplicacion.

Saludos y espero tu opiniones.
Atten.
Alexander Santana.
Venezuela-Barcelona.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado droky

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 628
    • Diseños radikales libres
Re: Firma digital en los PICs
« Respuesta #26 en: 16 de Febrero de 2010, 03:29:58 »
Hola Astrocar,
El nivel de protección depende un poco hacia donde va orientado el software y el tipo de difusión que le vas a dar.
Si lo van a usar usuarios "de a pie" con pocos conocimientos técnicos, seguro que con un password te sirve.
Pero si lo van a usar usuarios técnicos y el precio de tu aplicación depende en gran medida del software, ten por seguro que lo intentarán piratear.
No hay nada completamente seguro. Todo es desprotegible y hackeable, depende de la destreza de quien lo haga, por tanto lo ideal será ponérselo lo más difícil posible para que se de por vencido....
La ofuscación de código no es demasiado apropiada, ya que los debuggers hacen uso de las llamadas a las rutinas de las API de windows como BreakPoints y la ofuscación no puede ocultar esas llamadas. Puedes darle un poquito más de trabajo al cracker en cuestión, pero siguiendo estas llamadas, se hará con tu software pronto.
Una opción muy habitual es el uso de packers, que lo que hacen es añadir ofuscación de código insertando código ensamblador transparente en los procedimientos habituales tipo "showmessagebox(), button_click()"..etc. Reducen el tamaño del programa comprimiéndolo y descomprimiéndolo en memoria en el momento de la ejecución, para evitar acceder a los vectores y offsets reales en el .exe para no permitir modificaciones. Tambien suelen añadir rutinas anti-debugger que hacen que algunos debuggers no puedan acceder al código en ejecución, inhabilitando o tomando el control de las interrupciones usadas por ellos.
Hay packers mejores y peores, pero un inexperto cracker poco tiene que hacer con un packer decentillo.
Evidentemente hay ya varios programas de detección de packers y desempaquetadores para hacer el proceso inverso.
Pásate por este enlace que te orienta un poquito sobre el tema.
http://foro.elhacker.net/ingenieria_inversa/como_proteger_tu_programa-t222129.0.html
Las protecciones tipo mochila, (HASP)
Salu2

Yo... he visto cosas que vosotros no creeríais... atacar naves en llamas más allá de Orión, he visto rayos C brillar en la oscuridad cerca de la puerta Tannhäuser.
Todos esos momentos se perderán en el tiempo como lágrimas en la lluvia.
Es hora de morir.

Si me buscas en twitter, me tienes por @radikaldesig