Tema 2

FUNDAMENTOS MATEMÁTICOS DE LA CRIPTOGRAFÍA

La criptografía es el "arte" de ocultar la información. Es una ciencia complicada de carácter histórico. Se trata de una serie de métodos que transformen la información de manera que se oculte su significado.

El criptoanálisis, consiste en una serie de técnicas, para intentar averiguar la información criptografiada. Descifrar de forma no lícita la información encriptada. Este puede ser usado de forma sociológica.

Es importante conocer el original de la información sin cifrar y luego la información cifrada. Dependiendo de estas circunstancias van a variar los métodos de criptoanálisis.

Cada método de criptografía tiene el suyo en criptoanálisis.

Un método de criptografía debe poder transformar la información original en otra información ilegible. Pero que pueda volver a descifrarse su autor lo autoriza.

La información cifrada debe poder descifrarse, se requiere de un instrumento llamado clave (key)

Cuando ciframos información lo hacemos mediante una clave. Con esta clave podemos cifrar la información cifrada de forma inmediata. Criptoanalizar es descifrar sin clave.

Criptosistema.

Es una quíntupla formada por:

M, conjunto de todos los posibles mensajes sin cifrar.

C, conjunto de todos los mensajes cifrados.

K, conjunto de todas las posibles claves del sistema.

E, conjunto de todas las  transformaciones de cifrado.

D,  conjunto de todas las transformaciones de descifrado.

 La propuesta que debe cumplir  un criptosistema es que:

     Ek (m)  = c ;   c pertenece C              m pertenece M

    Dk ( c)  = m

Existen dos grandes grupos de criptosistemas los de clave privada, y los  de clave pública.

CLAVE PRIVADA

Ejemplo: barra de mando de Julio César. La clave sería el grosor de la barra. ( yo tengo una y el receptor otra en su casa).

CLAVE PÚBLICA.

¿De qué serviría que yo cifrara un mensaje con clave privada?

De nada porque todo el mundo lo podría descifrar con la clave publica ( conocida)

Lo que se cifra con una clave, se descifra con la otra y solo con la otra.

RSA (primer algoritmo de clave privada).

DES (data escriptación standart). Asimétrico, clave pública.

Hace cuatro años eliminado, corto para los computadores actuales. Se sigue usando aunque técnicamente sea abordable....., ya que es muy caro pagar a empresas para descifrar la información.

RSA, es el algoritmo más utilizado. Lo sacaron tres personas, de ahí sus iniciales.

Estos patentaron el algoritmo, hace un par de años RSA pierde su patente en EEUU.   

Ron Rivest, autor de casi todos los métodos  de cifrado.

    RC2, RC4, RC5,  usados por Explorer y  Netscape (clave privada).

Entropía.

Propiedad de la naturaleza. Aparece  en la mente de los científicos en la termodinámica.

Segundo principio: Es posible convertir trabajo en energía, pero no energía en trabajo sin perdida (desperdicio) de energía.

La entropía aumenta en los procesos de transformación calórica, va relacionada con el deterioro de los sistemas calóricos. La entropía es una medida del desorden. Si aumenta la entropía, aumenta el desorden. En un gas las partículas no parar de moverse. Entropía. Sharon más tarde desarrollo la teoría de la información.

Desorden, Imprevisibilidad, Uniformización de las cosas. Diremos que hay mucha entropía si hay mucha imprevisibilidad, que vendrá orientada por el desorden que existe.

Ejemplo:  A.- Un saco de 50 bolas iguales, pero distintas. Saco una bola, su probabilidad es de 1/50 de sacar una bola.

                B.- Un  saco 49 bolas negras, 1 bola blanca, más probable sacar  1 bola negra que 1  bola blanca, poco probable sacar  1 bola blanca.

                 A.- ( For i = Bola Pepe, to bola Juan) No se puede debo nombrar los 50 nombres.

                  B.- Mejor usar esto 49* N + 1*B

Algoritmo de comprensión à comprime si la información que entra ( si pérdida de información) es menos que la estrictamente necesaria.

Ejemplo: zip, arj, tac

