sistema de control escolar con firma digital de calificaciones y verificación de firma digital...

5
ResumenEl presente proyecto cubre el desarrollo de un prototipo de Sistema de cómputo que permite realizar la firma digital de calificaciones de estudiantes por parte del docente encargado de una asignatura y la posterior verificación de la calificación por parte de los estudiantes de dicha asignatura desde sus dispositivos móviles Android, con esto se trata el establecimiento de una infraestructura de llave pública para una institución educativa. Palabras ClaveAndroid, Infraestructura de llave pública, Java, RSA, Seguridad. I. INTRODUCCION La idea del presente proyecto surge como un control escolar basado en arquitectura de servidores Apache y OpenSSL, pero ante la inquietud de implementar la opción de firmado digital de calificaciones de estudiantes y verificación desde dispositivos móviles, una gran parte del proyecto fue desarrollada utilizando el lenguaje de programación Java y las interfaces de programación Bouncy Castle 1 , manteniendo la compatibilidad con OpenSSL. Siendo Java el lenguaje de programación utilizado en los dispositivos Android, nos pareció una buena alternativa para realizar el proyecto. Como se mostrará en la arquitectura del proyecto, se desarrollaron 3 módulos: Una aplicación Java Swing para la generación de la llave privada del docente y generación y exportación de una solicitud de firma de certificado digital que contiene la llave pública del docente, para firma por parte de una autoridad certificadora y la firma digital de las calificaciones de los estudiantes. Una aplicación móvil Android (compatible con API 14 o superior) que permite la consulta y verificación de la firma digital de las notas por parte de los estudiantes. Un módulo WEB de ingreso de notas y consultas WEB, simulando un módulo preexistente de control escolar al que se le está agregando la capacidad de firma digital de calificaciones. II. OBJETIVO DEL PROYECTO Crear una infraestructura de llave pública para la firma digital de calificaciones de estudiantes de una institución educativa. III. ALCANCES Y LIMITACIONES A. Alcances: El docente encargado de la asignatura podrá generar su llave privada y solicitud de firma de certificado digital haciendo uso de la herramienta desarrollada, en un equipo de confianza y en ningún momento tendrá que transmitir o movilizar la llave privada. Los estudiantes utilizarán una aplicación Android para consultar las notas y poder verificar la firma digital realizada por el docente. B. Limitaciones: El prototipo trabajará con una pequeña base y control de notas diseñado específicamente para este proyecto. IV. ARQUITECTURA Y DISEÑO DEL PROTOTIPO La figura 1. Muestra la arquitectura del prototipo desarrollado, unas secciones requieren el desarrollo de una herramienta o aplicación mientras otras requieren la configuración de un servidor con sus respectivos servicios (OpenSSL, Base de Datos, Apache Web Server) Figura 1. Arquitectura del Sistema Desarrollado 1 https://www.bouncycastle.org/ Sistema de Control Escolar con Firma Digital de Calificaciones y Verificación de Firma Digital desde dispositivos Móviles David E. Martínez, Boris A. Martínez

Upload: david-eliseo-martinez-castellanos

Post on 21-Jul-2015

107 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Sistema de Control Escolar con Firma Digital de Calificaciones y Verificación de Firma Digital desde Dispositivos Móviles

Resumen— El presente proyecto cubre el desarrollo de un

prototipo de Sistema de cómputo que permite realizar la firma

digital de calificaciones de estudiantes por parte del docente

encargado de una asignatura y la posterior verificación de la

calificación por parte de los estudiantes de dicha asignatura desde

sus dispositivos móviles Android, con esto se trata el

establecimiento de una infraestructura de llave pública para una

institución educativa.

Palabras Clave— Android, Infraestructura de llave pública,

Java, RSA, Seguridad.

I. INTRODUCCION

La idea del presente proyecto surge como un control escolar

basado en arquitectura de servidores Apache y OpenSSL, pero

ante la inquietud de implementar la opción de firmado digital

de calificaciones de estudiantes y verificación desde

dispositivos móviles, una gran parte del proyecto fue

desarrollada utilizando el lenguaje de programación Java y las

interfaces de programación Bouncy Castle1, manteniendo la

compatibilidad con OpenSSL. Siendo Java el lenguaje de

programación utilizado en los dispositivos Android, nos pareció

una buena alternativa para realizar el proyecto.

Como se mostrará en la arquitectura del proyecto, se

desarrollaron 3 módulos:

Una aplicación Java Swing para la generación de la llave

privada del docente y generación y exportación de una

solicitud de firma de certificado digital que contiene la

