Download Implementación de un Sistema de Mental Póker

Document related concepts
no text concepts found
Transcript
D epartament d’Enginyeria Informàtica i Matemàtiques
Implementación de un Sistema de Mental Póker
Seguro basado en Tarjetas Inteligentes
TITULACIÓN: Enginyeria técnica en Telecomunicacions especialitat en Telemàtica
AUTOR: Jose Luis Membrive Ortega.
DIRECTORES: Jordi Castellà Roca, Albert Fernandez .
FECHA: Junio / 2011.
Sistema de Mental Póker basado en Smart Cards
2 Jose Luis Membrive Ortega
Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Resumen
El juego de póquer remoto, conocido como mental póker, se ha convertido en una de las actividades de ocio con más éxito de la red. En el transcurso de una partida se intercambia información, que en el caso de ser conocida por terceras partes, las pondría en una situación de privilegio. En este proyecto se ha implementado el sistema criptográfico para jugar al póker propuesto en Castellà et. Al (2006). El sistema está basado en tarjetas inteligentes y garantiza la seguridad de los jugadores. La implementación permite evaluar la su aplicación práctica. 3 Sistema de Mental Póker basado en Smart Cards
4 Jose Luis Membrive Ortega
Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Índice
1.
2.
INTRODUCCIÓN................................................................................................................. 7
1.1.
Motivación..................................................................................................................... 8
1.2.
Objetivos ....................................................................................................................... 9
1.3.
Estructura del documento .............................................................................................. 9
Póker .................................................................................................................................... 10
2.1.
3.
Smart Card ........................................................................................................................... 15
3.1.
Tarjetas sin contactos .......................................................................................... 16
3.1.3.
Tarjetas híbridas .................................................................................................. 17
3.1.4.
Tarjetas combinadas ............................................................................................ 17
Arquitectura de las Smart Card ................................................................................... 18
3.2.1.
Puntos de contacto de las Smart Cards de contacto y tarjetas combinadas. ........ 18
3.2.2.
Unidad Microprocesadora en una Smart Card (MPU) ........................................ 19
3.2.3.
Coprocesador en una Smart Card ........................................................................ 19
3.2.4.
Sistema de memoria en una Smart Card ............................................................. 19
3.3.
Comunicación con la Smart Card ................................................................................ 20
3.3.1.
El dispositivo de aceptación de tarjetas ............................................................... 20
3.3.2.
El modelo de comunicación con las Smart Cards ............................................... 21
3.3.3.
El protocolo APDU ............................................................................................. 21
3.3.4.
El protocolo TPDU .............................................................................................. 23
3.3.5.
ATR ..................................................................................................................... 23
3.3.6.
Sistemas de Smart Card ....................................................................................... 24
3.4.
Estándares y especificaciones de Smart Card ............................................................. 24
3.4.1.
Estándar ISO/IEC 7816 ....................................................................................... 24
3.4.2.
Estándar ISO/IEC 14443 ..................................................................................... 25
Tecnología Java Card .......................................................................................................... 26
4.1.
Arquitectura ................................................................................................................. 26
4.1.1.
Java Card Virtual Machine (JCVM) ................................................................... 28
4.1.2.
Java Card runtime environment (JCRE) ............................................................. 30
4.1.3.
Java Card Application Programming Interface (API de Java Card) ................... 31
4.2.
Tipos de tarjetas........................................................................................................... 15
3.1.2.
3.2.
4.
Tabla de combinaciones .............................................................................................. 11
Applet Java Card ......................................................................................................... 33
4.2.1.
Escribir un applet JavaCard ................................................................................. 33
4.2.2.
El Constructor...................................................................................................... 34
4.2.3.
El método install ( ) ............................................................................................. 34
5 Sistema de Mental Póker basado en Smart Cards
5.
6.
7.
4.2.4.
El método select ( ) .............................................................................................. 34
4.2.5.
El método deselect ( ) .......................................................................................... 35
4.2.6.
El método process ( ) ........................................................................................... 35
Descripción e implementación del Sistema de mental póker .............................................. 36
5.1.
Arquitectura ................................................................................................................. 36
5.2.
Los Protocolos ............................................................................................................. 37
5.2.1.
Registro del Jugador ............................................................................................ 38
5.2.2.
Aumento / Disminución de crédito ..................................................................... 40
5.2.3.
Iniciar un juego .................................................................................................... 44
5.2.4.
Colocar apuesta ................................................................................................... 48
5.2.5.
Barajar y repartir las cartas .................................................................................. 52
5.2.6.
Descartar y pedir las nuevas cartas...................................................................... 56
5.2.7.
Mostrar las cartas................................................................................................. 58
Análisis de la Seguridad ...................................................................................................... 60
6.1.
Seguridad software ...................................................................................................... 60
6.2.
Seguridad hardware ..................................................................................................... 61
Manual de usuario ............................................................................................................... 62
7.1.
Requisitos previos ....................................................................................................... 62
7.2.
Ventana principal ........................................................................................................ 62
7.3.
Menú de gestión del crédito ........................................................................................ 63
7.3.1.
7.4.
8.
Ingresar o RETIRAR dinero de la cuenta .............................................................. 63
Mesa ............................................................................................................................ 65
7.4.1.
Apostar ................................................................................................................ 66
7.4.2.
Descartar / No descartar ...................................................................................... 67
7.4.3.
Partida finalizada ................................................................................................. 68
7.4.4.
Cambiar fondo ..................................................................................................... 69
Conclusiones y Trabajo Futuro ........................................................................................... 70 Jose Luis Membrive Ortega
6 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
1. INTRODUCCIÓN
El sector de los juegos de azar en línea, denominado e-gambling, está en pleno auge en
todo el mundo, desde que empezaron a operar las primeras empresas relacionadas con
este sector en la década de los 90, se ha ido instalando en nuestra sociedad como una
nueva oferta de ocio y diversión.
Particularmente en España, según un estudio realizado por Aedapi1, se calcula que el
mercado del juego online mueve actualmente casi 350 millones de euros y se estima
que alcance los 800 millones de euros en solo dos años [1].
Dentro de este sector, el que mayor crecimiento ha experimentado durante 2010 ha sido
el póker on-line, estimándose un crecimiento del 30 % durante los próximos años.
Aunque el póker y los casinos on-line hayan ganado tantos adeptos durante los últimos
años, todavía hay una gran parte de la población que, aun dispuesta a introducirse en
este mundo, no participan por su falta de confianza.
En un casino o aplicación de póker on-line, los jugadores suelen pasar por los siguientes
pasos:
Inscripción y Autenticación: Antes de acceder al casino on-line, los jugadores deben
registrarse. En esta etapa los jugadores dan su información personal y eligen un nombre
de usuario y contraseña para, posteriormente, autenticarse y poder acceder a su cuenta
personal.
Este paso es uno de los temas que genera más desconfianza en los posibles nuevos
usuarios, y es que, un estudio realizado por la compañía S21sec sobre la seguridad en
los juegos on-line indica que uno de los grandes problemas es el del “pishing” o “spam”
[2]. En ambos casos, los usuarios son inundados de mensajes promocionando casinos o
aplicaciones de póker fraudulentos que haciéndose pasar por casinos legítimos
consiguen sus credenciales. Posteriormente éstas credenciales son usadas para extraer el
dinero de las cuentas privadas del casino o venderlas en canales “underground”, donde
se trafica con todo tipo de datos personales de usuarios.
Otros métodos utilizados para el robo de credenciales son los llamados “troyanos”, que
son un software malicioso, que al ser ejecutado por el usuario, captura todo tipo de
datos personales para enviarlos posteriormente.
Aumento o retirada de crédito: Antes de poder jugar el jugador debe realizar una
transferencia de dinero de su cuenta bancaria a su cuenta del casino. Si desea retirar
dinero se realiza la operación inversa. Para realizar estos traspasos el jugador debe
introducir sus datos bancarios.
Por otra parte, el control del crédito disponible para jugar o ser retirado es gestionado
por el casino. Casos como impagos de ganancias, manipulación de ganancias o cobro de
servicios inexistentes realizados por casinos fraudulentos, ha hecho que éste sea otro de
los puntos que ha afectado a la reputación de casinos y aplicaciones de póker on-line.
Asociación española de apostadores por internet 1
7 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Apostar: Cuando y quien puede realizar la acción de apostar viene determinado por las
reglas del juego.
Juego: Durante la partida de póker, el casino es el encargado de generar los principales
eventos de la partida; barajar las cartas, repartir, gestionar los descartes y controlar el
ganador de la partida. Esto hace que el casino o aplicación de póker on-line se sitúe en
una posición privilegiada para manipular, de forma intencionada o por parte de terceras
personas, los resultados de éstos.
1.1. Motivación
Una vez expuestas las problemáticas a las que se exponen los jugadores y aplicaciones
de póker on-line, la motivación principal de este proyecto es la de desarrollar un entorno
capaz de dar una solución, proporcionando la seguridad necesaria para que los
participantes, casinos y jugadores, tengan plena confianza entre ellos.
En concreto la seguridad que se pretende conseguir en cada uno de los pasos descritos
es:
Inscripción y autenticación: El registro debe realizarse con información veraz de las
personas que desean jugar para poder detectar menores de edad o jugadores con
problemas mentales de juego. Por otro lado, el método de autenticación debe ser
resistente a ataques de robo de información privada.
Aumento o retirada de crédito: La acción de ingresar o retirar dinero de la cuenta del
casino debe cumplir los siguientes requisitos:
•
•
•
•
Confidencialidad: El importe de dicho pago solo debe ser conocido por las dos
partes implicadas, jugador y casino.
Integridad: Una vez realizado el pago nadie puede modificar su valor.
Autenticación: Todo mensaje intercambiado entre las dos partes debe contener
información del autor para su verificación.
No repudio: El emisor del dinero debe obtener un recibo del pago para que
dicho ingreso o retirada no pueda ser negado.
Apostar: Cuando un jugador coloca una apuesta, ésta debe satisfacer lo siguiente:
•
•
Integridad: La apuesta no puede ser modificada una vez enviada al casino online.
Autenticación: La identidad del apostante debe ser conocido por todos los
jugadores y el casino on-line.
Barajar y repartir: Se debe garantizar un reparto aleatorio de cartas. Además, se tiene
que asegurar la confidencialidad e integridad de las mismas. Este punto es muy
importante, ya que si un jugador conoce las cartas de sus adversarios éste se situará en
una posición privilegiada sobre el resto.
Descartar: La acción de descartar debe garantizar la no posibilidad de utilizar las cartas
eliminadas. Por otro lado, los adversarios no pueden conocer el valor de los descartes,
porque de este modo ellos pueden utilizar esto para modificar sus acciones.
8 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Ganador: Es importante asegurar que no exista posibilidad de duplicidad de cartas
porque, una vez finalizada la partida, los jugadores no tengan la necesidad de mostrarlas
para demostrarlo. De esta manera el jugador puede esconder la estrategia seguida
durante el juego.
1.2. Objetivos
El objetivo principal de este proyecto es realizar un estudio e implementar los
protocolos propuestos por Jordi Castellà en el documento “A Smart Card-Based Mental
Poker System” [3].
Con la realización se pretende desarrollar un sistema criptográfico basado en tarjetas
inteligentes que garantice:
•
•
•
Resistencia a posibles ataques de robo de credenciales y datos bancarios.
Confidencialidad, autenticación, integridad y no repudio en las acciones que lo
requieran.
Una mayor confianza por parte de los usuarios.
1.3. Estructura del documento
En el siguiente capítulo se dan las nociones básicas para jugar una partida de póker.
Posteriormente en los capítulos 3 (Smart Card) y capitulo 4 (tecnología Java Card) se da
una visión global de las tecnologías utilizadas para la implementación del sistema. En el
capítulo 5 de presenta el sistema de mental póker y se detalla la implementación
realizada para cada uno de los protocolos propuestos en [3].Seguidamente (capítulo 6)
se analiza la seguridad del sistema implementado para ver si cumple las necesidades
descritas en 1.1. Un manual de usuario destinado al jugador final con las funciones
básicas de la aplicación de póker on-line se encuentra en el capítulo 7. Por último en el
capítulo 8 se muestran las conclusiones y trabajo futuro.
9 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
2. Póker
Como ya se ha mencionado en el capítulo anterior el póker está actualmente de moda a
nivel mundial, existen más de 20 modalidades diferentes. La modalidad utilizada para
realizar este proyecto, y el que se describe a continuación, es el llamado “5 Card draw”
o “póker clásico”.
En esta modalidad pueden participar entre 2 y 5 jugadores.
Al inicio de la partida, cada uno de los jugadores pone sobre la mesa una apuesta previa,
que corresponderá al bote inicial llamada “ciega”.
A continuación se reparten 5 cartas a cada jugador, con las que se realizará una primera
ronda de apuestas.
En la ronda de apuestas, el primer jugador, “Dealer”, tiene tres opciones:
•
•
•
Check: El jugador tomará esta opción para pasar el turno al siguiente jugador
sin realizar ninguna apuesta.
Raise: El jugador tomará esta opción para realizar una apuesta, el importe de
esta apuesta será siempre igual o inferior al crédito del jugador que disponga de
menos dinero.
Fold: El jugador tomará esta opción para abandonar la partida.
El resto de jugadores que le siguen tienen las siguientes opciones dependiendo de la
acción que haya realizado el anterior apostante:
•
•
Si el jugador que le precede ha tomado la opción Check, este tendrá las mismas
tres opciones del anterior.
Si el jugador que le precede a tomado la opción Raise tendrá tres opciones:
o Call: El jugador tomará esta opción para igualar la apuesta realizada.
o Raise: El jugador tomará esta opción para igualar y subir la apuesta
realizada.
o Fold: El jugador tomará esta opción para abandonar la partida.
Una vez finalizada la primera ronda de apuestas, es decir, se hayan igualado todas las
apuestas realizadas, cada uno de los jugadores tiene la opción de descartar de 1 a 5
cartas de su mano o quedarse con las cartas que tiene.
Por último se realizará una segunda ronda de apuestas con los mismos criterios que la
anterior.
Al finalizar esta segunda ronda, el jugador que tenga la mejor jugada será el ganador de
la partida, la mejor jugada será elegida siguiendo los criterios descritos en la siguiente
sección.
10 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
2.1. Tabla de combinaciones
Al póker se juega con las 52 cartas de la baraja inglesa. Las cartas tienen los valores, de
menor a mayor, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K y A, y hay cuatro palos: trébol ,
corazones , picas , y diamantes , ninguno de los cuales tiene más valor que el otro.
En el póquer las jugadas se forman siempre con cinco cartas, independientemente de la
modalidad de póker a que se juegue.
A continuación, se muestra la clasificación de jugadas de póker de mayor a menor y las
probabilidades de obtener esa jugada entre todas las combinaciones posibles de cartas
[15]. Las jugadas de una categoría superior vencen a las de una categoría inferior.
Escalera real de color
Figura 2.1: Escalera real de color
La mejor jugada del póquer. Contiene las cartas 10, J, Q, K y A del mismo palo.
La probabilidad de obtener esta combinación es de 1 / 2.598.960 [16].
Escalera de color
Figura 2.2: Escalera de color
Cinco cartas de orden consecutivo del mismo palo. Cuanta más alta sea la carta más alta
de la escalera, mejor es el ranking de la mano. En este ejemplo la carta más alta es el 10;
vencería a una escalera de color con un 9 de carta más alta.
La probabilidad de obtener esta combinación es de 36 / 2.598.960.
Póker
Figura 2.3: Póker
11 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Cuatro cartas del mismo valor. Cuanto más alto es el valor de estas cuatro cartas, más
alto es el ranking de la mano.
La probabilidad de obtener esta combinación es de 624 / 2.598.960.
Full
Figura 2.4: Full
Esta jugada reúne 3 cartas de un valor y 2 de otro. Cuando se comparan dos fulls, gana
el que tiene el valor de las tres cartas más alto. Así pues, un full 7-7-7-2-2 supera a un
full 5-5-5-A-A. En caso de que los tríos sean del mismo valor en dos manos, gana la
mano que tenga la pareja de cartas restante más alta, con lo que por ejemplo 7-7-7-A-A
superaría a 7-7-7-K-K.
La probabilidad de obtener esta combinación es de 3.744 / 2.598.960.
Color
Figura 2.5: Color
El color lo forman cinco cartas no consecutivas del mismo palo. Gana el desempate
entre dos colores aquel que tenga la carta más alta.
La probabilidad de obtener esta combinación es de 5.108 / 2.598.960.
Escalera
Figura 2.6: Escalera
Para la escalera se precisan cinco cartas de valor consecutivo. Entre dos escaleras gana
la que sea más alta. Por otra parte, el As puede usarse para formar la escalera A-K-Q-J10, que sería una Escalera Real, y también la escalera 5-4-3-2-A.
La probabilidad de obtener esta combinación es de 10.200 / 2.598.960.
12 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Trío
Figura 2.7: Trío
Lo componen tres cartas del mismo valor. Entre dos tríos gana el que está formado por
cartas más altas. Si ambos tríos están formados por cartas del mismo valor, decide el
desempate la carta más alta de las dos restantes de que consta la mano, y si esas dos
cartas fueran iguales, se compararían las quintas cartas de cada mano.
La probabilidad de obtener esta combinación es de 54.912 / 2.598.960.
Doble pareja
Figura 2.8: Doble pareja
Una doble pareja está formada por dos cartas del mismo valor en combinación con otras
dos cartas también de un mismo valor, pero diferente al valor de las dos primeras.
Cuando dos manos muestran doble pareja, gana la mano cuya pareja es más alta. Como
siempre, en caso de empate decide la carta más alta.
La probabilidad de obtener esta combinación es de 123.552 / 2.598.960.
Pareja
Figura 2.9: Pareja
Dos cartas del mismo valor. Cuanto más alto es el valor de la pareja, más alto es su
ranking. En caso de igualdad, se recurre a la carta más alta.
La probabilidad de obtener esta combinación es de 1.098.240 / 2.598.960.
Carta más alta
Cuando ningún jugador consigue formar una de las jugadas arriba expuestas, gana la
mano aquel que tiene la carta más alta. Y en caso de empate, se usa la siguiente carta
más alta.
13 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
La probabilidad de obtener esta combinación es de 1 / 2.598.960.
14 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
3. Smart Card
El concepto Smart Card o tarjeta inteligente abarca cualquier tarjeta del tamaño de una
tarjeta de crédito (o más pequeño como especifica el estándar ISO 7816-1) con
circuitos integrados (ICC – Integrated Circuit Chip) incluidos en el soporte de plástico
que hacen que posean poder de computación y capacidad para almacenar datos.
Figura 3.1: Smart Cards
Existen dos categorías principales de tarjetas llamadas “inteligentes” según la
funcionalidad que proporciona el ICC, las tarjetas de memoria, que contienen un chip de
memoria o un chip de memoria programable; y las tarjetas con microprocesador que,
como su propio nombre indica, incluyen además un microprocesador.
Las tarjetas con memoria no tienen CPU para procesar datos, el proceso de datos se
lleva a cabo mediante un circuito simple capaz de ejecutar un número limitado de
instrucciones preprogramadas sin la posibilidad de ser reprogramada. Este tipo de
tarjetas son ampliamente utilizadas como tarjetas de prepago en la telefonía móvil.
Por otro lado, las tarjetas con microprocesador ofrecen capacidad de soportar múltiples
funciones, entre ellas funciones criptográficas posibilitando así el incremento de la
seguridad que aportan estas tarjetas cifrando los datos contenidos en la memoria o
firmando y verificando los datos recibidos y enviados al exterior de la tarjeta. El
microprocesador incorporado en la tarjeta controla el tratamiento de los datos, el acceso
a la memoria y las instrucciones dadas por las aplicaciones externas.
Debido a las necesidades de un procesador programable para soportar el entorno de
ejecución Java Card y funciones criptográficas para realizar el proyecto, en este
documento el término Smart Card hace referencia a las tarjetas con microprocesador.
3.1. Tipos de tarjetas
Dentro de las tarjetas con microprocesador podemos encontrar 2 tipos básicos de Smart
Cards según la interface de comunicación que utilizan, “contact” y “contactless”.
Los términos “contact” y “contactless”, describen el medio por el que se suministra
energía eléctrica al chip y por el que se transfieren los datos desde la Smart Card a la
interfaz del dispositivo lector. Las tarjetas también pueden ofrecer interfaces de contacto
15 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
y sin contacto con dos chips separados en una misma tarjeta (tarjetas híbridas) o
mediante un chip de doble interface (tarjetas “combinadas”) [4][5].
3.1.1.1.
Tarjetas con contactos
Las tarjetas de contacto deben ser insertadas en un dispositivo de aceptación de tarjetas
(CAD= Card Acceptance Device). Estas tarjetas se comunican con el exterior mediante
el uso de una interfaz de comunicación serie consistente en ocho puntos de contacto
descritos en el estándar ISO/IEC 7816-2.
Figura 3.2: Tarjeta con contactos
Estas tarjetas no contienen baterías; la energía es suministrada por los lectores de
tarjetas.
Uno de los inconvenientes de este tipo de tarjetas es que los contactos podrían comenzar
a fallar debido al desgaste de introducir y sacar la tarjeta del lector.
3.1.2. Tarjetas sin contactos
Las tarjetas sin contactos o “contactless Smart Cards” no necesitan ser insertadas en el
dispositivo de aceptación de tarjetas, se comunican con el CAD mediante una antena
situada en el interior de la tarjeta.
Figura 3.3: Tarjeta sin contactos
La energía se puede suministrar de forma activa a través de una batería o de forma
pasiva acumulándola en la antena.
16 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
El estándar de comunicación de tarjetas inteligentes sin contactos es el ISO/IEC 14443
del 2001. Define dos tipos de tarjetas sin contactos (A y B), permitidos para distancias
de comunicación de hasta 10 cm.
Debido a que los microcircuitos de las tarjetas sin contactos están completamente
precintados, las tarjetas sin contactos superan las limitaciones de las tarjetas con
contactos: no hay contactos que se lleguen a estropear por un uso excesivo, las tarjetas
no necesitan ser insertadas cuidadosamente en un CAD, y las tarjetas no tienen que
tener un espesor determinado para caber en el CAD.
Sin embargo, las tarjetas sin contactos tienen sus inconvenientes. Estas tarjetas deben
estar a una cierta distancia para intercambiar datos con el dispositivo de aceptación de
tarjetas para no salirse del rango de cobertura.
3.1.3. Tarjetas híbridas
Este tipo de tarjetas contienen dos chips, uno utilizado para transmisión de datos con
contacto y el otro sin contacto.
Figura 3.4: Tarjeta híbrida
Como desventaja, los dos chips que contiene la tarjeta son independientes, y por tanto
cuando la tarjeta se inserta en el dispositivo de aceptación, si este contiene también la
posibilidad de lectura de tarjetas sin contacto, esto puede crear conflicto al captar los
dos chips a la vez. Pero esta propiedad de no comunicación se puede convertir en una
ventaja, ya que la tarjeta puede contener diferentes aplicaciones en uno u otro chip
dependiendo de la tecnología más eficiente.
3.1.4. Tarjetas combinadas
Las tarjetas con chip de doble interface de comunicación contienen un solo chip
compatible con las interfaces de contacto y sin contacto.
17 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Figura 3.5: Tarjeta combinada
Estas tarjetas permiten acceder a la tarjeta a través de lectores de contacto o lectores sin
contacto indistintamente sin posibilidades de conflictos.
3.2. Arquitectura de las Smart Card
Las Smart Cards, a menudo son llamadas Chip Cards, o Integrated Cuircuit Card (ICC).
El circuito integrado contiene elementos utilizados para la transmisión, almacenamiento
y procesado de datos.
Una tarjeta inteligente contiene una unidad central de proceso, varios tipos de memorias
y en algunos casos, un coprocesador para cálculos matemáticos. En el caso de las
tarjetas de contacto y tarjetas combinadas también contienen puntos de contacto para
comunicarse con el lector.
3.2.1. Puntos de contacto de las Smart Cards de contacto y tarjetas combinadas.
Una Smart Card tiene ocho puntos de contacto, la funcionalidad de cada uno se muestra
en la figura siguiente, Figura 3.6. Las dimensiones y localización de los contactos se
encuentran especificadas en la parte 2 de la ISO 7816.
Figura 3.6: Puntos de contacto
•
•
El punto Vcc suministra energía al chip. Vcc suele tener un valor de 3 ó 5
voltios, con una desviación máxima del 10%.
El punto RST se usa para enviar una señal de reset al microprocesador. A esto se
le llama reset en caliente. Un reset en frío se hace apagando y encendiendo la
fuente de alimentación (por ejemplo, extrayendo la tarjeta del CAD).
18 Sistema de Mental Póker basado en Smart Cards
•
•
•
•
•
Jose Luis Membrive Ortega
El punto CLK provee un reloj externo al chip. De este reloj externo se deriva el
reloj interno (ya que las Smart Cards no poseen un generador de reloj interno).
EL punto GND se usa como punto de referencia de voltaje. Se considera que su
valor es cero.
EL punto Vpp es opcional y se usa solamente en tarjetas antiguas. Cuando se
usa, suministra el voltaje de programación, que contiene dos niveles (uno bajo y
otro alto). El nivel alto de voltaje se utiliza para programar la EEPROM de
algunos chips antiguos de Smart Cards.
El I/O se usa para transferir datos y comandos entre Smart Card y el mundo
exterior en modo half-duplex. Esto significa que los comandos o los datos solo
se pueden transmitir un una sola dirección en un determinado instante.
Los puntos RFU están reservados para un uso futuro.
3.2.2. Unidad Microprocesadora en una Smart Card (MPU)
La unidad microprocesadora (MPU) ejecuta instrucciones programadas. Los
procesadores utilizados en las tarjetas inteligentes no están diseñados especialmente
para esta tecnología, sino que son dispositivos usados en otras áreas durante tiempo. De
esta manera, estos procesadores son muy fiables y disponen de librerías de funciones y
herramientas de desarrollo maduros aportados por productores y desarrolladores.
Tradicionalmente, las versiones más antiguas de Smart Cards se basan en
microcontroladores de 8 bits (CISC2), relativamente lentos. La gran evolución en la
utilización de la tecnología Java Card ha llevado a usar microcontroladores de 32 bits
sobre la arquitectura RISC3 con el fin de apoyar las nuevas necesidades como las
requeridas por la tecnología Java Card.
3.2.3. Coprocesador en una Smart Card
Debido a que la CPU utilizada en las tarjetas inteligentes no es muy rápida, los
fabricantes de tarjetas ofrecen una amplia gama de funciones adicionales en forma de
hardware, los coprocesadores. Las Smart Cards diseñadas para su uso en aplicaciones de
seguridad suelen tener un coprocesador criptográfico que se encarga de realizar cálculos
de exponenciales y módulos con grandes números necesarios en algoritmos de clave
pública como por ejemplo RSA [6].
3.2.4. Sistema de memoria en una Smart Card
Las Smart Cards contienen tres tipos de memoria: ROM, EEPROM y RAM.
ROM (Read-Only Memory): se usa para guardar los programas de la tarjeta. No hace
falta suministro de energía exterior para mantener los datos en este tipo de memoria.
Aunque como dice el nombre, no se puede escribir en ella después del proceso de
2 Complex
Instruction Set Computer. Los microprocesadores CISC están basados en un amplio repertorio
de instrucciones [14].
3 Reduced Instruction Set Computer. Los microprocesadores RISC están basados en un conjunto
reducido de instrucciones simples [14]. 19 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
fabricación. Suele contener rutinas del sistema operativo así como datos permanentes y
aplicaciones de usuario.
EEPROM (Electrical Erasable Programable Read-Only Memory): se usa para guardar
datos. Al igual que la memoria ROM, puede preservar los datos cuando se desconecta
de la fuente de alimentación. La diferencia es que el contenido de este tipo de memoria
se puede modificar durante un uso normal de la tarjeta. Las aplicaciones de usuario
también se pueden escribir en la EEPROM después de la fabricación de la tarjeta. Los
parámetros más importantes de la EEPROM son el número de ciclos de escritura en el
tiempo de vida de una tarjeta, el periodo de retención de los datos y el tiempo de acceso
a los datos. En la mayoría de las tarjetas, las EEPROM’s pueden soportar por lo menos
100.000 ciclos de escritura y pueden retener los datos durante 10 años.
RAM (Random Access Memory): se usa como espacio temporal de trabajo para guardar
y modificar datos. La RAM no es una memoria persistente, es decir, la información que
contiene no se puede preservar cuando la fuente de alimentación se apaga. A la
memoria RAM se puede acceder un número ilimitado de veces y ninguna de las
restricciones de la EEPROM son aplicables a la RAM. Una celda de RAM suele ocupar
cuatro veces el espacio de una celda de memoria EEPROM. La escritura en la RAM es
1000 veces más rápida que en la EEPROM.
3.3. Comunicación con la Smart Card
En esta sección se presenta el dispositivo, el modelo y los protocolos necesarios para
poder comunicarse con la Smart Card.
3.3.1. El dispositivo de aceptación de tarjetas
Una Smart Card se inserta en el interior de un dispositivo de aceptación (CAD), que
puede estar conectado a un ordenador. Los CAD’s se pueden clasificar en dos tipos:
lectores y terminales.
Un lector se conecta al puerto serie, paralelo, o USB de un PC, a través del cual la
Smart Card se comunica. Un lector tiene un slot en el que se inserta la tarjeta o puede
recibir los datos a través de campos electromagnéticos procedentes de una tarjeta sin
contacto. Además de suministrar potencia a la tarjeta, el lector establece un camino de
comunicación de datos en el que la tarjeta puede interactuar con el ordenador conectado
al lector. Aunque normalmente los lectores no tienen la inteligencia para procesar datos,
muchos de ellos tienen funciones de detección y corrección de errores si los datos
transmitidos no cumplen con el protocolo de transporte.
A diferencia de los lectores, los terminales son más similares a un ordenador. Además
de tener la funcionalidad de un lector de tarjetas, tiene capacidad de procesar los datos
intercambiados con la tarjeta. Por ejemplo, un cajero automático que acepte Smart
Cards, puede añadir o quitar dinero de una aplicación de monedero que se encuentre en
la tarjeta.
Las aplicaciones que se comunican con la Smart Card, estén en el PC conectado al
lector o en el terminal, son llamadas aplicaciones de host. Estas aplicaciones dirigen el
proceso de comunicación con la tarjeta.
20 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
3.3.2. El modelo de comunicación con las Smart Cards
La comunicación entre la tarjeta y las aplicaciones de host es half-duplex, es decir, sólo
uno de ellos puede estar transmitiendo datos en un mismo instante de tiempo.
Cuando dos ordenadores se comunican, intercambian paquetes de datos, que están
construidos siguiendo un protocolo, como TCP/IP. De forma similar, las Smart Cards
hablan con otros ordenadores usando sus propios paquetes de datos, llamados APDU’s
(Application Protocol Data Units). Existen dos tipos de APDU, de comando y de
respuesta.
El modelo de comunicación (entre host y Smart Card) empleado es el de maestro y
esclavo. La Smart Card siempre desempeña el papel de esclavo, esperando APDU’s de
comando procedentes del host (C-APDU). Entonces la tarjeta ejecuta la instrucción
especificada en el comando y responde al host con una APDU de respuesta (R-APDU).
3.3.3. El protocolo APDU
El protocolo APDU, como se especifica en la ISO 7816-4, es un protocolo de nivel de
aplicación entre una Smart Card y una aplicación de host. Los mensajes APDU de la
ISO 7816-4 poseen dos estructuras: una usada por la aplicación de host en el lado del
CAD para mandar órdenes a la tarjeta y otra estructura usada por la tarjeta para enviar
las respuestas a la aplicación del host. Una APDU de comando (C-APDU) va siempre
emparejada con una de respuesta (R-APDU). La posible estructura general de un
comando y de una respuesta se puede ver en la Tabla 3.1 y la Tabla 3.2.
CLA
INS
P1
P2
Lc
Data
Field
Le
Tabla 3.1: APDU de comando
Data Field
SW1
SW2
Tabla 3.2: APDU de respuesta
En las tablas 3.3 y 3.4 se detalla cada uno de los campos de una APDU de comando y
de respuesta respectivamente.
Campo
CLA
Longitud
1 byte
INS
1 byte
P1
P2
Lc
Data field
1 byte
1 byte
0-3 bytes
Lc bytes
Detalle
Clase de la instrucción. Este byte identifica la
categoría del comando. Puede contener cualquier
valor excepto “FF”.
Código de instrucción. Especifica la instrucción
del comando.
Primer parámetro de la instrucción.
Segundo parámetro de la instrucción.
Especifica la longitud del campo de datos en bytes.
Campo de datos. Este campo contiene los datos
adicionales para llevar a cabo la instrucción. Es
21 Sistema de Mental Póker basado en Smart Cards
Le
0-3 bytes
Jose Luis Membrive Ortega
opcional.
Especifica el número de bytes esperados en la
respuesta de la tarjeta.
Tabla 3.3: Campos APDU de comando
Campo
Data field
Longitud
Le bytes
SW1
SW2
1 byte
1 byte
Detalle
Campo de datos. Este campo contiene los datos de
respuesta de la tarjeta. Es opcional.
Primer byte de la palabra de estado.
Segundo byte de la palabra de estado.
Tabla 3.4: Campos APDU de respuesta
La palabra de estado indica el estado del procesamiento de la instrucción por parte de la
Smart Card. A continuación se muestra una tabla con el significado de los códigos de
retorno posibles especificados en el estándar IE 7816-4, Tabla 3.5.
Procesamiento
SW1-SW2
9000
Detalle
La longitus de los datos de la R-APDU coincide con Le de CAPDU.
Normal
Advertencia
en el
procesamiento
Error en
ejecución
Error de
comprobación
61XX
62XX
SW2 especifica la longitud de datos que faltan para llegar a los
especificados en el campo Le de la C-APDU.
No se ha modificado el estado de la memoria no volatil.
63XX
64XX
Se ha modificado el estado de la memoria no volatil.
No se ha modificado el estado de la memoria no volatil.
65XX
Se ha modificado el estado de la memoria no volatil.
66XX
6700
Cuestiones relacionadas con la seguridad.
Error en la longitud de los campos de datos.
68XX
Funcion CLA no soportada.
69XX
Comando no autorizado.
6AXX
Parámetro P1-P2 incorrectos.
6B00
Parámetros P1-P2 incorrectos.
6CXX
Error en el campo Le.
6D00
Código de instrucción invalido o no compatible.
6E00
Clase no compatible.
6F00
Sin diagnóstico.
Tabla 3.5: Significado SW1-SW2
22 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Visto el significado de todos los campos, se distinguen 4 posibles casos, Tabla 3.6. La
distinción se basa en la existencia o no del campo de datos en la C-APDU o en la RAPDU.
C-APDU
R-APDU
Caso 1: CLA
INS
P1
P2
SW1 SW2
Caso 2: CLA
INS
P1
P2
Le
Caso 3: CLA
INS
P1
P2
Lc
Caso 4: CLA
INS
P1
P2
Lc
Data
field
Data
field
Data
field
SW1 SW2
SW1 SW2
Le
Data
field
SW1 SW2
Tabla 3.6: Casos C-APDU y R-APDU
3.3.4. El protocolo TPDU
Las APDU’s se trasmiten por el protocolo de transporte de nivel superior definido en la
norma ISO 7816-3 o ISO 14443 en el caso de tarjetas sin contacto. Las estructuras de
datos intercambiados por el CAD y la tarjeta utilizando el protocolo de transporte de
llaman unidades de transmisión de datos o TPDU.
Los dos protocolos de transporte más utilizados en los sistemas de tarjetas inteligentes
son el protocolo T=0, el protocolo T=1 y el protocolo T=CL. El T=0 está orientado a
bytes, lo que significa que la unidad más pequeña tratada y transmitida por el protocolo
es un solo byte. Por el contrario, el protocolo T=1 es orientado a bloque, es decir, un
bloque, que consiste en una secuencia de bytes, es la unidad más pequeña de datos que
pueden transmitirse entre una tarjeta y un host. El protocolo T=CL se describe en la
parte 4 del estándar ISO 14443, donde especifica los bloques de datos y el mecanismo
de intercambio.
3.3.5. ATR
Inmediatamente después del encendido, la Smart Card envía un mensaje “answer to
reset” (ATR) al host. Esto le transfiere al host parámetros requeridos por la tarjeta para
establecer un camino de comunicación de datos. El ATR está compuesto por más de 33
bytes. Contiene parámetros de transmisión, como el protocolo de transporte soportado
por la tarjeta (usualmente el T=0, el T=1 o T=CL); la tasa de transmisión; parámetros de
hardware de la tarjeta (como el número de serie del chip y el número de la versión) y
otra información que el host necesita conocer acerca de la tarjeta.
23 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
3.3.6. Sistemas de Smart Card
Los sistemas de Smart Card constan de dos partes: el software host, residente en un
ordenador conectado al lector o en un terminal y el instalado en la tarjeta inteligente. Un
ejemplo se puede ver en la Figura 3.7.
Figura 3.7: Ejemplo de sistema de Smart Card
El software host reconoce un tipo específico de Smart Card y arbitra la comunicación
entre las dos partes que conforman el sistema, la aplicación de usuario y la tarjeta. La
aplicación del host, que suele estar escrito en lenguaje de alto nivel como Java,
implementa funciones para manejar un conjunto de APDU’s intercambiadas con la
tarjeta.
El software de la tarjeta controla la gestión de la memoria, funciones para operar con
datos contenidos en la tarjeta o recibidos en las APDU’s y comunicación con el host. La
aplicación de la tarjeta puede ser implementada en el lenguaje ensamblador del
microprocesador de la Smart Card o en un lenguaje de alto nivel que pueda ser
interpretado por el microprocesador.
Java Card ofrece una plataforma única en la que las aplicaciones del lado de la tarjeta se
pueden escribir en Java y se pueden ejecutar en cualquier Smart Card que soporte el
entorno de ejecución Java Card.
3.4. Estándares y especificaciones de Smart Card
Para asegurar que las Smart Cards, CAD’s y aplicaciones desarrolladas desarrolladas y
fabricadas por diferentes vendedores puedan trabajar juntos se han definido una serie de
estándares y especificaciones. A continuación se enumeran los estándares y
especificaciones más importantes para el desarrollo de sistemas de Smart Cards.
3.4.1. Estándar ISO/IEC 7816
La ISO 7816, es el estándar más importante relacionado con las tarjetas inteligentes,
gestionado conjuntamente por la Organización Internacional de Normalización (ISO) y
Comisión Electrotécnica Internacional (IEC). La ISO 7816 comprende varios aspectos
de las Smart Cards, entre ellas, tres son específicas para Smart Cards de contacto [7]:
24 Sistema de Mental Póker basado en Smart Cards
•
•
•
Jose Luis Membrive Ortega
Parte 1: Especifica las características físicas de las tarjetas con contactos.
Aunque existen más tipos, dos son los más utilizados actualmente:
o ID1: Tamaño de las tarjetas de crédito.
o ID00: Tamaño de las tarjetas SIM.
Parte 2: Especifica las dimensiones y ubicación de los contactos de la tarjeta.
Parte 3: Especifica la interfaz eléctrica y protocolos de transmisión para las
tarjetas asíncronas.
Todas las otras partes del estándar son independientes de la tecnología de interfaz
física. Se aplican a las tarjetas de acceso por contactos y por radiofrecuencia.
•
•
Parte 4: Especifica la organización, la seguridad y los comandos para el
intercambio de datos.
Parte 15: Especifica la aplicación de cifrado de información.
3.4.2. Estándar ISO/IEC 14443
Como la ISO 7816, la ISO/IEC 14443 es un estándar gestionado conjuntamente por la
Organización Internacional de Normalización (ISO) y Comisión Electrotécnica
Internacional (IEC).
Este estándar define una tarjeta de proximidad utilizada para identificación y pago con
las características físicas descritas en el tipo ID1 del estándar ISO 7816.
El estándar ISO 14443 consta de 4 partes y definen dos tipos de tarjetas: Tipo A y Tipo
B.
Las principales diferencias entre estos dos tipos son los tipos de modulación y el
protocolo de iniciación de los procedimientos. Los dos tipos de tarjetas utilizan el
mismo protocolo de transporte descrito en la cuarta parte, protocolo T=CL.
25 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
4. Tecnología Java Card
La tecnología Java Card permite que programas escritos en el lenguaje de programación
Java se ejecuten en Smart Cards y otros dispositivos pequeños con recursos limitados.
Los desarrolladores pueden construir, probar e implementar programas utilizando las
herramientas del entorno de desarrollo estándar y, a continuación, convertirlos a un
formato que puede ser instalado en un dispositivo que soporte la tecnología Java Card.
Las aplicaciones escritas para la plataforma Java Card se conocen como applets, o más
específicamente applets de Java Card.
La especificación de la plataforma Java Card, concretamente de la versión 2.2.1
utilizada para el desarrollo de este proyecto, se compone de tres partes que se pueden
consultar en [10]:
•
•
•
El Java Card Virtual Machine (JCVM) Specification: define un subconjunto del
lenguaje de programación Java y una definición de la máquina virtual para las
aplicaciones Smart Card.
El Java Card Runtime Environment (JCRE) Specification: describe con
precisión el comportamiento del entorno Java Card, incluyendo la gestión de
memoria, la gestión de applets, y otras características de la ejecución.
El Java Card Application Programming Interface (API) Specification: describe
un conjunto paquetes y clases de Java para programar applets.
4.1. Arquitectura
Mientras que la tecnología Java Card permite a los programas escritos en el lenguaje de
programación Java funcionar en las tarjetas inteligentes, estos pequeños dispositivos
están lejos de poder soportar todas las funcionalidades de la plataforma Java debido a
sus limitaciones tanto en memoria como en capacidad de procesamiento. Por este
motivo, la plataforma Java Card soporta solo un subconjunto de las características de
dicho lenguaje
preservando las posibilidades de orientación a objetos. Las
características soportadas y no soportadas se detallan en la Tabla 4.1 [11].
Características soportadas
Tipos de datos primitivos: boolean,
byte, short.
Características no soportadas
Tipos de datos primitivos: long, double,
float, char.
Arrays de una dimensión
Arrays multidimensionales.
Paquetes, clases, interfaces y
excepciones de Java.
Carga dinámica de clases.
Garbage Collector (Recolector de basura).
Orientación a objetos.
Serialización y clonación de objetos.
Tabla 4.1: Características de Java soportadas y no soportadas.
26 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
La característica más importante del entorno de ejecución de Java Card es que provee
una clara separación entre el sistema de la Smart Card y las aplicaciones, ocultando así
la complejidad subyacente y los detalles del sistema Smart Card.
La arquitectura básica de una tarjeta JavaCard [Figura 4.1] contiene varios
componentes software que se describen en la Tabla 4.2 [12].
Componente software
Descripción
Card SO
El sistema operativo de tarjetas (OS)
Native Services
Llevan a cabo la I / O, cifrado, y la
asignación de la memoria de la tarjeta.
Java Card Virtual Machine (JCVM)
La máquina virtual de Java Card
establece la ejecución de bytecode y
soporte de lenguaje Java, incluyendo el
manejo de excepciones.
Framework
El conjunto de clases que implementan la
API. Esto incluye el envío de APDUs, la
selección del applet, la gestión de la
atomicidad y la instalación del applet.
API
La API define la convención de llamadas
para que el applet acceda al sistema
operativo y otros servicios.
Java Card runtime environment
(JCRE)
El entorno Java Card en tiempo de
ejecución incluye la máquina virtual de
Java Card (JCVM), el framework y la
API.
Industry-Specific Extensions
Clases añadidas que extienden los applets
de la tarjeta.
Applet4
Aplicaciones escritas en lenguaje Java
para usar en Smart Cards.
Tabla 4.2: Componentes software tarjeta Java Card
El componente applet se verá con más detalle en la sección 4.2. 4
27 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Figura 4.1: Arquitectura Java Card
4.1.1. Java Card Virtual Machine (JCVM)
La máquina virtual de Java Card (JCVM) se divide en dos partes, una que se ejecuta en
la Smart Card y otra que se ejecuta en el PC o estación de trabajo como muestra la
Figura 4.2.
La parte externa a la tarjeta se conoce como la herramienta Java Card Converter y su
función principal es la de cargar, verificar y convertir las clases Java (.class) a un
formato binario (.cap) para su ejecución en la Smart Card.
El Java Card Interpreter, el componente que corre dentro de la tarjeta inteligente, se
encarga de interpretar las instrucciones bytecode contenidas en el archivo CAP.
Figura 4.2: Máquina virtual Java Card
El desarrollo de un applet de Java Card pasa por los siguientes procesos:
28 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
1. Un desarrollador escribe una o más clases de Java y compila el código fuente
con un compilador de Java, generando los archivos .class.
2. El applet se ejecuta, prueba y depura en una estación de trabajo mediante
herramientas de simulación para emular el entorno del dispositivo.
3. Una vez el applet está listo para ser descargado en la tarjeta inteligente, los
archivos generados en el punto 1 se convierten en un (CAP) mediante la
herramienta Java Card Converter.
4. Después de la conversión, el archivo CAP se copia en una terminal o lector
conectado al PC que seguidamente lo transmite a la tarjeta mediante una
herramienta de instalación.
5. Un programa de instalación en la Smart Card recibe el contenido del archivo y
prepara el archivo para que sea ejecutado por el Java Card Interpreter.
Figura 4.3: Desarrollo de un applet Java Card
4.1.1.1.
Java Card Converter y Java Card Interpreter
Como ya hemos indicado en el apartado anterior, la función principal del Java Card
Converter es la de convertir las referencias simbólicas a clases, métodos y campos a una
forma más compacta que se pueda manejar de manera más eficiente en la tarjeta.
Además, durante la conversión, la máquina virtual que se ejecuta fuera de la tarjeta
realiza otras tareas [4]:
• Verifica que las imágenes de las clases cargadas sean correctas.
• Busca posibles violaciones del subconjunto de lenguaje Java.
• Lleva a cabo la inicialización de variables estáticas.
Por otro lado, el Java Card Interpreter también se encarga del control del alojamiento
en memoria y la creación de objetos. Además tiene un papel importante en el control de
seguridad durante la ejecución.
29 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
4.1.2. Java Card runtime environment (JCRE)
El entorno de ejecución Java Card (JCRE) consiste en la máquina virtual de Java Card,
las clases Java Card API, y las extensiones específicas de la industria.
El JCRE es básicamente el sistema operativo de la tarjeta inteligente, sus
responsabilidades incluyen la gestión de los recursos de tarjetas, la comunicación E / S
entre el host y el applet, la gestión del ciclo de vida del applet, y la ejecución del modelo
de seguridad Java Card.
El JCRE se inicializa en el instante que se introduce la Smart Card en el CAD. Durante
este proceso, que solo sucede una vez en el ciclo de vida de la Smart Card, el entorno
Java Card inicializa la máquina virtual y crea objetos para la prestación de servicios
JCRE y la gestión de los applets.
Durante el período comprendido entre el momento en que la tarjeta se inserta en el
CAD hasta el momento en el que retira, el entorno de ejecución Java Card funciona
como una típica Smart Card que soporta la comunicación con una aplicación host
mediante APDUs.
Después de la inicialización, el JCRE entra en un bucle a la espera de comandos APDU
procedentes del host. Cuando llega un comando, el entorno de ejecución selecciona un
applet para que se ejecute o reenvía el comando hacia el applet seleccionado en un
comando anterior, que toma el control y procesa el comando APDU.
Cuando el applet termina de procesar los datos, envía una respuesta a la aplicación host
con un APDU de respuesta y un mensaje de control de entrega al JCRE.
4.1.2.1.
Características del entorno de ejecución Java Card
Además de soportar el modelo de comunicación de Smart Card, el JCRE admite tres
características adicionales en tiempo de ejecución [4]:
•
Objetos persistentes y transitorios: Por defecto, los objetos Java Card son
persistentes, es decir, se crean en la EEPROM y conservan su estado incluso al
desenchufar la fuente de alimentación.
Por razones de seguridad o rendimiento, los applets pueden crear objetos en la
memoria RAM. Estos objetos, llamados transitorios, solo mantendrán su estado
mientras la tarjeta esté conectada a la fuente de alimentación.
•
Operaciones y transacciones Atómicas: La máquina virtual Java Card
garantiza que cada operación de escritura en un solo campo de un objeto
persistente es atómica, es decir, garantiza que en un intento de escritura el
campo sea actualizado con su nuevo valor o en su defecto, se restaure su valor
anterior.
Además, el JCRE proporciona APIs de transacciones, que permiten al
desarrollador incluir varias operaciones de escritura en una transacción. De este
30 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
modo, si todas las actualizaciones en esa transacción no se completan con éxito,
el estado de todas las variables afectadas se restauran al estado anterior.
•
Applet firewall y mecanismos de compartición: en una Smart Card habilitada
para la tecnología Java Card pueden coexistir de forma segura múltiples
aplicaciones de diferentes proveedores. JCRE proporciona el mecanismo applet
firewall, que aísla los applets de los demás, de esta forma, un applet no tiene
ningún efecto sobre las otras aplicaciones Java Card instalados en la tarjeta.
Por otro lado, la máquina virtual permite compartir datos entre applets a través
de mecanismos de distribución segura.
4.1.3. Java Card Application Programming Interface (API de Java Card)
La API de Java Card5 consiste en un conjunto de clases personalizadas para la
programación de aplicaciones para tarjetas inteligentes de acuerdo con el modelo ISO
7816. Estas clases están divididas en una serie de paquetes que se describen en la Tabla
4.3 [13].
Paquete
Descripción
java.io
Define una clase de excepción, la clase
IOException base, para completar la
jerarquía de excepciones RMI.
Java.lang
Define las clases Object, Throwable.
También define una serie de clases para
las excepciones relacionadas con la
máquina virtual.
El
paquete
proporciona
soporte
fundamental del lenguaje Java. La clase
Object define una raíz de la jerarquía de
clases Java Card, y la clase Throwable
determina una clase padre común para
todas las excepciones.
Las clases para las excepciones garantizan
conocer la semántica de lo ocurrido
cuando se produce un error debido a una
violación del lenguaje Java. Por ejemplo,
la máquina virtual de Java Card lanza una
expcepción NullPointerException cuando
se intenta tener acceso a una referencia
nulla.
En este documento se hace referencia a la versión 2.2.1, que ha sido la utilizada para la implementación del applet. 5
31 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Java.rmi
Define la interfaz de control remoto y la
clase RemoteException. Apoyo a la
invocación de métodos remotos (RMI) se
incluye para simplificar la integración con
dispositivos que utilizan la tecnología
Java Card.
javaCard.framework
Define
las
interfaces,
clases,
y
excepciones que componen el núcleo de
Java
Card
Framework
para
la
funcionalidad básica de un applet.
Lo más destacado es que se define una
base de la clase Applet que proporciona
un marco para la ejecución de la
aplicación Java Card y la interacción con
el JCRE durante la vida del applet. De
esta manera, cualquier applet desarrollado
por el usuario debe extender de la clase
base Applet y reemplazar los métodos
para implementar la funcionalidad de la
aplicación del desarrollador. Esto se verá
con más detalle en la siguiente sección
4.2.
Además, el paquete detalla conceptos
importantes como métodos para tratar los
comandos APDU (clase APDU), métodos
para controlar la ejecución del applet,
gestión de recursos y transacciones (clase
JCSystem).
JavaCard.security
Define las clases e interfaces para el
marco de seguridad de Java Card. La
especificación Java Card define una
robusta API de seguridad que incluye
varios tipos de claves públicas y privadas.
javaCardx.crypto
Es un paquete de extensión que define la
interfaz KeyEncryption y la clase Cypher.
KeyEncryption se utiliza para descifrar
una clave de entrada utilizada por los
algoritmos de cifrado. Cypher es la clase
base abstracta que todos los sistemas de
32 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
cifrado debe implementar.
Tabla 4.3: Java Card API
4.2. Applet Java Card
Un applet es una aplicación de Smart Card escrita en el lenguaje de programación Java
y conforme a una serie de convenciones para poder ejecutarse en el entorno de
programación Java Card (JCRE) [4]. Un applet ejecutándose en el JCRE es una
instancia de la clase Applet del paquete javaCard.framework.
La plataforma Java Card soporta un entorno multiaplicación, es decir, pueden coexistir
varios applets instalados en la misma tarjeta. Para ello, cada instancia de applet se
identifica con un AID6.
4.2.1. Escribir un applet JavaCard
Cada aplicación Java Card se implementa mediante la creación de una clase que
extiende a la clase base Applet del paquete javaCard.framework.
El JCRE invoca el método install( ), select( ), deselect( ) o process( ) definidos en dicha
superclase cuando se quiere instalar seleccionar o anular la selección de un applet o
pedir el applet para procesar un comando de entrada APDU.
La estructura básica de un applet Java Card se muestra en la Figura 4.4.
Figura 4.4: Estructura básica de un applet Java Card
Application Identifier. En la ISO 7816-5 se define como una secuencia de entre 5 y 16 bytes de longitud
[5]. 6
33 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
4.2.2. El Constructor
El constructor se llama desde el método install( ) y se deben crear los objetos necesarios
durante la ejecución de la aplicación. No es estrictamente necesario crear todos los
objetos, pero es una buena práctica de programación, ya que de esta manera se garantiza
que no se producirán errores debido a la falta de memoria. 4.2.3. El método install ( )
El JCRE invoca el método install() durante el proceso de instalación del applet. Este
método debe ser implementado para crear la instancia de la aplicación utilizando el
operador new seguido por una llamada al constructor del applet.
Este método debe llamar directa o indirectamente al método register ( ) para completar
la instalación.
4.2.4. El método select ( )
El método select() es invocado por el JCRE cuando recibe una APDU SELECT cuyos
datos coinciden con el AID del applet.
El comando APDU SELECT está estandarizado en la plataforma Java Card, su formato
se muestra en la Tabla 4.4.
CLA
INS
P1
P2
LC
Campo Datos
0x00
0xA4
0x04
0x00
Longitud
del AID
Bytes del AID
Tabla 4.4: Comando SELECT
Cuando se recibe una APDU, el JCRE decodifica su cabecera (CLA, INS, P1 y P2) para
determinar si es un comando de selección de un applet, si es así y ya existe un applet
seleccionado llama a su método deselect ( ) y ejecuta el método select ( ) del nuevo
applet.
Por otro lado, si la APDU no es para la selección de un applet, el JCRE se la entrega al
applet actual para que la procese.
34 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
El proceso completo de la SELECT APDU se muestra en la Figura 4.5.
Figura 4.5: Proceso SELECT
4.2.5. El método deselect ( )
Como muestra la Figura 4.5 el JCRE invoca al método deselect () antes de seleccionar
un nuevo applet.
Este método permite al applet llevar a cabo labores de limpieza y poniéndose en un
estado de suspensión para que se ejecute otro applet de la tarjeta.
4.2.6. El método process ( )
Una vez que un applet se ha seleccionado, está listo para recibir comandos APDU. Cada
vez que el JCRE recibe un comando APDU a través del CAD, llama al método
process() pasándole el comando APDU como argumento.
En este método se debe implementar como un despachador para que cuando reciba el
comando APDU decodifique la cabecera y llame a un método de servicio para que
ejecute la función requerida y genere y devuelva la APDU de respuesta.
35 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
5. Descripción e implementación del Sistema de mental póker
En este capítulo se presenta el sistema de mental póker, la función del cual es la de
permitir jugar al póker de forma remota a la vez que ofrece seguridad para todos los
actores que participan en el sistema.
Para conseguir esto se propone un sistema basado en la utilización de Smart Cards.
El software del sistema está dividido en 3 partes: el applet de Java contenido en el
Servidor, el applet de Java que corre en el ordenador de cada jugador y el que se ejecuta
dentro de la Smart Card, el applet JavaCard.
5.1. Arquitectura
Figura 5.1: Arquitectura del sistema
Como se detalla en la introducción de este documento, el casino es el encargado de
generar todos los eventos del juego: barajar, repartir, control del crédito etc.
En este sistema el encargado de realizar todas estas acciones es la Smart Card de cada
uno de los jugadores.
A continuación se describe cada parte de la arquitectura del sistema mostrado en la
Figura 5.1:
Regulador: Aunque no aparece en el esquema 5.1 es el encargado de expedir las
tarjetas inteligentes.
En una gran mayoría de los países, los juegos en línea no están regulados. Esto da lugar
a un vacío legal que deriva en la falta de protección para los jugadores y casinos on-line.
Como se describe en [3] este sistema propone que el regulador sea el gobierno o una
autoridad pública.
36 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Casino (G): Su función principal es la de gestionar las comunicaciones entre los
diferentes jugadores de la partida. Aunque también realiza algunas comprobaciones
siempre con mensajes con los datos cifrados y firmados. La implementación se ha
realizado mediante un applet escrito en el lenguaje Java que se comunica con el applet
residente en el ordenador de los jugadores.
Jugador (Pi): La parte del jugador está formada por PC, CAD y Smart Card. El PC
debe contener el applet Java cliente que se encarga de la comunicación con el Casino
mediante sockets y enviar y recibir datos de la Smart Card mediante el CAD. Por último
la tarjeta debe contener el applet Java Card desarrollado que contiene las instrucciones
necesarias para realizar la partida.
Para la implementación del sistema se han utilizado dos lectores OMNIKEY 5321 y dos
Java Cards, una NXP JCOP 41 y una NXP JCOP 31, información sobre estos productos
se puede consultar en [8].
Protocolos: Se describe un protocolo para cada uno de los pasos requeridos para
realizar una partida de póker.
5.2. Los Protocolos
En esta sección se describen los protocolos propuestos en [3]. También se exponen
diferentes aspectos de la implementación de dichos protocolos mediante la aplicación
del cliente y los applets del jugador.
En referencia a la descripción hay que tener en cuenta las siguientes anotaciones
utilizadas en los protocolos y procedimientos [3]:
•
•
•
•
•
Pentity, Sentity: par de claves asimétricas de la entidad7, donde Pentity es la clave
pública y Sentity es la clave privada.
Sentity [m]: la firma digital del mensaje m por la entidad, donde la firma digital
significa calcular el valor hash del mensaje m con una función hash libre de
colisiones unidireccional y el cifrado de este valor hash con la clave privada de
la entidad.
Eentity (m): El cifrado del mensaje m con la clave pública de la entidad.
H (m): el valor hash del mensaje m usando una función hash libre de colisiones
unidireccional.
m1 | | m2: La concatenación de los mensajes m1 y m2.
Por otro lado, algunas consideraciones previas sobre la implementación que hay que
tener en cuenta se presentan a continuación.
•
•
Todas las APDUs de comando enviadas a la Smart Card tienen el campo
CLA=00 y el campo INS=AA. La tarjeta identifica cada instrucción mediante el
primer parámetro P1 y en algún caso también con P2.
El término clave pública se refiere solo a los 128 bytes del módulo de la clave,
ya que el exponente se supone global para todas las claves públicas, 01 00 01.
De esta manera se solucionan algunos problemas de limitación en la longitud del
Se refiere tanto al casino como a los diferentes jugadores. 7
37 Sistema de Mental Póker basado en Smart Cards
•
•
•
Jose Luis Membrive Ortega
campo Datos de las APDUs enviadas.
El criptosistema de clave pública utilizado es RSA [6].
Los datos expuestos en la construcción de las diferentes APDUs se presentan en
hexadecimal, un conversor a decimal se puede consultar en [9].
Debido a la dificultad de desarrollar un sistema de certificados para consultar la
clave pública en los casos necesarios durante los siguientes protocolos se ha
optado por no implementar los certificados y enviar la clave pública
directamente en los protocolos que la han requerido.
5.2.1. Registro del Jugador
Un jugador Pi puede jugar sólo si está registrado. En el proceso de registro, el jugador
proporciona su información. Esta información debe ser fuertemente verificada, a fin de
garantizar que los jugadores registrados están legalmente autorizados a jugar.
No obstante, llevar a cabo dicha verificación en la red es un problema complejo.
Los gobiernos de varios países están promoviendo la distribución de identificadores
electrónicos basados en Smart Card. Básicamente, estos identificadores son tarjetas
inteligentes que contienen un par de claves certificadas por el gobierno. La clave
privada nunca sale de la Smart Card, de modo que se logra un alto nivel de seguridad.
5.2.1.1.
Descripción
En [3]se propone utilizar estos identificadores electrónicos en nuestro sistema de juego.
El gobierno o autoridad gubernamental que regula el juego on-line en su territorio
realiza la expedición de los identificadores incluyendo el software del sistema de mental
póker.
La Smart Card contiene los siguientes datos sobre el jugador:
Ipi: identificador del jugador. En estos protocolos, vamos a utilizar como
identificador el valor hash del certificado de clave pública del jugador.
Certi: certificado digital de la clave pública de Pi.
PPi, SPi: Claves pública y privada del jugador Pi.
CPi: Crédito del jugador Pi, inicialmente a 0.
B: datos de la tarjeta de crédito del jugador Pi.
5.2.1.2.
Implementación
En la implementación, la Smart Card no contiene los datos Ipi y Certi.
Debido a la no utilización de certificados, justo después de la conexión entre el Jugador
y Casino se realiza un procedimiento en el que G (Casino) envía su clave pública a Pi
38 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
(Jugador i) para que la SC (Smart Card) pueda realizar las operaciones descritas en los
siguientes puntos.
De igual forma, la Smart Card envía, a través del jugador, su clave pública. El
intercambio de paquetes se describe en la Figura 5.2.
Procedimiento 0.1
m1 C-­‐APDU1 R-­‐APDU1 C-­‐APDU2 R-­‐APDU2 m2 Figura 5.2: Procedimiento 0.1
m1: Contiene la clave pública del Casino.
C-APDU1:
P1: 01
P2: 00
Lc: 80
Datos
Tabla 5.1: Procedimiento 0.1. C-APDU1
El campo datos contiene un array de 128 bytes de longitud, como indica el campo Lc,
que corresponde a la clave pública del Casino.
R-APDU1 esperado:
SW1: 90
SW2: 00
Tabla 5.2: Procedimiento 0.1. R-APDU1
Contiene el estado del tratamiento de los datos recibidos en la C-APDU1, como se vio
en el apartado 3.4.3 la palabra de estado esperada es ‘9000’.
C-APDU2:
P1: 30
P2: 00
Lc: 00
Le:80
Tabla 5.3: Procedimiento 0.1. C-APDU2
Contiene la instrucción para pedir la clave pública residente en la tarjeta. No contiene
datos.
39 Sistema de Mental Póker basado en Smart Cards
R-APDU2:
Datos
Jose Luis Membrive Ortega
SW1: 90
SW2: 00
Tabla 5.4: Procedimiento 0.1. R-APDU1
m2: Contiene la llave pública del Jugador.
5.2.2. Aumento / Disminución de crédito
El jugador Pi desea depositar dinero en su cuenta del casino para poder jugar.
Alternativamente, puede estar interesado en la retirada de dinero. G denota el casino online y V indica el importe para depositar o retirar (según si es un valor positivo o
negativo). El aumento o disminución del crédito del jugador se realiza con el Protocolo
1.
5.2.2.1.
Descripción
Protocolo 1
1. Pi ejecuta el procedimiento 1 con parámetros CertG y V en la Smart Card para
aumentar o disminuir su crédito y obtiene EG(A) y SPi [EG(A)].
2. Pi envía EG(A) y SPi [EG(A)] a G.
3. G hace:
(a) verifica la firma SPi [EG(A)].
(b) Descifra EG(A) utilizando la clave privada del casino SG para obtener V y B.
(c) Verifica el depósito/retirada de los datos V y B.
(d) Actualiza el crédito del jugador Pi , C’Pi = CPi + V
(e) Calcula un nuevo recibo RC para el nuevo crédito, RC = SG[Ipi || C’Pi ].
(f ) Cifra RC y C’Pi con la clave pública de Pi para obtener EPi (C’Pi ,RC).
(g) Envía EPi (C’Pi ,RC) a Pi.
4. Pi verifica que su crédito ha sido actualizado mediante la ejecución del
Procedimiento 2 en la Smart Card.
Procedimiento 1 [CertG, V]
1. Obtiene un valor r al azar.
2. Recupera los datos B de la tarjeta de crédito del jugador (almacenados
en la Smart Card)
40 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
3. Calcula el identificador de la operación de actualización de crédito
A=r||V||B.
4. Cifra A usando la clave pública de G (extraída de CertG) para obtener
EG(A)
5. Firma EG(A) con la clave privada del jugador SPi para obtener
SPi[EG(A)].
6. Devuelve EG(A) y SPi [EG(A)].
Procedimiento 2 [EPi (C’Pi , RC)]
1. Descifra EPi (C’Pi , RC) usando la clave privada del jugador SPi para
obtener C’Pi y RC
2. Verifica la firma digital en la recepción RC.
3. Revisa con el recibo que el crédito C’Pi es el correcto.
5.2.2.2.
Implementación
Como se indica en el apartado 5.2.1.1 el crédito inicial del jugador CPi es 0, pero
considerando la posibilidad de anteriores ingresos o ganancias en la partida, antes de
iniciarse el siguiente protocolo, el jugador y el Casino necesitan saber el crédito
disponible.
En la siguiente figura se describe la comunicación necesaria para ello.
C-­‐APDU1 R-­‐APDU1 m1 Figura 5.3: Procedimiento 0.2
C-APDU1:
P1: 0C
P2: 00
Lc: 00
Le: 84
Tabla 5.5: Procedimiento 0.1. C-APDU1
Contiene la instrucción para pedir el importe del crédito disponible. No contiene datos.
Datos
SW1: 90
Tabla 5.6: Procedimiento 0.1. R-APDU1
41 SW2: 00
Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
R-APDU1:
En el campo datos se presenta un array de 132 bytes de longitud que comprende el
crédito del Jugador CPi de 4 bytes y el crédito firmado con la clave privada contenida en
la tarjeta SPi[CPi] de 128 bytes de longitud.
El applet Java del cliente guarda y muestra el crédito CPi, seguidamente envía los 132
bytes al Casino mediante el mensaje m1.
m1: Contiene el crédito firmado y sin firmar del Jugador. El Casino verifica la firma
mediante la clave recibida en el procedimiento 0.1 y guarda su valor para
posteriormente enviar a los demás jugadores para que se determinen las cantidades
máximas de las apuestas.
Protocolo 1
C-­‐APDU1 R-­‐APDU1 m1 r1 C-­‐APDU2 R-­‐APDU2 Figura 5.4: Protocolo 1
C-APDU1:
P1: 01
P2: 00
Lc: 04
Datos
Le: FF
Tabla 5.7: Protocolo 1. C-APDU1
El campo datos contiene un array de 4 bytes de longitud correspondiente al importe del
ingreso o retirada indicado por el jugador.
La instrucción hace que se ejecute el procedimiento 1 expuesto en la descripción del
protocolo y esquematizado en la Figura 5.5 en el que se puede ver la longitud de cada
uno de los datos utilizados para construir el identificador de la operación.
42 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Figura 5.5: Procedimiento 1.
La falta de implementación de los certificados implica que hayamos tenido que hacer
una modificación en dicho procedimiento:
•
En el punto 4 la clave pública del casino se ha obtenido previamente ejecutando
el procedimiento 0.1 y no de CertG.
R-APDU1:
Datos
SW1: 90
SW2: 00
Tabla 5.8: Protocolo 1. R-APDU1
En el campo Datos reside la identificación de la operación cifrada por la Smart Card que
como se puede ver en el esquema del procedimiento 1 es de 256 bytes de longitud.
m1: Mediante dicho mensaje el applet Java del Cliente envía los datos recibidos en RAPDU1 al applet Java del Servidor.
Una vez recibido m1 el Casino hace lo explicado en la descripción del protocolo con
las siguientes consideraciones:
El recibo RC es el crédito actualizado del jugador C’Pi cifrado con la clave pública del
Jugador Pi obtenida en el procedimiento 0.1 y no la concatenación del identificador del
jugador y el crédito actualizado. Esto se debe a la falta del identificador del jugador, por
la necesidad de construir una variable recibo diferente al crédito actualizado se ha
optado por esta solución. Por tanto el Casino crea una variable con RC y SG[RC]. De
esta manera no se pierde la confidencialidad, ya que los datos viajan cifrados y solo el
propietario de la clave privada puede extraer el valor de C’Pi. Tampoco se pierden las
propiedades de autenticación e integridad, ya quetambién se envían los datos firmados
para dichas comprobaciones.
r1: El Jugador recibe RC y SG[RC] y lo envía directamente a la Smart Card mediante CAPDU2.
C-APDU2:
P1: 0B
P2: 00
Lc: FF
Tabla 5.9: Protocolo 1. C-APDU2
43 Datos
Le: 04
Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Como se comenta en la descripción de la respuesta r1, mediante esta APDU se envía el
recibo de la operación y se da la instrucción a la tarjeta para que realice las
comprobaciones pertinentes descritas en el procedimiento 2.
Debido a las modificaciones en el tratamiento de los datos por parte del Casino, el
procedimiento 2 queda de la siguiente manera:
Procedimiento 2 [RC, SG(RC)]
1. Verifica la firma digital en la recepción RC.
2. Descifra EPi(C’Pi) usando la clave privada del jugador SPi para
obtener el crédito actualizado.
R-APDU2:
Datos
SW1: 90
SW2: 00
Tabla 5.10: Protocolo 1. R-APDU2
Una vez la Smart Card ha hecho las comprobaciones envía R-APDU2 con el importe del
crédito actualizado C’Pi. Este es un cambio respecto al protocolo original necesario para
mostrar el crédito disponible actualizado al jugador mediante la interface de usuario.
5.2.3. Iniciar un juego
Una vez registrado el jugador, se puede iniciar una partida. Para empezar a jugar, el
casino on-line G y los jugadores utilizan el Protocolo 2.
5.2.3.1.
Descripción
Protocolo 2
1. G calcula un identificador de partida IP con Procedimiento 3.
2. G revela IP y SG[IP ] a todos los jugadores.
3. Si un jugador Pi desea entrar en la partida debe realizar los siguientes pasos:
(a) Crear una solicitud para entrar en la partida IP utilizando el Procedimiento 4,
que se ejecuta en la Smart Card, la salida será ρi = SPi [SG[IP ], IP ] y Certi.
(b) Enviar SPi [SG[IP ], IP ] y Certi a G.
4. Supongamos que n jugadores han solicitado su participación en la partida. G
genera un certificado para los participantes en la partida IP con los siguientes pasos:
(a) Firmar todas las solicitudes de los participantes en la partida, es decir, SG[ρ1,
. . . , ρn]
(b) Enviar SG[ρ1, . . . , ρn], {ρ1, . . . , ρn} y {Cert1, . . . , Certn} a los jugadores que
44 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
solicitaron participar.
5. Cada jugador que pidió participar verifica SG[ρ1, . . . , ρn],{ρ1, . . . , ρn} y {Cert1, . .
. , Certn} a través del procedimiento 5, que se ejecuta en la Smart Card.
Procedimiento 3
1. Genera un número aleatorio r.
2. Obtiene el tiempo actual T.
3. Obtiene el número de partidas anteriores N.
4. Calcula IP = r||T||N + 1..
5. Aumenta N una unidad.
6. Firma IP con la clave privada del casino para obtener SG[IP ].
7. Devuelve SG[IP ] y Certi.
Procedimiento 4
1. Verifica la firma SG[IP ].
2. Crea una solicitud para participar en la partida: SPi [SG[IP ], IP ].
3. Devuelve SPi [SG[IP ], IP].
Procedimiento 5 [SG[ρ1, . . . , ρn], {ρ1, . . . , ρn}, {Cert1, . . ., Certn}]
1. Para i = 1 hasta n hacer:
(a) Verifica si Certi ha sido emitido por la CA del regulador.
(b) Verifica ρi con Certi.
2. Verifica SG[ρ1, . . . , ρn].
3. Pide IP y los certificados {Cert1, . . . , Certn} si todas las verificaciones
son correctas.
4. Devuelve el resultado de la verificación (OK o NO OK).
5.2.3.2.
Implementación
Para explicar la implementación de este protocolo nos centraremos en una partida con
dos jugadores, aunque es extensible hasta 5.
45 Sistema de Mental Póker basado en Smart Cards
m1 Jose Luis Membrive Ortega
m1 C-­‐APDU1 C-­‐APDU1 R-­‐APDU1 R-­‐APDU1 r1 r1 m2 C-­‐APDU2 m2 C-­‐APDU2 C-­‐APDU3 C-­‐APDU3 R-­‐APDU3 r2 R-­‐APDU2 r2 Figura 5.6: Protocolo 2
m1: Contiene el identificador de la partida firmado y sin firmar generado por el Casino
mediante el procedimiento 3, IP y SG[IP ]. m1 es enviado a P1 y P2.
C-APDU1:
P1: 02
P2: 00
Lc: 84
Datos
Le: FF
Tabla 5.11: Protocolo 2. C-APDU1
El campo datos consiste en un array de 4 bytes de longitud correspondiente al
identificador de la partida y 128 bytes del identificador firmado por el casino con su
clave pública.
La Smart Card de cada uno de los jugadores, después de verificar la firma, genera una
solicitud de partida firmando los 132 bytes recibidos en C-APDU1.
R-APDU1:
Datos
SW1: 90
SW2: 00
Tabla 5.12: Protocolo 2. R-APDU1
En el campo Datos reside, además de la solicitud de partida, la clave pública del
jugador. En total el campo datos es de 256 bytes de longitud como indicaba la CAPDU1 en el campo Le.
Estos datos recibidos por el applet Java cliente son enviados automáticamente al
servidor en el mensaje m2.
Aunque en la descripción del procedimiento 5 no se contempla el envío de la clave
pública, es necesario enviarla para que los demás jugadores puedan realizar el
procedimiento 5. Con la implantación de los certificados no será necesario.
46 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
r1: Consiste en tres mensajes que se envían de forma independiente.
El primero consiste en el certificado creado por el Casino que está compuesto por las
solicitudes concatenadas de todos los participantes en la partida.
Seguidamente se envía un array de 256 bytes compuesto por la solicitud del
contrincante concatenado con su llave pública. En caso de haber 5 jugadores en la
partida se enviarían 4 mensajes, uno por cada contrincante.
Por último se envía un entero con el número de participantes.
C-APDU2:
P1: 03
P2: nAs
Lc: 80
Datos
Tabla 5.13: Protocolo 2. C-APDU2
C-APDU3:
P1: 04
P2: nA
Lc: FF
Datos
Le: 04
Tabla 5.14: Protocolo 2. C-APDU3
La siguiente comunicación entre el applet Java Card y el applet Java cliente se realiza
mediante dos APDU’s que hacen la función de una sola, C-APDU2 y C-APDU3. Esta
separación se debe a la limitación de longitud que tiene el campo de comandos, 256
bytes.
La primera APDU contiene los 128 bytes del certificado creado por el casino. Además
en el campo P2 contiene el número de adversarios que participan en la partida, nAs.
Esta instrucción no implica ningún tipo de procesado de datos por parte de la tarjeta,
únicamente guarda el contenido del campo Datos en una variable a la espera de recibir
la segunda APDU. La Smart Card responde con una R-APDU con la palabra de estado
“9000”.
El segundo comando, C-APDU3, contiene 256 bytes formado por la solicitud y la clave
del adversario nA. La referencia nA corresponde al número de adversario, este número
es asignado por el applet del cliente y es utilizado por la tarjeta para la creación de las
claves dentro de la tarjeta. Igual que en r1 este comando se enviará tantas veces como
adversarios participen en la partida, con la única diferencia de nA.
En cada C-APDU3 recibida la Smart Card verifica la firma de la solicitud del adversario
utilizando la llave pública y los datos sin firmar, SG[IP ], IP. Cuando recibe la última CAPDU3 verifica también la firma del casino utilizando la llave del casino, el certificado
recibido en la primera APDU y la concatenación de la propia solicitud con la de los
demás jugadores.
R-APDU3:
SW1: 99
SW2: 99
Tabla 5.15: Protocolo 2. R-APDU3.
SW1: 91
SW2: 02
Tabla 5.16: Protocolo 2. R-APDU3.
47 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
La respuesta contiene la palabra de estado de la verificación de las firmas realizadas, ya
sea la de los adversarios o la última del casino.
Existen dos posibles R-APDU3, que se pueden ver en las tablas 5.15 y 5.16. Estos bytes
de estado están definidos en el applet JavaCard y reconocidos por el applet del cliente:
9999: verificación correcta.
9102: verificación incorrecta.
•
•
r2: Contiene la palabra de estado devuelta por la tarjeta.
5.2.4. Colocar apuesta
Un jugador Pi coloca una apuesta en una partida IP utilizando el protocolo siguiente:
5.2.4.1.
Descripción
Protocolo 3 [IP ]
1. Pi hace una petición para colocar una apuesta ejecutando el Procedimiento 6
en la Smart Card i le devuelve (IA, IA*).
2. Pi envía (IA, IA*) a G.
3. El casino on-line G realiza los siguientes pasos:
(a) Verificar la firma digital IA* utilizando la clave pública de Pi.
(b) Verificar los datos de la apuesta: identificador de partida IP , cantidad
de apuesta V, concepto de apuesta K (sobre que se apostó).
(c) Verificar que Pi tiene el crédito suficiente, es decir, comprobar que el
CPi− V ≥ 0, donde CPi es el crédito del jugador.
(d) Si el jugador tiene suficiente crédito:
- Actualiza el crédito del jugador, C’Pi = CPi− V
- Calcula el recibo RA para la apuesta IA, RA = SG[IA*].
- Calcula el recibo RC para el resto de crédito, RC = SG[Ipi ||C’Pi].
- Envía C’Pi , RA y RC a Pi.
De lo contrario, si el jugador no tiene suficiente crédito la apuesta
no es aceptada.
4. Pi ejecuta el procedimiento 7 en la Smart Card para comprobar que el casino
48 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
on-line ha actualizado su crédito.
Procedimiento 6 [IP , V,K]
1. Obtiene un valor aleatorio r.
2. Calcula el identificador de la apuesta IA = {IP ||r||V ||K}, que es la
concatenación del identificador de partida, r, la cantidad de la apuesta y
el concepto de apuesta.
3. Firma IA con la clave privada del jugador SPi para obtener IA*=SPi[IA]
4. Devuelve (IA, IA*).
Procedimiento 7 [RA,RC, CPi ]
1. Verifica la firma digital en RA.
2. Verifica la firma digital en RC.
3. Comprueba que el crédito C’Pi es el correcto.
Al final de una partida, el casino paga sus ganancias al jugador Pi ejecutando el
siguiente protocolo:
Protocolo 4 [IA, IA*,RA]
1. G hace:
(a) Verifica la firma en el recibo RA y la apuesta IA*.
(b) Calcula las ganancias g de Pi en la partida IP con la apuesta IA.
(c) Actualiza el crédito del jugador C’Pi = CPi + g.
(d) Calcula el recibo del crédito disponible como RC, = SG[Ipi ||C’Pi ].
(e) Envía RC a Pi.
2. Pi verifica que ella recibió un pago mediante la ejecución del Procedimiento
8 en la Smart Card.
Procedimiento 8 [RC, CPi ]
1. Verifica la firma RC.
2. Comprueba que el nuevo crédito para C’Pi es correcto.
49 Sistema de Mental Póker basado en Smart Cards
5.2.4.2.
Jose Luis Membrive Ortega
Implementación
Protocolo 3
C-­‐APDU1 R-­‐APDU1 m1 r1 C-­‐APDU2 C-­‐APDU3 R-­‐APDU2 R-­‐APDU3 m2 Figura 5.7: Protocolo 3
C-APDU1:
P1: 1A
P2: 00
Lc: 05
Datos
Le: 9D
Tabla 5.17: Protocolo 3. C-APDU1
El campo datos contiene un array de 5 bytes de longitud correspondiente al importe de
la apuesta realizada por el jugador y un byte equivalente al concepto de la apuesta. A
parte de las apuestas realizadas durante el juego de importe a determinar por el usuario,
al iniciarse el juego cada jugador ejecuta este comando con el importe determinado por
el casino que equivale al valor de la ciega descrito en el capítulo 2.
El comando C-APDU1 ejecuta el procedimiento 6 que se presenta en la siguiente figura:
Figura 5.8: Procedimiento 6.
50 Sistema de Mental Póker basado en Smart Cards
R-APDU1:
Datos
Jose Luis Membrive Ortega
SW1: 90
SW2: 00
Tabla 5.18: Protocolo 3. R-APDU1
En el campo Datos reside el identificador de la apuesta y el identificador de la apuesta
firmada por el jugador, en total 157 bytes.
m1: contiene los datos extraídos del campo de datos del R-APDU1.
El Casino realiza el tratamiento de los datos detallado en la descripción del protocolo y
obtiene el recibo de la apuesta y el recibo del crédito.
r1: Está compuesto por dos mensajes. En la primera comunicación Servidor-Cliente se
envía el recibo de la apuesta. Seguidamente el servidor envía el recibo del crédito
concatenado con el crédito actualizado.
C-APDU2:
P1: 1B
P2: 00
Lc: 80
Datos
Tabla 5.19: Protocolo 3. C-APDU2
C-APDU3:
P1: 0B
P2: 00
Lc: 84
Datos
Le: 04
Tabla 5.20: Protocolo 3. C-APDU3
Mediante estos dos comandos se ejecuta se ejecuta en la Smart Card el procedimiento 7.
Los datos enviados por cada una de las instrucciones son los siguientes:
•
•
Campo Datos de C-APDU2: Contiene el recibo de la apuesta, 128 bytes de
longitud. Una vez recibida verifica la firma de RA=SG[IA*] utilizando la clave
pública del casino y IA*. La tarjeta responde con R-APDU2.
Campo Datos de C-APDU3: Contiene el recibo del crédito concatenado con el
crédito actualizado, 132 bytes. Estos datos son utilizados en el interior de la
tarjeta para guardar el nuevo crédito después de verificar los datos firmados.
R-APDU2:
SW1: 99
SW2: 99
Tabla 5.21: Protocolo 3. R-APDU2.
SW1: 91
SW2: 02
Tabla 5.22: Protocolo 3. R-APDU2.
Existen dos posibles respuestas por parte de la Smart Card, “9999” en caso de una
verificación satisfactoria o “9102” si la verificación es incorrecta.
R-APDU3:
Datos
SW1: 90
SW2: 00
Tabla 5.23: Protocolo 3. R-APDU3.
51 Sistema de Mental Póker basado en Smart Cards
SW1: 91
Jose Luis Membrive Ortega
SW2: 02
Tabla 5.24: Protocolo 3. R-APDU3.
En caso de una verificación positiva de la firma del casino la R-APDU3 contiene el
crédito actualizado, 4 bytes.
Por el contrario, la Smart Card devolverá la palabra de estado “9102”.
m2: Contiene el crédito actualizado del jugador para informar a los demás usuarios a
través del Servidor. Esto es necesario para determinar las siguientes acciones a realizar
por los adversarios descritos en el capítulo 2.
Protocolo 4
Una vez ha finalizado la partida, el jugador que gana recibe el importe del bote, que es
la suma de las ciegas y el dinero apostado durante el juego.
Para la implementación de este protocolo se han utilizado las instrucciones del
protocolo 2, pero a diferencia de dicho protocolo el importe del aumento de crédito lo
define el Casino.
5.2.5. Barajar y repartir las cartas
Una vez que el juego ha comenzado con el Protocolo 2, se inicia el siguiente paso,
barajar las cartas.
Basándose en los certificados de los participantes, se establece un orden entre los
jugadores: el primer jugador es el que tiene identificador menor. El primer jugador tiene
un papel singular. La Smart Card del primer jugador crea una permutación de 52
valores, es decir, esta Smart Card baraja las cartas.
Para cada uno de los jugadores restantes, la Smart Card del primer jugador calcula un
sobre digital que contiene las cartas de ese jugador. Este sobre digital sólo puede ser
abierto por la Smart Card del jugador correspondiente, que gestionará las cartas.
El método de barajar las cartas está descrito en el Protocolo 5.
5.2.5.1.
Descripción
Protocolo 5
1. Supongamos que los jugadores {P1, . . . ,Pn} y el casino G inician una partida con el
Protocolo 2.
2. Sobre la base de su certificado, cada Pi realiza las operaciones pertinentes.
3. P1 realiza:
(a) Ejecuta el Procedimiento 9 en la Smart Card y obtiene unas cartas barajadas.
52 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
(b) Para i = 2 hasta n hace:
- Ejecuta el Procedimiento 10 en la Smart Card para obtener las cartas
para Pi cifradas con la clave pública de Pi y firmado con la clave privada
de P1.
- Envía ξ y SP1 [ξi] al jugador Pi;
4. Cada jugador Pi para i ∈ {2, . . . , n} recupera sus cartas sin cifrar mediante la
ejecución del Procedimiento 11 dentro de su Smart Card.
El Procedimiento 9 es utilizado por el jugador P1 para remover la baraja y calcular las
cartas correspondientes de cada jugador.
Procedimiento 9
1. Genera una permutación π de 52 elementos;
2. Para i = 2 hasta n hacer:
(a) Calcular las cartas para Pi, Di = {di,1, . . . , di,10}, donde di,j = π(5 * (j −
1) + i) y j ∈ {1, . . . , 10};
3. Inicializar el contador k de cartas solicitadas y el contador l de cartas
descartadas para k = 0 y l = 0, respectivamente.
El siguiente procedimiento cifra las cartas del jugador con la clave pública del
jugador Pi y firma con la clave privada del jugador P1.
Procedimiento 10
1. Genera un número aleatorio R.
2. Cifra Di, IP y R con la clave pública PPi para obtener ξ = EPPi (IP, Di, R).
3. Firma ξ para obtener SP1 [ξ].
4. Devuelve ξ y SP1 [ξ].
Los jugadores descifran sus cartas ejecutando el Procedimiento 11 en sus Smart
Cards.
Procedimiento 11 [ξ, SP1[ξ]]
1. Verifica la firma SP1[ξ] en ξ utilizando el certificado Cert1.
2. Descifra ξ con la clave privada del jugador SPi y obtiene Di, IP y R.
3. verifica que IP es el identificador de la partida actual.
53 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
4. Almacena Di en la Smart Card.
5. Inicializa el contador k de cartas solicitadas y el contador l de cartas
descartadas para k = 0 y l = 0, respectivamente.
5.2.5.2.
Implementación
Protocolo 5
Como en la implementación del protocolo 2 nos centraremos en el intercambio de
mensajes realizados en una partida de dos jugadores.
m1 C-­‐APDU1 R-­‐APDU1 r1 m2 C-­‐APDU2 C-­‐APDU3 R-­‐APDU2 R-­‐APDU3 Figura 5.9: Protocolo 5.
m1: Mediante este mensaje el Casino informa al jugador que le toca repartir. En este
caso, P1.
En la descripción del protocolo se propone utilizar el certificado para elegir el primer
jugador en repartir, debido a que no se usan certificados en la implementación, se ha
optado por determinar el primer jugador en repartir como el primero en enviar la
solicitud de partida.
C-APDU1:
P1: 05
P2: 01
Lc: 00
Lc: FF
Tabla 5.25: Protocolo 5. C-APDU1
Esta instrucción sirve para obtener el deck8 de los adversarios mediante el
procedimiento 10. Por tanto, se envía una por cada adversario haya en la partida,
incrementando el valor de P2 en uno en cada envío.
El deck está compuesto por las 5 cartas con las que empieza el jugador y 5 cartas de reserva que corresponden al máximo de cartas que podrá descartar en el siguiente paso. 8
54 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Con la primera C-APDU1 enviada a la Smart Card también se ejecuta el procedimiento
9 para barajar las cartas. Esto difiere del protocolo explicado en la descripción, que
ejecuta cada uno de los procedimientos en diferentes procesos. Este cambio se ha
ejecutado para ahorrar dos intercambios de APDU’s sin ningún tipo de datos a
intercambiar.
Con la implementación del procedimiento 9 ha sido el más costoso de realizar debido a
las limitaciones del lenguaje Java Card. Después de diferentes pruebas se ha optado por
ir generando números aleatorios guardándolos en una array de 52 bytes, por cada
número aleatorio generado se comprueba que no esté dentro del rango [0x01,0x34], es
decir, que sea más pequeño que 0x34 y que no se haya guardado anteriormente en el
array. Con la primera comprobación hubo el problema de que el valor 0xFF era incluido
en el rango de valores, después de varias pruebas se pudo determinar la razón, que el
valor 0xFF corresponde en decimal al valor 256 o al valor -1, por lo que era incluido en
el array. Una vez detectado el problema se solucionó descartando dicho valor.
R-APDU1:
Datos
SW1: 90
SW2: 00
Tabla 5.26: Protocolo 5. R-APDU1
La información que reside en el campo datos de esta APDU se detalla en la siguiente
figura:
Figura 5.10: Procedimiento 9.
r1 y m2: En esta comunicación el Casino funciona como mero intermediario. Recibe
los datos que previamente el jugador ha obtenido de R-APDU1 a través de r1 y lo envía
al jugador correspondiente a través de m2.
Llegados a este punto se diferencian dos procesos independientes ejecutados
simultáneamente, uno por parte del jugador que ha repartido las cartas y otro realizado
por cada uno de los adversarios.
Proceso 1 (Jugador):
C-APDU2:
P1: 05
P2: 05
Lc: 00
Tabla 5.27: Protocolo 5. C-APDU2
55 Le: 05
Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Mediante esta instrucción el jugador pide sus 5 cartas para jugar. La Smart Card genera
el deck lo guarda en un array de 10 bytes de longitud y envía las 5 primeras cartas
mediante el campo de Datos de R-APDU2.
Proceso 2 (adversarios)
C-APDU3:
P1: 06
P2: 00
Lc: FF
Datos
Le: 05
Tabla 5.28: Protocolo 3. C-APDU3
Esta instrucción hace que se ejecute el procedimiento 11.
R-APDU3:
Datos
SW1: 90
SW2: 00
Tabla 5.29: Protocolo 5. R-APDU1
Después de extraer el deck, la Smart Card envía las 5 primeras cartas a través del campo
Datos de la R-APDU3.
5.2.6. Descartar y pedir las nuevas cartas
En el Procedimiento 13, si un usuario descarta una carta τj , se incrementa el contador l
y se elimina τj del conjunto τ.
La Smart Card del jugador mantiene un registro de cuántas cartas le ha dado al jugador,
el conjunto τ de cartas que están en las manos del jugador y el conjunto de cartas que
han sido descartadas. Cuando el jugador quiere pedir una carta, su Smart Card verifica
que puede hacerlo, es decir, que tiene menos de cinco cartas en la mano. En caso
afirmativo, la carta se le da al jugador y se añade al conjunto τ.
5.2.6.1.
Descripción
Procedimiento 12
Si k-l <5 entonces
1. Recupera la siguiente carta τk+1 = dk+1, donde dk+1 ∈ Di.
2. k = k + 1.
3. Añade τk+1al conjunto τ.
4. Devuelve τk+1.
De lo contrario devolver error (no se le permitió pedir cartas).
Procedimiento 13 [τj]
1. Si τj ∈ τ entonces hacer:
56 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
(a) l = l + 1.
(b) Eliminar τj del conjunto τ.
2. Si τj no ∈ τ entonces devolver error.
5.2.6.2.
Implementación
C-­‐APDU1 R-­‐APDU1 C-­‐APDU2 R-­‐APDU2 m1 Figura 5.11: Descartar y pedir las nuevas cartas.
C-APDU1:
P1: 07
P2: 00
Lc: nC
Datos
Le: 05
Tabla 5.30: Descartar. C-APDU1
El campo Datos contiene un array con las cartas que se quieren descartar, la longitud de
dicho array viene determinada por el número de cartas descartadas nC.
Mediante esta instrucción se ejecuta el procedimiento 13 en la Smart Card.
R-APDU1:
Datos
SW1: 90
SW2: 00
Tabla 5.31: Descartar. R-APDU1
Después de verificar que se puede realizar el descarte solicitado por el jugador, se
devuelven las 5 cartas actuales, mostrando FF en los casos que esa carta ha sido
descartada.
Una vez el applet Java del cliente recibe la R-APDU1 envía automáticamente la CAPDU2.
C-APDU2:
P1: 08
P2: 00
Lc: 00
Le: 05
Tabla 5.32: Pedir nuevas cartas. C-APDU2
Este comando no contiene datos, únicamente pide que se devuelvan las nuevas cartas
ejecutando el procedimiento 12.
57 Sistema de Mental Póker basado en Smart Cards
R-APDU2:
Datos
Jose Luis Membrive Ortega
SW1: 90
SW2: 00
Tabla 5.33: Pedir nuevas cartas. R-APDU2
El campo Datos de R-APDU2 contiene las 5 cartas del jugador, sustituyendo las nuevas
cartas extraídas del deck por las que contienen FF, es decir, las que se han descartado.
m1: Mediante este mensaje se informa a los demás jugadores del número de descartes
realizado por dicho jugador.
5.2.7. Mostrar las cartas
Si un jugador quiere mostrar las cartas de su mano, se ejecuta el procedimiento 14 en
su Smart Card.
5.2.7.1.
Descripción
Procedimiento 14
1. firma τ para obtener SPi [IP ||τ].
2. Devuelve SPi [IP ||τ] y τ.
5.2.7.2.
Implementación
C-­‐APDU1 R-­‐APDU1 m1 Figura 5.11: Mostrar las cartas.
C-APDU1:
P1: 09
P2: 00
Lc: 00
Le: 05
Tabla 5.34: Mostrar las cartas. C-APDU1
Contiene la instrucción para mostrar las cartas al finalizar la partida ejecutando el
procedimiento 14.
R-APDU1:
Datos
SW1: 90
Tabla 5.35: Mostrar las cartas. R-APDU1
58 SW2: 00
Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
El campo datos contiene las cartas del jugador. Además incluye un array de 128 bytes
formado por la concatenación de las cartas con el identificador de partida firmado con la
clave privada.
m1: Mediante este mensaje el Casino recibe el array de 133 bytes del campo de Datos
de R-APDU. Posteriormente el Casino verifica la firma y envía las cartas a todos los
jugadores para que las muestren en la interface de usuario.
59 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
6. Análisis de la Seguridad
La seguridad del sistema presentado se basa principalmente en la aportada por la
implementación de los diferentes protocolos descritos en el capítulo anterior. Por otro
lado, las smart cards proporcionan mecanismos para impedir que los datos privados
contenidos dentro de la tarjeta no puedan ser visualizados.
Estos dos puntos se presentan a continuación como seguridad software y seguridad
hardware respectivamente.
6.1. Seguridad software
Para analizar la seguridad de los protocolos, a continuación se examinará si la
implementación de cada uno de los pasos descritos en el capítulo 5 cumple con las
necesidades de seguridad detallados en la sección 1.1.
Inscripción y autenticación: En la sección 5.2.1 se propone que el proceso de registro
sea controlado por el gobierno o autoridad gubernamental, de esta manera se asegura
tener una identificación fiable del jugador. Las herramientas para asegurar que esos
datos guardados en la tarjeta no podrán ser leídos se presentan en la sección de
seguridad hardware.
Aumento o retirada de crédito: Como se presenta en la sección 5.2.2.2 todos los
mensajes entre el casino y el jugador viajan cifrados y firmados.
Con la primera característica se garantiza la confidencialidad de los datos, ya que solo
el propietario de la clave privada correspondiente puede descifrar el contenido.
Por otro lado, queda garantizada la integridad y autenticación de los mensajes gracias a
los datos firmados mediante la verificación de los mismos.
También se cumple la propiedad de no repudio con el envío de un recibo del crédito
actualizado.
Apostar: La integridad de las apuestas queda asegurada mediante un recibo.
Barajar y repartir: En la implementación del protocolo 5 se puede comprobar que las
cartas viajan cifradas y firmadas cumpliendo las propiedades de confidencialidad e
integridad necesarias.
El reparto de cartas es realizado por la tarjeta inteligente, garantizando un reparto
aleatorio mediante el procedimiento 9 descrito en 5.2.5.2.
Descartar: En 5.2.6.2 se presentan los procedimientos implementados para realizar
dicha acción. Una vez elegidas las cartas para descartar, éstas son eliminadas por la
Smart Card y devuelve la nueva mano impidiendo la utilización de las anteriores.
Las cartas descartadas solo viajan del PC del jugador a su Smart Card, por lo que
ningún otro jugador puede conocer su valor.
60 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Ganador: Procedimiento 14. Una vez finalizada la partida se envían las cartas de los
jugadores firmadas para designar el ganador. Estas cartas viajan firmadas por la Smart
Card, de esta manera se asegura que no hayan sido modificadas, ya que solo la Smart
Card conoce la llave privada necesaria para firmar.
6.2. Seguridad hardware
Para asegurar la confidencialidad e Integridad de los datos guardados en el interior de la
tarjeta, las Smart Card disponen de diferentes mecanismos que interrumpen la ejecución
de la Smart Card si detectan temperaturas o voltajes anormales [5].
Estos mecanismos también aseguran que el mismo propietario de la tarjeta pueda
acceder a la clave privada para firmar mensajes falsos.
61 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
7. Manual de usuario
Este manual va dirigido al usuario final de la aplicación, reflejando los requisitos
previos necesarios para ejecutarla.
Además se describen las diferentes herramientas que proporciona la aplicación Smart
Póker y la forma de utilizarlas. Empezando por la ventana principal en la que se pueden
realizar las dos acciones principales, gestionar el crédito o entrar en la Mesa y empezar
una partida.
7.1. Requisitos previos
Antes de ejecutar el SmartPoker, debe disponer de un lector de tarjetas y la Smart Card
con el software de la aplicación expedida por el Regulador.
Una vez insertada la tarjeta en el lector ya se puede arrancar la aplicación.
7.2. Ventana principal
En la Figura 7.1 se puede ver la Ventana principal que contiene el nombre de la
aplicación, SmartPoker. Además en la figura se numeran los diferentes componentes de
la ventana que seguidamente se describirán.
Figura 7.1: Ventana Principal
En la ventana principal, el usuario dispone de la información que se expone en 1 y 2:
•
•
1. Crédito actual del jugador.
2. Panel donde se muestra diferente información relevante para el jugador.
Conectado es una de las posibilidades, pero también informa de posibles
problemas de conexión con la tarjeta, si no está bien insertada.
62 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
A través de 3 y 4 se accede a las dos posibles acciones que proporciona esta
ventana:
•
•
3. Gestionar crédito. Al pulsar en esta opción accede al menú de gestión del
crédito descrito en el apartado 7.3.
4. Entrar a la mesa. Para poder acceder a la mesa antes se ha de introducir un
Nick en 5. Este Nick ha de ser de más de 3 caracteres.
7.3. Menú de gestión del crédito
Figura 7.2: Menú de gestión del crédito
Este menú presenta las opciones de ingresar o retirar dinero de la cuenta, como se puede
ver en la Figura 7.2.
7.3.1. Ingresar o RETIRAR dinero de la cuenta
Al presionar en una de las dos opciones, aparecerá una ventana donde se debe introducir
el importe a ingresar/retirar como se muestra en la Figura 7.3.
Figura 7.3: ingreso/retirada de dinero.
Una vez realizado el ingreso/retirada se puede consultar el nuevo crédito tanto en el menú de
gestión de crédito como en la ventana principal. Un ejemplo se muestra en la Figura 7.4.
63 Sistema de Mental Póker basado en Smart Cards
Figura 7.4: Comprobación del nuevo crédito.
64 Jose Luis Membrive Ortega
Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
7.4. Mesa
Esta pantalla contiene todas las herramientas y contenido informativo necesario para
una buena partida de póker. Estas herramientas están enumeradas en la Figura 7.5 y
posteriormente detalladas.
Figura 7.5: Mesa
Contenido informativo:
•
•
•
•
•
1. Crédito. Éste se va actualizando en cada apuesta realizada para que se pueda
llevar un control del crédito disponible.
2. Información del adversario. Aquí se puede visualizar el Nick y la
acumulación de dinero apostado en cada ronda de apuestas de los diferentes
adversarios.
3. Bote. Informa del dinero total por el que se está jugando. Para iniciar la
partida se restan 5 euros a cada jugador en concepto de ciega que conforman el
bote inicial.
4. Panel informativo. En dicho panel se puede consultar toda la información de
seguimiento de la partida: el importe apostado por cada jugador, el número de
cartas descartadas y el ganador de la partida. Además advierte de la acción que
debe realizar en cada turno: te toca apostar o te toca descartar.
5. Mis Cartas. Muestra las 5 cartas con las que está jugando.
Paneles y botones de acción:
•
6. Panel de apuestas. Contiene un seguido de herramientas para realizar la
acción de apostar. Estas herramientas se detallan en el apartado 7.4.1.
65 Sistema de Mental Póker basado en Smart Cards
•
•
•
Jose Luis Membrive Ortega
7. Panel de descartes. Se compone de dos botones para realizar la acción de
descartar o no descartar. Como se expone en la sección 7.4.2 el panel “Mis
cartas” también desempeña un papel importante en a la hora de descartar.
8. Mostrar cartas finales. Marcando este recuadro se mostrarán sus cartas al
finalizar la partida. Un ejemplo se puede ver en la sección 7.4.3.
9. Fondo. Presionando esta opción se cambiará el fondo de pantalla. En la
sección 7.4.4 se puede ver un ejemplo.
7.4.1. Apostar
La expresión apostar se utiliza para englobar 4 posibles acciones. Las herramientas para
realizar cada una de ellas están numeradas en la Figura 7.6 y se describen a
continuación:
Figura 7.6: Apostar
Acción check
1. Botón para pasar el turno sin realizar ninguna apuesta.
Acción Call
2. Botón para igualar la apuesta.
Acción Fold
3. Botón para retirarse de la partida
66 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Acción Raise
4. Barra para seleccionar el importe de la apuesta. Hay que tener en cuenta que este
valor tiene un máximo definido por la apuesta anterior y un máximo definido
por el valor del crédito del jugador con menos dinero, estos valores se muestran
en 5 y 6 respectivamente.
8. Botón para realizar la apuesta, el importe del cual se puede ver en 7.
7.4.2. Descartar / No descartar
Figura 7.7: Descartar / No descartar
Descartar
Como se puede observar en la Figura 7.7, primero se han de marcar las cartas en el
panel “Mis cartas” haciendo click con el botón derecho del ratón, éstas se muestran con
un borde diferente para informar en todo momento las cartas que se van a descartar. Si
se desea cambiar la selección no hay más que volver a clicar sobre la carta.
Una vez marcadas las cartas deseadas se debe presionar el botón RULE.
No descartar
Presionar el botón NOT RULE.
67 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
7.4.3. Partida finalizada
Figura 7.8: Partida finalizada
Al finalizar la partida la aplicación informa del ganador de la partida mediante el panel
informativo. Si el jugador ha marcado la opción mostrar cartas o ha sido el ganador de
la partida se podrán visualizar sus cartas en el panel del adversario. Un ejemplo se
puede ver en la Figura 7.8.
68 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
7.4.4. Cambiar fondo
Figura 7.9: Cambiar fondo
En la Figura 7.9 se puede ver un ejemplo de otro fondo, cambiado pulsando el botón
FONDO.
69 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
8. Conclusiones y Trabajo Futuro
En el proyecto se ha desarrollado una aplicación de mental póker segura basado en la
utilización de tarjetas inteligentes. Éstas son encargadas de realizar las acciones más
sensibles; barajar, repartir, descartar y controlar su crédito. De esta manera el Casino no
tiene posibilidad de manipular el resultado de estos eventos y se garantiza una confianza
total en la aplicación por parte del jugador o futuro usuario.
Como se ha indicado en capítulo 6, las smart cards disponen de diferentes mecanismos
para detectar el intento de acceso a los datos contenidos en la tarjeta e impedir el robo
de credenciales y datos bancarios.
El análisis de seguridad demuestra que se cumplen todos los requisitos y otro de los
objetivos marcados. Se garantiza la confidencialidad en las acciones de aumentar o
retirar dinero de la cuenta, repartir y descartar gracias al cifrado de todos los mensajes
intercambiados. Solo la Smart Card, que contiene la correspondiente clave privada,
descifrar los datos contenidos en el mensaje. La clave privada también es la encargada
de firmar los datos enviados para que el receptor, mediante la clave pública
correspondiente verifique que esos datos han sido emitidos por el propietario de dicha
clave pública, de esta manera se garantiza la autenticación. De esta manera, con los
datos sin firmar, se comprueba la integridad de los datos.
Para realizar este sistema de mental póker seguro se han implementado cada uno de los
protocolos descritos en el protocolo de Castellà et. al [3], (ver capítulo 5).
Aunque se han cumplido los objetivos marcados, como trabajo futuro para una posible
comercialización de la aplicación hay que tener en cuenta:
•
•
Uso de certificados: En caso de que una tercera persona intente hacerse pasar
por otra enviando su clave pública al iniciarse el juego, con los certificados se
puede comprobar que dicha clave pública corresponde a la persona determinada.
Implementación de la acción retirarse: La aplicación tiene la función de
demostrar la seguridad del sistema, por lo que aspectos más funcionales de la
partida de póker como la retirada de las partidas habría que implementarlo. De
todos modos, se retira el dinero automáticamente en cada apuesta realizada. De
esta manera, si un jugador cierra la aplicación en medio de una partida pierde el
dinero apostado hasta el momento.
70 Sistema de Mental Póker basado en Smart Cards
Jose Luis Membrive Ortega
Referencias
[1] Página Web HTTP: www.aedapi.com/website/pdfs/Aedapidoc.pdf. Situación del sector de las
apuestas por internet. Abril/2011
[2] Página Web HTTP: www.s21sec.com/descargas/S21sec_Informe_anual_de_Fraude_Online_y_
Cibercrimen_2010.pdf. Informe de fraude en internet y cibercrimen. Abril/2011
[3] Artículo: Jordi Castellà-Roca, Josep Domingo-Ferrer, and Francesc Sebé. A Smart Card-Based
Mental Poker System. CARDIS 2006. [48-61]. 2006
[4] Libro: Zhiqun Chen, “Java CardTM Technology for Smart Cards: Architecture and Programmer’s
Guide”, The JavaTM Series, 2000.
[5] Libro: Xuefei Leng, “Smart Card applications and security”, Information Security Technical Report,
Vol. 14, No2, Mayo 2009.
[6] Página Web HTTP: www.di-mgt.com.au/rsa_alg.html. Información sobre RSA. Junio/2011
[7] Libro: Mike Hendry, “Multi-application Smart Cards: Technology and Applications”, Cambridge,
2007.
[8] Página Web HTTP: www.Smartchipsystem.com. Información de modelos de tarjetas y lectores.
Junio/2011
[9] Página Web HTTP: ific.uv/~jgarcian/probe/conversor.html. Conversor hexadecimal-decimal. Abril
2011
[10] Página Web HTTP: ific.uv/~jgarcian/probe/conversor.html. Consultar especificaciones Java Card
versión 2.2.1, contenidas en Java Card Development Kit 2.2.1. Mayo/2011.
[11] Página Web HTTP: pi1.informatik.uni-mannheim.de/filepool/teaching/aachen/ws2005/sevves/final
32.pdf. Smart Card Application Development Using the Java Card Technology, Milan Fort.
Mayo/2011.
[12] Página Web HTTP: www.informatik.uni-augsburg.de/lehrstuehle/swt/se/teaching/fruehere_semester
/ws0708/javaCard/Dokumentation/JCADG.pdf. Java Card Applet Developer’s Guide, Sun
Microsystems. Mayo/2011.
[13] Página Web HTTP: www.cs.ru.nl/~woj/javacardapi221/index.html. Java Card API V.2.2.1. Sun
Microsystems. Mayo/2011
[14] Página Web HTTP: www.error500.net/garbagecollector/archives/categorias/apuntes/micropr ocesa
dores_risc_y_cisc.php. Comparación microprocesadores CISC y RISC. Junio/2011.
[15] Página Web HTTP: www.pokerstars.net/es/poker/games/draw. Manual para jugar al póker.
Mayo/2011.
[16] Página Web HTTP: es.wikipedia.org/wiki/P%C3%B3quer. Consulta probabilidades del poker.
Mayo/2011.
71