MP3 à $ una ligera pérdida de información. ( es un compresor con pérdida).

- Tenemos un suceso Xi.

- Calculamos su probabilidad P(Xi), número entre 0 y 1.

-Aplicamos el logaritmo (base 2) y le cambiamos el signo, será positivo.

-Obtenemos  un número de 0 a infinito. Será la cantidad de información asociada al suceso Xi  ,  - log(Xi).

-Entropia  (H)

Ejemplo: Un dado si lo lanzamos, obtenemos una entropia, máximo de 6 elementos posibles.  (todos los sucesos son equiprobables). H=lg6

Ejemplo: Bolas en una bolsa (sacar bolas negras) H=0.1

La entropía nos da una medida de la redundancia de la información.

Un bit es la cantidad de información mínima entre 2 sucesos equiprobables ( el 0 y el 1).

Entropía: permite calcular la redundancia de 1 lenguaje.

 

Índice Real  del lenguaje :  rk = Hk / k     , k longitud de información.

  ( Es la entropía de  los mensages de una determinada longitud / determinada longitud )

Índice Absoluto del lenguaje :  R = log2(m)     , m= conjunto de letras  del lenguaje

Redundancia : D= R-r          D/R (índice de compresión de 1 compresor maravilloso)

Entropía para dos variables.

1) Probabilidad conjunta , P (xi, yi)

2) Probabilidad condicionada P( xi | yj) = P (xi, yi) / P(yi)

Criptrosistema  Seguro de Sharon: ( criptosistema ideal).

I ( C, M) = Ø

 El hecho de conocer C no nos dice nada sobre M.

Para que un sistema cumpla esto, es necesario que el cardinal (número de elementos que hay en 1 conjunto) del conjunto de claves sea como poco igual  al cardinal del conjunto de mensajes.

Cardinal (conjunto claves) >= cardinal ( conjunto mensajes)

Ejemplo:  El libro guerra y paz, aplicar un X0R ( or exclusivo) con los mensajes que se vayan escribiendo.

Desinformación de un sistema criptográfico:

        H (M | C)

        H (M) = H (M | C)

        H (K | C)

La longitud mínima de mensaje cifrado que lleva esto a cero.

La cantidad de mensaje cifrado que necesito para descubrir la clave ( lo que interesa es que por más mensaje que tenga, no puedo llegar a obtener la clave).

Técnicas para ocultar redundancia:

CONFUSIÓN ,  ocultar la relación (K) directa entre C y M.

El mecanismo más simple es la sustitución. Consiste en sustituir un símbolo del texto plano (C) en otro símbolo.

DIFUSIÓN diluir la redundancia del texto, repartiendo la redundancia por todo el texto. Transposición, cambiar las cosas de sitio.

Algoritmo RSA

ARITMÉTICA MODULAR

Aritmética y trabajo con conjuntos de números restringidos a un tamaño determinado.

    a, b, c   pertenecen N (dados tres números)

    a equivale b         (modulo n)     a = b + kn

    a es congruente con b

    El rango será     [0, n-1 ] 

INVERSAS :

Primos entre sí , no comparten ningún divisor, ejemplo 9 y 8.

mcd (a, n) = 1 à a tiene inversa módulo n.

$   a-1 /  a-1 a = 1  ( mod n )

CR  ( conjunto de residuos) =   {1,2,....n-1}

CRR (conjunto de residuos reducido ) =  {1,5,7,11}

ejemplo para  n=12

 

Seguridad RSA, dado el número n, no se puede calcular fácilmente su factorización.

Teorema:

mcd (a,n) =1

si p es primo à ap-1 = 1

ao(n) =1 ( mod n )

 

Si  c = logb a ( mod n )  a = bc ( mod n )

No existe una fórmula algebraica para determinar números primos. Para descomponer un número en sus factores primos se puede hacer por fuerza bruta.

Un test para averiguar si un número es primo, es el test de Leman, el qual da el 50% de probabilidad de certeza a partir de una semilla. Se repite varias veces y la fiabilidad de obtener una respuesta cierta es correcta.

