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

SSI 2022/23


Í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”, que verificará la identidad del alumnos que hace la entrega y le vinculará el timestamp que garantiza la fecha de entrega. Finalmente, el profesor podrá validar este Examen Empaquetado para verificar que procede del correspondiente alumno, 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.
  1. Cada uno de los participantes (ALUMNO, AUTORIDAD SELLADO, PROFESOR) podrá generar sus propios pares de claves privada y pública que se almacenarán en ficheros (no se considera una protección del fichero con la clave privada, como sí ocurriría en una aplicación real)
  2. No se contemplan los mecanismos de distribución fiable de claves públicas. Se asumirá que todas las claves públicas necesarias estarán en poder del usuario que las necesite (ALUMNO, AUTORIDAD SELLADO o PROFESOR) de forma confiable (en una aplicación real se haría uso de certificados digitales y de una autoridad de certificación común)
  3. Las respuestas del ALUMNO estarán almacenadas inicialmente en un fichero de texto (es indiferente la estructura de ese fichero)
  4. Dado que se trata de un ejemplo, las distintas piezas de información que aporte cada participante (ALUMNO o AUTORIDAD SELLADO) al Examen Empaquetado tendrán (antes del cifrado/firma y después del descifrado) la forma de Strings con codificación UTF8.
  5. El Examen Empaquetado se materializará físicamente en un fichero o ”paquete” que contendrá toda la información que vayan incorporando los distintos participantes implicados: el ALUMNO que la generó y la AUTORIDAD SELLADO que da fé de la entrega del examen y del instante concreto en ésta que tuvo lugar.

    Nota:

  6. No se contempla un almacenamiento ”físico” realista del Examen Empaquetado, sólo se trata de implementar los programas para generar, sellar y validar el Examen Empaquetado conforme a las especificaciones descritas en este documento.
  7. Al validar el Examen Empaquetado, si todas las comprobaciones de autenticidad respecto a ALUMNO y AUTORIDAD SELLADO son correctas, se mostrará al PROFESOR los datos aportados por el ALUMNO (el texto del examen) y los datos (timestamp) incorporados por la AUTORIDAD SELLADO que haya procesado dicho Examen Empaquetado. En caso contrario se indicarán las comprobaciones que no hayan sido satisfactorias.

2.2 Requisitos

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

R2.
Garantizar que tanto el PROFESOR como cualquier otro participante tenga la posibilidad de verificar que el Examen Empaquetado fue realmente presentado por el ALUMNO correspondiente.

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 o por un tercero y que no pueda ser falsificada ni por el ALUMNO, ni por la AUTORIDAD SELLADO, ni por el propio PROFESOR

R7.
La AUTORIDAD DE SELLADO debe poder verificar que el Examen Empaquetado que va a sellar procede del ALUMNO que lo presenta.
R8.
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, habiendo verificado previamente que ese Examen Empaquetado efectivamente fue creado por dicho ALUMNO .
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, después de haber validado la autenticidad de la autoría de dicha entrega y validar la información incluida en el Examen Empaquetado 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