Sunday, November 06, 2011

Sobre anonymous vs zetas y mis 10 puntos para un cambio real

Lo siguiente que escribiré es meramente mi punto de vista el cual podría ser erróneo por lo cual si esto te molesta o crees que es incorrecto agradeceré tu comentario, pretendo que esto sea de caracter público y que ayude a la sociedad en vez de perjudicarla.


Anonymous es un grupo con buena filosofía y algo de dirección, que ganó mucha fama debido a la prensa internacional la cual le dio poder ante la sociedad por el amarillismo, pero anonymous no está midiendo las consecuencias y la magnitud de los problemas debido a que en su mayoría son personas con falta de experiencia en problemáticas sociales complejas, no se puede ir por el mundo amenazando a "los malos" porque habrá organizaciones con más poder dispuestas a hacer todo por erradicar a quiénes "estorban" (con violencia física real).

Ahora, como dice anonymous, "anonymous somos todos" y "todos" es algo interesante aunque un gran subconjunto podría ser gente que sólo quiere atención, poder o fama por lo que podría tergiversar las intenciones reales del movimiento y podría ocasionar un mal manejo de la filosofía ocasionando situaciones como las recientemente ocurridas con los zetas, este modelo anárquico que presenta anonymous es un poco difícil.

Muchos podrán decir "al menos están haciendo algo y tú ¿qué?" , la verdad estarán en toda la razón de generar esa cuestión, pero sigo tratando de pensar en algo que sea realmente pacífico ya que la interacción humana tiene que ocurrir entre todos aunque hayan distintos modelos económicos, lo que intento es seguir y pensar a través de movimientos tipo "México toma la calle" o el movimiento de "Los indignados".

Pero aquí presento al final algunas problemáticas y su posible solución, sólo quiero terminar de decir lo de anonymous.

Las organizaciones que utilizan la violencia para manifestarse son delicadas para poder interactuar o negociar (como cárteles), y con cártel violento contra un grupo como lo es anonymous será fácil que haya violencia ya que encontrar integrantes (o supuestos integrantes) es trivial. (A la fecha he conocido gente que asegura ser integrante, lo cual obviamente es algo iluso y tonto y va en contra de los estatutos de identidad establecidos por ellos mismos, pero ellos corren mayor peligro)

Creo que el movimiento es interesante, pero no haría "universal" la filosofía yo la acotaría a ciertas problemáticas.

Lo que queremos en México es menos muertos, y ya se observó que "la guerra contra el narco" la cual es otro movimiento violento con muchísimos intereses aparte de erradicar al narco no sirvió de nada (en mi opinión el gobierno sólo quiere tener el control de los cárteles en vez de erradicarlos ya que la droga está metida hasta el cuello en la economía mexicana).


El cambio está en nosotros, aquí dejo unas posibles preguntas con mi tal vez errática respuesta

1. ¿cómo debilitas al narco?
Dejando de consumir droga o en su caso cultivando la tuya si eres dependiente

2. ¿Cómo debilitas la dictadura capitalista?
Dejando de ser tan consumista, esto no significa ser un ermitaño y no jugar PS3 o tener una tele gigante aclaro, a todos nos gustan los gadgets y la diversión, me refiero a la dependencia de productos o marcas de consumo/uso diario por prejuicio en otras.

El ultracapitalismo crea dependencia a través de modas, el punto es darse cuenta de esto.


3. México está atrás económicamente y no hay oportunidades

Da preferencia a productos mexicanos, al comprar productos en el súper alguien me dijo una vez: "Observa el código de barras de las cosas que compres, si éstas empiezan con 7 50 *** serán de procedencia mexicana", compra en el mercado, al indígena, muchos dirán que a veces los productos mexicanos son más caros, pero esto es obvio, tal vez no existe la tecnología para producir a grandes escalas en México los productos como en otros paises por lo que su desarrollo requiere mano de obra y esto podría ser mas costoso, pero piensen 2 veces antes de decidir comprar algo que podría ser 10% mas caro, podrían estar apoyando a generar más empleos.

No seas malinchista, al menos prueba los productos mexicanos, tal vez te lleves una sorpresa.



3. ¿Cómo erradicas la pobreza?
Dando oportunidad a todos de trabajar, estudiar, no ser racista/clasista y teniendo tacto, fomentando la educación ya sea en manifestaciones, plebiscitos y "pelear" porque nuestros impuestos se orienten en gran parte a becas, escuelas públicas y generación de empresas en México que den trabajo a más personas, esto es (tal vez) aceptando ciertas políticas de privatización y no verlas con miedo ni con el prejuicio colectivo usual, con el fin de generar competencia y bajar los precios (como lo es con el petróleo), la privatización de algo podría generar competencia, baja de precios, entrada de capital extranjero, empleos y más impuestos de estas empresas, no todo es negativo respecto a este tema.

