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 - APOKLIPTICO

#891
You got it! la proxima aviso.
#892
Uff!! Que actividad que está ganando este taller! jajaja. Bueno, voy de a uno y en orden:

@Braulio: La criptografía ES matemática, asi que si, vamos a ver todo desde el punto de vista matemático tmb, claro que para eso voy a necesitar bastante ayuda, si braulio tenés ganas de ayudarme, yo agradecido, lo que si, te pido que no lo postees directamente, por ahora vamos de lo más básico hacia lo más complicado. Mi plan es una onda asi:
- Bases de la criptografía asimétrica.
- Algoritmos asimétricos existentes (los más famosos).
- Aplicaciones de los algoritmos asimétricos (aqui vamos a ver tambien conceptos de criptografía simétrica y hashes).
- Criptoanálisis.
- Creación de algoritmo.

@MasterPunk: Nadie nació sabiendo, me imaginé que muchos no iban a saber de criptografía, por eso empecé desde las bases.
@16BITBoy: Eso sería criptografía simétrica, ya que el "10" estaría siendo tu clave, y eso lo utilizarías para cifrar y descifrar a "X". Como son aplicados al plaintext, depende del algoritmo.

@MasterPunk: Fijate que hice un glosario con los términos más usados.

@Todos: Entre hoy y mañana voy a estar haciendo la segunda entrega, como ya veo que están muy entusiasmados, denme un rato porque la tengo que componer, piensen que esta entrega incluye a los algoritmos más famosos de la criptografía asimétrica (RSA, DSA, Diffie-Hellmann y ElGamal). También pienso hacer un apéndice con criptografía de curva elíptica.
#893
Foro Libre / Re: Dilema ético.
8 Octubre 2010, 13:35 PM
Eso es un tema bastante pesado para tratar en un foro, pero bueno, mi opinión es la siguiente:
En este país (Argentina), asi como en muchos países latinoamericanos, en las décadas del 70 y del 80, ocurrieron golpes militares, en el golpe de Argentina (conocido como "el proceso" debido a que este se llamaba "proceso de reorganización nacional"), se secuestraron, torturaron, mutilaron y asesinaron ilegalmente a se estima 30.000.
Es por esto, que eternal idol puso:
Cita de: Eternal Idol en  8 Octubre 2010, 10:25 AM
Dar esa facultad a la policia implica AUTOMATICAMENTE que la usen ARBITRARIAMENTE.
Aparte, si me permitis ponerlo Eternal Idol y esto es sin ánimos de ataque ni ofensa, gran parte de esos desaparecidos, eran parte de la asociación guerrillera de la izquierda peronista llamada "montoneros", asi como de muchas otras asociaciones guerrilleras de izquierda, como el ERP (ejército revolucionario del pueblo).
Es por esto, que Eternal Idol, si no me equivoco, piensa que dar rienda libre a la tortura de sospechosos terroristas, llevaría a una policía represora, sobre todo en Argentina, que realmente si uno se pone a pensarlo, es bastante posible.
Sin embargo, si lo que Ma. Gabriela propone, se centra en lo que se ve en las series estadounidenses de tortura a potenciales terroristas talibanes y todo lo que ronda al 11/9, entonces yo diría que prefiero que una persona sufra, antes de que mueran 3000.
Muchos de estos terroristas, tienen la cabeza lavada con ideales religiosos absurdos como que si se suicidan haciendose explotar en un subte, van a ir al paraiso con no se cuantas vírgenes. Pero al fin y al cabo, es su decisión, sería absurdo suponer que todos los afghanos, kazajos, iraníes, etc son terroristas, eso sería un grave error y una falacia de generalización apresurada.

Espero haber sido claro.
#894
@bomba1990: Me pusiste "sifrado" y despues pusiste "cifrado". Es con "c". Te voy a pedir también que trates de usar comas, puntos y mayúsculas, ya somos grandes como para andar escribiendo como si estuviesemos en primer grado.
Bueno a ver:
1) Vamos a ver el cifrado asimetrico genera dos claves: ¿una que solo sirve para cifrar y la otra que solo sirve para descifrar? ¿o se requieren las dos para descifrar?
Siendo que las "claves" son números, se podría utilizar, y de hecho se utiliza en algoritmos de firma electrónica, la clave privada para cifrar los datos, que luego se descifrarían con la clave pública. Sin embargo, en la mayoría de los algoritmos asimétricos, se utiliza la publica para cifrar y la privada para descifrar.