Ejemplo :  ¿ p es primo ?

                    tomo a,   a<p;  calculo b = a(p-1)/2 mod p ;  si   b != 1   y   b != p-1 à No es primo al 50%

Un problema posible es encontrar un número alratorio primo grande. Cogemos un número de tantos bits como sea necesario ( 20 bits ). Probamos una tabla con los primos hasta el 2000 y luego pasamos el test de Leman. La probabilidad de que sea primo es muy grande.

Primo Fuerte : Dos números p y q son primos fuertes si :

- si el m.c.d de ( p-1 ) y ( q-1 ) es un número pequeño.

- ( p-1 ) y ( q-1 ) tienen algún factor primo grande ( p' y q' ).

- ( p'-1 ) y ( q'-1 ) tienen algún factor primo grande.

- ( p'+1 ) y ( q'+1 ) tienen algún factor primo grande.

( Anticriptoanálisis. Quiero un número n = pq, el qual no se pueda factorizar )

Números aleatorios : Un número es aleatorio si es completamente impredecible. La naturaleza es aleatoria, la señal de TV, la señal de ruido, ...

Necesitamos una fórmula que dado un número aleatorio inicial tenga una relación "oscura" que permita obtener nuevos números aleatorios a partir del primero.

Ejemplo : en el lenguaje de programación C, se utiliza  k=rand( ). Un buen método seria la hora ( hh:mm:ss ),  randomize( time ( null ) ).

                k = rand( )

                l  = m * k mod p

                x = m * l mod p

 

CRIPTOGRAFÍA CLÁSICA

- vara de mando

- cifrado cesar

   A  B C D E F G H .... T U V W X Y Z

    D E  F G H I  J  K....  W X Y Z A B C

    HOLA se cifraría como K R O D

Esto sería un cifrado por sustitución, un elemento de nuestro alfabeto se cambia por otro elemento, de nuestro alfabeto. No es muy bueno porque un elemento siempre se cambia por la misma letra.

Este algoritmo tiene clave, 3.  Si usamos clave 4 cambiaría el cuadro de asignación de elementos.

Es de sustitución  monoalfabética, 1 elemento 1 alfabeto por 1 elemento de otro alfabeto.

Criptoanálisis por fuerza bruta ,sería probar con las 26 claves posibles ya que hay 26 letras en el alfabeto.

Clave  conjunto vacío ---> clave débil, debe eliminarse por necesidad. ( se quedaría el mismo alfabeto).

Un ordenador comprobaría estos 26 posibles mensajes de una forma muy rápida. Sabrá que alfabeto es el correcto si las palabras encontradas pertenece o no pertenece al dicccionario.

También  existe el critptoanálisis por estudio probabilístico de las letras del texto cifrado y estudio probabilístico de las letras de un texto sin cifrar, muy largo de la lengua en cuestión. Y por asociación de probabilidades obtendríamos la solución.

- sustitución trialfabético:

              A   B   C   D . . .

clave 3   D   E   F   G  . . .   K= 3

clave 6   E    H   I    J  . . .    K= 6

clave2    C   D   E   F  . . .    K= 2

longitud (k) = 3

    EJEMPLO:   AFEF    (texto)      

                         DLGI    (cifrado)

Cifrado de sustitución, pero 1 elemento ( 1 letra ) no siempre será sustituido por la misma letra cifrada, ya que esto dependerá de la posición en la que se encuentre la letra.

C  =  (m + 3) mod 256

en el lenguaje de programación  C :

C = ( m + 3) %  256     ( un buen compilador controlaría los rangos)

C = m + 3      (declarándome m y c tipo byte)

cifrador monoalfabético ---->  C = (m + k) mod 256

cifrador polialfabético   ----->  C = ( m + ki) mod 256

                                                Ci = (mi + ki mod l) mod 256

 TRANSPOSICIÓN: 

 Nos da igual  el contenido, tan solo importa la posición dentro del mensaje.

permutación simple de lenguaje n     ( cambiar de orden)

ejemplo:   6 = { 5, 6 , 1 , 2 , 4 , 3}

