2010/6/10 Roberto Bozzacchi <rob...@metasigno.com>:
> _______________________________________________
> pyar mailing list py...@python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
_______________________________________________
pyar mailing list py...@python.org.ar
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
md5 no encripta, es un hash [1], Lo que estaba pidiendo el mensaje original es
un procedimiento para encriptar con clave publica/privada.
Para eso, lo primero que da pypi es esto:
http://sourceforge.net/projects/cryptopy/
[1] http://en.wikipedia.org/wiki/Cryptographic_hash_function
Para eso, lo primero que da pypi es esto:
http://sourceforge.net/projects/cryptopy/
Base64 no encripta, por lo menos no mucho :-)
O sea, no es para eso, originalmente es para poder meter caracteres no ASCII
en emails!
> Pero supongo que cualquiera que llegue a la cadena puede probar usar la
> misma librería y decodificarla....
> Por eso busco algo que sea utilizando una clave pública...
>
> La idea general sería:
>
> Tengo dos destinatarios: A y B
> A le pasa su clave pública a B y viceversa
>
> A con B.Key encripta un mensaje y se lo envía a B
> B con el programa lo puede desencriptar
> B le responde a A usando A.Key
>
> Se entiende la lógica del problema?
Sí, criptografía de clave pública y privada, es standard.
Sí, criptografía de clave pública y privada, es standard.
criptografía, a menos que la tengas muuuuuuy clara, no es para reinventar
nunca :-)
criptografía, a menos que la tengas muuuuuuy clara, no es para reinventar
nunca :-)
+1, necesitás algo como DSA o RSA, que son algoritmos PKI [0] (estos
dos los usa SSH por ejemplo). La documentación el módulo crypto de la
stdlib no los trae, pero dice en la misma página:
"Hardcore cypherpunks will probably find the cryptographic modules
written by A.M. Kuchling of further interest; the package contains
modules for various encryption algorithms, most notably AES. These
modules are not distributed with Python but available separately. See
the URL http://www.amk.ca/python/code/crypto.html for more
information."
Entro en ese link y dice:
"I no longer maintain this package; the new maintainer is Dwayne C.
Litzenberger. Go to www.pycrypto.org to learn about current
development. Bugs and patches can be submitted using the pycrypto
project on Launchpad."
Al final, http://www.pycrypto.org me lleva a
http://www.dlitz.net/software/pycrypto/ . Ahí tenés que entrar, y acá
está la doc [3], que incluye varios algoritmos PKI (RSA, DSA y
ElGamal, por ej.,), bajo el apartado "Crypto.PublicKey". Hay lista de
correo y acá hay algunos ejemplos [4].
[0] http://en.wikipedia.org/wiki/Public_key_infrastructure
[1] http://www.dlitz.net/software/pycrypto/
[2] https://launchpad.net/pycrypto
[3] http://www.dlitz.net/software/pycrypto/apidoc/
[4] http://www.dlitz.net/software/pycrypto/doc/
Contá después como fue. :-)
Saludos
--
Marcelo F. Fernández
Buenos Aires, Argentina
Licenciado en Sistemas - CCNA
E-Mail: marcelo.fid...@gmail.com
Blog: http://blog.marcelofernandez.info
Twitter: http://twitter.com/fidelfernandez
Eso mismo. *Nunca*.
Es terrible los inventos horribles con los que uno a veces se cruza...
hay un montón de cosas ya hechas listas para usar, y mucho más
seguras.
--
Alejandro Santos
http://www.alejolp.com.ar
Por lo que nos mostrás y si te interesa el tema como para leer
en inglés te sugeriría adquirir un poco de conocimiento básico
sobre el tema (muy apasionante por cierto).
Por ejemplo, leyendo el artículo de Wikipedia que te envió Roberto.
Un lindo recurso es este libro libremente disponible:
http://www.cacr.math.uwaterloo.ca/hac/
Suerte,
--
Ramiro Morales | http://rmorales.net
¿Posiblemente esto?
http://code.google.com/p/python-gnupg/
Saludos.
En fin..... hay profesores que les gusta que uno siga reinventando la rueda....
--
Ricardo A. Armas
Alguien que estudió criptografía. (Un matemático, por ejemplo, como Turing
;-). No sé con qué profundidad se vé cripto en tu carrera, pero si se ve por
encima (o no tan a fondo) no estás capacitado para hacer algo como la gente en
el área.
O sea, yo te puedo leer la implementación de AES y la entiendo, leo como se
hace un intercambio DH y lo entiendo. Pero no me siento capacitado para
escribir una implementación ni cerca!
Es *muy* fácil equivocarse y es muy posible que no se note a menos que alguien
que sabe en serio lo audite, y a veces ni así.
Ejemplo:
http://digitaloffense.net/tools/debian-openssl/
Já! eso porque no te pusieron nota dándote la implementación de tarea,
sino bien que te sentís capacitado :-)
--
d.
Me parece que si es con fiones pedagogicos durante el cursado
de una materia no esta mal que. logicamente los docentes no
le van a pedir una implementación de calidad para
que supere una prueba del NIST.
De todas formas, parece que los conceptos basicos no fueron
enseñados o no fueron incorporados porque el querere usar
una hash function para cifrar es un error elemental que lamentablemente
se ve muy seguido.
De ahi que varios le enviáramos al OT enlaces a material
con info básica.
--
Ramiro Morales | http://rmorales.net
Si me das una descripción del algo, te hago un AES. No te voy a hacer un BUEN
AES, pero para un TP zafa. Ahora, si lo que uno quiere es encriptar cosas...
preferiría uno bueno ;-)
Reinventar la rueda está bueno para entender cómo funciona.
Un algoritmo de cifrado sencillo de implementar es el RC4, y en Python
serán menos de 20 lineas. Hoy en día está medio roto (es el que se usa
en las redes WiFi con claves WEP) pero para proteger datos no muy
valiosos alcanza.
http://en.wikipedia.org/wiki/RC4
--
Alejandro Santos
http://www.alejolp.com.ar
RSA en perl:
print pack"C*",split/\D+/,`echo "16iII*o\U@{$/=$z;[(pop,pop,unpack"H*",<>
)]}\EsMsKsN0[lN*1lK[d2%Sa2/d0<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<J]dsJxp"|dc`
http://www.cypherspace.org/rsa/
De todas formas, parece que los conceptos basicos no fueron
enseñados o no fueron incorporados porque el querere usar
una hash function para cifrar es un error elemental que lamentablemente
se ve muy seguido.
De ahi que varios le enviáramos al OT enlaces a material
con info básica.
¿No podés usar SSL directamente?
http://docs.python.org/dev/library/ssl.html
Básicamente te abre un socket de comunicación a donde vos le digas con
las llaves que vos le digas y se encarga de todo lo complicado por
vos.
Además usás todas herramientas estándares para eso (minimizando
posibles errores). Hasta donde yo veo lo único que tendrías que hacer
es:
* Instalar tu aplicación
* Generar los certificados usando (por ejemplo) openssl - acá estarías
generando las claves pública/privada
* Asegurarte que los clientes acepten ese certificado
* Cobrar por tu trabajo :P
Saludos,
Toote
--
Web: http://www.enespanol.com.ar
--
http://www.linkedin.com/in/matigro
¿No podés usar SSL directamente?
Ah perdón, ahora que reviso el hilo lo que vos contabas era que habías analizado
era usar base64, MD5 lo había propuesto alguien mas.
respecto a la pregunat en sí, ya te pasaron el dato de pycrypto. Existe un
wrapper ezpycrypto con una API mas simple.
También hay una biblioteca mas reciente de la gente de Google:
Keyczar.
Suerte,
--
Ramiro Morales | http://rmorales.net
respecto a la pregunat en sí, ya te pasaron el dato de pycrypto. Existe un
wrapper ezpycrypto con una API mas simple.
También hay una biblioteca mas reciente de la gente de Google:
Keyczar.
Suerte,