Tema 1: La problemática de la seguridad informática.
1.Autenticación,
privacidad, disponibilidad, integridad.
En seguridad informática tenemos 4 objetivos fundamentales:
-
Confidencialidad. Se trata de que la información mantenga
un carácter privado y no pueda ser vista por personas ajenas, es
decir, la información debe estar disponible únicamente para
aquellas personas autorizadas a manejarla. Es el objetivo más importante.
Para llevarla a cabo se dispone de dos métodos. El primero es restringir
el acceso a la información o bien por software o bien por hardware.
Y el segundo método consiste en el
uso de criptografía. La criptografía permite esconder la
información y mostrarla sólo al propietario de las claves
para decodificarla.
-
Integridad. Consiste en mantener
la información en buen estado, es decir, que la información
recibida es exactamente igual a la información enviada. Esto implica
que la información no sea modificada por quien no debe y que además
este completa. Para garantizar este objetivo es necesario realizar backups
periódicamente, restricciones de acceso, ...
-
Disponibilidad. Este objetivo consiste, como su propio nombre indica,
en mantener los datos disponibles en cualquier momento para las personas
autorizadas al acceso.
-
Autenticidad. Se trata de establecer con seguridad el origen de
la información, este objetivo es relativamente fácil de proveer
pero tiene una serie de problemas. La principal herramienta para llevar
a cabo este objetivo es la firma digital. Por firma digital debe entenderse
la analogía electrónica de la firma manual. Este tipo de
firma tiene una desventaja clara, se puede duplicar fácilmente.
Otro aspecto
relacionado con la seguridad informática es el principio del No
Repudio, que consiste en que la persona que ha recibido, emitido o
manipulado, una información no pueda negarlo. Esto es difícil
de conseguir debido a que no existen testigos presenciales ni temporales
de las cosas.
Antes
de pasar al siguiente punto del tema vamos a ver una serie de conceptos
genéricos importantes en seguridad informática.
-
Vulnerabilidad: es cualquier aspecto del sistema que pueda dañar
la seguridad del mismo, tanto desde el exterior (atacante) como un fallo
interior que cree un punto débil.
-
Amenaza: es el agente que amenaza el punto débil, pueden ser personas,
virus, ...
-
Contramedidas: son diversos sistemas de protección que posee el
sistema para hacer frente a los diversos tipos de amenazas.
En la actualidad no se
puede hablar de un sistema informatico seguro, sino de que no se conocen
amenazas que puedan violar su seguridad.
2.Vulnerabilidades.
Como anteriormente se
ha explicado una vulnerabilidad es cualquier aspecto que pueda dañar
la seguridad de un sistema informático. La vulnerabilidadesse
clasifican en dos grupos:
-
físicas: están relacionadas con el soporte físico
de la información y con el entorno general del sistema.
-
naturales: el grado en el que el sistema puede verse afectado es importante
en el primer análisis de seguridad.
Vulnerabilidades importantes
son el hardware y el software. También existen en las comunicaciones(que
tienen que ver con el hecho de tener equipos interconectados). Y por supuesto,
también existe la vulnerabilidad humana. Ésta es muy importante
ya que todo es sistema reposa sobre las personas, se puede afirmar que
es la vulnerabilidad más grande que existe, dado que tanto el administrador
como los usuarios del sistema provocan daños voluntaria o involuntariamente,
pero también es la más fácil de controlar.
En cuanto a las amenazas
se clasifican, atendiendo al efecto causado, en:
-
Intercepción: un programa o una persona consigue acceso a zonas
que le son restinguidas.
-
Modificación: se accede y se modifican los datos.
-
Interrupción: consiste en cortar el funcionamiento del sistema.
-
Generación: se puede considerar como una clase particular de modificación
que consiste en añadir código con algún propósito
ilícito.
Si clasificamos las amenazas
según el origen obtenemos:
-
naturales o físicas: son los desastres naturales o descuidos humanos.
Y son involuntarios.
-
Intencionados o voluntarios: el agente lo hace a propósito.
Por último, las
contramedidas se clasifican en 4 tipos organizados en capas de forma que
van encadenadas:
-
físicas: son mecanismos para impedir el acceso directo al sistema
-
lógicas: son medidas para controlar el acceso a los recursos. Por
ejemplo la criptografía, los firewalls, ...
-
administrativas: tienen que ver con la definición y puesta en practica
de una política de seguridad. Se trata de determinar planes de formación
para los usuarios, publicar dicha política de seguridad, establecer
quienes son los administradores,...
-
legales. Son medidas que se toman sobre el que infringe todas o alguna/s
de las medidas anteriores.
3.Políticas.
Al diseñar
un sistema seguro deberemos realizar un análisis inicial de la seguridad
del sistema. Dicho análisis es fundamental, debe darse por escrito,
revisarse periódicamente y estar enmarcado en una política
de seguridad, que es un conjunto de directrices sobre todos los elementos
que intervienen. También es necesario realizar un análisis
del valor del sistema informático (Cr), del coste de
las medidas de seguridad (Cs) y del coste que supone el intentar
saltarse dichas medidas (Ca). Teniendo en cuenta estas definiciones
la situación ideal sería: Ca > Cr >
Cs. También puede darse esta situación Cr
> Ca > Cs, pero lo caótico sería tener
una situación como esta Cr > Cs > Ca.
También cabe señalar
algunas medidas a tener en cuenta para el diseño de políticas
de seguridad:
-
Principio del menor privilegio: establece que cualquier objeto/sujeto debe
tener sólo los privilegios de uso / acceso que le son necesarios.
-
La seguridad no se obtiene a través de la oscuridad, es decir, no
es valido pensar que si quiero proteger algo la mejor opción es
esconderlo.
-
Principio del eslabón más débil: la cadena siempre
se rompe por el eslabón más débil, por tanto es importante
que toda la cadena tenga la misma consistencia
-
Defensa en profundidad: consiste en establecer mecanismos sucesivos de
forma que si uno falla esta el otro detrás para intentar evitar
daños mayores. Por ejemplo si quiero proteger un fichero en anubis
es mejor encriptarlo primero para que en el caso de que el password fracase
siempre quede el proceso de encriptado.
-
La existencia de seguridad en caso de fallo. La idea es que en caso de
fallo del sistema la información debe estar igualmente a salvo.
-
Principio de la participación universal: la seguridad del sistema
tiene que ser cosa de todos los que se puedan ver afectados por el fallo.
Tema 2: Fundamentos de criptografía.
-
Teoría de la información
De
los objetivos planteados en el tema anterior existe una herramienta que
es muy útil en cuanto a confidencialidad, dicha utilidad se llama
Criptología.
La
Criptología se divide en dos ramas, Criptografía y Criptoanálisis.
La primera es el “arte” de ocultar la información a los ojos de
personas no autorizadas, para conseguirlo se basa en métodos de
transformación de la información original en otra cuyo significado
está oculto.
El
criptoanálisis son una serie de técnicas para deshacer o
averiguar la información inicial (es decir, descifrarla) de forma
no lícita. Esta “descodificación” se puede realizar de forma
correcta o incorrecta (para apoderarnos de información de otras
personas), y depende de cómo haya sido cifrada y de la información
adicional disponible a la hora de desencriptar.
Nosotros
nos centraremos en los métodos para criptografiar. Estos métodos
deben ser mecanismos para transformar la información inicial en
otra ilegible y que, además, esta transformación se pueda
invertir siempre que se disponga de la autorización requerida. El
mecanismo debe tener un elemento llamado clave (que es mantenida en secreto,
proporcionando así seguridad al sistema) o llave para cifrarla información
en función de dicha clave. El hecho de descifrar con la clave no
se considera criptoanálisis, sino simplemente invertir el proceso
de cifrado.
Desde
el punto de vista teórico se llama criptosistema a la quíntupla
MCKED donde:
-
M es el conjunto de mensajes en claro
-
C es el conjunto de mensajes cifrados
-
K es el conjunto de claves que se emplean
-
E es el conjunto de transformaciones de cifrado
-
D es el conjunto de transformaciones de descifrado
Para
poder utilizar un criptosistema determinado, éste debe cumplir los
siguientes requerimientos:
Con
la técnica actual tenemos 2 grandes tipos de criptosistemas:
Son
los más antiguos y sencillos, son rápidos y fáciles
de implementar. También se llaman simétricos. Consisten en
que existe una única clave para cifrar y descifrar llamada clave
privada.
Se
basan en la existencia de dos claves llamadas publica y privada, se les
suele llamar asimétricos porque una clave se usa para cifrar y la
otra para descifrar. Las llaves siempre van por pares, es decir, lo que
se ha cifrado con una clave pública sólo se puede descifrar
con la clave privada asociada.
La
clave privada se mantiene en secreto mientras que la publica es conocida
por todos. La utilidad de este método es evidente en comunicaciones
ya que cualquiera puede cifrar un mensaje con la clave publica que solo
el poseedor de la privada podrá descifrar.
Por
ejemplo, tenemos 2 usuarios A con su clave publica Pa y su privada Ka y
B con su Pb y Kb. Pues bien, A cifrara el mensaje con Pb y se lo mandara
a B. Éste cogerá el mensaje de A y con su Kb lo descifrara.
Con ello se consigue Confidencialidad
Si
cifráramos el mensaje con las claves cambiadas, es decir A cifra
con Ka y B descifra con Pa lo que conseguimos es Autenticidad.
Aparecen
oficialmente en 1976 con el algoritmo RSA (Rivest Shamir Adleman). Este
método basa su seguridad en la dificultad de resolver el problema
de la factorización de un numero compuesto de un gran numero de
cifras en factores primos. Este método se explicara con mas detalle
posteriormente.
Ambos
sistemas se utilizan debido a que los asimétricos son más
difíciles de implementar y su coste algorítmico es grande,
por lo que generalmente se suelen combinar con los simétricos.
Ahora vamos a tratar dos fundamentos teóricos
en el diseño de algoritmos y en el estudio de su fortaleza, que
son la Entropía y la Redundancia.
1.1.Entropía
El
concepto de Entropía fue introducido por Shannon en los años
40. Según él, la entropía es la medida del desorden,
siempre va relacionada con la uniformidad y el desorden.
Diremos
que hay mucha entropía cuando haya mucha uniformidad.
Matemáticamente
la entropía correspondiente a una variable aleatoria X se define
como:

