Técnicas de Programación Segura en Criptografía
Técnicas de Programación Segura en Criptografía
F P
¿Qué aprenderás? I A
N K
•
•
Entender cómo funcionan los algoritmos de criptografía
LI
• Utilizar funciones hash para calcular resúmenes.
N O
Encriptar mensajes utilizando claves simétricas y asimétricas.
•
•
Firmar mensajes digitalmente.
Encriptar comunicaciones. U M
AL
L E
¿Sabías que…? IB
I M
• P R
El santo Grial de la criptografía histórica es el Manuscrito
IM
Voynich, escrito entre 1404 y 1438, cuyo contenido es aún
ininteligible y cuyo código no se ha podido romper.
• N
Ó
El algoritmo de clave simétrica DES se rompió en 1998 por un
I
R Sataque de fuerza bruta (72.000 billones de posibilidades),
debido a la poca longitud de su clave 56 bits.
1
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
N O
La palabra Criptografía proviene del griego "kryptos" que significa oculto, y
U M
"graphia", que significa escritura, y su definición según el diccionario es "Arte de escribir
con clave secreta o de un modo enigmático". La Criptografía es un conjunto de técnicas,
AL
que tratan sobre la protección o el ocultamiento de la información frente a accesos no
autorizados
•
La criptografía nos puede ayudar a:
L E
Evitar el acceso no autorizado a una información.
• IB
A la inserción de información extra en el mensaje.
•
I M
Identificar entidades y autentificación.
•
• P R
Control de acceso a los recursos.
Confidencialidad, integridad y no repudio de los mensajes.
IM
Definiremos encriptar como la acción de proteger la información, utilizando un
N
algoritmo de cifrado, transformándola utilizando una clave secreta, para que sea
Ó
incomprensible para toda persona que no tenga la clave.
I
R S
La criptografía es una disciplina con multitud de aplicaciones, entre las más
importantes destacamos las siguientes:
2
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
• N O
mensaje recibido fue de hecho enviado por el remitente y no por un suplantador.
Autenticación del destinatario: es el proceso que permite garantizar la identidad del
•
usuario destinatario.
U M
No repudio en origen: que cuando se reciba un mensaje, el remitente no pueda negar
•
haber enviado dicho mensaje.
AL
No repudio en destino: que cuando se envía un mensaje, el destinatario no pueda
•
negar haberlo recibido cuando le llegue.
L E
Autenticación de actualidad (no replay): consiste en probar que el mensaje es actual, y
IB
que no se trata de un mensaje antiguo reenviado.
I M
R
5.1.3. Orígenes de la criptografía
P
IM
Podemos pensar que la criptografía es un arte muy moderno en el que los
referentes pueden ser la NSA, Alan Turing o Claude Shannon, pero sus orígenes se
N
remontan a más de 4000 años. En todo este tiempo podemos destacar:
•
I Ó
En el antiguo Egipto se necesitó a la Piedra Rosetta para descifrar los jeroglíficos,
R•
S
aunque estos no tenían intención militar.
En el libro de Jeremías de la Biblia se hace referencia a Atbash un sistema de sustitución
VE de letras que se usaba para cifrar mensajes y se remonta al año 600 a.C.
• En la “Ilíada” de Homero en la Antigua Grecia se hace referencia al uso de cartas
cifradas (carta cifrada por el rey Preto).
• El cifrado por transposición lo utilizaban los espartanos enrollando un pergamino sobre
una estaca llamada escítala.
• En la antigua Roma se utilizaba el cifrado del César donde cada letra se sustituye por
otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto.
3
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
• En el siglo IX Al-Kindi con su análisis de frecuencia estableció les bases de como romper
mensajes cifrados gracias al estudio del Corán.
• Los Estados Pontificios en el renacimiento utilizaban un sistema de codificación basado
en discos llamado cifrado de Alberti.
• En 1518 Johannes Trithemius publicó un tratado sobre codificación llamado
Polygraphia.
• El primer centro de criptografía de Francia fue el Cabinet Noir utilizada por los ministros
de Luis XV y durante la revolución francesa.
• Charles Babbage (que desarrolló la máquina anílitica) trabajó en el descifrado de los
códigos de Vigenère que se consideraban extremadamente robustos.
F P
• I A
Auguste Kerckchoffs publicó en 1883 un tratado con sus 6 principios básicos que debía
cumplir un sistema criptográfico.
N K
LI
• En la primera guerra mundial, Alemania desarrolló el código Ubchi.
• En la segunda guerra mundial Alemania cifraba sus comunicaciones utilizando la
IB
enmascarar el texto claro y proteger la información: la difusión y la confusión. Con estas
técnicas convierten el mensaje en un criptograma imposible de descifrar si no se conoce la
clave.
I M
P R
La difusión pretende difundir las características del texto en claro en todo el
criptograma, ocultando de esta forma la relación que existe entre el texto en claro y el
IM
texto cifrado. Se aplicarán operaciones de transposición o permutación de letras, bytes, o
bloques de bytes, de esta manera los elementos aparecerán desordenados en el
criptograma. N
I Ó
La confusión pretender confundir al atacante, de manera que no le sea sencillo
S
establecer una relación entre el criptograma y la clave de cifrado.
R
V E Según Shannon las características que deben cumplir los sistemas de cifrado y
descifrado para proporcionar un sistema seguro son:
• El trabajo para descifrar el texto cifrado debe suponer tal cantidad de trabajo que hace
que no sea rentable hacerlo.
• Las claves deben ser de sencillas y fáciles de construir.
• Los sistemas secretos, una vez conocida la clave, deben ser simples pero han de
destruir la estructura del mensaje en claro para dificultar su análisis.
• Los errores de transmisión no deben originar ambigüedades.
• La longitud del texto cifrado no debe ser mayor que la del texto en claro.
4
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
En el siguiente ejemplo vemos una implementación del cifrado del César. En este
método cada letra se sustituye por otra letra que se encuentra un número fijo de
posiciones (3) más adelante en el alfabeto.
F P
I A
N K
LI
N O
U M
AL
L E
IB
I M
P R
IM
N
Ejemplo de ejecución:
I Ó
R S
VE
5
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
Los sistemas de cifrado simétrico son aquellos que utilizan la misma clave para cifrar
y descifrar un documento. El principal problema de seguridad reside en el intercambio de
claves entre el emisor y el receptor ya que ambos deben usar la misma clave. Este
intercambio debe realizarse por un canal seguro.
Es importante que la clave sea compleja para evitar que se adivine en ataques de
fuerza bruta (probar todas las combinaciones posibles hasta encontrar la válida). Estos
F P
sistemas presentan un buen rendimiento pero al utilizar una sola clave compartida su
validez se pone en entredicho a medida que se va utilizando. I A
N K
LI
N O
U M
AL
L E
IB
I M
R
Los principales algoritmos de cifrado simétrico son el DES, el 3DES y el AES.
P
IM (Data Encryption Standard)
5.2.1. Algoritmo DES
N
I Ó El DES es el nombre del documento FIPS (Federal Information Processing Standard)
del Instituto Nacional de Estándares y Tecnología (NIST) del Departamento de Comercio de
R S
Estados Unidos. Fue publicado en 1977. Es el algoritmo de cifrado simétrico más empleado
del mundo y más estudiado.
6
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
•
LI
DES-EDE2 utiliza dos claves, en el primer y tercer proceso de encriptación usan la
misma clave, 128 bits (112 útiles)
•
N O
DES-EDE3 utiliza tres claves diferentes, por tanto 196 bits (168 útiles)
U M
3DES aumenta de forma significativa la seguridad del sistema de DES, pero requiere
más recursos del ordenador. Se sigue utilizando mucho en sistemas de pago electrónico.
A L
5.2.3. Algoritmo AES (Advanced Encryption Standard)
L E
IB
AES es un algoritmo simétrico adoptado como estándar por el gobierno de los EEUU
a partir del año 2002 y fue creado en Bélgica por Joan Daemen y Vincent Rijmen.
I M
El sistema criptográfico AES opera con bloques de tamaño fijo de 128 bits y claves
PR
de longitudes variables, hay AES de 128bits, de 192 bits y de 256 bits.
El resultado intermedio del cifrado constituye una matriz de bytes de cuatro filas
IM
por cuatro columnas. A esta matriz se le vuelve a aplicar una serie de bucles de cifrado
N
basado en operaciones matemáticas. AES tiene 10 rondas para llaves de 128 bits, 12
rondas para llaves de 192 bits y 14 rondas para llaves de 256 bits.
I Ó
R S Este algoritmo es el más conocido entre los usuarios de routers, ya que WPA opera
con AES como método de cifrado.
7
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
F P
En general, lo primero que se debe hacer es crear un generador de claves
IA
proceso de inicialización.
N K
especificando el algoritmo de encriptación. La longitud de la llave se especifica en el
LI
Algunos algoritmos usados en los sistemas criptográficos simétricos utilizan llaves
de longitud fija mientras que otros lo utilizan de longitud variable. Con el método init
podemos especificar esa longitud.
N O
A partir de este generador podemos obtener una clave mediante el método
generateKey() de la clase KeyGenerator.
U M
AL
L E
IB
5.2.5. La clase Cipher I M
P R
La clase [Link] encapsula un sistema criptográfico que puede cifrar o
IM
descifrar datos y puede ser aplicado tanto a algoritmos simétricos como asimétricos.
N
Los objetos de la clase Cipher ([Link]) representan funciones de
I Ó
cifrado o descifrado. Se crean especificando el algoritmo que se desea utilizar.
R S
Posteriormente pueden ser configurados para realizar tanto operaciones de cifrado como
descifrado, indicando en el proceso la clave necesaria. Los métodos más importantes son:
8
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
F P
I A
N K
LI
En el siguiente ejemplo vemos todo el proceso de encriptación y desencriptación de
un mensaje utilizando el algoritmo simétrico AES de 128 bits.
N O
U M
AL
L E
IB
I M
P R
IM
N
I Ó
R S
VE
9
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
N O
• M
La descripción de la función de descifrado debe ser pública, muchas no utilizan clave
para evitar tener que distribuirla. Y rápida de calcular. U
•
AL
El texto en claro puede tener diferentes tamaños, pero el resultado del resumen (hash)
•
siempre debe tener una longitud fija.
L E
Como generamos resumen de menor tamaño debe ser muy difícil encontrar dos textos
IB
de entrada diferentes que den el mismo resumen.
•
I M
Solo se puede aplicar en un sentido, a partir de un resumen no se puede obtener el
texto en claro.
P R
IM
N
I Ó
R S
V E
Existen varios algoritmos para implementar funciones hash, entre los que se
pueden destacar MD5, SHA-1 y SHA-2. Estos algoritmos no necesitan ninguna clave. MD5
genera resúmenes de 128 bits mientras que SHA-1 de 160 bits. SHA-2 tiene diferentes
longitudes de bits 256, 384 y 512.
10
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
11
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
Para verificar el resumen accedemos al fichero, leemos primero los datos originales
y después el resumen calculado. Con los datos originales volvemos a calcular el resumen y
comparamos si son iguales.
F P
IA
N K
LI
N O
U M
AL
L E
IB asimétrica
5.4. Sistemas de cifrado de clave
I M
PR
La criptografía de clave asimétrica también es conocida como clave pública, emplea
IM
dos llaves diferentes en cada uno de los extremos de la comunicación. Este sistema fue
diseñado para evitar el problema de la distribución de las claves entre el emisor y el
N
receptor.
I Ó Cada usuario deberá poseer una pareja de claves: una clave pública y otra privada.
R
•S La clave privada tendrá que ser protegida y guardada por el propio usuario, será
secreta y no la deberá conocer nadie.
VE • La clave pública será accesible a todos los usuarios del sistema de comunicación.
Los algoritmos asimétricos están basados en funciones matemáticas fáciles de
resolver en un sentido, pero muy complicadas de realizar en sentido inverso sin conocer la
llave. Las claves públicas y privadas están ligadas la una a la otra y se generan al mismo
tiempo. Para que resulte muy difícil que obtengamos una a partir de la otra esta relación
debe ser muy compleja.
Si una persona desea enviar un mensaje cifrado, buscará la clave pública de aquel a
quien desea enviárselo, y lo cifrará con dicha clave. La única forma de desencriptarlo es
utilizando la clave privada del receptor.
12
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
F P
I
Si una persona con una pareja de claves cifra un mensaje con la llave pública, ese A
K
mensaje sólo podrá ser descifrado con la llave privada asociada. Y si se cifra con la privada,
N
LI
se descifra con la pública, en este caso no es cifrado es autentificación.
AL
conocida por todos y otra clave privada guardada en secreto por su propietario.
La fortaleza de este algoritmo reside en la complejidad de cálculo que tiene
L E
encontrar los factores primos de un número compuesto muy grandes. Con el algoritmo
RSA los valores de los factores primos deben tener un mínimo de 155 dígitos, lo que
IB
aproximadamente son 512 bits. El producto de estos valores tiene alrededor de 310 dígitos
I M
que se representan aproximadamente en 1024 bits, lo cual puede dar una idea de lo
costoso a nivel de hardware para encontrar la clave.
P R
El algoritmo funciona de la siguiente forma. Se eligen al alzar y en secreto dos
IM
números primos p y q lo suficientemente grandes. Y siempre se realizan los siguientes
pasos:
N
1. Hacer n=p*q
I Ó 2. Calcular z=(p-1)*(q-1)
A partir de los cálculos anteriores para cifrar y descrifrar los mensajes utilizamos las
siguientes fórmulas:
mensajecifrado=(mensajeplano)^k mod n
mensajeplano=(mensajecifrado)^j mod n
13
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
IB
I M
La interfaz PublicKey ([Link]) implementa la interfaz Key, y se
P R
emplea para representar claves públicas y la interfaz PrivateKey ([Link])
implementa la interfaz Key, y se emplea para representar claves privadas.
IM
El siguiente ejemplo generamos las claves para el algoritmo RSA:
N
I Ó
R S
V E
Para cifrar y descifrar utilizamos el mismo objeto CIPHER que utilizamos en el
cifrado simétrico. Para cifrar con el ENCRYT_MODE y para descifrar con el
DECRYPT_MODE. En el ejemplo se puede observar que se cifra con la clave pública y se
descifra el mensaje con la clave privada.
14
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
F P
I A
N K
LI
N O
U M
AL
L E
IB
I M
P R
IM
N
I Ó
RS
VE
15
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
La firma digital es un mecanismo criptográfico que se utiliza para que el receptor del
mensaje firmado digitalmente pueda identificar al emisor del mismo y confirmar que el
mensaje no se ha sido modificado desde que fue firmado. En la firma digital por tanto
encontramos tres características básicas: autentificación, no repudio e integridad.
• Autentificación: Identificar al firmante de forma inequívoca.
• Integridad. Asegura que el documento firmado es exactamente igual que el original y
no ha sufrido ni alteraciones ni modificaciones.
F P
•
I A
No repudio: Los datos que se utilizan para el firmado son únicos, por tanto el autor de
la firma no puede decir que no ha firmado el documento.
N K
LI
N O
U M
AL
L E
IB
I M
El proceso básico de la firma digital es el siguiente:
•
P R
El emisor dispone de un documento que desea firmar (pdf, Word, …).
•
• IM
Se aplica una función hash al documento y se obtiene el resumen.
Con la clave privada del emisor se cifra el resumen y obtenemos la firma digital.
N
I ÓLa firma electrónica permite verificar la autenticidad del emisor y la integridad
R S
de los datos utilizando un procedimiento electrónico y dejando registro de la fecha y
hora de la misma.
16
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
•
algoritmo especificado.
N O
initSign(PrivateKey privateKey): Inicializa el objeto para la firma. Se especifica la clave
•
privada del emisor que va a generar la firma.
update(byte[] data): Actualiza los datos a firmar.
U M
AL
• byte sign(): Devuelve un conjunto de bytes con la firma de los datos.
• initVerify(PublicKey publickey): Inicializa el objeto para verificar la firma. Necesita la
• L E
clave pública del emisor que va a firmado.
verify(byte[] signature): Verifica la firma pasada como parámetro.
IB
M
Las fases en el proceso de firma de un mensaje son las siguientes:
I
•
•
P R
Generar la llave pública y la llave privada.
getInstance(). Creación de una instancia Signature. Se debe conocer el algoritmo de
IM
firma digital. Ejemplos DSA (Digital Signature Algorithm) o MD5withRSA (cifrado
asimétrico RSA+resumen MD5) o [Link]ón de los datos.
• N
initSign(). Inicialización de la instancia Signature para firmar. Clave privada.
•
I Ó
update(). Inserción de los datos en la instancia Signature. Se actualiza el contenido del
R•
S
objeto con los datos que se desean firmar.
sign(). Generación de la firma.
F P
I A
N K
LI
N O
U M
AL
L E
IB
I M
P R
IM
N
I Ó
R S
V E
18
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
L E
IB
Los certificados digitales más usados utilizan el estándar X.509 para estructurar el
• I M
contenido de la información. Este formato incluye:
•
P R
La identidad del propietario o servicio (puede ser un servidor web).
La clave pública del propietario.
•
IM
La fecha de caducidad.
•
N
La firma digital del certificado firmado por la CA de toda la información contenida.
I Ó
R S
V E
19
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
• LI
X509EncodedKeySpec(byte[] encodedKey): Crea un objeto con la clave codificada.
•
O
byte[] getEncoded(): Devuelve los bytes codificados de la clave utilizando el estándar
X.509
N
•
M
String getFormat(): Devuelve el nombre del formato de codificación asociado con esta
especificación de clave.
U
AL
Para recuperar las claves de los ficheros utilizamos a clase KeyFactory que nos
L E
proporciona métodos para convertir las claves en formato criptográfico (PCKS8 y X.509) a
especificaciones de claves y viceversa. Los métodos más importantes son:
• IB
getInstance(String algoritmo): Devuelve un objeto KeyFactory capaz de importar y
I M
exportar las claves generadas con un determinado algoritmo.
•
• P R
PrivateKey generatePrivate(KeySpec KeySpec) Genera un objeto de clave privada.
PublicKey generatePublic(KeySpec KeySpec) Genera un objeto de clave pública.
IM
N
I Ó
R S
V E
20
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
F P
I A
N K
LI
N O
U M
AL
L E
IB
I M
P R
IM
N
I Ó
RS
VE
21
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
F P
IA
N K
LI
N O
U M
AL
L E
IB
I M
P R
IM
N
I Ó
R S
V E
22
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
LI
Los protocolos SSL y TLS ofrecen una interfaz de programación en Java basada en
sockets stream. Java dispone de un conjunto de clases que permiten utilizarlo sin muchas
complicaciones.
N O
U M
Los protocolos SSL y TLS garantizar el establecimiento y mantenimiento de una
sesión segura agregando las siguientes características de seguridad:
AL
• Autentificación de servidor. El servidor dispone de un certificado que emplea para que
los clientes puedan confiar en que se están conectando al elemento adecuado.
•
L E
El cliente genera la clave de sesión simétrica y la envía al servidor cifrada con la clave
• IB
pública del servidor. Esto garantiza que solo el servidor pueda recibirla y utilizarla.
Confidencialidad. La privacidad de las comunicaciones está garantizada gracias a la
clave de sesión simétrica.
I M
• R
Integridad. Mediante el cálculo de resúmenes se garantiza que los mensajes que se
P
intercambian no se pueden alterar de ninguna forma.
IM
N
I Ó
R S
V E
23
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
IA
JSSE tiene dos clases SSLServerSocketFactory y SSLSocketFactory para la creación de
sockets seguros. No tienen constructor, se obtienen a través del método estático
N K
LI
getDefault().
• SSLSocket ([Link]). Clase similar a Socket, pero incorporando SSL. Sirve
•
para representar sockets stream de clientes seguros.
N O
SSLSocketFactory ([Link]). Clase generadora de objetos
•
SSLSocket.
U M
SSLServerSocket ([Link]). Clase similar a ServerSocket, pero
•
AL
incorporando SSL. Sirve para representar sockets stream de servidores seguros.
objetos SSLServerSocket.
L E
SSLServerSocketFactory ([Link]). Clase generadora de
IB
Para crear una aplicación que utilice SocketsSSL se realiza de la misma forma que
I M
con Sockets y ServerSockets. La única diferencia es que estos objetos se crean usando las
clases generadoras SSLSocketFactory y SSLServerSocketFactory.
P R
IM
N
I Ó
R S
V E
24
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
Ejemplo de programa que usa sockets stream seguro para intercambiar un mensaje
por la red. La implementación del servidor seria la siguiente:
F P
I A
N K
LI
N O
U M
AL
L E
IB
I M
P R
IM
N
I Ó
R S
VE
25
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
F P
IA
N K
LI
N O
U M
Si ejecutamos el Cliente y el Servidor seguro nos da un error. Para que esta
AL
comunicación se pueda establecer, se debe disponer de un certificado de servidor válido
en el que confíe el cliente.
L E
IB
I M
El servidor necesita disponer de un certificado que mostrar a los clientes que se
P R
conecten a él. Usaremos la herramienta keytool para crearlo, en el ejemplo le damos el
nombre de AlmacenCertificados y el valor de la clave es 123456. La sintaxis es la siguiente:
IM
keytool -genkey -alias ejemploSSL -keystore AlmacenCertificados
N
I Ó
R S
V E
26
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
F P
A
El cliente necesita acceder al fichero de llaves para permitir la validación. Si está en
I
indicar el certificado y la clave con los parámetros:
N K
diferentes ordenadores se puede exportar a un fichero .cer. En nuestro caso solo debemos
•
•
[Link]= Ruta donde se almacena el certificado.
[Link] =Clave LI
N O
U M
AL
En el ejemplo anterior para ejecutar el programa cliente y servidor seguro se han
L E
establecido las propiedades JSSE desde la línea de comandos. También se pueden
String valor). IB
establecer desde el programa usando el método [Link](String propiedad,
I M
En el programa servidor incluimos las siguientes líneas después de definir la variable
puerto:
P R
IM
N
I Ó
R S Y en el programa cliente:
VE
27
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
Recursos y enlaces
• Certificados electrónicos CERES.
F P
I A
• DNI electrónico.
N K
LI
N O
U M
Conceptos clave AL
•
L E
Cifrado simétrico: Las claves de cifrado y descifrado son las mismas.
•
B
Cifrado asimétrico: El cifrado se realiza con la clave pública conocida por todos y el
descifrado con la clave privada. I
• I M
HASH: Función de resumen para validar que un documento no se ha alterado.
• R
SSL: Protocolo para cifrar las comunicaciones entre un cliente y un servidor.
P
IM
N
I Ó
R S
V E
28
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
Test de autoevaluación
R S
VE Realiza un programa para cifrar un fichero con el algoritmo AES y una clave de 128
bits. El programa guardará en un fichero el mensaje cifrado y en otro la clave.
29
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 6. Utilización de técnicas de programación segura
SOLUCIONARIOS
Test de autoevaluación
L E
Son algoritmos de cálculo Hash
IB
e) MD5 y SHA1
I M
f) RSA.
g) 3DES y AES P R
h) SSL y TLS. IM
N
I Ó
Ponlo en práctica
R S
E
V Actividad 1
Realiza un programa para cifrar un fichero con el algoritmo AES y una clave de 128
bits. El programa guardará en un fichero el mensaje cifrado y en otro la clave.
30
Desarrollo de Aplicaciones Multiplataforma. Programación de servicios y procesos
Tema 5. Utilización de técnicas de programación segura
Solución Actividad 1
F P
I A
N K
LI
N O
U M
AL
L E
IB
I M
P R
IM
N
I Ó
R S
VE
31