Apoya tu cultura, cómprale al indígena, que no te de pena tu país, si vas a otro país no hables sólo pestes de el, hay muchas cosas padres también, no tienes que mentirle a nadie, México tiene una imagen nefasta en el mundo y tambien exagerada, ayuda a tu país así, tal vez si todos hacemos esto, podrían impactar al turismo, a los indígenas, a los pequeños empresarios, si eres de los que aman EEUU, chécale bien y analiza porque tienes esa preferencia, seguro llegarás a puras conclusiones superficiales.

Si eres millonario, dona en especie, se que es TU dinero pero, creo que si no te hace falta algo, podrías hacer un favor a la humanidad, recuerda que lo que hiciste fue a través de TODOS, todos te compraron, consumieron y te trabajaron.


4. Odio este país tercermundista

No te vayas al extranjero si tienes skills en algo o educación trabaja en una empresa mexicana o produce investigación aquí si puedes decidirlo, aquí hay proyectos científicos y empresariales, si ya eres movido y tienes experiencia esto lo sabrás y podrás crecer tanto como quieras... sólo tienes que buscar, tus skills podrían ser muy valiosos en México, por ejemplo AEXA u otros proyectos académicos

5. Hay mucha corrupción

No des mordida y acata las consecuencias si te equivocas, o échate la fila y la burocracia, esto tendrá que cambiar si los puntos anteriores cambian, la burocracia es algo cultural.


6. Los impuestos se los roban, los políticos son rateros

Manifiéstate, usa las instituciones que existen como IFAI y analiza las discrepancias que existan y coteja cantidades antes y después, pide información, facturas, presupuestos, se podrían hacer asociaciones civiles dedicadas a analizar toda la información, no sólo digas "son rateros", demuéstralo y divulgalo a través de redes sociales, esto obligará a enderezar ciertas cosas y obligar a hacer un mejor trabajo por parte de las autoridades

7. México es inseguro

Desafortunadamente aquí es un poco complejo y más que una solución propongo una manera de manejarlo, aunque en primera antes diría algo que podría no ser absurdo "no hagas cosas ilegales", de lo siguiente que diré muchos pensarán que es absurdo ya que va en contra de la libertad pero yo lo trato de aplicar en lo que todo se tranquiliza y es un poco escueto.

a) No ser "tan" opulente
b) No divulgar tanta información personal en redes sociales (GPS,4sq, facebook, twitter)
c) Si eres adinerado o persona pública mide las consecuencias de tus palabras o acciones, habrá gente que te ame y te odie (esto es lo que podría ser absurdo pero creo que es algo que hay que aguantar por un rato en lo que se tranquiliza todo)
d) Si no entiendes algo importante no opines sobre ello, podrías generar polémica social por un punto de vista absurdo
e) No apoyes cosas negativas (racistas, clasistas, ultras, u otras cosas absurdas) aunque te traigan beneficios personales, a la larga te causarán conflictos con tu filosofía humana (a menos de que seas sociópata)
f) Si eres una persona violenta, trátate en términos patológicos, la violencia en cualquier nivel te hará encontrar problemas fácilmente relacionados con tu seguridad
g) Cambia tu manera de ver a la gente, no esperes primero las cosas malas, create un prejuicio neutral, trata bien a la gente, en un restaurante, en donde sea, quien te atiende también es humano y podría tener más problemas que tú, una sonrisa posiblemente podría hacerle el día, respeta y entiende los errores de los demás
h) Hazle la vida más fácil a los demás si está en tus posibilidades, a que me refiero... por ejemplo, no hagas mala cara, acepta un volante si te lo reparten, es su chamba..., la mayoría de la gente trabaja por necesidad... (pocos por gusto), así que haz más fácil su chamba, así colaboraras en que en un futuro te atiendan mejor y te respeten también

8. Odio México

¿por qué? no todos están mal, hay gente que se esfuerza y es honesta, no seas malinchista, hay muchas cosas buenas también


9. Cultura

La cultura es TODO , es decir, el saber que un tenedor sirve para comer es cultura, no sólo el leer un libro o conocer de arte, aclaro esto por lo siguiente:

Me atrevería a decir que el 80% de los mexicanos que tienen televisión (es sólo un número, no tengo fuentes) adquieren cultura más compleja que la de un tenedor a través de ella.