Hola como estás    ( no considero los espacios en blanco como caracteres)

la  Ho    ( cifrador por bloques )

Escribir el mensaje en filas y leerlo por columnas.

             Hola         

n=5       como

             estas

             Hce ..... oos ..... lmt .... aoa .... s

            cada stream     entra ---> sale    ( no se puede inplementar tan fácil)

Necesito necesariamente, si tengo n columnas, recordar n -1 columnas, la primera la escribo.

     (Turbo Pascal  64K )

 A cualquier cifrado le exigiremos que solo pase una vez por la entrada el mensaje a cifrar.

( En el ejercicio de antes necesito que la información pase n= 5 veces por la entrada ) o  tener una gran capacitad de almacenamiento).

 

ALGORITMO DES

Las claves del algoritmo DES, no forman una estructura de grupo, es decir, cifro con clave K1 y al resultado lo cifro con K2. Si tuviera alguna clave que pudiera hacer esto con tan solo una clave, no tendría sentido tener tantas claves.

TRIPLE DES

Ek3 (Dk2 (Ek1 (m) ) )    ( clave de 128 bits) , realmente 112 bits (56 + 8 de paridad).

Es algo computacionalmente inabordable en la actualidad.  Es el algoritmo más seguro que hay en la actualidad.

Es un algoritmo que funciona por bloques, cifra bloques de 8 bytes.

Rivest :     RC2 , RC4, RC5,  ....  , Gosht, Blowfish, Idea, ....

Los algoritmos de Rivest son los más rápidos que existen. Pueden trabajar a la vez con diferentes longitudes de claves.

DES (cifrado por bloques). Entra un bloque 8 bytes y sale un bloque 8 bytes cifrado.

ECB

- Cifrado por bloques

- Cada cifrado es independiente de los anteriores, aunque la clave es la misma.

Cada bloque de 8 bytes ( parece fácil solo 8 bytes, pero es difícil).

En el caso en el que hubiera un error de transmisión, tan solo se conocería el resultado de ese bloque (a no ser que se obtuviera la clave).

En el DES existen 4 claves ---->el cifrado es igual al mensaje inicial

En el DES existen 12 claves---->el cifrado que sale es muy parecido a lo que entra. (Se trataría de claves débiles, se rechazan este tipo de claves).

-Cuando tenemos bloques muy repetitivos:

    X   X   X   X   0   X   X   X   X

    X   X   X   0   X   0    X   X   X

    X   X   0    X   X   X   0   X   X

    X   X   0    0    0    0    0   X   X 

    X   X   0    X   X   X   0    X   X

    X   X   0    X   X   X   0    X   X

    X   X   0    X   X   X    0   X   X

 

Aquí se puede observar una A, un poco dispersada. Si ciframos con el DES :

    *   *   *   *   Ø   *   *   *   *

    *   *   *   Ø   *   Ø   *   *   *

    *   *   Ø   *   *   *    Ø   *   *

    *   *   Ø   Ø   Ø   Ø  Ø   *   *

    *   *    Ø    *   *   *   Ø   *   *

    *   *   Ø   *    *   *   Ø   *   *

    *   *   Ø   *   *    *   Ø   *   *

Se sigue apreciando perfectamente la A después de haber sido cifrada la información. Para solucionar esto se una CB C.

CBC

Modo de encadenamiento de bloques cifrado.

Lo que realmente se obtiene es, cifrar primero el mensaje inicial, luego m2 será  sumado con "kakita" y luego será cifrado. Luego sumará este resultado con m3 y lo volverá a cifrar.

Para descifrar esto se haría la misma operación pero a la inversa.

No puede cifrarse mal, lo que puede ocurrir es que se transmita mal. Este error puede  ser propagado a cierto número de bloques.

 

Si intentáramos descifrar a derechas ( por si esto ocupa 8000 millones de km ), el error se propaga hasta 2 bloques.

Cifradores por flujo. stream. A un algoritmo por bloques, le añadimos un registro de desplazamiento.

  CFB  ( Cifer Feed Back, Retroalimentación de Cifrado)