2) ¿como se logra esto?
Agustín si cifró su mensaje con la clave privada, va a poder descifrarla con su clave pública, ya que él tiene ambas claves. Osea, no es que cuando envía la clave pública deja de tenerla en su poder, envía una copia obviamente.

3) ¿quien le pone una clave de 1024bits?,  ¿el sistema debe autogenerarla?
El tamaño de la clave la elige el usuario, dependiendo de cuan seguro sea necesario el canal, o cuan paranóico sea el usuario, también hay que saber que cuanto mayor sea el tamaño de la clave asimétrica, más cargará el sistema cuando alguien quiera conectarse. Lo cual no sería problema si es para una conexión única, pero si es en un sitio web con https, podría sobrecargar el servidor.

4) ¿cuando empezeños podemos hacer primero uno pequeño solo para analizarlo mejor o hay alguno en internet para verlo?
No se que será "empezeños", pero supongo que quisiste decir "empezemos". Los algoritmos más conocidos (RSA, DSA, ElGamal, Diffie-Hellman, etc.) están en la web, ya sea en pseudocódigo, en algún lenguaje o explicados desde el punto de vista matemático. Ya los vamos a ver uno por uno.

5) ¿alguien sabe algo de historia (que loco lo invento)?
El primer algoritmo de criptografía asimétrica inventado, fue el RSA (de los autores Rivest, Shamir y Adleman), creado en 1977 por Ron Rivest, Adi Shamir y Len Adleman del MIT (Massachusetts Institute of Technologies).

@MasterPunk: Está bien la primera parte de tu explicación, pero si yo quiero mandar un mensaje cifrado a todos los miembros del taller, tendré que cifrar cada mensaje con la clave pública de cada uno de los miembros. Si yo lo cifro con mi clave privada, cualquiera va a poder descifrarlo, ya que mi clave pública, es (valga la redundancia) "pública", yo la tendría expuesta en algun lugar para que las personas me puedan mandar mensajes, como ocurre con PGP (Pretty Good Privacy) que lo veremos más adelante. Otra cosa, me pusiste "Desencriptarlo" acordate que esa palabra no existe, el correcto es "Descifrarlo". Sin embargo, escribis claramente, con signos de puntuación, mayúsculas y sin faltas de ortografía, asi que bien hecho!.

Un abrazo
APOKLIPTICO
#895
Realmente no es algo muy dificil de hacer, te conviene aprender C++, porque realmente es un lenguaje rápido, útil, versátil y no tan dificil de aprender.
#896
Es que justamente, depende del algoritmo, no te preocupes, vamos a verlos todos detenidamente uno por uno.

PD: @Weston, si con "mensaje" te referis al texto a cifrar (de ahora en adelante "Plaintext"), se debe utilizar el número que representa dicho caracter en el código ASCII. Por ejemplo, la "a" es el 97 (alt+97 te va a dar una letra "a"). Luego se aplica el algoritmo a esos números, para obtener el mensaje cifrado (de ahora en adelante "Ciphertext").

PD2: @MasterPunk, acabo de entender lo que me quisiste decir. Las claves que se utilizan para cifrar, suelen no ser claves "legibles" como la que uno usa para su cuenta de mail. Suelen ser altamente aleatorias y creadas específicamente para esto. La razón de esto es lo siguiente: Esto es un poco complicado, si no lo entienden aún, lo van a entender cuando veamos criptoanálisis, entropía, etc.

Si uno tiene una clave de 64 bits (8 bytes), por ejemplo "computar", esta contiene sólo a un espectro del código ascii. Esto es las minúsculas y las mayúsculas. Si alguien que quiere atacar a nuestro cifrado, sabe esto, sus probabilidades de conseguir dicha clave, aumentan increiblemente.
La cantidad de combinaciones que hay en 16 bytes si estamos usando todo el espectro ascii (de "0" hasta "255"), son de 256^8, si por ejemplo estamos usando RC4 que es uno de los algoritmos más rápidos y tenemos una velocidad de cracking de 80.000.000 de claves por segundo, tardaríamos 7312 años en conseguir la clave (asumiendo que la última es la correcta claro).
En cambio, si nosotros supiesemos que la clave que se utiliza para crackear está compuesta por alguna de las 26 minúsculas (a esto se le llama "charset") el tiempo necesario para conseguir la clave, sería de 26^8/80.000.000 = 43 minutos y 30 segundos.