Ya no veas tanto la tele, por ejemplo, los programas de la mañana en televisión nacional son nefastos en términos de machismo y conformismo, habrá cosas interesantes, pero en su mayoría la televisión y radio está controlada por el gobierno (ya lo vivimos con Carmen Aristegui por ejemplo) sólo verás lo que otros quieren que veas y te educarán de la manera que le convenga a un tercero, esto no es una suposición, es una realidad documentada y que se ha vivido.

No tomes sólo en cuenta el punto de vista de un noticiero, documéntate más , genera tus propias ideas, usa internet, periódicos, libros, blogs, etcétera, los blogs son un medio que hasta ahora no se han censurado (al menos no tanto) y contienen información más personal y sin sesgos mediáticos

Duda de las cosas, documéntate, no seas borrego.


10. México es un pais con mucha contaminación y todos son unos cerdos

Haciendo lo siguiente podrás dar el ejemplo a los demáś, he visto que se ha creado una cultura de no tirar basura a través de "modas" lo cual bueno... creo que de eso a nada, prefiero eso, así que ahi les va lo que yo intento

a) Si tienes posibilidad usa una bicicleta, te hará bien físicamente también y es divertido

b) No uses el carro para todo, si puedes caminar hazlo, usa transporte público también, no te van a salir piojos y cierta interacción con los demás no te hará daño
y tal vez te haga salir de tu burbuja y adquirir cierta conciencia social.

c) Reutiliza, si compras algo fíjate si es reciclado o reutilizable

d) Separa , no sólo en orgánico e inórganico, (vidrio, plásticos, cartón, pet)
incluso hay veces que los plásticos tienen un número dentro del logo de reciclado, éste indica el tipo de plástico que es (del 1 al 7, PET, PVC, Polietilenos, etcétera, podrías separar por tipos de plástico también con esto)

e) Trata de no usar productos que usen baterías desechables y trata de pedir en la calle cuando comas, productos sin unicel, lleva tus platitos dedicados a eso y evita los plásticos desechables, usa mejor papel

f) No tires basura en la calle NUNCA, guárdatela

g) Si fumas, no tires las colillas/filtros , guárdatelos nimodo y después las tiras

h) Levanta las cacas de tu mascota

i) Exige que se respete la ecología a quién no lo haga, posiblemente recibas un insulto o mala cara, pero es algo que le afectará moralmente aunque no lo exprese esa persona directamente en ese momento y posiblemente en un futuro lo piense dos veces antes de hacerlo

Creo que esto es todo lo que tengo que decir.

y recuerda que la educación que tú tienes es lo que el sistema te ha inculcado, no es necesariamente lo correcto sólo por estar escrita en un libro.


"Education is a system of imposed ignorance"

Noam Chomsky



Eduardo Ruiz Duarte @toorandom
toorandom@gmail.com

Monday, June 13, 2011

How to break RSA explicitly with OpenSSL keys

Everybody talks about how vulnerable is RSA and the importance of prime numbers involved in the creation of keys, people knows that the security is based on the complexity of factorization, some days before I posted how to break a key and people asked me to make a post of it. 

We are going to break a RSA key of 256 bits, this size is not too big but is not insignificant in less than 5 minutes, this is another reason to do research in other schemes like discrete logarithm over other algebraic platforms, I have been doing speeches about jacobians of algebraic curves and other abelian varieties. I will introduce RSA for those who don't know how it works and then we are going to break it :) 

Key generation: 
 - Two random primes are generated (p,q) 
 - Compute n=pq this number will be the modulus 
 - Compute phi(n)=(p-1)(q-1) (phi(n) is the function that counts the relative primes to n, and is (p-1)(q-1) because p and q are primes) 
 - Choose e such that 1 less than e less than phi(n) and gcd(phi(n),e) = 1 (OpenSSL generally assigns something near to 2^16 like 65537) 
 - Compute d = e^-1 mod phi(n) \

(d,p,q) is the private key 
(e,n) is the public key 

 Encryption: 
- A is going to receive M so A sends to B (e,n) 
- B computes c=M^e mod n and sends to A 

