Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - morpheus1000

#1
Criptografía / Re: Criptografia
31 Agosto 2016, 11:12 AM
Y hablando acerca de cifrado RSA; compañero Kub0x ¿que opinas de ciertos sistemas que buscan romper el cifrado RSA? :huh: :huh:

Algunos algoritmos que se supone fueron desarrollados para con tal propósito y que usan la técnica de FACTORIZAR EL MODULO, al menos los que he encontrado son: la criba cuadrática, criba numérica o el algoritmo de factorización en curvas elípticas.

En cualquier caso, en teoría están muy lejos de poder romper una cifrado RSA de más de 1024 bits en un tiempo razonable, aunque para valores más pequeños, en teoría, si es factible obtener la clave privada a partir de la clave pública en unas pocas horas.

Por lo que mi pregunta va encaminada a eso, ¿cual sería su opinión en general? :huh: :huh:
y
¿cual seria su opinión en caso de un cifrado a 64 bit? :huh: :huh:

Espero sus opiniones.

Saludos.
#2
CitarSin mayor cantidad de codigo no sabria decirte, pero de ese codigo leo:

1) Se asigna a la variable cmd una instancia de la clase ClientCmd. La clase se inicializa (construye) con los parametros que se le pasan.

2) Dentro del try llama al metodo Connect de la clase. Esto debe realizarlo para establecer una conexion con una base de datos o algo parecido. Los parametros son la cadena TRUST, el nombre (aparente) del usuario de la sesion actual y el valor null (para saber que deberia ir en ese 3er parametro, habria que revisar la definicion del metodo).

3) El metodo CmdToServer se encargaria de agregar la licencia, usando como parametro una instancia de la clase AddLicenseCmdBuilder la cual se inicializa (construye) con strXml como parametro.

Saludos!

Muchas gracias!

Hace mucho no revisaba sintaxis de un programa C, (en este caso C# que salvo las librerías exclusivas de MS, es la misma cosa).

Y tienes razón, esta función invoca a otras, y aunque el desarrollador original dejo la estructura bastante ordenada, la falta de practica por mi parte, esta haciendo que me lleve algo mas de tiempo, sin embargo ahí estamos.

Gracias otra vez, seguiré revisando el fuente y cualquier novedad la estaré publicando.

Saludos.


Buenos dias

Saludos, ya he empezado a toquetear el ensamblado con reflector + reflexil pero me ha arrojado el siguiene error de compilacion, alguien de ustedes lo conoce??

Descripción: Error durante el procesamiento de un archivo de configuración requerido para dar servicio a esta solicitud. Revise los detalles de error específicos siguientes y modifique el archivo de configuración en consecuencia.

Mensaje de error del analizador: No se puede cargar el archivo o ensamblado 'WebControls' ni una de sus dependencias. La definición del manifiesto del ensamblado no coincide con la referencia al ensamblado. (Excepción de HRESULT: 0x80131040)

Saludos

MOD EDIT: No hacer doble post.
#3
Buenos días y muchas gracias por las respuestas y los ánimos que me dan  MCKSys Argentina, paso a mostrar cierta función, ¿en una chanza me ayudan a revisarla?

A mi entender la función llamada m_AddLicense(string strXml)
Recibe la variable sobre la cual va a trabajar en formato string, y la maneja bajo el nombre de xtrXml:   

private void m_AddLicense(string strXml)
{
    ClientCmd cmd = new ClientCmd(ServerCapabilities.ServiceAddress(), ServerCapabilities.TcpNmeaPort());
    try
    {
        cmd.Connect("TRUST", Session.CurrentSession.User.Username, null);
        cmd.CmdToServer(new AddLicenseCmdBuilder(strXml));
    }
    finally
    {
        cmd.Disconnect();
    }
}


La variable ClientCmd  tomaría el valor devuelto por la función ClientCmd() que a su vez trabaja utilizando los parámetros devueltos por las funciones.

ServerCapabilities.ServiceAddress() y ServerCapabilities.TcpNmeaPort()
La parte que no logro entender bien es el Try donde:

La funcion cmd.Connect() usa la cadena de caracteres "TRUST", y el contenido de la vairable Session.CurrentSession.User.Username, finalmente aplica la palabra null (no entiendo a qué se refiere).

cmd.CmdToServer() Usa "new" y finalmente ejecuta la función AddLicenseCmdBuilder()
Con el string que inicialmente recibió la función principal, ¿Quién de ustedes me puede orientar en este paso?  :huh: :huh: :huh:

Saludos!
#4
Criptografía / Re: Duda acerca de Firmas RSA
26 Julio 2016, 23:50 PM
Muchas gracias engel lex

Ni hablar, no soy muy fanático de C# (Lenguaje en el que se desarrollo este software) sin embargo por ahí anda un par de herramientas que me pueden ser muy útiles al momento de craquear dicha validación que, dicho sea de paso, se pudo implementar en una manera adecuada por esta casa de software.


Saludos y muchas gracias compañeros.   :rolleyes: :rolleyes:
#5
Criptografía / Re: Criptografia
26 Julio 2016, 23:42 PM
Buenas tardes

Yo por mi parte estoy de acuerdo con el compañero kub0x, la criptografía juega uno de los papeles mas esenciales del siglo pasado y de este siglo, y todavía le queda mucho tiempo por venir.

Ejemplos: Los sistemas protegidos, telecomunicaciones, la protección de la información bancaria y/o de los gobiernos, a donde voltees la criptografia y los sistemas de protección de información están presentes hoy en día. Tal vez el problema no sea poder estudiarlo, sino a mi ver, el poder utilizarlo de una manera optima, en donde aplicar este tipo de conocimientos resuelva una problemática de la mejor manera posible.  :)

