Universidad de las Ciencias Informáticas Facultad 1
Título: Plataforma para el desarrollo de servicios en línea utilizando tarjetas inteligentes.
Trabajo de Diploma para optar por el título de Ingeniero en Ciencias Informáticas.
Autores: Katerina Pereda Viñolo
Vismar Fernández Santana
Tutores: Msc. Adonis Cesar Legón Campo Ing. Michel Rafael Pérez Acosta
“Ciudad de La Habana. Junio, 2010”
Pensamiento
Declaración de Autoría
Declaración de Autoría
Declaro que somos los únicos autores de este trabajo y autorizamos al Centro de Identificación y Seguridad Digital de la Universidad de las Ciencias Informáticas a hacer uso del mismo en su beneficio. Para que así conste firmamos la presente a los ____ días del mes de ________ del año ________.
____________________________ ____________________________
Katerina Pereda Viñolo Vismar Fernández Santana
____________________________ ____________________________
Msc. Adonis Cesar Legón Campo Ing. Michel Rafael Pérez Acosta
Agradecimientos
Agradecimientos
A la Revolución por ofrecernos la posibilidad de estudiar y realizarnos como profesionales. A todos los profesores que de una forma u otra influyeron en nuestra preparación. Al equipo del laboratorio, por su aporte en este trabajo. A los tutores, por la paciencia y dedicación que tuvieron con nosotros. A los miembros del tribunal y el oponente que influyeron en gran medida en el perfeccionamiento de esta investigación.
Katerina
A mi mamita linda que siempre e incondicionalmente ha estado ahí para mí, dándome todo su apoyo y amor, a ella de quien siempre vivo orgullosa. A mi papá que a través de la distancia me ha educado y enseñado a ser cada día mejor persona, siendo también un amigo y ofreciéndome todo su amor.
A mi familia: mis abuelos Mérida e Ignacio que tanto me han ayudado; Cita por ser siempre consejera y como una segunda madre para mí; Isma a quien quiero como un hermano y que siempre me ha protegido. A mis tíos y primos que aunque lejos siempre han pensado y confiando en mí.
A Yandy, gracias por todo su amor, comprensión y cariño, haciéndome saber que siempre puedo contar con él.
A mis tutores Adonis y Michel, que desde el inicio me ofrecieron su apoyo y confianza. A Landrián que estuvo al tanto del desarrollo constante de este trabajo y también puso su granito de arena. A Vismar que a lo largo de estos años ha sido mi amigo y ha estado ahí para mí cada vez que lo he necesitado.
A mis amigos, especialmente a Adriana, Tatiana, Ander, Magda y Yadier.
A mis compañeros del lab, que, con su particular modo de manifestarme su cariño, compartieron conmigo un curso inolvidable, ayudando siempre que iba a molestarlos:
Yoandy, Dayron, Pedro y Yandry.
A todos mis profesores durante los años de universidad, quienes han influido no solo en mi formación como una profesional sino de forma íntegra en mis principios.
Agradecimientos
A todos los que de una forma u otra estuvieron ahí para mí, los que me dedicaron un segundo de sus pensamientos o sus acciones y que aunque no lo saben han contribuido a formarme como la persona que soy. Gracias
Vismar
A mis padres que me llevaron de la mano en mi primer día de escuela y, de cerca o de lejos, han cuidado cada uno de mis pasos hasta aquí. Por cada noche de desvelo buscando una solución a mis problemas. Lo que yo pueda escribir no basta.
A mis tutores Adonis y Michel que nos han enamorado de este trabajo, que han estado ahí para cada duda, inspirando confianza para llevarlo adelante. A Landrián que dio grandes ideas y un poco más. A Katy que me hostigó hasta el último día.
A todos los educadores que han aportado a mi formación desde mis 4 años hasta hoy, a ellos que me inculcaron valores y me han legado el conocimiento para llegar aquí. Especial mención para Raulito, Mawad, Yolanda, Ramoncito, Joel, el profe Cao, la Maty, Hiraldo, Yoan, Damián, Alién, Teddy y Geidis que saben que ser profes va mucho más allá que escribir en un pizarrón.
A mis asesores informales, esos con los que siempre tengo el placer de hablar de ciencia, que se preocuparon por mi trabajo mucho más que yo por el de ellos: Erick, Jeandy (Landrián Jr.), Dannier, Reisbel, el Negro, Dayron, el Ruso y muchos más.
A los freakies de mi laboratorio, por la buena música que acompañó la elaboración de este trabajo y por ayudarme a controlar a Katerina.
A todos mis alumnos, que fueron los primeros en soportar mis nervios frente a un aula. Gracias por comprenderme siempre, en especial a esos que supieron quererme como amigo y respetarme como profesor: Orlandito, Tony, Héctor, Iliada, Carlos, Radik.
A todos los que pusieron sus cuentas en función de este trabajo y cuyos nombres no pueden ser mencionados por razones de “Seguridad”.
Agradecimientos
A cada maracucho o cubano-maracucho que me apoyó en el momento que más solo he estado en la vida. A Ainadys por defenderme a ciegas, a Julia por la cocina, a Noralys por las peleas, a Yussy por hacerme reír sin límites, a Sharon y Shelvis por ser mis hermanos.
A todos los que han estado a mi lado de una forma u otra en algún momento de mi vida, legándome algún consejo o algún gesto de apoyo. A todos los que han leído esta investigación al menos hasta aquí y que ahora, llenos de entusiasmo, se disponen a leer las 100 páginas restantes.
Dedicatoria
Dedicatoria
Katerina
A mis padres, quienes estarán orgullosos de verme al fin, graduada como Ing. A mi familia: mis abuelos, tíos y primos, Cita e Isma que siempre me han apoyado en aras de cumplir mis sueños y metas.
A Yandy, quien con su amor ha logrado ocupar un lugar importante en mi vida y en mi corazón.
A los amigos, que me han apoyado y han confiado siempre en mí.
Vismar
Primero a mi mayor tesoro, mi principito Raúl David, que aprendió a decir papá sin tenerme a su alrededor; a él porque su cálida sonrisa cuando me ve, perdona mi prolongada ausencia, porque lo amo. A Deky, quién ha sido su madre y su padre y que será siempre parte importante de mi vida.
A mi familia: mis abuelos, quienes por diferentes razones no podrán estar conmigo en este importante día para el cual me educaron. A mis tíos; a mis primos, los mayores que han sido un ejemplo para mí y los pequeños para quienes espero serlo. A mi familia de Jobabo que ha puesto mil granos de arena para que yo esté aquí. Y en especial para esos 3 que forman parte de mi vida desde que puedo razonar: mi mamá, quien probablemente estará llorando como si yo ganara un Oscar, mi papá que seguramente se estará burlando de ella y a mi hermanita a quien raras veces le digo cuanto la quiero.
A mis amigos, que me han apoyado y me hecho ver de lo que soy capaz; en especial a Diana, Jorgito, Néstor, Ander, Kerlyns, David, Katy, Ivis, Royli y Michel que más que amigos fueron hermanos, haciendo que mis problemas fuesen suyos y que me hicieron madurar enormemente.
Dedicatoria
A mí mejor equipo, esos que cuartearon sus ojos haciendo madrugadas a mi lado construyendo sueños para esta facultad, jugando a ser adultos, llevando en sus espaldas los problemas de muchos: Alelí, Yanet, Randy, Norky, Denito, Ale, Jorgito, Jessica, Yari, Yendry, Mariño, Noel, Grethel, Zuzana, Dariel, Beta, Yeni, Rey, Diego, Carlos, Jose y los Manueles. A todos los artistas, deportistas y la gente linda de la facultad UNO que creyó en nosotros.
A mis compañeros de aula y de apartamento en estos 5 años. A mi piquete: Pooh, Rey, Gustarcraft, Alberto la M, Ory, el KDT, Jorge la C, La Nuez, Ané, Malena, Erick, y el Nety.
Resumen
Resumen
La mayoría de las aplicaciones web que ofrecen servicios usando tarjetas inteligentes, lo hacen a través de middlewares que se deben instalar en su PC1 para interactuar con las mismas. La falta de una tecnología que permita la comunicación en línea con las tarjetas y que además, sea funcional para diferentes tipos de navegadores web y sistemas operativos, ha hecho que no se aprovechen al máximo todas las ventajas de estas a través de Internet.
El Centro de Identificación y Seguridad Digital (CISED) de la UCI2, a partir de la experiencia adquirida en el área de las tarjetas inteligentes, ha identificado la necesidad del desarrollo de una plataforma con el middleware en el lado del servidor, evitando al usuario la instalación de determinados software en su PC y la actualización de ellos, además de brindar una mayor seguridad en la comunicación con las tarjetas en la web.
En el presente trabajo se hace un estudio de las tarjetas inteligentes y sus potencialidades para impulsar la seguridad y el desarrollo de los servicios en línea. Como resultado del análisis, se desarrolla una aplicación multiplataforma para la interacción con tarjetas a través de navegadores web.
El documento recoge los resultados de la investigación realizada, describiéndose las principales características de los sistemas analizados, la arquitectura y el diseño del sistema propuesto. Se describen las herramientas, tecnologías utilizadas y los artefactos generados en el proceso de desarrollo.
Palabras Claves
Tarjetas inteligentes, Middleware, Servicios en línea, Navegadores web, Aplicación multiplataforma, Seguridad.
1 Computadora personal (PC por sus siglas en inglés)
2 UCI: Universidad de Ciencias Informáticas.
Índice de contenido
INTRODUCCIÓN ... 1
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA ... 6
1.1 Introducción ... 6
1.2 Conceptos asociados al dominio del problema... 6
1.2.1 Navegador web ... 6
1.2.2 Add-ons ... 7
1.2.3 Middleware ... 7
1.2.4 ActiveX ... 8
1.2.5 XPCOM ... 9
1.2.6 JavaScript ... 9
1.2.7 AJAX ... 10
1.3 Aplicaciones y características de las tarjetas inteligentes ... 12
1.3.1 Historia y evolución de las tarjetas inteligentes ... 12
1.3.2 Estructura de una tarjeta inteligente ... 13
1.3.3 Algunas clasificaciones de las tarjetas inteligentes ... 15
1.3.4 Protocolo de comunicación con tarjetas inteligentes ... 16
1.3.5 Necesidad de las tarjetas inteligentes en la autenticación ... 17
1.3.6 Aplicaciones de las tarjetas inteligentes ... 19
1.4 Estándares relacionados con tarjetas inteligentes ... 20
1.4.1 GlobalPlatform ... 20
1.4.2 PKCS ... 21
1.4.3 Estándar ISO/IEC- 7816 ... 21
1.4.4 Estándar ISO/IEC 14443 ... 22
1.4.5 Estándar PC/SC ... 22
1.5 Seguridad asociada a las tarjetas inteligentes ... 23
Índice de contenido
1.6 Tecnología PKI ... 24
1.6.1 PKI aplicado a tarjetas inteligentes ... 25
1.7 Análisis de otras soluciones ... 26
1.7.1 Coesys eGov 2.0 ... 26
1.7.2 SConnect ... 27
1.8 Conclusiones ... 28
CAPÍTULO 2: PROPUESTA DE SOLUCIÓN ... 29
2.1 Introducción ... 29
2.2 Tecnologías y herramientas propuestas para la solución del problema ... 29
2.2.1 Metodología de desarrollo ... 29
2.2.2 Lenguaje de modelación visual ... 35
2.2.3 Altova UModel ... 35
2.2.4 XML ... 36
2.2.5 XUL ... 36
2.2.6 XPCOM ... 36
2.2.7 JavaScript en el cliente ... 37
2.2.8 Microsoft .Net Framework ... 37
2.2.9 Librería Microsoft AJAX ... 38
2.2.10 ASP.NET... 39
2.2.11 Lenguaje de programación C++ ... 39
2.2.12 NUnit ... 39
2.3 Propuesta de solución ... 40
2.3.1 Modelo de dominio. ... 40
2.3.2 Glosario de conceptos del modelo de dominio. ... 41
2.3.3 Historias de usuario. ... 42
2.3.4 Requerimientos no funcionales. ... 47
Índice de contenido
2.3.5 Metáfora ... 48
2.3.6 Arquitectura ... 49
2.3.7 Plan de entrega ... 51
2.3.8 Estimación de tiempo ... 51
2.3.9 Plan de iteraciones ... 51
2.3.10 Estudio de Factibilidad ... 51
2.3.11 Conclusiones ... 56
CAPÍTULO 3: IMPLEMENTACIÓN Y PRUEBA ... 58
3.1 Introducción ... 58
3.2 Iteraciones a primera liberación ... 58
3.2.1 Tareas de ingeniería ... 59
3.3 Diseño de la solución ... 60
3.3.1 Descripción del diseño ... 60
3.3.2 Descripción del flujo de proceso: Solicitud de un servicio. ... 63
3.3.3 Requisitos para la integración de middlewares. ... 66
3.4 Fase de producción ... 68
3.4.1 Pruebas unitarias ... 68
3.4.2 Pruebas de aceptación ... 70
3.5 Conclusiones ... 74
CONCLUSIONES ... 75
RECOMENDACIONES ... 76
BIBLIOGRAFÍA CITADA ... 77
BIBLIOGRAFÍA CONSULTADA ... 78
Índice de contenido
GLOSARIO DE TÉRMINOS ... 80
ANEXOS ... 81
Índice de tablas
Índice de tablas
Tabla 1. HU_1 Obtener lectores disponibles conectados a la estación cliente. ... 43
Tabla 2. HU_2 Gestionar conexión con la tarjeta inteligente. ... 44
Tabla 3. HU_3 Enviar y recibir comandos APDU de la tarjeta. ... 44
Tabla 4. HU_4 Gestionar transmisión de comandos APDU entre el servidor y el cliente web. 45 Tabla 5. HU_5 Ejecutar operaciones de un middleware en el servidor. ... 46
Tabla 6. HU_6 Notificar a la aplicación web sobre culminación de la operación ... 46
Tabla 7. Cálculo de las líneas de código. ... 55
Tabla 8. Distribución de las tareas de ingeniería por iteraciones. ... 59
Tabla 9. HU1_CP1 Prueba de funcionalidad para listar los lectores conectados. ... 70
Tabla 10. HU2_CP2 Prueba de funcionalidad para establecer la conexión entre el lector y la tarjeta. ... 71
Tabla 11.HU3_CP3 Prueba de funcionalidad para el intercambio de APDU entre el lector y la tarjeta. ... 72
Tabla 12. HU4_CP4 Prueba de funcionalidad para la transmisión de comandos APDU entre el servidor y el cliente web. ... 72
Tabla 13. HU5_CP5 Prueba de funcionalidad para realizar las operaciones de un middleware específico. ... 73
Tabla 14. HU6_CP6 Prueba de funcionalidad para la notificación al usuario del resultado del servicio solicitado. ... 74
Tabla 15. Plan de entregas ... 83
Tabla 16.Estimación de tiempo de las historias de usuario. ... 83
Tabla 17.Plan de iteraciones. ... 84
Tabla 18.Multiplicadores de esfuerzo (factores de costo). ... 85
Tabla 19. Factores de escala. ... 87
Tabla 20. Entradas externas ... 88
Índice de tablas
Tabla 21. Salidas externas ... 88
Tabla 22. Archivos lógicos internos ... 88
Tabla 23.Archivos externos de interfaces. ... 89
Tabla 24. Solicitudes externas. ... 89
Tabla 25. Puntos función desajustados. ... 89
Tabla 26. HU1_T1 Listar lectores conectados. ... 90
Tabla 27. HU2_T1 Notificar al usuario del estado de la conexión con la tarjeta. ... 91
Tabla 28. HU2_T2 Establecer conexión con la tarjeta. ... 91
Tabla 29. HU2_T3 Cerrar conexión con la tarjeta. ... 91
Tabla 30. HU3_T1 Enviar comandos APDU a la tarjeta. ... 92
Tabla 31. HU3_T2 Recibir respuesta APDU de la tarjeta. ... 92
Tabla 32. HU4_T1 Enviar comando APDU que genera el middleware al cliente. ... 93
Tabla 33. HU4_T2 Enviar respuesta APDU recibida de la tarjeta al servidor. ... 94
Tabla 34. HU5_T1 Definir interfaz de programación común para los middleware que se encuentran asociados a la plataforma. ... 94
Tabla 35. HU5_T2 Identificar middleware que se está invocando. ... 94
Tabla 36. HU6_T2 Enviar respuesta al cliente web. ... 95
Índice de figuras
Índice de figuras
Figura 1. Tecnologías agrupadas bajo el concepto de AJAX. ... 11
Figura 2. Funcionamiento de una aplicación web con AJAX. ... 11
Figura 3. Arquitectura básica de un microcontrolador embebido en una tarjeta inteligente. .... 14
Figura 4. Estructura Comando APDU ... 17
Figura 5. Estructura APDU Respuesta ... 17
Figura 6. Combinación de todas las prácticas de XP. ... 32
Figura 7. Fases de un proyecto con XP. ... 33
Figura 8.Arquitectura del sistema. ... 50
Figura 9. Patrón MVC aplicado a la solución. ... 50
Figura 10. Sub-fases de la fase Iteraciones a primera liberación. ... 58
Figura 11. Diagrama de componentes del cliente. ... 62
Figura 12. Diagrama de componentes del servidor. ... 62
Figura 13. Diagrama de secuencia del proceso Solicitud de servicio. ... 65
Figura 14. Diagrama de clases de la capa cliente. ... 81
Figura 15. Diagrama de clases de la capa servidor. ... 82
Figura 16. Multiplicadores de esfuerzo del Modelo de diseño temprano. ... 86
Introducción
Introducción
El surgimiento de Internet en la segunda mitad del pasado siglo ha revolucionado la manera de vivir y pensar del ser humano. En la actualidad se brindan un sinfín de servicios en línea por instituciones, gobiernos o grandes empresas; a los cuales el usuario o beneficiario accede desde computadores. Entre estos se pueden destacar el gobierno en línea, las pasarelas de pago, los servicios de correo electrónico, la reservación de servicios hoteleros o de viaje, la certificación de documentos, la emisión de declaraciones de impuestos o la tramitación de documentos oficiales de una nación determinada.
La prestación de estos servicios implica determinados riesgos cuando se hacen a través de internet, ya que sin la presencia física del solicitante es una preocupación lógica el querer estar seguros de la identidad del usuario y no alguien intentando suplantar su identidad.
Actualmente se registra una tendencia al uso de dispositivos inteligentes que facilitan y aseguran el proceso de identificación. Se han desarrollado tecnologías como las tarjetas inteligentes para garantizar una verificación más exacta y confiable de la identidad del usuario que solicita determinado servicio.
Las tarjetas inteligentes o smartcards no son más que una lámina plástica de tamaño similar a las conocidas tarjetas de crédito bancario con barra magnética, pero difieren de las últimas en que traen incorporados circuitos integrados que permiten almacenar información de forma segura e incluso la ejecución de cierta lógica programada, de ahí el uso del adjetivo
“inteligente” para denominarlas. Contienen componentes de memoria volátil y no volátil que, unidos a un microprocesador y un sistema operativo, permiten almacenar, encriptar y modificar información. Tienen un gran número de aplicaciones, entre las más significativas está la firma digital de documentos, que asegura la autenticidad del emisor del mensaje pues la clave privada asociada al certificado digital3 nunca sale de la tarjeta; también se utilizan en control de acceso, como monedero electrónico, en el pago de televisión, telefonía móvil, transporte público, para acceso a sitios web, sistemas nacionales de salud, servicios
3 Es un documento digital que permite identificar como válido a un emisor de información. Los certificados digitales son
emitidos por Autoridades Certificadoras, las que tienen como misión verificar que la compañía en cuestión sea confiable y se encuentre legalmente constituida.
Introducción
bancarios, licencias de conducción, etc. Además en varios países del mundo se usan como documento oficial de identificación, entre los que están España y Finlandia.
Como parte de las acciones encaminadas al desarrollo de la informática y las comunicaciones en la República de Cuba, surgió en el año 2008 el Centro de Identificación y Seguridad Digital de la Universidad de las Ciencias Informáticas. Una de las actuales líneas de investigación y desarrollo está dirigida a potenciar la creación de soluciones informáticas que hagan uso de las tarjetas inteligentes. Luego de varios resultados significativos, surgió en este departamento la idea de impulsar el desarrollo de los servicios en línea mediante el uso de tarjetas inteligentes.
Lo anterior conduce a la siguiente pregunta: ¿Pudieran mejorarse o beneficiarse los servicios en línea con la utilización de tarjetas inteligentes?
Claramente la posibilidad de reemplazar la típica autenticación mediante nombres de usuario y contraseñas, en la cual se basan actualmente muchos de los servicios en línea, por una que utilice las de tarjetas inteligentes dotaría a los actuales sistemas de una mayor seguridad, además se incrementaría la seguridad de las transacciones a través de internet y la verificación de la identidad del usuario que hace uso del servicio.
El uso de tarjetas inteligentes para los servicios en línea potencia además la implementación de la infraestructura PKI4 por sus siglas en inglés, (Public Key Infrastructure) para la certificación de documentos y la firma digital.
La manera tradicional hasta la actualidad, de interactuar con las tarjetas inteligentes es a través de capas o librerías de software, técnicamente conocidas como middleware, que normalmente corren en el cliente y hacen función de intermediarios entre diversas aplicaciones y los lectores de tarjetas. El manejo de las tarjetas mediante el uso de middlewares que se ejecuten en el cliente trae consigo algunas desventajas o riesgos considerables; por ejemplo para las actualizaciones del software o la incorporación de nuevas funcionalidades a estas librerías habría que distribuirlas por todos los clientes de un sistema dado o publicarlos en un sitio web para que sean descargados a través de la red. Esto,
4 Es una infraestructura de clave pública que se compone de una combinación de hardware y software, políticas y procedimientos que permiten la ejecución con garantías de operaciones criptográficas como el cifrado, la firma digital y el no repudio de transacciones electrónicas.
Introducción
además de ser incómodo para el cliente, implica que los usuarios que pretenden interactuar con sus tarjetas tengan ciertos conocimientos para efectuar las actualizaciones y posean una serie de permisos en el manejo de los recursos de la computadora para poder instalarlas.
Otra de las principales desventajas es la que está relacionada con la seguridad, pues las llaves simétricas necesarias para trabajar dentro de la tarjeta, permanecen en el código con peligro que puedan ser descifradas.
Partiendo de todo lo anteriormente abordado se manifiesta la siguiente situación problémica:
actualmente el manejo de tarjetas inteligentes en el mundo se efectúa mediante el uso de librerías de software que se ejecutan en la computadora del usuario, almacenando en ella las llaves simétricas que rigen los protocolos de comunicación. Esto constituye un riesgo potencial para la seguridad de las llaves, implica una mayor dificultad para la actualización e incorporación de nuevas funcionalidades; además de limitar el uso que pudiera dársele a las tarjetas inteligentes para impulsar el desarrollo y la seguridad de los servicios en línea en internet.
Derivado de la situación anteriormente expuesta se encuentra el siguiente problema científico: ¿Cómo impulsar el desarrollo de servicios en línea utilizando tarjetas inteligentes a través de aplicaciones web?
Como objeto de estudio se tiene: Las tecnologías y aplicaciones para tarjetas inteligentes. El campo de acción se enmarca en: Las plataformas para el desarrollo de servicios en línea utilizando tarjetas inteligentes.
Para dar solución al problema existente se ha tomado como objetivo general:
Desarrollar una plataforma que impulse el desarrollo de los servicios en línea mediante la utilización de tarjetas inteligentes sobre clientes web independientemente del ambiente en que estos funcionen.
Derivándose en los siguientes objetivos específicos:
Realizar un estudio de las soluciones existentes para el desarrollo de los servicios en línea utilizando tarjetas inteligentes.
Identificar las tecnologías y estándares relacionados con la solución propuesta.
Realizar el análisis, diseño e implementación de la plataforma.
Desarrollar un prototipo de servicio que permita probar la plataforma propuesta.
Introducción
Idea a defender
El diseño e implementación de una plataforma para el uso de tarjetas inteligentes en clientes web, donde el middleware esté contenido del lado del servidor, impulsará el desarrollo de servicios en línea que utilicen esta tecnología.
Para dar respuesta a la interrogante presentada en este trabajo y con los objetivos trazados se plantea el cumplimiento de las siguientes tareas de la investigación:
Investigación sobre las tecnologías relacionadas con tarjetas inteligentes.
Investigación sobre la tecnología AJAX para el desarrollo de aplicaciones web.
Investigación sobre el desarrollo de extensiones para distintos navegadores web.
Desarrollo del componente que se integra a los navegadores web para la comunicación con las tarjetas.
Desarrollo de una aplicación web que permitirá la gestión remota de los pedidos y respuestas de mensajes a la tarjeta.
Realización de pruebas de calidad a la plataforma propuesta.
Proposición de un prototipo de servicio en línea que utilice esta solución.
Realización de pruebas de calidad al prototipo.
La investigación estará sustentada en los siguientes métodos científicos:
Teórico
El empleo del método histórico-lógico posibilitará la compresión lógica del objeto de estudio haciendo un análisis riguroso de sus antecedentes y el proceso evolutivo por el cual han transitados todas las tecnologías relacionadas con las tarjetas inteligentes y los servicios en línea.
Además el analítico-sintético permitirá la consulta de diversas fuentes bibliográficas y la extracción de los elementos más importantes que se relacionan con el objeto de estudio. Será de gran importancia en el estudio del estado del arte.
Introducción
También el método inductivo-deductivo será valioso para poder hacer generalizaciones del conocimiento a partir del estudio de situaciones concretas y viceversa, lo que es importante en cualquier investigación científica.
La abstracción de diversas situaciones y la representación de sus características fundamentales desde determinada perspectiva será de gran importancia en el desarrollo de esta investigación, por lo que se usará el método modelación, muestra de ello serán todos los diagramas y modelos que se producirán a lo largo de la misma.
Empírico
Como métodos empíricos se usará la entrevista con el propósito de obtener información, experiencias, ideas, puntos de vistas, que contribuyan al desarrollo de la investigación y aporten conocimientos específicos del tema.
El trabajo se encuentra estructurado de la siguiente forma:
Capítulo 1: Fundamentación teórica: Este capítulo contiene una base teórica para entender el problema planteado, en él se describen los conceptos fundamentales relacionados con tarjetas inteligentes y las tecnologías relacionadas con los servicios en línea.
Capítulo 2: Propuesta de solución: Se presentan las fases de Exploración y Planificación definidas por la metodología XP para dar solución al problema científico. Se seleccionan las herramientas y tecnologías para desarrollar la solución. Se identifican las historias de usuarios y los requerimientos no funcionales, se realiza el plan de iteraciones y plan de entregas.
Capítulo 3: Implementación y prueba: Se da cumplimiento a los planes trazados a través de las fases: Iteraciones a primera liberación y Producción, se codifica la solución diseñada y finalmente se realizan las pruebas de aceptación con el cliente.
Capítulo 1 Fundamentación Teórica
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
1.1 Introducción
El auge adquirido en los últimos años por las tarjetas inteligentes invita a pensar en cómo pudiera potenciarse la seguridad de los servicios en línea a través de internet mediante el uso de las mismas. De igual manera se hace necesario la búsqueda de una vía que permita interactuar con las tarjetas desde una plataforma basada en la arquitectura cliente/servidor con el objetivo de hacer menos complejo para los usuarios estos procesos.
En el presente capítulo se hará un estudio de los principales retos o desventajas que asumen los prestadores de servicios en línea a través de la web y como pueden estos erradicarse mediante el uso de las tarjetas inteligentes. Para ello se analizarán las características y aplicaciones de las mismas, así como los estándares internacionales y las tecnologías más utilizadas. Se analizarán las soluciones factibles existentes y en base a su estudio se propondrá el desarrollo de una aplicación que resuelva el problema.
1.2 Conceptos asociados al dominio del problema
A continuación se relacionan algunos conceptos fundamentales para el entendimiento del objeto de estudio.
1.2.1 Navegador web
Un navegador es un programa que permite visualizar la información que contiene una página web, interpreta el código de la página, HTML generalmente y lo presenta en el monitor de la computadora permitiendo al usuario interactuar con su contenido y navegar hacia otros lugares de la red mediante enlaces o hipervínculos.
Los documentos pueden estar ubicados en la computadora en donde está el usuario, pero también pueden estar en cualquier otro dispositivo que esté conectado a la computadora del usuario o a través de Internet y que tenga los recursos necesarios para la transmisión de estos, como por ejemplo un servidor web. Tales documentos, comúnmente denominados páginas web, poseen hipervínculos que enlazan una porción de texto o una imagen a otro,
Capítulo 1 Fundamentación Teórica
normalmente relacionado. La comunicación entre el servidor web y el navegador se realiza generalmente mediante el protocolo HTTP.
Entre los navegadores más utilizados a nivel mundial se encuentran Internet Explorer (IE) desarrollado por Windows, siendo el más utilizado desde 1999, lo que ha ido disminuyendo paulatinamente por la renovada competencia de navegadores como Mozilla Firefox.
Desarrollado por la Fundación Mozilla y un gran número de voluntarios externos, es un navegador multiplataforma y de código fuente abierto (open source).
1.2.2 Add-ons
Los add-ons son pequeños programas ejecutables que sólo funcionan anexados a otro y que sirven para aportar o complementar alguna función. Estos complementos permiten que los desarrolladores externos colaboren con la aplicación principal extendiendo sus funciones, reduciendo el tamaño y separando el código fuente de la aplicación a causa de la incompatibilidad de las licencias de software.
Entre las aplicaciones más comunes que suelen incluirlos están los navegadores web ya que amplían las funciones de las páginas web para ver contenidos interactivos, videos y cosas similares. Son especialmente populares para Mozilla Firefox. En general, cualquier aplicación puede añadir soporte para los add-ons.
1.2.3 Middleware
Los middlewares han aparecido de manera relativamente reciente en el mundo de la informática, es un software de conectividad que funciona como una capa de abstracción, situada entre la de aplicación y las inferiores (sistema operativo y red) haciendo posible el funcionamiento de aplicaciones distribuidas sobre plataformas heterogéneas. En general son usados para relacionar sistemas que necesitan intercambio de información, permitiendo realizar la conexión a través de interfaces de alto nivel.
Algunas de sus funciones son:
Transparencia de la heterogeneidad de los componentes de hardware, sistemas operativos y protocolos de comunicación.
Capítulo 1 Fundamentación Teórica
Proporciona un estándar de alto nivel de interfaces para los desarrolladores e integradores de aplicaciones, para que estas puedan ser fácilmente integradas, reutilizadas, adaptadas y hechas para interoperar.
Suministro de un conjunto de servicios comunes a diversas funciones de propósito general, a fin de evitar la duplicación de esfuerzos y facilitar la colaboración entre las aplicaciones.
El papel del middleware es hacer más fácil el desarrollo de aplicaciones, ofreciendo abstracciones de programación común, mediante el enmascaramiento de la heterogeneidad, la distribución del hardware subyacente y sistemas operativos;
además oculta los detalles de la programación de bajo nivel. Actualmente son muy usados para interactuar con las tarjetas inteligentes en los computadores personales ya que hacen función de intermediarios entre diversas aplicaciones y los lectores de tarjetas.
1.2.4 ActiveX
ActiveX es una tecnología orientada a la Internet desarrollada por Microsoft, generalmente ejecutada a través de navegadores como Internet Explorer (IE). Agregan dinamismo a las páginas web y en ocasiones aporta al diseño de la misma.
Los controles ActiveX son simples objetos OLE5 (Object Linking and Embedding) que soportan algunas interfaces. Son pequeños programas que se incluyen dentro de las páginas web para dotarlas de mayores funcionalidades como animaciones, videos, etc. Además también pueden traer incluido contenido malicioso para recoger información de su PC, dañar información del equipo, instalar software sin su consentimiento o permitir que otra persona lo controle de forma remota.
Las aplicaciones ActiveX están conceptualmente divididas en servidores, objetos que hacen que sus métodos y propiedades estén disponibles para los demás y clientes, aplicaciones que
5 Es un estándar que permite la incrustación y vinculación de objetos (imágenes, clips de vídeo, sonido MIDI, animaciones)
dentro de ficheros (documentos, bases de datos, hojas de cálculo). También hace posible la inclusión de controles ActiveX y la comunicación entre ellos.
Capítulo 1 Fundamentación Teórica
usan los métodos y propiedades expuestos por el servidor. Algunos tipos de servidores, pueden disparar eventos que pueden ser después respondidos por el código de un cliente.
1.2.5 XPCOM
XPCOM (en inglés Cross Platform Component Object Model) es un marco de trabajo para escribir software multiplataforma similar a Microsoft COM6. Tal como una aplicación, usa un conjunto de librerías para cargar y manipular componentes XPCOM, estos pueden ser escritos en lenguajes como C, C++, JavaScript y pueden ser usados desde estos mismos lenguajes con extensiones para Perl y Python. La mayor diferencia entre XPCOM y Microsoft COM es que la primera es una tecnología de código abierto, ofreciendo documentación del funcionamiento de sus librerías y su arquitectura.
El término COM es a menudo utilizado en la industria de desarrollo de software de Microsoft como un término general que abarca los OLE y tecnologías como los ActiveX.
1.2.6 JavaScript
JavaScript es un lenguaje de scripting7 orientado a objetos, utilizado para crear páginas web dinámicas y aplicar cierta lógica programada del lado del cliente. Principalmente se utiliza integrado en un navegador web permitiendo el desarrollo de interfaces de usuario mejoradas y páginas web dinámicas, todos los navegadores modernos interpretan código JavaScript. Ha tenido influencia de múltiples lenguajes y se diseñó con una sintaxis similar al lenguaje de programación Java, aunque solo comparten algunos conceptos básicos.
JavaScript se ejecuta en el navegador (cliente) y no requiere ningún software de servidor.
Dado que toda la ejecución tiene lugar en el navegador, Javascript es responsable de la mayor parte de la interactividad en una página web. A través de él se pueden hacer acciones como cambiar la imagen, el color del texto cuando se pasa el ratón. El lenguaje también ha
6Component Object Model (COM) es una interfaz estándar para componentes de software introducido por Microsoft en 1993.
Se utiliza para permitir la comunicación entre los procesos y la creación de objetos dinámicos en una amplia gama de lenguajes de programación.
7 Un script o archivo de procesamiento por lotes es un programa usualmente simple, que por lo general se almacena en un archivo de texto plano.
Capítulo 1 Fundamentación Teórica
sido ampliamente utilizado para la validación de datos, ya que es mejor para validar un formulario en el lado del cliente que hacer varios viajes al servidor.
1.2.7 AJAX
AJAX (en inglés Asynchronous JavaScript And XML8) es una técnica de desarrollo web para crear aplicaciones interactivas o aplicaciones de internet enriquecidas (por sus siglas en inglés RIA9, Rich Internet Applications). En su libro Ajax: A New Approach to Web Applications, Jesse James comenta sobre esta tecnología: Ajax no es una tecnología en sí mismo. En realidad, se trata de varias tecnologías independientes que se unen de formas nuevas y sorprendentes (Jesse James, 2005). Estas aplicaciones se ejecutan en el cliente, o sea, en el navegador de los usuarios mientras se mantiene la comunicación asíncrona con el servidor en segundo plano. Así es posible realizar cambios sobre las páginas sin necesidad de recargarlas completamente, aumentando la interactividad, velocidad y usabilidad en las aplicaciones.
Tecnologías que forman AJAX:
XHTML y CSS10, para crear una presentación basada en estándares.
DOM11, para la interacción y manipulación dinámica de la presentación.
XML, XSLT12 y JSON13, para el intercambio y la manipulación de información.
XMLHttpRequest14, para el intercambio asíncrono de información.
8 XML (Extensible Markup Language) conocido como lenguaje de marcado extensible, no es más que un conjunto de reglas para definir etiquetas semánticas que nos organizan un documento en diferentes partes.
9 Las aplicaciones RIA son un nuevo tipo de aplicaciones con más ventajas que las tradicionales aplicaciones web. Es una combinación de las ventajas que ofrecen las aplicaciones web y las aplicaciones tradicionales.
10Las hojas de estilo en cascada (en inglés Cascading Style Sheets), son un lenguaje usado para definir la presentación de
un documento estructurado escrito en HTML o XML (y por extensión en XHTML). Su idea de desarrollo es la de separar la estructura de un documento, de su presentación.
11 El DOM (una traducción no literal al español podría ser Modelo de Objetos del Documento) es esencialmente una interfaz de programación de aplicaciones que proporciona un conjunto estándar de objetos para representar documentos HTML y XML.
12 XSLT o Transformaciones XSL es un estándar que presenta una forma de transformar documentos XML en otros.
13 JSON, acrónimo de JavaScript Object Notation, es un formato ligero para el intercambio de datos. JSON es un subconjunto de la notación literal de objetos de JavaScript que no requiere el uso de XML.
Capítulo 1 Fundamentación Teórica
JavaScript, para unir todas las demás tecnologías.
Figura 1. Tecnologías agrupadas bajo el concepto de AJAX.
Algunas ventajas de usar AJAX:
Las páginas no se recargan completamente.
El tiempo de espera puede ser menor.
Se pueden lograr aplicaciones web que sin AJAX definitivamente no se podrían hacer.
Figura 2. Funcionamiento de una aplicación web con AJAX.
14 XMLHttpRequest (XHR), es una interfaz empleada para realizar peticiones de HTTP (protocolo de transferencia de hipertexto) y HTTPS (protocolo seguro de transferencia de hipertexto) a servidores web.
Capítulo 1 Fundamentación Teórica
1.3 Aplicaciones y características de las tarjetas inteligentes
Las tarjetas inteligentes son dispositivos que contienen un chip en su interior, por lo que también se les conoce como tarjetas con circuito integrado (TCI). La presencia de dicho circuito posibilita la ejecución de cierta lógica programada, de ahí que se utilice el adjetivo
“inteligente” en su denominación. Por su parte el plástico que contienen, puede ser impreso para contener información adicional y visible a los ojos de los humanos acerca del portador o la entidad que las emite.
1.3.1 Historia y evolución de las tarjetas inteligentes
Aunque desde la década de 1950 comenzó a registrarse una tendencia al uso de tarjetas plásticas para la identificación o el pago de algunos servicios, pasando por varios estados entre los cuales cabe destacar la incorporación de la barra magnética y el número de identificación personal (Personal Identification Number, conocido por sus siglas en inglés como PIN). No fue hasta 1970 que comenzaron a manejarse las primeras ideas para el desarrollo de las tarjetas inteligentes. Los inventores alemanes Jürgen Dethloff y Helmut Grötrupp fueron los primeros en expresar la idea de incorporar un circuito integrado dentro de una tarjeta de identificación, esto tuvo lugar en 1968. Dos años más tarde el japonés Kunitaka Arimura emitió una idea similar. Sin embargo no fue hasta el año 1974 cuando Ronald Moreno registró su patente oficial sobre tarjetas inteligentes en Francia. Sólo en ese momento los adelantos científico-técnicos estuvieron listos para suplir las necesidades de circuitos integrados a precios aceptables. Dado que Alemania y Francia fueron los principales impulsores de esta tecnología no es sorpresa que ambos hayan jugado un papel primordial hasta la fecha en el desarrollo y marketing de la misma. (Jacquinot Consulting, 2009)
En poco tiempo demostraron ser una solución ideal pues poseían un alto nivel de seguridad, basado en criptografía ya que podían almacenar de forma segura llaves secretas y ejecutar complejos algoritmos en el chip y además eran fáciles de portar. Aunque fueron usadas en algunos casos para operaciones financieras su mayor auge fue vinculadas a la telefonía móvil GSM (Global System for Mobile Communication). En la última década del siglo XX comienzan a diversificarse los usos de las tarjetas de circuito integrado, por ejemplo en 1992 en Dinamarca y en 1996 en los Juegos Olímpicos de Atlanta, en Estados Unidos se hicieron
Capítulo 1 Fundamentación Teórica
pruebas pilotos para utilizarlas como monedero electrónico. En 1997 surge el conocido monedero VisaCash impulsado por Visa España.
Aunque existían prototipos desde algunos años antes, hasta finales de 1999 no salieron al mercado de forma masiva tarjetas sin contacto, debido principalmente a los problemas para integrar la antena en la tarjeta. Su uso era, básicamente, para control de acceso. En los últimos años su uso se ha diversificado de una manera que ni siquiera había sido concebida por los fundadores de esta tecnología.
1.3.2 Estructura de una tarjeta inteligente
Una tarjeta inteligente contiene un microprocesador de 8 Bytes con su CPU, RAM y ROM, su forma de almacenamiento puede ser EPROM o EEPROM. El sendero interno de comunicación entre los elementos (BUS) es totalmente inaccesible desde afuera del chip de silicio mismo, por ello la única manera de comunicarse con las tarjetas está totalmente bajo control del sistema operativo y no hay manera de poder introducir comandos falsos o requerimientos inválidos que puedan sorprender las políticas de seguridad. Las dimensiones y ubicación de los mismos están especificadas en el estándar ISO 7816 – 2: Tarjetas con contactos - Dimensiones y localización de los contactos.
El estándar mencionado especifica las características físicas de una tarjeta inteligente, el cual define entre otras cosas las dimensiones y las localizaciones de los contactos eléctricos así como los protocolos de transmisión. La más común es la ID-1 que mide 85,6 mm de largo por 54 mm de ancho y con un grosor de solo 0,76 mm, lo cual es suficiente para embeber el chip de silicio que constituye la parte verdaderamente activa del conjunto, iniciando y monitoreando todas sus actividades. Este microcontrolador está diseñado para funcionar por sí solo como una computadora, lo cual implica que contiene procesadores, memoria e interfaces al mundo exterior. (ISO, 2010)
La figura muestra la estructura básica del circuito:
Capítulo 1 Fundamentación Teórica
Figura 3. Arquitectura básica de un microcontrolador embebido en una tarjeta inteligente.
Como puede apreciarse también los contactos eléctricos contienen un pin para la entrada y salida de información, el cual está conectado a la interfaz de transmisión de datos que puede ser direccionada por el procesador o CPU.
Componentes internos del microcontrolador:
CPU (Central Processing Unit): es el procesador de la tarjeta, comúnmente son de 8 o 16 bits usando el conjunto de instrucciones de Motorola 6805 o Intel 8051, con una velocidad de reloj de 5 MHz y una tensión de 5 voltios
NPU (Numeric Processing Unit): en ocasiones los microcontroladores traen incorporados un procesador adicional que actúa como una especie de coprocesador matemático con el objetivo de realizar en el interior de la tarjeta cálculos necesarios en las operaciones criptográficas.
RAM (Random Access Memory): es la memoria volátil con que trabaja el procesador, su contenido es mutable y no se preserva una vez que se le retira la energía a la tarjeta. Para una tarjeta inteligente, 4 Kb de memoria volátil es suficiente.
ROM (Read Only Memory): es la memoria persistente, (normalmente entre 12 y 30 KB), en la que se establece el sistema operativo de la tarjeta, las rutinas del protocolo de comunicación y los algoritmos de seguridad de alto nivel por software.
Capítulo 1 Fundamentación Teórica
Esta memoria, como su nombre indica solo puede ser leída, no se puede reescribir y se inicializa durante el proceso de fabricación. No es necesaria la energía eléctrica para retener la información contenida en la misma, esta no puede ser modificada durante todo el tiempo de vida del chip.
EEPROM (Electrical Erasable Programmable Read Only Memory): memoria de almacenamiento (equivalente al disco duro en un ordenador personal), es mutable y persistente, o sea que puede ser modificada mientras la tarjeta está expuesta a la energía eléctrica y persistir una vez que la fuente es retirada. En ella está grabado el sistema de ficheros, los datos usados por las aplicaciones, claves de seguridad y las propias aplicaciones que se ejecutan en la tarjeta. El acceso a esta memoria está protegido a distintos niveles por el sistema operativo de la tarjeta.
1.3.3 Algunas clasificaciones de las tarjetas inteligentes
Según la capacidad del chip
Existen dos tipos fundamentales de tarjetas inteligentes según esta clasificación:
Tarjeta de memoria
Contienen únicamente elementos de memoria no volátil y son utilizadas para portar información.
Tarjeta con microprocesadores
Funcionan de manera análoga a una computadora, conteniendo elementos de memoria volátil, memoria persistente y un procesador con un sistema operativo que permite el almacenamiento, procesamiento y encriptación de la información que guardan. Algunas tarjetas de microprocesadores, poseen además un coprocesador con el objetivo de ejecutar complejos algoritmos asociados con operaciones criptográficas.
Según la interfaz de comunicación
De acuerdo con la interfaz de comunicación las tarjetas inteligentes pueden ser clasificadas en:
Capítulo 1 Fundamentación Teórica
Tarjeta de contacto
Requieren ser insertadas en un terminal con lector inteligente para que pueda ser leída. Las características físicas de esta tarjeta están especificadas en el estándar ISO 7816 donde se define la estructura de un conjunto de 8 pines a través de los cuales se establece la comunicación con el lector.
Tarjeta sin contacto
Utilizan diferentes protocolos de transmisión en capa lógica y física, no utiliza contacto galvánico sino que establecen comunicación a través de campos electromagnéticos usando una antena, lo que permite que se use desde media distancia sin necesidad de ser introducida en un lector. El estándar de comunicación de tarjetas inteligentes sin contacto es el ISO/IEC 14443. Operan a 13,56 MHz, e incluye las especificaciones de las características físicas; la energía de radiofrecuencia y la señal de interfaz; protocolos de inicialización y anticolisión y el protocolo de transmisión. Una de las ventajas que esta tarjeta tiene es que como no existen contactos externos, esta es más resistente a los elementos tales como la mugre y no es dañada por el rozamiento.
Tarjeta híbrida y dual
Estas tarjetas contienen las 2 topologías explicadas anteriormente. Las híbridas contienen 2 chips totalmente independientes, uno para la comunicación por contacto y otro para la comunicación sin contacto. En el caso de las de interfaz dual contiene un único chip con ambas interfaces.
1.3.4 Protocolo de comunicación con tarjetas inteligentes APDU
Unidad de datos de protocolo de aplicación (Application Protocol Data Unit), es la unidad de comunicación entre un lector y una tarjeta. Su estructura está definida en el estándar ISO 7816, existiendo dos tipos de categorías de APDU, APDU Command (Comando APDU) y APDU Response (APDU Respuesta). (ISO Organization, 2005)
Capítulo 1 Fundamentación Teórica
1 APDU Command (C-APDU: este comando es usado por el lector para enviar información a la tarjeta.)
Encabezado (obligatorio) Cuerpo (opcional)
CLA INS P1 P2 Lc Data Field Le
Figura 4. Estructura Comando APDU
CLA: Clase de instrucción. Indica la clase y la estructura.
INS: Código de instrucción. Especifica la instrucción del comando.
P1, P2: Parámetros de instrucción. Proveen más información sobre la instrucción.
LC: Número de bytes en el Data Field del APDU.
Data Field: Secuencia de bytes con información.
LE: Cantidad máxima de bytes esperados como respuesta.
2 APDU Response(R-APDU: este comando es usado por la tarjeta para responder al comando enviado por el lector.)
Cuerpo (opcional) Código respuesta (obligatorio)
Data Field SW1 SW1
Figura 5. Estructura APDU Respuesta
Data Field: Secuencia de bytes con información.
SW1, SW2: Status Word (palabra de estado): Denotan el estado del procesamiento del comando en la tarjeta.
1.3.5 Necesidad de las tarjetas inteligentes en la autenticación
Un número importante de departamentos de informática en el mundo que tienen la tarea de administrar la seguridad siguen dependiendo de las contraseñas para la autenticación como la primera línea de defensa. El problema con ese enfoque es que las contraseñas pueden ser
Capítulo 1 Fundamentación Teórica
descubiertas fácilmente por cualquier pirata informático amateur que utilice un método comúnmente conocido como ataque de directorio15.
Las organizaciones intentan resolver el problema de las contraseñas al enfocarse en el uso de estrictas políticas de administración de contraseñas. Pero esto trae como consecuencia contraseñas muy complejas, difíciles de recordar por los usuarios, cuando se sienten cómodos con una ya se le solicita el cambio de la misma, además generalmente tienen que recordar un historial de contraseñas anteriores antes de confeccionar una nueva. Estas políticas seguirán haciendo que el usuario las elimine o se reduzca de manera efectiva la seguridad del sistema.
Se tiene que reconocer que las contraseñas de usuario ya no son una solución suficientemente buena y que cambiar a la autenticación multifactor es una mejor manera de ayudar a garantizar un acceso seguro a los recursos y de protegerlos. Requiere un mínimo de dos métodos de autenticación. Por sus cualidades y ventajas como módulo criptográfico, la tarjeta inteligente ha desarrollado un papel fundamental en la autenticación de usuarios.
Una de las variantes de autenticación por varios factores; es la combinación de uno o más certificados x.509 en una tarjeta inteligente para identificación y autenticación junto con un PIN habilitado con caracteres alfanuméricos. La ventaja que brinda las tarjetas inteligentes, es que no tiene que tener un PIN largo ni complicado.
Las tarjetas inteligentes se pueden utilizar en diferentes escenarios, tales como autenticación de clientes, autenticación de acceso remoto y firmas de correo electrónico. Cuando se tiene una identidad pública (algo que se posee) y un PIN privado (algo que se conoce), es menos probable que cualquier persona pueda asumir la identidad de otra. La única manera en que esto sucedería es al obtener acceso tanto al dispositivo físico como al PIN. La autenticación multifactor y las soluciones de los proveedores para administrar la complejidad de estos sistemas, están logrando que este sea un proyecto razonable para resolver el desafío de la autenticación.
15 En un ataque de directorio, un atacante prueba sistemáticamente todas las contraseñas posibles para una cuenta de usuario en particular, utilizando la ¨fuerza bruta¨. Usted puede comenzar utilizando palabras comunes y posteriormente cambiar cada caracter hasta que por fin obtenga una coincidencia. Existen muchas aplicaciones disponibles en Internet que pueden ayudar a los piratas informáticos, y sólo es cuestión de tiempo descubrir la combinación correcta.
Capítulo 1 Fundamentación Teórica
Certificados x509
En criptografía, X.509 es un estándar de la Unión Internacional de Telecomunicaciones (UIT- T) para infraestructuras de claves públicas (PKI). X.509 especifica, entre otras cosas, formatos estándares para certificados de claves públicas y un algoritmo de validación de la ruta de certificación.
En el sistema X.509, una autoridad certificadora (AC) emite un certificado asociando una clave pública a un nombre distinguido particular en la tradición de X.500 o a un nombre alternativo tal como una dirección de correo electrónico o una entrada de DNS. X.509 es la pieza central de la infraestructura de clave pública y es la estructura de datos que enlaza la clave pública con los datos que permiten identificar al titular. Su sintaxis se define empleando el lenguaje ASN.1. (García, 2010)
1.3.6 Aplicaciones de las tarjetas inteligentes
Hoy en día las tarjetas inteligentes tienen un gran número de aplicaciones entre las que se puede mencionar el control de acceso; este tipo de aplicación suele estar ligadas a puertas automatizadas que permiten o impiden el paso físico de una persona a un área determinada.
También son muy utilizadas como un monedero electrónico, a finales del siglo pasado se registraban ya 65 millones que se usaban con este fin. Estas disponen normalmente de un fichero protegido que almacena un contador de saldo y comandos para decrementar e incrementar el mismo (esto último sólo con claves de seguridad especiales). Con esta aplicación, el chip de la tarjeta inteligente puede ser 'cargado' con dinero (en terminales autorizados que dispongan de las claves de seguridad). Este dinero virtual puede ser utilizado en parquímetros, máquinas expendedoras u otros mercados. El monedero electrónico extiende el uso de las tarjetas a acciones tan simples como el pago de televisión, telefonía móvil, transporte público, acceso a sitios web por solo mencionar un par de ejemplos.
Otra importante aplicación en la actualidad, es su vinculación a la firma digital de documentos, o sea que permiten almacenar un certificado digital dentro de la tarjeta y firmar con él, documentos electrónicos, sin que en ningún momento el certificado y su clave privada salgan del almacenamiento seguro en el que están confinados.
Capítulo 1 Fundamentación Teórica
El uso de la tarjeta anula la necesidad de tener que compartir una inmensa base de datos y tener que hacer réplicas periódicas. Esta misma facilidad es la que se aprovecha al utilizar las tarjetas inteligentes en algunas clínicas y los sistemas nacionales de salud donde se está implementando un sistema de identificación de pacientes y control de los datos del historial clínico o información relativa a enfermedades crónicas o alérgicas dentro de la tarjeta personal.
El DNI español es una tarjeta de policarbonato con chip integrado y se utiliza tanto para la identificación presencial del portador como para la identificación electrónica mediante los certificados contenidos en la memoria no volátil del chip. También se utiliza en el sector privado para: acceder a sitios web, firma de contratos, verificación de autenticidad de documentos y en el sector público para la declaración anual de impuestos, interacción con la Administración Pública para la obtención de formularios, servicios en línea y registros criminales. Como se han descrito las aplicaciones de las tarjetas inteligentes son muy variadas.
1.4 Estándares relacionados con tarjetas inteligentes 1.4.1 GlobalPlatform
GlobalPlatform es una organización independiente enfocada a gestionar una infraestructura estandarizada para el desarrollo y despliegue de tarjetas inteligentes. Proporciona un conjunto de especificaciones universalmente reconocidas e implementadas, junto con configuraciones de mercado, aplicación de esas especificaciones y documentos de apoyo. Cubriendo toda la infraestructura de tarjetas inteligentes (las tarjetas, dispositivos y sistemas) estos documentos técnicos ofrecen una plataforma tecnológica dinámica y completa para el desarrollo de programas de tarjetas inteligentes, para poder establecer una conexión segura con la misma y administrar sus aplicaciones.
Las tarjetas, dispositivos y sistemas GlobalPlatform, son interoperables, independientemente de la tecnología del proveedor y la flexibilidad de su infraestructura técnica, garantizan que pueda responder a las necesidades básicas en el instante del despliegue inicial. Ofreciendo a
Capítulo 1 Fundamentación Teórica
los emisores la seguridad de que la infraestructura que han elegido será capaz de adaptarse y crecer a medida que cambian las condiciones de negocios. (GlobalPlatform, Inc. , 2010)
1.4.2 PKCS
Se refiere a un grupo de estándares de criptografía de clave pública, concebidos y publicados por RSA Laboratories en California en cooperación con desarrolladores de sistemas de seguridad de todo el mundo, con el fin de acelerar el despliegue de la criptografía de clave pública.
PKCS#11: Especifica una interfaz de programación para su uso con dispositivos criptográficos (tarjetas y HSM16). Define un API17 genérico de acceso a dispositivos criptográficos.
PKCS#15: Este PKCS surge para cubrir ciertos aspectos no contemplados por PKCS#11, dando uniformidad de estructura de directorios y ficheros con información criptográfica (por ejemplo las llaves simétricas y asimétricas, PIN, PUK y certificados digitales) en tarjetas inteligentes. Define un estándar que permite a los usuarios de dispositivo criptográficos identificarse con aplicaciones independientemente de la implementación del PKCS#11 u otro API. (RSA, The Security Division of EMC., 2010)
1.4.3 Estándar ISO/IEC- 7816
La tarjeta inteligente más básica cumple los estándares de la serie ISO 7816. El objetivo de estos es lograr la interoperabilidad entre distintos fabricantes de tarjetas y lectores de las mismas, en lo que respecta a características físicas, comunicación de datos y seguridad.
Estos estándares son basados en los ISO 7810 e ISO 7811, los cuales definen características físicas de tarjetas de identificación. Las características de comunicación de las tarjetas sin contacto son definidas en estándares como el ISO/IEC 14443.
Descripción de algunas partes del estándar ISO 7816: (ISO Organization, 2005)
16 HSM son las siglas de Hardware Security Module (Módulo de Seguridad Hardware). HSM es un dispositivo criptográfico basado en hardware que genera, almacena y protege claves criptográficas y suele aportar aceleración hardware para operaciones criptográficas.
17 Una interfaz de programación de aplicaciones o API (en inglés Application Programming Interface) es el conjunto de funciones y procedimientos que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.
Capítulo 1 Fundamentación Teórica
7816-1: Características físicas.
7816-2: Dimensiones y ubicaciones de los contactos.
7816-3: Señales electrónicas y protocolo de transmisión.
7816-4: Comandos de intercambio inter-industriales.
7816-5: Sistema de numeración y procedimientos de registro.
7816-6: Elementos de datos inter-industriales.
7816-7: Comandos inter-industriales y consultas estructuradas para una tarjeta.
7816-8: Comandos inter-industriales relacionados con seguridad.
7816-9: Comandos adicionales inter-industriales y atributos de seguridad.
7816-10: Señales electrónicas y respuesta para reiniciar una tarjeta inteligente síncrona.
1.4.4 Estándar ISO/IEC 14443
ISO 14443 es un estándar internacional relacionado con las tarjetas inteligentes sin contacto gestionado conjuntamente por la Organización Internacional de Normalización (ISO) y Comisión Electrotécnica Internacional (IEC).
El estándar ISO 14443 consta de cuatro partes y se describen dos tipos de tarjetas: tipo A y tipo B. Las principales diferencias entre estos tipos son los métodos de modulación, codificación de los planes (parte 2) y el protocolo de inicialización de los procedimientos (parte 3). Las tarjetas de ambos tipos (A y B) utilizan el mismo protocolo de alto nivel (llamado T=CL) que se describe en la parte 4. El protocolo T=CL especifica los bloques de datos y los mecanismos de intercambio.
1. ISO/IEC 14443-1: Características físicas.
2. ISO/IEC 14443-2: Energía de radiofrecuencia y señal de interfaz.
3. ISO/IEC 14443-3: Inicialización y anticolisión.
4. ISO/IEC 14443-4: Protocolo de transmisión.
1.4.5 Estándar PC/SC
PC/SC (en inglés Personal Computer/Smart Card) es un conjunto de especificaciones para la integración de tarjetas inteligentes en ordenadores personales. En particular se define un API
Capítulo 1 Fundamentación Teórica
de programación, que permite a los desarrolladores trabajar de forma uniforme con lectores de tarjetas de distintos fabricantes (que cumplan con la especificación).
El API de PC/SC está incorporada en sistemas Microsoft Windows 200x/XP y Microsoft Windows NT/9x. También hay una implementación libre, de código abierto, llamada PC/SC Lite (proyecto MUSCLE) para sistemas operativos GNU Linux.
La especificación se divide en 10 partes que contienen los requisitos detallados de interoperabilidad de dispositivos compatibles, información de diseño, interfaces de programación y otras. (PC/SC Workgroup, 2010)
Parte 1. Introducción y visión general de la arquitectura.
Parte 2. Requisitos de interoperabilidad para las tarjetas y los lectores.
Parte 3. Requisitos de interoperabilidad para los lectores conectados.
Parte 4. Consideraciones de diseño e información de referencia de los lectores.
Parte 5. Definición de la interfaz del Resource Manager.
Parte 6. Definición de la interfaz del Service Provider.
Parte 7. Consideraciones de diseño para el desarrollo de aplicaciones.
Parte 8. Recomendación para la implementación de servicios de seguridad y privacidad con tarjetas inteligentes.
Parte 9. Lectores con capacidades extendidas.
Parte 10. Lectores con capacidades de entrada de PIN de seguridad.
1.5 Seguridad asociada a las tarjetas inteligentes
Las tarjetas inteligentes son ampliamente reconocidas como unas de las formas más seguras y fiables de la identificación electrónica. Su chip es a prueba de falsificación y no puede ser duplicado, posee capacidad de detección de ataques por rayos X y luz ultravioleta, voltajes inusuales y cambios de frecuencia de reloj. En cuanto a su sistema operativo posee control del acceso a memoria, protección de datos y ficheros. Las medidas de protección van desde los elementos empleados en el material de su elaboración hasta las características usadas en su impresión gráfica dificultando su reproducción y alteración.
La seguridad es una de las propiedades más importantes que brinda este tipo de tarjetas, se aplica a múltiples niveles y con distintos mecanismos. Cada fichero lleva asociadas unas