19 Abr

Criptografía:


consiste en escribir con una clave secreta, para proteger datos. Permite enviar mensajes en clave secreta a través de la red.

Cifrar:


proteger datos modificándolos usando una clave.

Aplicaciones de la criptografía:


– Identificación y autenticación:

 identificar un individuo o validar el acceso al servidor.

– Certificación

Esquema con el que agentes conocidos validan la identidad de agentes desconocidos.

Seguridad de las comunicaciones

Para establecer canales seguros para aplicaciones que operan en redes no seguras.

Comercio electrónico

Usar canales seguros y mecanismos de identificación asegura que las operaciones de los usuarios y empresas no se modificarán o espiarán.

Carácterísticas de los servicios de seguridad

Confidencialidad:

asegurar que solo los usuarios autorizados puedan ver la comunicación y entender los mensajes.

Integridad

Asegurar que el mensaje no se modifique por terceros durante la comunicación. 

Autenticación

Asegurar el origen, la autoría y propiedad de los datos. 

No repudio

Asegurar que el emisor no pueda negar haber enviado el mensaje.

Estructura de un sistema secreto

-Clave:

parámetro que especifica una transformación con la función de cifrado/descifrado.

Criterios de Shannon


Los cifrados se han de desarrollar en base a:



Confusión

Distribuir las propiedades de los elementos del mensaje en el texto cifrado.

Difusión

Usar algoritmos de cifrado para complicar el descifrado el mensaje.

Carácterísticas que debería tener una función de cifrado:



1- Las claves deben ser simples y fáciles de crear.
2- La longitud del texto cifrado no debe ser mayor que la del texto descifrado.
3- Los errores de transmisión no deben provocar ambigüedad.
4- El análisis estadístico del texto cifrado debe ser costoso para que no sea rentable realizarlo.

5- Una vez conocida la clave de un sistema secreto deben ser simples y se debe destruir la estructura del mensaje para complicar el análisis estadístico.
La seguridad depende del algoritmo de cifrado y de lo secreta que sea la clave. Si se pierde una clave o es fácil de adivinar el sistema está en peligro. Hay que saber elegir una clave y establecer métodos para protegerla.

Tipos de claves:



Simétrica (modelo de clave privada):

la clave de cifrado y descifrado son la misma.

Asimétrica (modelo de clave pública):

la clave de cifrado y descifrado no son la misma y están relacionadas.

Programación de cifrado


Java ofrece herramientas para controlar claves y mecanismos de cifrado. Elementos para el cifrado:

Interfaz Key(opaca)

Representa claves para cifrar y descifrar. Se implementa en clases que representan claves y tiene tres partes:

Forma codificada:


representa la clave

Formato


Forma en la que está codificada la clave

Algoritmo:


nombre d ela función de cifrado o descufrado.

Interfaz KeySpec(Transparente)

Representa claves con acceso a sus elementos, para distribuirlas. Implementa claves que se guardan sin acceso a sus elementos.

Interfaz Cipher

Generador y Factorías de claves


-Generadores de claves:

 se usa para crear claves nuevas.

-Factorías de claves:

se usa para obtener claves transparentes a partir de claves opacas y viceversa.

Clase Cipher

Los objetos de la clase Cipher representan funciones de cifrado o descifrado. Se crean definiendo el algoritmo a usar. Se pueden configurar para realizar operaciones de cifrado y descifrado, definiendo la clave necesaria.

Modelo de clave privada


Emisor y receptor reciben y usan la misma clave.

Ventaja


Ofrece buen rendimiento.

Desventajas/Problemas:


-La forma en que emisor y receptor obtienen la clave
– Se deben usar claves diferentes para comunicarse con cada receptor.
– Cuantos más mensajes se cifren con la clave, más expuesta estará a un análisis estadístico.


Algoritmos de cifrado simétrico


-DES:

estándar para comunicaciones que cifra texto de longitud fija como texto cifrado de la misma longitud. Tiene una clave para modificar las trasformaciones. Fases:
      1- Permutacióninicial: para dar confusión y difusión al algoritmo.
      2- Sustitución con cajas-S que comprimen, permutan y sustituyen los datos.
      3- Permutación final inversa a la inicial.

-AES (sustituye a DES):

estándar de cifrado rápido y fácil de implementar, que se desarrolló de forma pública, con un sistema de cifrado por bloques. Gestiona la longitud de claves y bloques variables.

Programación de cifrado simétrico


– Clase KeyGenerator

Para generar claves simétricas.

– Interfaz SecretKey

Representa claves simétricas opacas e implementa la interfaz Key.

– Clase SecretKeySpec

Representa claves simétricas de forma transparente e implementa la interfaz KeySpec.

– Clase SecretKeyFactory

Se usa como clase de factoría de claves basadas en la interfaz SecretKey.

Funciones hash

Algoritmo matemático que resumen un mensaje en una cantidad de datos fija y menor. Permite ofrecer pruebas de integridad de la transferencia de datos (MAC). Requisitos:
– Cálculo rápido.
– La clave debe ser difícil de adivinar.
– El resumen debe tener una longitud fija.
– La descripción de la función de descifrado debe ser pública.
– Resistente a colisiones: no habrá solo un valor cifrado de un mensaje.
– Función de un solo sentido: no se debe poder producir un documento con sentido que lleve al hash a partir de los valores cifrados.
Se usan para identificar archivos independientemente de su nombre o ubicación. Por eso se aplican a los datos y estos se guardan en la posición definida por la función, permitiendo aplicarlas otra vez a los datos y acceder a la posición indicada.
También permiten comprobar si un archivo se ha descargado correctamente de Internet.