Meto kakita, la cifro, lo sumo con el mensaje inicial.

-Desplazo un byte y vuelvo a meter el C1 obtenido.

-Cifro una letra cada vez.

-Se retroalimentará tantas veces como letras quiera cifrar.

Existe una semejanza entre los dos modos   CBC   y CFB

Si cada mensaje de CBC fuese tan solo de 1 byte ( una letra ), sería igual que aplicar CFB. Se trataría del mismo algoritmo para cifrar.

 

CIFRADO DE CLAVE PUBLICA

- Tenemos un número n del cual conocemos la función de Euler (número de elementos que tiene el conjunto de resíduos)

-También conocemos Ø (n), lo hemos hecho nosotros.

-Dado n no podemos saber Ø (n).

-   e . d = 1 mod Ø (n)

( e es inverso de d)

(e, n ) clave pública

(d, n ) clave privada.

c =  me ( mod n)    <-----cifrado   (RSA)

m = c (mod n) <-------descifrado ( RSA)

 

c = me

cd = me.d   = m

- Tomemos dos primos fuertes, p y q , secretos;   n = p. q, n es público, pero dado "n" no se puede sacar p y q.

Ø ( n ) = (p - 1) . (q - 1) , Ø (n) es secreto también.

e = 3 , 65535

Con el algoritmo extendido de Euler obtengo d.

PKCS12

( 12 documentos  donde se describe el RSA)

Todo lo que hace un algoritmo de clave privada lo puede hacer uno de clave pública.

El RSA es mucho más lento que el DES. No se usa para textos largos.

El RSA es susceptible de un ataque, existe una lista de niveles para atacar un texto.

Si yo se la clave pública, puedo cifrar todo lo que me de la gana, puedo generar todo el texto cifrado que quiera ( no ocurre igual si no tengo algoritmo de clave pública).

Esto es un INCONVENIENTE del algoritmo RSA y de todos los que son de clave pública.

El RSA no tiene  una implementación de clave predeterminada.

                    p = 5

                    q = 7

                    n = 35

                    Ø(n) = 24

(1024 bits ---> está bien, pero mejor 2048 bits).

Problemática, cuanto más grande la clave, más tiempo tardará nuestro sw en cifrar y más aun en descifrar.

Netscape no es capaz de generar claves de más de 1024 bits, aunque acepta claves que tu le des de 2048 bits.

Clave de 16 k----> Netscape peta, se cuelga.

Librería BN -----> números grandes, permite hacer todo tipo de operaciones numéricas con números grandes.

BN-is-prime ( dice si un número es primo o no dentro de un margen de error)

Hex-to-BN ---> hexadecimal a BN

bn-is-prime----> ¿ es primo ?

cc -o   prg   prg.c

 

LA FIRMA ELECTRÓNICA

 A   ka, clave privada y pa, clave pública.

B   kb  y   pb.

Quiero mandar un mensaje de A a B secreto. Busco confidencialidad.

(mensaje  m cifrado con la clave pública de B ) = C

C = Epb  ( m)

D kb (C) = D kb ( E pb (m)) = m    ,     B  puede recuperar m.

Lo que se cifra con una clave, se descifra con la otra y solo con la otra.

Autenticidad

c = E ka (m)

D pa (c) = D pa (E ka (m) ) = m

Si la clave pública de a, la tiene cualquiera, cualquiera puede saber m.

Lo único claro está en que el mensaje procede de A, ya que yo lo he descifrado con la clave pública de A. Es con lo único que se puede descifrar (lo cifrado con la clave privada de A).

¿Cómo sabemos que la clave pública de A, es de A?

CLAVE DE SESIÓN

Generamos aleatoriamente  S, un gran número, que sería una clave privada (secreta). La llamaremos clave de sesión, solo sirve para esta sesión, luego la desechamos.

Hacemos un cifrado (E) del mensaje:

Es (m)      Epb (S)      Epc(S)      Epd(S)

Por muy lento que sea el RSA, pra cifrar 128 bits, no tiene problemas.

Cada uno de los receptores del mensaje (destinatarios) utilizará tan solo el trozo que le interese, cada uno recibirá su clave pública.

