|
|
|
|
|
TEMA 2: CRIPTOLOGIA
2.1
Definición. Criptosistema.Tipos
2.2.Fundamentos
teóricos.
2.2.1 Teoría de la información.
2.2.2 Matemática Discreta.
2.3.Algoritmos
de cifrado elemental.
2.4.Criptosistema
de llave privada: Redes de feistel.Algoritmo DES. Modos de operación
2.5.Criptosistema
de llave pública.Algoritmo RSA.
2.6Aplicaciones
del los critposistemas.
2.6.1.Funciones Hash y Huellas
digitales.
2.6.2.Estándard X509.
2.1 Definición. Criptosistema.Tipos.
En primer lugar indicar que se trata de un concepto compuesto por dos términos que se encuentran íntimamente ligados. La criptología es la conjunción de dos técnicas, la criptografía y el criptoanálsis. La criptografía es la ciencia que nos va asegurar en principio la confidencialidad de la información , establece una serie de patrones a partir de los cuales la información no es accesible a individuos no autorizados ajenos a esta. El secreto por tanto , de esta ciencia consiste en que la información no desaparece, sí su significado. Entre los patrones más importantes , se encuentra el estableciemiento de claves privadas que son las que le dan significado. Si la clave se pierde o es expuesta a individuos ajenos , el método criptográfico ya no resulta eficiente Así pues lo que va a dar seguridad al sistema criptográfico va a ser la clave que utilice para ocultar el significado de la información. Esta definicion de criptografía converge en que todo sistema criptográfico debe poseer una serie de transformaciones de cifrado , unas de descifrado , una serie de claves, una series de mensajes a cifrar y una serie de mensajes cifrados. Lógicamente para que el sistema disponga de aceptación , lo que será accesible ( público ) por quien desee utilizar uno de estos sistemas será claramente las transformaciones que se realizan sobre la información.Todos estos términos se agrupan bajo lo que se conoce bajo el nombre de criptosistema. Un criptosistema es una quintupla formada por cinco conjuntos (M,C,K,E,D), donde
M -> Conjunto de los mensajes en claro , sin cifrar .Así pues parece que cualquier critpsosistema debe cumplir que al aplicar las transformaciones de cifrado con una clave k sobre un mensaje M debemos obtener C de tal forma que contenga la mínima información posible sobre M, y al aplicar el conjunto de las transformaciones de descifrado sobre el mensaje C con la misma clave k podamos obtener M sin ningún tipo de problema. Lo anteriormente expuesto se puede resumir en la siguiente expresión matemática:
C -> Representa el conjunto de todos los posibles mensajes cifrados.
K -> Representa el conjunto de claves que se pueden utilizar en el sistema
E -> Conjunto de las transformaciones de cifrado o familia de funciones que se aplica a cada elemento de M para obtener C. Existe un transformación diferente para cada valor de la clave k.
D -> Conjunto de las transformaciones de descifrado o familia de funciones que se aplica a los elementos de C para obtener los mensajes iniciales.
Así pues parece razonable que cualquier criptosistema que no goce de estas características no será válido para lograr los objetivos deseados. Si ciframos el mensaje con un clave k y luego lo desciframos con la misma clave k y no obtenemos lo que teníamos al principio parece claro que el sistema además de fallar no cumple con los principios básicos de la seguridad informática(integridad de la información).
La otra técnica fundamental por la que está formada la
criptología es el criptoanálisis: consiste en comprometer
la seguridad de un determido sistema criptográfico ( criptosistema
). Lógicamente la seguridad de un determinado sistema criptográfico
se verá altamente corrompido ( perderá validez) cuando de
alguna forma se obtenga la clave que le proporciona seguridad y razón
de ser. El descubrimiento de esta clave puede ser llevado a cabo de diversas
formas. Desde sabotear los canales de comunicación , hasta estudiar
altos contenidos de texto cifrado para obtener información sobre
estos.(estadíticas...).
Si observamos meticulosamente la constitución de un criptosistema
llegamos a la conclusión de que existen dos formas fundamentales
de cifrar la información , que constituyen los 2 principales tipos
de criptosistemas:
Criptosistemas simétricos o de clave privada. En estos sistemas se utiliza una llave k que sirve tanto para encriptar como para desencriptar. En estos criptosistemas la longitud de la clave es fundamental , lo que genera el problema de que si la longitud de la clave es corta el método no es seguro, y si la longitud de la clave es larga resulta incomódo. También presentan el problema de que ambas partes deben conocer la clave k , por lo que habrá que establecer una forma de transmisión de datos que nos asegure mantener la privacidad de la clave que constituye el secreto del sistema. Como ventaja , indicar que el coste computacional no es excesivamente elevado al contrario de lo que veremos en los criptosistemas de clave pública.
Criptosistemas asimétricos o de clave pública. Para evitar el problema de tener que transmitir la clave privada de forma segura se emplean los criptosistemas de clave pública o de cifrado asimétrico. Se emplean dos claves distintas , una para cifrar y la otra para descifrar. La clave de cifrado es pública , conocida por todo el mundo , la de descifrado privada y por tanto "idealmente" sólo conocida por su propietario. Ambos consitutyen un par de claves (K,P). Las principal desventaja de los criptosistemas de clave privada frente a los criptosistemas de clave pública es el coste computacional que emplean estos métodos para realizar las transformaciones de cifrado y de descifrado. Además , un individuo que disponga de la clave pública ( que puede ser cualquiera ) dispone de cantidades infinitas de texto cifrado , y por tanto de información de los mensajes cifrados sobre los mensajes iniciales .
Para equilibrar los problemas de ambos criptosistemas en la prática se utilizan la conjunción de ambos métodos. Así pues parte del mensaje cifrado contendra información cifrada con un clave privada k1 de un algoritmo de cifrado simétrico y parte de este mensaje contendrá elementos cifrados con la clave privada k2 del algortimo de cifrado asimétrico. Normalmente, por convenio se codifican los mensajes largos mediante algoritmos simétricos que suelen ser muy eficientes, y luego se hace uso de la criptografía asimétrica para codificar las claves simétricas. Los dos algoritmos utilizados por excelencia en la actualidad son el DES ( Data Encription Standard ) como algortimo simétrico y el RSA ( Rivest , Shamir y Adleman) como algoritmo asimétrico.
A partir del desarrollo de Claude Shanon la criptografía pasa a ser de un arte a una ciencia. Fundamentalmente la teoría desarrollada se agrupa en dos bloques fundamentales. La teoría de la información y la matemática discreta. La primera aporta toda una serie de magnitudes que nos permiten establecer el nivel de información de un determinado mensaje , es importante para el estudio de la criptografía ya que nos permite realizar estudios estadísticos de la información codificada junto con los mensajes iniciales y ver las relaciones que existen entre ambos. Cuando la información cifrada contenga una información nula sobre la inicial nos encontraremos en una situación ideal deseable para cualquier criptosistema. Además , mensajes muy redundantes serán susceptibles de ser comprimidos y así reducir información del mensaje cifrado con respecto al inicial para evitar posibles criptoanálisis. La segunda exposición de la teoria de Shannon, matematica discreta , nos va a permitir en primer lugar aportar procedimientos para realizar tareas de la forma más eficiente posible( reducción de la complejidad algorítmica) y además , lo que es más importante a través del desarrollo de la aritmética modular establecer métodos para evitar obtener claves privadas a partir de claves públicas. Estas claves están relacionadas matemáticamente, la fortaleza del sistema depende de la imposibilidad computacional de obtener una a partir de la otra.
2.2.1 Teoría de la información.Entropía.
En primer lugar definimos como cantidad de información de un mensaje como una función de la probabilidad. Parece evidente que si un suceso A es altamente improbable la información que nos aportaría en caso de darse sería mucho mas alta que la de otro suceso que sea mucho más probable. En el caso límite, en el caso de que una determinada varible aleatoría pudiera tomar un único valor ( un dado con seis caras con todo unos) la información que nos aportaría es suceso "Sacar 1" sería nula, ya que la conociamos de antemano.Por tanto la información de un suceso es una función de su imprevisibilidad. Existe una formulación matemática que nos va a plasmar esta situación. Es la siguiente:Sea una variable aleatoria V , Xi el suceso í-esimo de dicha variable , P(Xi) la probabilidad asociada a dicho suceso y n el número de sucesos posibles, definimos cantidad de información del suceso i como:Observese que si la probabilidad de un estado de la variable aleatoria fuera 1 ( máxima ) ,la cantidad de información que nos aporta sería igual 0 , mientras que si su probabilidad se acercara a 0 , tendería a +infinito - esto es lógico y nos demuestra que el modelo matemático de la cantidad de información representa la realidad, un suceso que no puede ocurrir nos aportaría una cantidad de información infinita si llegará a ocurrir.
En segundo lugar otra de las magnitudes que nos va a definir la teoría de la información va a ser la entropía. Cuando hablamos de entropia de una variable aleatoria nos referimos al nivel de imprevisibilidad , fruto del desorden ,de dicha variable aleatoria.Se define matemáticamente hablando como una suma ponderada de las probabilidades de todos los estados de dicha información por el nivel de información de dichos estados. Esto es:
Parece fácil deducir a partir de la fórmula que la entropia mínima de una variable aleatoria V de n estados va a ser 0 ( caso en el que la cantidad de información de los n estados sea nula y por tanto nada desordenada ), en este caso necesitaremos 0 bits para codificar cada uno de los posibles estados de la variable aleatoria ya que sabemos de antemano que valor va a tomar, y será máxima ( máximo desorden , imprevisivilidad máxima), cuando disponemos de una variable aleatoria de n estados donde todos los estados son equiprobables, en este caso el número medio de bits empleados para codificar los estados de la variable aleatoria sería log2(n).
La magnitud en la que se encuentra expresada la entropía son bits de información, el numero medio de bits que debemos emplear para codificar cada uno de los estados de la variables. Así pues si tenemos el caso de una variable aleatoria "tirar moneda" obtenemos que dispone de entropía 1 bit, es decir empleamos 1 bit para codificar los des estados de V ( 0 para sacar cara, 1 para sacar cruz). 1 bit es la cantidad mínima de información y representa la cantidad de información asociada al suceso más simple, aquel que consta unicamente de dos posibilidades equiprobables.
La entropía y la cantidad de información son dos magnitudes que nos van a permiitr definir una tercera magnitud denominada redundancia que si que va a tener una relación directa con la criptografía. Todos alguna vez hemos leído mensajes en los que falta información (algun caracter) y hemos podido reconstruir el mensaje de la forma correcta sin conocer de forma directa el símbolo que faltaba para completar el mensaje Esto es debido a que los lenguajes naturales son en general redundantes , es decir , la información que representan esta duplicada. Así pues esta redundancia será susceptible de ser medida de la forma correcta . Para definir la redundancia nos hacen falta dos conceptos. Son los siguientes:Índice del lenguaje--> Definimos el índice del lenguaje para mensajes de longitud k como:Así pues la redundancia se define como:
siendo Hk(m) la entropia de todos los posibles mensajes de longitud k. Estamos pues midiendo cual es el número de bits de información que debemos emplear por unidad de caracter para bloques de m caracteres.
Indice absoluto-->Es el máximo número de bits de información que pueden ser codificados en cada carácter , asumiendo que todas las combinaciones de caracteres son igualmente probables
La principal aplicación de esta determinación del nivel de redundancia de un determinado mensaje va a ser claramente obtener que mensajes son redundantes y por tanto para aquellos mensajes que sean redundantes intentar diluir la redundancia del mensaje evitando e intentando así cambiar el significado intrinseco de la información que se encuentra en ese mensaje.Fundamentalmente existen dos métodos fundamentales de ocultación de redundancia : son la difusión y la confusión.Se presentan a continuación:
-Difusión: El propósito de la difusión de la información es distribuir las propiedades estadísticas de los mensajes en claro, sobre todo el texto cifrado.Esto se puede lograr fundamentalmente de dos formas:Ambas técnicas, la difusión y la confusión, por separado, proporcionan fortaleza a los criptosistemas, sin embargo utilizadas conjuntamente pueden dar lugar a sistemas muy difíciles de atacar. El ejemplo más característico de combinación de estas técnicas es el DES (Data Encryption Standard). En este, las permutaciones (P-boxes) proporcion an difusión, mientras las sustituciones (S-boxes) proveen la necesaria confusión.1. Haciendo que se altere la posición de los caracteres mediante cifrados por transposición.-Confusión: El propósito de la confusión es establecer una relación lo más compleja posible entre la clave y el texto cifrado. De este modo, un criptoanalista no podrá deducir información acerca de la clave mediante un estudio del texto cifrado. Esta propiedad puede conseguirse por ejemplo mediante la aplicación de sustituciones.
2. Haciendo que cada carácter del texto cifrado dependa de tantos caracteres del mensaje como sea posible.Pata acabar con este bloque acerca de la teoría de la información , definiremos matemáticamente lo que resulta ser la entropía condicionada. Ella nos llevará a obtener una magnitud denominada cantidad de información que nos va a permitir determinar cual es el nivel de información que en un determinado criptosistema va a tener los mensajes cifrados con respecto a los mensajes original. Tambien este estudio nos permitirá definir lo que se conoce como la distancia de unicidad que nos va a indicar cual es la cantidad mínima de mensaje cifrado que nos hace falta para obtener una de las llaves de un criptosistema.
Así pues, supongamos que tenemos una variable aleatoria bidimensional (X,Y). Recordemos las distribuciones de probabilidad más usuales que podemos definir sobre esa variable, teniendo n posibles casos para X y m para Y:
Distribución conjunta de probabilidad
Distribuciones marginales de X y de Y
Distribuciones condicionales de X sobre Y y viceversa:
Así pues dadas estas definiciones previas , la entropía condicionada de X sobre Y se define como una suma ponderada de cada una de las probabilidades conjuntas por la cantidad de información que nos da un suceso Xi condicionado a otro suceso Yj
Por ultimo se cumple una Ley de probabilidad total , que recibe el nombre de la Ley de Entropías totales:
Se conoce como cantidad de información de una variable X sobre una variable Y al resultado de la expresión:
Esto quiere decir que la cantidad de información que nos aporta el hecho de conocer X al medir la incertidumbre sobre Y es igual a la disminución de entropía que este conociemiento conlleva. Así pues dada esta magnitud denominaremos a un criptosistema, seguro de Shannon como aquel en el que la cantidad de información que nos reporta conocer el mensaje cifrado C, sobre el mensaje original es nula es decir, aquel criptosistema que verifique:
Por último, otra de las aplicaciones del estudio del nivel de desorden para dos variables aleatorias que evoluacionan conjuntamente es lo que se denomina distancia de unicidad. La distancia de unicidad de un criptosistema se conoce como la longitud mínima del mensaje cifrado que aproxima H(K/C) a 0 es decir, la cantidad de texto cifrado que necesitamos para poder descubrir la clave. Los criptosistemas seguros de Shannon tienen distancia de unicidad infinita. Nuestro objetivo pues, a la hora de diseñar un criptosistema lo más seguro posible, es que la distancia de unicidad sea lo más grande posible.
En esta sección , vamos a estudiar en primer lugar , el desarrollo matemático de la aritmética modular , esta nos va a definir una serie de subconjuntos de números naturales que van a cumplir ciertas propiedades, sobre los cuales se definen toda una serie de magnitudes y criterios, que van a constituir los pilares teóricos , sobre los cuales se apoyan los algoritmos de cifrado actuales.Posteriormente estudiaremos algunas propiedades de los números primos, (test de primalidad, generación de números primos, primos fuertes...) y por último presentaremos algunas implementaciones que nos permitan reducir el coste computacional de algunas operaciones, que por su naturaleza , son frecuentemente utilizadas en los algoritmos de cifrado asimétricos.
Aritmética modular. La aritmética modular es la parte del desarrollo matemático , que estudia subconjuntos de n elementos ( {0,1,2.....,n-1}) de los números naturales, restringidos por ciertas condiciones.Este subconjunto recibe el nombre del subconjunto de los residuos ( a partir de ahora CR) Lo que va a caracterizar al CR va a ser el número n que recibe el nombre de módulo. Así pues , entre los números enteros que se encuentran fuera del rango 0...n-1, va a existir una relación de equivalencia con respecto a los elementos del CR. Esta relación recibe el nombre de congruencia y se define de la siguiente forma:
Sean a , b y n elementos pertenecientes a los números enteros , diremos que a es congruente con b en módulo n y lo denotaremos por (a triple guíón b) , si cumplen la siguiente relación de igualdad:Así pues , si tenemos que n=12 , el CR estará formado por los elementos {0,1,2,3,4,5,6,7,8,9,10,11}. Si queremos expresar la relación de congruencia del número 513 con alguno de estos elementos, deberemos expresar en primer lugar dicho número como un número que se encuentre entre 0 y n-1. Esto se realiza con la operación módulo 12. Así pues, 513 módulo 12 nos devuelve 9. Esto nos indicará que 9 y 513 son congruentes en modulo 12 ya que 513=9+12*42. Observerse que si a pertenece al CR , su elemento congruente será el mismo . Si obtenemos por ejemplo a=2, realizamos la operación mod 12 , obtenemos b=2 , por tanto todo número perteneciente al CR es congruente con sí mismo.
De entre todas las operaciones que se pueden definir sobre el CR no interesa particularmente la inversa. La inversa de un determinado número a expresado en aritmética modular módulo n , se define como un número b que cumple a*b es congruente con 1 en módulo n. Parece claro que no todos los números pertenecientes al CR van a tener inversa. La aritmética modular nos indica que un número tiene inversa si es primo entre sí con el módulo n, es decir , si cumple la siguiente expresión condicional:
Así pues , una vez conocido el significado de la operación inversa , definimos conjunto reducido de los residuos módulo n ( a partir de ahora CRR ) como al conjunto de elementos del CR que son primos entre sí con el módulo n , es decir con los elementos del CR que admiten inversa. Como en cualquier tipo de conjunto será susceptible calcular su cardinalidad. Existe una expresión que nos permite calcular el número de elementos del CRR sin necesidad de tener que recorrer el rango desde 0 hasta n-1 observando los elementos de CR que tienen inversa. Esta expresión se conoce con la función de Euler , que nos indica la cardinalidad del CRR a partir de la descomposición de n en números primos. Esta expresión es la siguiente:
Así pues si n fuera 13, el CRR sería {1,2,3,4,5,6,7,8,9,10,11,12}.Si obtenemos la cardinalidad del CRR a través de la expresión de la fórmula de Euler obtenemos que euler(13)=13^(0)*(13-1)=12, que efectivamente es el número de elementos de CR que tienen inversa módulo 13. Si por ejemplo , obtenemos el 4 , la inversa del 4 en módulo 13 sería 10 , ya que 40 mod 13 es 1.
De la expresión de Euler se derivan las siguientes propiedades:1.Si mcd(a,n)=1Es decir , si a tiene inversa módulo n, a^(euler(n)) módulo n es congruente con 1.
2.Basándonos en la propiedad anterior podemos definir el cálculo de inversas través de las siguientes transformaciones:
Una vez adquiridas unas nociones básicas estudiaremos propiedades de los números primos y veremos que realmente son básicos para el desarrollo de la criptografía. Esta parte estará intimamente relacionada con el desarrollo de la aritmética modular. La ventaja de los números primos, es que en la práctica no existe una forma directa ni fórmula algebraica que nos permita desfactorizar un número n en sus factores primos.Además si un número n ( entero muy grande ) es el producto de dos primos que tienen ciertas propiedades , es computacionalmente imposible descomponer n en el producto de p y q. Estos números reciben el nombre de primos fuertes y verifican las siguientes condiciones:2.3 Algoritmos de cifrado elemental.1. El máximo común divisor entre p-1 y q-1 debe ser un número pequeño.Así pues parece que en cualquier procedimiento práctico en el que se desee, obtener p y q , va a existir una primera fase de generación de números primos aleatorios y una segunda fase de comprobación de que realmente se trata de números primos. La primera parte va a estar condicionada por la generación de números aleatorios. Esta generación de números aleatorios va a resultar bastante complicada, no existen secuencias lo suficientemente aleatorias. Por tanto se trata de secuencias pseudoaleatorias. La segunda parte se centra en los llamados test de primalidad. Se tratan de una serie de pasos algoritmicos que no nos van a dar una certeza absoluta de la primalidad de una determinado número, pero que siendo repetidos varias veces nos dan unos indices de certeza lo suficientemente válidos. Uno de los test de primalidad más extendidos es el llamado test de Lehmann , que resulta fácil de implementar y que nos da unos índices probabilísticos de primalidad bastante aceptables. Se constituye de los siguientes pasos:
2. p-1 y q-1 deben tener algún factor primo grande ( p',q').
2. p'-1 y q'-1 tienen factores primos grandes .
3. p'+1, y q'+1 tienen factores primos grandes.1. Escoger un número aleatorio a < p.Repetiendo este proceso n veces , la probabilidad de que p supere el test y sea compuesto será de 1 contra 2^n En la práctica para generar un número pseudoprimo se emplea una secuencia de pasos en los que intervienen además de la generación de números pseudoaleatorios , test de primalidad. Los pasos son los siguientes:
2. Calcular b=a^((p-1)/2) expresado en módulo p.
3. Si b<>1 (mod p) y (b<>-1) mod p , p no es primo.
4. Si b=1 (mod p) o b=-1 (mod p) , la probabilidad de que p sea primo es igual o superior al 50%.1. Generar un número aleatorio p de n bits.Por ultimo , para finalizar presentaremos dos implementaciones,una para calcular el mcd de un deteminado número y la otra para calcular la exponenciación de un determinado número de la forma más rápida y eficiente. La primera se conoce como el algoritmo de Euclides, se fundamenta en las propiedades de la división y de la resta , de la relación ente ambas. Se define de la siguiente forma:
2. Poner a 1 el bit más y menos significativo.(Garantizamos que sea impar y que tenga n bits)
3. Intentar dividir p por una tabla de primos precacalculados (usualmente aquellos que sean menores que 2000). Esto elimina gran cantidad de números no primos de una forma muy rápida.
4.Ejecutar un test de primalidad como mínimo dos veces.
5.Si el test falla, incrementar p en dos unidades y volver al paso 3.Sean a y b dos números enteros de los que queremos caldular su mcd. El algoritmo de Euclides se fundamenta en las siguientes propiedades:La segunda de las implementaciones , recibe nombre del método de la exponenciación rápida , y nos permite calcular la operación a^b , sin tener que multiplicar a*a b veces , lo que resultaría un método de elevado coste computacional y operacional. Para ello partiremos de la notación binaria de b:
Si ahora llamamos c a (a mod b) , pòdemos aplicar de nuevo la propiedad anterior y tenemos
La implementación del algoritmo sería la siguiente:
function mcd (a:integer,b:integer):integer;
var
g0,g1:integer;
begin
g0:=a;
g1:=b;
while (g0<>0) do begin
x:=g0 mod g1;
g0:=g1;
g1:=x;
end;
mcd:=g1;
end;
Si expresamos la potencia que vamos a calcular en función de dicha representación obtenemos:
recordemos que los bi solo pueden valer 0 o 1 , por tanto para calcular a^b solo hemos de multiplicar los a^(2i) correspondientes a los dígitos binarios de b que valgan 1 ( En el algoritmo se plasma con la instrucción if z mod 2 =1 then begin resul=resul*x; ). Obsérvese , además que a^(2^i)=(a^(2^(i-1)))^2, por lo que partiendo de a, podemos calcular el siguiente valor de esta serie elevando al cuadrado la anterior ( en la implementación x=x*x;). Así pues el algoritmo de exponenciación rápida queda como sigue a continuación:
function exprap ( a:integer, b:integer):integer;
var
z.x:integer;
begin
z:=b;
x:=a;
resul:=1;
while (z>0) begin
if z mod 2 = 1 then
resul:=resul*x;
x:=x*x;
z:=z div 2;
end;
exprap:=resul;
end;
En primer lugar definir que dentro de este grupo de algoritmos de cifrado se encuentran aquellos algoritmos que se habían utilizado, históricamente , antes de la aparición de sistemas computacionales. Decir que son importantes porque la combinación de múltiples de ellos pueden dar lugar a métodos criptográficos altamente eficientes y difíciles de criptoanalizar ( caso del DES que es una combinación de métodos de difusión y confusión). Indicar que por sí solos en la actualidad no disponen de credibilidad ya que se pueden criptoanalizar con facilidad por medio de métodos estadísticos y de la teoría de la información . Así pues clasificaremos los métodos criptográficos elementales en :
Algoritmos de sustitución alfabética: En este tipo de métodos los elementos del texto en claro se sustituyen por otros símbolos que pertenecen a otro alfabeto. Existen dos fundamentalmente:2.4.Criptosistema de llave privada: Redes de feistel.Algoritmo DES.-Generalización del algortimo de César. La generalización del algoritmo de César se basa en primer lugar en el método simple de César. Este consiste en sustituir los simbolos del mensaje inicial por simbolos de otro alfabeto.Este alfabeto es una función del alfabeto en el que esta escrito el mensaje inicial. Esta función consiste en desplazar los simbolos del alfabeto i posiciones a la derecha. Así pues al símbolo A le corresponde el símbolo del alfabeto resultante de desplazar A i posiciones a la derecha, al B el símbolo del alfabeto resultante de desplazar B i posiciones a la derecha y así sucesivamente. Podemos generalizar el cálculo del simbolo cifrado a partir del símbolo del mensaje inicial mediante una expresión. Suponemos que n es el número de símbolos del alfabeto inicial , i el desplazamiento y M la posición del símbolo del mensaje inicial en el alfabeto , asi pues calcularemos la posición del simbolo cifrado en el alfabeto de sustitución con la expresiónAlgoritmos de cifrado por transposición de símbolos. Se agrupan todos los algoritmos y transformaciones sobre el mensaje inicial en los que se atiende a la posición y no al contenido del mensaje en claro . Nos encontramos principalemente con dos tipos:C= (M+i) mod n
Así pues si consideramos el alfabeto Ascii que dispone con n=256, con un desplazamiento de 5 , y consideramos que el mensaje inicial es "H", el resultado sería posición del símbolo cifrado=(posición("H")+3) mod 256 , es decir, c= 93, que se corresponde con el símbolo "M", es decir el símbolo del alfabeto inicial resultante de desplazar 5 posiciones a la derecha el símbolo del mensaje inicial. Indicar que el algoritmo simple de Cesar tenia el valor constante i=3. Indicar tambien que el secreto del algoritmo no se basa en la clave sino en el propio algoritmo. Esto rompe claramente con el sentido de criptosistema, las transformaciones de cifrado y de descifrado son públicas, la clave privada
-Algoritmo de cifrado vigenere. Se trata de un algoritmo de sustitución polialfabética, en este caso el cifrado de un determinado símbolo depende no solo de la posición que ocupa en un determinado alfabeto como en el caso anterior , sino también de la posición que ocupe dentro del texto nativo que se procederá a cifrar.La clave no estará formada por un único desplazamiento, sino por d desplazamientos { i0,i1,i2,i3...id-1}.Así pues para cifrar un texto vigenere consitirá en agrupar el mensaje inicial en bloques de d símbolos , aplicandole a cada uno de los símbolos de cada uno de los bloques desde j=0 hasta j=d-1 la siguiente expresión:
C= (Mj +ij) mod n
donde Mj es la posición que ocupa el símbolo j-ésimo del bloque de d caracteres en el alfabeto j-ésimo.Indicar que el algoritmo anterior constituye la base de éste. El algoritmo de Vigenere no es más que una aplicación reiterada del algoritmo de césar con alfabetos y claves variables.
-Algoritmos de tranposición para bloques de n caracteres. Este algoritmo se fundamenta , al igual que todos los métodos de transposición en cambiar el orden de los mensajes del texto inicial, siendo el fruto de esta variación del orden el mensaje cifrado.Así pues será necesario la longitud de los bloques así como una permutación de n elementos. Esta permutación va a indicar de que forma se va a variar el orden de los símbolos del mensaje inicial.De tal forma que el contenido de la posición i-ésima indica , que en el mensaje cifrado la posición i-esima debe ir en la posición que indica el contenido de la permutación en dicha posición. Así pues si por ejemplo nos encontramos con el mensaje "Hola" y con la permutación {1,3,2,4} el mensaje cifrado sería "Hloa". Para descifrar algo cifrado con este método , consisitirá en aplicar la permutación de n elementos en orden inverso.
-Algoritmos de transposición por columnas . En este se dispone el texto por filas de una determinada longitud, rellenándose el final de la última fila con un
carácter cualquiera.( por ejemplo el espacio) El texto cifrado se obtiene leyendo la matriz resultante por columnas. La clave de descifrado es simplemente el número de columnas utilizado.
A continuación se presenta un ejemplo para n_columnas=3. El texto en claro es "TRABAJO DE SPI" , así pues se tratará de agrupar el texto por filas de tres en tres caracteres de la siguiente forma
T R A B A J O D E S P I Posteriormente concatenando las columnas obtendremos el mensaje cifrado "TBOEPRA I AJDS "
Esta sección trata de estudiar conceptos básicos del algoritmo de cifrado simétrico más utilizado en la actualidad. En primer lugar, se explicarán unas consideraciones previas , como por quien fue inventado , porque goza de tanto uso es decir, donde radica su versatilidad y porque es tan díficil de criptoanalizar , además de unas cuestiones previas que nos van a permitir definir las transformaciones de cifrado. Posteriormente , hablaremos de las redes de Feistel, que son utilizados en gran parte de los algoritmos de cifrado simétricos, así como de cuantas claves dispone, como se obtienen , y en que consisten las transformaciones de cifrado y de descifrado. Por último, se describirán métodos de encadenamiento de bloques que nos permitan cifrar mensajes en claro de más o menos longitud que la unidad mínima de cifrado.
El algoritmo de cifrado simétrico DES (Data Encription Standard)
es uno de los algoritmos de cifrado más populares y de uso más
extendido en el mundo de la criptografía, ya que ha sido reconocido
como el algoritmo standard por las agencias americanas y dispone de una
gran fortaleza. El origen del DES se debe a una petición realizada
en 1973 por el NBS (National Bureau of Standards) a distintos fabricantes
para someter criptosistemas que pudieran servir como base a un estándar
de cifrado de textos reservados no clasificados.
Se basa en el algoritmo desarrollado por IBM, conocido con el sobrenombre
de LUCIFER, que utilizaba claves de 128 bits de longitud y que dotaba de
una gran seguridad. Así pues del intento de creación de un
standard nació el DES. Tras ser analizado por expertos de la NSA
(National Security Agency) el algoritmo LUCIFER, redujeron las claves de
128 bits que usaba este , a 56 bits naciendo así el nuevo
criptosistema de llave privada.
Como en la mayoría de los criptosistemas de llave privada, también
en el DES, no se da la existencia de una única clave para
cifrar, sino que como criptosistema , disponen de varias claves para realizar
las transformaciones de cifrado ( en el caso del DES son 16 claves K1,K2,...K16.)
Por lo tanto, el mensaje M en claro tendrá que
pasar por sucesivas transformaciones (iteraciones) , en las que se utilizen
de la forma correcta cada una de las claves. Este encadenamiento de transformaciones
de cifrado se conoce como Red de Feistel: Como la mayoría de estos
algoritmos son de cifrado por bloques , en una iteración inicial
, se divide la longitud del bloque minimo de cifrado ( también conocido
como n bits ), en dos partes que se suelen nombrar L y R, de tal forma
que L almacena o consta de los n/2 bits de menor peso y R de los n/2 bits
de menor peso.Así pues la red de feistel , se define como un cifrado
iterativo en el que la salida de cada una de las rondas o iteraciones se
usa como entrada para la siguiente según la siguiente relación:
A continuación se presenta , en forma de gráfico , la estructura de la red de feistel para el algoritmo DES. Como se puede observar, dispone de 16 rondas ( 16 claves) , en lo que los resultados de una fase son determinantes para la constitución de la siguiente fase:
Pot último indicar que debido a que la longitud de las claves DES es de únicamente 56 bits , se demostró que es posible realizar una ataque por fuerza bruta al sistema DES , y obtener la clave en un tiempo razonable. Para ello se emplea, lo que es conocido como DES3 que consiste en una combinación de cifrados y descifrados con 3 claves DES de la siquiente forma :
Esto se puede realizar gracias a que el conjunto de claves del criptosistema
DES no cumple con una estructura de grupo ,es decir, que dadas dos claves
no existe una clave equivalente a otras claves: Esto nos permite aumentar
la longitud de las claves del DES, lo que hace disminuir las posibilidades
de que un ataque por fuerza bruta tenga éxito.
Una vez descrito , el DES y sus posibles mejoras , describirermos tres
modos de encadenamiento de bloques , algunos de ellos muy importantes,
ya que nos permiten cambiar la filosofía de cifrado del algortmo
DES ( y para cualquier algoritmo de cifrado simétrico también
) , desde el cifrado por bloques al cifrado de flujo.
El primero de los modos de encadenamiento recibe el nombre de ECB, que
se trata del modo más sencillo e intuitivo para cifrar mensajes
y datos de texto en claro con una longitud mayor que la unidad mínima
de cifrado. Llamaremos Mi a cada uno de los bloques de n bits en los que
se puede dividir el texto en claro. Así pues , consitirá
en dividir el texto en claro en bloques de n bits ( Mi )
aplicando las transformaciones de cifrado correspondientes a cada uno
de estos bloques cifrados, obteniendo así el mensaje cifrado ( C
) como la concatenación del resultado de cada una de estas transformaciones
(Ci). Indicar que cada uno de los bloques de texto en claro se codifican
con la misma clave. Si hablamos en el caso del DES, cifrar el texto en
claro con una clave de 56 bits K según el modo ECB,
consisitiría en dividir el texto en bloques de 64 bits, aplicando
a cada uno de los bloques de texto en claro con la clave K , las
transfomaciones de cifrado que se describieron con anterioridad.
Este método tiene ventajas e inconvenientes. En cuanto a las
ventajas indicar que , este método funciona muy bien en canales
en los que puede ser probable que se de un fallo en la codificación
de algunos de los bloques, de tal forma que si se consuma el error no deberemos
cifrar todo el texto otra vez, sino que solamente se tratará de
cifrar el bloque de mensaje inicial en el que se ha producido el
error de cifrado. Por otra parte , también presenta varios inconvenientes
, entre los que se encuentran el hecho de que de que pueden eliminarse
porciones del texto cifrado sin que se note, esto es, puede ocurrir que
si se conocen las características y posición de cierta información
en el mensaje inicial , ésta puede eliminarse del texto cifrado
sin impedir un correcto descifrado del mismo.
El segundo de los modos de encadenamiento recibe el nombre de CBC ,
y en el que el cifrado de un bloque del mensaje ( Mi ) depende no
sólo de Mi, sino del cifrado de los (i-1) bloques anteriores.Para
ello el CBC, divide el trabajo a realizar en fases o iteraciones. En cada
una de estas fases , realiza una operación XOR del sector o bloque
que queremos cifrar ( Mi )
con el resultado de las transformaciones de cifrado con la clave k
( Ek ), de la fase anterior. Existe por tanto una retroalimentación
de datos en cada una de las fases , siendo necesario para una determinada
fase , la ejecución de las fases anteriores. Como en la primera
fase ( cifrado de M1 ), no existen resultados de la ejecución de
la fase anterior ,se utiliza un vector de incialización o un registro
que alamcene un valor inicial de n bits ( longitud de los bloques ), posteriormente
se pasará a discutir cual debe ser el valor de este registro de
inicialización. El funcionamiento del CBC , se decribe con un ejemplo
a continuación, en el que los parámetros referidos al criptosistema
empleado ( n, k ...), corresponderán al DES. Suponemos que disponemos
de un mensaje inicial de 192 bits y deseamos cifrarlo con una clave k .
Así pues el CBC ,deberá dividir el mensaje en bloques
de longitud de 64 bits. En este caso obtendremos 3 bloques (P1, P2, P3)
de texto en claro, que serán objeto de ser cifrados. La concatenación
de los 3 bloques cifrados (C1,C2,C3), darán como resultado C , el
mensaje cifrado. A continuación se presenta un dibujo que ilustra
el modo de encadenamiento CBC para este ejemplo concreto , se puede observar
que para obtener C2, por ejemplo ,se realiza la operación , C2=Ek(
Ek(VI XOR P1) XOR P2), cosa que representa la cualidad de recursividad-retroalimentación
de este modo de encadenamiento de bloques, ya que sin Ek(VI XOR P1) calculado
en la fase 1 , no es posible obtener C2 para la fase 2.
En cuanto al descifrado , indicar que las propiedades de XOR , nos permiten
utilizar la misma filosofía para el cifrado. En el ejemplo , para
descifrar C, lo dividiríamos en 3 partes (C1, C2, C3),
y sutituiriamos en el gráfico las transformaciones de cifrado
del criptosistema correspondiente ( en este caso DES Ek) por
las transformaciones de descifrado Dk. También ubicariamos C1, C2,C3
en la posición en la que lo hacen P1, P2,P3 obteniendo en cada una
de las fases , los bloques de texto en claro P1,P2,P3, cuya concatenación
constituiría el mensaje original.
Al igual que el método anterior presenta ventajas e incovenientes.
En cuanto a sus ventajas nos encontramos con que el uso de
esta filosofía de retroalimentación, hace imposible sustituir
un bloque de texto cifrado , como una posible medida de criptoanálisis.
Una posible desventaja , sería ( si el contenido de VI es fijo)
es que mensajes iguales se codificarán de la misma forma , y lo
que es más grave , mensajes iguales hasta ciertos puntos , se codificarían
de las misma forma hasta alcanzar dichos puntos. Una forma de solucionar
este problema consiste en alamacenar en VI un dato de n bits aleatorio.
Así pues , lograremos que comparando dos mensajes cifrados que guarden
ciertos parecidos ( misma cabecera por ejemplo) , sea imposible obtener
información relacionada con el criptosistema.
El último de los modos de operación para algoritmos simétricos es el que se conoce bajo el sobrenombre CFB. Este modo de operación , nos permite obtener unidades de mensaje cifrado inferiores a n ( longitud de un bloque ) .Supongamos que p es la longitud en bits de la nueva unidad de cifrado.(p debe ser múltiplo de n y por tanto < ) En este modo se mantiene un registro de n bits donde se van a ir almacenando por la derecha el resultado de operaciones de cifrado para la iteración siguiente Se cifran bloques sucesivos de n bits de dicho registro. El byte más significativo del resultado se combina (XOR) con el siguiente bloque de p bits del mensaje inicial para dar lugar al bloque de cifradode p bits a transmitir. Además este último byte se reintroduce en el registro provocando un desplazamiento de su contenido.Al igual que en el CBC el valor inicial del registro debe ser aleatorio por la misma razón. El siguiente gráfico intenta aclarar cual es el funcionamiento de este modo de operación. En el grafico n es p y p es n. R es el registro de desplazamiento, Mi el bloque de p bits siguiente a criptar del mensaje en claro, Ci el bloque de p bits cifrado que será pasado a la fuente que lo solicite. En el gráfico , se puede observar el sentido de retroalimentación del que dispone este modo de operación . Se observa o se puede observar claramente , que para obtener Ci , nos hace falta los p bits más significativos del resultado de cifrar con K el contenido de R en la fase anterior.
Con respecto al CFB indicar que es muy útil cuando necesitemos
el resultado o fracciones del mensaje cifrado, al mismo tiempo en el que
se están cifrando. Este método es muy utilizado por ejemplo
para cifrar carácteres según un stream o flujo de datos,de
tal forma que a la misma vez que escrbamos el texto original , obtengamos
de forma simultánea el mensaje cifrado. Por último , indicar
que tanto el CFB como el CBC , nos permiten cambiar la filosofía
de los algoritmos de cifrado , de algoritmos de cifrado por bloques a algoritmos
de cifrado por flujo o stream.
2.5.Criptosistema de llave pública.Algoritmo RSA.
El algoritmo de cifrado RSA es sin lugar a dudas el criptosistema de
clave pública más extendido. Su nombre proviene de sus creadores
Rivest, Shamir y Adleman, quienes lo desarrollaron en el
MIT en 1978. Como cualquier criptosistema de clave pública,
dispone de una clave pública P y de una clave privada K, existiendo
una relación entre ambas , de tal forma que ,aunque sea conocida
esta relación , no podamos obtener K conociendo P. En
el RSA esta relación se fundamenta en la aritmética modular
, y la imposibilidad de obtener K a partir de P, en la
imposibilidad computacional de descomponer un número no primo con
ciertas caracteristicas , en sus factores primos. El cifrado y descifrado
de información , se basa en la realización de una operación
de exponenciación , que va suponer un elevado coste
computacional, pero que va a ser necesario utilizar , para que se cumpla
la propiedad que debe cumplir cualquier criptosistema m=Dk( Ep(m)
).
Como cada una de las claves está formada a su vez por varios
parámetros, y cada uno de los parámetros de cada una de las
claves pueden ser públicos o privados, además de otros parámetros.
a continuación se pasa a exponer cualidades de los parámetros
que forman las claves así como parámetros externos que van
a dar sentido al algoritmo RSA.
En primer lugar, como parámetros externos a las claves
, nos encontramos los números primos p y q . Estos dos números
, son dos números especiales que deben cumplir ciertas propiedades,
entre las que se encuentran ser primos y además ser fuertes.Ambos
números son privados , y a la hora se ser generados y utilizados
deben ser eliminados.
En lo que se refiere a los parámetros que se requieren en las
claves, nos encontramos el número e , llamado exponente público,
el número d, llamado exponente privado , y el número n ,
conocido como módulo. Tanto e como n, son públicos
, sin embargo , d es privado. Así pues a partir de ahora llamaremos
al par (e,n) clave pública y al par (d,n) clave privada.El módulo
n es una función de p y q , n=f(p,q)=p*q, igual al producto de los
número p y q. El secreto del algoritmo RSA se fundamenta en el hecho
de la relación , que exite entre e y d . e y d cumplen la siguiente
relación :
Así pues , tendremos que realizar una operación de exponenciación, para obentener M a partir de C y de d. Ambas operaciones , y sus equivalencias , muestran que , la relación entre e y d, hace posible que todo lo cifrado por la clave pública , pueda ser cifrado por la clave privada d.Indicar , que tanto las operaciones de cifrado como las de descifrado, implican una elevada actividad computacional, esta es la razón por la que en los algoritmos de cifrado asimétricos el cifrado y descifrado se realice de forma muy poco eficiente. Por , último indicar que cuando , se habla de las claves de RSA, por el número de bits ( "Una clave RSA de n bits"), nos estamos refiriendo , al número de bits para codificar en notación , el módulo n ( entero ). Longitudes de claves RSA, de 512 bits se consideran con un grado débil de seguridad, 768 bits grado medio de seguridad, y claves RSA de 1024 bits se consideran sólidas, altamente díficil de criptoanalizar.
2.6. Aplicaciones del los critposistemas.
Una vez estudiadas, las características de algunos de los criptosistemas
de clave pública y privada, más extendidos, procederemos
a estudiar, de que forma se combinan para ser útiles en la práctica.
Fundamentalmente, estudiaremos de que forma se combinan, para asegurar
la confidencialidad de la información (encriptación ) y
para asegurar integridad y autenticidad ( concepto de firma electrónica
y estándard X509).
Para ello , y para simplificar , partimos de un ejemplo que nos va
a ser de apoyo para la exposición correcta de los conceptos que
se desean exponer. Supongamos, que un individuo A y un individuo B mantienen
transferencias de información en un determinado canal de comunicación
según el siguiente gráfico:
Donde las K`s son las claves privadas y las P`s las claves públicas de sendos individuos. Así pues , si ambos desean confidencialidad , es decir, que ningún individuo ajeno a A y a B pueda leer y acceder a dicha información, deberán realizar la siguiente tarea con un mensaje original M:
S=Dkb(Epb(s)) y M=Ds(C)
Así pues, como se observa en dichas transformaciones , lo único
que se cifra y se descifra con el algoritmo asimétrico es la clave
de sesión S. Como dicha clave es una clave privada de un algoritmo
simétrico, tendrá una longitud mucha más reducida
de lo que podría tener un mensaje original, por lo que , se reducen
en alto grado las operaciones computacionales sobre la información.
También se da el caso de que, si el emisor desea enviar un mismo
mensaje a varios receptores, este método nos permite reducir al
máximo la información enviada, y duplicar únicamente
lo que sea estrictamente necesario. Para enviar un mensaje a varios receptores
A, deberá mandar únicamente la clave de sesión cifrada
con cada una de las claves públicas de cada uno de los receptores.Si
lo que desea es guardarse el mensaje se incluirá a él mismo
dentro de los receptores.
2.6.1.Funciones Hash y Huellas digitales.
Si lo que deseamos es autenticidad, es decir, que realmente podamos asegurar que el mensaje fue mandado , por quien lo asegura haber mandado , se utiliza una técnica criptográfica que , consiste en aplicar las transformaciones de cifrado de la información con la clave privada del emisor ( esta información será pública ) y enviar esta información al receptor. El receptor deberá aplicar las transformaciones de descifrado con la clave pública del emisor. Si la información que obtenemos es correcta , indica que realmente el mensaje proviene de A. Así pues A realizaría C=Eka(m) y enviaría esta información a B. B para validar esta información, debería en primer lugar buscar la clave pública de A, y realizar m=Dpa(c). Si la información que obtiene es correcta, sabremos que el mensaje proviene de A, ya que solo el ha podido ser capaz de realizar esa operación , ya que es el único que dispone de su clave privada.
Al igual que ocurría a la hora de cifrar y descifrar un mensaje, aplicar sucesivas transformaciones con un algoritmo de clave pública supone un elevado coste, para ello existen los conceptos de firma electrónica y de funciones Hash o funciones de resumen.
Los algoritmos de resumen , son un serie de transformaciones matemáticas ( suma , resta , xor , xnor ...) que nos permiten , reducir una información determinada , bajo ciertos principios o pautas que los van a caracterizar y los van a hacer muy útiles para la criptografía. Principalmente estos principios son tres y se resumen en:
-La entrada de una función Hash es de un tamaño cualquiera. La salida es siempre del mismo tamaño.Algunas de las funciones de resumen más utilizados son el md5 ( message diggester nº5) el sha1 , y el sha2. El md5 , reduce la información hasta 128 bits, el sha1 a 160. Indicar que el mínimo razonable de la salida de una función Hash debe ser de 100 bits. En caso contrario, fallarían algunos de los pilares básicos , sobre los que se apoya el funcionamiento de las funciones de resumen.
-Dado un mensaje y su correspondiente resumen , cualquier cambio que se realice , por mínimo que sea, en el mensaje original , produce cambios importantes en el resumen de dicho mensaje.
-Dado el resumen de una determinada información, ha de ser altamente complicado , obtener una determinada información que obtenga el mismo resumen.Es decir, las funciones de resumen idealmente deberá ser inyectivas.
En el caso 2 si yo obtengo H(mi) con la clave pública de A y
coincide con el resumen del mensaje de llegada, puedo asegurar que el mensaje
proviene de A, por lo que ya obtendría información acerca
del mensaje.
El segundo problema que se nos plantea para autentificar un determinado
mensaje, es el como asegurar que la clave pública de A es
realmente de A y no de otro individuo. Bien existen dos posibles soluciones
:
- Métodos legales, un documento jurídico firmado por un notario que especifique realmente que Pa es la clave pública de A.También se podría ,en el caso de que A y B tuvieran algun tipo de relación ( proximidad fisica ) , organizar un encuentro físico para transferir ambas claves. Esto entraña el problema de como asegurar de que el encuentro se realiza con quien dice ser. Habría que recurrir entonces a documentos legales (DNI).2.6.2.Estándard X509.
-Métodos de Autoridades Cerificadoras. Las autoridades certificadoras, son entidades que disponen de un reconocimiento en la red , y que certifican , segun cual sea su politica de certificación, que una deteminada clave pública es de un determinado individuo.En la práctica el método de las autoridades certificadoras se lleva a cabo con el estándard X509 que se define en el siguiente apartado.
Este standard define toda una serie de objetos criptográficos.Fundamentalmente estudiaremos 3, el objeto X509 conocido como certificado, el objeto pkcs10 , conocido como Certificate Request (solicitud de certificado) y por último el objeto pkcs12.
El certificado es un objeto que está formado por una serie de campos , en los que se especifican una serie de datos acerca de quien posee dicho certificado. Estos campos son fundamentalmente los siguientes:
DN subject : Este es el campo donde se especifican los datos personales del poseedor del certificado. Esta formado por los siguientes subcampos:Como hemos visto en la sección anterior , la firma correspondiente a uno de los campos del certificado, la emite la CA, cuanto da validez a una solicitud de certificado. Esto principalmente, sirve para dar autenticidad a los datos que almacena el certificado. En el caso de que un individuo, modificara alguno de los datos del certificado, podriamos detectar rapidamente esa alteración de la integridad de los datos, comprobando la validez de la firma de la CA.-CM: Common name : Es el campo que almacena su nombre.Indicar con respecto al DN , que puede darse el caso de que algunos de los campos estén vacios.Tambien puede darse el caso que otros de sus subcampos sean opcionales. El standard X509 define que el nombre CM , no tiene porque ser el nombre completo del individuo, podría valer tambien su alias.Se trata de un campo importante , ya que nos va a permitir diferenciar entre dos certificados de distintas CA`s con un mismo número de serie.
-OU: Organization Unit. Es el nombre del departamento de gestión donde trabaja.
-C: Es el campo donde se especifican las siglas del pais de procedencia.
-L: Indica el pueblo (localidad) de donde procede.
-ST:.Indica la comunidad o estado de donde procede.
-Email:Su valor corresponde al Email del poseedor.DN issues: Esta formado por los mismos campos que el DN subject , a diferencia que el valor de todos sus campos se refieren a la Autoridad certificadora que se ha encargado de emitir el certificado.
Serial Number: Este campo especifica el número de serie del certificado. El valor de este campo lo emite la autoridad certificadora cuando valida el certificado, es una función del número de certificados expedidos antes de la solicitud de nuestro certificado. El número de serie, va a depender de la CA, de tal forma que dos certificados emitidos por una misma CA , no pueden tener el mismo número de serie. Este campo, es importante ya que nos va a permitir diferenciar nuestro certificado entre otros certificados emitidos por una misma CA.
Fecha de expedición: Día en el que la CA emite el certificado.
Fecha de caducidad: Día en el que el certificado deja de ser válido.
Clave pública: Campo que contiene la clave pública del poseedor del certificado.
Referencias a los algoritmos empleados: En este campo , se indica a que algoritmo de clave pública pertenece la clave pública, así como cual ha sido el algoritmo o funcion de resumen con el que se ha firmado.
Firma de la CA: El valor de este campo es generado por la CA cuando emite el certificado. La información a la cual se le aplica el resumen , suele ser una combinación de algunos de los campos anteriores.
Destacar, la importancia de la inclusión de la firma en la petición
de certificado. Esto nos permite probar en primer lugar , la validez de
k y p , y por otro lugar, asegurar que los datos que lleguen a la CA, coincidan
con los que enviamos. De esta forma, la CA, comprobaría la validez
de la firma con P (que se había incluido en el objeto), y solo en
caso de ser válido procedería al proceso de certificación.
El proceso de certificación va a consistir en , analizar cada uno
de los campos del DN, y según cual sea la política de certificación
y las fuentes de las que dispone validará unos campos u otros. La
CA, al tratarse de una entidad gestora , dispondrá de unas fuentes,
en las que podrá observar si realmente los campos incluidos
en la petición de certificado son correctos o no lo son. En
función de cual sea el nivel de restricción del certificado
y el campo validado, la CA dispone de distintos niveles de certificación
CA1, CA2.....CAn, así pues por ejemplo si una CA tuviera
únicamente , CA1 y CA2, CA1 podría implicar una certificación
del campo Mail, y un acceso con restricciones a parte de la información
y CA2, una validación del CN y un acceso libre a toda la información.Así,
pues en la caracterización de los certificados, no va a influir
únicamente el DN y el número de serie, sino las restricciones
de acceso a la información y los campos validados por la CA.Existe
un documento legal llamado CPS (certificate practic statement ) que especifica
el nivel de certificación de cada uno de los tipos de certficado
emitidos por la CA.
Así pues parece bastante importante , que a la hora de pedir
un determinado certificado , el solicitante tenga presente cual es la política
de certificación de la CA.
Una vez que la CA, ha validado los campos correspondientes, se encargará
de enviar o publicar el certificado, del solicitante. Normalmente lo enviado
por la CA, se corresponde con la información necesaria para constitur
el certificado, además de la información anterior firmada
por la CA ( con la clave privada de la CA Kca), imprescindible para constituir
el valor del campo firma del certificado. La información enviada
por la CA se correspondería con lo siguiente:
Como hemos observado todo individuo , que desee certificar sus mensajes a través de canales de comunicación debe poseer un certificado validado por una determinada CA que acredita la asociación de una serie de datos abstractos ( clave pública etc...) a una determinada persona o entidad física. Esto genera el problema de que los datos asociados a una CA ( el DN subject y su clave pública ) también han de ser acreditados. Para solucionar existen dos alternativas fundamentales , en primer lugar que esta CA sea acreditada por otra CA, que disponga de un mayor reconocimiento, o que sea ella misma quien acredite sus propios datos. Esto da lugar , a un nuevo tipo de certificado , denominado CERTIFICADO AUTOFIRMADO, que es aquel certificado que cumple la particularidad de que la clave privada con la que se ha firmado en el campo CAsign , se corresponde con su homóloga pública, correspondiente al campo que almacena la clave pública del mismo certficado.Diremos que aquellas entidades que dispongan de certificados autofirmados son autoridades certificadoras raiz.
Bien, el proceso anterior , fue descrito suponiendo que es el solicitante quien genera el para de llaves K y P , pero que ocurre , si a la CA le interesa generar el par de llaves?. Para solucionar y facilitar esta tarea el standard X509 define unos objetos criptográficos denominados pkcs12, que encriptan una determinada información. La información a encriptar, será el objeto X509 del solicitante y su clave privada. Así pues el proceso de solicitud, consistirá , por parte del solicitante únicamente enviar el campoDN. La autoridad certificadora generará la clave privada y el certificado y lo incluirá , encriptado en el objeto pkcs12, enviandole esa información posteriormente. Como dicha información, por la descripción del pkcs12, va encriptada, la CA , también deberá encargarse de transmitir la clave que protege al certificado y a la clave privada. Esto genera el problema de como enviar de la forma segura , la clave que protege al pkcs12.El otro problema fundamental que presenta este método consiste en que la CA al disponer de la clave privada, puede acceder a la información, que otros usuarios encriptan con nuestra clave pública.
La siguiente parte de la exposición del significado de los certificados, va a consistir en realizar una serie de preguntas que posteriormente serán contestadas, estas preguntas van a consistir desde como se almacenan los certificados en la práctica hasta como representarlos de una forma compacta para ser más portables.
¿ COMO SE EMPLEAN LOS CERTIFICADOS EN LA PRÁCTICA ?
En la práctica , las utilidades que se van a encargar de un intercambio
de información segura ( navegadores web, clientes de correo ...)
, mantienen una serie de bases de datos que nos van a pemitir almacenar
los datos necesarios y establecer correspondencias entre datos pertenecientes
a bases de datos distintas para lograr nuestro fin. En primer lugar establecen
una base de datos de certificados propios y otra de autoridades certificadoras
, estableciendo una relación de correspondencia entre los
certificados propios y las autoridades certificadoras que los certifican.
Por otra parte , dispone de otra base de datos denominada base de datos
de claves privadas, que establece una correspondencia con la base de datos
de certificados propios. Como la información relativa
a las claves privadas no es pública, el agente correspondiente protegerá
dicha base de datos ( la de claves privadas) con una clave , que será
solicitada a la hora de añadir un nuevo certificado a nuestra base
de datos de certificados. La primera relación de correspondencia
nos va a permitir certificar nuestros mensajes de la forma correcta y la
segunda, desencriptar información que ha sido criptada con nuestra
clave pública.
¿QUE OCURRE SI PERDEMOS NUESTRA CLAVE PRIVADA?
En primer lugar indicar , que esta "pérdida", no sólo
se hace efectiva cuando no podemos tener un acceso a dicha clave
sino , cuando aún poseyéndola ha sido expuesta a individuos
ajenos a nuestra clave. Así pues , lo primero que se nos podría
ocurrir para solucionar el problema sería solicitar otro certificado,
el problema que existe , es que la política de las CA`s indica
que no pueden haber dos certificados iguales. Así pues , solicitamos
una revocación de certificado , que consiste en adelantar
la fecha de fin de validez del certificado. Así pues , la CA cuando
recibe una petición de revocación del certificado , almacena
el certificado en una base de datos de certificados revocados. También
dispondrá de una base de datos no revocados, lo que le permitirá
tener un control, acerca de que certificados expedidos son válidos
y cuales no.
Para indicar cuales certificados han sido revocados , las autoridades
certificadoras disponen de un documento que recibe el nombre de CRL, y
en el que se muestra una lista con los números de serie de los certificados
revocados hasta la fecha de consulta. En la actualidad existen protocolos
para consultar on-line a la CA si un determinado certificado está
o no revocado.
¿COMO SE REPRESENTAN LOS CERTIFICADOS?
El formato binario ( su representación) de un certificado se define utilizandola notación ASN.1. Esta notación define cómo especificar los contenidos; y las reglas de codificación definen cómo esta información se traduce a una forma binaria. La codificación binaria del certificado se define utilizando las Distinguished Encoding Rules (DER), que se basan en las Basic Encoding Rules (BER) más generales. Para aquellas transmisiones que no acepten transmisiones binarias, la forma binaria, se puede traducir en una forma ASCII ( subconjunto ASCII) utilizando la codificación Base64. A esta versión codificada se le denomina codificación PEM (el nombre viene del inglés "Privacy Enhanced Mail"), se situa entre líneas delimitadoras de principio y fin de certificado.
PEM es la abreviatura de Privacy Enhanced Mail. Nació a partir de las necesidades de transferir información criptográfica a través del correo electrónico, principalmente, de ahí su nombre. Por ejemplo, supongamos que tenemos un certificado X509 y deseamos transferirlo a otra máquina. El hecho de transferir dicho certificado se debe hacer siguiendo un protocolo (PEM), ya que no es posible enviar información binaria tal cual a través del correo electrónico. Sólamente es posible transferir información en forma de caracteres ASCII, y es en esto en lo que se basa PEM.
En este caso, lo que debería hacer antes de la transferencia
es lo siguiente: a partir de un fichero que contenga su certificado X509,
PEM obtendrá en otro fichero y con el formato aplicado su
certificado listo para ser enviado por mail o transferido mediante cualquier
otro método de transferencia de ficheros, teniendo en cuenta que
el fichero nuevo es ASCII y no binario..