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
- Cuando el sistema es más predecible, la entropía es menor.
- Cuando el sistema es equiprobable, impredecible, la entropía es máxima.
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
m = cd
c = me
cd
- 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)
-comprobar con certificados propios en base de datos.
-para identificarlo : DN autoridad, número serie distinto para cada CA
Si pierdo C privada ----> certificado aún es válido.
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.
Uuencode
Base 64: transforma el ASCII en un subconjunto del ASCII ( letras numeros, algunos signos, imprimible por impresora).
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 = ...
¿Qué se hace?
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)
Formato DER----> PKCS12 (debido a los fabricantes)
Formado DER , formato PEM , certificado.
* 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.
Equivalentes: formado DER más MIMENCODE, y formato PEM menos línea begin, 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 _
Mail firmado ( 2 partes) : mail (partes que sea) y firma.
Para que se pueda firmar, debe estar claramente delimitado el mail. Sabemos exactamente donde empieza y donde acaba, (el mail y la firma).
Podríamos anidar firmas ( una firma para la imagen y luego la otra firma). Estas combinaciones puede que no sean interpretadas por el mailer.
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:
pkcs 7---> exportar , datos , certificados.
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 )
Datos firmados---> signed data.
enviar el objeto pkcs7 y mandar dentro una copia del certificado no cifrado, si firmado ( de tipo signeddata) .
Datos cifrados--->envelopeddata
Se manda un objeto mime el cual es del tipo pkcs7.
Cifrado y firmado---> no recomendable, la firma puede verse y no cumple la propiedad del standard SMIME de hacer primero y firmado y luego el cifrado.
MAIL FIRMADO
Mensaje (M)
Calcular un resumen H (M)
Cifrar con la clave privada del emisor este resumen EKA( H(M) ) = F
Envio mensaje más firma electrónica F
M \ C \ F ( esto es lo que envio )
X ¿=? H (M) SI, mensaje correcto; NO, mensaje incorrecto X = Dpa( F )
MAIL CIFRADO
Mensaje cifrado usando llave de sesión aleatoria ES(M)
Cojo
la llave de sesión y la cifro usando la clave pública del receptor.
Lo obtenido lo recibe en formato pkcs7, miro si estoy dentro de la lista de receptores, si tengo alguno de los certificados.
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).