Queremos que el mensaje sea auténtico ( no secreto, en este caso). Objetivo---> autenticidad del mensaje.

Los mensajes cifrados ocupan lo mismo que el mensaje original.

Debe cumplirse:

 1) El destinatario debe poder leer el mensaje.

 2) Una vez leído, si quiere, ya lo autentificará

FUNCIÓN DE RESUMEN  (HASH)

Ejemplo función de resumen:

-cumple 1, salida mod (n), siempre mismo tamaño.

-no cumple 2, si cambio 2 caracteres de sitio de igual resultado.

(Debemos escoger funciones  más complicadas)

La función de resumen no es una función de cifrado, es un resumen. ¿Para qué sirve resumir?

Eka (H (m) )  m=c

El mensaje (m) va tal cual, lo otro es pequeño.

Firma electrónica (F).

El receptor :   c = m  F

                   H (m)  ¿=? Dpa ( F)     <----->   resumen que llega  ¿=?  resumen supuestamente verdadero

                    Si la respuesta es si, el mensaje es autentico.

                    Si la respuesta es no, el mensaje no es auténtico.

Si  al transferir el mensaje se altera la firma o el mensaje,  ¿=? será falso, por tanto puede haber sido modificado el mensaje, o puede haberse cambiado la firma o hay error de transmisión.

Pero si conincide, seguro que el mensaje es auténtico.

Es  (m)     Epb (s)          ----->    Dkb  (   )  = S;     Ds (  ) = m

Esto se usa para correo electrónico o para cualquier otro protocolo.

(1)            (2)            (3)

Es (m)     Epb (s)     Epc ( s)

Estoy mandando algo cifrado con mi clave pública  (no secreto). Si solo mando (1) y (2) no lo voy a poder leer yo cuando reciba mi propia copia. Añadiré (3) para poder leerlo yo también.

MENSAJE FIRMADO Y CIFRADO

Qué me interesa más:

Y si encima lo mando como otro remitente ( falso), si alguien intercepta mi mensaje no sabe ni siguiera el remitente verdadero. El destinatario ya comprobará la firma del remitente auténtico.

ejemplo : Es un mensaje cifrado y firmado.

C = Epb (Eka (m))

Primero descifro y luego compruebo la firma.

m = Dpa (Dkb (c) )

Esto en la práctica no se hace, debido a que es muy lento.

Es     Eka (H (m)     m     )     Epb (s)

 

AUTORIDAD CERTIFICADORA

¿ Cómo sabe A que Pb es la clave pública de B ?

¿Cómo sabe B que Ka es la clave privada de A?.

-Alternativa 1: quedar A con B y tener la certeza de quienes son.

-Alternativa 2: la confianza, cuando no hay un posible contacto directo.

Confianza solo ante un NOTARIO , autoridad certificadora.

PGP ----> gratuito.

....amigo del amigo del amigo del amigo....

Cuanto más larga la cadena, menos confianza ( yo pondré el nivel de confianza, mucho, poca, media, nada)

-Confianza horizontal ---->todos son amigos.

-Confianza vertical -------> Notario.

X509---> utilizando la técnica de clave pública. Se utiliza el concepto de certificado.

CERTIFICADO

Es un objetivo que se compone de una estructura determinada y que tiene una serie de datos. Por ejemplo:

DN  (distinguied name) (como un todo o como varios componentes).

STANDARD X509        CN  (common name)

                                       OU  (organizagtional out)

                                        O    (organizatión)

                                        C    (país)

                                        ST   (comunidad valenciana)

En un certificado tenemos 2 DN      DN subject -->identidad de quien se certifica

                                                       DN issuer ----> identidad que emite el certificado

La única forma de saber si es un certificado es comprobar la estructura del texto.

Ahora lo que vamos a tener es una clave privada y un certificado (una clave pública no nos sirve).

En la práctica, clave privada más clave pública ---->c. privada + c.pública dentro de un certificado.

La firma de la CA puede estar certificada por ella misma o por otra CA.