llave pública del docente, para firma por parte de una

autoridad certificadora y la firma digital de las

calificaciones de los estudiantes.

Una aplicación móvil Android (compatible con API 14

o superior) que permite la consulta y verificación de la

firma digital de las notas por parte de los estudiantes.

Un módulo WEB de ingreso de notas y consultas WEB,

simulando un módulo preexistente de control escolar al

que se le está agregando la capacidad de firma digital de

calificaciones.

II. OBJETIVO DEL PROYECTO

Crear una infraestructura de llave pública para la firma

digital de calificaciones de estudiantes de una institución

educativa.

III. ALCANCES Y LIMITACIONES

A. Alcances:

El docente encargado de la asignatura podrá generar

su llave privada y solicitud de firma de certificado

digital haciendo uso de la herramienta desarrollada,

en un equipo de confianza y en ningún momento

tendrá que transmitir o movilizar la llave privada.

Los estudiantes utilizarán una aplicación Android

para consultar las notas y poder verificar la firma

digital realizada por el docente.

B. Limitaciones:

El prototipo trabajará con una pequeña base y control

de notas diseñado específicamente para este proyecto.

IV. ARQUITECTURA Y DISEÑO DEL PROTOTIPO

La figura 1. Muestra la arquitectura del prototipo

desarrollado, unas secciones requieren el desarrollo de una

herramienta o aplicación mientras otras requieren la

configuración de un servidor con sus respectivos servicios

(OpenSSL, Base de Datos, Apache Web Server)

Figura 1. Arquitectura del Sistema Desarrollado

1 https://www.bouncycastle.org/

Sistema de Control Escolar con Firma Digital de

Calificaciones y Verificación de Firma Digital

desde dispositivos Móviles

David E. Martínez, Boris A. Martínez

Page 2: Sistema de Control Escolar con Firma Digital de Calificaciones y Verificación de Firma Digital desde Dispositivos Móviles

Para la implementación del punto 1 requiere la configuración

de un servidor Linux para funcionar con Autoridad

Certificadora.

El punto 2 del diagrama requiere la configuración de un

servidor Linux para funcionar como servidor de aplicaciones.

Aquí residirá un sistema de control de notas elaborado para este

ejercicio.

El punto 3 representa la herramienta que se le proporcionará a

los docentes usuarios del sistema para que puedan generar de

forma autónoma sus pares de llaves RSA y una solicitud de

firma de certificado digital para ser presentada ante la autoridad

certificadora.

El punto 4 es una aplicación móvil a ser utilizada por los

estudiantes interesados en consultar sus notas y que además

permite la verificación de las notas del estudiante a partir del

certificado digital del docente.

V. DISEÑO DEL PROTOTIPO

La especificación del diseño del sistema se presenta a través de

los diagramas de secuencias para las actividades realizadas por

los actores involucrados en el sistema así como el modelo de la

base de datos que le daría soporte al sistema.

La figura 2. Muestra la interacción del docente con la

herramienta que se le proporcionará para generación del par de

llaves RSA y su almacenamiento en formatos compatibles con

OpenSSL.

Figura 2. Creación de par de llaves RSA.

La figura 3 representa la interacción del docente con la

autoridad certificadora, en este punto se le solicita al docente

presentar en persona su solicitud de firma de certificado digital,

de tal forma que se pueda garantizar la fuente de dicha solicitud

de certificación.

Figura 3. Creación del Certificado digital del docente (Firma

por parte de autoridad certificadora)

En la figura 4 se presenta el procedimiento de reporte de

notas y por parte del docente, este procedimiento se realiza en

dos fases, una que es simplemente cargar las notas y

posteriormente la firma digital de las calificaciones de cada

estudiante haciendo uso de la herramienta desarrollada con este

propósito.

Figura 4. Registro de notas y firma digital.

El procedimiento de consulta de notas y verificación se presenta

en la figura 5.

Creación de llaves Publico/Privadas del Profesor

Carga llaves del profesor(CSR)

archivo CSR:= Crear llaves(datos

generales del profesor)

Profesor

UDB Sec (BouncyCastle) Autoridad certificadora (Openssl)

Carga llaves del profesor(CSR)

archivo CSR:= Crear llaves(datos

generales del profesor)

Creación de certificado digital del profesor

certificado digital

Archivo CRT:= Crear certificado digital

del profesor(CSR)

Envia solicitud de certificación(archivo

CSR)

Profesor

Autoridad certificadora (

Openssl)

Servidor de Aplicaciones y

Certificados

certificado digital

Archivo CRT:= Crear certificado digital