Saludos!
#6
Criptografía / Re: Duda acerca de Firmas RSA
26 Julio 2016, 23:28 PM
Muchas gracias por el aporte amigo kub0x   :rolleyes:

A ver si entendí bien

Tanto el MODULO como el EXPONENTE que me maneja mi proveedor de software, SIEMPRE va a ser PUBLICO y cualquiera tendrá acceso a ese par de datos. Sin embargo, la clave privada de mi proveedor NUNCA y BAJO NINGÚN MOTIVO TENGO MANERA DE CONOCERLA; Sin embargo como el me entrego su clave publica, YO puedo validar su mensaje y firma, y decir que ÉL ES EL CREADOR LEGÍTIMO DE ESA FIRMA. ¿?

A lo que voy: MI copia de software de ninguna manera puede ser engañado aunque yo quisiera generar una nueva llave con datos propios y una firma ¿? ... Simplemente el software rechazaría dicha firma como falsa ¿?

No hay manera de hacerlo ¿?

Gracias Otra vez.  :) :)
#7
Criptografía / Duda acerca de Firmas RSA
26 Julio 2016, 22:00 PM
Buenas tardes muchachos

Pasare al tema rápidamente, les platico, hace poco adquirí actualización de un software que he estado utilizando de manera genuina, el fabricante del software me ha mandando un archivo .bin el cual contiene la siguiente información:

<RSAKeyValue>

<Modulus>YXYMUUM6c9Diw6oTglMQ291IpIOsHDLW4Ia2xcb9U0cw+qtKfK
RavrMO7NjToRvodRnLTlvTlprg6k/bC9/PTKLlul1B+EfE1fCXeE8cD34TD36LpTU+NK4W5eB
5G+iTXNl++Y37j96cAb9oquGUWnYBY4s6aSlS8=</Modulus>


<Exponent>AQAB</Exponent>

</RSAKeyValue>

00000000-0000-0000-0000-00021a7559mi_dato_nombremi_dato_emailT+vbzOsDEvhejLiktlWhcB20RMBdz8aO0iEQOmU39modvXifg88pKYpPtESpPUuQZKO8x9MXaLMmse3LY9W5aNSfvJ9KxEPMp+M+8LemWj2owsgDeoUJ+yPPBS3

A mi ver es una llave válida para correr desde mi software genuino, implementa un algoritmo RSA; lo que no me queda claro es por que me mandan un módulo y un exponente, y si este es exponente publico o privado  :huh: :huh: .

Alguien de ustedes tiene idea de como se realiza la operación para que mi software encuentre esta llave como válida y por consiguiente SEA ACEPTADA dentro de mi software genuino, estas dudas las quiero disipar con el fin de conocer exactamente el funcionamiento del esta manera de recibir información cifrada interpretarla y validarla.

Cualquier ayuda es bienvenida amigos. Saludos  ;-) ;-)
#8
Buenas tardes muchachos

