jueves, 30 de mayo de 2013

Explicación basica del funcionamiento de PGP Historia de la informática

Este texto es bastante antiguo, pero explica muy clarito que es y como funciona el PGP, esperemos que os guste 

  

 EL PGP EXPLICADO PARA TONTOS

                        Por Antonio Galvez

 Vamos a intentar explicar como funciona el PGP de tal manera que TODO
 el mundo lo pueda entender, el texto esta lleno de imprecisiones y
 deformaciones que lo hace entendible para el profano pero que son una
 aberracion para el "experto".


 El motivo por el que esto existe es la cantidad de tonterias que se
 oyen de vez en cuando sobre el PGP diciendo que no es seguro y que
 se puede romper, ¡CLARO QUE SE PUEDE ROMPER¡, pero tras trillones de
 milenios de calculos por cada mensaje. La ignorancia produce el
 miedo, lee, aprende, y sientete seguro, tienes motivos para ello.
 (Esto no quiere decir que fies, pero si dudas hazlo con fundamento)

 Si quieres mas y mejor informacion te recomiendo el LIBRO de Alfonso
 Martin que circula por la red, escrito en perfecto Español y que es
 lo mejor que hay gratis sobre criptografia en el mundo.
 (crip_amp.arj de mas de 2 megas)

 Empecemos:






 El PGP combina 3 algoritmos (procesos) matematicos, para lograr:

 -Cifrar de forma "convencional". (usa el algoritmo IDEA)
 -Cifrar con criptografia de clave publica. (usa el RSA)
 -Hacer "CRC's" de alta seguridad contra manipulacion. (usa el MD5)

 El PGP permite que dos o mas personas se comuniquen de manera cifrada
 sin que tengan que pasarse claves por vias seguras (como el tlf o
 similar), tambien permite "firmar digitalmente", ¿como logra esto?,
 no es sencillo.

 Empecemos por lo mas sencillo, todo el mundo conoce los clasicos
 cifradores en los que tu metes un texto por un lado, una clave por el
 otro y el resultado 'solo' puede ser descifrado si se conoce la clave.

 El PGP usa este sistema por que es seguro y rapido, el solito elige
 la clave aleatoriamente en cada mensaje (tambien puedes elegirla tu
 si usas el PGP como cifrador convencional), esta mide 128 bits pero
 tiene el problema de como hacer saber al receptor cual es la clave.

 Aqui es donde entra el RSA, este algoritmo no funciona con una clave
 como la del algoritmo antes mencionado, si no que usa dos. Podria
 decirse que usa una para cifrar y otra para descifrar y que lo que
 una cifra SOLO la otra lo puede deshacer, ¿que como hace esto?, es
 muy curioso, alla va:


 El RSA:

 El RSA se basa en la exponenciacion y el modulo, supongamos que ya
 tenemos una pareja de claves RSA, una secreta y otra publica,
 queremos cifrar un nº (al final todo, textos ASCII, programas
 ejecutables, etc, se reduce a nº binarios), por ejemplo 1234
 (en la practica es un valor de 128 bits lo que hace que el nº tenga
 casi 40 digitos), nuestra clave va a ser de solo 11 bits de modulo
 (el maximo del PGP son 2047) y de 7 bits de exponente (no se cual
 es el maximo).
 Supongamos (todo ha sido elegido al azar como ejemplo):
 Mensaje a cifrar: 1234
 Modulo: 4313
 Esponente: 97

 Lo que haremos (mos o menos) es cojer el 1234 y multiplicarlo por si
 mismo un 97 veces, el resultado puede ser superior al nº de gotas
 de agua que hay en el mar. A este resultado lo dividimos por 4313
 hasta que el resultado sea menor de 4313 y no podamos dividir mas,
 entonces nos quedaremos con el resto de la division, supongamos que
 es 739.

 Fijaros que ni siquiera sabiendo el valor del modulo y del exponente
 se puede saber cual fue el nº que se cifró, ¡puede ser casi
 cualquiera¡, desde 0 hasta el supuesto nº de gotas del mar uno de
 cada 4313 valores dara el mismo resultado, calcularlos todos es
 tarea de dioses y es imposible discernir cual es el autentico.

 Tu, viendo la salida, sabes que un nº elevado a 97 y con un modulo de
 4313 da 739, lo unico que puedes hacer es cojer y suponer que ese nº
 es 1 hacer la operacion, ver el resultado, si no es 739 suponer que
 es 2 y asi sucesivamente, pero te vas ha encontrar con que a lo mejor
 con el 2 va y te da 739, y con el 27 y con el 149 tambien, ¿como
 saber cual es el bueno?, y eso que aqui los nº son sencillos, en el
 caso del PGP que son 128 bits ¡tardarias trillones de gigaenios¡

 Si lo pensais, os direis, que entonces es imposible descifrar un
 mensaje cifrado con este sistema, este es el secreto del RSA, esos
 valores que he puesto como ejemplo (el del modulo y exponente) en
 realidad no se eligen tan al azar, el PGP en base a valores
 aleatorios (si no todos tendriamos la misma clave ¿no?) calcula una
 pareja modulo-exponente en base a la cual y a un sistema que ya no
 soy capaz de explicar (ni es la intencion de este texto explicar el
 RSA en profundidad), determina otra pareja modulo-exponente que ES
 LA INVERSA de la anterior, es decir que si tu cojes el 739 y lo
 multiplicas por si mismo (lo elevas a la potencia) del exponente
 inverso del que hablamos antes y le restas el nº inverso hasta que
 no puedas mas (es decir: le calculas el modulo) TE DARA EL VALOR
 ORIGINAL, me explico:

 Supongamos que las inversas son:
 Modulo: 3727
 Exponente: 31

 Cojeremos el 739 lo elevamos a 31 (es decir, lo multiplicamos por si
 mismo treinta y una veces) y el resultadillo lo dividimos por 3727 y
 nos quedamos con el resto de la division (es decir: calculamos el
 modulo, o dicho de otra forma: le restamos 3727 hasta que no se
 pueda hacer mas y nos quedamos con el resultado), el resultado sera
 1234.

 Naturalmente quien conozca la pareja modulo exponente publica NO
 puede calcular la privada sin dejarse la vida en ello, claro, o por
 lo menos de momento nadie lo ha logrado, y no hablo de hakers de 16
 años, hablo de expertos matematicos de la comunidad internacional,
 todos lo buscan (si lo encuentran se forran) y nadie ha logrado
 encontrar un sistema que no requiera morirse calculando.

 Despues de esto queda explicar, mas o menos, como funciona el IDEA.

 El IDEA:

 Aqui explicare mas o menos lo que hace, para que te hagas a la idea,
 si quieres enterarte bien, pillate el libro electronico de Alfonso
 Martin.

 El IDEA combina 3 operaciones matematicas reversibles:

 El OR exclusivo. (XOR)  (se representa con un '$')
 La suma.                (se representa con un '+')
 La multiplicacion.      (se representa con un 'x')

 Primero divide el texto a cifrar el bloques de 64 bits, lo divide en
 4 trozos de 16 bits y empieza la fiesta:
 Todas las operaciones se hace sobre 16 bits y el resultado es de 16
 bits siempre. (la multiplicacion de dos operadores de 16 bits dara
 un resultado de 16 bits)

 Al primer cacho se le multiplica una subclave (luego cuento de
 donde salen), al segundo le suma otra subclave, al 3 lo mismo y al
 cuarto le hace lo mismo que primero, Luego se coje el resultado de
 la operacion 1 y 3 y se les hace una XOR, lo mismo hacemos
 con el resultado de las operaciones 2 y 4, al resultado de la
 OR del 1-3 le multiplicamos otra subclave y el resultado lo sumamos
 al resultado del OR de los operandos 2-4 y tambien le hacemos una
 suma con el resultado del OR de los operandos 2-4 despues de
 haberles sumado el resultado de la OR de el resultado de la op. OR
 con la ultima subclave mencionada, aqui hemos llegado a la mitad de
 la explicacion de la primera ronda (son 8) y como me imagino que
 nadie se esta enterando, mejor lo dejamos y miramos el dibujito.

 El algoritmo esta muy bien estudiado, si por ejemplo tu metes todo
 AAAAAAAAAA's con una clave cualquiera, por ejemplo todo AAAAAAA's
 tambien, el resultado sera como un fichero comprimido, completamente
 aleatorio.

 Las X1,2,3,4 son los 4 trozos del primer bloque de 64 bits.
 Las Z1,2,3,4,5,6 son las subclaves que se obtienen de la clave.

         X1             X2                        X3          X4
         ¦              ¦                         ¦           ¦
    Z1-> x          Z2->+                     Z3->+       Z4->x
         ¦              ¦                         ¦           ¦
         +------------------ >$<------------------¦           ¦
         ¦              ¦     ¦                   ¦           ¦
         ¦              +----------------->$< ----------------¦
         ¦              ¦     ¦            ¦      ¦           ¦
         ¦              ¦     ¦            ¦      ¦           ¦
         ¦              ¦ Z5->x----------->+      ¦           ¦
         ¦              ¦     ¦            ¦      ¦           ¦
         ¦              ¦     ¦            ¦      ¦           ¦
         ¦              ¦     ¦            ¦      ¦           ¦
         ¦              ¦     +<---------  x<-Z6  ¦           ¦
         ¦              ¦     ¦            ¦      ¦           ¦
         ¦              ¦     ¦            ¦      ¦           ¦
         $<-------------------------------------->$           ¦
         ¦              ¦     ¦                   ¦           ¦
         ¦              $<----------------------------------> $
         ¦              +--------¿        +-------+           ¦
         ¦                       +----------------¿           ¦
         ¦              +-----------------+       ¦           ¦
         X'1            X'2                       X'3         X'4

         Esto se hace 8 veces, volviendo a meter la salida por la
 entrada y canbiando las subclaves, despues se aplica la transformacion de
 salida:

        X'1            X'2                        X'3        X'4
        ¦              ¦                           ¦          ¦
        ¦              ¦             +-------------+          ¦
        ¦              +---------------------------¿          ¦
        ¦              +-------------+             ¦          ¦
  Z'1-> x        Z'2-> +                     Z'3-> +    Z'4-> x
        ¦              ¦                           ¦          ¦
        Y1             Y2                          Y3         Y4

 Para obtener las subclaves se "cifra" clave original de 128 bits de
 una manera similar a como se hace con el mensaje.

 Los bloques de 64 bits resultantes pueden ser usados para cifrar los
 bloques siguientes de varias formas para que todos se afecten a todos
 pero no si hace esto el PGP ni como lo hace.

 El mensaje queda hecho un churro que no lo reconoce ni su padre, pero
 conociendo la clave no es ningun problema deshacer el proceso.
 Y si no conoces la clave solo tienes que ponerte a probar hasta que
 te salga algo logico, como solo hay 2 elevado a 128 posibilidades si
 tienes una maquina capaz de resolver mil millones de IDEAS por
 segundo (vamos, ni el HAL 9000) tardaras 1.079.020.000.000.000
 millones de años en encontrarlas todas, asi que en la mitad de tiempo
 como media podran encontrartela, pero siempre habra algun gilipollas
 que dira que el PGP se puede descifrar y no es seguro.

 El PGP cambia la clave en cada mensaje eligiendo una aleatoriamente,
 excepto cuando se le usa como cifrador convencional, ese caso solo
 usa el IDEA y el MD5 unicamente y la clave la eliges tu.

 El MD5.

 Otro algoritmo que usa el PGP es el MD5, este algoritmo debe ser
 conocido para cualquier hacker que halla intentado crakear alguna
 password de linux o de otros sistemas ya que es un sistema muy usado.
 El MD5 no sirve para cifrar un mensaje ya que lo destruye
 completamente, el MD5 (o su hermano menor el MD2 o el MD4) "cifran"
 una entrada de forma ireversible, la informacion no es recuperable de
 ninguna manera ya que hay perdida de informacion.
 El PGP lo usa para firmar y para añadir un "CRC" de alta seguridad a
 los mensajes para que estos en caso de alteracion sean rechazados.

 EL mensaje entero se pone en la entrada del MD5, y la salida
 (normalmente 128 bits) se cifra con clave secreta del RSA y se pone
 al final. El destinatario como tiene la clave publica puede deshacer
 lo que hizo la clave secreta (leer mas arriba) y ver el "CRC" del MD5
 no tiene mas que descifrar el mensaje, pasarlo tambien por el MD5 y
 comprobar que son iguales para saber si alguien ha cambiado un solo
 bit del mensaje original.

 El MD5 divide la entrada en bloques de 512 bits (si es mas pequeño
 lo rellena con ceros) y les hace una serie de operaciones que dejan
 en ridiculo al IDEA ya que estas no tienen por que ser reversibles se
 aplican con mucha mas fuerza, todos los bits de la entrada determinan
 los bits de salida, todos se afectan a todos, si varias uno solo de
 los bits de la entrada, la salida no tendra nada que ver con la
 anterior.

 Si alguien quiere alterar un mensaje firmado lo tiene muy facil, solo
 tiene que cambiarlo y calcular el MD5, como no sera igual que el que
 firmo con el RSA el autor original tendra que cambiar algo del
 mensaje alterado y repetir el proceso, asi hasta que lo encuentre,
 como SOLO tardara unos pocos miles de millones de años le sera
 suficiente con un poco de paciencia.

                             FIN

 Este texto es de libre distribucion siempre que no se altere su
 contenido ni el nombre del autor, se PROHIBE TOTALMENTE su
 traduccion al ingles salvo expresa autorizacion del autor, la cual
 solo se dara si un ingles traduce un texto similar al Español.

 El autor ni se hace responsable de nada, ni ha sido el, ni nadie le
 ha visto, ademas, no teneis pruebas...

               EB4CAK     Packet: EB4CAK@EA4EEN.EAM.ES.EU
           eb4cak@nos.ea4rct.ampr.org        agalvezc@nexo.es
         PGP:  68 3A 7B 4E BC 6A 59 68  C6 82 36 BD FF 54 65 1E

No hay comentarios:

Publicar un comentario

Deja tus opiniones y/o comentarios, nos sirven para mejorar nuestro blog, gracias