del profesor(CSR)

Envia solicitud de certificación(archivo

CSR)

Registro de Notas

Genera un hash (md5 o sha) y

cifra con RSA cada nota de los

alumnos y alamcena en bd la

firma digital.

firma digital por alumnofirma guardada

Registrar firma digital

Firmar digitalmente las notas

Firmar Notas

Notas grabadas

Guardar Notas(alumno, notas)

usuario logeado

validar usuario

Registro de notas(alumno, notas)

Iniciar sesión(usuario, clave)

Profesor

AppWeb Notas UDB Sec (BouncyCastle) MySql

firma digital por alumnofirma guardada

Registrar firma digital

Firmar digitalmente las notas

Firmar Notas

Notas grabadas

Guardar Notas(alumno, notas)

usuario logeado

validar usuario

Registro de notas(alumno, notas)

Iniciar sesión(usuario, clave)

Page 3: Sistema de Control Escolar con Firma Digital de Calificaciones y Verificación de Firma Digital desde Dispositivos Móviles

Figura 5. Consulta de notas y verificación de firma digital

Para el prototipo, la base de datos del sistema es simple

conteniendo solamente 4 tablas: Roles, Usuarios, Notas y

Materias. El diagrama de la base de datos se muestra en la figura

6.

Figura 6. Diagrama de la base de datos del sistema.

VI. DESCRIPCION DEL PROTOTIPO DESARROLLADO

Para el desarrollo del prototipo del sistema se configuraron dos

equipos virtuales Linux Ubuntu 12.04 sobre el software de

virtualización Oracle Virtual Box. Uno de los equipos para

funcionar con entidad certificadora [OpenSSL] y el otro para

funcionar como servidor de aplicaciones [Apache Web Server,

PHP, MySQL Database Server].

La configuración de la autoridad certificadora incluye la

creación del certificado raíz y la configuración de OpenSSL a

través del archivo de configuración /etc/ssl/openssl.conf. La

figura 7 muestra la configuración de openssl.conf en el equipo

a funcionar como entidad certificadora.

Figura 7. Configuración de la Autoridad Certificadora.

La aplicación Web para el registro de las notas simula un

sistema preexistente, en el cual solamente se registran las notas

de los estudiantes, la figura 8 muestra la pantalla de registro de

notas desde la aplicación Web.

Figura 8. Ingreso de calificaciones en sistema tradicional de

control de notas.

La herramienta para la generación de llaves de solicitud de

firma de certificado digital fue desarrollada en el lenguaje de

programación Java con interfaz gráfica Swing y utiliza la

librería Bouncy Castle para los servicios criptográficos. Esta

herramienta se distribuye como un archivo jar ejecutable. El

esfuerzo de desarrollar esta herramienta es para brindar la

facilidad de generación de la llaves RSA a los docentes y que

estas sean generadas en equipos de confianza del docente y la

llave privada no tenga que ser transportada y menos expuesta.

Esta herramienta permite la generación de la llave privada

cifrada, la generación de una solicitud de firma de certificado

digital, permite exporta esta solicitud con la idea de evitar

confusiones a la hora de llevar dicho certificado ante la

autoridad certificadora y una pantalla para realizar la firma

digital de las notas de los estudiantes. La firma digital se realiza

en la aplicación de escritorio siempre con el propósito de evitar

que la llave privada sea transferida de lugar en cualquier

momento. La figura 9 muestra la herramienta desarrollada, la

figura 10 muestra la pantalla de firma de calificaciones.

Verificación de Notas

Notas certificadas

verificación de llaves

certificado

Descargar certificado del profesor

Consultar Notas(alumno)

usuario logeado

Validar usurio(usuario, clave)

Iniciar sesion(usuario, clave)

Alumno

App Movil NotasServidor de Aplicaciones y

Certificados

Notas certificadas

verificación de llaves

certificado

Descargar certificado del profesor

Consultar Notas(alumno)

usuario logeado

Validar usurio(usuario, clave)

Iniciar sesion(usuario, clave)

Usuarios

LoginUsuario

IdRol

Nombres

Apellidos

Email

...

varchar(25)

int

varchar(50)

varchar(50)

varchar(100)

<pk>

<fk>

Roles

IdRol

Descripcion

int

varchar(50)

<pk>

Materias

IdMateria

Nombre

int

varchar(50)

<pk>

Notas

LoginUsuario

IdMateria

Nota1

Nota2

Nota3

FirmaDigital

...

varchar(25)

int

decimal(10,2)

decimal(10,2)

decimal(10,2)

varchar(500)

<pk,fk1>

