elparaiso.mat.uned.es

¡Pulsa Aquí!

LO DIJO...

J. Ortega y Gasset  
 
Siempre que enseñes, enseña a la vez a dudar de lo que enseñas.
 
El Paraíso de las Matemáticas - Criptotaller ~ Generación de claves seguras con Sha+uuencode
.: Criptotaller :.
 
Generación de claves seguras con Sha+uuencode
    Propuesta de generación de claves fuertes a partir de una nombre de usuario y una clave maestra.

    Estamos en un momento en el que el acceso a múltiples servicios de Internet necesita de una gran cantidad de claves. Una política posible para administrarlas es usar la misma clave para todos ellos, lo que tiene la ventaja de que es fácil de recordar y la desventaja de que si hay un fallo en mi cuenta de 'foo' y mi clave se revela entonces mis cuentas en 'bar' y 'baz' podrían verse comprometidas "de rebote".

    Por otro lado hay un gran número de passwords que no es necesario recordar porque el navegador lo hace por nosotros o quedan almacenadas por ejemplo en el programa de acceso a Internet y no hay que teclearlas cada vez. Esto hace deseable un método de generar claves con las siguientes características:

  • Claves de longitud variable incluyendo caracteres alfanuméricos y/o otros signos.
  • Que sólo sea necesario recordar una clave maestra.
  • El conocimiento de una de las claves no debería poner en peligro las demás.
    La solución que propongo en esta página cumple las tres condiciones anteriores. Produce claves aparentemente aleatorias, por tanto difíciles de recordar -sin embargo véase lo dicho arriba- pero que a diferencia de las claves realmente aleatorias pueden ser posteriormente reproducidas recordando sólo una clave maestra y el nombre de usuario u otra cadena a la que estén asociados.

    Veamos un ejemplo de uso. Queremos una clave de 10 caracteres (la longitud por defecto) para nuestra cuenta en godofredo@foo.es. La clave no se ve al escribirse.

[prompt]$ python genera_claves.py
Nombre de usuario: godofredo@foo.es
Clave maestra :
Confirme clave:
Clave: YNPp9LVj/d

    Ahora probemos a generar una clave más segura (16 caracteres) para nuestra conexión a Internet. Para que esto tenga sentido su clave maestra debería ser al menos tan difícil de adivinar por fuerza bruta como esta, vea nuestras otras páginas sobre passwords seguros.

[prompt]$ python genera_claves.py 16
Nombre de usuario: Conexión a Internet
Clave maestra :
Confirme clave:
Clave: xm8CLseixmy46hTH

    Hay que tener mucha atención a la cadena que ponemos como nombre de usuario -no hay problema en apuntarlas en un cuadernillo- porque si la cambiamos sólo en un caracter (igual que pasa con la clave maestra claro) la clave resultante es totalmente diferente. Vea por ejemplo lo que ocurre si olvidamos la tilde en el ejemplo anterior.

[prompt]$ python genera_claves.py 16
Nombre de usuario: Conexion a Internet
Clave maestra :
Confirme clave:
Clave: PIfTHjh59M0ort3u

    El script que realiza todo esto es una muestra de la potencia y sencillez de uso de Python. Funciona sin cambios en Linux, Windows y otras plataformas y la función principal ocupa apenas 6 líneas.

    Vamos a ver esa función con algún detalle:

import base64
import getpass
import sha
import sys
def genera_clave(username, clavemaestra, longitud):
    """Produce a partir de un nombre de usuario y una clave
    maestra, una clave de longitud hasta 27 caracteres """
        m = sha.new()
        m.update(username)
        m.update(clavemaestra)
        cadena = m.digest()
        cadena = base64.encodestring(cadena)
        return cadena[:longitud]

     En primer lugar se genera un nuevo hash con sha.new(). Se le añade la información del nombre de usuario y la clave maestra con m.update(username) y m.update(clavemaestra). Se obtiene a continuación el resumen con m.digest() que son 160 bits, dichos bits se pasan a traves de base64.encodestring() (el equivalente de uuencode) para obtener una representación imprimible de parte de esos bits.

    Se tienen en definitiva una serie de caracteres (10 por defecto) escogidos de entre un conjunto de 64 (6 bits). Luego por ejemplo con 10 caracteres se obtienen 6410 posibles claves. Este espacio de claves tarda en ser agotado casi 37.000 años si se prueban un millón de claves por segundo lo que, desde luego, no está al alcance de cualquiera.

Referencias:

  • Texto completo del script.
  • Página madre de Python.
  • Why Python? (en inglés), Eric Raymond compara Python con Perl y cuenta por qué le impresionó el lenguaje.

Area On-Line
  Todo tipo de material, para disfrutar de él completamente On-Line, sin necesidad de descargar archivos ni tener que andar descomprimiendo estos. No te olvides de pasar por el Diccionario, y las secciones Origami y Geointeractiva. Son de lo más interesante.

Criptotaller

Criptografía (clásica y moderna), criptoanálisis (primos, primos de Mersenne, etc.) y otras técnicas.

Material para descargar

Código Fuente C

Método Hill
Método Jefferson
Exponenciación Modular
Cálculo números primos
Test de Lucas-Lehmer
Factores num. Mersenne
Verificación FIPS 140.2
Teorema chino del resto
+ Códigos Fuente C

Código Fuente Python

Generación de claves

Artículos

La máquina Enigma
Criptografía y seguridad
    M. J. Lucena
Seguridad Informática
   y Criptografía PDF PPT
    J. Ramió
Criptografía clásica PDF
    J. Ramió

Programas
Cripto1 ZIP 2391 KB
    J. L. Rubio

Enlaces

Página personal de Jaime Suárez Martínez, colaborador de esta sección.

Munitions, colección de programas para Linux.

Kriptopolis, toda una referencia en castellano.

Ciphersaber

Criptonomicón: la página de Gonzalo Alvarez Marañón.

Página de Chris Caldwell, una página bien elaborada sobre números primos.

Colección de links de Peter Gutmann.

www.gnupg.org es la página original de GPG, un programa libre alternativo a PGP.

Domingo, 21 / 07 / 2019
   BUSCADOR
 

   TU CORREO
Usuario
Contraseña

   MATRACAS
Lista de correo gratuita
.: Chismes de Adán y Eva :.
Adios a Elisenda Fo...
WolframAlpha: El mo...
WIRIS para Mac...
Third CEU Summersch...
¡Más y más actualiz...
Cerca de 500 MB de ...
Ha llegado el momen...
WIRIS, matemáticas ...
El Universo Matemát...
Segundas Jornadas d...
Los Elementos de Eu...
VI Semana de la Cie...
Tras varios meses d...
¡Chiflados por los ...
Otro verano más, to...

 

Todos los derechos reservados. El Paraíso de las Matemáticas 2015Información Legal Política de PrivacidadAyudaEmail