siendo
P(Xi) la probabilidad de aparición de la ocurrencia Xi
Por
ejemplo, calculamos la entropía de la variable aleatoria asociada
a lanzar un dado al aire:

En este
caso la entropía es máxima debido a que los sucesos son equiprobables.
Cuando
existe algún tipo de dependencia entre una variable aleatoria X
y otra Y, el conocimiento de Y proporciona información sobre X.
Usando probabilidades condicionadas podemos definir la entropía
de una variable X condicionada a otra Y como:

si aplicamos
el Teorema de Bayes obtenemos:

Llegados
a este punto,podemos definir el
concepto de Cantidad de información( I ) como:
I
= -lg(P(xi))
siendo
P(xi) la probabilidad de aparición del estado xi, y también
definimos el concepto de Cantidad de información de una variable
sobre la otra como :
I( x,
y) = H( Y) – H( Y/X)
Con
todas estas definiciones se define un criptosistema seguro de Shannon como
aquel en el que I( c, m) = 0. Y se interpreta de la siguiente manera: el
hecho de conocer c no nos aporta ninguna información sobre m.
Para
que un sistema cumpla esto es necesario que el cardinal( c) = cardinal(
m), es decir, que existan tantas claves como mensajes. Esto es casi imposible,
debido a que seria inmanejable, pero se podría intentar.
1.2.Redundancia
Como
hemos visto, la entropía da una medida de la redundancia de la información.
En base a ello podemos definir el concepto de Redundancia, pero antes debemos
hacer dos definiciones:
-
Índice real de un lenguaje para mensajes de longitud k:
donde M es el conjunto
de todos los mensajes de longitud k. Con ello estamos midiendo el numero
de bits de información que nos aporta cada carácter del mensaje.
-
Índice absoluto de un lenguaje para mensaje de longitud k
con
ello estamos midiendo el numero máximo de bits de información
que pueden se codificados con cada carácter del mensaje.
Llegados
a este punto ya podemos definir la Redundancia (D) como la diferencia entre
los dos índices anteriores.

