Uso del API de cifrado de JAVA (JCA/JCE)

SSI 2018/19


Índice General

1 Objetivos

2 Descripción

Se trata de desarrollar una herramienta para el empaquetado y distribución de exámenes que sea fiable y segura y garantice las restricciones de entrega en plazo.

Para ello se contará con una especie de Autoridad de sellado de tiempo simplificada (ver Sellado de tiempo)

Los alumnos podrán generar su Examen Empaquetado que será remitido a la ”autoridad de sellado” para vincularle el timestamp con la fecha de entrega. Finalmente, el profesor podrá validar este Examen Empaquetado para extraer los datos aportados por el alumno y validar la autenticidad del ”sello” emitido por la ”autoridad de sellado”.


2.1 Simplificaciones

Dado que se trata de una aplicación ”de juguete” se asumirán una serie de simplificaciones.

2.2 Requisitos

Requisitos básicos a cumplir por el esquema criptográfico propuesto:
R1.
Asegurar la confidencialidad del contenido incluido en la Examen Empaquetado por parte del ALUMNO (sólo el PROFESOR podrá tener acceso a estos contenidos).

R2.
Garantizar que el PROFESOR tenga la seguridad de que el ALUMNO que presenta el Examen Empaquetado es quien dice ser.
R3.
Asegurar que el contenido del ”paquete” con el Examen Empaquetado (datos del ALUMNO y sello de AUTORIDAD SELLADO) que se ha recibido no haya sido modificado.
R4.
Asegurar que ni el ALUMNO ni la AUTORIDAD SELLADO podrán repudiar el contenido incluido por ellos en el Examen Empaquetado
R5.
Asegurar que el PROFESOR no podrá realizar cambios en el contenido del Examen Empaquetado que ha recibido.
R6.
Contar con un mecanismo mediante el cuál la AUTORIDAD pueda garantizar la fecha en que fue ”recibido” el Examen Empaquetado generado por un determinado ALUMNO.

Se pretende que esta vinculación entre Examen Empaquetado y ”sello” pueda ser validada por el PROFESOR y que no pueda ser falsificada ni por el ALUMNO, ni por la AUTORIDAD SELLADO (o por otras AUTORIDADES SELLADO ajenas), ni por el propio PROFESOR

R7.
Asegurar un coste computacional reducido en la creación, sellado y validación del Examen Empaquetado minimizando el uso de criptografía asimétrica

3 Desarrollo

En primer lugar se deberán de analizar los requisitos anteriores, para determinar qué estrategias seguir para conseguir cada uno de ellos.

Se debe decidir qué acciones realizar en el origen (ALUMNO), qué tareas realizará la AUTORIDAD SELLADO y qué comprobaciones se llevarán a cabo en el destino (PROFESOR), además de decidir qué algoritmos concretos se emplearán.

3.1 Actores

Alumnos.
podrá generar su propio par de claves (pública y privada) y será responsable de generar el Examen Empaquetado a partir del fichero de texto con el examen en claro original.
Autoridad Sellado.
podrá generar su propio par de claves (pública y privada) y será responsable de sellar el Examen Empaquetado de un ALUMNO dado, aportando los datos que correspondan.
Profesor.
podrá generar su propio par de claves (pública y privada) y será responsable de extraer los datos aportados por el ALUMNO en el Examen Empaquetado que le haya enviado y validar la información incluida en el mismo por la AUTORIDAD SELLADO

3.2 Programas/módulos a desarrollar

 Una vez decidido cómo garantizar los requisitos exigidos, el resultado final será obligatoriamente el desarrollo de 4 ejecutables:

4 Entrega

5 Herramientas a utilizar

La práctica se implementará en Java utilizando el API de criptografía JCA y el provider Bouncy Castle. Se podrá realizar tanto en Windows como en Linux.

Código de partida (ver ejemplo de uso en main() de PaqueteDAO.java):