Programación con la función hash


En Java se usa la clase MessageDigest. Para generar una clave hash:
1- Obtener una instancia de la clase MessageDigest.
2- Introducir los datos en la instancia.
3- Computar el resumen.


Modelo de clave pública

Se usa para evitar el problema de la distribución de claves entre emisor y receptor. Se basa en conocer las claves públicas de los usuarios. Hay dos claves diferentes:

– Privada:

solo la sabe el usuario.

– Pública

Publicada para todos.

Están relacionadas por una función de sentido único.

Debe ser difícil calcular una clave a partir de la otra.

Es un sistema asimétrico, ya que se usan claves diferentes para cifrar y descifrar:

– Para enviar un mensaje, se busca la clave pública del receptor y se cifra con la clave.

– Solo se puede desencriptar con la clave privada del receptor.

Algoritmo RSA

 Algoritmo asimétrico de cifrado por bloques que usa:

– Una clave pública, publicada para todos.

– Una clave privada, solo la sabe el propietario.

– La relación entre estas se basa en el producto de dos números grandes aleatorios.

Programación de cifrado asimétrico

Interfaz PublicKey


Implementa la interfaz Key y permite representar claves públicas.

Interfaz PrivateKey


Implementa la interfaz Key y permite representar claves privadas.

Clase KeyPairGenerator


Permite generar pares de claves.

Clase KeyPair:
Sus objetos permiten guardar pares de claves.

Clase KeyFactory


Factoría de claves.

Modelo híbrido

Los sistemas de clave pública son más costosos que los de clave privada, por eso se unen:

– Los mensajes se codifican con algoritmos simétrico y una clave simétrica para mejorar la velocidad al transmitir datos.

-La clave se genera aleatoriamente.

– Se usan sistemas de clave pública para codificar y enviar la clave simétrica.

– Los mensajes enviados y recibidos durante la sesíón se cifran con la clave simétrica.


Firma digital

Asocia la identidad del emisor al mensaje a enviar a la vez que se comprueba su integridad,

aplicando una función hash y usando un sistema de clave pública para codificar y firmar el resumen obtenido al autenticar el mensaje.

Programación de firma digital

La biblioteca Java tiene la clase Signature para firmar digitalmente:

– Se necesita un par de claves.

– Permite verificar firmas digitales.

– Se usa de forma parecida al cálculo de funciones hash.

Certificado digital:


Documento firmado digitalmente, que confirma la identidad, vinculando la clave pública. Permite:

– Cifrar datos para que solo el receptor pueda acceder al contenido.

– Firmar digitalmente.

– A usuarios y servidores identificarse, autenticados por una autoridad de certificación.

Servicios seguros en red

– Si al acceder a una página la URL empieza por HTTPS, significa que se usa un protocolo de criptografía para acceder a su contenido de forma confidencial.

– Son seguros, ya que usan un modelo de clave mixta (clave simétrica para establecer sesíón y cifrado simétrico para las comunicaciones.

– Estas comunicaciones usan protocolos SSL o TSL en Internet.

SSL y TLS:


Ofrecen una interfaz de programación basada en sockets stream y añaden estos aspectos de seguridad:

– Uso de criptografía asimétrica para intercambiar claves de sesíón.

– Uso de criptografía simétrica para asegurar la confidencialidad de la sesíón.

– Uso de códigos de autenticación de mensajes para asegurar la integridad.

Aseguran el establecimiento y mantenimiento de una sesíón segura:


– La identidad del servidor está asegurada (autenticación) con un certificado de servidor y el cifrado simétrico.

– La privacidad de las comunicaciones está asegurada (confidencialidad) con una clave de sesíón simétrica.

– Los mensajes no se pueden alterar (integritat), ya que se realiza un cálculo de resúmen.

Programación con sockets seguros

– SSLSocketFactory:

clase que genera objetos SSLSocket.

– SSLServerSocketFactory:

clase que genera objetos SSLServerSocket.

– SSLSocket:

clase parecida a Socket, pero con SSL. Permite representar sockets stream cliente seguros.

– SSLServerSocket:

clase parecida a ServerSocket, pero con SSL. Permite representar sockets stream servidor seguros.

Se debe asegurar la seguridad de los recursos externos a los que accede una aplicación.

Autoridades de certificación:


Entidad de confianza, que emite o anula certificados digitales en la criptografía de clave pública. Su firma asegura:

– Que el certificado viene de la autoridad de certificación.

– Que el nombre corresponde a quién dice ser.

– La relación de obligación entre nombre y clave pública.

Control de acceso:


 Conjunto de mecanismos que gestionan estos aspectos de seguridad. Se basa en la autenticación de usuarios y sus políticas de seguridad. Es responsabilidad del SO. Aspectos que se gestionan con el control de acceso:

– Operaciones sobre archivos y directorios.

– Acceso a dispositivos hardware.

– Operaciones de administración del sistema (crear usuarios, instalar programa…).

– Servicios del Sistema (comunicaciones en red, almacenamiento de datos…)

Deja un comentario