-
Matemática discreta
Para
entender los algoritmos de clave asimétricas que se expondrán
con posterioridad es necesario tener claro las siguientes ideas o conceptos:
-
Aritmética modular: es la aritmética que trabaja con conjuntos
de números restringidos a un tamaño determinado. En este
aspecto deberemos introducir primero el concepto de congruencia. Dados
tres números naturales a, b, n diremos que a es congruente con b
en modulo n y se escribe a º
b (mod n) si a = b + k*n para algún k natural.
Este
algoritmoPermite obtener de forma
eficiente el máximo común divisor de dos números.
Y para ello se basa en la siguiente propiedad:
Dados
dos números enteros a y b, si sabemos que m|a (m divide a a) y que
m|b (m divide a b), podemos afirmar que m|(a-bk) (m divide a a-bk), o lo
que es lo mismo, m|(a mod b) (m divide a a modulo b). Si llamamos c a (a
mod b) y volvemos a aplicar la propiedad obtenemos que m|(b mod c) ( m
también divide a c), si aplicamos el proceso sucesivas veces llegaremos
a un punto en el que a mod b será cero, y el paso previo nos proporcionara
el máximo común divisor entra a y b.
Y
el algoritmo de Euclides se programaría de la siguiente forma:
G0
= a
G1
= b
Mientras
(G1 != 0)
X
= G0 % G1
G0
= G1
G1
= X
Finmientras
G0
-
Inversas: Si mcd(a,n) = 1 es debido a que a tiene inversa modulo n, o lo
que es lo mismo, $
a-1 / a*a-1 = 1 (modulo n)
Se
dice que los números que cumplen la condición mcd(a,n) =
1 son primos entre sí ( aunque a y n no sean primos)
Denominaremos
Conjunto de Residuos modulo n (CR) al siguiente conjunto: CR = {1, 2, 3,
..., n-1} y Conjunto Reducido de Residuos (CRR) al conjunto de números
primos relativos con n, en otras palabras, CRR es el conjunto de números
que tienen inversa modulo n. Por ejemplo si tomamos n = 12:
CR
= {1, 2, 3, ..., 11}
CRR
= {1, 5, 7, 11}
Se
define la función de EulerÆ(n)
como el cardinal del conjunto CRR.
Teorema
de Euler:
Dados
dos enteros a y n si mcd(a,n) = 1 entonces aÆ(n)º
1 (modulo n)
El teorema anterior nos permite calcular
la inversa de un numero a si puedo calcular la función de Euler Æ(n),
ya que se cumple la siguiente relación:
aÆ(n)=
a*aÆ(n)-1
= 1
pero
en la práctica para calcular inversas se usa el algoritmo extendido
de Euclides ya que se desconoce Æ(n)
y la implementación de dicho algoritmo es la siguiente:
inversa(int
n, int a)
{
int c,i;
int
g[],u[],v[];
g[0]=n;
g[1]=a;
u[0]=1;
u[1]=0;
v[0]=0;
v[1]=1;
i=1;
while
(g[i]!=0)
{c=g[i-1]/g[i];
g[i+1]=g[i-1]%g[i];
u[i+1]=u[i-1]-c*u[i];
v[i+1]=v[i-1]-c*v[i];
i++;}
while
(v[i-1]<0)
v[i-1]=v[i-1]+n;
return(v[i-1]%n);}
La ventaja
del uso de este tipo de aritmética (modular, inversas, …) radica
en poder trabajar con números grandes sin necesidad de almacenar
resultados intermedios
-
Exponenciación rápida: En este caso lo que se pretende es
dados dos enteros a y b, calcular ab. La idea mas simple es
multiplicar el número a por si mismo b veces, sin embargo si a y
b son grandes este método es inviable.
Por
ello es necesario buscar alternativas al método que presenten un
coste algorítmico menor. Una de estas alternativas es el Algoritmo
de Exponenciación rápida.
Si
tomamos la representación binaria de b obtenemos:
b
= 20b0+21b1+22b2+...2nbn
Si
ahora sustituimos dicha representación en ab obtenemos
Recordemos
que los bi solo pueden vales 0 o 1, por tanto para calcular
ab solo hemos de multiplicar las posiciones cuya bi
sea 1, y que además, para calcular el valor a2n únicamente
hay que multiplicar por 2 el valor a2(n-1). Con todo ello el orden algorítmico
del método desciende espectacularmente. Y el método se implementa
de la siguiente forma:
Exp_rapida(a,b){
z
= b;
x
= a;
r
= 1;
Mientras
(z > 0){
Si
(z % 2 =1)
r
= r * x
x
= x * x
z
= z / 2}
Finmientras}
-
Test de primalidad: No es viable tratar de factorizar un numero entero
p para saber si es o no primo, pero lo que si se puede hacer es aplicar
unos test que nos dirán con un alto grado de certeza si es o no
primo. Uno de estos test es el Método de Lehmann.
Este
método consiste en :
1.Tomar
un número aleatorio a tal que a < p
2.Calcular
b = a (p-1)/2 (mod p)
3.Si
b ¹
1 (mod p) y b ¹
-1 (mod p), p no es primo
4.Si
b º
1 (mod p) y b º
-1 (mod p), entonces tenemos una probabilidad del 50% de que sea primo.
A
efectos prácticos lo que se hace para generar un numero primo grande
es generar un numero aleatorio grande, añadir un 1 en el bit mas
significativo de dicho numero y otro 1 en el bit menos significativo para,
posteriormente, tomar una tabla de números primos e ir comprobando
si nuestro numero es primo o no.
-
Primos fuertes: son dos números p y q primos que entre sí
cumplen las siguientes propiedades:
1.mcd[
(p-1), (q-1) ] = es pequeño.
2.p-1
y q-1 tienen algún factor primo grande (p’ y q’).
3.p’-1
y q’-1 tienen factores primos grandes.
4.p’+1
y q’+1 tienen factores primos grandes.
-
Criptografía Clásica
En
criptografía clásica estudiaremos 3 métodos de cifrado:
Su
nombre se debe al emperador romano Julio Cesar. Es un algoritmo de cifrado
monoalfabeto y el método consiste en sumar 3 al ordinal de cada
una de las letras del mensaje de entrada( o mensaje en claro). Por ejemplo:
si el mensaje en claro es HOLA, el mensaje cifrado sería KROD.
Matemáticamente
la transformación criptográfica sería :
C
= ( M + 3 ) mod 29
es
modulo 29 ya que trabajamos con un alfabeto que tiene 29 letras, si trabajaramos
con el código ASCIIseria
mod 256.
Y
para descifrar simplemente se resta 3 a cada una de las letras del mensaje
cifrado.
Éste
es un método de sustitución multialfabeto. El método
consiste en calcular el ordinal de cada una de las letras del mensaje de
entrada y sumarle el ordinal de la i-ésima letra de la clave modulo
n( con n = longitud de la clave).
Matemáticamente
la transformación sería:
con
l = longitud de la clave.
Para
descodificar solo hay que restar en lugar de sumar.
-
Cifrado por transposición.
Este
método lo que hace es dividir el mensaje de entrada en bloques de
tamaño fijo y en cada bloque desordenar las letras siguiendo un
patrón prefijado. Por ejemplo, si ciframos HOLA_QUE_TAL_ESTAS con
tamaño de bloque 6 y el patrón 5,6,1,2,4,3 el mensaje quedaría:
_QHOALALUE_TAS_ETS. Para descodificar solo hay que tomar el mismo
tamaño de bloque y aplicar el mismo patrón.
-
Criptografía actual
En
la actualidad se utilizan los tipos de criptografía explicados en
el punto 2.1, la criptografía de clave privada y la de clave publica.Ahora
vamos a señalar las características de algunos de los métodos
utilizados en cada tipo de criptografía.
4.1.Criptografía
de clave privada (DES, IDEA, RC4)
En
criptografía de clave privada podemos señalar entre otros
los siguientes algoritmos:
Este
algoritmo fue desarrollado y patentado por los investigadores de IBM en
1970 y posteriormente adoptado por el gobierno de USA en el año
76 para las comunicaciones no clasificadas. En él se consideran
los 64 bits del bloque de entrada b1,b2,...,b64,
éstos se permutan mediante la permutación inicial IP, siendo
el bloque de salida B0 el constituido por el bloque L0
de 32 bits concatenado con el R0, también de 32 bits.
La salida (L16,R16), después de 16 iteraciones
con la función f, se permuta de nuevo con la permutación
IP-1, inversa de la IP obteniéndose el cifrado de los 64 bits de
entrada.
En
cada iteración de, de la anteriormente citadas, la función
f combina operaciones de sustitución y transposición. Si
llamamos Ti al resultado de la iteración i-ésima,
ésta se compone de Li y Ri, con 32 bits en
cada una de las partes de forma que en cada iteración se cumple:
Donde ki es una clave de 48 bits
generada por la función generadora de claves ki = KS
(i,K) siendo K la clave externa de 64 bits. En el último paso las
partes del resultado de L y R no se permutara, en su lugar se concatenan
como R16.L16, que se toma como entrada a la permutación
IP-1. Esto se hace para que el algoritmo sirva tanto para cifrado como
para descifrado.
La función
de cifrado f (R,K) tiene como entrada los 32 bits correspondientes a la
mitad derecha de la iteración (Ri-1) y los 48 bits de
la clave ki. La cadena Ri-1 se expande a 48 bits
y la salida se suma en un OR exclusivo a los 48 bits de ki y
la salida de todo esto se reparte en 8 bloques de 6 bits. Cada uno de estos
bloques se mete en una caja (Sj) que realiza una transformación
no lineal dando como salida una secuencia de 4 bits.
La union
de las salidas de estas cajas se permuta y se obtienen los 32 bits de la
función f.
Las
principales ventajas del DES radican en que en 20 años no se le
ha encontrado ninguna debilidad y en el hecho de que las claves no forman
una estructura de grupo, es decir que si codifico con clave k1
y luego con clave k2 no existe ninguna clave k3 que
de cómo resultadoel mismo
cifrado que la k1 y k2 juntas.
En las
siguientes imágenes se muestran algunos esquemas del funcionamiento
del DES y de sus componentes:
El DES
admite varios modos de trabajo:
i.ECB
(Electronic Code Book).
Consiste
en subdividir la cadena que
se quiere codificar en bloques del tamaño deseado y se cifran todos
ellos empleando la misma clave. A favor de este método podemos decir
que permite codificar los bloques independientemente de su orden. También
es resistente a errores, pues si uno de los bloques sufriera una alteración,
el resto quedara intacto.
Por
contra, si el mensaje presenta patrones repetitivos, el texto cifrado también
los presentara, y eso es peligroso, sobre todo cuando se codifica información
muy redundante
ii.CBC
(Cipher Block Chaining)
Este
modo incorpora un mecanismo
de retroalimentación en el cifrado por bloques. Esto significa que
la codificación de bloques anteriores condiciona la codificación
del bloque actual, por lo que sería imposible sustituir un bloque
individual en el mensaje cifrado. Esto se consigue efectuando una operación
XOR entre el bloque del mensaje que queremos codificar y el último
criptograma obtenido. En cualquier caso, dos mensajes idénticos
se codificarán de la misma forma usando el modo CBC. Más
aun, dos mensajes que empiecen igual se codificarán igual hasta
llegar a la primera diferencia entre ellos. Para evitar esto se emplea
un vector de inicialización, que puede ser un bloque aleatorio,
como bloque inicial de la transmisión. Este vector será descartado
en destino, pero garantiza que siempre los mensajes se codifiquen de manera
diferente, aunque tengan partes comunes.
Las
siguientes figuras muestran como se codifica y descodifica en este modo:
Codificar:
Descodificar: 
iii.CFB
(Cipher Feedback)
En este
modo la salida se utiliza para retroalimentar al mecanismo de codificación.
Después de que cada bloque ha sido cifrado parte de él se
guarda en un registro que posteriormente será encriptado usando
la llave del usuario mediante el modo ECB, y a la salida se le aplica un
XOR con los datos en claro para obtener el cifrado definitivo.
Este
modo habilita al usuario para que pueda descifrar solo una porción
de una gran base de datos simplemente empezando a descifrar en un punto
equidistante entre el dato buscado y el dato inicial.
Este
algoritmo data del año 1992, fue inventado por Lai y Massey (del
Swiss Federal Institute of Technology), esta libre de restricciones y permisos
nacionales y es de libre distribución por Internet. Puede trabajar
con los mismos modos que el DES. Trabaja con bloques de 64 bits y emplea
una llave de 128 bits( dato que hace que el ataque por fuerza bruta no
sea factible por lo menos actualmente). Consta de 8 rondas. Dividiremos
el bloque X a codificar, de 64 bits, en cuatro partes X1, X2, X3y X4de
16 bits. Denominaremos Zia
cada una de las 52 subclaves de 16 bits que vamos a necesitar. Las operaciones
que llevaremos a cabo en cada ronda son las siguientes:
1.Multiplicar
X1 por Z1
2.Sumar
X2 con Z2
3.Sumar
X3 con Z3
4.Multiplicar
X4 por Z4
5.Hacer
un XOR entre los resultados del paso 1 y el paso 3.
6.Hacer
un XOR entre los resultados del paso 2 y el paso 4.
7.Multiplicar
el resultado del paso 5 por Z5.
8.Sumar
los resultados de los pasos 6 y 7.
9.Multiplicar
el resultado del paso 8 por Z6.
10.Sumar
los resultados de los pasos 7 y 9.
11.Hacer
un XOR entre los resultados de los pasos 1 y 9.
12.Hacer
un XOR entre los resultados de los pasos 3 y 9.
13.Hacer
un XOR entre los resultados de los pasos 2 y 10.
14.Hacer
un XOR entre los resultados de los pasos 4 y 10.
La
salida de cada iteración serán los cuatro sub-bloques obtenidos
en los pasos 11, 12, 13 y 14, que serán la entrada del siguiente
ciclo, en el que emplearemos las siguientes seis subclaves, hasta un total
de 48. Al final de todo intercambiaremos los dos bloques centrales
Y
después de la octava iteración se multiplica X1
por Z49, se suma X2 con Z50, sumamos X3
con Z51 y se multiplica X4 por Z52
Las
primeras ocho subclaves se calculan dividiendo la clave de entrada en bloques
de 16 bits. Las siguientes ocho se calculan rotando la clave deentrada
25 bits a la izquierda y volviendo a dividirla, y así sucesivamente.
Las
subclaves necesarias para descifrar se obtienen cambiando de orden las Ziy
calculando sus inversas para la suma o la multiplicación.
El
Algoritmo RC4 fue diseñado por Ron Rivest en 1987 para la compañía
RSA Data Security. Su implementación es extremadamente sencilla
y rápida, y está orientado a generar secuencias en unidades
de un byte, además depermitir
claves de diferentes longitudes. Es un algoritmo propietario y el código
fuente del algoritmo no se ha publicado nunca oficialmente, pero en 1994
alguien difundió en Internet una descripción que, genera
las mismas secuencias. Dicha descripción consta de una S-Caja de
8*8, que almacenara una permutación del conjunto {0,...,255}. Dos
contadores i y j se ponen a cero. Luego, cada byte Orde
la secuencia se calcula como sigue:
1.i
= ( i+ 1 ) mod 256
2.j
= ( j + Si ) mod 256
3.Se
intercambian los valores de Si y Sj
4.T
= ( Si + Sj ) mod 256
5.Or
= St
Para
calcular los valores iniciales de las S-Cajas se hace lo siguiente:
1.Si
= i
2.Rellenar
el vector K0...K255 con la clave tantas veces como sea necesario
3.j
= 0
4.Para
i = 0 hasta 255 hacer
j
= ( j + Si + Ki ) mod 256
intercambiar
Si y Sj
Es el
algoritmo utilizado en muchas aplicaciones de tipo comercial actuales.
4.2.Criptografía
de clave publica (RSA)
En este
tipo de sistemas se utilizan dos claves: una clave pública y una
clave privada. En un grupo de usuarios, cada uno de ellos posee dos claves
distintas:
• La
clave pública, Pa, puede ser conocida por todos los usuarios del
sistema.
• La
clave privada, Ka, tan solo es conocida por su propietario.
Aunque
estas claves están relacionadas matemáticamente, no se puede
obtener una a partir de la otra. En este tipo de criptografía la
longitud de las claves suele ser de 1024bits
o superior frente a los 256 o 512 de las claves de la criptografía
simétrica.
Este
tipo de sistemas se denominan asimétricos porque no podemos usar
una misma clave para cifrar y descifrar un mensaje. Ambas claves deben
usarse en el proceso. Si ciframos un mensaje con una de ellas, debemos
descifrarlo con la otra. Y sirve tanto para garantizar la confidencialidad
de los mensajes como para la autenticidad, únicamente depende de
cómo se manejen las claves privada y publica al generar los mensajes.
Por
ejemplo, si un usuario A quiere enviar un mensaje confidencial a otro B,
debe cifrarlo utilizando la clave pública de B, de esta forma el
mensaje tan solo puede descifrarse utilizando la clave privada de B. Si
nuestro propósito es garantizar la autenticidad el usuario A cifrará
el mensaje con su propia clave privada (Ka) de forma que el receptor únicamente
deberá descifrar el mensaje usando la clave pública de A
(Pa).
El
algoritmo mas extendido para implementar este tipo de criptografía
es el RSA cuyas siglas coinciden con las iniciales de sus creadores (Rivest-Shamir-Adelman).
El RSA utiliza dos claves y cualquiera de las dos puede ser pública
o privada. Las dos claves se generan matemáticamente basándose
en la combinación de grandes números con factores primos
Para
generar el par de llaves (Kp y Kq) se eligen aleatoriamente
dos primos grandes p y q. Después se calcula el producto n=p*q.
Después se escoge un numero e primo relativo con (p-1)(q-1). Así
se obtiene la clave publica (e,n), que tendrá inversa en modulo
(p-1)(q-1), de forma que:
d*e
= 1 (mod (p-1)(q-1))
Y la
clave privada la formaran (d,n).
Una
vez obtenidas ambas llaves usaremos las siguientes relaciones para cifrar
y descifrar:
C
= me (mod n)
D
= md (mod n)
4.3.Software
criptográfico
Todos
los métodos de cifrado vistos hasta ahora se pueden encontrar en
el llamado Openssl. El Openssl es un software de libre distribución
capaz de cifrar tanto en clave privada, usando el DES, IDEA, RC4, RC5,
triple Des, blowfish,..., como en clave publica, usando RSA (cifrando,
descifrando y tambiéngenerando
los pares de llaves RSA necesarias).
-
Estándares y aplicaciones criptográficos.
La
existencia de numerosos criptosistemas con determinadas características
de fortaleza, seguridad, etc. no es suficiente para hacer uso de la criptografía.
Es necesario aplicar una serie de técnicas denominadas protocolos
para que el uso de la criptografía ofrezca ciertas propiedades de
seguridad (secreto, integridad, autenticidad, etc.).
Para
utilizar un criptosistema en la transmisión de información
es necesario establecer una serie de convenciones(denominadas protocolos)
entre las dos partes. Un protocolo es una secuencia ordenada de pasos tomados
por dos o más partes para llevar a cabo una determinada tarea
Existen
distintos tipos de protocolos, pero nos quedaremos únicamente con
el protocolo adjudicatario, en él se utiliza un adjudicador para
llevar a cabo la transacción. Se trata de una tercera parte que
puede juzgar si la transacción se ha llevado a cabo justamente,
por ejemplo un notario público. Su función es atestiguar
la autenticidad de ambas partes y la validez de la transacción a
posteriori. El adjudicador tan solo juzga su validez. En el caso de Internet
el adjudicador suele ser una empresa llamada Verisign que, previo pago
de su importe, atestigua que la persona/s es/son quien/es dice/n ser.
5.1.Firma
digital
La firma
digital es un es un protocolo que
produce el mismo efecto que una firma real, se trata de una "marca" que
sólo el emisor puede producir y que otras personas pueden reconocer
fácilmente como perteneciente al mismo.
El
objetivo básico de la firma digital es que el emisor confirme que
el mensaje es suyo y que el receptor pueda aceptarlo como autentico.
5.1.1.Funciones
hash
La función
Hash o función de resumen es una función matemática
que se añade a un mensaje para probar su autenticidad y que cumple
estas características:
-
la entrada de la función es de un tamaño indeterminado y
la salida es de tamaño fijo
-
dado una mensaje y su resumen ( que es la salida de la función de
resumen), cualquier cambio mínimo en el mensaje debe producir cambios
enormes en el resumen
-
dado un resumen ha de ser extremadamente difícil poder encontrar
un texto que genere dicho resumen.
El
MD5, Sha-1 y el Sha-2 son funciones de resumen, la primera produce firmas
de 128 bits mientras que las 2 siguientes producen firmas de 160 bits.
5.1.2.Firma
con clave pública
Recordemos
que en este caso buscamos autenticidad, no confidencialidad, el proceso
que se realiza cuando una persona A manda un mensaje a B firmado es el
siguiente:
1.A
calcula la función de resumen del mensaje a enviar H(m), posteriormente
cifra dicho resumen con su clave privada.
2.A
manda a B H(m) junto al mensaje original m.
3.B
recibe el mensaje y la función de resumen cifrada. B debe descifrar
con la clave publica de A obteniendo H(m), generar la función de
resumen del mensaje en claro H’(m) y luego comparar H(m) con H’(m), si
ambos son iguales el mensaje es autentico, si no lo son el mensaje puede
haber sido mal transmitido o modificado por alguien en el camino.
Llegados
a este punto si queremos garantizar tanto la autenticidad como la confidencialidad
deberemos calcular la función Hash, añadir el mensaje en
claro y posteriormente cifrar todo junto.
5.2.Infraestructuras
de clave pública (PKI)
Se trata
del conjunto de protocolos, servicios y normas que constituyen la base
a utilizar por cualquier aplicación criptográfica de clave
pública. Eltérmino
PKI incluye los servicios y protocolos necesario para la administración
de claves, generalmente usando Autoridades certificadoras. Estas
autoridades, también conocidas como notarios electrónicos,
deben ser empresas fiables y altamente reconocidas que se dedican a validar
los certificados. Un certificado es un documento digital que atestigua
que una clave privada corresponde a un individuo determinado. Los certificados
pueden tener múltiples estructuras pero hoy por hoy se esta imponiendo
el uso del estándarde certificación
x509.
5.2.1.Certificación
x509
Los
certificados x509 se componen de dos partes:
-
Una llamada DN Subject, con información sobre el propietario del
certificado, con los siguientes campos: CN = Nombre del propietario, OU
= Departamento de gestión, O = Organización, C = País,
L = Localidad, ST = Estado civil, Email = Dirección de correo electrónico.
-
Una segunda llamada DN Issuer, que corresponde a la autoridad certificadora,
con la siguiente estructura: clave publica del Subject, fecha de inicio
y fecha de finalización de la validez del certificado, firma digital
de la autoridad certificadora.
5.2.2.Autoridades
certificadoras
Las
autoridades certificadoras, como ya se ha indicado anteriormente, son los
notarios digitales que expenden los certificados a aquellas personas o
entidades que los solicitan.
Para
conseguir un certificado deberemos proporcionar nuestros datos a la autoridad
certificadora, el algoritmo utilizado en la generación de las llaves
( generalmente el RSA), la llave pública. Toda esta información
se la remitimos a la autoridad certificadora. Ésta, si cumplimos
las normas requeridas, nos proporcionara el certificado, validando así
nuestra identidad en la red.
Tema 3: Seguridad en redes (Internet).
-
Criptografía en las redes
La
introducción de las redes informáticas supone la posibilidad
de compartir de una enorme cantidad de recursos hardware y software a nivel
tanto local como mundial, con la conexión a Internet, cualquiera
puede acceder a ordenadores de todo el mundo para desarrollar y ejecutar
sus programas o para cualquier otra finalidad y sobretodo tiene acceso
a una enorme cantidad de información de todo tipo.
Como
inconveniente a todas estas ventajas también se han incrementado
los problemas de seguridad así como el numero de atacantes, la privacidad
de los datos sensibles se hace más difícil de garantizar,
los controles de seguridad se vuelven mas complejos y difíciles
de implementar, ...
Por
todo ello posiblemente el medio mas seguro de garantizar la seguridad se
apoya en el uso de criptografía en la mayoría de niveles
de las redes de ordenadores actuales.
Pero
para poder entender los mecanismos de seguridad que se expondrán
en los siguientes apartados es necesario recordar que las redes informáticas
se asientan sobre el TCP/IP (Transmisión Control Protocol / Internet
Protocol). Dicho protocolo se compone de los siguientesniveles:
-
Nivel 1 o nivel de red. Es el nivel de
acceso a la red que define como se deben transmitir los datos a través
de los dispositivos físicos( ethernet,...)
-
Nivel 2 o nivel Internet. En este nivel
se definen los paquetes que compondrán la transmisión y es
el encargado del encaminamiento de dichos paquetes. En este nivel se usa
el protocolo IP.
-
Nivel 3 o nivel de transporte. Este nivel
proporciona los servicios de transmisión extremo a extremo garantizando
una serie de características en la transmisión. En este nivel
se utilizan fundamentalmente los protocolos TCP y UDP.
-
Nivel 4 o nivel de aplicación. En
este nivel es donde se encuentran las distintas aplicaciones y procesos
que utilizan la red, tales como el telnet, ftp, chat, o
el correo electrónico.
La
información se empaqueta en paquetes ( compuestos por una cabecera
y unos datos) que en el emisor se transfieren desde las capas superiores
a las inferiores, posteriormente circulan a través de la red física
y en el receptor se transfieren de niveles inferiores a superiores. Al
transferirse entre los distintos niveles en el emisor, cada capa puede
añadir su propia cabecera a cada uno de ellos.
Llegados
a este punto ya estamos en condiciones de establecer los dos métodos
de cifrado de red mas comunes.
1.1.Cifrado
de enlace
Aquí
el cifrado se realiza en el nivel 1 de la jerarquía TCP/IP y se
cifra tanto la información del mensaje incluida en cada paquete,
como las cabeceras añadidas por todos los niveles superiores.
Tiene
la ventaja de que toda la información de cada paquete esta cifrada,
pero el inconveniente de que los paquetes únicamente van cifrados
mientras se encuentran en el nivel de red, posteriormente, cuando llegan
a niveles superiores de la jerarquía la información esta
en claro, con lo que cualquiera podría hacerse con ella. también
tiene el inconveniente de que para poder llevarse a cabo con éxito
es necesarios que los dispositivos físicos (tarjetas ethernet, módems,
...) sean capaces de cifrar / descifrar la información antes de
enviarla.
A
este tipo de cifrado pertenece el IPSEC
1.2.Cifrado
extremo a extremo (TLS)
Este
tipo de criptografía de red se aplica a nivel de aplicación,
es decir, es la propia aplicación la que cifra los datos que posteriormente
se mandarán a través de la red.
Tiene
como ventaja que el usuario puede cifrar
sólo parte de la información que transmite, y puede hacerlo
usando un método de cifrado a su gusto, los datos se encuentran
cifrados desde el origen al destino de la transmisión, la red no
necesita disponer de ninguna característica específica de
cifrado.
Y
como inconveniente el hecho de que se transmite parte de la información
en claro yque el emisor y el receptor
deben ponerse de acuerdo para realizar el mismo tipo de cifrado e intercambiar
la clave o claves correspondientes previamente.
A
este tipo de cifrado pertenecen el SSL, TLS, SMIME y el PGP. Los dos primeros
son los que se utilizan para las comunicaciones con sesión, es decir,
telnet, ftp, web, ... y los dos restantes se usan para el correo electrónico.
El
SSL permite garantizar 3 propósitos: confidencialidad, autentificación
del servidor y la autentificación del cliente. La idea del método
es poder comunicar una serie de clientes según un esquema cliente-servidor
pero de forma confidencial y además poder saber si el servidor es
quien dice ser. Opcionalmente el servidor podrá querer autentificar
al cliente.
Para
que el SSL funcione se necesitan 2 llaves (k, p). Al conectar el cliente
y el servidor se pondrán de acuerdo en la forma del cifrado ( mediante
DES, RC4, ...), posteriormente el servidor manda su certificado al cliente,
éste verifica dicho certificado ( comprobando la firma mediante
la clave publica de la autoridad certificadora) y obtiene la clave publica
que hay dentro del certificado. El cliente cifra una llave de sesión
aleatoria usando la llave publica del certificado y lo manda al servidor.
Éste obtiene la llave de sesión y posteriormente ambos se
comunicancon criptografía
privada y esa llave de sesión.
Llegados
a este punto es posible que el servidor requiera la autentificación
del cliente, con lo que hay que repetir el proceso.
1.3.Seguridad
del correo electrónico (SMIME)
Originariamente
el formato con el que se enviaba correo electrónico, que a partir
de ahora pasaremos a llamar mail o e-mail, era el formato ASCII o bien
el formato PEM. En el primero cada mail se componía a partir de
los caracteres contenidos en la tabla ASCII, ya que se pensaba que a través
del correo únicamente era necesario poder enviar texto. Posteriormente
apareció el formato PEM que tenia la siguiente estructura:
-----------------------
Begin lo_que_sea -------------------
Información
codificada en base64
-----------------------
End lo_que_sea ---------------------
De este
nuevo formato en la actualidad únicamente se utiliza la estructura.
El base64 es un subconjunto del ASCII pero compuesto únicamente
por letras, números y signos de puntuación.
Actualmente
todos los mail se componen de una cabeza y un cuerpo separados por una
línea en blanco. En la cabeza hay una serie de campos con la estructura:campo:
valor [, otra cosa = algo ].
Se dice
que una mail es MIME si existe un campo como el siguiente:
MIMEVersion:
1.0
Content-type:
tipo / subtipo
Content-transfer-encoding:
7 bits, 8 bits, base64 o quoted-printable
Línea
en blanco
Contenido
del mail.
Por
ejemplo, la siguiente cabecera corresponde a un mail MIME:
MIMEVersion:
1.0
Content-type:
application/X-shockwave-flash-preview; name=”bird”
Content-transfer-encoding:
base64
Pld2djjdskasjdjlkasdsdkjasdjajkd
Ksdjfksldjfsdkjfskdjflskjdfskljdf
KflñskflskdfñlskdfñdkfklfñkSLF
.kdñslkd;SDFJSDF::;dksjfs
también
es posible encontrar dentro del campo Content-type el tipo Multipart/ (signed,
mixed). Este tipo especial indica que el mail se compone de una colección
de entidades MIME y que tienen esta forma:
MIMEVersion:
1.0
Content-type:
multipart/mixed ; boundary = ------ churrito -----
--
churro
Content-type:
text/plain
Hola
--
churro
Content-type:
image/png
Content-transfer-encoding:
base64
Fskfjskfjlsdfjlskjfklsfjlksjdfsjfklsdjfskldfjlskjflskjfdskjdfskjdflksjflksjfdksjfkljflkjsfkldfhskkfñaskdoweirofopweiroewifdslkfjsdklfjsdfjslkdfjlskdfjlksldklkflñskdflñskdflñkdsfñlksdlñfkfllñskfsdlfkjskldfjklsfjlksdjflks
--
churro --
Llegados
a este punto podemos introducir ya el SMIME. El SMIME no es mas que el
tipo MIME expandido con unos cuantos objetos mas para seguridad. Estos
objetos son los tipo application/X-PKCS7-mime.
Así,
un mail cifrado tiene la siguiente estructura:
From:
….
To:
…..
MIMEVersion:
1.0
Content-type:
application/X-PKCS7-mime
Content-transfer-encoding
: base64
Fjfjsfksjflksjdfklsjfkljsfljsfkj
Y
el mail firmado, cuya característica es que se puede leer y además
comprobar la firma,tiene esta otra:
From:
….
To:
…..
MIMEVersion:
1.0
Content-type:
multipart/signed; protocol=”application/x-pkcs”-mime2 ;
boundary=
“churro”;mialg=SHA-1
--churro
Content-type:
text/plain
Hola
--churro
Content-type:
application/x-pkcs7-signature
Content-trans-encoding
: base64
Fjfjsfksjflksjdfklsjfkljsfljsfkj
--churro
–
Los
tipos de datos que puede contener un objeto PKCS7 son:
-
data (para mail de datos)
-
signeddata (para mail firmado)
-
envelopped data (para mail cifrado)
-
signedandenvelopeddata ( pero no se usa en la practica)
-
Vulnerabilidades
Las
principales vulnerabilidades de una red son:
-
Sniffing (escuchar). Es la posibilidad de que un atacante escuche una comunicación
que se produce en la red. Se puede evitar con el uso de Hubbs, pero en
la practica lo que se hace es establecer una conexión de red tipo
Switch, de forma que los paquetes entre A y B no se reparten por toda la
red, ya que los circuitos de comunicación son independientes.
-
Spoofing (suplantación de identidad). Es un ataque a la autenticidad,
consiste en introducirse en la cuenta de un usuario sin serlo, o mandar
un mail en nombre de otro. La solución es la firma electrónica
y el uso de passwords.
-
Hijacking (suplantación de conexión). Pongamos que A establece
una conexión autentificada con B, llega C y suplanta a A en la conexión,
eso es Hijacking. Una solución es establecer una comunicación
cifrada con una llave transmitida de forma segura, o bien, usar el ppp
con autentificación chap. El chap es un protocolo que no transmite
el password en claro, sino q
envía un reto ( con lo que evita el spoofing) y cada cierto tiempo
vuelve a enviar otro.
-
Denial of Service. Consiste
en atacar un punto de la red de forma que todos los servicios ofrecidos
por dicha red dejen de funcionar. Este tipo de ataque es el mas habitual
debido a que es fácil de conseguir.
-
Intrusión. Este último tipo de vulnerabilidad consiste en
atacar un servidor para entrar poder colarse en él sin necesidad
de autentificación.
Estos
dos último problemas están muy relacionados con los fallos
del software.
-
Firewalls
Para
proteger una red local de los ataques la mejor medida es poseer un software
de calidad actualizado, pero otra opción es el uso de un cortafuegos
( firewall) que establezca una barrera entre la red local e Internet.
3.1.Componentes
En
los firewalls podemos encontrar básicamente dos tipos de componentes:
-
los filtros, que son los dispositivos capaces de determinar si un paquete
se debe transmitir al interior de la red o no
-
los nodos bastión, que son ordenadores dedicados exclusivamente
a servir de separador entre la red interna e Internet.
3.2.Técnicas
La
principal técnica que se utiliza en los firewalls es el filtrado
de paquetes, y consiste en controlar
selectivamente qué paquetes circulan entre la red local e Internet,
y viceversa, mediante el uso de unas reglas que especifican que tipos de
paquetes pueden circular y cuales deben bloquearse. Estas reglas se basan
en estudiar la Ip de origen, la IP de destino, el puerto de origen y de
destino, ...
Tema 4: Seguridad en Sistemas Operativos.
-
Identificación y autentificación. Passwords
En
UNIX el acceso al sistema se realiza en base a un mecanismo de login y
password. En primer lugar el sistema pregunta el login ( o nombre de usuario)
para comprobar si dicho login pertenece a los usuarios del sistema, en
caso afirmativo pide un password ( o palabra de acceso), lo busca en el
fichero /etc/passwd y si ambos coinciden da acceso al usuario. En caso
negativo deniega el acceso.
Antiguamente
el fichero /etc/passwd tenia el siguiente formato:
User:password:uid:gid:nus:dir:shell
Pero
como salta a primera vista no era muy apropiado ya que cualquiera que consiguiera
una copia del fichero tendría los logins y passwords de todos los
usuarios de la maquina.
Actualmente
el fichero se descompone en /etc/passwd y en /etc/shadow donde los datos
se organizan de la siguiente forma:
/etc/passwd
-> user:x:uid:....
/etc/shadow
–> user :passwd :x :x :x :x....
La
diferencia radica en que el fichero /etc/shadow esta cifrado y nadie puede
descifrarlo, ni tan siquiera el root. Para poder validar al usuario lo
que se hace es coger el password y cifrarlo con el mismo mecanismo con
el que se halla cifrado el fichero /etc/shadow. Si ambos cifrados coinciden
se da acceso y sino no.
-
Seguridad en UNIX.
2.1Acceso
a ficheros y directorios
El
UNIX estándar utiliza un mecanismo de control de accesos en el que
cada usuario tiene la posibilidad de otorgar y denegar los derechos de
acceso sobre los sus objetos (ficheros de datos, directorios, programas,
etc). El mecanismo de seguridad clásico de UNIX para el control
de accesos se basa en la definición de tres clases de usuarios.
Cada una incluye un usuario o grupo de usuarios del sistema a los que les
puede conferir una serie de derechos de acceso sobre los objetos. Las tres
clases se corresponden con los siguientes usuarios
u:
usuario propietario de la cuenta
g:
resto de usuarios de su grupo
o:
resto de usuarios de otros grupos
Todo
objeto accesible en UNIX tiene asociados 9 bits indicando que derechos
de acceso tienen los distintos usuarios sobre el mismo. Estos bits se distribuyen
en 3 grupos de 3 bits y definen los permisos de acceso al objeto para las
tres clases de usuarios anteriores. En cada grupo de bits, cada bit representa
la presencia o ausencia de uno de los tres tipos de acceso al objeto
r:
permiso de lectura
w:
permiso de escritura
x:
permiso de ejecución
El
usuario poseedor de un objeto puede cambiar los permisos de acceso mediante
el uso de la orden chmod y, modificando sus parámetros de entrada,
establecer los nuevos permisos. Por ejemplo: la orden chmod 700 daría
permisos de rwx al usuario propietario de la cuenta, pero se los denegaría
al resto de usuarios de la máquina.
2.2Bit
suid
Aunque
los permisos de acceso más usuales son rwx, existe el permiso s.
Dicho permiso esta pensado para aquellas ocasiones en las que usuarios
o procesos sin privilegios especiales necesitan llevar a cabo tareas que
requieren permisos de los que no disponen normalmente. Por ejemplo, un
usuario quiere cambiar su password de acceso, pero la orden passwd es propiedad
del root, por tanto no puede usarla. En estos casos UNIX proporciona un
medio de conceder temporalmente una serie de privilegios mediante el uso
del programa setuid, que es aquel que asume un UID efectivo distinto al
UID real mientras se ejecuta. En concreto el UID efectivo pasa a ser el
del propietario del fichero en lugar del UID del usuario que lo ejecuta.
Así, el usuario que lo llama adquiere los privilegios del propietario
mientras dura la ejecución del programa. En el caso del ejemplo
anterior, al ejecutar la orden passwd las variables asociadas al proceso
quedan como sigue:
Usuario 501,100
Antes
Después
UID 501
501
GID 100
100
EUID 501
0
EGID 100
0
De
esta forma se puede cambiar el password de acceso sin problemas.
La
existencia del setuid conlleva unos riesgos de seguridad evidentes, ¿
que pasaría si un usuario consigue una copia del shell propiedad
del root que sea SUID? Al ejecutarla adquirirá todos los privilegios
del root y podrá ejecutar cualquier orden y acceder a todo el sistema
sin restricciones.
2.3Passwords
Este
apartado coincide con el punto primero de este tema.
Tema 5: Amenazas programadas (virus).
-
Clasificación de amenazas
Una
de las amenazas fundamentales a la seguridad informática son las
amenazas programadas o también conocidas como virus, se trata de
código específicamente diseñado para atacar intencionadamente
las medidas de seguridad del sistema.
Existen
varios tipos de amenazas programadas:
-
Virus: son trozos de código que
se “adhieren” a uno o varios programas modificando su código para
realizar ciertas tareas. Cabe señalar que los virus por si solos
no pueden funcionar, es decir, ellos mismos no pueden auto-ejecutar su
código y ponerse en marcha, para que un virus actúe es necesario
haber ejecutado el programa infectado previamente. La ejecución
de un programa infectado con un virus podría traer consecuencias
catastróficas, puesto que según el tipo de virus podemos
desde perder toda la información almacenada en el disco duro hasta
enviar datos confidenciales almacenados en el ordenador por toda la red.
-
Gusanos: este tipo de amenazas si que son
programas independientes capaces de auto-replicarse. Su objetivo final
no es destruir información o modificar otros programas sino que
se dedican a replicarse hasta saturar los recursos de la maquina, provocando
una denegación de servicio. Normalmente actúan en entornos
de red donde se reproducen y se “arrastran” de un pc a otro.
-
Troyanos: son fragmentos de código
que se esconde en el interior de un programa aparentemente inofensivo,
y que desarrolla actividades distintas del propósito aparente del
programa que le sirve de anfitrión. A diferencia de los gusanos
o los virus, un troyano es incapaz de replicarse, y su funcionamiento se
basa en la ejecución del programa original que lo contiene. De este
modo, suelen esconderse en programas aparentemente inofensivos, y distribuidos
en gran medida como software shareware o freeware.
-
...
-
Virus en MSDOS
En
el sistema operativo MSDOS podemos distinguir 2 tipos de virus:
-
Virus de boot: infectan los sectores
de arranque sustituyendo todo o en parte el contenido y se activan cuando
se ejecutan los programas incluidos en dichos sectores, es decir, cuando
se arranca desde el disquete o la partición que los contiene.
-
Virus de programa : infectan
cualquier tipo de fichero ejecutable y lo utilizan como medio de reproducción
y toma de control. El virus se activa cuando se ejecuta el fichero y no
cuando se edita, se copia o se lista su nombre (dir *.* o similares). Dentro
de este tipo podríamos establecer la siguiente clasificación:
-Residentes: toman
el control de la máquina de modo permanente hasta que se apaga o
se reinicia por software. Para ello se cargan como residentes en memoria
tras la ejecución del programa infectado. Desde la memoria pueden
interceptar ciertos servicios de interrupción e infectar cualquier
programa que sea ejecutado a continuación. Para eliminar
este tipo de virus no basta con borrar
o reparar los ficheros infectados, el virus podrá seguir infectando
otros programas desde memoria. La única solución en este
caso es apagar el ordenador y arrancar desde un disco del sistema limpio
y protegido contra escritura.
-De
acción directa: éstos no
permanecen en memoria después de ser ejecutado el programa infectado,
sino que proceden directamente a desarrollar la rutina de ataque.
-
Virus en macro
Este
tipo de virus es de los aparecidos mas recientemente, se basa en la posibilidad
de ejecutar tareas automatizadas que el propio usuario es capaz de programar
en aplicaciones comerciales tales como Microsoft Word, Excel. Son capaces
de auto-enviarse por correo electrónico a todas las direcciones
existentes en nuestra libreta de direcciones, asegurando así su
supervivencia. Los virus Melisa, o I love you pertenecen a este tipo.