Certificado tipo:  C Autofirmado---> firmado con la clave privada que corresponde a la pública que va en el certificado.

Acto de fe es necesario al final.

Teóricamente---->dentro de la CPU ( no comercial)

En la práctica----> Ir a dependencias de la CA, por internet ( no seguro), con el sw (Netsc ---->fichero con certificados).

Obtener de forma segura los certificados, en ello reside la seguridad de clave pública  (punto crítico).

Netscape más difícil entrar en la lista.

-decidir datos personales que damos

-decidir un algoritmo de clave pública (RSA).

-generar par de llaves (privada más pública).

    -recomendado por el standart que lo genere el usuario.

     -Tb puede ser generado por la CA, la CA firma la clave pública, pero no tiene porque tener clave privada.

RSA  lab - PKCS # 10    (firmar != cifrar , firmar = cifrar con un resumen)

Quien genera el request  es quien tiene la clave privada, esto se entrega a la CA y ella decide si emite el certificado,  y nos cobra.

Hay varios CA :    CA1 > CA2   > CA3 > CA4 > CA5

(certificado distinto según seriedad), CA1  ofrece mayor seguridad que CA5.

La CA emite un documento legal (CPS) , se certifica el nivel de certificado, su naturaleza.

    ejemplo:  CA1 solo certifica el e-mail.

En la práctica:

Yo quiero certificar, envío e-mail y CA devuelve  e-mail., si lo puedo leer --->funciona.

    ejemplo:  CA2 --->CN

PKCS # 12 en RSA   , Estructura de un objeto criptografiado pensado para transporte personal de información claves, etc...

Todo protegido con password.

CA hace que te llegue por un medio más o menos seguro, PKCS 12 y la clave del modo más seguro posible.

PKCS 12 ----> seguro con un  password suficientemente  grande.

Hacer llegar una password de forma segura: "web seguro"

CA tiene un servidor web para ofrecerte información segura---->para mostrar así el password.

Esto en un protocolo seguro.

Un paso es seguro, basándose en en los anteriores pasos seguros.

"CORREO SEGURO" --->cuando el usuario tiene el certificado.

Cuando se recibe un mail,     Es (M)   Er(S)      Epc (S)

¿Como se que es para mi?

-comprobar con certificados propios en base de datos.

-para identificarlo : DN autoridad,  número serie distinto para cada  CA

 Al pedir otro certificado los datos son idénticos, se comprueba  que exista otro certificado igual---> CA no emite 2 certificados iguales, con el mismo DN.

Solicitud de invalidar el certificado previamente hecho por parte del usuario (llamar por teléfono y clave para la revocación).

Protección de Base datos de clave privada con  password que pide Netscape.

Certificado Revocado.

Certificado revocado se guarda para poder leer el correo antiguo con ese certificado.

El X509. para el certificado revocado, propone el CRL.

CLR:

Objeto que es una lista de número de serie, el DN de la CA y todo  ello firmado por la CA.

Hay que tener localmente una Base de datos ( no vale la pena), de certificados revocado para que el sw  provoque que no esté revocado.( en su servidor web si vale la pena).

Ejemplo: alumnos de SPI que no vienen por clase.

Un método es conectarse on-line en el momento de la comprobación  a la CA y acceder a la Base de datos de certificados revocados. En la práctica no se hace.

En el CRL no vienen los últimos certificados revocados  --->  lentitud   ---->  comprobar on-line.

Sellado de tiempos:

Enviar un fichero a un organismo para que sea sellado con una fecha, es como un notario.

Tambien para el acceso a una web, sellar cuando se visite una web.

 

 

ISO     ( DER  contenido en  BER  <------ISO ,  ASN1 )

Reglas de codificación binaria distinguida.

BER: Reglas de codificación binaria.

DER: subconjunto.

Conjunto binario más EXPANSOR----> conjunto de caracteres.

3 caracteres  ( más entropía )   +   expansión   =   4 caracteres ( menos entropía )

MIMENCODE ---->  el imput lo saca en base 64, output.

MIMENCODE -1 ---> (procesos inversos)