La diferencia es muy importante como pueden ver, ya que si aumenta el charset, la cantidad de posibilidades aumenta exponencialmente.
#897
Cada algoritmo tiene su método de generación de claves, la longitud de las claves, se suelen expresar en "bits", cabe aclarar que 8 bits = 1 byte.
Los métodos de generación de claves, suelen basarse en un generador pseudo-aleatorio, que utiliza como "semilla" una frase (Conocida como passphrase) y una información aleatoria introducida por el usuario (por ejemplo con movimientos del mouse o teclas apretadas aleatoriamente) o sacadas de un "random pool", esto es para los sistemas operativos que lo soportan, un conjunto de información aleatoria sacada de las interacciones del usuario (movimientos del mouse, teclado, etc.) y cosas como el uso de la cpu, temperaturas registradas, etc. Esto tiene como fin maximizar la aleatoriedad de las claves creadas.

No se preocupen si al principio no se entienden muchos conceptos como "entropía" o "generador pseudo-aleatorio" estos se van a ir viendo a medida que avancemos.
Las claves que se utilizan en los algoritmos de cifrado, tanto sean simétricos como asimétricos, varían en su generación y en su tamaño dependiendo del algoritmo utilizado. Por ejemplo, RSA acepta claves de 1024, 2048 y 4096 bits y solía aceptar de 512 hasta que se mostraron inseguras. Por otro lado, RC4 (arcefour) acepta claves desde 8 hasta 2048 bits en teoría, aunque por cuestiones de seguridad, se suelen utilizar claves de al menos 128 bits.
#898
Cita de: 79137913 en  7 Octubre 2010, 20:23 PM
HOLA!!!

Genial, entonces a aprender Ensamblador se ha dicho. ;D

Gracias Drinky94 y un rostro es una Cara.

GRACIAS POR LEER!!!

Te vas a volver mono tratando de hacerlo en Asm, yo lo que te recomiendo, ya que hacer todo el GUI en VB es mucho más facil que hacerlo en c++, es hacer una dll en c++ y luego importar las funciones en tu programa en VB, de esta manera, podés tranquilamente utilizar la capacidad de procesamiento de c++ y al mismo tiempo, aplicar tus conocimientos de VB6.
#899
NOTA: Para ver todos los capítulos sin las preguntas, referirse a este thread: Manual: Criptografía asimétrica desde cero.

Capítulo I.
Bueno, como prometí, hoy comenzamos con el taller de criptografía asimétrica.
Vamos a empezar con las bases y despues iremos ampliando la información. La idea es que yo voy a explicar lo mejor posible todos los conceptos y luego voy a dar links (Algunos ya existentes en el foro) para ampliar la información ya dada.
Estas son interpretaciones con el fin de hacer más legible y accesible la información que puede resultar compleja, vale aclarar que todo lo expuesto, va a ser basado de otras fuentes, que van a ser aclaradas al final.

Quiero poner unas reglas básicas para como vamos a manejarnos en el taller:
- Todas las preguntas sobre lo expuesto en este thread, deben seguir las siguientes indicaciones:
1) Aclarar a qué parte del taller está referida la pregunta.
2) Ser clara y lo más explícita posible.
3) No utilizar "escritura sms", utilizar signos de puntuación, mayúsculas y espacios y tratar de mantener las faltas de ortografía a un mínimo.
4) No preguntar cosas que ya se han preguntado.
5) Las palabras "encriptar" y "desencriptar" son anglicismos que no deben ser utilizadas. Las palabras correctas son "Cifrar" y "Descifrar". cifrar viene del inglés "Encrypt" y descifrar de "Decrypt".