Decryption: 
 - A computes M=c^d mod n and this is the same as M=(M^e)^d mod n which is the same as M (it's easy to prove that the last equation is M) 

The security is that, if someone gets the public key (e,n) we have that d = e^-1 mod phi(n). Further, it is the same as d = e^-1 mod (p-1)(q-1). An attacker needs to factorize n=pq to get e^-1 mod (p-1)(q-1) because this person must know (p-1)(q-1) to compute the inverse of e.   

How to break RSA given a public key generated with OpenSSL 

First we need a test environment to break.   
We generate a random 256 bit RSA private key (this is p,q) and we save it to privada.pem 

openssl genrsa -out privada.pem 256 

We generate the public key with the previous private.pem (this is e,n, we will break this by factoring n) and we save it to pub.pem 

openssl rsa -in privada.pem -pubout -out pub.pem 

We extract the modulus n and the exponent n from the public key 

openssl rsa -in pub.pem -pubin -text -modulus 

This will give us a lot of info, and in the info you will find 

Exponent: 65537 (0x10001) Modulus=9ABAAD5BBE954A26BDBB15568B7AEB3651D0605EA5687329F849DB1F9871865F  

Exponent is "e" and Modulus is "n" 
We convert to decimal the modulus 

echo "ibase=16; 9ABAAD5BBE954A26BDBB15568B7AEB3651D0605EA5687329F849DB1F9871865F"|bc 69986008711415694391421268580269058232048146719704518153244714221529713444447 

Then we factorize with msieve that is available here, this msieve works using the number field sieve, this algorithm is the fastest to factorize (turing algorithm) you will have to compile it and it requieres GMP and other standard stuff. You can also clone it from git, explore the "march" compiler parameter from Makefile if you would like additional optimization for your processor: 

git clone https://github.com/radii/msieve
cd msieve
make; make install

If msieve compiled correctly and installed correctly, to factorize that modulus n, you just need to run it with msieve as follows:  

msieve -v 69986008711415694391421268580269058232048146719704518153244714221529713444447 

It will take 2 minutes in a home computer (this is because we are working with 256 bits, but in my university theres a cluster called Kanbalam, it can break 768 bits in weeks) When it finishes it will show you the factors 
prp39 factor: 258903250452187592132630852021175987089 
prp39 factor: 270317226953240634960995990331891792623 

Now, the last step is to build the private key with the (e,p,q) , and I made a cgi to my site that generates a PEM private, you just need to put the p,q and e in the GET (URL) and it will show you the private key (note that previously we showed that e=65537) 

Just use it like this:

http://ff2.nl/cgi-bin/genpriv.cgi?p=258903250452187592132630852021175987089&q=270317226953240634960995990331891792623&e=65537 

The output of the website will be the following: 

Llave privada de 258903250452187592132630852021175987089,270317226953240634960995990331891792623 y 65537 por Eduardo Duarte  toorandom@gmail.com 
 -----BEGIN RSA PRIVATE KEY-----
MIGqAgEAAiEAmrqtW76VSia9uxVWi3rrNlHQYF6laHMp+EnbH5hxhl8CAwEAAQIh
AIb+e6Vhn6p0JnCE618BvRfp5+WyQWSxb7Fz8aTB5FTBAhEAy100RZ5hZCzjbv48
M2I67wIRAMLG88hDEnjIwaItDgCYK5ECEE4kDBfMGaQCU4msirk7v2UCEFDOY1MA
6Iftmc+ja3y5pNECEF2g5ukd6W4XRpU1d9AwY/4= 
-----END RSA PRIVATE KEY----- 

If you compare the initial key (privada.pem) with this new key that I will save in "brokenkey.pem" you will see that they are the same and we did not use any information of the private key generated at the begining to get this brokenkey.pem 

md5sum privada.pem llaverota.pem 
9cd4b5a39be5717978b9035ddc5fc887 privada.pem 
9cd4b5a39be5717978b9035ddc5fc887 brokenkey.pem 

Comments: Eduardo Duarte toorandom at gmail d0t com Twitter: @toorandom

Friday, June 10, 2011

Cómo romper RSA explícitamente con llaves OpenSSL

Todo el mundo habla de lo vulnerable que es RSA y de la importancia de los números primos involucrados en las llaves. Muchos saben que la seguridad radica en la dificultad de factorizar enteros y hace poco en twitter a muchos les interesó el cómo se hace. Ahora lo dejo aquí en mi blog para que lo hagan ustedes, vamos a romper una llave RSA de 256 bits la cual no es tan grande pero tampoco es tristemente pequeña en menos de 5 minutos. 

Esto es razón más para investigar otro tipo de esquemas de logaritmo discreto como los que ya he mencionado aquí y de los cuales me la paso dando charlas sobre Jacobianas con curvas algebraicas u otras variedades abelianas. 
Dejo antes una reseña de cómo funciona RSA y después a romper RSA :) 