Esto se desarrolló para el correo electrónico, el ajuste de correo puede hacer ciertas operaciones sobre el texto.

Retorno carro = new line, espacio = ...

 binario ---> base 64      ( no es cifrado, no hay clave, solo está codificado, el proceso inverso lo descodifica )

PEM (private enacer mail)

Correo electrónico mejorado para privacidad, se sigue utilizando el formato.

información en binario  pasa a base 64.

_ _ _BEGIN                       CERTIFICADO_ _ _

        bla bla

_ _ _END                           CERTIFICADO_ _ _

esto es imprimible (DER en versión imprimible = PEM)

* El PEM  solo lee   _ _ _ BEGIN

                                        bla bla

                               _ _ _ END

por tanto si lo guardo como texto, si se añaden cosas antes, y después del end, el PEM lo va a ignorar todo, excepto lo que haya entre begin y end.

 

FORMATO MIME

( PGP y SMIME )

Cabecera  ---> campo: valor

                        mime Version: 1.0

                        content-tipe: tipo/ subtipo

                        content-transfer-encodiy:  7 bit, 8 bit, base 64, quoted printable...

(línea en blanco)

Cuerpo

-Solo se pueden mandar caracteres del 32 al 126, más tarde se podría desde  128 a 255 con 8 bits.

-Mimelist, una lista de objetos mime.

-Por defecto se interpreta text/plain.

    Ejemplo:

    content-tipe: aplication / x - shock waveflash2  - preview;  num= "O-bisof"

    content-transfer-encoding:   base 64.

-------------------------------------

MIME VERSION: 1.0

content-type: multipart/mixed; bounday =  .....churro.....

( línea en blanco )

_ _ churro

content.type : text/plain

( línea en blanco )

Hola

_ _ churro

content.type:   image / prg

content= transfer-endodiy : base 64

_ _ churro _

Pueden existir varios multipart / mixed anidados.

 

MENSAJE CIFRADO

            x : x

            MIMEVERSION : 1.0

            content-type:  application / x - pkcs7  - mime

            content- transfer-encoding :   base 64

            ( contenido )

El mailer cuando recibe esto interpreta el contenido, el cotenido en un mail pero puede que decodifique, elimine y pegue la primera parte con el contenido.

            x : x

            MIME VERSION:1.0

            CONTENT TIPE : multiport/ mixed

            ( contenido )

 

MAIL FIRMADO

 Debe cumplir que el lector debe poder leer el contenido del mail aunque no pueda verificar la firma.Que un mail este firmado, es un añadido.Un mail tiene 2 partes,  mail más firma.

MIME VERSION : 1.0

Content-type : multipart/ signed; protocol ="aplicatión /x-pkcs existe-sgnatura"; micalg=shai;

boundary ="tarari"

_ _ tarari

( mi mail )

_ _ tarari

content-type : appication /x-pkcs7 - sgnature

content-transfer-encodiy: base 64

( firma electrónica del mail anterior )

 _ tarasignatevi _

La firma electrónica, es la firma de algo, no tiene sentido, firmar la  nada, (la firma de cero).

Esto era el fucnionamiento normal, pero podemos encontrarnos con:

Sirve para tarnsferir datos den un entorno criptográfico.

Una cajita donde metemos (datos o certificados) puede estar firmado o cifrado o no.

            data

            sgneddata

            envelopeddata

            signedandenvelopeddata

( todo esto va dentro del pkcs 7 )

enviar el objeto pkcs7 y mandar dentro una copia del certificado no cifrado, si firmado ( de tipo signeddata) .

    Se manda un objeto mime el cual es del tipo pkcs7.

MAIL FIRMADO

    M   \  C  \   F  ( esto es lo que envio )

X ¿=? H (M)    SI, mensaje correcto; NO, mensaje incorrecto                    X = Dpa( F )

MAIL CIFRADO

Descifro con clave privada del certificado correspondiente.

NOTAS:

*Firma digital---> comprobar que el mensaje no ha sido modificado-

* Si deshabilito algún algoritmo de cifrado, puede que luego no pueda leer algún mensaje, (esto puede  escogerse en Netscape).