Voy a comenzar un pequeño glosario de términos que a medida que avanzemos se irá llenando, si se hace muy grande, lo pasaré a un post aparte:
- Plaintext: Mensaje antes de ser cifrado.
- Ciphertext: Mensaje después de ser cifrado.
- Cifrar: Aplicar un algoritmo matemático que tiene como fin hacer teóricamente imposible la lectura de un mensaje.
- Descifrar: Aplicar un algoritmo matemático que tiene como fin volver a hacer legible un mensaje cifrado.
- Charset: Conjunto de caracteres que pueden llegar a componer a una clave (Ej: Minúsculas, Mayúsculas, espacios, números, caracteres especiales, todo el espectro ASCII).
- Brute Force: Metodo de crackeo de claves que consiste en probar secuencialmente claves hasta dar con la correcta, suele ser lento, consumidor de recursos y generalmente infeasible.
- Infeasible: Anglicismo que se utiliza para denominar hechos que en teoría son posibles, pero la cantidad de tiempo o recursos necesarios para lograr dichos hechos, excede en tal manera que los hace extremadamente impracticos.
- A.K.A.: "Also Known As" = "También conocido como".
Comenzemos entonces:
Capítulo I. Este capítulo fue escrito mientras se escuchaba: Die Toten Hosen (Opium Fürs Volk).
Qué es la criptografía asimétrica?

Cita de: WikipediaLa criptografía (Del griego, literalmente «escritura oculta») asimétrica es el método criptográfico  que usa un par de claves para el envío de mensajes. Las dos claves pertenecen a la misma persona a la que se ha enviado el mensaje. Una clave es pública y se puede entregar a cualquier persona, la otra clave es privada y el propietario debe guardarla de modo que nadie tenga acceso a ella.

Entonces: El algoritmo de cifrado asimétrico, crea dos claves, una pública con la que solo se debe cifrar los datos, y una privada, que permite descifrar los datos.

Cuál es la diferencia entre un algoritmo asimétrico y uno simétrico?
Un algoritmo simétrico permite que la misma clave se pueda utilizar para cifrar y para descifrar.
La ventaja del algoritmo simétrico sobre el asimétrico, es que los simétricos suelen ser mucho más seguros con claves más pequeñas, esto significa, utilizando un ejemplo, que para obtener la seguridad que tiene un AES 128 bits (Simétrico) se debe utilizar al menos una clave de RSA 1024 bits. Otra de las ventajas de los algoritmos simétricos es que suelen ser decena de veces más rápidos para computar las claves y para cifrar los datos.

Para qué entonces utilizar criptografía asimétrica?
Sin embargo, una de las grandes fallas que tienen los algoritmos simétricos sobre los asimétricos, es el intercambio de claves, esto se explica a continuación con un ejemplo práctico.
Agustin y Bernardo quieren comunicarse por un canal, Eva, sin embargo, puede ver los paquetes que se transportan por dicho canal.

Agustin y Bernardo entonces, deciden utilizar la criptografía para evitar que Eva pueda ver su comunicación.
Comienzan utilizando criptografía simétrica.
Agustín, le envía a Bernardo la clave que van a utilizar para establecer el canal seguro. Pero Eva también puede ver esta clave.
Agustín cifra los datos que quiere enviar y Bernardo los recibe, sin embargo, Eva tiene la clave simétrica y los datos, entonces puede ver la comunicación entre Agustín y Bernardo.

Canal seguro: FAIL!

Entonces, Agustín y Bernardo, deciden utilizar criptografía asimétrica.
Agustín y Bernardo crean cada uno un par de claves Pública y Privada. Vamos a llamarlas E(A), E(B), D(A) y D(B), siendo E(A) la clave pública de Agustín, E(B) la clave pública de Bernardo, D(A) la clave privada de Agustín y D(B) la clave privada de Bernardo.
1) Agustín le envía a Bernardo E(A) y Bernardo le envía a Agustín E(B).
2) Agustín cifra con E(B) los datos que le quiere mandar a Bernardo y Bernardo cifra con E(A) los datos que le quiere mandar a Agustín.
3) Agustín descifra con D(A) los datos que recibió de Bernardo y Bernardo descifra con D(B) los datos que recibió de Agustín.
4) Eva, lo único que puede ver en el canal, son las dos claves públicas y los datos cifrados, entonces, esta no va a poder ver los datos que Agustín y Bernardo comparten.

Canal seguro: OK!!

Para los que entienden mejor con interpretaciones gráficas, aqui les presento un par:




Bases de la criptografía asimétrica.