Generación de llaves: 
 - Se generan dos números primos grandes (p,q) aleatorios 
 - Se computa n=pq el cual servirá como módulo 
 - Se computa phi(n)=(p-1)(q-1) (phi función de conteo de primos relativos con n, y es (p-1)(q-1) por ser primos p y q) 
 - Escoges un e tal que 1 menor que e menor que phi(n) y mcd(phi(n),e) = 1 (OpenSSL generalmente asigna algo cercano a 2^16 como 65537) 
 - Computas d = e^-1 mod phi(n) (d,p,q) es la llave privada (e,n) es la llave publica 

  Cifrado: 
 - a A le van a mandar M entonces A le manda a B (e,n) 
 - B computa c=M^e mod n y se lo manda a A 

  Descifrado: 
 - A computa m=c^d mod n que es lo mismo que m=(m^e)^d mod n que es m (es fácil demostrar que eso es m) 

La seguridad radica en que si alguien obtiene la llave pública (e,n) como d = e^-1 mod phi(n) , o sea d = e^-1 mod (p-1)(q-1) tendría que factorizar n=pq para obtener e^-1 mod (p-1)(q-1) 

Cómo romper RSA dada una llave pública SSL 
 
Primero generamos un ambiente de pruebas para romper la llave. Generamos llave privada (o sea p,q) en privada.pem 

openssl genrsa -out privada.pem 256 

Generamos llave pública con la privada (o sea e,n) en pub.pem 

openssl rsa -in privada.pem -pubout -out pub.pem 

Extraemos módulo n y exponente e, o sea n , y e de la llave publica que romperemos

openssl rsa -in pub.pem -pubin -text -modulus 

Lo cual nos dará mucha info, y en esa info vendrá lo siguiente: 

Exponent: 65537 (0x10001) Modulus=9ABAAD5BBE954A26BDBB15568B7AEB3651D0605EA5687329F849DB1F9871865F 

Exponent es "e" y Modulus es "n" Convertimos a decimal esa cosa: 

echo "ibase=16; 9ABAAD5BBE954A26BDBB15568B7AEB3651D0605EA5687329F849DB1F9871865F"|bc 69986008711415694391421268580269058232048146719704518153244714221529713444447 

Lo factorizamos con msieve que está disponible aquí el cual su funcionamiento, es con la criba numérica (GNFS) el cual es el algoritmo más rápido hasta ahora para factorizar, éste hay que compilarlo, solo requiere -lgmp (gnu multiprecision) y otras cosas estándar. Puedes tambien clonarlo de git, pero antes si quieres explora el parametro "march" del Makefile para optimizacion adicional a tu procesador.

git clone https://github.com/radii/msieve
cd msieve
make; make install
 
Si msieve compiló correctamente y se instaló, para factorizar ese número basta correr después de haber compilado , de la siguiente manera 

msieve -v 69986008711415694391421268580269058232048146719704518153244714221529713444447 

Tardará de 2 minutos en una computadora normal (esto es porque es de 256 bits, pero seguro en Kanbalam de la UNAM se puede romper 768 bits en cuestión de días, ya que es paralelizable y soporta resumen. Ya que termina te mostrará los factores. 
prp39 factor: 258903250452187592132630852021175987089 
prp39 factor: 270317226953240634960995990331891792623 

Construimos la llave privada, para esto, hice un programa hice un cgi en mi sitio sólo manda los p,q,e por GET, aquí e=65537 los factores p q que sacamos en otro paso atrás 

http://ff2.nl/cgi-bin/genpriv.cgi?p=258903250452187592132630852021175987089&q=270317226953240634960995990331891792623&e=65537 

y la página te sacará lo siguiente: 

Llave privada de 258903250452187592132630852021175987089,270317226953240634960995990331891792623 y 65537 por Eduardo Ruiz Duarte (beck) toorandom@gmail.com 

-----BEGIN RSA PRIVATE KEY-----
MIGqAgEAAiEAmrqtW76VSia9uxVWi3rrNlHQYF6laHMp+EnbH5hxhl8CAwEAAQIh
AIb+e6Vhn6p0JnCE618BvRfp5+WyQWSxb7Fz8aTB5FTBAhEAy100RZ5hZCzjbv48
M2I67wIRAMLG88hDEnjIwaItDgCYK5ECEE4kDBfMGaQCU4msirk7v2UCEFDOY1MA
6Iftmc+ja3y5pNECEF2g5ukd6W4XRpU1d9AwY/4= 
-----END RSA PRIVATE KEY----- 

Y si comparas la llave inicial (privada.pem) con esta que sacamos la cual guardé en "llaverota.pem" verás que son la misma y no utilizamos ninguna información de la llave privada generada originalmente para llegar a llaverota.pem 

md5sum privada.pem llaverota.pem 
9cd4b5a39be5717978b9035ddc5fc887 privada.pem 
9cd4b5a39be5717978b9035ddc5fc887 llaverota.pem 

Comentarios: Eduardo Duarte toorandom at gmail d0t com Twitter: @toorandom