<pk,fk2>

Page 4: Sistema de Control Escolar con Firma Digital de Calificaciones y Verificación de Firma Digital desde Dispositivos Móviles

Figura 9. Herramienta de Generación de Llaves RSA,

exportación de solicitud de firma de certificado digital y firma

de calificaciones de los estudiantes.

Figura 10. Pantalla de firma de calificaciones.

La comunicación de esta aplicación y el servidor de

aplicaciones es por medio del protocolo http, quedando

pendiente la implementación a través https para la siguiente

versión. La firma digital se realiza sobre el registro de cada

estudiante, para esto el registro se codifica como una cadena

JSON y se firma utilizando SHA1 con RSA y proveedor de

seguridad Bouncy Castle. La firma se almacena en la base de

datos para luego ser consultada por los estudiantes como parte

del proceso de verificación.

La aplicación móvil fue desarrollada utilizando Android

Studio como herramienta de desarrollo, este es el entorno de

desarrollo oficial para aplicaciones Android. El desarrollo de

aplicaciones Android se realiza principalmente en Java y se

utiliza XML para la definición de elementos visuales. Por ser

lenguaje de programación Java esperabamos compatibilidad

con la librería Bouncy Castle. Luego de unos conflictos entre

cating de objetos se logró hacer funcionar la App móvil sin

problemas. De forma similar a la aplicación Desktop, la

comunicación de esta aplicación con el servidor de aplicaciones

es a través de http. La Figura 11 muestra la captura de pantalla

del dispositivo móvil ejecutando la aplicación, en este caso es

un Motorola E, Android 4.4.4 (KitKat) Se muestran las notas

registradas y la firma digital, la cual se almacena como una

cadena de texto en base 64.

Figura 11. Aplicación móvil para la consulta y verificación de

firma digital de calificaciones.

Para el prototipo, asumimos que el docente del grupo distribuye

su certificado firmado por la autoridad certificadora a los

estudiantes ya sea por correo electrónico o cualquier otro medio

y que dicho certificado se encuentra en la memoria SD del

dispositivo. Al presionar el botón se presentará una actividad

Android (Android Activity) para la selección de certificado

digital de profesor y posterior verificación de las calificaciones.

(Figura 12)

Figura 12. Selección del certificado para la verificación de la

firma digital.

Page 5: Sistema de Control Escolar con Firma Digital de Calificaciones y Verificación de Firma Digital desde Dispositivos Móviles

Luego de seleccionar el archivo del certificado del profesor,

se realizará la verificación y se presentará un mensaje Android

TOAST indicando si la firma se acepta o rechaza y cambiará el

color del a firma a verde si se acepta o rojo si se rechaza, lo cual

se ilustra en la figura 13.

Figura 13. Aceptación de la firma digital de las calificaciones

de un estudiante.

VII. PUNTOS A MEJORAR

Debemos mencionar los puntos importantes que deben

mejorarse en el prototipo, pero que no pudimos realizar en el

tiempo que estaba establecido para la realización del proyecto.

El primer punto es la verificación del certificado del profesor

ante la autoridad certificadora al momento de realizar la

verificación de las notas y la consulta de la lista de revocación,

aunque el servidor configurado como autoridad certificadora

quedó con la configuración completa de OpenSSL, la

aplicación Android requiere que se agregue el procedimiento de

esta verificación. El segundo punto es implementar el uso de

SSL en la aplicación Java y Android, aunque se generó el

certificado del servidor y se realizó la configuración del

servidor Web Apache para utilizar SSL, los programas Java

requieren una modificación para poder comunicarse vía https,

esta comunicación es factible ya que se utiliza Apache

Commons HttpClient para la comunicación, pero de igual

forma, queda pendiente la implementación.

VIII. CONCLUSIONES

El modelo utilizado de firma digital puede ser aplicado a

otros procesos que requieran una capa adicional de seguridad y

verificación de identidad por lo tanto, las herramientas

desarrolladas o el código fuente de dichas herramientas puede

llegar a ser de utilidad en una situación real y no sólo de ámbito

académico.

El desarrollo del proyecto ha sido una gran experiencia y una

gran oportunidad de aprendizaje. Nos encontramos con varias

dificultades, principalmente de documentación y

correspondencia entre las versiones de las librerías y la

documentación y los ejemplos de uso de las APIs.

REFERENCIAS

Infraestructura de Llave Pública

http://en.wikipedia.org/wiki/Public_key_infrastructure

The Legion of The Bouncy Castle

https://www.bouncycastle.org/

Android Developers

http://developer.android.com/index.html