Cita de: WikipediaLos sistemas de cifrado de clave pública se basan en funciones-trampa de un solo sentido que aprovechan propiedades particulares, por ejemplo de los números primos. Una función de un solo sentido es aquella cuya computación es fácil, mientras que su inversión resulta extremadamente difícil. Por ejemplo, es fácil multiplicar dos números primos juntos para obtener uno compuesto, pero es difícil factorizar  uno compuesto en sus componentes primos. Una función-trampa de un sentido es algo parecido, pero tiene una "trampa". Esto quiere decir que si se conociera alguna pieza de la información, sería fácil computar el inverso. Por ejemplo, si tenemos un número compuesto por dos factores primos y conocemos uno de los factores, es fácil computar el segundo.

Dado un cifrado de clave pública basado en factorización de números primos, la clave pública contiene un número compuesto de dos factores primos grandes, y el algoritmo de cifrado usa ese compuesto para cifrar el mensaje. El algoritmo para descifrar el mensaje requiere el conocimiento de los factores primos, para que el descifrado sea fácil si poseemos la clave privada que contiene uno de los factores, pero extremadamente difícil en caso contrario.

Fuentes:
- http://es.wikipedia.org/wiki/Criptograf%C3%ADa_asim%C3%A9trica
- http://es.wikipedia.org/wiki/Criptograf%C3%ADa_sim%C3%A9trica
- https://zonatic.usatudni.es/es/aprendizaje/aprende-sobre-el-dnie/57-aspectos-tecnicos/196-criptografia-y-esquemas-de-clave-publica.html

Cualquier duda que tengan, posteenla acá, cuando vea que no hay más preguntas, pongo el siguiente tema.

Un abrazo
APOKLIPTICO.

Toda la información expuesta en este taller, está protegida bajo licencia Creative Commons Attribution-NonCommercial-ShareAlike 2.5.
#900
Citar
CitarEternal, realmente no entiendo por que siempre tenés que responder tan agresivamente, no es mejor no buscar el conflicto y tratar de resolver las cosas de la manera más relajada?

Es decir que hacer diatribas en contra de Microsoft en este hilo si es aceptable y yo soy el que responde agresivamente.
En definitiva aca el unico que tiene algo para resolver sos vos, los errores que tiene tu programa, se te indican las herramientas ideales para hacerlo y seguis buscandole la quinta pata al gato POR PREJUICIOS. Usa Google entonces, no preguntes, busca, averigua y proba todo.

Te pido disculpas si esto te pareció un ataque personal, realmente no lo fue.
Citar
CitarNo me voy a poner a discutir si es mejor microsoft o gnu, porque no es el objetivo de este post, lo único que me gustaría saber es si existe un detector de BoF's HoF's y memory leaks GNU.

Usa Google.

Usé google, es por esto que estoy preguntando.

Citar
CitarLo que se me ocurre, es que el Application Verifier es incompatible con la librería winpcap, dudo que esa parte del código tenga errores porque la copié de un sample que venía con el winpcap developer package. Te parece que esto podría ser asi?

¿No es mucho mas simple analizar el error que intentar teorizar y buscar hipotesis?

Dije que lo iba a analizar el error, pero mientras tanto, para ahorrar tiempo, pregunto si no existe una herramienta GNU para analizar.

Citar
CitarNo estoy ignorando las indicaciones de alguien que veo como más experimentado (Eternal Idol), lo único que estoy diciendo, es que puede existir una incompatibilidad entre winpcap y el App Verifier, por eso pido una herramienta GNU, ya que winpcap es GNU.

En lugar de intentar COMPRENDER que estaba pasando desinstalaste el programa. ¿Es claro el accionar, no? En lugar de analizar donde esta la excepcion, cual es la pila, que parametros son pasados, directamente estas ASUMIENDO que el fallo esta en la herramienta de Microsoft. Por mas que ahora lo intentes matizar, lo que hiciste fue eso, desinstalar el programa.

Desinstalé el programa para ver si eso era lo que estaba causando el crash en mi programa, y efectivamente eso es lo que estaba causando el problema, no estoy intentando matizar nada, ni ocultar nada, ni atacar a nadie.

Mira, evidentemente te está poniendo un poco nervioso esto, trataré de buscar la solucion por mi cuenta, porque evidentemente no podés ser objetivo y ver más allá de los problemas que puede haber entre nosotros. Borrá el post si te parece, hasta luego y gracias por la ayuda.