Estoy en proceso de desarrollar mi propio generador de FIRMAS RSA, usando C#, alguien de ustedes podría orientarme que procedimiento es el que debo implementar en Visual Studio . NET

He encontrado textos en los cuales se utiliza de exponente AQAB, pero lo que me llama la atención es que ese exponente no es un valor en Hexadecimal, puesto que lleva la letra Q, sin embargo algunos programadores lo manejan de esa manera. ¿Alguien de ustedes sabe a que se debe?

Gracias de antemano.  :)
#9
Buenas tardes

Saludos, y continuando con mi investigación, la SIGNATURE o firma SI es generada mediante algoritmo RSA, y he encontrado 2 datos interesantes:

<Modulo>
vwm4OMJkvRYXYMUUM6c9Diw6oTglMQ291IpIOsHDLW4Ia2xcb9U0cw+qtKfKRavrMO7NjToRvodRnLTlvTlprg6k/bC9/PTKLlul1B+EfE1fCXeE8cD34TD36LpTU+NK4W5eB5G+iTXNl++Y37j96cAb9oquGUWnYBY4s6aSlS8=
</Modulo>

<Exponent>AQAB</Exponent>

Módulo y exponente, estos datos son exclusivos de cada cliente.

:huh: :huh: :huh:

Alguien de ustedes conoce algun generador RSA online al que pueda alimentar con este modulo y exponente para que me genere la FIRMA perteneciente a un cliente en particular, he estado haciendo búsquedas en Google, y aun nada que me sea de utilidad.

Gracias de antemano.
#10
Cita de: MCKSys Argentina en 23 Julio 2016, 01:23 AM
Hola!

La "clave" que has colocado es información encodeada en base 64. Al desencodearla queda información binaria (osea, no es texto plano), la cual debe representar el hash/key/serial que calcula el programa en base a los datos de la base.

Lo que debes hacer es encontrar y analizar la rutina que verifica dichos datos y genera dicha "clave". Una vez analizada la función, podrás generar el proceso inverso, para poder generar las claves que quieras en base a los datos que desees.

Por supuesto, si no tienes idea del tema, vas a necesitar aprender a caminar antes de correr. El FAQ del subforo (link en mi firma) contiene lo necesario para iniciarte en este mundo.

Saludos!


Hola, buenos días  :D

Ampliando un poco la información del software en el que estoy trabajando:

Les cuento, la primera vez que vi la el campo SIGNATURE, en la columna de la tabla LICENSE (esa base de datos es fundamental para el programa) inmediatamente me di cuenta que probablemente no estría muy protegido el sistema QUE GENERA dicha SIGNATURE.  :rolleyes: :rolleyes:

A mi ver, la SIGNATURE se genera de la siguiente manera:



Como les comentaba en la entrada anterior, no importa que información esté yo capturando en las variables: dato1, dato2, etc., por ejemplo: nombre: "Juanito Pérez". email: juanito@juanito.com; lo importante es que la SIGNATURE GENERADA corresponda a los datos primarios (valor de las variables) si se usa el proceso CORRECTO que GENERA DICHA SIGNATURE.  ::)

En otras palabras, y para no confundir...

SIEMPRE que se ejecuta el programa, éste lo que hace, es aplicar una función de GENERACIÓN DE SIGNATURE,  usando dato1, dato2, etc, previamente almacenados en la tabla de la base de datos y, COMPARA el resultado con la SIGNATURE guardada en el mismo renglón de la tabla.  :)

Como información adicional, la WebControls.dll, a mi ver, es la librería que realiza LA FUNCION ANTERIORMENTE EJEMPLIFICADA.   :huh:

Y dicha DLL está compilada desde código fuente escrito en C# y se usa como parte del set de Controles de una aplicación web (en este caso corre en un servidor basado en IIS + ASP+DLLs).

La herramienta que estoy usando para visualizar las funciones es:  .NET Reflector y por lo que he visto, no hay implementado código de ofuscación ni de protección, por lo que pienso no ha de ser muy difícil dar con la(s) funcion(es) que estoy buscando.

:huh: :huh:
Necesito una orientación amigos, por que repito, la función que estoy buscando ...concatena ... o ... aplica una operación RSA o HASH o aplica una función personalizada a 6 variables (que ejemplifico en el diagrama que adjunté renglones arriba)y arroja UN único resultado: la SIGNATURE con 172 caracteres de longitud.

Toda ayuda es bienvenida.

Gracias  ;-) ;-)