0% encontró este documento útil (0 votos)
87 vistas103 páginas

U2 Seguridad Lógica

Cargado por

adrian
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
87 vistas103 páginas

U2 Seguridad Lógica

Cargado por

adrian
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

U2 Seguridad Lógica

U2 Seguridad Lógica

1 de 103
U2 Seguridad Lógica

Unidad 2: Seguridad Lógica

En esta unidad aprenderás:

La utilidad de las listas de control de acceso y sus propiedades.


Las políticas de contraseñas de usuarios.
Las políticas de almacenamiento de la información.
Diferentes medios de almacenamiento.
El concepto de criptografía y su función como mecanismo de seguridad.
Los diferentes tipos de criptografía.
Las diferencias entre los tipos de criptografía y sus usos mas comunes.
El concepto de firma digital.
El concepto de certificado digital.
El procedimiento de obtención del certificado digital.

2 de 103
U2 Seguridad Lógica

Introducción

Objetivos
La Unidad 2 'Seguridad lógica' está asociada al resultado de aprendizaje 2 del Real Decreto 1629/2009,
de 30 de octubre, por el que se establece el título de Técnico Superior en Administración de Sistemas
Informáticos en Red (ASIR) y se fijan sus enseñanzas mínimas.
Resultado de aprendizaje -2-
"Implanta mecanismos de seguridad activa, seleccionando y ejecutando contramedidas ante amenazas o
ataques al sistema."
Los objetivos de esta unidad van encaminados a que el alumnado, dentro de las funciones de la
administración segura de sistemas, adquiera las destrezas necesarias para:
- La adopción de prácticas seguras de acuerdo al plan de seguridad física del sistema.
- La selección y aplicación de técnicas y herramientas de seguridad activa que actúen como medidas
preventivas y/o paliativas ante ataques a al sistema.
− El análisis y aplicación de técnicas y herramientas de seguridad activa.

Conocimientos previos
La Unidad 2 continua el despliegue de conceptos básicos sobre seguridad, define el concepto de lista de
control de acceso, su funcionalidad y toca todo lo referente a las políticas de contraseñas.
También abarca todos los conceptos relativos al conocimiento de la criptografía como mecanismo de la
seguridad lógica y sus usos y aplicaciones prácticas.

3 de 103
U2 Seguridad Lógica

Contenidos

1. Introducción 2. Seguridad lógica

2.1 Listas de control de acceso ACL

2.2 Establecimiento de políticas de contraseña

2.3 Violación de contraseña por diccionario y fuerza bruta

2.5 Políticas de almacenamiento

3. Criptografía

3.1. Criptografía simétrica

3.2. Criptografía asimétrica

3.3. Comparativa

4. Firma digital

5. Certificados digitales

6. Casos prácticos

Noticias
Conceptos y vocabulario
Webs de interés
Bibliografía

4 de 103
U2 Seguridad Lógica

Seguridad lógica

Definición
Seguridad lógica son los procedimientos existentes para controlar el acceso lógico
no autorizado a la información, tanto si se intenta realizar mientras se encuentra
almacenada o durante la transmisión.

Objetivos
La Seguridad Lógica consiste en la aplicación de barreras y procedimientos que resguarden el acceso a
los datos y sólo se permita acceder a ellos a las personas autorizadas para hacerlo.
Existe un viejo dicho en la seguridad informática que dicta que 'todo lo que no está permitido debe estar
prohibido' y esto es lo que debe garantizar la Seguridad Lógica.
Los objetivos que se plantean serán:

Restringir el acceso a los programas y archivos.


Asegurar que los operadores no puedan trabajar sin una supervisión minuciosa y no puedan
modificar los programas ni los archivos que no correspondan.
Asegurar que se estén utilizados los datos, archivos y programas correctos en y por el procedimiento
correcto.
Que la información transmitida sea recibida sólo por el destinatario al cual ha sido enviada y no a
otro.
Que la información recibida sea la misma que ha sido transmitida.
Que existan sistemas alternativos secundarios de transmisión entre diferentes puntos.

5 de 103
U2 Seguridad Lógica

Listas de control de acceso

ACLs en el Sistema de Archivos


Las listas de control de acceso (ACLs, Access Control Lists) proporcionan un nivel adicional de seguridad
a los ficheros, extendiendo el clásico esquema de permisos en Unix.
Las ACLs permiten asignar permisos a usuarios o grupos concretos. Por ejemplo, se pueden dar
ciertos permisos a dos usuarios sobre unos ficheros sin necesidad de incluirlos en el mismo grupo.
Los archivos y directorios tienen conjuntos de permisos configurados para el propietario del archivo, el
grupo asociado con el archivo y los otros usuarios del sistema. Sin embargo, estos permisos tienen sus
limitaciones. Por ejemplo, no se pueden configurar diferentes permisos para usuarios diferentes. Para
solucionar este problema se crearon las Listas de Control de Acceso (Access Control Lists, ACLs).
El concepto de ACL permite un control más preciso que los permisos del archivo por sí solos, al dar al
propietario de un objeto la capacidad de conceder o denegar accesos usuario por usuario.
Este mecanismo está disponible en la mayoría de Unix (Solaris, AIX, HP-UX, etc.) y tambien en
GNU/Linux.
GNU/Linux soporta 2 tipos básicos de ACL:

ACL estándar: ACL de control de directorios y ficheros.


ACL extendida: ACL de directorio (máscaras) ACL que toman por defecto los ficheros creados en
ese directorio.

Las ACLs se pueden configurar:

1. Por usuario
2. Por grupo
3. A través de la máscara de permisos

Requerimientos del sistema


En general, para trabajar con ACL debemos comprobar que:

1. El núcleo debe soportar y estar compilado para soportar atributos extendidos y ACL
2. El sistema de archivos tiene que montarse con atributos extendidos y ACL
3. Se tienen que instalar las utilidades de espacio de usuario para establecer el ACL: paquete acl

1. En el caso de Ubuntu la utilización de ACL está activada en el Kernel.


2. Cuando se va a trabajar con ACL en un sistema de archivos determinado en el archivo /etc/fstab
hay que indicarlo de la forma:
# cat /etc/fstab | grep /

UUID=f0841ce6-c954-46da-84ac-fbc061fe3544 / ext4 acl,errors=remount-ro 0 1

Para ello editar este archivo y añadir 'acl' tal y como indica la linea anterior.
Para no tener que hacer un reboot, simplemente podemos remontar la partición para que use acl con:

# mount -o remount -o acl /dev/sdaX /

Ahora podemos ya utilizar ACL en nuestro sistema.

3. Instalamos el paquete acl (comprobar si viene ya instalado).


# apt install acl

En este paquete están las utilidades chacl, getfacl y setfacl


Nota: los datos de /etc/fstab pueden cambiar en función de la distribución Ubuntu utilizada y el
particionado del disco.

6 de 103
U2 Seguridad Lógica

Actividad -1-
Enunciado:

En los contenidos vistos sobre las ACL y su utilización sólo nos hemos referido a sistemas
operativos tipo Unix/Linux, en concreto Ubuntu.

Tarea:

Busca información sobre la utilización de ACLs en Windows.


Haz un resumen indicando los enlaces visitados

Actividad -2-
Enunciado:

Hemos visto cómo trabajan las ACL en sistemas de archivos ext3. Dependiendo de la versión
del kernel con el que trabajamos tendrá soporte o no para ACLs para determinados sistemas
de archivos.

Tarea:

Averigua la versión 3.2 del kernel de Linux para qué sistemas de archivos tiene soporte. En
concreto nos interesa averiguar si funciona en cifs y sshfs.
¿Conoces estos sistemas de archivos?
Busca información y haz un breve resumen. Indica los enlaces utilizados.

Actividad -3- Reflexión


Enunciado:

Hemos utilizado las ACL como extensión de los permisos asociados a archivos y directorios.
Pero nos preguntamos si la utilización de ACL queda reservada nada mas que a este ámbito.

Tarea:

¿Se pueden utilizar ACLs, por ejemplo, para filtrar el tráfico de la red?¿cómo lo hacen?
Averigua y explica muy brevemente.

Mostrar retroalimentación

Los routers proporcionan capacidad de filtrado de tráfico a través de las listas de control de acceso.

7 de 103
U2 Seguridad Lógica

Establecimiento de políticas de contraseña

Introducción
La utilización de contraseñas como mecanismo de protección es muy importante para la seguridad del
sistema. Nuestro sistema estaría desprotegido y vulnerable a cualquier intrusión.
Una contraseña fácilmente 'crackeable' es una puerta abierta a nuestro sistema, con todo lo que ello
supondría respecto a la seguridad de la información contenida en él.
Tanto en nuestro equipo personal como si se trata del administrador de sistemas informáticos, la creación
de contraseñas robustas es responsabilidad del usuario del sistema o del administrador, respectivamente.
Pero no solo se trata de crear contraseñas fuertes, sino también de almacenarlas en lugares seguros y
cambiarlas periódicamente.
En general las políticas de gestión de contraseñas indican que:

Deben tener un tamaño mínimo pero suficiente.


Deben tener caducidad.
Debe existir un histórico de contraseñas que impida repetir.
Deben ser de calidad y robustas.
Hay que dar formación a los usuarios sobre su protección.

Los ataques que se pueden producir con las contraseñas son:

Ataques por diccionario.


Ataques por fuerza bruta.

Estos ataques se pueden evitar eligiendo buenas contraseñas. Una buena contraseña típicamente respeta
los siguientes requerimientos:

Contiene una mezcla de letras, números, y caracteres especiales (tales como &,<, o #).
Por lo menos es de 8 caracteres.
No puede ser encontrada en ningún diccionario de lenguaje.

Muchas contraseñas son fáciles de descubrir porque son sencillas, relativamente cortas y son
normalmente creadas con palabras encontradas en un diccionario. Secuencias de números simples
también son contraseñas pobres.
Hay contraseñas que se obtienen a base de permutaciones de palabras de diccionario y que son también
muy fáciles de descubrir.
Por último, y también muy a menudo, muchos usuarios crean contraseñas basadas en información
personal, como puede ser el día de su cumpleaños, su nombre mezclado con otros caracteres, etc.
El reto para los usuarios es diseñar una contraseña robusta que a la vez sea fácil de recordar para ellos y
difícil de descubrir.
Una técnica bastante eficiente es crear una contraseña a base de caracteres fácil de recordar y luego
sustituir algunos de ellos por números (la 'e' por el '3', la 'i' por el '5',...) o al revés, definir una cadena de
dígitos y luego sustituir algunos de ellos por caracteres alfabéticos.
Otro punto muy importante respecto a las políticas de contraseñas es su almacenamiento. De nada sirve
diseñar contraseñas complejas y robustas si luego el usuario no es capaz de controlarlas. Ejemplos
típicos son contraseñas escritas en post-it pegados al monitor, o en archivos de texto en el escritorio del
usuario.
Lo ideal es que el usuario tenga sus contraseñas en su memoria y no necesite guardarlas en ningún tipo
de soporte. Lo cual es especialmente complicado cuando el usuario requiere de diferentes contraseñas
para realizar diferentes tareas. En grandes organizaciones este tema se está resolviendo aplicando el uso
de una única contraseña para realizar todas sus tareas, ya sean aplicaciones disponibles dentro de la
Intranet como en Internet. Esta técnica se denomina Single Sign On.
Por último comentar la conveniencia de obligar al cambio de contraseña cada cierto tiempo. E incluso la
posibilidad de 'vetar' la utilización de la misma contraseña en sucesivas renovaciones. El tiempo medio de
utilización de una contraseña no debería superar los dos meses y esto se debería de aplicar a
contraseñas utilizadas en cualquier ámbito (correo electrónico, redes sociales, ...). En el caso de la
contraseña de entrada a nuestro sistema podemos programar el vencimiento de la contraseña. El sistema
nos avisará y nos obligará a cambiarla.
Como referencia legal de la norma ISO 27001 se puede leer en [Link]
/controlar-acceso-norma-iso-iec-27001/ cómo establecer políticas de control de acceso.

8 de 103
U2 Seguridad Lógica

Actividad -4-
Enunciado:

En estos enlaces hay disponibles dos documentos relacionados con el tema de políticas de
contraseñas que tendreis que leer y hacer un resumen con los puntos clave.

INTECO_politicas_contraseñ[Link]
UPV_politica_contraseñ[Link]

ISO27001_2_comentadas.pdf

Tarea:

Realizar un resumen de ambos archivos

Mostrar retroalimentación

Política de gestión de contraseñas, puntos a tener en cuenta:

Tamaño mínimo
Caducidad
Historial
Calidad
Formación a usuarios

Comprobación de contraseñas
Existen diferentes procedimientos de generación de contraseñas válidas y de comprobación de la
fortaleza de nuestras contraseñas.
1. Generación de contraseñas válidas

Contraseña aleatoria segura

Utilizamos el comando pwgen que genera una contraseña aleatoria bastante segura contra cualquier
intento de ataque.

$ sudo apt install pwgen


$ pwgen -n -c -y -s -B 9 1

Esta orden genera una clave (1) que incluirá números (-n), mayúsculas y minúsculas (-c), símbolos
(-y), sin caracteres ambiguos (-B) y de tamaño nueve caracteres (9).

Contraseñas más fuertes:

Si lo que se quiere son contraseñas mas fuertes se puede utilizar la orden apg que habrá que
instalar:
$ sudo apt install apg
Se puede utilizar esta orden para generar claves seguras para protocolos inalámbricos WPA-
PSK:

$ apg -s -a 1 -m 63 -n 4

9 de 103
U2 Seguridad Lógica

¿Qué contraseña genera esta orden? Averiguar

10 de 103
U2 Seguridad Lógica

2. Prueba de fortaleza de las contraseñas personales


Podemos probar nuestras contraseñas personales en diferentes webs y de esa forma conocer la
fortaleza de las mismas.
La respuesta suele indicar el nivel de seguridad (bajo,medio,alto):[Link]
Este procedimiento es sencillo pero hemos de tener en cuenta que estamos facilitando nuestras
contraseñas que luego pueden ser utilizadas simplemente para conocer diferentes patrones de
contraseñas usuales de los usuarios.

11 de 103
U2 Seguridad Lógica

Ataque por diccionario y fuerza bruta

Ataque por diccionario


Un ataque de diccionario ocurre cuando una lista de contraseñas encriptadas del sistema
(usualmente almacenada en /etc/shadow en sistemas GNU/Linux) son obtenidas y luego
verificadas contra una lista de contraseñas encriptadas creadas desde un diccionario (o una lista
de palabras).
Si una de las contraseñas encriptadas creadas por el diccionario concuerda con la contraseña encriptada
del sistema el intruso sabe que esa entrada del diccionario es la contraseña del sistema y puede ser
usada para acceder al sistema sin autorización.
Los ataques por diccionario son útiles en contraseñas que utilizan palabras y frases comunes.
Este tipo de ataque suele ser más eficiente que un ataque de fuerza bruta ya que muchos usuarios suelen
utilizar una palabra existente en su lengua como contraseña para que la clave sea fácil de recordar, lo
cual, tal y como se comentó anteriormente, no es una práctica recomendable.
Los ataques por diccionario tienen pocas probabilidades de éxito en sistemas que utilizan contraseñas
fuertes con letras en mayúsculas y minúsculas mezcladas con números y símbolos. Sin embargo, para la
mayoría de los usuarios recordar contraseñas tan complejas resulta complicado.
Una forma sencilla de proteger un sistema contra los ataques por diccionario es establecer un número
máximo de intentos. Si se supera se bloquea el sistema automáticamente. Un ejemplo de este tipo de
sistema de protección es el mecanismo empleado en las tarjetas SIM que se bloquean automáticamente
después de tres intentos fallidos al introducir el código PIN.
Algunas de las herramientas más populares para llevar a cabo ataques de diccionario son:

1. Crack de Alec Muffett ([Link]


2. John the Ripper

Ataque por fuerza bruta


Un ataque por fuerza bruta se realiza probando todas las combinaciones posibles de letras, números y
caracteres especiales hasta encontrar aquella que permite el acceso.
Se pueden apoyar también en el uso de diccionarios pero éstos son diferentes. Teneis disponibles varios
diccionarios para fuerza bruta en [Link]
[Link]
Para cada una de las posibles combinaciones de clave se realiza el cifrado (o descifrado) hasta obtener el
otro miembro del par texto claro/texto cifrado. Hay que conocer el algoritmo de cifrado utilizado.
El número de claves posible será 2n (se entiende 2 elevado a n), donde n es la longitud de la clave. Este
valor crece muy rápidamente a medida que n aumenta.
Otro factor determinante en el coste de realizar un ataque de fuerza bruta es el juego de caracteres que
se puede utilizar en la clave. Contraseñas que sólo utilicen dígitos numéricos serán más fáciles de
descifrar que aquellas que incluyen otros caracteres, como letras.
También influye el número de caracteres o tamaño de la contraseña. Las que están compuestas por
menos caracteres serán también más fáciles de descifrar.
Los ataques por fuerza bruta, dado que utilizan el método de prueba y error, son muy costosos en tiempo
de cómputo.

Herramientas:

Bruter en entornos Windows.


Medusa en entornos Linux (incluida en Kali Linux).

Cómo crear diccionarios para fuerza bruta

12 de 103
U2 Seguridad Lógica

Vamos a comentar algunas herramientas incluidas en Kali Linux para la creación de diccionarios que
luego pueden ser utilizados en ataques por fuerza bruta.

Crunch
Crunch se puede usar con o sin conexión.
Genera una lista de palabras según lo que le indiquemos.
Podemos indicar la longitud máxima y mínima de la contraseña y también darle el conjunto de
caracteres que se quiere utilizar al crear el diccionario.
Crunch crea un diccionario con todas las combinaciones posibles.

Sintaxis:
crunch <min> <max> <conjunto-de-caracteres> -t <patron> -o <ruta>

crunch: comando
<min>: longitud mínima de la contraseña
<max> longitud máxima de la contraseña
<conjunto-de-caracteres>: conjunto de caracteres que se utilizarán para crear el diccionario.
-t <patrón>: especifica un patrón para la contraseña. Es opcional.
-o <ruta>: ruta donde se guarda el diccionario generado.

# crunch 3 4 administrador -o /root/Desktop/[Link]


Esta orden creará un diccionario con las posibles combinaciones de la palabra administrador con una
longitud de 3 a 4 caracteres. El archivo creado [Link] se guardará en formato de texto en el Escritorio.
Similar a como se muestra en la siguiente imagen:

Cewl
Hay que instalar la herramienta
Cewl funciona de forma similar a John The Ripper
Está escrito en Ruby.
Cewl funciona en base a la URL que le damos. Tomará esa URL y rastreará su camino hasta la
profundidad de 2 enlaces (por defecto) y buscará cada palabra que tenga la posibilidad de ser una
contraseña. Con todas estas palabras generará una lista para ser utilizada en un ataque de
diccionario.

Sintaxis:
cewl <url> -d <depth> -w <ruta>

cewl: comado
<Url>: URL que se va a utilizar como base del diccionario.
-d <depth>: indica el número de enlaces que se quiere profundizar al crear el diccionario.
-w <ruta>: indica la ruta donde se almacenan todas las contraseñas posibles.

Por ejemplo:
# cewl [Link] -d 2 -w /root/Desktop/[Link]

13 de 103
U2 Seguridad Lógica

El comando anterior creará un archivo de diccionario utilizando la palabra de la URL.


Vemos el contenido del archivo creado:

Cupp
Para instalar como utiliza git habrá que instalar primero este comando en Ubuntu y luego cupp.
Ejecutar desde /root:
# apt install git
# git clone [Link]

Cupp está escrita en Python.


Se basa en la costumbre de los usuarios de crear contraseñas utilizando patrones como fecha de
nacimiento, fecha de aniversario, nombre de la mascota, etc.
Antes de crear la lista de palabras, pide información sobre aquello en lo que se basará para generar
la lista.

Primero hay que iniciar cupp escribiendo la orden siguiente desde /root que es donde se encontrará el
directorio cupp:
#./cupp/[Link] –i
Una vez iniciado, pregunta la información sobre su objetivo como se muestra en la imagen:

14 de 103
U2 Seguridad Lógica

Vemos ahora que en /root existe un archivo [Link] que contiene una serie de combinaciones de los
datos introducidos.
Caso Práctico -7- Utilización de PyDictor.

Información
Cada día se producen gran cantidad de ataques por fuerza bruta. Aquí tienes algún ejemplo reciente que
en muy poco tiempo quedará desbordado por otros cientos de ellos e información.

Ataque a blogs WordPress ([Link]


bruta-esta-infectando-de-forma-masiva-blogs-wordpress)
Eset proporciona un documento con información sobre los problemas de la autenticación a través de
contraseñas. Está disponible en la carpeta Archivos de la Unidad 2 y se llama
doble_autenticacion_el_fin_de_las_contrasenas.pdf
INTECO (ahora INCIBE) dispone de una enciclopedia jurídica que tipifica algunos delitos
informáticos, entre ellos el ataque por fuerza bruta. Tienes un archivo pdf con toda la información
en [Link]
/doc/guia_glosario_ciberseguridad_metad.pdf

15 de 103
U2 Seguridad Lógica

Políticas de almacenamiento (solo leer)

Cómo se almacena la información


La importancia de la información, como activo de valor en la organización, obliga a que las soluciones de
almacenamiento cada vez tengan un mayor protagonismo.
La información se guarda en diferentes dispositivos de almacenamiento de datos, en función de su ciclo
de vida y de su valor, ya que no toda la información es igual de crítica y, por lo tanto, no puede ser tratada
de la misma manera.
La información es mas o menos crítica en función de parámetros como:

su uso
antigüedad
valor estratégico, etc.

Además, la organización necesita infraestructuras flexibles y soluciones que protejan y resguarden la


información y se adapten a los rápidos cambios del negocio y las nuevas exigencias del mercado,
garantizando el rápido retorno de la inversión efectuada en los sistemas de almacenamiento.
En la figura se identifican los diferentes sistemas de almacenamiento de información en la organización.

Almacenamiento local.

Los empleados de la organización suelen utilizan ordenadores para realizar su actividad


profesional. La información se genera en estos equipos y desde ellos se modifica y transmite.
Cada uno de estos equipos dispone de un sistema de almacenamiento local, normalmente
discos duros donde se guarda la información.

Servidores de almacenamiento en red (NAS).

Para poder disponer de un lugar común de trabajo donde almacenar el resultado de los
trabajos individuales y poder compartir información entre los diferentes usuarios de la empresa
se dispone de servidores de almacenamiento en red.

Dispositivos externos.

Adicionalmente se puede disponer de sistemas externos que, conectados directamente a los


equipos, permiten un almacenamiento extra de la información, evitando que se ocupe este
espacio en el equipo. Estos pueden ser discos duros externos conectados por USB o Firewire,
CD o DVD, USB Pendrives o cintas magnéticas.

Sistema de copias de seguridad.

Se establece un procedimiento para sistematizar la realización de copias de respaldo de la


información generada en la empresa.

16 de 103
U2 Seguridad Lógica

Políticas de uso de los sistemas de


almacenamiento
Para mantener de forma segura y eficaz los sistemas de almacenamiento es importante que la
organización especifique cuáles son las políticas que deben seguir todos los usuarios de los sistemas
para evitar que aumente la capacidad de los mismos de modo desordenado y la consiguiente falta de
control o pérdida de información.
Las cuatro políticas necesarias en la organización respecto a los sistemas de almacenamiento y que
deben ser conocidas por los propios usuarios y controladas por los responsables, son las siguientes:

Política de almacenamiento local en los equipos de trabajo.


Política de almacenamiento en la red corporativa.
Política sobre el uso de dispositivos externos.
Política de copias de seguridad

Esquema: Políticas de almacenamiento en los entornos empresariales

Políticas de almacenamiento local en los


equipos de trabajo
En primer lugar, la organización establece unas normas de almacenamiento para los equipos de trabajo
de la empresa (equipos de sobremesa, equipos portátiles, teléfonos y otros dispositivos) que los usuarios
deben cumplir.
Esta política incluye, al menos, los siguientes aspectos:

Qué tipo de información se puede almacenar en los equipos locales.

Cuánto tiempo debe permanecer dicha información en los mismos.

Permanencia de la información en la red local una vez transmitida a los servidores corporativos.

Ubicación dentro del árbol de directorios del equipo.

Utilización de sistemas de cifrado de información en los documentos empresariales.

Normativa para los empleados relativa al almacenamiento de documentos personales, archivos de


música, fotografías, etc, y en concreto relativa a archivos que estén bajo algún tipo de regulación en
cuanto a derechos de autor (descargas desde los equipos de trabajo).

17 de 103
U2 Seguridad Lógica

Políticas de almacenamiento en la red


corporativa
En la red corporativa es necesario distinguir entre:

Información general de la empresa que deben utilizar todos los usuarios


Información de trabajo de los empleados almacenada en esta red corporativa

1. Los servidores de almacenamiento disponibles en la red corporativa están configurados para poder
almacenar y compartir aquella información de la organización que deba ser utilizada por los empleados.
Los controles de acceso son definidos por la dirección y el responsable de sistemas, con el objetivo de
definir quién puede acceder y a dónde.
El contenido de la información almacenada se determina a través de una política de uso que debe
considerar los siguientes aspectos:

Tipo de información almacenada, momento de su almacenamiento y ubicación dentro de los


directorios del sistema.
Personas encargadas de la actualización de dicha información en caso de modificación.

2. Los empleados pueden disponer de carpetas personales dentro de la misma red corporativa. En estas
carpetas se almacena información que, si bien tiene relación con su trabajo, no necesariamente es
compartida por otros miembros del equipo. Para controlar dicha información, se deben especificar
políticas que incluyan los mismos aspectos que los relacionados con el almacenamiento local.
Es importante concienciar al empleado que toda aquella información almacenada en estas carpetas debe
ser relevante para el trabajo. La información carente de valor se elimina una vez que se haya utilizado. Así
se evita que la capacidad de almacenamiento se vea desbordada innecesariamente.
Ejemplo: se genera un vídeo corporativo que ocupa varios Gb de información. Dicho vídeo se ubica
primeramente en una localización en la red y posteriormente varios empleados lo almacenan en sus
unidades locales y vuelcan dicha información en sus buzones personales. Pasado un tiempo, se analiza la
cantidad de archivos exactamente iguales que se encuentran almacenados. Se identifican varias copias
del vídeo en la red corporativa. A la vista de esta situación, la empresa decide llevar a cabo una política de
control y revisión de la información almacenada y ajuste a las necesidades concretas.

Políticas sobre el uso de dispositivos


externos conectados
Especialmente importante son las normas relativas al uso de equipos externos que, conectados
directamente a los equipos de trabajo, permiten el almacenamiento extra de información con el objeto de
trasportarla a otra ubicación o simplemente disponer de una copia de seguridad personal.
Esta política incluye al menos los siguientes aspectos:

Si está permitido o no el uso de estos dispositivos.

En caso afirmativo, qué tipo de información en ningún caso está permitido almacenar, como aquella
que contiene datos personales de clientes, etc.

Qué medidas de borrado se han de utilizar cuando esta información deja de ser necesaria.

Como referencia legal de la norma ISO 27002 se puede leer en [Link]


cómo identificar los activos en la organización y definir las responsabilidades para una protección
adecuada.

18 de 103
U2 Seguridad Lógica

Criptografía

Introducción
El término Criptología viene de:

Criptología: cryptos (“oculto”) + logos (“tratado”)

y se compone de

Criptología = Criptografía + Criptoanálisis

Criptología
Disciplina que trata los problemas teóricos relacionados con la seguridad en la transmisión de
mensajes en clave, entre un emisor y un receptor, a través de un canal de comunicación.
Criptografía
Disciplina que engloba diferentes técnicas capaces de transformar datos legibles en datos no
legibles (y viceversa), por medio de funciones matemáticas (algoritmos).
De esta forma se previene ante la posibilidad que una persona no autorizada, si consigue acceder a
los datos, no sea capaz de entender su significado.
Criptoanálisis
Consiste en comprometer la seguridad de un criptosistema.
Los algoritmos transforman texto plano en un código equivalente (llamado texto cifrado), para
transmisiones o almacenamiento de datos, utilizando una clave. Luego, este texto cifrado puede ser
transformado a texto plano otra vez aplicando el mismo algoritmo y una clave.
Como vemos toda la seguridad reside en la clave de cifrado.

Criptosistema
Definiremos Criptosistema como la composición de cinco conjuntos:

1. El conjunto de todos los mensajes sin cifrar (texto claro, o plaintext) que pueden ser enviados.
2. El conjunto de todos los posibles mensajes cifrados (criptogramas).
3. El conjunto de claves que se pueden utilizar en el criptosistema.
4. El conjunto de transformaciones de cifrado o, dicho de otra forma, la familia de funciones que se
aplica a cada mensaje sin cifrar para obtener su mensaje cifrado equivalente. Debe existir una
transformación diferente para cada posible clave.
5. El conjunto de transformaciones de descifrado, análogo al anterior pero para realizar el descifrado.

Todo criptosistema debe cumplir, de forma obligatoria, la siguiente condición:

Si tenemos un mensaje, lo ciframos empleando una clave y luego lo desciframos empleando la


misma clave, debemos obtener de nuevo el mensaje original.
Así mismo, las transformaciones de cifrado y descifrado deben ser fácilmente ejecutables desde el punto
de vista computacional con independencia de las claves usadas (imaginar lo que supone esperar varias
horas, o días, para que termine de cifrarse un mensaje que debe enviarse con urgencia).

Actividad -1- Criptoanálisis


Enunciado:

A menudo se confunde Criptografía con Criptoanálisis.

Tarea:

19 de 103
U2 Seguridad Lógica

Indica la diferencia entre ambos conceptos.

Actividad -2- Reflexión


El objetivo de la criptografía es buscar sistemas de encriptación en los que:

1. El precio para 'reventar' la encriptación sea más caro que el valor de la información.
2. El tiempo necesario para 'reventar' la encriptación sea más largo que el tiempo de vida de la
información.

Tipos de Criptosistemas
Existen dos tipos de criptosistemas:

Simétricos o de clave privada: utiliza la misma clave para encriptar y para desencriptar.
Asimétricos o de clave pública: utiliza dos claves distintas.

La robustez del método de encriptación se determina por el algoritmo utilizado y por el tamaño de la clave.
En general, se dice que cuanto más grande es la clave más seguro será. Pero esto no es del todo cierto
ya que depende del algoritmo utilizado. Existen algoritmos que son más seguros cuanto mas corta es la
clave.
En la práctica, se suele emplear una combinación de estos tipos de criptosistemas, puesto que la
criptografía asimétrica tiene el inconveniente de ser computacionalmente mucho más costosa que la
simétrica.
En el mundo real 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 (cortas).

20 de 103
U2 Seguridad Lógica

Criptografía simétrica

Criptografía simétrica
Este tipo de criptografía se comenzó a utilizar desde muy antiguo. Ya en Egipto y en la época de Julio
César se comenzaron a utilizar sistemas para hacer ilegibles mensajes intercambiados por motivos
estratégicos.
La siguiente figura muestra el funcionamiento del cifrado simétrico:

Observar como un texto plano o claro se cifra haciendo uso de una clave que se ha de transmitir para que
el receptor utilizando esta misma clave pueda descifrar el texto y leerlo.

Ventajas

Es simple, rápida y eficiente.


Las claves deben tener mas de 40 bits.

Desventajas

La distribución de las claves


La dificultad de almacenar y proteger muchas claves diferentes. Cada par de
usuarios debe tener su clave secreta particular.

La criptografía simétrica puede ser:

criptografía simétrica de bloques (block cipher)

criptografía simétrica de flujo (stream cipher)

criptografía simétrica de resumen (hash functions)

Los principales algoritmos simétricos actuales son: DES, TDES, IDEA, RC5 y AES (es el nuevo stándar).

Cifrado en bloque: DES (Data Encription


Standard)
El texto en claro se cifra en bloques de tamaño fijo.
Se trabaja sobre un bloque de texto plano de n bits para producir un texto cifrado de n bits.
El tamaño de bloque suele oscilar entre 64 y 256 bits.
Nunca deben cifrarse los bloques individual e independientemente, sino encadenados, de manera que el
cifrado de cada bloque dependa de todos los bloques que lo preceden.
DES se suele utilizar en aplicaciones bancarias.
Propiedades necesarias para un buen algoritmo de cifrado en bloque

Confusión

Un pequeño cambio en la clave debería producir un cambio del 50% del texto
cifrado resultante.
Un atacante haciendo una búsqueda exhaustiva de claves no recibirá ninguna señal de

21 de 103
U2 Seguridad Lógica

que está acercándose a la clave correcta.

Difusión

Un pequeño cambio en el texto en claro debería producir un cambio del 50% del
texto cifrado resultante.
Oculta las relaciones estadísticas entre el texto claro y el texto cifrado.

Completitud

Cada bit del texto cifrado dependerá de cada bit de la clave.


El atacante no podrá obtener partes válidas de la clave mediante ataques de “divide y
vencerás”

Cifrado en flujo
El texto en claro se cifra bit a bit.
El cifrado de flujo utiliza una clave de codificación diferente para cada bit o byte del texto claro, valor que
debe ser generado por un algoritmo.

texto claro (mi)


secuencia cifrante (si)

Cifrado: ci = mi + si
Descifrado: mi = ci + si

La secuencia cifrante se crea mediante un algoritmo determinista de generación de números


pseudoaleatorios a partir de una semilla, que constituye la clave secreta.
Los cifradores de flujo se utilizan donde se dispone de un ancho de banda restringido (el número de bits
que se transmiten a la vez).
Es un sistema de cifrado muy rápido.
Los algoritmos más conocidos de este tipo están RC-4, SEAL y A5.
RC-4: Algoritmo de RSA (Rivest Cipher #4) desarrollado en el año 1987 (usado en Lotus Notes).
SEAL: Algoritmo propuesto por IBM en 1994
A5: El uso habitual de este algoritmo lo encontramos en el cifrado del enlace entre el abonado y la central
de un teléfono móvil tipo GSM.
Nota: Algoritmo determinista es un algoritmo que es completamente predictivo si se conocen sus
entradas. Es decir, si se conocen las entradas del algoritmo siempre producirá la misma salida.

Comparación entre cifrado en bloque y flujo

Ambos tipos de algoritmos son muy rápidos, adecuados para cifrar grandes volúmenes
de datos, pero los de flujo son incluso más veloces.

Los algoritmos de flujo pueden cifrar datos producidos a ráfagas sin esperar a que estén
los bloques completos.

En los cifrados de flujo nunca se debe reutilizar la misma clave para cifrar dos textos.

Las longitudes de clave oscilan entre los 32 y 256 bits.

Ambos presentan el problema de distribución de la clave: ¿cómo hacer que el emisor y


receptor acuerden una misma clave secreta de cifrado?

22 de 103
U2 Seguridad Lógica

Criptografía simétrica: Sustitución


Es el sistema más básico. La clave consiste en una tabla de equivalencias de caracteres.
Ejemplo -1-:
a b c d e f g h i j k l m n ñ o p q r s t u v w x y z

¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

b c v x z g f d s a t r e w q p o i u y ñ l k j h n m
Utilizando esta clave podemos codificar la frase

“de lo que sucedio al ingenioso hidalgo en la venta que el imaginaba ser castillo”

y sustituirla por

“xzmrpmilzmylvzxspmbrmswfzwspypmdsxbrfpmzwmrbmkzwñbmilzmzrmsebfswbcbmyzumvbyñsrrp”

Esta clave es llamada “simétrica” porque es la misma clave la que se utiliza para codificar y para
descodificar.
Ejemplo -2-:
La clave de César, aparentemente utilizada por Julio César en la guerra de las Galias, consistía
simplemente en sustituir cada letra por la que la sigue x puestos después. Así, por ejemplo, si sustituimos
cada letra por la que sigue tres puestos después (x=3) tendremos la clave:
a b c d e f g h i j k l m n ñ o p q r s t u v w x y z
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

d e f g h i j k l m n ñ o p q r s t u v w x y z a b c
El sistema es muy fácil de descifrar si se utilizan textos largos ya que en cada idioma cada carácter se
repite con una proporción diferente y conocida. Para evitar esto se pueden introducir variaciones tales
como utilizar dos o tres caracteres diferentes para sustituir un carácter original.

Suetonio (69 - 140). Doce Césares. Decía:


[...] Para los negocios secretos utilizaba una manera de cifra que hacía el sentido ininteligible,
estando ordenadas las letras de manera que no podía formarse ninguna palabra; para
descifrarlas tiene que cambiarse el orden de las letras, tomando la cuarta por la primera, esto
es “d” por “a”, y así las demás [...]

Otra solución es la Confusión intercalada que consiste en introducir caracteres adicionales aleatorios
con una periodicidad determinada.

Ejercicios
Ejercicio 1: Utilizar la clave simétrica "Cesar x=5" para encriptar el texto "Encriptar por sustitucion es muy
sencillo".
Ejercicio 2: Desencriptar la frase "cskrucsnwkrk dwlj uskrk jnwerlsdt werhsjsrvwkweuj hlsj" utilizando la
clave "Cesar x=9".

Encriptación simétrica: Permutación


Consiste en alterar el orden de las letras siguiendo una regla determinada.
Normalmente se utiliza una tabla de tamaño determinado en la que se inserta el texto original que es
transformado mediante la sustitución de las columnas por las filas.
Por ejemplo, utilizando la misma frase anterior

23 de 103
U2 Seguridad Lógica

“de lo que sucedio al ingenioso hidalgo en la venta que el imaginaba ser castillo”

podemos utilizar una tabla de ocho filas y diez columnas


d e l o q u e
l
s u c e d i o a

i n g e n i o s o
h i d a l g o e
n l a v e n t a
q u e e l i m
a g i n a b a s e
r c a s t i l l o
Sustituyendo las filas por las columnas obtenemos el texto codificado:

“ds n areuih qg cniluiclegdaenaodea asinlvebtqoigelaiu oon leas tislloeameo

Ejercicios
Ejercicio 3: Desencriptar la frase "Toonamaanntbonnttoe dtaa,lFoo, e. tIcr mmason" que está permutada
con una tabla de 7x7.

Encriptación simétrica: Esteganografía


La esteganografía es un caso especial de confusión intercalada.
Consiste simplemente en camuflar el texto intercalándolo dentro de otro mensaje.
Podemos elaborar un mensaje de contenido irrelevante pero de forma que, siguiendo cierta pauta de
eliminación, podamos reconstruir el texto original. Por ejemplo, si introducimos la frase “Debe lograrse que
la suma ceda el sitio a la inversa genial o someter hacia debajo algo” en una tabla de ocho columnas:
D e b e l o g
r a r s e q u
e l a s u m
a c e d a e
l s i t i o
a l a i n v
e r s a g e n
i a l o s o
m e t e r h a
c i a d e b a
j o a l g o
Para descodificarla necesitaremos superponer una matriz perforada como

Esta matriz puede describirse en formato binario, sustituyendo los espacios blancos
por unos y los negros por cero, de forma que quedaría:
11000110, 00000111, 11000110, 00111000, 00000111, 10101110, 00000111,
10001011, 00000110, 01001000, 00011111.

24 de 103
U2 Seguridad Lógica

Aún más simplificada y fácil de transmitir quedará la clave si pasamos esos valores
binarios a los decimales correspondientes: 198, 7, 198, 56, 7, 174, 7, 139, 6, 72, 31.
En cualquier caso, al aplicar la clave al texto codificado obtendremos:

D e l o
q u
e s u
c e d
i o
a l i n
g e n
i o s o
h
i d
a l g o
La esteganografía ha resurgido actualmente por la utilización de ficheros informáticos de imágenes
digitalizadas para ocultar textos. De hecho es una forma habitual de proteger la propiedad de una imagen
publicada en Internet. Si alguien la copia fraudulentamente le pasará desapercibido que en el código
digital de la imagen está intercalado el nombre del propietario.

Ejercicios
Ejercicio 4: Desencriptar la frase
"¡Hay un ágape en casa de Carmela y Mariluz!"
con la clave
OJO, el blanco despues de 'un'

Métodos mixtos y múltiples


Para dificultar aún más el proceso, podemos aplicar al texto original una serie de sustituciones y
permutaciones sucesivas.
La idea es combinar varios sistemas de cifrado sencillos para dar lugar a uno mas potente.
Durante la segunda guerra mundial, los ejércitos combatientes utilizaron
unas máquinas, precursoras de los ordenadores, que realizaban complejos
procesos de sustitución y permutación. Es bien conocido el caso de la
máquina “Enigma” que utilizó el ejército alemán sin darse cuenta que los
aliados eran capaces de descifrar todos sus mensajes.
Esta máquina, parecida a una máquina de escribir (ver imagen) disponía de
una serie de rotores interconectados que codificaban automáticamente
cada tecla pulsada según un complejo proceso mecánico. Se cree que los
textos tratados con ella no hubieran podido ser desencriptados, con la
tecnología de la época, de no haber sido porque una de las máquinas
permaneció durante unas horas en poder de los servicios secretos polacos
poco antes de su invasión.
Los protocolos de encriptación modernos utilizan también en alguna fase
claves simétricas mixtas. El algoritmo DES, actualmente utilizado en cajeros automáticos, o IDEA,
25 de 103
U2 Seguridad Lógica

utilizado en el protocolo PGP que analizaremos más adelante, son sistemas de generación de claves
simétricas mixtas y múltiples.
Otra máquina que utilizaba métodos mixtos es la Purple (Japonesa) utilizada en 1940.

Sistemas de cifrado híbridos

Existen también sistemas de cifrado híbridos que utilizan tanto la encriptación simétrica
como la asimétrica.

Funciona mediante el cifrado de clave asimétrica para compartir una clave para el
cifrado simétrico.

En cada mensaje la clave simétrica utilizada es diferente, por lo que si un atacante


pudiera descubrir la clave simétrica, solo le valdría para ese mensaje y no para los
restantes.

Tanto PGP como GnuPG usan sistemas de cifrado híbridos. La clave simétrica es
cifrada con la clave pública o asimétrica ,y el mensaje saliente es cifrado con la
clave simétrica, todo combinado automáticamente en un sólo paquete. El
destinatario usa su clave privada para descifrar la clave simétrica y acto seguido usa la
clave simétrica para descifrar el mensaje.

Funciones hash
Una herramienta fundamental en la criptografía, son las funciones hash o resumen.
Se incluyen dentro de la criptografía simétrica.

Las funciones hash son usadas principalmente para resolver el problema de la


integridad de los mensajes, así como la autenticidad de mensajes y de su origen.

No utilizan clave propiamente sino lo que se llama la huella digital, fingerprint, resumen o hash.
El objetivo de este sistema es: dado un texto plano de entrada de longitud variable, se ejecutan sobre una
serie de operaciones y se obtiene como salida el hash o resumen de longitud fija e independiente del
tamaño de dicho texto. Este hash no se puede considerar el texto cifrado ya que no existe ningún proceso
inverso que aplicado sobre el hash devuelva el texto plano original.

Las funciones HASH sirven para garantizar la integridad de los textos

La función hash es también usada en la firma digital. Como los mensajes a firmar son, en general,
demasiado grandes, si utilizáramos la criptografía de clave pública generaríamos un mensaje de mucho
mayor tamaño que el original.
La solución es no cifrar todo el mensaje, sino solamente una parte de éste, pero que tiene que
representar al mensaje en su totalidad. Esas funciones tienen la propiedad de que es imposible
cambiar el documento sin cambiar el correspondiente bloque autenticador.

Ejemplo:

El código ASCII asigna un número a cada letra o signo de puntuación. Es una clave simétrica estándar
internacional que utilizan, por ejemplo, todos los ordenadores.
Podemos sustituir cada letra de un texto por su código ASCII.
La figura siguiente muestra un caso concreto:

26 de 103
U2 Seguridad Lógica

Aquí, cada tres caracteres, con sus códigos ASCII, se opera (1º-2º)*3º. La suma de los resultados es una
función HASH que identifica perfectamente el texto.
Cualquier modificación en el texto provoca un cambio en el valor de la función HASH.
Por ejemplo, al sustituir “rincón” por “rincon” sin acento, el valor HASH ha pasado de -11.399 a 3.121

Las funciones hash o resumen (digest) asocian a los mensajes una cadena de longitud 160 bits que los
hace más manejables para el propósito de firma digital.
Es decir, un mensaje de longitud variable se transforma de forma 'única' a un mensaje de longitud
constante.
Hasta cierto punto recuerda a la letra del DNI. El procedimiento es sencillo. Basta con coger el número del
DNI y dividirlo por el número 23. El número que sale del resto se hace corresponder con una letra, por
medio de la siguiente correspondencia (haga la prueba con su propio número):
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 T R W A G M Y F P D X
B N J Z S Q V H L C K E
Las funciones resumen para criptografía habitualmente dan resúmenes hash entre 128 y 160 bits. Las
mas utilizadas son las denominadas MD4, MD5, RIPEMD-160 y SHA-1.

Actividad -3-
Enunciado:
Además de las famosas máquinas para encriptar Enigma y Purple seguro que existen otras no tan
conocidas pero que han ayudado en conflictos militares al pase de mensajes cifrados.
Tarea:
Encuentra en la web dos casos mas y haz un breve resumen de ellos.

27 de 103
U2 Seguridad Lógica

Sistemas de clave simétrica (privada)

Algoritmos de clave simétrica (privada)


Los principales algoritmos simétricos actuales son: DES, TDES, IDEA, RC5 y AES.
DES

En 1977 el Departamento de Comercio y la Oficina Nacional de Estándares de Estados


Unidos, en colaboración con IBM, desarrolló el sistema de encriptación simétrico llamado Data
Encryption Standard (DES).
Es un cifrado de bloque de 56 bits para la clave y 8 bits de paridad. No es del todo seguro. En
1999 fue reventado por primera vez y hasta entonces fue utilizado por el Gobierno de Estados
Unidos en todas sus comunicaciones.
Es un algoritmo rápido pero con clave de poca longitud.

TDES/3DES (TripleDES)

Aparece en 1995 y consiste en aplicar el algoritmo DES tres veces (encriptar-desencriptar-


encriptar) con tres claves diferentes dando un resultado de 64 * 3 = 192 bits de los cuales
168 son de clave y 24 de paridad. Este método hace mas difícil romper el cifrado.
Es utilizado principalmente en la banca en sus tarjetas de crédito. Utilizado tambien en
comercio electrónico.
Está cayendo en desuso y ha sido 'reventado' en numerosas pruebas de criptoanálisis.

AES

Es el algoritmo que reemplazó a DES. Creado por los belgas Joan Daemen y Vincent Rijmen.
Es un cifrado por bloque de 128-bit con claves de longitud variable de 128, 192 o 256
[Link]én puede ser utilizado como sistema simétrico de cifrado de flujo.
Estados Unidos, buscando un algoritmo más seguro y fiable para utilizarlo como estándar,
convocó un concurso a nivel mundial, y hace unos años anunció su intención de adoptar un
nuevo estándar. Así nació (2002) el nuevo sistema que recibe el nombre de Advanced
Encryption Standard (AES). Este algoritmo también es denominado Rijndael.

IDEA ******
El algoritmo IDEA (International Data Encryption Algorithm, algoritmo internacional de encriptación de
datos) se estableció en 1992, y sus principales características son:

Creado en Europa, en la Escuela Politécnica Federal de Zúrich en 1990.


IDEA opera con bloques de 64 bits usando una clave de 128 bits
El espacio de claves es mucho más grande: 2128 ≈ 3.4 x 1038
El ataque por fuerza bruta no es posible ya que sería necesario probar 1038 claves, cantidad
imposible de manejar con los medios informáticos actuales.
IDEA es libre para uso no comercial.
Es utilizado en PGP.
Nunca se ha roto ... de momento.

28 de 103
U2 Seguridad Lógica

Criptografía asimétrica

Criptografia asimétrica o de clave pública


En 1976 los matemáticos Whit Diffie y Martin Hellman crearon los sistemas criptográficos de clave
asimétrica o pública, que son la base de criptografía moderna.
Se basa en dos claves complementarias:

pública: es conocida y se utiliza para encriptar/desencriptar los mensajes.


privada: solo es conocida por el usuario que la utiliza para desencriptar/encriptar. No se transmite
nunca.

Lo que está codificado con una clave privada necesita su correspondiente clave pública para ser
descodificado. Y viceversa, lo codificado con una clave pública solo puede ser descodificado con
su clave privada.
La clave privada solo debe ser conocida por su propietario.
La clave pública es abierta y se puede conocer libremente.
Este sistema criptográfico permite garantizar la confidencialidad del mensaje:

Si A (EMISOR) quiere enviar a B (RECEPTOR) un mensaje de forma que solo B pueda


leerlo, lo codificará con la clave pública de B.

B utilizará su clave privada (que solo el conoce) para poder leerlo.

Por otra parte, este mismo sistema criptográfico permite garantizar la identidad del remitente. El proceso
de autenticación mediante criptografía asimétrica es el siguiente:

Si A envía a B un mensaje cifrado con la clave privada de A,


B necesitará la clave pública de A para leerlo.
B sabe seguro que quien le envía el mensaje es A.

La criptografía asimétrica proporciona:

Confidencialidad: cualquiera puede cifrar un mensaje con la clave pública, pero sólo el propietario de la
clave privada correspondiente puede descifrarlo.
Integridad, autenticación y no repudio: si el propietario de la clave privada cifra con ella un mensaje,
cualquiera puede descifrarlo con la correspondiente clave pública.

Por último, se pueden combinar las dos opciones.

A puede enviar a B un mensaje codificado dos veces, con la clave privada de A y con la
pública de B.

B desencripta el mensaje con su clave privada y con la clave pública de A.

29 de 103
U2 Seguridad Lógica

A está seguro de que sólo B ha podido leer el mensaje

B está seguro que ha sido A quien se lo ha enviado.

De esta forma se garantiza la identidad tanto del emisor como del receptor del mensaje.

Propiedad de las claves:

1. Los pares de claves son identificados o asociados con personas o entidades.


2. La propiedad de las claves públicas, es publicada y conocida por todos aquellos involucrados en el
mensaje.
3. La clave privada es 'secreta' y queda bajo la responsabilidad del dueño.

Este mecanismo evita la administración de un gran número de claves secretas necesaria para los
algoritmos simétricos, pero requiere un proceso para asegurar que las claves públicas son auténticas y
pertenecen al usuario correspondiente.
Así, nacen las compañías certificadoras, que se encargan de certificar que una clave pública
pertenece a tal o cual usuario y de distribuir las mismas.
La criptografía asimétrica está basada en la utilización de números primos muy grandes (de 1024 bits o
mas). Si se multiplican entre sí dos números primos muy grandes el resultado que se obtiene tendría un
coste muy elevado de proceso para poder descomponerlo. Miles de años...de momento.
En concreto los protocolos de encriptación SET y PGP utilizan claves generadas con números primos de
un tamaño que los hace prácticamente intocables.
El problema de la criptografía asimétrica es que, cuando el texto a cifrar es muy largo, el proceso de
cifrado es muy lento. Lo que se hace entonces en los actuales protocolos es utilizar criptografía
simétrica (tipo DES o IDEA) para el cifrado de textos y criptografía asimétrica para la comunicación de la
clave simétrica utilizada.
Ventajas:

La clave secreta ya no tiene que transmitirse entre los interlocutores.


No es necesario tener claves diferentes para cada pareja de interlocutores, es suficiente
que cada usuario tenga su clave pública y su clave privada.
Mayor seguridad en las comunicaciones.

Desventajas:

No son tan eficientes por la lentitud de los algoritmos de clave pública. El cifrado de un mensaje
mediante este método es del orden de mil veces más lento que el que se realiza con un algoritmo de
clave simétrica. Los ordenadores cada vez son más rápidos, pero el problema surge cuando hay
grandes cantidades de información para cifrar o descifrar.
Autenticidad de las claves públicas: ¿quién nos garantiza que la clave pública de un interlocutor, que
se obtiene libremente en la red, es realmente de él?. ¿Qué ocurriría si alguien nos envía su clave
pública afirmando ser alguien que realmente no es? Este problema se resuelve mediante los
Certificados digitales de las claves públicas.

Un algoritmo de clave pública debe cumplir:

Conocido el criptograma (mensaje cifrado) no se puede descifrar el texto ni adivinar la clave.


Conocido el texto y el criptograma es más caro (en tiempo y/o dinero) descifrar la
clave que el valor de la información.
Conocida la clave pública y el texto, no se puede generar
un criptograma encriptado con clave privada.

30 de 103
U2 Seguridad Lógica

Sistemas de clave pública

Algoritmos de clave pública


En la actualidad, los sistemas de clave pública más utilizados son:
RSA

Es uno de los algoritmos mas utilizados. Prácticamente es un standar de facto para la


firma digital.
Creado en el año 1978 por Rivest, Shamir y Adlman.
Es uno de los algoritmos asimétricos mas seguros.
Fundamento: Las claves pública y privada se calculan a partir de un número que se
obtiene como producto de dos números primos grandes.

DSS (Digital Signature Standard)

Utilizado sólo para la firma digital

Diffie Hellman

Fue el primer algoritmo asimétrico y se utiliza para distribuir claves simétricas.

ECC (Elliptic Curve Cryptosystem)

Es mas complejo que RSA a nivel matemático


Con un nivel de seguridad similar que RSA
A igualdad de clave que RSA necesita menos tiempo de proceso

31 de 103
U2 Seguridad Lógica

Comparativa

Comparación entre criptografía simétrica y


asimétrica
En general:

Respecto a la seguridad:
La criptografía simétrica o de clave secreta usa una única clave para cifrar en emisión y descifrar en
destino.
La seguridad del sistema reside entonces en lo segura que sea dicha clave.
En la criptografía asimétrica para cada usuario se crea un par de claves pública y privada, de forma que
lo que hace una la otra lo deshace. Para cifrar se usa, por ejemplo, la clave pública de destino y para
descifrar el destinatario hará uso de su clave privada.
La seguridad del sistema reside en la dificultad computacional de encontrar la clave privada a
partir de la clave pública.

32 de 103
U2 Seguridad Lógica

Sistemas híbridos

Sistemas de cifrado híbridos


Características:

Existen también sistemas de cifrado híbridos que utilizan tanto la encriptación simétrica
como la asimétrica.

Funciona mediante el cifrado de clave asimétrica para compartir una clave para el
cifrado simétrico.

En cada mensaje la clave simétrica utilizada es diferente, por lo que si un atacante


pudiera descubrir la clave simétrica, solo le valdría para ese mensaje y no para los
restantes.

PGP y GPG (GnuPG) usan sistemas de cifrado híbridos. La clave simétrica es cifrada
con la clave pública o asimétrica ,y el mensaje saliente es cifrado con la clave simétrica,
todo combinado automáticamente en un sólo paquete.

33 de 103
U2 Seguridad Lógica

PGP (Preety Good Privacy)

PGP (privacidad bastante buena) es un programa cuya finalidad es proteger la información distribuida a
través de Internet mediante el uso de criptografía de clave pública, así como facilitar la autenticación de
documentos gracias a las firmas digitales.
PGP originalmente fue diseñado y desarrollado por Phil Zimmermann en 1991.
PGP combina algunas de las mejores características de la criptografía simétrica y la criptografía
asimétrica. PGP es un criptosistema híbrido.
Funcionamiento

1. Compresión

Cuando se cifra un texto plano con PGP, el texto es comprimido. Esta compresión
ahorra espacio en disco, tiempo de transmisión y lo hace mas seguro. La mayoría
de las técnicas de criptoanálisis explotan patrones presentes en el texto plano para
craquear el cifrador. La compresión reduce esos patrones en el texto plano,
aumentando la resistencia al criptoanálisis.

2. Clave de sesión

Después de comprimir el texto, PGP crea una clave de sesión secreta (es la
clave simétrica) que solo se utilizará una vez. Esta clave es un número aleatorio
generado a partir de los movimientos del ratón y las teclas que se pulsen durante
unos segundos con el propósito específico de generar esta clave (el programa nos
pedirá que los realicemos cuando sea necesario).
Esta clave de sesión se usa con un algoritmo simétrico convencional (IDEA, Triple
DES) para cifrar el texto plano.

3. Cifrado de la clave de sesión

Una vez que los datos se encuentran cifrados, la clave de sesión se cifra con la
clave pública del receptor (criptografía asimétrica).

4. Envío del texto

La clave de sesión cifrada se adjunta al texto cifrado y el conjunto es enviado al


receptor.

5. Descifrado

El receptor usa su clave privada para recuperar la clave de sesión, que PGP
luego usa para descifrar los datos.

La combinación de los dos métodos de cifrado permite aprovechar lo mejor de cada uno:

El cifrado simétrico es más rápido que el asimétrico o de clave pública.


El cifrado asimétrico o de clave pública soluciona el problema de la distribución de claves en forma
segura.

Las claves utilizadas en el cifrado asimétrico se guardan cifradas protegidas por contraseña en el disco
duro. PGP guarda dichas claves en dos archivos separados llamados llaveros; uno para las claves

34 de 103
U2 Seguridad Lógica

públicas y otro para las claves privadas.


Con PGP surge el concepto de anillo de claves (o llavero), que es el lugar que este programa
proporciona para que el usuario guarde todas las llaves que posee.
Los anillos de claves permiten efectuar operaciones de extracción e inserción de claves de forma sencilla
y además proporciona un mecanismo de identificación y autenticación de claves completo y simple de
utilizar. Esta facilidad en la gestión de claves es una de las causas fundamentales que han hecho a PGP
tan popular.
La Internet Engineering Task Force se ha basado en el diseño de PGP para crear el estándar de Internet
OpenPGP. Las últimas versiones de PGP son conformes o compatibles en mayor o menor medida con
ese estándar.

35 de 103
U2 Seguridad Lógica

GPG (GNU Privacy Guard)

GPG es una herramienta de cifrado híbrido y firmas digitales, como un sustituto de PGP pero con la
principal diferencia que es software libre licenciado bajo la GPL. GPG utiliza el estándar del IETF
denominado OpenPGP.
GPG normalmente viene incluido en todas las distribuciones GNU/Linux. Su funcionamiento es similar al
PGP.
Trabaja en modo texto pero hay aplicaciones gráficas que utilizan recursos de GPG. Por ejemplo, hay un
plugin llamado Enigmail (sudo apt install enigmail) que se integra con el cliente de correo
Mozilla Thunderbird que funcionan en Windows, GNU/Linux y otros sistemas operativos. Enigmail es un
complemento que permite escribir y recibir correos firmados y/o encriptados con el estandard OpenPGP.
Funcionamiento:

GPG cifra los mensajes usando pares de claves individuales asimétricas generadas por los usuarios.
Las claves públicas pueden ser compartidas con otros usuarios de muchas maneras, un ejemplo de
ello es depositándolas en los servidores de claves.
También es posible añadir una firma digital criptográfica a un mensaje, de esta manera la totalidad
del mensaje y el remitente pueden ser verificados en caso de que se desconfíe de una
correspondencia en particular.
GPG genera también una firma digital para un archivo usando la clave privada de firma sobre el
resultado de una función hash del mensaje.
GPG no usa algoritmos de software que están restringidos por patentes, como IDEA utilizado en
PGP casi desde sus inicios. En su lugar usa una serie de algoritmos no patentados como Triple DES
(3DES), AES y Blowfish.
GPG usa una combinación de criptografía de claves simétricas para la rapidez y criptografía de
claves públicas para compartir de forma segura las claves. Este modo de operación es parte del
estándar OpenPGP y ha sido parte del PGP desde su primera versión.

36 de 103
U2 Seguridad Lógica

Identificación digital

Identificación digital
Identidad digital

Conjunto de elementos necesarios para garantizar la identidad a través de medios


electrónicos, así como los que permiten gestionar y proporcionar funcionalidad en este
medio.
En la Constitución Española ya se tuvo en cuenta la administración electrónica y existe
normativa en España sobre la identidad digital y la seguridad electrónica.

Tanto en la Administración central como en las Autonómicas, la identidad digital es


fundamental para las gestiones que se realizan. En concreto El PLAN AVANZA
([Link] tiene diferentes
actuaciones en las Comunidades Autónomas basadas en la modernización de la
Administración local (Proyecto EMODEL).
AVANZA 1: de 2005 a 2010
AVANZA 2: de 2011 a 2015
Agenda Digital: [Link]
[Link]
Necesidad de la Identificación digital

El anonimato en Internet y las posibilidades de fraude limitaban los servicios que se podían
ofrecer a través de esta red.

Limitan las operaciones comerciales


Limitaban el no repudio
En procesos judiciales esto era una traba importante.

Mediante la identificación digital se trata de garantizar:

Autenticación: quién puede usarlo


Autorización: qué se puede hacer
Integridad: lo que recibo es lo que se envió
Confidencialidad: la información permanece oculta a usuarios no deseados

Mecanismos para la identificación digital:

Código de identificación (contraseñas)


Tarjeta o dispositivo (Ej: DNI electrónico)
Biométricos
Certificados digitales

1. Contraseñas
Plantean muchos problemas:

Se almacenan en sitios no seguros


Se olvidan
Pueden no ser muy robustas
Se puede comprobar la robustez en [Link]

2. Tarjeta o dispositivo

Se autoriza a la tarjeta o dispositivo con independencia de quien lo tenga


Se puede falsificar
Pueden llevar información del [Link] se utiliza en combinación con un código o
contraseña (Ej. tarjetas de crédito y pin)

Tipos de tarjetas o dispositivos (mirar en Conceptos al final de la unidad):

Tarjetas RFID
Tarjetas de contacto
Pinchos USB

La tj RFID (Radio Frequency IDentification, en español identificación por radiofrecuencia) es un


sistema de almacenamiento y recuperación de datos remoto que usa dispositivos denominados
etiquetas, tarjetas, tags RFID. El propósito fundamental de la tecnología RFID es transmitir la
identidad de un objeto (similar a un número de serie único) mediante ondas de radio. Las tecnologías
37 de 103
U2 Seguridad Lógica

RFID se agrupan dentro de las denominadas Auto ID (automatic identification).


Las etiquetas RFID son unos dispositivos pequeños, similares a una pegatina, que pueden ser
adheridas o incorporadas a un producto, un animal o una persona. Contienen antenas para permitirles
recibir y responder a peticiones por radiofrecuencia desde un emisor-receptor RFID. Una de las
ventajas del uso de radiofrecuencia (en lugar, por ejemplo, de infrarrojos) es que no se requiere visión
directa entre emisor y receptor.
Las tj RFID son tarjetas sin contacto.
En [Link] se explica el funcionamiento de estas
tarjetas.
Las tarjetas inteligentes por contacto son del mismo tamaño de una tarjeta de crédito con una serie
de contactos metálicos dorados conectados a un chip de silicio.
Otro tipo de tj inteligente es el DNI electrónico que contiene un chip de seguridad con información
como claves privadas, claves públicas y certificados del propietario.
La figura siguiente muestra la descripción física del DNI electrónico:

La descripción detallada de toda la información contenida en el DNI electrónico está disponible en


[Link]
Las diferencias entre el primer DNIe y el 3.0 se pueden consultar en [Link]
/PortalDNIe/PRF1_Cons02.action?pag=REF_038&id_menu=1
La figura siguiente muestra la descripción física del DNI electrónico 3:

38 de 103
U2 Seguridad Lógica

Los objetivos del DNI electrónico son:

Acreditar electrónicamente y de forma indubitada la identidad de la persona.


Firmar digitalmente documentos electrónicos, otorgándoles una validez jurídica
equivalente a la que les proporciona la firma manuscrita.

3. Sistemas biométricos

Huellas dactilares
Reconocimientos de voz
Reconocimiento de cara
Reconocimiento de pupila
Reconocimiento de firma

Pero los sistemas biométricos presentan problemas:

Son poco robustos: Falsos positivos y falsos negativos


Sistemas caros en la actualidad
Fácilmente inutilizables

Como podemos ver existen vulnerabilidades en la identificación digital que están relacionadas con los
problemas de seguridad física y lógica tratados hasta el momento. La solución pasa por el uso de
herramientas que protejan el sistema, como cortafuegos, antivirus, utilización de cifrado, etc.
Kinegrama
Es una característica desarrollada por la compañía suiza Kinegram de uso exclusivo en los documentos
de alta seguridad.
Como el holograma, el kinegrama consiste en una estructura de difracción microscópica. La imagen, no
obstante, no es tridimensional, como en el holograma, sino que al moverla muestra animaciones gráficas.

39 de 103
U2 Seguridad Lógica

Firma digital

Introducción
Desde hace algún tiempo los sistemas informáticos están modificando los mecanismos clásicos en las
comunicaciones sustituyéndolos o complementándolos con otros medios como el correo electrónico,
Internet, etc.
De forma inmediata se plantea el problema de la seguridad de estos nuevos medios. Por ejemplo, el
usuario necesita saber con certeza que el mensaje que ha recibido es de quien dice ser, o el usuario
remitente necesita tener la seguridad de que su correo ha sido recibido, o también disponer de la opción
de firmar documentos de forma electrónica con total seguridad.
Los dos algoritmos más conocidos de generación de firmas son MD5 y SHA-1.
El concepto de firma digital fue introducido en 1.976 por Diffie y Hellman, padres del primer criptosistema
de clave asimétrica o pública.

Firma digital
Conjunto de datos asociados a un mensaje que permite asegurar la identidad del
firmante y la integridad del mensaje.

Aparentemente, éstos se consiguen con los criterios de autenticidad e integridad que ya hemos explicado,
pero estos no son suficientes si se pretende equiparar a la firma manuscrita que, además, tiene las
siguientes propiedades:

barata y fácil de producir,


fácil de reconocer tanto por el propietario como por otros, e
imposible de rechazar por el propietario.

La firma digital
Cuando se desarrolló la criptografía de clave pública se comprobó que también se puede autenticar. Es
decir, puede crearse una firma digital.
¿Por qué firmamos documentos en el mundo real? Para conseguir alguno, o varios, de estos resultados:

Autenticación

La firma convence a quien la ve, asegura que el firmante firmó el documento deliberadamente.

Inalterabilidad.

La firma es prueba de que el documento no será alterado con posterioridad.

Autoría.

La firma prueba que el firmante fue quien redactó el documento.

Adhesión.

La firma prueba que el firmante está de acuerdo con lo que contiene el documento.

No repudio.

La firma es garantía de que el firmante acepta lo que está escrito en el documento, y de que no se
echará atrás en el futuro.
Una firma es producida por un solo firmante, es decir, es algo inherente a la persona que la produce.
De modo similar, para producir una firma digital necesitamos algo relacionado con el firmante y solamente
con él. Recordemos que la clave pública es conocida por todos pero la clave privada es conocida
solamente por su dueño. Así que para producir una firma digital, usaremos la clave privada.

Firmar digitalmente un documento es cifrar dicho documento (o una parte de él)


con la clave privada.

Recordar que las claves pública y privada forman un par y son complementarias. Pero no hay nada

40 de 103
U2 Seguridad Lógica

esencialmente distinto entre ambas. Si usamos una para cifrar y la otra para descifrar, es solamente por
convenio; igual podríamos cifrar con la otra y descifrar con la una. Lo que una clave hace, la otra lo
deshace.

Funcionamiento de la firma digital


Esquema de la firma digital:

El modo de funcionamiento de la firma digital basado en clave pública es el siguiente:

cada participante tiene un par de claves, una para encriptar y la otra para desencriptar.
cada participante mantiene en secreto una de las claves (clave privada) y pone a
disposición del público la otra (clave pública).
el emisor/remitente calcula un resumen del mensaje a firmar con una función hash.
El resumen es un conjunto de datos de pequeño tamaño que tiene la propiedad de
cambiar si se modifica el mensaje.
el emisor encripta el resumen del mensaje con una clave privada y ésta es la firma
digital que se añade al mensaje original.
el destinatario, al recibir el mensaje, calcula de nuevo su resumen mediante la
función hash, desencripta la firma utilizando la clave pública del emisor
obteniendo el resumen que el emisor calculó. Si ambos resúmenes coinciden
entonces la firma es válida por lo que cumple los criterios ya vistos de autenticidad e
integridad además del de no repudio.

El sistema de firma digital basado en clave pública cumple con la mayoría de los criterios de seguridad
que posee la firma manuscrita.
Tan sólo queda la asociación de la firma con un propietario, evitando así la existencia de firmas anóminas.
Se trata, pues, de asociar a una firma la identidad de la persona que la utiliza. Para ello se usan los
certificados digitales.
Como ya se ha comentado, los objetivos de una firma digital son asegurar la identidad del firmante y
la integridad del mensaje. Por este motivo no será necesario codificar el texto completo, sino que
bastará con codificar un resumen del mismo y de esa forma el proceso de codificación y decodificación de
la firma será notablemente más rápido ya que la firma será mucho más pequeña que el mensaje original.
La firma digital está relacionada con el concepto de certificado digital.

41 de 103
U2 Seguridad Lógica

Firma electrónica
Con valor a efectos legales desde el año 2003. [Link]
La firma electrónica, por si misma, no aporta confidencialidad al mensaje pero es habitual que los
mensajes firmados electrónicamente se suelan enviar cifrados con la misma clave privada utilizada para
mayor seguridad.
Las características y usos de la Firma electrónica son exactamente los mismos que los de la Firma digital
con la única diferencia en el tipo de soporte en el que se almacenan.
Su condición de no modificable le da mayor grado de seguridad, pero sigue teniendo el problema de que
cualquier persona que no sea su propietario podría suplantarle.

Firma digital vs Firma electrónica


La firma digital suele ser software, y se puede almacenar por ejemplo, en un lápiz USB.

Una firma electrónica es una firma digital que se ha almacenado en un


soporte de hardware no modificable

La firma electrónica reconocida tiene el mismo valor legal que la firma manuscrita.
De hecho se podría decir que una firma electrónica es una firma digital contenida o almacenada en un
contenedor electrónico, normalmente un chip de ROM. Su principal característica diferenciadora con la
firma digital es su cualidad de ser inmodificable (que no inviolable).
No se debe confundir el almacenamiento en hardware, como por ejemplo, en un chip, con el
almacenamiento de la firma digital en soportes físicos; es posible almacenar una firma digital en una
memoria flash, pero al ser esta derivada del tipo EEPROM (Electrically Erasable Programmable Read-
Only Memory, ROM programable y borrable eléctricamente) y no ROM pura, no se consideraría una firma
electrónica si no una firma digital contenida en un soporte físico.
La firma digital contenida en soportes de tipo ROM tiene un uso muy extendido y se utiliza en gran
cantidad de tarjetas de acceso, tarjetas de telefonía, RFID y otras actividades en la que es preciso
identificar de forma inequívoca una persona u objeto.
Una aplicación destacada es el DNI electrónico español, también conocido como DNIE que al ser de uso
obligado dispone de varios millones de usuarios.

42 de 103
U2 Seguridad Lógica

Certificados digitales

La certificación de claves
Puede haber un problema de suplantación de claves y se resuelve otorgando confianza a un tercero
aceptado de forma general. Algo así como un Notario.
En el mundo digital aprovechamos el hecho de que se puede firmar cualquier archivo o documento digital,
incluida una clave pública. A fin de cuentas una clave pública ha de ser guardada en el ordenador en
forma de archivo y, por tanto, se puede firmar. La criptografía de clave pública contribuye así a reparar su
propia debilidad.
Vamos a utilizar el símil del Notario.
Proceso para que A tenga la seguridad de que tiene la clave pública auténtica de B:

- A obtiene la clave pública del Notario.

- A recibe la clave pública de B, firmada por el Notario.

- A verifica la firma digital del Notario.

- Si la verificación es correcta, A sabe que la clave de B es auténtica. En ese caso se dice que
la clave es válida. Esta validez proviene de la confianza depositada en el Notario.

Lógicamente el Notario no firmará ninguna clave si no ha verificado antes que realmente pertenece a su
dueño.
El primer punto es el mas 'peliagudo'. Necesitamos la clave pública del notario para verificar todo lo que
éste firma, pero ¿cómo estar seguros de que no se trata de una clave falsa?
En la práctica, suponemos que hay una forma razonablemente segura de obtener la clave pública
verdadera del Notario. Tal vez nos la ha entregado él personalmente, o la hemos descargado de una
página web segura. Pero en cualquier caso, somos nosotros quienes decidimos cuánta confianza otorgar
al Notario.

Una firma digital que atestigua la autenticidad de una clave pública se denomina genéricamente
certificado digital.
Un certificado digital consta de:

1. la clave pública que está siendo certificada


2. la información sobre el usuario
3. la firma digital (o firmas digitales) del Notario o persona de confianza.

Los Notarios digitales pueden ser personas o entidades.


Las entidades que se han creado para certificar claves públicas se denominan autoridades de
certificación (AC, o CA por sus siglas en inglés).
Son muy conocidas e importantes:

Verisign ([Link]
Thawte ([Link]
ACE ([Link]
IPS ([Link]

Son como "agencias notariales electrónicas" que certifican claves bajo pago.
Estas CA están pensadas para certificar claves públicas en una conexión segura mediante navegador.
Sus claves públicas (necesarias para que nuestro navegador pueda verificar los certificados emitidos por
estas CA) se pueden descargar de la red, para lo cual hay que ir a la página web de dicha CA. Pero,
algunas de estas claves públicas ya se encuentran en el navegador, ya que fueron entregadas por la CA
directamente al fabricante.
En España la firma electrónica se ha usado a nivel oficial para, por ejemplo, rellenar la declaración de la
Renta por Internet. Esto se hizo por primera vez en 1.999 dentro del marco del proyecto CERES de la
Fábrica Nacional de Moneda y Timbre (FNMT), que fue la entidad que actuó como CA
([Link] Durante dicho año se aprobaron dos leyes sobre firma electrónica.
Estas leyes son:

Real Decreto 1317/2001, de 30 de noviembre, por el que se desarrolla el artículo 81 de la Ley


66/1997 de 30 Diciembre (BOE 31 Diciembre 1.997), que faculta a la FNMT para la prestación de los
servicios técnicos necesarios para garantizar la seguridad de las comunicaciones electrónicas,
informáticas y telemáticas entre los órganos de las administraciones del estado, y de las personas
físicas y jurídicas con aquéllas. Ley disponible en [Link]

43 de 103
U2 Seguridad Lógica

/[Link]
Real Decreto-Ley 14/1999 de 17 Septiembre (BOE 18 Septiembre 1.999) sobre firma electrónica.
Trata sobre todo de las CA (llamados "prestadores de servicios de certificación") y estuvo vigente
hasta el 20 de marzo de 2004. A partir de esa fecha entró en vigor una nueva ley sobre la firma
electrónica disponible en [Link]

Certificado digital
Certificado digital (también conocido como certificado de clave pública o certificado de identidad)

Documento digital mediante el cual un tercero confiable (CA) garantiza la


correspondencia entre la identidad de un sujeto, entidad u organización y una clave
pública.

El certificado, para cumplir la función de identificación y autenticación, necesita del uso de la clave privada
(que sólo el titular conoce).
El certificado y la clave pública se consideran información no sensible que puede distribuirse
perfectamente a terceros. Por tanto el certificado sin más no puede ser utilizado como medio de
identificación, pero es la pieza imprescindible en los protocolos usados para autenticar a las partes de
una comunicación digital, al garantizar la relación entre una clave pública y una identidad.
Existen variados formatos para los certificados digitales, pero los más usuales se rigen por el estándar
UIT-T X.509. Y una implementación de X.509 es Secure Sokets Layer (SSL). Otra es IPSec.

Contenido del certificado digital


Un certificado emitido por una entidad de certificación autorizada (CA), además de estar firmado
digitalmente por ésta, debe contener la siguiente información:

1. La identidad del propietario del certificado (identidad a certificar)


2. Nombre, dirección y domicilio del suscriptor.
3. Información sobre la entidad de certificación (CA) que expide y firma el certificado.
4. La clave pública del usuario.
5. El algoritmo criptográfico usado para firmar el certificado.
6. El número de serie del certificado.
7. Fecha de emisión y expiración del certificado

Los puntos 1 y 4 son el contenido fundamental del certificado (identidad y clave pública asociada), el resto
son datos imprescindibles para poder validar el certificado e información general.
Esta información se firma de forma digital por la autoridad emisora del certificado. De esa forma, el
receptor puede verificar que esta última ha establecido realmente la asociación.

Gestión de certificados digitales


Puntos básicos de la gestión de certificados:

Antes de expedir un certificado, la CA comprueba la identidad del solicitante, y normalmente lo


hace por medio de una Autoridad de Registro.

Garantiza que en el certificado digital constan los datos reales del solicitante, impidiendo así que
alguien que se haga pasar por él obtenga un certificado digital a nombre del usuario.

Al expedir el certificado digital, la CA firma el certificado expedido con su clave privada,


permitiendo garantizar la validez del certificado.

Garantiza que dicho certificado lo ha emitido la Autoridad Certificadora y, por tanto, que no está
falsificado.

44 de 103
U2 Seguridad Lógica

Una vez verificada la identidad del solicitante, la CA crea el certificado digital y se lo entrega al
solicitante.

La creación del certificado supone la creación de dos claves, una privada y una pública.
Habitualmente, la creación de las claves, tanto pública como privada, tiene lugar de forma
automática en el ordenador del usuario que solicita el certificado digital:

La clave privada SIEMPRE está en el ordenador del usuario.

Garantiza que nadie más tiene acceso a ella durante todo el proceso.

No sucede lo mismo con la clave pública ya que, aunque también es creada automáticamente en el
ordenador del usuario, es enviada a la CA para que la custodie.

Si no tiene lugar en el ordenador del usuario, la CA podría quedarse con una copia de la clave
privada... ¡OJO!

La confianza de los usuarios en la Autoridad Certificadora y en la Autoridad de Registro es


fundamental para el buen funcionamiento del servicio.

Podríamos preguntarnos:

¿qué pasaría si no confiáramos en la FNMT y en los DNIs que expide a nombre del Ministerio
del Interior?

Hay que tener en cuenta que los certificados digitales poseen una fecha de emisión y una
caducidad, por lo que podrán ser emitidos, renovados y revocados.

Un certificado puede ser renovado, a petición del titular, porque está próxima su [Link]
certificado puede ser revocado, tanto por el titular como por la CA porque:

los datos que contiene han dejado de ser válidos,


la clave privada ha sido comprometida, o
el certificado ha dejado de tener validez dentro del contexto para el que había sido
emitido.

Usos de los certificados digitales


1. El certificado digital podrá ser utilizado, gracias a la clave privada, para firmar digitalmente los mensajes
que el usuario envíe.

Garantiza la identidad del emisor.


Garantiza que no ha sido modificado el mensaje.

Esto permite firmar (o certificar) documentos, solicitudes, pedidos, correo electrónico,


procesos, facturas...

2. El certificado digital también podrá ser utilizado, gracias a la clave pública, para enviar mensajes
cifrados de modo que sólo el destinatario podrá leerlos.

Garantiza la privacidad de su contenido.

3. Si combinamos los dos usos anteriores:

Por ejemplo dos usuarios que utilizan las dos características características para comunicarse
el uno con el otro:

1. ambos firmarán sus mensajes con la clave privada de su certificado digital, y


2. ambos enviarán al otro los mensajes cifrados con la clave pública del certificado digital
del otro.

Con lo cual:

Garantiza un canal seguro (nadie podrá leer sus conversaciones).


Garantiza que nadie los podrá suplantar (ambos estarán seguros de que la identidad de
su interlocutor).

45 de 103
U2 Seguridad Lógica

Actividad -4-
Tarea:

Haz un resumen esquemático de las características del certificado digital.

Mostrar retroalimentación

no puede ser falsificado,


puede garantizar la identidad del titular,
puede garantizar la privacidad de las comunicaciones (evitando que sean capturadas por otros),
puede garantizar el no repudio en los envíos.

Certificado digital: tecnología


Actualmente se usa mayoritariamente el estándar X.509 que materializa este concepto formando lo que
se denomina una Infraestructura de Clave Pública (PKI, del inglés “Public Key Infrastructure”).
¿Qué es una PKI?

Una PKI (Public Key Infrastructure) engloba todo el software y componentes de hardware junto con
los usuarios, políticas y procedimientos que permiten la creación y gestión de certificados digitales
basados en criptografía asimétrica o de clave pública.

El objetivo principal de la PKI es la gestión eficiente y confiable de las claves criptográficas y los
certificados que pueden ser utilizados en pocesos de autenticación y garantizando la integridad,
confidencialidad y no repudio.
Los formatos de codificación más comunes son:

DER (Distinguished Encoding Rules)


PEM (Privacy-enhanced Electronic Mail). PEM utiliza codificación en Base64, encerrado entre "-----
BEGIN CERTIFICATE-----" y "-----END CERTIFICATE-----"

La distribución del certificado digital siguiendo el estándar X.509 es posible realizarla:

Con clave privada en formato *.pfx o *.p12


Con clave pública en formato *.cer o *.crt

Permite establecer la seguridad en las comunicaciones, mensajería y/o transacciones en redes de


comunicaciones. Para estar completamente seguros a la hora de realizar transacciones en Internet es
necesario utilizar, al menos, dos tipos de certificados:

1. uno general para comunicaciones seguras (X.509, por ejemplo)


2. otro especifico para transacciones económicas (SET, por ejemplo).

Recomendación: tener ambos certificados para realizar cualquier tipo de transacción a través de Internet.

46 de 103
U2 Seguridad Lógica

Actividad -5-
Enunciado:

En los apartados anteriores hemos nombrado el estándar X.509 como uno de los mas
utilizados en los cerificados digitales.

Tarea:

Haz un breve resumen sobre el estándar X.500 y el X.509 y la relación entre ellos.

47 de 103
U2 Seguridad Lógica

Casos prácticos

Tarea global de la Unidad -2-


La UD2 tiene 12 casos prácticos. Hay que hacerlos TODOS y guardar información de la tarea realizada
para luego poder repasar.
De los 12 casos hay que presentar como tarea los casos: 3, 5, 6, 9, 11 y 12.

48 de 103
U2 Seguridad Lógica

CP -1- Utilizar ACLs

Caso práctico -1- Utilizar ACLs


Objetivo:

Conocer la sintaxis y funcionamiento de las ACLs en Ubuntu. Aprender a utilizar herramientas de


gestión asociadas a las ACLs
Ejecutar y analizar la salida generada por las ACLs.

Formato:
La ACL se representa por tres campos separados por ":".
[Tipo]:[Calificador]:ListaPermisos[,...]
Tipo:

"u" Usuario
"g" Grupo
"o" Otro
"m" Máscara

Calificador:

UID (ID numérico de usuario)


GID (ID numérico de grupo)
Vacío (Asume UID,GID del creador)

ListaPermisos:

El tercer campo es el de acceso y puede ser representado de 2 maneras:

Cadena estándar rwx (las cadenas se pueden remplazar por "-" si no queremos dar
acceso de ese tipo)
Cadena simbólica + ^

Utilidades:

chacl: Permite cambiar, examinar o eliminar ACL. No la vamos a utilizar.


getfacl: Devuelve la lista de control de acceso a un fichero o directorio.
setfacl: Asigna, modifica o elimina una lista de control de acceso.

NOTA:
Hay que crear todos los archivos, directorios, usuarios y grupos que aparecen en el caso
práctico.
1. Mostrar ACL:
NOTA
Si la salida de umask no coincide con la dada se puede ejecutar la orden $ umask 0002 para que,
en esta sesión, el sistema trabaje con esta máscara de permisos y coincida con los apuntes.
La acl para un directorio, al cual no se le ha asignado una acl explícitamente, coge los permisos de
umask:

$ umask 0002

¿qué significa el 0002? ¿qué permisos está otorgando a los archivos? ¿y a los directorios?
Con este valor de umask crea un directorio datos en tu home (~) y comprueba que ésto es cierto. La
acl para el directorio datos es:
$ getfacl datos
# file: datos
# owner: emifsud
# group: emifsud
user::rwx
group::rwx
other::r-x
Creamos en nuestro home (~) un archivo con la orden touch.

49 de 103
U2 Seguridad Lógica

$ ls -al archivo

-rw-rw-r-- 1 emifsud emifsud 0 2011-09-14 11:56 archivo

La acl por defecto para el fichero archivo es esta:


$ getfacl archivo
# file: archivo
# owner: emifsud
# group: emifsud
user::rw-
group::rw-
other::r--
2. Establecer ACL:
Hay tres maneras de establecer un ACL:

1. Usando el comando setfacl que sobrescribe cualquier ACL anterior.


2. Usando el comando setfacl con la opción -m (modifica ACL).
3. Usando chacl para modificar una ACL existente. No la vamos a utilizar.

Nota -1-: antes de ejecutar la orden comprobar los permisos existentes para comparar después de
establecer la ACL.
Nota -2-: si algún modificador no se entiende utilizar la ayuda (man comando).
Ejemplos:
setfacl:configura ACLs para archivos y directorios, asignando la lista de control de acceso.
getfacl: obtiene la lista de control de acceso del archivo o directorio dado.
En el directorio ~/datos hay un archivo llamado archivo1 (créalo) y queremos dar permisos de
lectura y escritura al usuario prueba (crea el usuario).
$ setfacl -m user:prueba:rw- ~/datos/archivo1
$ getfacl ./datos/archivo1
# file: datos/archivo1
# owner: emifsud
# group: emifsud
user::rw-
user:prueba:rw-
group::rw-
mask::rw-
other::r--
Ahora queremos que todos los archivos o directorios creados dentro de un directorio archivos en
~/datos puedan ser leídos y modificados por el usuario prueba, la orden es la siguiente:
$ setfacl -d -m u:prueba:rw- ~/datos/archivos/
$ getfacl ./datos/archivos
# file: datos/archivos
# owner: emifsud
# group: emifsud
user::rwx
group::rwx
other::r-x
default:user::rwx
default:user:prueba:rw-
default:group::rwx
default:mask::rwx
default:other::r-x
Algunas opciones de setfacl son:

Opción Descripción

-R Cambia permisos a archivos y directorios de forma descendente a

50 de 103
U2 Seguridad Lógica

Opción Descripción

partir de un directorio dado.

-d Asigna los permisos por defecto.

-b Borra todos los permisos adicionales, conservando únicamente los


básicos de UGO.

-k Borra los permisos por defecto.

-m Modifica los permisos agregando/cambiando por los nuevos valores.

Algunas opciones de getfacl son:

Opción Descripción

-R Lista permisos de archivos y directorios de forma descendente a


partir de un directorio dado.

-d Muestra los permisos por defecto.

Nota: Los comandos cp y mv copian o mueven cualquier ACLs asociado con archivos y directorios.
3. ACL por defecto
Las ACLs por defecto permiten indicar cuál es el juego de ACLs que queremos que se apliquen
automáticamente a los nuevos ficheros y directorios que se creen dentro de un directorio dado. Se
dice en estos casos que los permisos se heredan desde el directorio padre.
La sintaxis es idéntica a la de una ACL normal, pero se debe usar además la opción -d:
Los permisos de una ACL por defecto de un directorio se transfieren a los archivos y subdirectorios de
dicho directorio de dos formas:

El subdirectorio hereda la ACL por defecto del directorio padre en calidad tanto de ACL por
defecto como de ACL de acceso.
El archivo hereda la ACL por defecto como ACL de acceso.

Si el directorio padre no dispone de una ACL por defecto, los bits de permiso definidos en umask se
restan de los permisos al pasar por parámetro mode, y el resultado se asigna al nuevo objeto.
Si existe una ACL por defecto para el directorio padre, los bits de permiso asignados al nuevo
objeto se corresponden con la porción coincidente de los permisos del parámetro mode y con
aquellos que se definen en la ACL por defecto. El comando umask se descarta en este caso.
Ejemplo de ACL por defecto:
Previamente sabemos que midirectorio1 (creado con umask 0002) tiene estas características:
# file: midirectorio1
# owner: emifsud
# group: emifsud
user::rwx
group::rwx
other::r-x
Y que sobre midirectorio1 hemos ejecutado la orden siguiente:
$setfacl -m u:prueba:rwx,g:mascotas:rwx midirectorio1
Comprobamos que despues de ejecutar el siguiente setfacl
$setfacl -d -m g:mascotas:r-x midirectorio1
La opción -d del comando setfacl hace las siguientes modificaciones (opción -m) en la ACL por
defecto y el resultado es el siguiente:
$ getfacl midirectorio1
# file: midirectorio1
# owner: emifsud
# group: emifsud
user::rwx
user:prueba:rwx
group::rwx
group:mascotas:rwx

51 de 103
U2 Seguridad Lógica

mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:mascotas:r-x
default:mask::rwx
default:other::r-x
El comando getfacl muestra tanto la ACL de acceso como la ACL por defecto.
La ACL por defecto se compone de todas las líneas que comienzan por default.
Aunque se ejecutó solamente el comando setfacl con una entrada para el grupo mascotas para
obtener la ACL por defecto, el comando setfacl ha copiado automáticamente las entradas restantes
de la ACL de acceso para crear una ACL por defecto válida.
Las ACL por defecto no tienen un efecto inmediato en los permisos de acceso. Únicamente
intervienen cuando se crean los objetos de sistemas de archivos. Estos nuevos objetos
solamente heredan permisos de la ACL por defecto de sus directorios padre.
4. Utilización de máscaras (ACL extendida)
Una ACL extendida (extended) contiene además una entrada mask (máscara) y puede incluir varias
entradas del tipo named user (usuario identificado por su nombre) y named group (grupo identificado
por su nombre).

Tipo Formato en texto


owner user::rwx
named user user:name:rwx
owning group group::rwx
named group group:name:rwx
mask mask::rwx
other other::rwx

Los permisos definidos en las entradas owner y other siempre tienen vigencia.
Excepto la entrada mask, el resto de entradas (named user, owning group y named group) pueden
estar activadas o bien enmascaradas. Si se han definido permisos tanto en las entradas mencionadas
en primer lugar como en la máscara, tendrán validez. Los permisos que sólo han sido definidos en la
máscara o en la propia entrada, no tienen validez.
5. Ejemplo de utilización

Crear un objeto del sistema (aquí un directorio)


Cambios en la ACL
Utilización de máscaras

1. Asignamos con umask la máscara de permisos por defecto del sistema. Cualquier archivo o directorio
creado con posterioridad tendrá dicha máscara de permisos.

$umask 027

Permisos para archivos:

Propietario del archivo rw-


Grupo al que pertenece el propietario r--
Otros ---

Permisos para directorios:

Propietario del directorio: rwx


Grupo: r-x
Otros: ---

2. Creamos un directorio dir1


drwxr-x--- 2 admin admin 4096 oct 14 19:47 dir1
Obtenemos las ACL:
$ getfacl dir1
# file: dir1
# owner: admin
# group: admin
user::rwx

52 de 103
U2 Seguridad Lógica

group::r-x
other::---
Asi es una ACL estándar.
3. Ahora asignamos al usuario alumno y al grupo alumno rwx:
$setfacl -m u:alumno:rwx,g:alumno:rwx dir1
La ACL resultante se muestra con el comando getfacl.
$ getfacl dir1
# file: dir1
# owner: admin
# group: admin
user::rwx
user:alumno:rwx
group::r-x
group:alumno:rwx
mask::rwx
other::---
Se ha generado una entrada mask automáticamente para reducir todas las entradas de group class a
un denominador común. Además, setfacl adapta automáticamente las entradas mask a las opciones
que se modifiquen (siempre que no se haya desactivado esta función con -n).
mask define los permisos de acceso máximos que tienen validez para todas las entradas de la group
class. Entre estas se incluyen named user, named group y owning group. Los bits de permiso de
group class mostrados al ejecutar ls -dl dir1 equivalen a la entrada mask.
$ ls -dl dir1
drwxrwx---+ 2 admin admin 4096 oct 14 19:47 dir1
La primera columna de la salida tiene un signo + que hace referencia a una ACL extendida.
4. Según la salida del comando ls, los permisos de la entrada mask incluyen también permiso de
escritura. Normalmente, estos bits de permiso también indicarían que el owning group (aquí: admin)
tendría así mismo derechos de escritura para el directorio dir1. No obstante, los permisos de acceso
realmente válidos para para el owning group consisten en la intersección de los permisos definidos para el
owning group y mask, es decir, r-x en nuestro ejemplo. Aquí tampoco se han modificado los permisos de
owning group después de añadir las entradas ACL.
La entrada mask puede modificarse con setfacl (opcion mask) o con chmod.

$chmod g-w dir1

$ls -dl dir1

drwxr-x---+ ... admin admin ... dir1

$getfacl dir1

# file: dir1

# owner: admin

# group: admin

user::rwx

user:alumno:rwx # effective: r-x

group::r-x

group:alumno:rwx # effective: r-x

mask::r-x

other::---

Después de haber retirado el permiso de escritura a la group class por medio del comando chmod, la
salida del comando ls ya le indica que los bits de mask han sido adaptados en consecuencia a través
del comando chmod.
Como se puede ver, el único que posee permiso de escritura sobre el directorio dir1 es el propietario.
Esto se ve aún más claramente en la salida del comando getfacl.
Además, getfacl añade a cada entrada un comentario informando de que los bits de permiso
realmente válidos no son los definidos inicialmente, ya que la entrada mask se encarga de filtrarlos.

53 de 103
U2 Seguridad Lógica

Por supuesto, se puede volver a en cualquier momento al estado original con el comando chmod
correspondiente:
$chmod g+w dir1
$ls -dl dir1
drwxrwx---+ ... admin admin ... dir1
$getfacl dir1
# file: dir1
# owner: admin
# group: admin
user::rwx
user:alumno:rwx
group::r-x
group:alumno:rwx
mask::rwx
other::---

Tarea:

1. Ejecuta las órdenes siguientes y explica detalladamente lo que hace cada una de ellas.
Incluye la salida generada por cada una de las órdenes.

setfacl -R -d -m g:grupo1:rwx ~/dir

setfacl -m g:grupo2:rx ~/dir/subdir

setfacl -m g::rx ~/dir/subdir

getfacl fich1 | setfacl --set-file=- fich2

2. Tenemos la siguiente salida de la orden getfacl

$getfacl dir1
# file: dir1
# owner: admin
# group: admin
user::rwx
user:alumno:rwx # effective: r-x
group::r-x
group:alumno:rwx # effective: r-x
mask::r-x
other::---

Interpretar cada una de las líneas de salida.

Todas las capturas deben ser incluidas en el documento global de la práctica de la unidad junto
con las explicaciones que correspondan.

54 de 103
U2 Seguridad Lógica

CP -2- Aplicación práctica ACLs

Caso práctico -2- Aplicación práctica de


ACLs
Objetivo:

Simular un caso real de aplicación de ACL sobre los archivos de una partición.

Preparación de la tarea

Crea en tu equipo GNU/Linux los usuarios fulano y jefe (con la contraseña que quieras) y los
grupos programadores y directores. Asigna fulano al grupo programadores y jefe al grupo
directores.

Crea en tu directorio home un directorio llamado miproyecto y asegúrate de que tiene


permisos rwx para el propietario y el grupo, y ningún permiso para el resto y que pertenece al
usuario alumno y grupo alumno:

$ chmod 0770 miproyecto

Dentro del directorio miproyecto crea tres archivos: fichero1, fichero2 y fichero3 y
cambia los permisos para que tengan permiso rwx el propietario y el grupo y ninguno el resto:

$ chmod 0770 fichero*

Comprueba que es correcto con ls -l:


-rwxrwx--- 1 alumno alumno 0 2011-01-20 12:06 fichero1
-rwxrwx--- 1 alumno alumno 0 2011-01-20 12:06 fichero2
-rwxrwx--- 1 alumno alumno 0 2011-01-20 12:06 fichero3

NOTA:
Los archivos pertenecen al usuario con el que cada alumno se conecta en su máquina.

Tarea:
1. Escribe los comandos que utilizas para:

1. Asignar permisos de lectura, escritura y ejecución al grupo programadores para el directorio


miproyecto y todos sus archivos.
2. Asignar permisos de lectura y ejecución al grupo directores para el directorio miproyecto y todos
sus archivos.
3. Asignar permisos de lectura, escritura y ejecución al usuario jefe para los ficheros fichero1 y
fichero2. El usuario jefe no puede leer, ni escribir ni ejecutar el fichero3.

Comprueba que los permisos se cumplen suplantando la identidad de los usuarios e


intentando escribir o leer algunos de los ficheros o entrar en el directorio miproyecto.

2. Agrega ahora un nuevo usuario llamado mengano al grupo programadores y comprueba que puede
entrar el directorio miproyecto y leer o modificar los ficheros.
Una vez comprobado, quita los permisos de lectura y ejecución al directorio miproyecto a este usuario y
comprueba que no puede entrar al directorio. Escribe el comando que has usado para denegar los
permisos al usuario mengano.
3. Crea una máscara acl en el directorio miproyecto que indique que los permisos máximos que va a
tener cualquier usuario que no sea el propietario o el resto (other), sean de lectura o ejecución.
Escribe el comando que has usado. Ahora comprueba si el usuario fulano o mengano o jefe pueden crear
archivos en el directorio miproyecto.
¿Porqué?
Todas las capturas deben ser incluidas en el documento global de la práctica de la unidad junto
con las explicaciones que correspondan.

55 de 103
U2 Seguridad Lógica

CP -3- ACLs en routers

Caso práctico -3- ACL en routers

1. Introducción

En el ámbito de los dispositivos routers, las ACLs son listas de condiciones que se aplican al tráfico que
viaja a través de la interfaz del router.
Las ACL indican al router qué tipo de paquetes aceptar o rechazar en base a las condiciones establecidas
en ellas y que permiten la administración del tráfico y aseguran el acceso, bajo esas condiciones, hacia y
desde una red.
La aceptación y rechazo se pueden basar en la dirección origen, dirección destino, protocolo de capa
superior y números de puerto.
Por lo tanto, una ACL es un grupo de sentencias que define cómo se procesan los paquetes que:

Entran a las interfaces de entrada


Se reenvían a través del router
Salen de las interfaces de salida del router

En principio si las ACL no están configuradas en el router, todos los paquetes que pasen a través del
router tendrán acceso a todas las partes de la red.
Es posible crear ACL en protocolos de red enrutados, como el Protocolo de Internet (IP) y el Intercambio
de paquetes de internetwork (IPX), entre otros. Se debe definir una ACL para cada protocolo enrutado
habilitado en la interfaz.
Además, se necesita crear una ACL por separado para cada dirección, una para el tráfico entrante y otra
para el saliente.
Como hemos comentado, las ACL se definen según el protocolo, la dirección o el puerto. Por ejemplo, si
el router tiene dos interfaces configuradas para IP, IPX y AppleTalk, se necesitan 12 ACLs separadas. Una
ACL por cada protocolo, multiplicada por dos por dirección entrante y saliente, multiplicada por dos por el
número de interfaces.
Se puede configurar una ACL por protocolo, por dirección y por interfaz.

Una ACL por protocolo: para controlar el flujo de tráfico de una interfaz, se debe definir una ACL
para cada protocolo habilitado en la interfaz.
Una ACL por dirección: las ACL controlan el tráfico en una dirección a la vez de una interfaz.
Deben crearse dos ACL por separado para controlar el tráfico entrante y saliente.
Una ACL por interfaz: las ACL controlan el tráfico para una interfaz, por ejemplo, Fast Ethernet 0/0.

2. Funcionamiento de las ACL

Para explicar el funcionamiento utilizaremos el software Cisco IOS.


El orden de las sentencias ACL es importante.

Cuando el router está decidiendo si se envía o bloquea un paquete, el IOS prueba el paquete,
verifica si cumple o no cada sentencia de condición, en el orden en que se crearon las sentencias.
Una vez que se verifica que existe una coincidencia, no se siguen verificando otras sentencias de
condición .

Por lo tanto, Cisco IOS verifica si los paquetes cumplen cada sentencia de condición de arriba hacia
abajo, en orden. Cuando se encuentra una coincidencia, se ejecuta la acción de aceptar o rechazar y ya
no se continua comprobando otras ACL.
Por ejemplo, si una ACL permite todo el tráfico y está ubicada en la parte superior de la lista, ya no se
verifica ninguna sentencia que esté por debajo. Si no hay coincidencia con ninguna de las ACL existentes
en el extremo de la lista se coloca por defecto una sentencia implícita deny any (denegar cualquiera). Y,
aunque la línea deny any no sea visible sí que está ahí y no permitirá que ningún paquete que no
coincida con alguna de las ACL anteriores sea aceptado. Se puede añadir de forma explícita por aquello
de 'verla' escrita y tener esa tranquilidad.
Veamos el proceso completo:

1. Cuando entra una trama a través de una interfaz, el router verifica si la dirección de capa 2 (MAC)
concuerda o si es una trama de broadcast.
2. Si se acepta la dirección de la trama el router busca una ACL en la interfaz entrante.

56 de 103
U2 Seguridad Lógica

3. Si existe una ACL se comprueba si el paquete cumple las condiciones de la lista.


4. Si el paquete cumple las condiciones, se ejecuta la acción de aceptar o rechazar el paquete.
5. Si se acepta el paquete en la interfaz, se compara con las entradas de la tabla de enrutamiento para
determinar la interfaz destino y conmutarlo a aquella interfaz. Luego el router verifica si la interfaz
destino tiene una ACL.
6. Si existe una ACL, se compara el paquete con las sentencias de la lista y si el paquete concuerda
con una sentencia, se acepta o rechaza el paquete según se indique.
7. Si no hay ACL o se acepta el paquete, el paquete se encapsula en el nuevo protocolo de capa 2 y se
envía por la interfaz hacia el dispositivo siguiente.

Ver el video de youtube [Link]


Este vídeo también puede ser interesante: [Link]
access-list-estandar/#more-598
3. Creación de ACL
Trabajaremos desde el modo de configuración global:
(config)# Para entrar escribir 'enable' desde la consola del router.
Hay dos tipos de ACL y utilizan una numeración para identificarse:

ACL estándar: del 1 al 99


ACL extendida: del 100 al 199

1. ACLs estándar
Sintaxis: Las ACL estándar en un router Cisco siempre se crean primero y luego se asignan a una
interfaz.

Router(config)# access-list numACL permit|deny origen [wild-mask]

El comando de configuración global access-list define una ACL estándar con un número entre 1 y 99.
wild-mask: indica con 0 el bit a evaluar y con 1 indica que el bit correspondiente se ignora. Por ejemplo, si
queremos indicar:

un único host [Link] especifico: [Link] con wild-mask [Link]


toda la red clase C correspondiente lo hacemos con [Link] y wild-mask [Link].

Entrar escribiendo 'interfaces'. Se aplican a los interfaces con:

Router (config-if)# ip access-group numACL in|out

In: tráfico a filtrar que ENTRA por la interfaz del router out : tráfico a filtrar que SALE por la interfaz del
router.
Para la creación de ACL estándar en importante:

Seleccionar y ordenar lógicamente las ACL.


Seleccionar los protocolos IP que se deben verificar.
Aplicar ACL a interfaces para el tráfico entrante y saliente.
Asignar un número exclusivo para cada ACL.

Antes de aplicar cualquier ACL a una red, es importante confirmar que exista conectividad
completa. Si no se prueba la conectividad en la red antes de aplicar una ACL, probablemente la
resolución de problemas sea más difícil.
Nos planteamos: ¿dónde instalar la ACL? ¿en qué router? ¿en qué interfaz de ese router?.
En este caso no habría problema porque solo tenemos un router, el Router0. Pero la regla siempre es:

ACL estandar: instalar la ACL lo más cerca posible del destino (no especifican
direcciones destino).

Veamos algunos ejemplos. Los gráficos indican la topología de red con la que se va a trabajar.
Para asignar IP podemos sustituir la nube por un servidor.

57 de 103
U2 Seguridad Lógica

EJEMPLO 4:
Utilizamos la herramienta de simulación Packet Tracer con una topología de red muy sencilla,
formada por un router, dos switch y 2PCs, cada uno de ellos en una subred.

58 de 103
U2 Seguridad Lógica

Los pasos para crear una ACL en el router son tres (A, B, y C):
A) Supongamos que queremos crear en un Router0 una ACL con el número 1 (numACL) que deniegue el
host [Link]. Desde configuración global:

Router0(config)# access-list 1 deny [Link] [Link]

Otras opciones desde el modo config son las siguientes:


1. Si queremos eliminar una ACL ( no ejecutar ahora):

Router0(config)# no access-list <número acl>

2. Para mostrar las ACL:

Router0# show access-list


standard IP access list 1
deny host [Link]
permit any

3. Si queremos ver una ACL en particular escribimos:

Router0(config)# show access-list <número acl>

B) Seleccionamos la interfaz sobre la que actuará la ACL:

Router0(config)# interface FastEthernet 0/0

C) Por último utilizamos el comando de configuración de interfaz ip access-group para activar la ACL
actual en la interfaz como filtro de salida:

Router0(config-if)# ip access-group 1 out

Para mostrar información de la interfaz IP que nos indique si hay alguna ACL asociada a dicho interfaz:

Router0# show ip interface

2. ACLs extendidas
Las ACL extendidas filtran paquetes IP según:

Direcciones IP de origen y destino


Puertos TCP y UDP de origen y destino
Tipo de protocolo (IP, ICMP, UDP, TCP o número de puerto de protocolo).

Las ACLs extendidas usan un número dentro del intervalo del 100 al 199.

59 de 103
U2 Seguridad Lógica

Al final de la sentencia de la ACL extendida se puede especificar, opcionalmente, el número de puerto de


protocolo TCP o UDP para el que se aplica la sentencia:

20 y 21: datos y programa FTP


23: Telnet
25: SMTP
53: DNS
69: TFTP

Ver el vídeo [Link]


• Definir ACL extendida, sintaxis:

Router(config)# access-list numACL {permit|deny} protocolo fuente|destino


[mascara-fuente|mascara-destino] operador operando [established]

numACL: Identifica número de lista de acceso utilizando un número dentro del intervalo
100-199
protocolo: IP, TCP, UDP, ICMP, GRE, IGRP
fuente | destino: Identificadores de direcciones origen y destino
mascara-fuente | mascara-destino: Máscaras de wildcard
operador: lt, gt, eq, neq
operando: número de puerto
established: permite que pase el tráfico TCP si el paquete utiliza una conexión establecida.

Respecto a los protocolos:

Sólo se puede especificar una ACL por protocolo y por interfaz.


Si ACL es entrante, se comprueba al recibir el paquete.
Si ACL es saliente, se comprueba después de recibir y enrutar el paquete a la interfaz saliente.
Se puede nombrar o numerar un protocolo IP.

Asociar ACL a interfaz, sintaxis:

Router(config-if)# ip access-group num_ACL {in | out}

Ejemplo:
En el esquema anterior, denegar solo telnet a la subred [Link].

Router0(config)# access-list 101 deny tcp [Link]


[Link] any eq 23
Router 0(config)# access-list 101 permit ip any any
Router0(config)# interface F0/0
Router0(config-if)#ip access-group 101 out

3. Ubicación de las ACLs extendidas


Es muy importante el lugar donde se ubique una ACL ya que influye en la reducción del tráfico
innecesario. El tráfico que será denegado en un destino remoto no debe usar los recursos de la red
en el camino hacia ese destino. La regla es colocar las:

ACL extendida: lo más cerca posible del origen del tráfico denegado. Así el tráfico no
deseado se filtra sin atravesar la infraestructura de red.

Tarea:
1. Estudiar los Ejemplos 1, 2 y 3 utilizando la topología dada. Se trata de entender y aprender el
funcionamiento de estas acl's.
2. Utilizando la misma topología de red que en el Ejemplo4, definir una ACL estándar que permita el
trafico de salida de la red [Link]/24. Incluir al menos una captura de Packet Tracer que muestre que
la ACL se está ejecutando sobre el router.
2. Eliminar la ACL anterior y definir una ACL estándar que deniegue un host concreto ([Link].
Incluir al menos una captura de Packet Tracer que muestre que la ACL se está ejecutando sobre el router.
3. En el esquema anterior, denegar FTP entre las subredes y permitir todo lo demás.
Todas las capturas deben ser incluidas en el documento global de la práctica de la unidad junto
con las explicaciones que correspondan.

60 de 103
U2 Seguridad Lógica

CP -4- Contraseñas con John the Ripper

Caso práctico -4- Contraseñas con John the


Ripper
1. Introducción

John The Ripper es una aplicación cuyo objetivo es descifrar contraseñas sencillas utilizando
diccionarios. Es capaz de romper varios algoritmos de cifrado o hash, como DES, SHA-1 y
otros que veremos mas adelante.

Es una herramienta de seguridad muy popular, ya que permite a los administradores de


sistemas comprobar que las contraseñas de los usuarios son suficientemente buenas.

John the Ripper es capaz de autodetectar el tipo de cifrado de entre muchos disponibles, y se
puede personalizar su algoritmo de prueba de contraseñas. Eso ha hecho que sea uno de los
más usados en este campo.

Existen versiones de John para Ubuntu GNU/Linux, Windows, DOS, BeOS, y OpenVMS. La
página oficial del proyecto es [Link]

Ubuntu 18.04 tiene en su pool de aplicaciones una versión de John que es suficiente para
conocer su funcionamiento.

El objetivo de esta práctica es que el alumno compruebe la calidad de las contraseñas de su


sistema operativo utilizando la herramienta de auditoría de contraseñas John The Ripper.

2. Instalación de John The Ripper

Instalar desde terminal.

$ sudo apt install john

La ayuda de utilización de John The Ripper está en el directorio /usr/share/doc/john, en el


fichero README, aunque también se puede consultar el resto de ficheros, como el MODES
que explica los modos de trabajo de la aplicación o el fichero OPTIONS que explica todas las
opciones que admite el programa.

El diccionario que utiliza por defecto es /usr/share/john/[Link]

3. Preparar la ejecución

Crea varios usuarios en tu sistema GNU/Linux (con adduser o desde el entorno gráfico) y
llámalos por ejemplo prueba1, prueba2 y prueba3. Asígnales contraseñas débiles, como por
ejemplo 1234, o el mismo nombre de usuario o bien una palabra del diccionario castellano.
Vamos a comprobar si john puede descifrar estas contraseñas en el siguiente punto.

Recordar que en GNU/Linux las contraseñas ya no se guardan en el archivo /etc/passwd si no


que se cifran en /etc/shadow, archivo que solo tiene permisos para root.

4. Ejecutar John

4.1 Ahora lanza john desde la consola:

$ sudo john /etc/shadow

De esta forma le estás pasando como parámetro el archivo de contraseñas que debe intentar
descifrar. John va a intentar descubrir las contraseñas de todos los usuarios del archivo con distintas
técnicas.
Cuando termina la ejecución muestra las contraseñas encontradas. Podemos verlo también con la
orden:

$ sudo john --show /etc/shadow

4.2 Si tan solo se quiere utilizar el modo básico, es decir, que sólo pruebe con contraseñas parecidas al
nombre de usuario ejecutar:
$ sudo john --single /etc/shadow
No password hashes left to crack (see FAQ)

61 de 103
U2 Seguridad Lógica

Tener en
cuenta que ya ha encontrado las contraseñas, y por ese motivo muestra este mensaje. Si se ejecutara
esta orden antes de la anterior realizaría el trabajo de búsqueda.
4.3 Si se quiere utilizar un diccionario diferente al de por defecto, ejecutar:

$ sudo john --wordlist=/path_al_diccionario --rules /etc/shadow

En la página web se pueden encontrar diferentes diccionarios en varios idiomas, pero son de pago.
Podeis descargaros [Link] (hay que descomprimir) desde [Link]
/languages/Spanish/
4.4 Para realizar un ataque de fuerza bruta probando con combinaciones de números, caracteres,
mayúsculas y minúsculas.

$ sudo john --incremental=all /etc/shadow

También se pueden encontrar diccionarios en:

[Link]
fuerza-bruta/

[Link]

Tarea:
1. Mirando la ayuda de la aplicación y las opciones, contesta a las siguientes cuestiones:

¿Cómo consultas las contraseñas descubiertas por el programa una vez ha finalizado?
¿Cómo le indicas a john que utilice un fichero de diccionario para que realice un ataque por
diccionario?
¿Cómo le indicas que sólo descubra la contraseña de determinados usuarios del archivo de
contraseñas en vez de todos?
Responde a las preguntas en el archivo global de los casos prácticos de la unidad indicando el nº de
caso y apartado correspondiente.

2. Utilización de diccionario

Utiliza el diccionario en castellano [Link]. Guárdalo como root en /usr/share/dict, que es el


directorio habitual donde se guardan los diccionarios en el sistema.

Crea dos usuarios usuario1 y usuario2 cuyas contraseñas serán usuario1! y usuario2?,
respectivamente.

Ejecutar John para que realice un ataque por diccionario utilizando el diccionario spanish
contra el fichero shadow, mostrando las contraseñas obtenidas. Haz una captura que muestre
los resultados obtenidos.

$ sudo john --wordlist=/usr/share/dict/[Link] --rules


/etc/shadow

3. John actuando por fuerza bruta


Crear un archivo de texto ([Link]) en el home de Ubuntu con el siguiente contenido:
user:AZl.zWwxIh15Q spanish
Ejecutar John para que empiece a trabajar para crackear la contraseña del archivo anterior. Ejecutar:
$ john [Link]
Este proceso puede tardar horas e incluso días según la complejidad de la contraseña. Cambiarla a una
mas sencilla si se alarga.
Para ver el resultado ejecutar:
$ john --show [Link]

NOTA:

Si aparece el mensaje 'No password hashes left to crack ' busca y elimina del sistema el
archivo [Link]. Estará almacenado en /root/.john/[Link] si el usuario que ha ejecutado
john es root.

4. Ataque de diccionario sobre el hash: Johnny


Arrancar el live de Kali-Linux y dentro de Aplicaciones en Ataques de contraseñas buscar la herramienta
Johnny. Utilizar algún diccionario de /usr/share/wordlists.

62 de 103
U2 Seguridad Lógica

Repasamos el concepto de hash:


Hash: las contraseñas nunca se escriben en texto claro/plano en una base de datos, sino que están
codificadas con una función hash (funciones pseudoaleatorias). Hay varios: MD5, SHA256, SHA512,
NTML, etc. Tener en cuenta que un hash como 728a9b52bfceacc503c056e3b9b93cfa solo corresponde a
una sola contraseña. El software analizará estos “hashs” y deducirá la contraseña.
Se necesita también otro archivo de texto en formato .lst (simplemente cambiando la extensión de un
archivo .txt) que contiene los hash(es) que deberá tratar de descifrar. Se puede buscar en la red. Vamos a
utilizar el tipo SHA512, y vamos al sitio: [Link] a buscar. Pedirá un archivo con las
contraseñas para convertirlo y generará una salida que habrá que guardar en el archivo [Link].
La interfaz gráfica de Johnny es la que se muestra y a partir de aqui queda como tarea averiguar los
pasos para realizar el ataque y averiguar las contraseñas.

Todas las capturas deben ser incluidas en el documento global de la práctica de la unidad junto
con las explicaciones que correspondan.

63 de 103
U2 Seguridad Lógica

CP -5- Contraseña de Windows 10

Caso práctico -5- Contraseña de Windows 10


Introducción
Vamos a obtener la contraseña de W10 sin utilizar ningún programa.
El objetivo es disponer de un procedimiento para 'recordar' la contraseña en caso de que nos hayamos
olvidado o no sepamos a ciencia cierta la clave de acceso a nuestra sesión de W10.
Paso -1-
W10 tiene un agujero de seguridad que nos va a permitir realizar esta tarea.
Una vez hayamos encendido el equipo y nos aparezca la primera pantalla de Windows donde tenemos
que introducir la clave, vamos a pulsar en el botón de abajo a la derecha de Accesibilidad y después
pulsamos la opción de “Teclado en pantalla”.

Paso -2-
Después necesitamos encender otra vez el equipo pero esta vez desde un USB o CD bootable con W10.

64 de 103
U2 Seguridad Lógica

Paso -3-
En la pantalla inicial de la instalación le damos a “Siguiente”, después pulsamos en la parte de abajo a la
izquierda "Reparar" el equipo.

Paso -4-
De las 3 opciones que nos aparecen seleccionamos “Solucionar problemas” y después pulsamos
“Opciones avanzadas” y después pulsamos “Símbolo del sistema”.

65 de 103
U2 Seguridad Lógica

Paso -5-
Ya en la consola vamos a la raíz del disco, que en la mayoría de los casos será la unidad C:.
De alli vamos a Windows/System32.
Ahora vamos a renombrar el teclado, tecleamos “rename [Link] [Link]”
Después renombramos la consola de dos con el siguiente comando “rename [Link] [Link]”
Tecleamos “exit” para salir de la consola.
Apagar el equipo.

66 de 103
U2 Seguridad Lógica

Paso -6-
Después de reiniciar aparecerá otra vez la pantalla inicial para introducir la clave, vamos al botón de
accesibilidad y seleccionamos teclado en pantalla, y ahora aparecerá la consola de DOS y podremos
trabajar en lugar de utilizar el teclado en pantalla.
Tecleamos “net user” y nos aparecerá el nombre de los usuarios que están asociados al equipo.
Tecleamos “net user nombreusuario *” y la consola nos pedirá una contraseña nueva para ese usuario,
ponemos la deseada, después confirmamos poniendo la misma y nos aparecerá el mensaje de “Se ha
completado el comando correctamente”
Ya podemos acceder al equipo con ese usuario con nuestra nueva contraseña.

Tarea:
Reproducir todos los pasos y obtener la contraseña de W10.
NOTA
Es posible que haya que desactivar el Defender de Microsoft, por lo tanto hacer este caso práctico con el
equipo desconectado de Internet.

67 de 103
U2 Seguridad Lógica

CP -6- Contraseñas con Medusa

Caso práctico -6- Contraseñas con Medusa


(Kali Linux)
1. Introducción
Medusa es una herramienta que permite hacer ataques de fuerza bruta contra un gran conjunto de
protocolos.
Las características de medusa son:

Velocidad: rápida ejecución en cada una de los intentos de autenticación en el servicio seleccionado
para el ataque de fuerza bruta.
Variedad: Medusa incluye como módulos una gran variedad de servicios a explotar, esto lo hace una
herramienta versátil.
Transparencia: muestra su funcionamiento en tiempo de ejecución.

2. Requerimientos
Hay que utilizar un live-CD o Live-USB con la versión de Kali Linux desde la página oficial del proyecto
[Link] Descargar la iso y crear una máquina virtual con dicha iso.
En la configuración de la máquina virtual dentro de la configuración de red, el adaptador de red eth0
ponerlo como adaptador puente. De esa forma ambas máquinas, anfitriona y virtual pueden comunicarse
entre si ya que están dentro de la misma red.
Ubuntu 16.04 también dispone en su pool de aplicaciones de una versión de Medusa pero se trata de una
versión menos actualizada, pero que también se puede utilizar. Para ello ir a Software de Ubuntu e instalar
la herramienta.
3. Funcionamiento
Arrancar la maquina virtual con KaliLinux con la opción primera. Desde una terminal lanzar el entorno
gráfico con la orden startx.
Si se ha instalado, desde una terminal en Ubuntu ejecutar la orden
#medusa -d
Crear un pequeño diccionario con contraseñas sencillas entre las que estarán incluidas las de los usuarios
de nuestra instalación. Utilizar para la creación un editor de texto (gedit) no un procesador de textos. Este
archivo [Link] estará en un directorio cuyo path deberemos conocer.
Al ejecutar medusa con la opción -d muestra el conjunto de módulos disponibles. Los módulos son los
servicios que podemos atacar.

Opciones:

-h host -> el host víctima


-H [Link]-> si tenemos un archivo txt con una lista de hosts
-u username -> el usuario al cual deseamos hacerle el cracking
-U [Link] -> un archivo txt con la lista de posibles usuarios (muy útil si no sabemos que
usuarios existen en el sistema)
-P -> Ubicación del diccionario de contraseñas
-O -> Crea un archivo log
-M -> modulo que vamos a utilizar (sin la extensión .mod)
68 de 103
U2 Seguridad Lógica

-n -> por si el servicio esta corriendo en otro puerto diferente al default


-s -> Habilita ssl
-f -> detiene el ataque en el instante de encontrar un password valido
-b -> suprime los banners de los servicios
-v -> modo verbose (mas información level de 0 a 6 siendo el 6 mas alto)
- e ns -> Verifica el password vacío o que ambos datos sean lo mismo
-L: Sirve para pasar un diccionario con nombres de usuarios.

Requerimientos:
1. En la máquina virtual Kali (desde donde ejecutamos Medusa).

Primero hay que estar seguros de tener el modulo adecuado al servicio que se quiere atacar. Luego
ya se puede lanzar el ataque.
También se ha de disponer de un diccionario adecuado al tipo de ataque que se va a lanzar. En
[Link] existen multitud de diccionarios de todo tipo.
En nuestro caso crearemos un diccionario que llamaremos [Link] y en el escribiremos
con gedit varias contraseñas entre ellas la correcta para el usuario que se quiera probar.
Para realizar los ejemplos hay que tener el servicio activado en la máquina anfitrión. Servicio referido
al módulo de medusa que se va a utilizar. Por ejemplo, si se va a utilizar el servicio ftp para
encontrar la contraseña deberá estar activado el servidor ftp.
Hacer un ataque de fuerza bruta al propio servidor con el usuario elvira y un diccionario de
contraseñas llamado [Link] y servicio SSH:

# medusa -h IP_maquina_anfitrion -u elvira -P path/[Link] -M ssh

2. En la máquina anfitrión (de donde queremos obtener contraseñas).

Tener instalado y activado el servicio OpenSSH. Desde el Software de Ubuntu se puede instalar y al
ser instalado se ejecuta el servidor sshd.

Ejemplo con SSH:


Desde Kali la salida generada para el caso de ssh es el siguiente:

Tarea:
1. Obtener la contraseña para el usuario 'usuario1' utilizando un diccionario elaborado por el alumno para
el servicio ssh.
2. Obtener la contraseña para el usuario 'usuario1' utilizando un diccionario elaborado por el alumno para
el servicio FTP instalando cualquier servidor ftp en la máquina anfitrión y teniéndolo activo. Por ejemplo,
utilizar vsftpd.
2. Obtener capturas en ambos casos que muestren que se ha obtenido la contraseña desde Kali o desde
el propio Ubuntu.
Otras webs donde se pueden obtener diccionarios:

[Link]
[Link]

Hay diccionarios específicos para atacar diferentes aplicaciones o tipos de webs.


Todas las capturas deben ser incluidas en el documento global de la práctica de la unidad junto
con las explicaciones que correspondan.

69 de 103
U2 Seguridad Lógica

CP -7- Diccionarios con PyDictor

Caso práctico -7- Utillización de PyDictor /


Dymerge

1. Pydictor
Pydictor se utiliza para crear un diccionario para fuerza bruta.
Esta herramienta crea la lista de palabras tanto en palabras normales como en diferentes tipos de
cifrado, como cifrado base64.
Pydictor está escrito en Python.
Hay dos métodos para romper la contraseña usando esta herramienta:
crea una lista de palabras normales
crea la lista de palabras en forma base64

Para instalar ejecutar:


# git clone --depth=1 --branch=master [Link]
/[Link]
Clonando en 'pydictor'...remote: Counting objects: 94, done.
remote: Compressing objects: 100% (82/82), done.
remote: Total 94 (delta 19), reused 48 (delta 8), pack-reused 0
Desempaquetando objetos: 100% (94/94), listo.
root@elvira:~# cd pydictor/
root@elvira:~/pydictor# chmod 755 [Link]

Ahora le indicamos sobre qué bases queremos que genere la lista de palabras. En este caso son dígitos.
La sintaxis es la siguiente:

./[Link] –-len <min> <max> -base d –o <ruta>

./[Link]: comando
–len: longitud de los caracteres
d: dígitos (se puede utilizar c para minúsculas y L para mayúsculas, incluso puede combinar todas)
<min>: hay que indicar la longitud mínima de caracteres
<max>: hay que indicar la longitud máxima de los caracteres
-o: indica la ruta
<ruta>: la ruta donde se guarda la lista de palabras (diccionario)

En concreto nuestra lista se generará con los siguientes parámetros (solo números de 4 dígitos):

El aspecto del archivo generado es el siguiente:

70 de 103
U2 Seguridad Lógica

Siguiendo el mismo esquema generamos una lista de palabras con letras en mayúsculas (-base L) y el
diccionario se llama /root/Escritorio/[Link].
Si se quiere utilizar Pydictor para que genere palabras en Base64, la sintaxis de la orden es la siguiente:
./[Link] –-len <min> <max> -base d –-encode <tipo-codificación> –o <ruta>

./[Link]: comando
–len: longitud de los caracteres
<min>: hay que indicar la longitud mínima de caracteres
<max>: hay que indicar la longitud máxima de los caracteres
–encode: tipo de cifrado/codificación
<tipo-codificación>: codificación
-o: indica la ruta
<ruta>: la ruta donde se guarda la lista de palabras (diccionario)

2. Dymerge
Dymerge es una herramienta en Python que toma varios diccionarios creados anteriormente y los fusiona
en uno solo haciéndolo mas extenso y potente.
Para instalar:

# git clone [Link]


Clonando en 'dymerge'...remote: Counting objects: 180, done.
remote: Total 180 (delta 0), reused 0 (delta 0), pack-reused 180
Recibiendo objetos: 100% (180/180), 30.91 KiB | 103.00 KiB/s, listo.
Resolviendo deltas: 100% (91/91), listo.

Sintaxis:
python [Link] <ruta1> <ruta2> ... <rutaN> -s –o <ruta3>

python [Link]: comando


<ruta1>: ruta del primer diccionario para combinar
<ruta2>: ruta del segundo diccionario para combinar
....
-s: ordena alfabéticamente la salida
-o: ruta donde se guardará la lista de palabras (diccionario)
<ruta3>: ruta propiamente para el archivo generado

Ejecutamos la fusión de los dos diccionarios creados con pydictor desde el directorio dymerge:
# python [Link] /root/Escritorio/[Link] /root/Escritorio/[Link] –s –o
/root/Escritorio/[Link]

y obtenemos el archivo [Link] con la fusión de ambas listas de palabras.

Tarea:

1. Reproducir la creación y fusión de listas de palabras para utilizar como diccionarios.


2. Adjuntar capturas que muestren los resultados.

71 de 103
U2 Seguridad Lógica

CP -8- Gnome-encfs-manager / DiskCryptor

Caso práctico -8- Gnome-encfs-manager /


DiskCryptor

1. Gnome-encfs-manager
Gnome Encfs Manager (GEncfsM) es un gestor gráfico de sistemas de archivos cifrados EncFS, con
soporte para el anillo de claves de Gnome, basado en Cryptkeeper.
La principal ventaja de GEncfsM frente a Cryptkeeper, es la gestión de contraseñas mediante el anillo de
claves de Gnome, que permite guardar las contraseñas de forma segura.
Características:

Permite montar los directorios cifrados cuando se inicia la aplicación


Montar cuanto está disponible el dispositivo
Permitir a otros usuarios acceder al volumen montado
Desmontar cuando está inactivo por un período de tiempo definido por el usuario

Gnome Encfs Manager no está disponible en los repositorios oficiales de Ubuntu. Hay que añadir un ppa
en el que este disponible el paquete:
sudo add-apt-repository ppa:gencfsm/ppa
sudo apt-get update

Ahora ya podemos instalar la herramienta:


sudo apt install gnome-encfs-manager

Una vez instalada está disponible desde Ubuntu > Aplicaciones. Tiene una interfaz gráfica muy simple y
fácil entender.

Aparece un nuevo icono, una llave.


Dar un vistazo a las Preferencias.

Crear una nueva carpeta cifrada


Muestra una ventana que permite seleccionar el directorio que queremos encriptar
Localizamos el directorio en el que se quieren dejar los archivos encriptados
En Nombre damos un nombre al directorio
Pulsamos en Adelante para continuar el proceso.
Introducimos la contraseña y repetimos y de nuevo pulsamos en Adelante
La carpeta ha sido creada.

Si ahora abrimos ese directorio, vemos su contenido sin ningún problema.

Para ocultarlo y que sólo sea posible acceder a él conociendo la contraseña, debemos clicar en el

72 de 103
U2 Seguridad Lógica

icono del Gestor encfs y desmarcar la casilla del directorio que hemos protegido.
Vemos que ha desaparecido ese directorio.
Para poder acceder de nuevo a él, marcamos la casilla y nos pide la contraseña que hemos
asignado previamente.
Sí que lo mostrará la orden ls -a. Sin embargo, al acceder mediante la terminal nos encontraremos
con los archivos encriptados.
Podemos comprobar que, estando no marcada la casilla del directorio, un simple ls no muestra el
directorio ocultado.
Permitir a otro usuario acceder al directorio (volumen montado).
Podemos forzar a que se ejecute al iniciar la sesión en el sistema. Para ello ir a Preferencias >
Aplicaciones al inicio.

2. DiskCryptor en lugar de TrueCrypt


TrueCrypt ha sido abandonada por los desarrolladores a partir de la fecha en que Microsoft discontinuó
WXP. or este motivo aparece el mensaje diciendo que no es segura y no permite la creación de
volúmenes, solo permite el descifrado de volúmenes y por un tiempo hasta que desaparezca.
En su lugar utilizaremos la herramienta Diskcryptor solo disponible para Windows y tambien libre.
Página de descarga: [Link]
DiskCryptor es una solución de cifrado abierto que ofrece el cifrado de todas las particiones del disco,
incluyendo la partición del sistema.
Características:

Utiliza criptografía simétrica AES-256 y es compatible con la desaparecida Truecrypt


Cifrado transparente de las particiones de disco.
Compatibilidad con varias opciones de arranque múltiple.
Total compatibilidad con otros cargadores de arranque como GRUB.
Cifrado de sistema y particiones de arranque con autenticación previa al arranque.
Soporte para archivos de claves.
Soporte completo para los dispositivos de almacenamiento externos.
Opción para crear discos CD y DVD cifrados.
Soporte completo para el cifrado de dispositivos de almacenamiento USB externos.
Montaje automático de las particiones de disco y dispositivos de almacenamiento externos.

Tarea:
1. Reproducir los pasos dados con Gnome-Encfs-Manager y analizar el funcionamiento de la herramienta.
Comprobar las funcionalidades que proporciona.
2. Instalar DiskCryptor en Windows 10 y probar la herramienta.
3. Comparar ambas herramientas.
NOTA.
Trabajar con archivos creados por el alumno.
Una vez finalizada la práctica eliminar todos los archivos de trabajo en el equipo.

73 de 103
U2 Seguridad Lógica

CP -9- Utilizacion de GPG

Caso práctico -9- Utilizacion de GPG


Introducción
GPG cifra los mensajes usando pares de claves individuales asimétricas generadas por los usuarios. Las
claves públicas pueden ser compartidas con otros usuarios de muchas maneras, un ejemplo de ello es
depositándolas en los servidores de claves. Siempre deben ser compartidas cuidadosamente para
prevenir falsas identidades por la corrupción de las claves públicas.
También es posible añadir una firma digital criptográfica a un mensaje, de esta manera la totalidad del
mensaje y el remitente pueden ser verificados en caso de que se desconfíe de una correspondencia en
particular.
1. Generación de claves
La orden gpg --full-generate-key genera dos pares de claves:

claves de cifrado
claves de firma

Su ejecución requiere los siguientes datos:

1. Tipo de algoritmos de clave pública: RSA, DSA+ElGamal, DSA, ElGamal


2. Longitud de clave
3. Fecha de caducidad
4. Identificación del usuarios de las claves: nombre, e-mail,...
5. ”Frase secreta” para el acceso a las claves privadas (se pedirá para descifrar y firmar)

Una vez generada se muestra un resumen con la información de esos pares de claves

Huella de la clave: Identificador único de la clave pública


Se usa como método de autenticación en la distribución de las claves públicas

En linux los ficheros con las claves se mantienen en el directorio .gnupg del directorio HOME del usuario:

[Link]: almacena las claves públicas: las propias y las recopiladas de


otros usuarios (anillo de claves públicas). Está en el direcotorio /.gnupg dentro
del home del usuario.
[Link]: almacena las claves privadas propias (anillo de claves privadas).
Está en el direcotorio /.gnupg dentro del home del usuario.

Comando gpg --list-keys: muestra las claves almacenadas en esos ficheros


$ gpg --list-keys

La captura muestra tres grupos de claves creadas en diferentes fechas. El identificador de la primera es
D82C6DE1. Como identificador tambien se puede utilizar el nombre que aparece abajo. En nuestro caso
es "Elvira Mifsud". El campo anterior muestra el num. de bits utilizados (2048) y el algoritmo utilizado, en
este caso RSA (R).
pub indica que es una clave pública y sub una clave subordinada que se crea por defecto.
Para las claves secretas:
$ gpg --list-secret-keys --keyid-format LONG
2. Certificados de revocación de clave pública

Como precaución puede generarse un certificado de revocación de la clave pública


generada por si en un futuro se ve comprometida y es necesario propagar de forma

74 de 103
U2 Seguridad Lógica

fiable el aviso de su revocación.


El certificado irá firmado con nuestra clave privada
La sintaxis de la orden es:

gpg --output <fich. destino> --gen-revoke


<id. de la clave>

Ejemplo:

$ gpg --output [Link] --gen-revoke "Elvira


Mifsud"
3. Exportar la clave pública propia

Se puede volcar la clave pública a un fichero y distribuirla a otros usuarios para que
puedan enviarnos mensajes.
Sintaxis: gpg --output <fich. destino> --export <id. de la
clave>
Puede guardarse en un fichero ASCII con la opción --armor
Ejemplo:

$ gpg --armor --output mi_clave_gpg.txt --export "Elvira Mifsud"


$ cat mi_clave_gpg.txt
4. Importar una clave pública de otro usuario

Se pueden añadir claves públicas de otros usuarios a nuestro anillo de claves públicas.
Sintaxis: gpg --import <fich. clave publica>
Ejemplo:
Hay que enviar el archivo generado por cada uno de vosotros para que los compañeros
puedan importarlo.

$ gpg --import clave_XXXXX_gpg.txt

$ gpg --list-keys

Aparecerá la lista completa de las claves públicas importadas, incluida la nuestra. Podemos
entonces validar las claves públicas recibidas

Sintaxis: gpg --edit-key clave_XXXXX_gpg.txt

Podemos firmar la clave pública y marcarla como fiable:

Sintaxis: gpg --sign clave_XXXXX_gpg.txt

5. Servidores de claves

GPG puede usar las claves tomadas de un servidor de claves.


Opción --keyserver <nombre servidor> específica el servidor de claves a usar
Por defecto se usa el servidor que se especifica en $HOME/.gnupg/[Link] Comandos:

--send-keys: exporta claves a un servidor de claves


--recv-keys: importa claves desde un servidor de claves
--search-keys: busca claves en un servidor de claves
--refresh-keys: actualiza todas las claves desde un
servidor de claves

6. Cifrado y descifrado

6.1 Cifrado de ficheros

Sintaxis:
gpg --output <fich. cifrado> --encrypt --recipient <id. clave
destinatario> <fich. plano>
Puede generarse un fichero ASCII con la opción --armor

Se genera una clave simétrica de sesión y se cifra el texto plano con ella
La clave pública del destinatario se usa para cifrar esa clave de sesión
El mensaje PGP generado tiene 2 partes (clave de sesión cifrada + fichero cifrado)
El mensaje final se comprime y opcionalmente se transforma a formato ”texto”

Ejemplo:

75 de 103
U2 Seguridad Lógica

$ gpg --armor --output [Link] --encrypt --recipient "Elvira


Mifsud" [Link]
$ cat [Link]

El archivo [Link] contenía el texto: "Hola, esto es una prueba de cifrado GPG"

6.2 Descifrado de ficheros

Sintaxis: gpg --output <fich. destino> --decrypt <fich. cifrado>


Se solicitará la ”frase secreta” para recuperar la clave privada que se usará en el descrifrado.
Ejemplo:

$ gpg --output [Link] --decrypt [Link]

7. Firma digital

7.1 Opción -1-

Sintaxis: gpg --output <fich. destino> --sign <fichero>

Genera una firma digital para el fichero usando la clave privada de firma sobre el resultado de una
función hash del mensaje.
Pide ”frase secreta” para acceder al anillo de claves privadas
El mensaje PGP resultante contiene (fichero original + resumen firmado) comprimidos

Ejemplo:

$ gpg --armor --output fichero_firmado.txt --sign [Link]

7.2 Opción -2-

Sintaxis: gpg --output <fich. destino> --clearsign <fichero>

No comprime el mensaje PGP resultante


Copia el fichero de entrada y añade el fragmento de firma (resumen cifrado con clave privada de
firma)

Ejemplo:

$ gpg --armor --output fichero_firmado.txt --clearsign


[Link]

7.3 Sólo firmas acompañantes

Puede interesar ”separar” la firma del archivo original y generar una firma acompañante
Sintaxis: gpg --output <fich. firma> --detach-sign <fichero>

El resultado contiene únicamente el fragmento de firma (resumen cifrado con clave privada de
firma)
Ejemplo:

$ gpg --armor --output firma_acomp.txt --detach-sign


[Link]

7.4 Verificación de firmas

Para verificar una firma se usa el comando: gpg --verify <fich. firmado>
Con firmas acompañantes se debe aportar el archivo con la firma y el archivo original.
Sintaxis: gpg --verify <firma> <fichero original> Ejemplo:

$ gpg --verify fichero_firmado.txt

Para verificar y extraer el contenido de un mensaje firmado se usa el comando de descrifrado


(--decrypt)
Ejemplo:

$ gpg --output [Link] --decrypt fichero_firmado.txt

8. Certificados de revocación de clave pública

Como precaución puede generarse un certificado de revocación de la clave pública generada


por si en un futuro se ve comprometida y es necesario propagar de forma fiable el aviso de su
revocación.
El certificado irá firmado con nuestra clave privada
76 de 103
U2 Seguridad Lógica

La sintaxis es:

gpg --output <fich. destino> --gen-revoke <id. de


la clave>

Ejemplo:

$ gpg --output [Link] --gen-revoke "Elvira


Mifsud"

...

Tarea:
1. Reproducir los pasos en el equipo personal. Guardar de cada orden ejecutada con éxito la salida
generada.
2. Indica qué tipos de claves asimétricas permite seleccionar y los tamaños. Por defecto ¿cuál utiliza?
3. Explica con detalle la opción --armor.
4. Si cifras el archivo ya cifrado ¿qué pasa?
Todas las capturas y explicaciones pedidas deben ser incluidas en el documento global de la
práctica de la unidad junto con los comentarios que correspondan.
NOTA.

Trabajar con archivos creados por el alumno.


Una vez finalizada la práctica eliminar todos los archivos de trabajo en el equipo.
Se recomienda consultar todas las opciones utilizadas de gpg en la página man de la orden.

77 de 103
U2 Seguridad Lógica

CP -10- Seahorse: interfaz gráfico de GPG

Caso práctico -10- Seahorse interfaz gráfico


de GPG
Introducción
En este caso práctico vamos a cifrar archivos con información que no queremos que esté visible utilizando
una herramienta gráfica incluida en Ubuntu llamada Seahorse. El acceso a estos archivos requerirá una
contraseña.
Seahorse en una interfaz gráfica de GNOME para GnuPG que, como ya se sabe es software libre con
licencia GPL. Seahorse integra GPG con Nautilus pero requiere la instalación del paquete seahorse-
nautilus. Instalando este paquete podremos cifrar archivos utilizando las claves generadas.
Recordamos que GPG o GnuPG es un sistema híbrido y utiliza el método de cifrado denominado
criptografía asimétrica para la clave se sesión, es decir, cada usuario tiene dos claves: una clave privada y
una clave pública. Utiliza criptografía simétrica para encriptar los datos.
La clave privada es la que el propietario usa para descifrar aquello que nos envían cifrado con nuestra
clave pública. Además, la clave privada sólo debe conocerla el propietario, con el fin de que sea el único
que pueda cifrar con dicha clave. En cambio, la clave pública es la clave que daremos a terceros para
que nos envíen archivos o mensajes cifrados. Esta clave la utilizarán para cifrar los archivos o mensajes
que nos quieran enviar.
1. Instalación
Localizar seahorse (en Ubuntu 18.04 está instalado por defecto) y Seahorse-plugins (instalar todos). Es
posible que no se pueda localizar este paquete en la version de Seahorse que lleva Ubuntu por defecto.
Los plugins los lleva el propio paquete.
Solo habrá que instalar el paquete seahorse-nautilus.
Está disponible en Mostrar Aplicaciones > Seahorse.
El aspecto de la aplicación es el siguiente:

2. Generar nuestro par de claves


Abrir la aplicación e ir a Archivo > Nueva. En el cuadro de diálogo que aparece, seleccionamos la opción
Clave PGP y hacemos clic en el botón Continuar.
Aparece un cuadro de diálogo donde introducimos nuestros datos Nombre Completo y Dirección de
Correo. En el apartado Opciones avanzadas de clave, podemos seleccionar un tipo diferente de cifrado,
aunque la opción por defecto “RSA y 2048 bits” es considerada bastante segura a la vez que flexible para
todas las necesidades.
Cualquiera sea la opción elegida, una vez que hayamos finalizado hacemos clic en el botón Crear.

78 de 103
U2 Seguridad Lógica

El campo Dirección de correo es utilizado si queremos enviar correos electrónicos cifrados y es


obligatorio. Pide contraseña y confirmación.
A continuación se pide una contraseña para descifrar los archivos. La contraseña puede incluir letras,
números y símbolos.

Una vez creada lo comprobamos en la interfaz y cerramos la aplicación Seahorse. Es posible que no
aparezca de forma inmediata. Paciencia. Si es necesario cerrar sesión de usuario y volver a abrir sesión.
No reiniciar la máquina.
Cuando la volvemos a abrir en la sección de Claves GnuPG vemos:

Si vemos que no se generan las claves comprobar si existe en el home del usuario una carpeta .gnupg y
borrarla con todo su contenido. Esta carpeta la ha generado gpg en el ejercicio anterior.
3. Cifrar/Descifrar archivos y directorios
Para ello seleccionamos un archivo, hacer clic con el botón derecho del ratón y seleccionar la opción
Cifrar.

79 de 103
U2 Seguridad Lógica

En la ventana que aparece, seleccionamos la clave que hemos creado, y hacemos clic en Aceptar.

Ya cifrado el archivo deberemos tener en la misma carpeta una nueva versión del archivo con la extensión
.pgp.
Si queremos cifrar una carpeta el proceso es exactamente el mismo, sólo que esta vez se nos preguntará
también si deseamos cifrar cada archivo dentro de la carpeta por separado o si queremos crear un archivo
comprimido que luego será cifrado. La segunda opción es la mejor en la mayoría de los casos.

Importante!!!

Hemos de borrar de forma permanente el archivo original. OJO con la papelera! Pero
antes hay que comprobar que el descifrado funciona correctamente.

Si ciframos un directorio, deberíamos encontrar dos nuevos archivos, la versión cifrada con la extensión
.pgp y un archivo comprimido con la versión original del folder. Tanto el comprimido como la carpeta
original, pueden ser borrados después del cifrado.
Para comprobar que el cifrado es OK hay que hacer doble clic en el archivo .pgp, introducir la contraseña.
El archivo original reaparecerá. Si es un directorio, el archivo .zip aparecerá y deberemos extraer el
contenido del mismo.
4. Descifrar archivos en otro equipo
Para descifrar archivos en otro ordenador, hay que exportar nuestra clave privada y luego importarla en
dicho equipo. Esto representa un riesgo de seguridad. Sin embargo, algunas veces puede ser necesario
descifrar archivos en otro ordenador.
Pasos:

1. En el ordenador que hemos creado las claves, iniciamos Seahorse y hacemos clic con el
botón derecho del ratón en nuestra clave personal. En el menú seleccionamos la opción

80 de 103
U2 Seguridad Lógica

Propiedades.

2. En el cuadro de diálogo que aparece, vamos a la pestaña Detalles y hacemos clic en el


botón Exportar. Guardamos el archivo en el escritorio. Si todo ha ido bien en el escritorio habrá
un nuevo archivo con la extensión .asc que contiene nuestra clave privada.

3. Copiamos el archivo .asc a una memoria USB, y lo trasladamos a otro ordenador. En el


segundo ordenador iniciamos Seahorse y hacemos clic en el botón Importar. Navegamos
hasta el archivo .asc, y pulsamos en Abrir. Esto importará la clave. Después de esto, cerramos
Seahorse.

Ahora ya podemos hacer doble clic sobre cualquier archivo cifrado para descifrarlo.

4. Si el otro ordenador no tiene Seahorse instalado (tal vez sea otra distro o una versión vieja
de Ubuntu), copiamos la clave al escritorio, abrimos una terminal y ejecutamos el siguiente
comando (suponemos que gpg está instalado):

gpg --import "/home/usuario/Escritorio/[Link]"

5. Entonces, para descifrar un archivo, escribimos en una terminal:

gpg nombre_de_archivo.pgp

Hay que reemplazar nombre_de_archivo.pgp con el nombre del archivo a descifrar. Nos pide la
contraseña. Una vez hecho esto, el archivo original se guarda en la misma carpeta donde está
el archivo .pgp.

Importante!!!
1. Deberíamos comprobar que el archivo original y el archivo descifrado
coinciden al menos la primera vez para estar seguros de que la
herramienta funciona bien.
2. Hemos de borrar de forma permanente el archivo original. OJO con la
papelera! Pero antes hay que comprobar que el descifrado funciona
correctamente.
3. La hora y fecha de los ordenadores donde creemos/importemos
/exportemos las claves debe ser correcta. Por varias razones técnicas,
Seahorse y el comando gpg no pueden importar una clave si la hora y
fecha en la PC, es menor que la fecha en la que aparece creada. Por
supuesto, esto significa que si el equipo donde creamos la clave tiene una
fecha errónea, podría darnos muchísimos problemas la creación y uso de
la clave.

Tarea:
1. Reproducir los pasos en el equipo personal. Guardar de cada paso realizado la captura
correspondiente explicando lo que se ha conseguido en dicho paso.
2. Indica qué tipos de claves asimétricas permite seleccionar y los tamaños. Por defecto ¿cuál utiliza?
3. Exporta la clave privada y, si dispones de otro equipo o mediante una máquina virtual, utilizando dicha
clave descifra un archivo que ha sido enviado por correo y descargado en dicha máquina. Realiza el
proceso y compara con el archivo original. Comenta el resultado en el archivo general de la práctica,

81 de 103
U2 Seguridad Lógica

dentro del caso práctico y apartado correspondiente.


4. Utiliza la opción de firmar el documento cifrado. Explica tu como funciona esta opción.
Todas las capturas y explicaciones deben ser incluidas en el documento global de la práctica de la
unidad junto con las explicaciones que correspondan.
NOTA.
Trabajar con archivos creados por el alumno.
Una vez finalizada la práctica eliminar todos los archivos de trabajo en el equipo.

82 de 103
U2 Seguridad Lógica

CP -11- Instalación de una infraestructura de clave


pública PKI (Ubuntu)

Caso práctico -11.1- Instalación de una


infraestructura de clave pública con XCA
(Ubuntu)
1. Introducción
El objetivo de este caso práctico es que el alumno practique la generación y utilización de certificados
digitales definidos en el estándar X.509 v3 de la UIT-T.
Para poder establecer una conexión SSL la máquina destino requiere un certificado de servidor.
El certificado de servidor contiene la firma de la Autoridad Certificadora (CA), la clave pública del
destinatario, la fecha de caducidad, etc.
Podemos solicitar un certificado digital a una Autoridad Certificadora (CA) pero cobrará por ello. Sin
embargo podemos, mediante openssl, crear nuestra propia Autoridad Certificadora transformando nuestro
servidor en un servidor SSL y transmitir la información cifrada sin ningún gasto.
Lógicamente los certificados emitidos por nuestra CA no tienen ninguna validez en entornos de
producción. Los certificados auto-firmados no son aceptados automáticamente en ningún navegador. Pero
a efectos de comprensión de la gestión de certificados es importante conocer e intentar reproducir su
dinámica.
Un servidor web es seguro cuando utiliza una combinación del protocolo SSL (HTTPs) para poder
enviar la información cifrada y un certificado digital proporcionado por una CA.
Se reconoce el uso de comunicaciones mediante SSL porque en la URL aparece el prefijo [Link]
El certificado digital, una vez autogenerado u obtenido, se debe de instalar en la configuración del servidor
seguro SSL y en el navegador web.
El alumno tendrá el rol de Autoridad de Certificación (CA) y por otra parte también será una entidad que
solicita un certificado a esa CA.
Una CA es una entidad reconocida en un país, comunidad autonómica o incluso internacionalmente y que
certifica que un usuario o servidor web es quien dice ser. Es decir, que la clave pública contenida en su
certificado digital es válida y se ha verificado, normalmente, de forma presencial. Es el papel que realiza la
Fábrica Nacional de Moneda y Timbre, la Autoridad de Certificación de la Generalitat Valenciana o la
Policía Nacional en el caso del DNI-e.
Para la realización de la práctica se utilizará un programa bajo GNU/Linux llamado XCA, que es un
interfaz gráfico de OpenSSL, cuyo uso en línea de comandos es complejo y esta herramienta nos facilita
esa tarea.
2. Instalación de XCA
Ir a Centro de software y localizar XCA e instalar.
Está disponible en Ubuntu > Mostrar Aplicaciones > XCA.
3. Crear Base de datos
Antes de trabajar con el programa, independientemente del rol que tengamos inicialmente, es
necesario crear una base de datos donde el programa guardará y gestionará las claves generadas,
peticiones de firma de certificados, los certificados propiamente los que solicitemos o creemos.
Para ello y abierta la aplicación XCA, desde una terminal y como sudo, ir a File > New Database.
Asignar un nombre y directorio para guardar. La extensión asignada por defecto es (.xdb).
Asignar una contraseña para proteger los certificados y las claves privadas de ellos.
Una vez creada la base de datos ya podemos generar y tramitar certificados.
Parte I
1. Creación del certificado de la Autoridad Certificadora: constituirnos como una CA
El primer paso es constituirnos como una CA que podrá certificar y validad certificados digitales de
otras personas o servidores web.
Para ello ir a la pestaña Certificates > New Certificate.
En la ventana que aparece, en la pestaña Source se debe seleccionar el Template [default] CA y
pulsar Apply all. No pulsar todavía Aceptar. La aplicación XCA dispone de una serie de plantillas
(templates) para configurar parámetros por defecto en función del uso del certificado. Ya que vamos a
crear nuestra propia Autoridad de Certificación debemos seleccionar ese template.
En esta misma pestaña, observa como tiene marcada la opción Create a self signed certificate with
83 de 103
U2 Seguridad Lógica

the serial, lo que viene a decir que el certificado es un certificado RAÍZ de certificación autofirmado, es
decir, no hay jerárquicamente ninguna otra CA por encima de la que estamos creando que valide
nuestro certificado.

Esto significa que cualquier certificado de servidor https que se firme con esta CA, NO va a ser
aceptado por defecto en ningún navegador, a menos que tengan instalado el certificado de nuestra
CA que vamos a crear (como ya se encuentran instalados de serie en la mayoría de navegadores los
certificados de muchas CA's reconocidas internacionalmente).
Observa que una vez seleccionado el Template [default] CA, en la pestaña Extensions, se ha marcado
Certification Authority como tipo de Certificado y con una validez de 10 años.
Esto es así porque en la plantilla por defecto se ha definido esa validez. El programa te permite
generar otra plantilla personalizada con distintos parámetros, como por ejemplo los años de validez.
Por ejemplo, hay algunas CA como la GVA o la FNMT que tienen 20 de años de validez en sus
certificados.
Observa también que en la pestaña Key Usage (utilización de la clave), se ha marcado Firma de otros
certificados (Certificate Sign) y firma de Listas de Revocación de Certificados (CRL Sign). Esto es así
porque éste es el uso habitual de un certificado de una CA: firmar y revocar otros certificados. Marca
en el marco Key Usage la opción Critical.

84 de 103
U2 Seguridad Lógica

En la pestaña Sujeto tienes que escribir los campos que identificarán a la CA.
En la figura se muestra un ejemplo de los valores que se pueden poner. Personalizar con los datos
indicando valores que tengan sentido como si fueran para una CA real y no utilizar acentos.

Ahora sólo nos falta crear un par de claves para el certificado.


Recuerda que los certificados digitales utilizan la criptografía asimétrica o de clave pública y por tanto
todo certificado va asociado a un par de claves. Para ello pulsa Generate a new key y asignar un
nombre.

85 de 103
U2 Seguridad Lógica

Se pueden cambiar para mayor seguridad al tamaño de la clave o el tipo de clave (RSA, DSA). Pulsar
Create.

En la ventana principal pulsar en Aceptar.


Al volver a la pantalla original de creación del certificado, espera a que aparezca la clave que has
creado en la lista desplegable y pulsa OK. El certificado se habrá creado y aparecerá en la lista de
certificados del programa:

86 de 103
U2 Seguridad Lógica

La figura anterior muestra el listado de certificados disponibles en la base de datos de XCA que
hemos generado.
La figura siguiente muestra la clave privada generada para la CA.

Llegados a este punto, ya eres una CA (vamos a suponer que reconocida internacionalmente, como
Verisign o Thawte) y tienes capacidad de firmar y revocar certificados a personas o a servidores web
para el protocolo HTTPs.
El siguiente paso es que tu mismo te hagas una petición de firma de un certificado (conocido como
CSR:Certificate Signing Request) para montar un servidor https para un dominio que se va a llamar
[Link]. Puedes realizar la petición desde otro equipo o desde una máquina
virtual que este configurada la tj de red como puente y que tenga instalada la herramienta XCA.
Hacemos la petición de firma de certificado (CSR) para que sea firmado por la CA. El objetivo es
simular una situación real, en la que, para montar un servidor seguro sobre un dominio comprado en
un servidor web y que dicho certificado sea reconocido por cualquier navegador, tienes que solicitarlo
a una CA reconocida, como las citadas anteriormente (y que cobran por ello).
En nuestro caso vamos y para simplificar vamos a emitir desde nuestra CA el certificado de servidor
seguro. Pero la realidad sería implementar una situación como la expresada en los párrafos
anteriores.

87 de 103
U2 Seguridad Lógica

2. Exportar el certificado de la Autoridad Certificadora que hemos generado.


Para ello y en primer lugar vamos a XCA y en la pestaña Certificates seleccionamos el certificado de
la CA en formato PEM (*.crt) y pulsamos en Export.

Pulsar en Aceptar.
Ahora el paso siguiente será instalar este certificado en el navegador web que utilicemos. Nosotros lo
vamos a hacer en Firefox.
3. Instalación del certificado de la CA en el navegador
Vamos a importar el certificado desde Firefox. Para ello:
Ir a Editar > Preferencias > Privacidad y Seguridad > Certificados > Ver Certificados > Autoridades >
Importar
Seleccionar el certificado exportado en el paso anterior y seleccionar la opción Confiar en esta
CA para identificar sitio web. Aceptar.

Si ahora localizamos el certificado instalado se pueden Ver sus características:

88 de 103
U2 Seguridad Lógica

Parte II
1. Creación de un certificado de servidor seguro
Supongamos que disponemos de un servidor web y queremos crear un certificado que le de
autenticidad y confidencialidad a los datos que maneje.
Ir a la pestaña Certificates > New Certificate. Marcar las opciones indicadas en la figura, incluida
Apply All:

89 de 103
U2 Seguridad Lógica

Ir a la pestaña Source y seleccionar la opción Use this Certificate for signing. Buscar en la lista el
certificado que acabamos de crear. En Template seleccionar HTTPS_server.
Pulsar en Apply all. De esta forma el resto de las pestañas actualizarán sus valores por defecto a la
selección hecha aquí.

Ir a la pestaña Sujeto y rellenar los campos teniendo en cuenta que el servidor es


[Link].
De todos los campos el Common Name es el mas importante y debe coincidir con el FQDN del
dominio con el que se identificará el servidor seguro en Internet. En nuestro caso es
[Link].
90 de 103
U2 Seguridad Lógica

En la pestaña Extensions modificamos el Type:

Importante
Para que se resuelva este nombre de dominio ficticio habrá que añadir en /etc/hosts una línea que
identifique nuestra IP con dicho nombre.
[Link] [Link]
En XCA pulsar en Generate a new key. Muestra una ventana con los datos y pulsamos en Create. A
continuación indica que la clave se ha generado correctamente.

91 de 103
U2 Seguridad Lógica

Si vamos ahora a la pestaña Extensions vemos las características de nuestro certificado de servidor,
entre ellas el período de validez del mismo, 365 días. Lo dejamos tal y como está.
Por último pulsamos en Aceptar para obtener nuestro certificado de servidor web.
Comprobamos que el certificado del sevidorseguroxca ha sido emitido por nuestra CA:

4. Preparación del equipo servidor.


Nuestro equipo debe tener instalado el servidor web Apache y activado el módulo ssl.
SSL (Secure Socket Layer) es un protocolo que permite establecer una comunicación segura y
codificada entre el servidor y el navegador.
SSL se desarrolló para trabajar con el protocolo HTTP, creando un protocolo de transmisión de
hipertexto seguro (HTTPS).
Para ello y desde una terminal:
# apt install apache2
# apt install openssl libssl-dev

Activar el modulo SSL

# a2enmod ssl

El módulo mod_ssl está disponible en el paquete apache2.2-common que se instala junto con la

92 de 103
U2 Seguridad Lógica

instalación de apache2.
El módulo mod_ssl tiene las siguientes directivas de configuración, muchas de las cuales se utilizan
desde el propio archivo de configuración específico del módulo, /etc/apache2/mods-available
/[Link].
La directiva de carga del modulo mod_ssl se encuentra en el archivo /etc/apache2/mods-
available/[Link].

Directiva Descripción
SSLEngine Activa el motor SSL
SSLCACertificateFile Indica el archivo con el certificado de la
Autoridad de Certificación
SLCARevocationFile Archivo con la lista de certificados revocados
(CRL) por la Autoridad de Certificación.
SLCertificateFile Archivo del certificado del servidor que puede
incluir su clave privada.
SLCertificateKeyFile Archivo con la clave privada y codificada del
certificado. Debe estar protegido.
SSLOptions Opciones SSL para directorios.
SSLProtocol Protocolos usados (SSLv2, SSLv3, TLS).
SLRequire Definición de requisitos de acceso.
SLRequireSSL Indica la obligación de usar HTTPS.
SSLUserName Variable que almacena el nombre de usuario.
SSLVerifyClient Nivel de verificación de clientes.

Ir al archivo de configuración del sitio correspondiente al servidor seguro (default-ssl) que es


/etc/apache2/sites-available/[Link] y en las líneas indicadas:
SSLCertificateFile /etc/ssl/certs/[Link]
SSLCertificateKeyFile /etc/ssl/private/[Link]
hacer las modificaciones siguientes:
SSLCertificateFile /home/elvira/Servidor_Seguro.p12
SSLCertificateKeyFile /home/elvira/Servidor_Seguro.pem

MUY IMPORTANTE
Los nombres y paths dados en el certificado y la clave deben coincidir con los dados en la exportación
del punto 5 siguiente.
Añadir también la linea que identifica a nuestro servidor seguro:

ServerName [Link]

Guardar los cambios hechos en el archivo.


Reiniciar el servidor apache2:
# systemctl restart apache2
Recordar que para que se resuelva correctamente este nombre de servidor deberemos haber añadido
la linea correspondiente en /etc/hosts.
5. Exportación e instalación del certificado de servidor seguro.
Volvemos a XCA y vamos a exportar el certificado de servidor que habíamos creado y la clave
asociada.
NOTA
Si se ha ejecutado XCA como root podremos dejar los certificados en /etc/ssl/ pero si se ha ejecutado
XCA como usuario y los hemos dejado en nuestro home y en las directivas de configuración hemos
indicado este directorio no tendremos ningún problema.
En primer lugar exportaremos la clave privada creada para el servidor seguro.
Ir ahora a la pestaña Private keys y seleccionar la clave privada del certificado de nuestro servidor
seguro. Pulsar en Export.
Seleccionar el directorio de ubicación y cambiar el nombre para que coincida con el dado en default-
ssl.

93 de 103
U2 Seguridad Lógica

Pulsar en Aceptar.

Ahora exportamos el certificado del servidor seguro a PKCS#12 para instalarlo en el


navegador.

Vamos al navegador e importamos este certificado:

94 de 103
U2 Seguridad Lógica

Podemos ver las características de este certificado:

6. Comprobación de funcionamiento del servidor seguro


Vamos al navegador y en la URL escribimos [Link] y nos muestra el
inicio de apache ya que no tiene nada configurado y es el [Link] por defecto de apache2.

95 de 103
U2 Seguridad Lógica

Comprobamos que el candado no aparece verde. El motivo es porque las imagenes no son seguras.
Se puede comprobar en los detalles del certificado. Para nosotros es suficiente así.
Parte III
1. Creación de un certificado de usuario
El objetivo es crear un certificado para autenticarnos en nuestro servidor seguro. Para ello en lugar de
crear directamente el certificado desde XCA, lo que hacemos es una petición de certificado. Nuestra
CA lo emitirá y luego lo firmará.
Ir a la pestaña Certificate Signing Request > New Request.
En la pestaña Source seleccionar el template [default] HTTPS_client y pulsar Apply all, de esta forma
se ajustan los parámetros en el resto de pestañas.
En la pestaña Sujeto hay que escribir los campos que te identificarán al usuario.
En la siguiente pantalla hay un ejemplo de los valores que se pueden poner. Cambiar personalizando
y evitar usar acentos. Tener en cuenta que Common Name es el nombre del usuario que solicita en
certificado.
Pulsar en Generate a new key.
Pulsar Create y ya hemos generado una petición de firma de certificado. Esta petición de firma de
certificado (también conocido como CSR) es CASI un certificado, porque sólo le falta que una CA lo
verifique, lo autorice y lo firme. Pulsar Aceptar.

Para firmar la petición:


Estando sobre la petición de certificado pulsar el botón derecho y seleccionar la opción de Firmar.
En la pestaña Source seleccionar la opción Use this certificate for signing y seleccionar nuestra CA:

96 de 103
U2 Seguridad Lógica

Pulsar Aceptar.

2. Instalación del certificado de usuario


Para ello primero hay que exportar el CSR.
Ir a Certificates y seleccionar el certificado de usuario.
Pulsar en Export. Seleccionar la opción de formato de exportación PKCS-12. Solicita contraseña.

97 de 103
U2 Seguridad Lógica

Ahora ya podemos instalar el certificado de usuario en Firefox.


Ir a Editar > Preferencias > Privacidad y Seguridad > Certificados > Ver Certificados > Sus
Certificados > Importar. Seleccionar el archivo generado usuarioprueba.p12.
Si se está trabajando con dos equipos se puede hacer la solicitud de certificado desde un equipo
cliente que luego se conectará al [Link].
El usuarioprueba cuando abra una sesión y desde el navegador intente acceder a
[Link] se estará haciendo uso de este certificado.

Tarea:
1. Acceder a [Link] y descargar la última versión disponible para Windows.
Reproducir los pasos para la versión de Windows. Realizar las capturas necesarias que muestren todo el
proceso.
NOTA
En lugar de Apache2 se puede utilizar XAMPP para la tarea.
Todas las capturas deben ser incluidas en el documento global de la práctica de la unidad junto
con las explicaciones que correspondan.

98 de 103
U2 Seguridad Lógica

Caso práctico -11.2- Obtención del


certificado digital
Introducción
El objetivo de este caso práctico es que el alumno obtenga su propio certificado digital de alguna de la CA
que lo proporcionan de forma gratuita durante un período de tiempo.
Como posibles CA están:

FNMT ([Link]
Verisign ([Link]
Thawte ([Link]
IPS ([Link]

IMPORTANTE.
Este caso práctico no está dirigido sino que es de investigación por parte del alumno. Por lo tanto, el
alumno decidirá en qué CA va a obtener su certificado digital y documentará todo el proceso de obtención
de dicho certificado.
Si el alumno dispone ya de su propio certificado digital no tiene que realizar este caso práctico.
Tarea:
Realizar capturas del proceso de obtención explicando cada uno de los pasos dados hasta estar en
posesión del certificado.
Incluir todas las capturas y explicaciones en el archivo general de las prácticas de la unidad,
dentro del caso práctico y apartado correspondiente.

99 de 103
U2 Seguridad Lógica

CP -12- EasyRSA

Caso práctico -12- EasyRSA


[Link]
[Link]

100 de 103
U2 Seguridad Lógica

Noticias

Noticias
Proponemos una serie de casos para ver cómo está el mundo de la seguridad informática…
19 de Enero de 2001

Un intruso borra la página web de la Presidencia de Bulgaria.

25 de Enero de 2001

Denegación de servicio de las páginas web de Microsoft en los Estados Unidos y Europa.

Febrero 2001

Cientos de empresas austríacas sufrieron robos de datos que permitieron a los crackers hacer
llamadas telefónicas a lugares de todo el mundo, a cuenta de dichas empresas, por supuesto.

4 de Febrero de 2001

Los sistemas del Foro Económico Internacional, reunido en Davos, fueron invadidos por
intrusos. Consiguieron información altamente confidencial y con el número de las tarjetas de
crédito de los más altos mandatarios mundiales.

9 de Marzo de 2001

Crackers rusos y ucranianos consiguieron cerca de un millón de números de tarjetas de crédito


robadas de las bases de datos de bancos norteamericanos y empresas de comercio
electrónico por Internet.

Abril de 2001

Durante la crisis desatada por el avión‐espía norteamericano, hackers chinos paralizaron por lo
menos veinte sitios web, entre ellos el de la Casa Blanca.

24 de Junio de 2001

El virus CodeRed ya ha producido daños por un valor estimado en 1.200 millones de dólares.

14 de Octubre de 2001

Tras el atentado a las Torres Gemelas, hackers iraníes mantienen paralizada buena parte de la
red informática que brinda servicios a General Electric.

21 de Noviembre de 2001

En los [Link]. atacantes desconocidos entraron en el sitio Web de Playboy. Consiguieron


tener acceso a los datos de los usuarios, incluyendo los números de las tarjetas de crédito.

101 de 103
U2 Seguridad Lógica

Conceptos y vocabulario

Conceptos
Seguridad lógica

La seguridad lógica consiste en la aplicación de barreras y procedimientos que resguarden el


acceso a los datos y sólo se permita acceder a ellos a las personas autorizadas para hacerlo.

ACL

ACL permite un control más preciso que los permisos del archivo por sí solos, al dar al
propietario de un objeto la capacidad de conceder o denegar accesos usuario por usuario.

Ataque por fuerza bruta

Es la forma de recuperar una clave probando todas las combinaciones posibles hasta
encontrar aquella que permite el acceso.

Ataque por diccionario

Método de cracking que consiste en intentar averiguar una contraseña probando todas las
palabras del diccionario.
Este tipo de ataque suele ser más eficiente que un ataque de fuerza bruta, ya que muchos
usuarios suelen utilizar una palabra existente en su lengua como contraseña para que la clave
sea fácil de recordar, lo cual no es una práctica recomendable.

NAT

NAT (Network Address Translation - Traducción de Dirección de Red) es un mecanismo


utilizado por enrutadores IP para intercambiar paquetes entre dos redes con direcciones
incompatibles. Consiste en convertir en tiempo real las direcciones utilizadas en los paquetes
transportados.
Su uso más común es permitir utilizar direcciones privadas para acceder a Internet.

IP Spoofing

Spoofing, en términos de seguridad de redes hace referencia al uso de técnicas de


suplantación de identidad generalmente con usos maliciosos o de investigación.
Es una técnica utilizada por crackers para enmascarar el IP dell ordenador. Utilizando
direcciones falsas, los crackers pueden atacar servidores u ordenadores domésticos sin miedo
de ser rastreados, ya que la dirección que es enviada para los destinatarios es falsa.

TCP SYN Cookies

Técnica usada para defensa del ataque inundación SYN. Recordar que SYN es el bit de
control (flag) dentro del segmento TCP de peticion de conexion.

102 de 103
U2 Seguridad Lógica

Webs de interés

Contenido

[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link] — Sitio Web para ACLs

103 de 103

También podría gustarte