La protección de su software
ingeniería Inversa de protección (integrado y activo)
la Protección de Su Software
Todos los programas involucrados en la seguridad de la presente vulnerabilidades es
a los programadores a eliminarlos o proporcionar detección. Por
la ingeniería inversa de un programa, un atacante puede hacer o no hacer
todo lo que a él le agrada. Títulos de los botones y las constantes de cadena puede ser
modificado para engañar al usuario para comprometer la seguridad, y un simple
intercambio de punteros podría resultar en que la información confidencial que se
se filtró. El más simple medida contraria a este tipo de ataques es
garantizar que ningún programa de archivos han sido modificados. Una forma más versátil
táctica implica firmas digitales y un cargador de programa.
los Atacantes por lo general se trata de craqueo el programa antes de romper el
sistema de criptografía de la mayoría de los programas son sorprendentemente débil contra
ingeniería inversa.
Un programa es una serie de instrucciones que se almacenan localmente si el usuario
puede ejecutar el programa, entonces él puede realizar ingeniería inversa, y el cambio
a su voluntad. Con un buen depurador, un atacante puede seguir el programa
a través de su interfaz de mensajes y llamadas a procedimiento. Es importante
para entender que todos los programas pueden ser de ingeniería inversa, pero la
tarea puede ser muy difícil. Ha sido práctica común para
años: camuflaje funciones relacionadas con la seguridad, espolvorear señuelo
las llamadas a la función, y aplicar anti-depuración de los procedimientos. Estos
no realiza prácticas de los programas de prueba de manipulación en cualquier forma, pero
sin duda hacen resistente a las manipulaciones. No existe una solución simple para
este problema, pero el verdadero objetivo sigue siendo para impedir que el programa
de ser modificado.
Cadenas contenidas dentro de un programa que tiene una enorme influencia, y
puede ser una debilidad de seguridad. Se utiliza para comunicarse con el
usuario si las cadenas son reemplazados con información engañosa, un
atacante podría quitar de seguridad 'comprometida' de los mensajes, y evitar
el usuario desde la detección de la intrusión. Estos ataques sólo requieren de un
simple editor hexadecimal, y son muy fáciles de conseguir. Hay muchas maneras
para realizar su ataque muy difícil. Si las cadenas son codificados correctamente,
un atacante tendría que: ingeniería inversa con el programa, encontrar el
clave, extracto de las funciones de descodificación, de resolver el cifrado
funciones (que no están en el programa!), cifrar el falso cadenas,
y el intercambio de cadenas de caracteres. Con un inteligente uso de los punteros, la clave puede ser
esparcidos a través del código fuente, y se recombinan sin hacer
las llamadas de función que podría atraer a un atacante la atención.
las Cadenas deben estar ocultos para asegurar que los usuarios no pasan falso
los mensajes, y por lo tanto comprometer la seguridad.
Punteros ofrecen abundantes oportunidades para los listones de filtraciones de datos estragos.
Imagina una situación en la que un puntero a un registro del usuario,
la configuración del programa se intercambia con un puntero a la clave del usuario, y
la clave se escriben en el registro, en el abierto para la
atacante para agarrar. Estas situaciones no se escuchan muy a menudo,
debido a que los programas no están protegidas, y los medios más simples para la obtención de
datos están generalmente disponibles para los atacantes. Si el nombre de la clave 'clave'
no queda nada para el atacante de la imaginación. Es muy fácil
agregar:
'#definir los principales btnOkClicked'
al principio del código fuente para cambiar el nombre de todas las referencias a
'clave' mientras se mantiene el código fuente clara y coherente.
'btnOkClicked' es muy engañoso, y será ignorado por los atacantes
durante mucho tiempo, a menos que el procedimiento que lo llamó, se llama
'getKey'. Es importante que el esquema de nombres no se revelan
que los punteros, las variables y los procedimientos relacionados con la seguridad. Es
es lo suficientemente simple para hacer falso de la versión del código fuente de la que
será compilado con nombres ambiguos para la versión de lanzamiento, por lo que
que la ingeniería inversa no revela información importante de la
esquema de nomenclatura. Los nombres de darle a los atacantes pistas importantes acerca de un
puntero del uso utilizar esto como una ventaja para confundir y despistar
los atacantes.
los Desarrolladores a menudo se ejecutan las sumas de comprobación o de las funciones de hash sobre el ejecutable de
y compararlo con un valor codificado en el programa. Hay un
algunos de los problemas que surgen a partir de esta medida contraria. Un atacante sólo
tiene que cambiar una declaración condicional de 'si a = entonces' a 'si <>
a continuación,' seguir el mismo procedimiento, independientemente de que la
las sumas de comprobación de concordancia o no. Por supuesto, usted puede camuflar este
instrucción condicional, pero esquivando estas medidas es no
problema para un cracker con experiencia. Simplemente verificar si un archivo tiene
cambiado no es suficiente idealmente modificar el ejecutable haría
es inviable.
firmas Digitales ofrecen una muy buena y reconfortante solución. Por
la firma del ejecutable que asegurarse de 2 cosas: cualquiera puede ejecutar el
programa, y sólo usted puede crear o modificar. Para que un atacante
modificar el programa tendría que romper la firma digital
algoritmo o la clave privada. Usted puede utilizar un unsigned parte
el programa para descifrar el resto del programa o el uso de un
programa externo a esto se le conoce como un cargador de programa. En cualquiera de los
en caso de que el atacante sólo se conoce la clave pública. Si un atacante
modifica el ejecutable que él no será capaz de firmar correctamente,
lo que la detección simple. Otra variedad de esta protección implica la
obtención de la clave pública de un servidor para evitar que el atacante
la modificación de la clave pública codificada en el programa.
se recomienda combinar las contramedidas. Por ejemplo, digital
firmas puede ser usado en conjunción con una suma de comprobación. Este método
está detrás de Microsoft Authenticode de firmas de parte de la CryptoAPI
Herramientas. Programas certificados están garantizados para venir a partir de determinada
fuente, y para ser modificadas. El problema con Authenticode es la
programa sólo está protegido como el contenido en línea, y una vez en su
la unidad de disco duro, no hay ninguna garantía. Debido a la complejidad en
el diseño de los programas que emplean las firmas digitales de forma nativa, muy
algunas implementaciones se utilizan, pero es probable que algunas de variedad de ellos
será construido en la mayoría de las aplicaciones en la próxima década con la seguridad
las preocupaciones de aumento entre los consumidores prioridades.
(C)Copyright DrMungkee 2000
La proteccion de su software
La proteccion de su software : Multi-millones de consejos para hacer su vida mas facil.
ingenieria Inversa de proteccion (integrado y activo)
la Proteccion de Su Software
Todos los programas involucrados en la seguridad de la presente vulnerabilidades es
a los programadores a eliminarlos o proporcionar deteccion. Por
la ingenieria inversa de un programa, un atacante puede hacer o no hacer
todo lo que a el le agrada. Titulos de los botones y las constantes de cadena puede ser
modificado para engañar al usuario para comprometer la seguridad, y un simple
intercambio de punteros podria resultar en que la informacion confidencial que se
se filtro. El mas simple medida contraria a este tipo de ataques es
garantizar que ningun programa de archivos han sido modificados. Una forma mas versatil
tactica implica firmas digitales y un cargador de programa.
los Atacantes por lo general se trata de craqueo el programa antes de romper el
sistema de criptografia de la mayoria de los programas son sorprendentemente debil contra
ingenieria inversa.
Un programa es una serie de instrucciones que se almacenan localmente si el usuario
puede ejecutar el programa, entonces el puede realizar ingenieria inversa, y el cambio
a su voluntad. Con un buen depurador, un atacante puede seguir el programa
a traves de su interfaz de mensajes y llamadas a procedimiento. Es importante
para entender que todos los programas pueden ser de ingenieria inversa, pero la
tarea puede ser muy dificil. Ha sido practica comun para
años: camuflaje funciones relacionadas con la seguridad, espolvorear señuelo
las llamadas a la funcion, y aplicar anti-depuracion de los procedimientos. Estos
no realiza practicas de los programas de prueba de manipulacion en cualquier forma, pero
sin duda hacen resistente a las manipulaciones. No existe una solucion simple para
este problema, pero el verdadero objetivo sigue siendo para impedir que el programa
de ser modificado.
Cadenas contenidas dentro de un programa que tiene una enorme influencia, y
puede ser una debilidad de seguridad. Se utiliza para comunicarse con el
usuario si las cadenas son reemplazados con informacion engañosa, un
atacante podria quitar de seguridad 'comprometida' de los mensajes, y evitar
el usuario desde la deteccion de la intrusion. Estos ataques solo requieren de un
simple editor hexadecimal, y son muy faciles de conseguir. Hay muchas maneras
para realizar su ataque muy dificil. Si las cadenas son codificados correctamente,
un atacante tendria que: ingenieria inversa con el programa, encontrar el
clave, extracto de las funciones de descodificacion, de resolver el cifrado
funciones (que no estan en el programa!), cifrar el falso cadenas,
y el intercambio de cadenas de caracteres. Con un inteligente uso de los punteros, la clave puede ser
esparcidos a traves del codigo fuente, y se recombinan sin hacer
las llamadas de funcion que podria atraer a un atacante la atencion.
las Cadenas deben estar ocultos para asegurar que los usuarios no pasan falso
los mensajes, y por lo tanto comprometer la seguridad.
Punteros ofrecen abundantes oportunidades para los listones de filtraciones de datos estragos.
Imagina una situacion en la que un puntero a un registro del usuario,
la configuracion del programa se intercambia con un puntero a la clave del usuario, y
la clave se escriben en el registro, en el abierto para la
atacante para agarrar. Estas situaciones no se escuchan muy a menudo,
debido a que los programas no estan protegidas, y los medios mas simples para la obtencion de
datos estan generalmente disponibles para los atacantes. Si el nombre de la clave 'clave'
no queda nada para el atacante de la imaginacion. Es muy facil
agregar:
'#definir los principales btnOkClicked'
al principio del codigo fuente para cambiar el nombre de todas las referencias a
'clave' mientras se mantiene el codigo fuente clara y coherente.
'btnOkClicked' es muy engañoso, y sera ignorado por los atacantes
durante mucho tiempo, a menos que el procedimiento que lo llamo, se llama
'getKey'. Es importante que el esquema de nombres no se revelan
que los punteros, las variables y los procedimientos relacionados con la seguridad. Es
es lo suficientemente simple para hacer falso de la version del codigo fuente de la que
sera compilado con nombres ambiguos para la version de lanzamiento, por lo que
que la ingenieria inversa no revela informacion importante de la
esquema de nomenclatura. Los nombres de darle a los atacantes pistas importantes acerca de un
puntero del uso utilizar esto como una ventaja para confundir y despistar
los atacantes.
los Desarrolladores a menudo se ejecutan las sumas de comprobacion o de las funciones de hash sobre el ejecutable de
y compararlo con un valor codificado en el programa. Hay un
algunos de los problemas que surgen a partir de esta medida contraria. Un atacante solo
tiene que cambiar una declaracion condicional de 'si a = entonces' a 'si <>
a continuacion,' seguir el mismo procedimiento, independientemente de que la
las sumas de comprobacion de concordancia o no. Por supuesto, usted puede camuflar este
instruccion condicional, pero esquivando estas medidas es no
problema para un cracker con experiencia. Simplemente verificar si un archivo tiene
cambiado no es suficiente idealmente modificar el ejecutable haria
es inviable.
firmas Digitales ofrecen una muy buena y reconfortante solucion. Por
la firma del ejecutable que asegurarse de 2 cosas: cualquiera puede ejecutar el
programa, y solo usted puede crear o modificar. Para que un atacante
modificar el programa tendria que romper la firma digital
algoritmo o la clave privada. Usted puede utilizar un unsigned parte
el programa para descifrar el resto del programa o el uso de un
programa externo a esto se le conoce como un cargador de programa. En cualquiera de los
en caso de que el atacante solo se conoce la clave publica. Si un atacante
modifica el ejecutable que el no sera capaz de firmar correctamente,
lo que la deteccion simple. Otra variedad de esta proteccion implica la
obtencion de la clave publica de un servidor para evitar que el atacante
la modificacion de la clave publica codificada en el programa.
se recomienda combinar las contramedidas. Por ejemplo, digital
firmas puede ser usado en conjuncion con una suma de comprobacion. Este metodo
esta detras de Microsoft Authenticode de firmas de parte de la CryptoAPI
Herramientas. Programas certificados estan garantizados para venir a partir de determinada
fuente, y para ser modificadas. El problema con Authenticode es la
programa solo esta protegido como el contenido en linea, y una vez en su
la unidad de disco duro, no hay ninguna garantia. Debido a la complejidad en
el diseño de los programas que emplean las firmas digitales de forma nativa, muy
algunas implementaciones se utilizan, pero es probable que algunas de variedad de ellos
sera construido en la mayoria de las aplicaciones en la proxima decada con la seguridad
las preocupaciones de aumento entre los consumidores prioridades.
(C)Copyright DrMungkee 2000
La protección de su software
By Consejos Y Trucos
La protección de su software : Multi-millones de consejos para hacer su vida más fácil.