Emulacion de Tarjetas NFC en Android
Emulacion de Tarjetas NFC en Android
Emulacion de Tarjetas NFC en Android
INGENIERÍA INFORMÁTICA
EL TRIBUNAL
Presidente:
Vocal:
Secretario:
VOCAL
SECRETARIO PRESIDENTE
AGRADECIMIENTOS
Dedicar el final de esta etapa de mi vida a mi familia, siempre han estado a mi lado
animándome, permitiendo que me creara un futuro a mi gusto del que no me arrepintiera y
ayudándome a conseguirlo. A mis padres, Alfonso y Francisca, por haberme proporcionado todo
lo necesario para que pudiera realizar unos estudios de estas magnitudes y sin presionarme para
que así disfrutara y aprendiera todo lo posible de ello, a mi hermana Noelia que siempre sabe
cómo hacerme reír en los momentos complicados, y a mis abuelos que desde el primer momento
nunca duraron en que podía conseguirlo y siempre se han sentido orgullosos.
Dedicar también todo este trabajo a mis amigos, Rafael, Israel y Pepe, que llevamos
muchos años de amistad y nunca me han abandonado a pesar del poco tiempo pasado con ellos
durante el tiempo que ha durado esta carrera. A los compañeros de la universidad, Coral, Adrián,
Roberto, Laura, Luis, Verónica, Daniel, Christian y Jose, por aguantarme y haber pasado tan
buenos momentos juntos, riéndonos por lo bueno y lo malo y pasándolo bien tanto en el ámbito
de los estudios como fuera de él.
También se lo agradezco a mis tutores de este proyecto, por la paciencia que han tenido
durante el periodo de su desarrollo y toda la ayuda que me han ofrecido, así como al resto de
profesores que a lo largo de la carrera me han hecho crecer personal y profesionalmente.
Por último quiero dedicar este proyecto de fin de carrera a Ángel, mi abuelo materno, el
cual falleció durante el desarrollo de las etapas finales de este proyecto.
RESUMEN
Hoy en día las personas cada vez tienen la necesidad de llevar consigo muchas tarjetas,
ya sean de crédito, para acceder al trabajo, hoteles o al transporte, y eso puede ocasionar
problemas, ya sea por olvidar alguna entre tantas, robo, pérdida o simplemente que el usuario
no quiera llevar todas consigo.
Además los smartphones/teléfonos móviles son utilizados para ver noticias, llamar a
otras personas, jugar, etc. Son pequeños ordenadores que llevamos en el bolsillo y que forman
parte de nuestra vida diaria.
ABSTRACT
Nowadays people the need to carry a lot of physical cards, either credit, to grant access
to the office, hotels, public transport… This can cause a lot of issues, either by forgetting one
among many, theft, loss or just the user does not want to carry them all.
Besides, the smartphones / mobile phones are used to watch news, call other people,
play, etc. They are also small computers that we carry in our pocket and are part of our daily
life.
So, how could we use them instead of physical cards? The solution is the Near Field
Communication (NFC) technology. This technology can interact with cards so user could make
payments with it, access control and access to transport, with the same behavior as if user had
the physical card with him.
The purpose of this project is to develop an Android application to store, manage and
transmit RFID cards from the smartphone or mobile phone instead of taking all the original
cards in the owner's pocket. Furthermore, all the keys used must be stored on a server in the
cloud, Google App Engine, to obtain statistical data of the most used so there can be do some
research on it afterwards.
Índice de contenido
AGRADECIMIENTOS............................................................................................................. v
RESUMEN ......................................................................................................................vii
ABSTRACT .....................................................................................................................viii
1. Introducción .............................................................................................................2
2. Objetivos ................................................................................................................. 4
4. Motivación............................................................................................................... 6
1. NFC .......................................................................................................................... 9
1.8.2. LibNFC......................................................................................................... 30
2. Android................................................................................................................... 31
3. SQLite ..................................................................................................................... 34
1. Análisis ................................................................................................................... 38
2. Diseño.................................................................................................................... 99
CAPÍTULO 4: PRUEBAS......................................................................................................105
1.2. Trazabilidad entre requisitos software funcionales y pruebas del sistema ..122
ANEXOS .....................................................................................................................142
3. Leer ........................................................................................................................157
4. Escribir.................................................................................................................. 167
6. Claves .....................................................................................................................175
Índice de figuras
Ilustración 19: Prueba 1 – Resultado de dispositivo móvil (arriba) y del lector con LibNFC
(abajo)..........................................................................................................124
Ilustración 21: Prueba 3 – Resultado de dispositivo móvil (izquierda) y del lector con Mfoc
(derecha) .................................................................................................... 126
Ilustración 22: Prueba 4 – Resultado lectura de dispositivo móvil (izquierda) y del lector con
Mfoc (derecha) ............................................................................................ 127
Ilustración 26: Prueba 4 – Decodificación historial de viajes de transporte con el lector y Mfoc
GUI ............................................................................................................. 129
Ilustración 31: Prueba 5 – Resultado lectura con el lector y Mfoc de una tarjeta escrita . 132
Ilustración 43: Manual de usuario – Ver como transporte – Opción menú ......................163
Ilustración 46: Manual de usuario – Ver como transporte - Subscripciones ................... 164
Ilustración 47: Manual de usuario – Ver como ASCII – Opción menú .............................165
Ilustración 48: Manual de usuario – Ver como ASCII – Contenido en ASCII ...................165
Ilustración 49: Manual de usuario – Ver como ASCII – Contenido en ASCII .................. 166
Ilustración 50: Manual de usuario – Ver condiciones de acceso – Opción menú............ 166
Ilustración 56: Manual de usuario – Escribir todos los bloques posibles ..........................170
Ilustración 60: Manual de usuario – Seleccionar tipo de tarjeta a crear ........................... 172
Ilustración 61: Manual de usuario – Tarjeta Mifare Ultralight creada (izquierda); Tarjeta Mifare
Classic Mini, 1K y 4K creada (derecha) ...................................................... 172
Ilustración 67: Manual de usuario – Lista de claves (izquierda) y grupos de claves (derecha)
.............................................................................................................. 176
Ilustración 69: Manual de usuario – Crear una clave (izquierda); varias claves (derecha)177
Ilustración 77: Manual de usuario – Editar grupo de claves – Opción menú ...................183
Índice de tablas
Tabla 10: Lectores NFC compatibles con modo emulación de tarjeta ...................... 22
Tabla 36: Requisito RUR-10 – Nombre del tipo de tarjeta único ............................... 43
Tabla 38: Requisito RUR-12 – Formato tarjeta Mifare Classic Mini ........................... 43
Tabla 71: Caso de Uso CU-07 – Ver tarjeta en formato ASCII ................................... 55
Tabla 72: Caso de Uso CU-08 – Ver tarjeta en formato hexadecimal ........................ 55
Tabla 92: Requisito RSF-09 – Todas las claves para leer tarjetas RFID......................64
Tabla 93: Requisito RSF-10 – Grupos de claves para leer tarjetas RFID .....................64
Tabla 94: Requisito RSF-11 – Ninguna clave para leer tarjetas RFID ..........................64
Tabla 96: Requisito RSF-13 – Escritura tarjetas Mifare Classic Mini .......................... 65
Tabla 99: Requisito RSF-16 – Todas las claves para escribir tarjetas RFID ................ 65
Tabla 100: Requisito RSF-17 – Grupos de claves para escribir tarjetas RFID ............... 65
Tabla 101: Requisito RSF-18 – Ninguna clave para escribir tarjetas RFID ................... 65
Tabla 106: Requisito RSF-23 – Creación de tarjetas Mifare Classic Mini ..................... 67
Tabla 109: Requisito RSF-26 – Valores por defecto en nuevas tarjetas ....................... 67
Tabla 136: Requisito RSNF-OP-04 – Formato de tarjeta Mifare Classic Mini ............. 74
Tabla 146: Requisito RSNF-OP-14 – Lectura y escritura de tarjetas Mifare Classic .... 76
Tabla 151: Requisito RSNF-OP-19 – Claves almacenadas para lectura y escritura ..... 77
Tabla 152: Requisito RSNF-OP-20 – Claves almacenadas para grupos de claves ....... 77
Tabla 153: Requisito RSNF-OP-21 – Grupos de claves almacenados para lectura y escritura
...................................................................................................................... 77
Tabla 185: Requisito RSNF-INT-20 – Diálogo para crear grupo de claves ................. 89
Tabla 186: Requisito RSNF-INT-21 – Diálogo para modificar grupo de claves ........... 89
Tabla 187: Requisito RSNF-INT-22 – Diálogo para eliminar grupo de claves ............ 89
Tabla 205: Prueba PSF-01 – Leer tarjeta Mifare Classic Mini ......................................107
Tabla 207: Prueba PSF-03 – Leer tarjeta Mifare Classic 4K ........................................ 108
Tabla 208: Prueba PSF-04 – Leer tarjeta Mifare Ultralight ........................................ 108
Tabla 209: Prueba PSF-05 – Escribir tarjeta Mifare Classic Mini ............................... 109
Tabla 210: Prueba PSF-06 – Escribir tarjeta Mifare Classic 1K ................................... 109
Tabla 211: Prueba PSF-07 – Escribir tarjeta Mifare Classic 4K ................................... 110
Tabla 212: Prueba PSF-08 – Escribir tarjeta Mifare Ultralight .................................... 110
Tabla 213: Prueba PSF-09 – Crear tarjeta Mifare Classic Mini .................................... 111
Tabla 214: Prueba PSF-10 – Crear tarjeta Mifare Classic 1K.......................................... 111
Tabla 215: Prueba PSF-11 – Crear tarjeta Mifare Classic 4K......................................... 112
Tabla 219: Prueba PSF-15 – Importar tarjeta Mifare Classic Mini ............................... 113
Tabla 220: Prueba PSF-16 – Importar tarjeta Mifare Classic 1K ................................... 114
Tabla 221: Prueba PSF-17 – Importar tarjeta Mifare Classic 4K .................................. 114
Tabla 222: Prueba PSF-18 – Importar tarjeta Mifare Ultralight .................................. 115
Tabla 223: Prueba PSF-19 – Importar varias tarjetas Mifare ....................................... 115
Tabla 232: Prueba PSF-28 – Importar varios ficheros de claves .................................. 119
Tabla 236: Prueba PSF-32 – Ver tarjeta RFID en formato ASCII .................................120
Tabla 237: Prueba PSF-33 – Ver tarjeta RFID en formato hexadecimal ......................120
Tabla 238: Prueba PSF-34 – Ver tarjeta RFID como tarjeta de transporte .................120
Tabla 239: Prueba PSF-35 – Ver condiciones de acceso de una tarjeta RFID ............. 121
Tabla 240: Prueba PSF-36 – Ver estadísticas de uso de las claves ............................... 121
Tabla 242: Matriz de trazabilidad entre requisitos software funcionales y pruebas del
sistema ......................................................................................................... 123
CAPÍTULO 1:
INTRODUCCIÓN Y OBJETIVOS
1. Introducción
Hace unos años, estas áreas no estaban muy desarrolladas pero hoy en día están dentro
de nuestras vidas, tan dentro que incluso una cosa tan cotidiana, como es ir a hacer la compra,
hoy en día se puede hacer a través de Internet mediante un Smartphone, un ordenador, una
tablet o incluso una televisión.
Los dispositivos móviles forman parte de nuestro día a día, de tal forma que tendemos a
olvidarnos de que, no hace mucho tiempo, esto no era así. En 1983, con la venta del primer
teléfono móvil, nadie se hubiese imaginado que pocos años más tarde existirían más de esos
dispositivos. Por aquella época, los teléfonos móviles solo eran poseídos por personas que
requerían estar en constante contacto. Años más tarde, con las reducciones de precio y
tamaño, estos dispositivos se extendieron rápidamente por todo el mundo.
En el 2007, con la aparición del iPhone, en 2010 la aparición del iPad y finalmente la
aparición de smartphones y tables basadas en Android y con un coste menor supuso la
popularización de este tipo de dispositivos hasta el punto que en nuestros días la gente suele
disponer de al menos uno de estos dos tipos de dispositivos móviles.
Hoy en día las tecnologías inalámbricas han cobrado gran importancia. Las personas
están en constante movimiento y quieren tener la posibilidad de acceder a las redes en todo
momento, ya sea para consultar información en internet, para el uso de las redes sociales o
para transferencias de archivos e información entre distintos dispositivos sin necesidad de
cables que nos limitan la movilidad.
Los dispositivos más utilizados son los teléfonos móviles o Smartphones, los cuales han
cambiado tanto su funcionalidad que hoy en día son como un ordenador con tamaño reducido
que permiten hacer fotos, vídeos, videollamadas, usarlos como GPS, comunicarse con otros
La poca distancia requerida para la conexión entre los dispositivos invita a pensar que
existe una intencionalidad consciente por los usuarios cuando ésta se produce. Además, el
corto alcance también asegura un nivel de seguridad muy aceptable, ya que es muy difícil que
se produzca la comunicación sin intencionalidad o que existan intrusos que intercepten los
datos de la comunicación entre dispositivos.
Es por ello que hoy en día se trabaja en desarrollar herramientas que a través de esta
tecnología permitan tareas sensibles e importantes como el pago, la identificación personal, el
acceso a zonas restringidas, canjeo de descuentos, transferencia de archivos, etc.
Al contrario que otras tecnologías inalámbricas como Wifi o Bluetooth, NFC no está
orientada a la transmisión de datos de forma continua y fluida, sino al intercambio rápido de
una información puntual, como puede ser la identificación y validación de un usuario o el
manejo de datos concretos.
Google hizo su apuesta por NFC en Android con su versión Gingerbread en el Samsung
Nexus S. En un principio fue utilizada para casos de uso sencillo, como son el intercambio de
tarjetas personales, pero actualmente ya existen aplicaciones de pago a través de la plataforma
de pago Google Wallet [2] .
2. Objetivos
Utilizar el servicio NFC que ofrece Android en sus terminales móviles para el
escaneo, almacenamiento y retransmisión de las tarjetas RFID.
Diseñar una base de datos que gestione las operaciones sobre las tarjetas RFID
almacenadas.
Desarrollar la aplicación que cumpla con los anteriores criterios.
4. Motivación
En la actualidad los teléfonos inteligentes forman parte de la rutina diaria, por lo que el
desarrollo de una aplicación Android con esta tecnología y para dispositivos móviles encaja
con la situación a solucionar mejor que una aplicación para PC.
CAPÍTULO 2:
ESTADO DEL ARTE
1. NFC
1.1. Introducción
La tecnología NFC trabaja dentro de la banda de radiofrecuencia de los 13,56 MHz, lo
que implica que no esté sujeta a ninguna restricción, ni sea necesario disponer de una licencia
para su uso por tratarse de una banda libre.
Por tanto, la forma de trabajo de NFC implica que un dispositivo genere una onda de
radio de alta frecuencia para que en otro dispositivo NFC, lo suficientemente cercano, se
genere un “acoplamiento magnético inductivo”, por medio del cual se puede realizar una
transferencia de datos entre dichos dispositivos. El acoplamiento funciona sólo en distancias
cortas y es la principal diferencia entre NFC y otras tecnologías inalámbricas como Bluetooth y
Wifi, que trabajan a una distancia máxima aproximada de 10m y 100m, respectivamente.
La idea de desarrollar esta tecnología fue crear un nuevo protocolo que preste
compatibilidad con las tecnologías sin contacto de corto alcance. Su desarrollo empieza en el
año 2002 y sus promotores fueron Philips y Sony principalmente para conseguir
compatibilidad con sus tecnologías, Mifare y FeliCa respectivamente, pero fue a finales del año
2003 cuando se aprueba como el estándar ISO 18092.
Algunas de las posibles aplicaciones que se pueden desarrollar con esta tecnología son:
identificación y control de acceso a espacios controlados, recogida/intercambio de datos, pagos
con el teléfono móvil, guía turística, recibir noticias en tiempo real desde un servidor de
contenidos, organización de juegos de la búsqueda del tesoro, compra en máquinas
expendedoras y control de stocks en comercios.
NFC define tres modos de operación dependiendo del tipo de tag utilizado: activo,
semipasivo y pasivo [44] .
Activo: los tags poseen una fuente de alimentación (por lo general una batería)
que se utiliza para energizar los circuitos del microchip y transmitir una señal al
lector. Como tienen su propia fuente de energía soportan grandes capacidades de
memoria y de procesamiento. Son los más costosos.
Semipasivo: los tags utilizan una batería para funcionar los circuitos del
microchip pero se comunican mediante el suministro eléctrico proporcionado por
el lector. También son costosos.
También define tres modos de configuración entre los dispositivos que desean
establecer una comunicación: lectura/escritura, P2P y emulación de tarjeta.
Este modo no es recomendado por NFC Forum, es más lento, más complejo
y consume más tiempo y batería.
1.3. Estandarización
El estándar NFC fue definido por NFC Forum y aprobado como estándar ISO/IEC en
diciembre de 2003 y posteriormente como un estándar ECMA. Dicho estándar también está
reconocido a nivel Europeo por la ETSI.
Los registros son de longitud variable pero todos tienen el siguiente formato en común:
1.4.1. Mifare
Es una tecnología de tarjetas inteligentes sin contacto (TISC). Es equivalente a las 3
primeras partes de la norma ISO-14443-A de 13,56 MHz con protocolo de alto nivel.
Las tarjetas MIFARE son tarjetas de memoria protegida. Están divididas en sectores y
bloques y mecanismos simples de seguridad para el control de acceso.
Bloque cola
Número byte 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Clave A Bytes de acceso Clave B
Bit
Byte
7 6 5 4 3 2 1 0
6 C23 C22 C21 C20 C13 C12 C11 C10
7 C13 C12 C11 C10 C33 C32 C31 C30
8 C33 C32 C31 C30 C23 C22 C21 C20
9 User Data
Tabla 3: Formato bits de acceso [47]
El chip de este tipo de tarjetas define las siguientes seis operaciones de memoria
que pueden ser usadas para acceder a los bloques de datos:
Operación Descripción
Lectura Lee un bloque de datos
Escritura Escribe un bloque de datos
Incremento Incrementa el valor y almacena el resultado en el registro de datos interno
Decremento Decrementa el valor y almacena el resultado en el registro de datos interno
Transferencia Transfiere el contenido del registro de datos interno a un bloque
Restaurar Lee el contenido de un bloque del registro de datos interno
Tabla 4: Operaciones de memoria [47]
Los permisos para el uso de estas operaciones están indicados en las condiciones
de acceso, así como la clave necesaria para ello.
Las condiciones de acceso están escritas en el bloque cola de cada sector. Existen
dos tipos: condiciones de acceso a los bloques de datos y condiciones de acceso al
bloque cola, que realizan operaciones sobre los bloques de datos y bloques cola,
respectivamente.
o Condiciones de acceso para bloque de datos:
Host
Fabricante Producto Chip NFC Dependencias Driver Probado Soporte
Bus
Identive SCL3710 PN531 v4.2 USB Libusb pn53x_usb Si Si
(anteriormente
SCL3711 PN533 v2.7 USB Libusb pn53x_usb Si Si
SCM)
Sensor ID Stick ID PN533 v2.7 USB Libusb pn53x_usb Si Si
Toppan Forms TN31CUD001SW PN531 v4.2 USB Libusb pn53x_usb Si Si
Snapper Feeder PN531 v3.4 USB Libusb pn53x_usb Si Si
Sony RC-S360 PN533_Sony USB Libusb pn53x_usb Si Limitado
ASK LoGO PN533 v2.7 USB Libusb pn53x_usb Si Limitado
ACR122U101 PN532 v1.4 USB PCSC acr122_pcsc Si Limitado
ACS
ACR122U206 PN532 v1.4 USB PCSC acr122_pcsc Si Limitado
Tikitag ACR122U102 PN532 v1.4 USB PCSC acr122_pcsc Si Limitado
Touchatag ACR122U102 PN532 v1.4 USB PCSC acr122_pcsc Si Limitado
Identive ADRA-USB PN531 USB arygon Si Si
(anteriormente
ADRB-USB PN532 v1.4 USB arygon Si Si
Arygon)
Sony RC-S330 PN533_Sony USB Libusb pn53x_usb Si Limitado
Desconocido PN531 v4.2 USB Libusb pn53x_usb Si Si
DDS
Desconocido PN533 v2.7 USB Libusb pn53x_usb Si Si
PN532 NFC
microBuilder.eu PN532 v1.6 UART pn532_uart Si Si
Breakout Board
APDA1UAxx PN531 UART No N/A
APDA2UAxx PN531 UART No N/A
APDB1UA33N PN532 v1.4 UART pn532_uart Si Si
APDB2UA33 PN532 v1.4 UART arygon Si Si
Identive
APPA1UAxx PN531 UART No N/A
(anteriormente
APPA2UAxx PN531 UART No N/A
Arygon)
APPB1UAxx PN532 UART No N/A
APPB2UAxx PN532 UART No N/A
APPA2US00 PN531 USB No N/A
APPB2US00 PN532 USB No N/A
Tabla 7: Resumen lectores NFC
1.5.1. Conectividad
PN531 PN532 PN533
UART Si Si No
USB Si Si Si
SPI SI Si No
I2C Si Si No
Tabla 8: Conectividad lectores NFC
A continuación se muestra una imagen donde se puede observar las etapas que
componen la comunicación, y posteriormente una explicación del funcionamiento de cada
una. [49]
1º byte SAK
Fabricante Producto ATQA
(hexadecimal)
MIFARE Mini 04 00 09
MIFARE Classic 1K 04 00 08
MIFARE Classic 4K 02 00 18
MIFARE Ultralight 44 00 00
MIFARE DESFire 44 03 20
NXP
MIFARE DESFIRE EV1 44 03 20
JCOP31 04 03 28
JCOP31 v2.4.1 48 00 20
JCOP41 v2.2 48 00 20
JCOP41 v2.3.1 04 00 28
Infineon MIFARE Classic 1K 04 00 88
Gemplus MPCOS 02 00 98
Tabla 11: Valores SAK de tarjetas RFID
1.6.5. Halt
En cualquier momento después de que una tarjeta ha sido seleccionada por el lector
este puede cesar toda la comunicación con ella mediante la emisión del comando HALT Type
A (HLTA). La tarjeta se situará en el estado de pausa y solo puede ser despertada con el
comando WUPA.
1.7. Crypto1
Crypto1 es un algoritmo de cifrado desarrollado por NXP Semiconductors
específicamente para su uso en tarjetas MIFARE Classic. El algoritmo se ejecuta en el hardware
del chip de estas tarjetas para las operaciones criptográficas rápidas. [42] [43] [45] [46] [50]
𝐿(𝑥0 𝑥1 … 𝑥47 ) ∶= 𝑥0 ⊕ 𝑥5 ⊕ 𝑥9 ⊕ 𝑥10 ⊕ 𝑥12 ⊕ 𝑥14 ⊕ 𝑥15 ⊕ 𝑥17 ⊕ 𝑥19 ⊕ 𝑥24 ⊕ 𝑥25 ⊕ 𝑥27
⊕ 𝑥29 ⊕ 𝑥35 ⊕ 𝑥39 ⊕ 𝑥41 ⊕ 𝑥42 ⊕ 𝑥43
El generador de filtro genera un bit en cada ciclo de reloj y se puede definir como una
combinación de tres subfunciones lógicas: fa, fb y fc. Utilizando la misma notación xn que el
anterior e introduciendo los operadores lógicos OR (∨) y AND (∧) se define el generador de
filtro y los tres sub-funciones así:
𝑓(𝑥0 𝑥1 … 𝑥47 ) ∶= 𝑓𝑐 (𝑓𝑎 (𝑥9 , 𝑥11 , 𝑥13 , 𝑥15 ), 𝑓𝑏 (𝑥17 , 𝑥19 , 𝑥21 , 𝑥23 ), 𝑓𝑏 (𝑥25 , 𝑥27 , 𝑥29 , 𝑥31 ),
Donde:
Utiliza el mismo procedimiento que el LFSR del cifrado para generar un bit de salida.
Por otra parte, si se define la secuencia x0x1…x31 de un LFSR de 32 bits que consiste en
este LFSR de 16 bits la siguiente secuencia de 32 bits se puede definir mediante una función
sucesor donde:
1.7.3.1. Inicialización
En este proceso se inician los valores del LFSR del generador de claves y el LFSR del
RNG con la clave del sector a autenticar y el número aleatorio mandado al lector en la fase 1 en
la autenticación a tres fases, respectivamente.
1.7.3.2. Encriptación
Una vez que la inicialización ha terminado comienza el encriptado. Para llevarlo a cabo
se realizan los siguientes pasos:
1. Los bits en las posiciones 9,11,13 y 15, 17,19,21 y 23, 25,27,29 y 31, 33,35,37 y 39, y
41,43,45 y 47 son extraídos del generador de claves y suministrados a las funciones
𝑓𝑎 , 𝑓𝑏 , 𝑓𝑏 , 𝑓𝑎 y 𝑓𝑏 , respectivamente.
2. 𝑓𝑎 y 𝑓𝑏 con calculadas.
3. Los resultados de estas 5 funciones son insertados en la función 𝑓𝑐 .
4. 𝑓𝑐 es calculada.
5. El LFSR de RNG es desplazado una posición a la izquierda.
6. Se realiza la operación XOR con los bits de las posiciones 0, 10, 12, 13 y 15 del RNG.
7. El resultado del paso 6 es insertado en el LFSR de RNG.
8. Operación XOR entre los valores obtenidos en los pasos 4 y 6. El resultado
obtenido es un bit perteneciente al resultado final.
1.8.1. Proxmark3
Proxmark3 posee un programa cliente con el que el usuario puede interactuar con el
dispositivo permitiéndole espiar, escuchar y emular tarjetas RFID tanto de baja como de alta
frecuencia. Su desarrollo ha sido en sistemas Unix pero existen versiones para sistemas
operativos como Windows [49] .
Este programa posee diferentes funciones para operar sobre las tarjetas RFID, a
continuación se especifican las utilizadas para el desarrollo de este proyecto: [21]
hf 14a list: muestra los mensajes intercambiados previamente entre una tarjeta
RFID y la proxmark3 o desde una ejecución previa del comando hf 14a snoop.
hf 14a reader: emplea el proceso de anticolisión sobre una tarjeta RFID y muestra
la información recolectada de sus respuestas.
hf 14a snoop: registra todo el tráfico de información entre el lector y la tarjeta
RFID. Todo este tráfico puede ser mostrado con el comando hf 14a snoop.
hf mf mifare: obtiene la clave del bloque 0.
hf mf nested: obtiene las claves de uno o todos los sectores de una tarjeta RFID,
pudiendo escoger entre obtener las claves tipo A, B o ambas. Para poder ejecutarlo
es necesario conocer al menos una clave.
hf mf sim: emula el comportamiento de una tarjeta Mifare Classic.
hf mf eclr: limpia la memoria de la Proxmark3 y la rellena con la clave por defecto
(0xFFFFFFFFFFFF).
hf mf ekeyprn: muestra las claves almacenadas en la memoria de la Proxmark3.
1.8.2. LibNFC
El propósito de la biblioteca libnfc es proporcionar a los desarrolladores una manera de
trabajar con hardware NFC a un nivel más alto de abstracción sin costo alguno. Algunas
funciones importantes incluyen soporte para ISO-14443-A modulación, implementación del
protocolo MIFARE Classic y la capacidad de transformar cualquier dispositivo NFC basada en
USB en un lector o tarjeta RFID. A continuación se destacan aquellos que se han utilizado
directamente: [26] , [49]
1.8.3. Crapto1
Crapto1 es una librería escrita en lenguaje C que además de implementar el cifrado
Crypto1 ofrece algunas funciones de ataque contra él. [30] , [42] , [49]
En este proyecto Crapto1 es utilizado para realizar ingeniería inversa sobre el algoritmo
Crypto1 y así descifrar las claves de las tarjetas RFID de tipo Mifare Classic.
Los valores utilizados para el cifrado son el uid, aleatorio y la clave del sector de la
tarjeta. Ya que todos son conocidos excepto la clave, y debido a la propiedad:
𝐶=A⊕B
Entonces:
𝐴=B⊕C
𝐵=A⊕𝐶
Esta librería está incluida en el programa Mfoc, el cual es utilizado para descifrar las
claves de las tarjetas RFID de tipo Mifare Classic durante el desarrollo de este proyecto.
2. Android
2.1. Introducción
“La primera plataforma verdaderamente abierta y global para dispositivos móviles, con
todo el software para hacer funcionar un teléfono móvil pero sin los obstáculos de los
propietarios que han entorpecido la innovación en el mundo de los dispositivos móviles." [34]
Desde su aparición en 2008 han salido numerosas actualizaciones. Éstas corrigen fallos,
implementan nuevas funcionalidades, mejoran el rendimiento, etc. Las aplicaciones
desarrolladas son por regla general retrocompatibles.
2.2. Arquitectura
El sistema operativo Android posee una arquitectura con estructura multicapa formada
por cinco capas. Cada una de estas capas utiliza elementos de la capa inferior para realizar sus
funciones.
Kernel de Linux: Android se basa en la versión 2.6 del kernel de Linux para los
servicios básicos del sistema como seguridad, gestión de memoria y procesos,
conexiones de red y montaje de drivers. También actúa como una capa de
abstracción entre el hardware y el resto de las capas de la arquitectura.
Librerías: la capa que se sitúa justo sobre el kernel la componen las librerías
nativas de Android. Estas librerías están escritas en C/C++ y compiladas para la
arquitectura hardware específica del teléfono, tarea que normalmente realiza el
fabricante y que también se encarga de instalarlas en el terminal antes de ponerlo
a la venta. Su cometido es proporcionar funcionalidad a las aplicaciones, para
tareas que se repiten con frecuencia, evitando tener que codificarlas cada vez y
garantizando que se llevan a cabo de la forma más eficiente.
Algunas de las librerías son: Surface Manager, SGL, OpenGL, Media Framework,
WebKit, SSL, FreeType, SQLite y la librería C del sistema (libc).
Entorno de ejecución: Android incluye un conjunto de librerías básicas que
proporcionan la mayor parte de la funcionalidad disponible en las librerías de Java.
Además, Android dispone de una máquina virtual similar a la que dispone el
lenguaje Java, que ha sido rediseñada de forma que cuando un proceso es lanzado
a ejecución disponga de su propia instancia de máquina virtual. Así, un dispositivo
móvil puede tener en un momento dado múltiples instancias de máquinas
virtuales ejecutándose en paralelo, gestionándolas todas de forma eficiente y
equilibrada en términos de consumo de memoria. Dicha máquina virtual se
conoce bajo el nombre de Dalvik.
Framework de aplicaciones: mediante este nivel, los desarrolladores tienen
acceso a los dispositivos hardware del terminal, pueden ejecutar servicios en
segundo plano, activar alarmas, y todo lo necesario para implementar aplicaciones
de gran potencia. Para ello, se les da un acceso total al mismo API que se utiliza
para el desarrollo de las aplicaciones básicas del nivel aplicaciones. De esta forma
se favorece la reutilización de los componentes, y se posibilita el hecho de poder
cambiar componentes a gusto del usuario.
Aplicaciones: capa superior de la arquitectura. La forman las aplicaciones del
dispositivo: con interfaz de usuario o sin ella, nativas (C/C++) o administradas
(Java), instaladas de serie con el dispositivo por el fabricante o instaladas a
posteriori por el usuario.
Las posibilidades ofrece Android para trabajar con NFC son las siguientes:
Lectura escritura de diferentes tipos de tarjeta: todas las posibles tarjetas están
representadas por la clase Tag. Las propiedades de esta permiten obtener el tipo de
tarjeta aproximada y en función de la que sea obtener la clase que la representa ese
tipo. En el paquete android.nfc.tech se encuentran las clases disponibles, que
ofrecen soporte para los siguientes tipos de tarjeta: NFC-A (ISO 14443-3A), NFC-B
(ISO 14443-3B), NFC-F (JIS 6319-4), NFC-V (ISO 15693), ISO-DEP (ISO 14443-4),
MIFARE Classic, MIFARE Ultralight y NFC Forum NDEF tags.
Formateado de diferentes mensajes NDEF: permite trabajar alto nivel con los
diferentes tipos de mensajes NDEF (texto, URL...) tanto en la lectura como la
escritura.
Posibilidad de intercambiar mensajes NDEF entre teléfonos móviles: a modo de
conexión peer to peer, se pueden enviar o recibir mensajes NDEF como si de una
tarjeta se tratase.
Aviso de aproximación de un elemento NFC: cuando se aproxima una tarjeta u otro
móvil, se puede preparar para que la aplicación que este en primer plano reciba el
correspondiente aviso, con un Intent (como suele trabajarse en Android, a modo
de “Evento”) o se puede configurar para elegir que aplicación se abrirá por defecto
en caso de no estar ejecutándose ninguna aplicación relacionada.
Android 4.4 permite realizar transacciones seguras con NFC a través de Host Card
Emulation (HCE), el cual emula la norma ISO/IEC 7816 basado en tarjetas
inteligentes que utilizan el protocolo ISO/IEC 14443-4 (ISO-DEP).
3. SQLite
4. Android CyanogenMod
La última versión de CyanogenMod se basa en Android 4.4.X (Jelly Bean). Las porciones
de código modificado están escritas fundamentalmente por Cyanogen (Steve Kondik), pero
En la versión 9.1 (correspondiente a Android 4.0 – Ice Cream Sandwich), fue añadida la
emulación de tags únicamente con el protocolo ISO 14443-4.
Google App Engine (GAE) es un servicio de alojamiento web que presta Google de
forma gratuita hasta determinadas cuotas, el cual te permite ejecutar aplicaciones web sobre la
infraestructura de Google. Las aplicaciones App Engine son fáciles de crear, de mantener y de
ampliar al ir aumentando el tráfico y las necesidades de almacenamiento de datos. También
permite limitar el acceso a determinados usuarios.
CAPÍTULO 3:
DESARROLLO TÉCNICO DEL PFC
Este capítulo recoge las partes concernientes al análisis, diseño y programación del
sistema representadas con la mayor claridad y simplicidad posibles.
1. Análisis
Identificador RUY-XX
Nombre Nombre de requisito
Descripción Descripción de requisito
Necesidad Necesidad de requisito Prioridad Prioridad de requisito
Estabilidad Estabilidad de requisito Verificabilidad Verificabilidad de requisito
Tabla 13: Formato tabla de requisito de usuario
Identificador RUC-01
Nombre Lectura de tarjetas RFID
La aplicación permitirá leer tarjetas RFID de tipo Mifare Ultralight y Mifare
Descripción
Classic.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 14: Requisito RUC-01 – Lectura de tarjetas RFID
Identificador RUC-02
Nombre Selección de claves en lectura
Descripción La aplicación permitirá seleccionar las claves deseadas para leer tarjetas RFID.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 15: Requisito RUC-02 – Selección de claves en lectura
Identificador RUC-03
Nombre Escritura de tarjetas RFID
La aplicación permitirá escribir información en tarjetas RFID de tipo Mifare
Descripción
Ultralight y Mifare Classic.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 16: Requisito RUC-03 – Escritura de tarjetas RFID
Identificador RUC-04
Nombre Selección de claves en escritura
Descripción La aplicación permitirá seleccionar las claves deseadas para escribir tarjetas RFID.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 17: Requisito RUC-04 – Selección de claves en escritura
Identificador RUC-05
Nombre Gestión de tarjetas RFID
La aplicación permitirá la modificación y borrado de tarjetas RFID previamente
Descripción
leídas y almacenadas, así como la creación de nuevas tarjetas.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 18: Requisito RUC-05 – Gestión de tarjetas RFID
Identificador RUC-06
Nombre Visualización de tarjetas RFID
La aplicación permitirá ver el contenido de tarjetas RFID previamente leídas o
Descripción
almacenadas en formato ASCII, hexadecimal y como tarjeta de transporte.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 19: Requisito RUC-06 – Visualización de tarjetas RFID
Identificador RUC-07
Nombre Visualización de condiciones de acceso
La aplicación permitirá ver las condiciones de acceso de tarjetas RFID
Descripción
previamente leídas o almacenadas.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 20: Requisito RUC-07 – Visualización de condiciones de acceso
Identificador RUC-08
Nombre Importación de tarjetas RFID
La aplicación permitirá importar tarjetas RFID desde ficheros ubicados en el
Descripción
dispositivo.
Necesidad Opcional Prioridad Baja
Estabilidad Estable Verificabilidad Media
Tabla 21: Requisito RUC-08 – Importación de tarjetas RFID
Identificador RUC-09
Nombre Estadísticas
La aplicación realizará unas estadísticas de uso sobre las claves utilizadas para leer
Descripción
tarjetas Mifare Classic y las mandará a un backend.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 22: Requisito RUC-09 – Estadísticas
Identificador RUC-10
Nombre Gestión de claves
Descripción La aplicación permitirá la creación, modificación y borrado de claves.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 23: Requisito RUC-10 – Gestión de claves
Identificador RUC-11
Nombre Gestión de grupos de claves
Descripción La aplicación permitirá la creación, modificación y borrado de grupos de claves.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 24: Requisito RUC-11 – Gestión de grupos de claves
Identificador RUC-12
Nombre Importación de claves
Descripción La aplicación permitirá importar claves desde ficheros ubicados en el dispositivo.
Necesidad Opcional Prioridad Baja
Estabilidad Estable Verificabilidad Media
Tabla 25: Requisito RUC-12 – Importación de claves
Identificador RUC-13
Nombre Activar tecnología NFC
Descripción La aplicación permitirá activar la tecnología NFC del dispositivo.
Necesidad Opcional Prioridad Baja
Estabilidad Estable Verificabilidad Baja
Tabla 26: Requisito RUC-13 – Activar tecnología NFC
Identificador RUR-01
Nombre Lectura completa
La lectura de una tarjeta RFID debe ser completa, es decir, no pueden leerse unos
Descripción
bloques específicos.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 27: Requisito RUR-01 – Lectura completa
Identificador RUR-02
Nombre Claves para lectura
Deben conocerse todas las claves para poder leer una tarjeta RFID de tipo Mifare
Descripción
Classic.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 28: Requisito RUR-02 – Claves para lectura
Identificador RUR-03
Nombre Escritura completa
La escritura de una tarjeta RFID debe ser completa, es decir, no pueden escribirse
Descripción
unos bloques específicos.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 29: Requisito RUR-03 – Escritura completa
Identificador RUR-04
Nombre Claves para escritura
Deben conocerse todas las claves para poder escribir en una tarjeta RFID de tipo
Descripción
Mifare Classic.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 30: Requisito RUR-04 – Claves para escritura
Identificador RUR-05
Nombre Cancelación de escritura
La escritura de una tarjeta RFID no puede ser cancelada una vez que haya
Descripción
comenzado por riesgo de inutilizar la tarjeta.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 31: Requisito RUR-05 – Cancelación de escritura
Identificador RUR-06
Nombre Tipo de tarjeta en escritura
El contenido de un tipo de tarjeta almacenado en el dispositivo solo puede ser
Descripción
escrito en una tarjeta del mismo tipo.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 32: Requisito RUR-06 – Tipo de tarjeta en escritura
Identificador RUR-07
Nombre Nombre de tarjeta único
Descripción No pueden almacenarse dos tarjetas con el mismo nombre.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 33: Requisito RUR-07 – Nombre de tarjeta único
Identificador RUR-08
Nombre Clave única
Descripción No pueden almacenarse dos claves iguales.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Media
Tabla 34: Requisito RUR-08 – Clave única
Identificador RUR-09
Nombre Nombre de grupo de claves único
Descripción No pueden almacenarse dos grupos de claves con el mismo nombre.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Media
Tabla 35: Requisito RUR-09 – Nombre de grupo de claves único
Identificador RUR-10
Nombre Nombre del tipo de tarjeta único
Descripción No pueden almacenarse dos tipos de tarjetas con el mismo nombre.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Media
Tabla 36: Requisito RUR-10 – Nombre del tipo de tarjeta único
Identificador RUR-11
Nombre Formato tarjeta Mifare Ultralight
El formato de la tarjeta RFID de tipo Mifare Ultralight será de 16 páginas con 8
Descripción
caracteres hexadecimales en cada uno de ellos.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 37: Requisito RUR-11 – Formato tarjeta Mifare Ultralight
Identificador RUR-12
Nombre Formato tarjeta Mifare Classic Mini
El formato de la tarjeta RFID de tipo Mifare Classic Mini será de 5 sectores cada
Descripción
uno compuesto de 4 bloques de 32 caracteres hexadecimales.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 38: Requisito RUR-12 – Formato tarjeta Mifare Classic Mini
Identificador RUR-13
Nombre Formato tarjeta Mifare Classic 1K
El formato de la tarjeta RFID de tipo Mifare Classic 1K será de 16 sectores cada uno
Descripción
compuesto de 4 bloques de 32 caracteres hexadecimales.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 39: Requisito RUR-13 – Formato tarjeta Mifare Classic 1K
Identificador RUR-14
Nombre Formato tarjeta Mifare Classic 4K
El formato de la tarjeta RFID de tipo Mifare Classic 4K será de 40 sectores donde
Descripción los 32 primeros estarán compuestos de 4 bloques y los 8 últimos de 16 bloques. En
ambos casos cada bloque estará formado por 32 caracteres hexadecimales.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 40: Requisito RUR-14 – Formato tarjeta Mifare Classic 4K
Identificador RUR-15
Nombre Formato clave
Descripción Las claves solo pueden contener valores hexadecimales.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Media
Tabla 41: Requisito RUR-15 – Formato clave
Identificador RUR-16
Nombre Longitud clave
Descripción Las claves deben contener 12 caracteres alfanuméricos.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Media
Tabla 42: Requisito RUR-16 – Longitud clave
Identificador RUR-17
Nombre Tarjeta por tipo
Descripción Una tarjeta solo puede relacionarse con un tipo de tarjeta.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 43: Requisito RUR-17 – Tarjeta por tipo
Identificador RUR-18
Nombre Clave por tarjeta
Descripción Una clave puede relacionarse con múltiples tarjetas.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 44: Requisito RUR-18 – Clave por tarjeta
Identificador RUR-19
Nombre Clave por grupo de clave
Descripción Una clave puede relacionarse con múltiples grupos de claves.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 45: Requisito RUR-19 – Clave por grupo de clave
Identificador RUR-20
Nombre Claves por defecto
Por defecto la aplicación constará de unas claves que no podrán ser modificadas
Descripción
ni eliminadas.
Necesidad Esencial Prioridad Media
Estabilidad Estable Verificabilidad Baja
Tabla 46: Requisito RUR-20 – Claves por defecto
Identificador RUR-21
Nombre Tipos de tarjeta por defecto
Por defecto la aplicación constará de los tipos de tarjetas “Control de acceso”,
Descripción
“Pasaporte” y “Transporte”.
Necesidad Esencial Prioridad Media
Estabilidad Estable Verificabilidad Baja
Tabla 47: Requisito RUR-21 – Tipos de tarjeta por defecto
Identificador RUR-22
Nombre Ruta inicial en importe de tarjetas
Descripción Hasta que es modificada, la ruta para la importación de tarjetas es “/tags”.
Necesidad Esencial Prioridad Media
Estabilidad Estable Verificabilidad Baja
Tabla 48: Requisito RUR-22 – Ruta inicial en importe de tarjetas
Identificador RUR-23
Nombre Ruta inicial en importe de claves
Descripción Hasta que es modificada, la ruta para la importación de claves es “/keys”.
Necesidad Esencial Prioridad Media
Estabilidad Estable Verificabilidad Baja
Tabla 49: Requisito RUR-23 – Ruta incial en importe de claves
Identificador RUR-24
Nombre Base de datos
Descripción Se dispone de una base de datos para almacenar los datos de su aplicación.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 50: Requisito RUR-24 – Base de datos
Identificador RUR-25
Nombre Backend
Se dispone de un backend en un servidor remoto para almacenar la información
Descripción
de las estadísticas de uso de las claves.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 51: Requisito RUR-25 – Backend
Identificador RUR-26
Nombre Lenguaje Android
Lenguaje Android (versión mínima Ice Cream Sandwich – 4.0.4) para el desarrollo
Descripción
de la aplicación.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 52: Requisito RUR-26 – Lenguaje Android
Identificador RUR-27
Nombre Lenguaje Java
Descripción Lenguaje Java (v6) para el desarrollo del backend.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 53: Requisito RUR-27 – Lenguaje Java
Identificador RUR-28
Nombre Lenguaje SQLite
Descripción Lenguaje SQLite para el desarrollo de la base de datos de la aplicación.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 54: Requisito RUR-28 – Lenguaje SQLite
Identificador RUR-29
Nombre Compatibilidad Android
La aplicación será compatible con cualquier dispositivo con la versión de Android
Descripción
Jelly Bean (v4.1) o superior.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 55: Requisito RUR-29 – Compatibilidad Android
Identificador RUR-30
Nombre Acceso concurrente al backend
Se permitirá el acceso concurrente a los datos ubicados en el backend
Descripción
permitiendo la modificación de información desde más de un dispositivo.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 56: Requisito RUR-30 – Acceso concurrente al backend
Identificador RUR-31
Nombre Permisos de la aplicación
La aplicación tendrá los permisos necesarios para utilizar la tecnología NFC,
Descripción
lectura en tarjeta de almacenamiento externa, internet, y acceso al backend.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 57: Requisito RUR-31 – Permisos de la aplicación
Identificador RUR-32
Nombre Idioma
Descripción La aplicación estará disponible en inglés y español.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 58: Requisito RUR-32 – Idioma
Identificador RUR-33
Nombre Conexión a backend
La aplicación usará conexiones 3G o Wifi para comunicar el dispositivo con el
Descripción
backend.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 59: Requisito RUR-33 – Conexión a backend
Identificador RUR-34
Nombre Tecnología NFC
Descripción La aplicación usará la tecnología NFC para la lectura y escritura de tarjetas RFID.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 60: Requisito RUR-34 – Tecnología NFC
Identificador RUR-35
Nombre Aplicación eficiente
Descripción La aplicación debe ser rápida, eficaz e intuitiva.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 61: Requisito RUR-35 – Aplicación eficiente
Identificador RUR-36
Nombre Aplicación escalable
La aplicación debe ser escalable ya que en un futuro pueden añadirse nuevas
Descripción
funcionalidades.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 62: Requisito RUR-36 – Aplicación escalable
Identificador RUR-37
Nombre Gestión de fallos
Descripción La aplicación debe gestionar fallos.
Necesidad Esencial Prioridad Alta
Estabilidad Estable Verificabilidad Alta
Tabla 63: Requisito RUR-37 – Gestión de fallos
Identificador CU-XX
Nombre Nombre de caso de uso
Actores Actores de caso de uso
Objetivo Objetivo de caso de uso
Precondiciones Precondiciones de caso de uso
Postcondiciones Postcondiciones de caso de uso
Escenario básico Escenario básico de caso de uso
Escenario alternativo XX
Descripción Descripción escenario alternativo
Flujo alternativo Flujo de ejecución del escenario alternativo
Tabla 64: Formato tabla de caso de uso
Escenario alternativo 01
La información a guardar es incompleta o el formato del contenido de la
tarjeta no es válido. La aplicación muestra el mensaje “Debe seleccionar el tipo
Descripción de tarjeta”, “Debe escribir el nombre de la tarjeta”, “Algún sector no tiene 4 o
16 bloques”, “Algún bloque contiene datos no hexadecimal” o “Algún bloque
no tiene 16 bytes (32 caracteres)”.
1. Corregir información errónea.
Flujo alternativo
2. Pulsar en el icono “Guardar” ubicado en la barra de menú.
Escenario alternativo 02
Ya existe una tarjeta RFID con el mismo nombre. La aplicación muestra un
Descripción
diálogo para reemplazar la tarjeta existente.
Flujo alternativo 1. Pulsar sobre el botón “Reemplazar”.
Escenario alternativo 03
Ya existe una tarjeta RFID con el mismo nombre. La aplicación muestra un
Descripción
diálogo para renombrar la nueva tarjeta.
1. Pulsar sobre el botón “Renombrar”.
Flujo alternativo 2. Escribir el nuevo nombre de la tarjeta.
3. Pulsar el botón “Aceptar”.
Tabla 65: Caso de Uso CU-01 – Leer tarjeta RFID
Identificador CU-02
Nombre Escribir tarjeta RFID
Actores Usuario
Escribir el contenido de una tarjeta RFID almacenada en el dispositivo en una
Objetivo
tarjeta RFID externa.
Tener activada la tecnología NFC en el dispositivo.
Tener claves almacenadas en el dispositivo.
Precondiciones
Tener grupos de claves almacenados en el dispositivo.
Tener almacenada al menos una tarjeta RFID en el dispositivo.
La tarjeta RFID contendrá la información escrita por el dispositivo.
El dispositivo mostrará por pantalla la lista de tarjetas RFID almacenadas
Postcondiciones
en el dispositivo.
El dispositivo mostrará por pantalla el mensaje temporal “Tag escrito”.
1. Pulsar sobre el botón “Escribir”.
2. Seleccionar la tarjeta que se quiere escribir.
Escenario básico 3. Seleccionar las claves utilizadas para autenticar y escribir la tarjeta RFID
(Ninguna, Todas o Grupos de claves).
4. Acercar tarjeta RFID al teléfono.
Escenario alternativo 01
La tarjeta externa contiene bloques que no pueden ser escritos. La aplicación
Descripción
muestra un diálogo con los sectores imposibles de escribir.
Flujo alternativo 1. Pulsar sobre el botón “Escribir tanto como sea posible”.
Tabla 66: Caso de Uso CU-02 – Escribir Tarjeta RFID
Identificador CU-03
Nombre Editar tarjeta RFID
Actores Usuario
Objetivo Modificar el contenido de una tarjeta RFID almacenado en el dispositivo.
Tener almacenada en el dispositivo aquella tarjeta RFID que va a ser
Precondiciones
modificada.
El dispositivo tendrá almacenada la tarjeta RFID ya modificada en su
base de datos.
El dispositivo mostrará por pantalla la lista actualizada de tarjetas RFID
Postcondiciones
almacenadas en el dispositivo.
El dispositivo mostrará por pantalla el mensaje temportal “Tag
almacenado”.
1. Pulsar sobre el botón “Ver escaneados”.
2. Pulsar sobre la tarjeta RFID que se quiere modificar.
Escenario básico
3. Editar los datos que se consideren estimados.
4. Pulsar en el icono “Guardar” ubicado en la barra de menú.
Escenario alternativo 01
La información a guardar es incompleta o el formato del contenido de la
tarjeta no es válido. La aplicación muestra el mensaje “Debe seleccionar el tipo
Descripción de tarjeta”, “Debe escribir el nombre de la tarjeta”, “Algún sector no tiene 4 o
16 bloques”, “Algún bloque contiene datos no hexadecimal” o “Algún bloque
no tiene 16 bytes (32 caracteres)”.
1. Corregir información errónea.
Flujo alternativo
2. Pulsar en el icono “Guardar” ubicado en la barra de menú.
Escenario alternativo 02
Ya existe una tarjeta RFID con el mismo nombre. La aplicación muestra un
Descripción
diálogo para reemplazar la tarjeta existente.
Flujo alternativo 1. Pulsar sobre el botón “Reemplazar”.
Escenario alternativo 03
Ya existe una tarjeta RFID con el mismo nombre. La aplicación muestra un
Descripción
diálogo para renombrar la nueva tarjeta.
1. Pulsar sobre el botón “Renombrar”.
Flujo alternativo 2. Escribir el nuevo nombre de la tarjeta.
3. Pulsar el botón “Aceptar”.
Tabla 67: Caso de Uso CU-03 – Editar tarjeta RFID
Identificador CU-04
Nombre Crear tarjeta RFID
Actores Usuario
Crear y almacenar el contenido de una tarjeta RFID en la base de datos del
Objetivo
dispositivo.
Precondiciones
El dispositivo tendrá almacenada la nueva tarjeta RFID en su base de
datos.
Postcondiciones El dispositivo mostrará por pantalla el mensaje “Tag almacenado”.
El dispositivo mostrará por pantalla la lista actualizada de tarjetas RFID
almacenadas en el dispositivo.
1. Pulsar sobre el botón “Ver escaneados”.
2. Seleccionar la opción “Crear tag” en el menú desplegable.
3. Seleccionar el tamaño de la tarjeta a crear (Mifare Ultralight, Mifare
Classic Mini, Mifare Classic 1K o Mifare Classic 4K).
Escenario básico
4. Escribir el nombre que identificará a esta tarjeta.
5. Seleccionar el tipo de tarjeta.
6. Modificar el contenido de la tarjeta que se considere estimado.
7. Pulsar en el icono “Guardar” ubicado en la barra de menú.
Escenario alternativo 01
La información a guardar es incompleta o el formato del contenido de la
tarjeta no es válido. La aplicación muestra el mensaje “Debe seleccionar el tipo
Descripción de tarjeta”, “Debe escribir el nombre de la tarjeta”, “Algún sector no tiene 4 o
16 bloques”, “Algún bloque contiene datos no hexadecimal” o “Algún bloque
no tiene 16 bytes (32 caracteres)”.
1. Corregir información errónea.
Flujo alternativo
2. Pulsar en el icono “Guardar” ubicado en la barra de menú.
Escenario alternativo 02
Ya existe una tarjeta RFID con el mismo nombre. La aplicación muestra un
Descripción
diálogo para reemplazar la tarjeta existente.
Flujo alternativo 1. Pulsar sobre el botón “Reemplazar”.
Escenario alternativo 03
Ya existe una tarjeta RFID con el mismo nombre. La aplicación muestra un
Descripción
diálogo para renombrar la nueva tarjeta.
1. Pulsar sobre el botón “Renombrar”.
Flujo alternativo 2. Escribir el nuevo nombre de la tarjeta.
3. Pulsar el botón “Aceptar”.
Tabla 68: Caso de Uso CU-04 – Crear tarjeta RFID
Identificador CU-05
Nombre Eliminar tarjeta RFID
Actores Usuario
Objetivo Eliminar una tarjeta RFID de la base de datos del dispositivo.
Tener almacenada en el dispositivo aquella tarjeta RFID que va a ser
Precondiciones
eliminada.
La tarjeta RFID no estará almacenada en el dispositivo.
Postcondiciones El dispositivo mostrará por pantalla la lista actualizada de tarjetas RFID
almacenadas en el dispositivo.
1. Pulsar sobre el botón “Ver escaneados”.
Escenario básico 2. Mantener pulsada la tarjeta RFID de la lista a eliminar.
3. Pulsar en el botón “Aceptar”.
Tabla 69: Caso de Uso CU-05 – Eliminar tarjeta RFID
Identificador CU-06
Nombre Importar tarjetas RFID
Actores Usuario
Objetivo Importar tarjetas RFID ubicadas en ficheros dentro del dispositivo.
Poseer tarjetas RFID almacenadas en ficheros con extensión .dmp dentro
Precondiciones
del dispositivo.
El dispositivo tendrá almacenadas las nuevas tarjetas RFID en su base de
datos.
Postcondiciones El dispositivo mostrará por pantalla el mensaje “Tags almacenados”.
El dispositivo mostrará por pantalla la lista actualizada de tarjetas RFID
almacenadas en el dispositivo.
1. Pulsar sobre el botón “Ver escaneados”.
2. Seleccionar la opción “Importar tags” en el menú desplegable.
3. Escribir el directorio donde se encuentran las tarjetas RFID a importar.
Escenario básico
4. Activar/Desactivar “Importar claves de tarjeta” para almacenar las claves
de las tarjetas RFID a importar.
5. Pulsar sobre el botón “Aceptar”.
Escenario alternativo 01
No se ha indicado ningún directorio del que importar tarjetas RFID. La
Descripción
aplicación muestra el mensaje “Ubicación del fichero de tags vacío”.
1. Escribir el directorio donde se encuentran las tarjetas RFID a importar.
Flujo alternativo
2. Pulsar sobre el botón “Aceptar”.
Escenario alternativo 02
El directorio indicado no existe. La aplicación muestra el mensaje “Archivo no
Descripción
encontrado”.
1. Escribir el directorio correcto donde se encuentran las tarjetas RFID a
Flujo alternativo importar.
2. Pulsar sobre el botón “Aceptar”.
Tabla 70: Caso de Uso CU-06 – Importar tarjetas RFID
Identificador CU-07
Nombre Ver tarjeta en formato ASCII
Actores Usuario
Objetivo Ver el contenido de una tarjeta RFID en formato ASCII.
Precondiciones Haber leído o tener almacenada una tarjeta RFID en el dispositivo.
El dispositivo mostrará por pantalla el contenido de la tarjeta RFID con
Postcondiciones
formato ASCII.
1. El usuario lee [Caso de Uso CU-01 – Leer tarjeta RFID] o edita [Caso de
Escenario básico Uso CU-03 – Editar tarjeta RFID] una tarjeta RFID.
2. Seleccionar la opción “Ver como ASCII” en el menú desplegable.
Escenario alternativo 01
El formato del contenido de la tarjeta no es válido. La aplicación muestra el
Descripción mensaje “Algún sector no tiene 4 o 16 bloques”, “Algún bloque contiene datos
no hexadecimal” o “Algún bloque no tiene 16 bytes (32 caracteres)”.
1. Corregir información errónea.
Flujo alternativo
2. Pulsar sobre la opción “Ver como ASCII” en el menú desplegable.
Tabla 71: Caso de Uso CU-07 – Ver tarjeta en formato ASCII
Identificador CU-08
Nombre Ver tarjeta en formato hexadecimal
Actores Usuario
Objetivo Ver el contenido de una tarjeta RFID en formato hexadecimal.
Haber leído o tener almacenada una tarjeta RFID en el dispositivo.
Precondiciones
Estar visualizando el contenido de la tarjeta en formato ASCII.
El dispositivo mostrará por pantalla el contenido de la tarjeta RFID con
Postcondiciones
formato hexadecimal.
1. El usuario ve la tarjeta en formato ASCII [Caso de Uso CU-07 – Ver
Escenario básico tarjeta en formato ASCII].
2. Seleccionar la opción “Ver como HEX” en el menú desplegable.
Tabla 72: Caso de Uso CU-08 – Ver tarjeta en formato hexadecimal
Identificador CU-09
Nombre Ver como tarjeta de transporte
Actores Usuario
Objetivo Ver el contenido de una tarjeta RFID como tarjeta de transporte.
Precondiciones Haber leído o tener almacenada una tarjeta RFID en el dispositivo.
El dispositivo mostrará por pantalla el contenido de la tarjeta RFID como
Postcondiciones
tarjeta de transporte.
1. El usuario lee [Caso de Uso CU-01 – Leer tarjeta RFID] o edita [Caso de
Uso CU-03 – Editar tarjeta RFID] una tarjeta RFID.
Escenario básico
2. Seleccionar la opción “Ver como tarjeta de transporte” en el menú
desplegable.
Escenario alternativo 01
El formato del contenido de la tarjeta no es válido. La aplicación muestra el
Descripción mensaje “Algún sector no tiene 4 o 16 bloques”, “Algún bloque contiene datos
no hexadecimal” o “Algún bloque no tiene 16 bytes (32 caracteres)”.
1. Corregir información errónea.
Flujo alternativo 2. Pulsar sobre la opción “Ver como tarjeta de transporte” en el menú
desplegable.
Tabla 73: Caso de Uso CU-09 – Ver como tarjeta de transporte
Identificador CU-10
Nombre Ver condiciones de acceso
Actores Usuario
Objetivo Ver las condiciones de acceso de una tarjeta RFID.
Precondiciones Haber leído o tener almacenada una tarjeta RFID en el dispositivo.
El dispositivo mostrara por pantalla las condiciones de acceso de la
Postcondiciones
tarjeta RFID.
1. El usuario lee [Caso de Uso CU-01 – Leer tarjeta RFID] o edita [Caso de
Uso CU-03 – Editar tarjeta RFID] una tarjeta RFID.
Escenario básico
2. Seleccionar la opción “Ver condiciones de acceso” en el menú
desplegable.
Escenario alternativo 01
El formato del contenido de la tarjeta no es válido. La aplicación muestra el
Descripción mensaje “Algún sector no tiene 4 o 16 bloques”, “Algún bloque contiene datos
no hexadecimal” o “Algún bloque no tiene 16 bytes (32 caracteres)”.
1. Corregir información errónea.
Flujo alternativo 2. Pulsar sobre la opción “Ver condiciones de acceso” en el menú
desplegable.
Tabla 74: Caso de Uso CU-10 – Ver condiciones de acceso
Identificador CU-11
Nombre Ver estadísticas
Actores Usuario
Ver las estadísticas de uso de las claves empleadas para la lectura y escritura de
Objetivo
tarjetas RFID.
Precondiciones El dispositivo debe tener acceso a internet.
El dispositivo mostrara por pantalla las estadísticas de las claves
Postcondiciones utilizadas o el mensaje “No existen claves” si no hay claves almacenadas
en el servidor remoto.
Escenario básico 1. Pulsar sobre el botón “Estadísticas”.
Tabla 75: Caso de Uso CU-11 – Ver estadísticas
Identificador CU-12
Nombre Crear clave
Actores Usuario
Objetivo Almacenar una o varias claves nuevas en la base de datos del dispositivo.
Precondiciones Las claves a crear no estén almacenadas en el dispositivo.
El dispositivo tendrá almacenadas las nuevas claves en su base de datos.
El dispositivo mostrará por pantalla el mensaje “Claves almacenadas”.
Postcondiciones
El dispositivo mostrará por pantalla la lista actualizada de claves
almacenadas en el dispositivo.
1. Pulsar sobre el botón “Claves”.
2. Pulsar en el icono “Nuevas claves” ubicado en la barra de menú.
Escenario básico
3. Escribir las claves separadas por un salto de línea.
4. Pulsar sobre el botón “Aceptar”.
Escenario alternativo 01
La clave escrita posee una longitud inválida. La aplicación muestra el mensaje
Descripción
“La clave debe tener 12 caracteres alfanuméricos”.
1. Corregir información errónea.
Flujo alternativo
2. Pulsar sobre el botón “Aceptar”.
Tabla 76: Caso de Uso CU-12 – Crear clave
Identificador CU-13
Nombre Editar clave
Actores Usuario
Objetivo Editar una clave de la base de datos del dispositivo.
La clave a modificar ya debe estar almacenada en el dispositivo.
Precondiciones
La clave a modificar debe haber sido creada previamente por el usuario.
El dispositivo tendrá almacenada la nueva clave en su base de datos.
El dispositivo mostrará por pantalla el mensaje “Clave modificada”.
Postcondiciones
El dispositivo mostrará por pantalla la lista actualizada de claves
almacenadas en el dispositivo.
1. Pulsar sobre el botón “Claves”.
2. Pulsar sobre la clave a modificar.
Escenario básico
3. Editar la clave.
4. Pulsar sobre el botón “Aceptar”.
Escenario alternativo 01
La clave escrita posee una longitud inválida. La aplicación muestra el mensaje
Descripción
“La clave debe tener 12 caracteres alfanuméricos”.
1. Corregir información errónea.
Flujo alternativo
2. Pulsar sobre el botón “Aceptar”.
Tabla 77: Caso de Uso CU-13 – Editar clave
Identificador CU-14
Nombre Eliminar clave
Actores Usuario
Objetivo Eliminar una clave de la base de datos del dispositivo.
La clave a eliminar ya debe estar almacenada en el dispositivo.
Precondiciones
La clave a eliminar debe haber sido creada por el usuario.
La clave no estará almacenada en la base de datos del dispositivo.
Postcondiciones El dispositivo mostrará por pantalla la lista actualizada de claves
almacenadas en el dispositivo.
1. Pulsar sobre el botón “Claves”.
Escenario básico 2. Mantener pulsada la clave a eliminar.
3. Pulsar sobre el botón “Aceptar”.
Tabla 78: Caso de Uso CU-14 – Eliminar clave
Identificador CU-15
Nombre Crear grupo de claves
Actores Usuario
Objetivo Almacenar un grupo de claves en la base de datos del dispositivo.
Las claves que formarán el grupo de claves deben estar previamente
Precondiciones
almacenadas en el dispositivo.
El dispositivo tendrá almacenado el nuevo grupo de claves en su base de
datos.
El dispositivo mostrará por pantalla el mensaje “Grupo de claves
Postcondiciones
almacenado”.
El dispositivo mostrará por pantalla la lista actualizada de los grupos de
claves almacenados en el dispositivo.
1. Pulsar sobre el botón “Claves”.
2. Seleccionar la opción “Crear grupo de claves” en el menú desplegable.
Escenario básico 3. Escribir el nombre que identificará al grupo de claves.
4. Seleccionar claves.
5. Pulsar sobre el botón “Aceptar”.
Escenario alternativo 01
El nombre del grupo de claves está vacío. La aplicación muestra el mensaje “El
Descripción
nombre del grupo debe tener contenido”.
1. Escribir el nombre que identificará al grupo de claves.
Flujo alternativo
2. Pulsar sobre el botón “Aceptar”.
Escenario alternativo 02
No se ha seleccionado ninguna clave de la lista. La aplicación muestra el
Descripción
mensaje “No hay claves seleccionadas”.
1. Seleccionar claves.
Flujo alternativo
2. Pulsar sobre el botón “Aceptar”.
Tabla 79: Caso de Uso CU-15 – Crear grupo de claves
Identificador CU-16
Nombre Editar grupo de claves
Actores Usuario
Objetivo Modificar un grupo de claves de la base de datos del dispositivo.
Las claves que formarán el grupo de claves deben estar previamente
almacenadas en el dispositivo.
Precondiciones
El grupo de claves a modificar debe estar previamente almacenado en el
dispositivo.
El dispositivo tendrá almacenado en su base de datos el grupo de claves
modificado.
El dispositivo mostrará por pantalla el mensaje “Grupo de claves
Postcondiciones
modificado”.
El dispositivo mostrará por pantalla la lista actualizada de los grupos de
claves almacenados en el dispositivo.
1. Pulsar sobre el botón “Claves”.
2. Arrastrar la pantalla hacia la derecha para cambiar a la sección
“GRUPOS”.
Escenario básico 3. Seleccionar de la lista el grupo de claves a modificar.
4. Pulsar en el icono “Editar” ubicado en la barra de menú.
5. Modificar los datos que se deseen.
6. Pulsar sobre el botón “Aceptar”.
Escenario alternativo 01
El nombre del grupo de claves está vacío. La aplicación muestra el mensaje “El
Descripción
nombre del grupo debe tener contenido”.
1. Escribir el nombre que identificará al grupo de claves.
Flujo alternativo
2. Pulsar sobre el botón “Aceptar”.
Escenario alternativo 02
No se ha seleccionado ninguna clave de la lista. La aplicación muestra el
Descripción
mensaje “No hay claves seleccionadas”.
1. Seleccionar claves.
Flujo alternativo
2. Pulsar sobre el botón “Aceptar”.
Tabla 80: Caso de Uso CU-16 – Editar grupo de claves
Identificador CU-17
Nombre Eliminar grupo de claves
Actores Usuario
Objetivo Eliminar un grupo de claves de la base de datos del dispositivo.
Precondiciones El grupo de claves debe estar almacenado en el dispositivo.
El grupo de claves no estará almacenada en la base de datos del
dispositivo.
Postcondiciones
El dispositivo mostrará por pantalla la lista actualizada de los grupos de
claves almacenados en el dispositivo.
1. Pulsar sobre el botón “Claves”.
2. Arrastrar la pantalla hacia la derecha para cambiar a la sección
Escenario básico “GRUPOS”.
3. Mantener pulsado en la lista el grupo de claves a eliminar.
4. Pulsar sobre el botón “Aceptar”.
Tabla 81: Caso de Uso CU-17 – Eliminar grupo de claves
Identificador CU-18
Nombre Importar claves
Actores Usuario
Objetivo Importar claves ubicadas en ficheros dentro del dispositivo.
Poseer tarjetas RFID almacenadas en ficheros con extensión .dmp dentro
Precondiciones
del dispositivo.
El dispositivo tendrá almacenadas las nuevas claves en su base de datos.
El dispositivo mostrará por pantalla el mensaje “Claves almacenadas”.
Postcondiciones
El dispositivo mostrará por pantalla la lista actualizada de claves
almacenadas en el dispositivo.
1. Pulsar sobre el botón “Claves”.
2. Seleccionar la opción “Importar claves” en el menú desplegable.
Escenario básico 3. Escribir el directorio donde se encuentran los ficheros de claves a
importar.
4. Pulsar sobre el botón “Aceptar”.
Escenario alternativo 01
No se ha indicado ningún directorio del que importar claves. La aplicación
Descripción
muestra el mensaje “Ubicación del fichero de claves vacío”.
1. Seleccionar la opción “Importar claves” en el menú desplegable.
2. Escribir el directorio donde se encuentran los ficheros de claves a
Flujo alternativo
importar.
3. Pulsar sobre el botón “Aceptar”.
Escenario alternativo 02
El directorio indicado no existe. La aplicación muestra el mensaje “Archivo no
Descripción
encontrado”.
1. Seleccionar la opción “Importar claves” en el menú desplegable.
2. Escribir el directorio correcto donde se encuentran los ficheros de claves
Flujo alternativo
a importar.
3. Pulsar sobre el botón “Aceptar”.
Tabla 82: Caso de Uso CU-18 – Importar claves
o Y:
F: requisito software funcional.
NF-OP: requisito software no funcional de operación.
NF-INT: requisito software no funcional de operación.
NF-REC: requisito software no funcional de recursos.
NF-REN: requisito software no funcional de rendimiento.
o XX: número que identifica al requisito.
Tipo: define el tipo de requerimiento. Solamente puede tomar los valores:
o Funcional: describen las funcionalidades del sistema, es decir, lo que éste
debe hacer.
o Operación: identifican a los requisitos no funcionales de operación.
o Interfaz: identifican a los requisitos no funcionales de interfaz.
o Recurso: identifican a los requisitos no funcionales de recursos.
o Rendimiento: identifican a los requisitos no funcionales de rendimiento.
Nombre: identificativo del requisito, es un pequeño resumen de lo que representa
el requisito.
Descripción: corresponde a la descripción del requisito.
Fuente: indica el origen de donde proviene el requisito. En el caso de los
Requisitos Software dicha fuente hará referencia a uno o varios Requisitos de
Usuario definidos en el apartado 1.1 Requisitos de usuario.
Necesidad: corresponde a lo imprescindible que resulta para el proyecto que
dicho requisito sea implementado en el sistema. Los posibles valores son:
o Esencial: es imprescindible que se implemente dicho requisito.
o Deseable: se debe implementar el requisito pero no es algo esencial.
o Opcional: se puede o no implementar el requisito ya que no es esencial
para el correcto funcionamiento del sistema.
Prioridad: indica la importancia del requisito en el proceso de diseño e
implementación. Los posibles valores son:
o Alta: es la prioridad máxima. El requisito debe ser diseñado y añadido al
sistema en primer lugar.
o Media: el requisito debe ser diseñado y añadido al sistema tras haber
acabado con los requisitos de prioridad alta.
RUR-06
RUR-09
RUR-08
RUR-04
RUC-06
RUC-09
RUC-08
RUR-02
RUR-20
RUC-04
RUR-07
RUR-05
RUR-03
RUR-30
RUR-26
RUR-29
RUR-28
RUC-02
RUR-24
RUR-36
RUC-07
RUC-05
RUC-03
RUR-34
RUR-22
RUR-27
RUR-25
RUR-01
RUR-32
RUR-10
RUR-23
RUR-37
RUR-35
RUR-33
RUR-16
RUR-19
RUR-18
RUC-01
RUC-10
RUR-14
RUR-12
RUR-21
RUR-17
RUR-15
RUR-31
RUR-13
RUC-12
RUC-13
RUR-11
RUC-11
RSF-01 X X X X X X X X
RSF-02 X X X X X X X X X
RSF-03 X X X X X X X X X
RSF-04 X X X X X X X X X
RSF-05 X X X
RSF-06 X X
RSF-07 X X
RSF-08 X
RSF-09 X X
RSF-10 X X
RSF-11 X
RSF-12 X X X X X X X
RSF-13 X X X X X X X X
RSF-14 X X X X X X X X
RSF-15 X X X X X X X X
RSF-16 X X
RSF-17 X X
RSF-18 X
RSF-19 X X X X
RSF-20 X X X X X X X X
RSF-21 X X
RSF-22 X X X X X
RUR-06
RUR-09
RUR-08
RUR-04
RUC-06
RUC-09
RUC-08
RUR-02
RUR-20
RUC-04
RUR-07
RUR-05
RUR-03
RUR-30
RUR-26
RUR-29
RUR-28
RUC-02
RUR-24
RUR-36
RUC-07
RUC-05
RUC-03
RUR-34
RUR-22
RUR-27
RUR-25
RUR-01
RUR-32
RUR-10
RUR-23
RUR-37
RUR-35
RUR-33
RUR-16
RUR-19
RUR-18
RUC-01
RUC-10
RUR-14
RUR-12
RUR-21
RUR-17
RUR-15
RUR-31
RUR-13
RUC-12
RUC-13
RUR-11
RUC-11
RSF-23 X X X X X
RSF-24 X X X X X
RSF-25 X X X X X
RSF-26 X X X X X
RSF-27 X
RSF-28 X
RSF-29 X
RSF-30 X
RSF-31 X X X X X
RSF-32 X X X X X
RSF-33 X X X X X X
RSF-34 X
RSF-35 X X X X X X
RSF-36 X X X X X
RSF-37 X X X X X
RSF-38 X X X X X
RSF-39 X X
RSF-40 X X X
RSF-41 X X
RSF-42 X X
RSF-43 X X X X X X
RSF-44 X X X X X X
RSF-45 X
RSF-46 X
RSF-47 X X X X X X X X X X X X X
RUR-06
RUR-09
RUR-08
RUR-04
RUC-06
RUC-09
RUC-08
RUR-02
RUR-20
RUC-04
RUR-07
RUR-05
RUR-03
RUR-30
RUR-26
RUR-29
RUR-28
RUC-02
RUR-24
RUR-36
RUC-07
RUC-05
RUC-03
RUR-34
RUR-22
RUR-27
RUR-25
RUR-01
RUR-32
RUR-10
RUR-23
RUR-37
RUR-35
RUR-33
RUR-16
RUR-19
RUR-18
RUC-01
RUC-10
RUR-14
RUR-12
RUR-21
RUR-17
RUR-15
RUR-31
RUR-13
RUC-12
RUC-13
RUR-11
RUC-11
RSF-48 X X X X X X X X X X X X X
RSF-49 X X X X X X X X X X X X X
Tabla 199: Matriz de trazabilidad entre requisitos de usuario y requisitos software funcionales
1.3.2. Matriz de trazabilidad entre requisitos de usuario y requisitos software no funcionales de operación
RUR-06
RUR-09
RUR-08
RUR-04
RUC-06
RUC-09
RUC-08
RUR-02
RUR-20
RUC-04
RUR-07
RUR-05
RUR-03
RUR-30
RUR-26
RUR-29
RUR-28
RUC-02
RUR-24
RUR-36
RUC-07
RUC-05
RUC-03
RUR-34
RUR-22
RUR-27
RUR-25
RUR-01
RUR-32
RUR-10
RUR-23
RUR-37
RUR-35
RUR-33
RUR-16
RUR-19
RUR-18
RUC-01
RUC-10
RUR-14
RUR-12
RUR-21
RUR-17
RUR-15
RUR-31
RUR-13
RUC-12
RUC-13
RUR-11
RUC-11
RSFN-OP-01 X X
RSFN-OP-02 X X X X X
RSFN-OP-03 X X X X X
RSFN-OP-04 X X X X X X
RSFN-OP-05 X X X X X X
RSFN-OP-06 X X X X X X
RSFN-OP-07 X X X
RSFN-OP-08 X X X X X X X X X
RSFN-OP-09 X X X X
RSFN-OP-10 X X X X
RSFN-OP-11 X
RSFN-OP-12 X X X X X X X X X X X
RSFN-OP-13 X X X X X X X X X
RSFN-OP-14 X X X X X X X X X X X
RSFN-OP-15 X X X X X X X X X X X
RSFN-OP-16 X X X X X X X X X X X
RSFN-OP-17 X X X X X X X X
RUR-06
RUR-09
RUR-08
RUR-04
RUC-06
RUC-09
RUC-08
RUR-02
RUR-20
RUC-04
RUR-07
RUR-05
RUR-03
RUR-30
RUR-26
RUR-29
RUR-28
RUC-02
RUR-24
RUR-36
RUC-07
RUC-05
RUC-03
RUR-34
RUR-22
RUR-27
RUR-25
RUR-01
RUR-32
RUR-10
RUR-23
RUR-37
RUR-35
RUR-33
RUR-16
RUR-19
RUR-18
RUC-01
RUC-10
RUR-14
RUR-12
RUR-21
RUR-17
RUR-15
RUR-31
RUR-13
RUC-12
RUC-13
RUR-11
RUC-11
RSFN-OP-18 X X X X X X X X
RSFN-OP-19 X X X X X
RSFN-OP-20 X X X X X
RSFN-OP-21 X X X
RSFN-OP-22 X X
RSFN-OP-23 X X
RSFN-OP-24 X X X X
RSFN-OP-25 X X
RSFN-OP-26 X X X X X
RSFN-OP-27 X X X X X
RSFN-OP-28 X X
RSFN-OP-29 X X
RSFN-OP-30 X X
RSFN-OP-31 X X X X
RSFN-OP-32 X X
RSFN-OP-33 X X
Tabla 200: Matriz de trazabilidad entre requisitos de usuario y requisitos software no funcionales de operación
1.3.3. Matriz de trazabilidad entre requisitos de usuario y requisitos software no funcionales de interfaz
RUR-06
RUR-09
RUR-08
RUR-04
RUC-06
RUC-09
RUC-08
RUR-02
RUR-20
RUC-04
RUR-07
RUR-05
RUR-03
RUR-30
RUR-26
RUR-29
RUR-28
RUC-02
RUR-24
RUR-36
RUC-07
RUC-05
RUC-03
RUR-34
RUR-22
RUR-27
RUR-25
RUR-01
RUR-32
RUR-10
RUR-23
RUR-37
RUR-35
RUR-33
RUR-16
RUR-19
RUR-18
RUC-01
RUC-10
RUR-14
RUR-12
RUR-21
RUR-17
RUR-15
RUR-31
RUR-13
RUC-12
RUC-13
RUR-11
RUC-11
RSFN-INT-01 X X X X X X X X X X X X X
RSFN-INT-02 X X
RSFN-INT-03 X X
RSFN-INT-04 X X X X X X X X X
RSFN-INT-05 X
RSFN-INT-06 X
RSFN-INT-07 X
RSFN-INT-08 X
RSFN-INT-09 X
RSFN-INT-10 X X X
RSFN-INT-11 X
RSFN-INT-12 X X X X X
RSFN-INT-13 X X X
RSFN-INT-14 X X X
RSFN-INT-15 X
RSFN-INT-16 X
RSFN-INT-17 X
RSFN-INT-18 X
RSFN-INT-19 X
RSFN-INT-20 X
RSFN-INT-21 X
RSFN-INT-22 X
RSFN-INT-23 X
RSFN-INT-24 X
Tabla 201: Matriz de trazabilidad entre requisitos de usuario y requisitos software no funcionales de interfaz
1.3.4. Matriz de trazabilidad entre requisitos de usuario y requisitos software no funcionales de recursos
RUR-06
RUR-09
RUR-08
RUR-04
RUC-06
RUC-09
RUC-08
RUR-02
RUR-20
RUC-04
RUR-07
RUR-05
RUR-03
RUR-30
RUR-26
RUR-29
RUR-28
RUC-02
RUR-24
RUR-36
RUC-07
RUC-05
RUC-03
RUR-34
RUR-22
RUR-27
RUR-25
RUR-01
RUR-32
RUR-10
RUR-23
RUR-37
RUR-35
RUR-33
RUR-16
RUR-19
RUR-18
RUC-01
RUC-10
RUR-14
RUR-12
RUR-21
RUR-17
RUR-15
RUR-31
RUR-13
RUC-12
RUC-13
RUR-11
RUC-11
RSFN-REC-01 X
RSFN-REC-02 X
RSFN-REC-03 X
RSFN-REC-04 X X X X X X
RSFN-REC-05 X X X
Tabla 202: Matriz de trazabilidad entre requisitos de usuario y requisitos software no funcionales de recursos
1.3.5. Matriz de trazabilidad entre requisitos de usuario y requisitos software no funcionales de rendimiento
RUR-06
RUR-09
RUR-08
RUR-04
RUC-06
RUC-09
RUC-08
RUR-02
RUR-20
RUC-04
RUR-07
RUR-05
RUR-03
RUR-30
RUR-26
RUR-29
RUR-28
RUC-02
RUR-24
RUR-36
RUC-07
RUC-05
RUC-03
RUR-34
RUR-22
RUR-27
RUR-25
RUR-01
RUR-32
RUR-10
RUR-23
RUR-37
RUR-35
RUR-33
RUR-16
RUR-19
RUR-18
RUC-01
RUC-10
RUR-14
RUR-12
RUR-21
RUR-17
RUR-15
RUR-31
RUR-13
RUC-12
RUC-13
RUR-11
RUC-11
RSFN-REN-01 X
RSFN-REN-02 X
RSFN-REN-03 X
RSFN-REN-04 X
Tabla 203: Matriz de trazabilidad entre requisitos de usuario y requisitos software no funcionales de rendimiento
2. Diseño
2.1. Arquitectura
En esta sección se van a detallar las distintas alternativas de diseño estudiadas para el
desarrollo de la aplicación y posteriormente mostrar y explicar el diagrama de componentes
del diseño escogido.
encarga de realizar las operaciones sobre el backend externo. Está compuesto por
los subcomponentes Backend y BBDD.
o Backend: contiene la funcionalidad necesaria para conectarse con el
backend, realizar las operaciones solicitadas y devolver su resultado.
o BBDD: se encarga de todas las operaciones relacionadas de la base datos
interna de la aplicación. Cuando le llega una solicitud crea su instrucción
correspondiente en lenguaje SQLite, la ejecuta y devuelve el resultado
correspondiente de esa operación.
Vista: es el paquete encargado de la representación de la información y su lógica.
Android utiliza plantillas XML para definir toda la información relativa a las
interfaces y así poder añadir, modificar o eliminar elementos fácilmente. Controla
los eventos recibidos del usuario y responde a sus peticiones. Está formado por los
subcomponentes Plantillas y Lógica.
o Plantillas: este subcomponente alberga todas las plantillas diseñadas para
cada una de las interfaces de la aplicación.
o Lógica: este subcomponente se encarga de la lógica necesaria en la vista y
de controlar las peticiones del usuario. Está compuesto por los
subcomponentes Estadísticas, LecturaEscritura, GruposClaves, Tarjetas,
Claves y Util.
Estadísticas: se encarga de enviar la petición adecuada para
obtener la información de estadísticas del backend externo y
mostrarla a través de la interfaz.
LecturaEscritura: se encarga de gestionar las peticiones de lectura
y escritura y manda dichas peticiones al subpaquete
ControladorNFC (del componente Controlador), para que sean
llevadas a cabo. También se encarga de mandar la petición
adecuada para que una tarjeta ya leída sea almacenada en la BBDD.
GruposClaves: gestiona las peticiones sobre la creación,
modificación y eliminación de grupos de claves en el sistema.
Tarjetas: gestiona las peticiones sobre la creación, modificación y
eliminación de tarjetas en el sistema.
Claves: gestiona las peticiones relacionadas con la creación,
modificación y eliminación de claves en el sistema.
CAPÍTULO 4:
PRUEBAS
En este apartado se describirán las pruebas para comprobar las funcionalidades del
sistema implementado. Cada una de las pruebas viene acompañada de ciertos datos
compactados en una tabla con el siguiente formato:
Identificador PSF-XX
Descripción Descripción de la prueba
Pasos Pasos de la prueba
Posibles errores Posibles errores de la prueba
Requisitos Requisitos de la prueba
Resultado esperado Resultado esperado al concluir la prueba
Tabla 204: Formato tabla de prueba del sistema
Identificador PSF-02
Se comprobará que un usuario puede leer y almacenar una tarjeta RFID de tipo
Descripción
Mifare Classic 1K.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Leer”.
3. Seleccionar las claves necesarias para la lectura.
4. Pulsar sobre el botón “Leer”.
Pasos 5. Acercar al dispositivo la tarjeta a leer.
6. Escribir el nombre de la tarjeta.
7. Seleccionar un tipo de tarjeta.
8. Si se desea, modificar el contenido de la tarjeta.
9. Pulsar sobre el icono “Guardar” en la barra de menú.
Error al conectar con la tarjeta.
Error al leer un bloque.
Posibles errores Dispositivo sin memoria y no se almacena la tarjeta.
Error al insertar información en la base de datos.
No hay acceso a internet y no se guardan las claves en el backend.
Requisitos RSF-03, RSF-08, RSF-09, RSF-10, RSF-11, RSF-19, RSF-47, RSF-48, RSF-49
La tarjeta es leída, almacenada y mostrada por pantalla.
Resultado esperado Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 206: Prueba PSF-02 – Leer tarjeta Mifare Classic 1K
Identificador PSF-03
Se comprobará que un usuario puede leer y almacenar una tarjeta RFID de tipo
Descripción
Mifare Classic 4K.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Leer”.
3. Seleccionar las claves necesarias para la lectura.
4. Pulsar sobre el botón “Leer”.
Pasos 5. Acercar al dispositivo la tarjeta a leer.
6. Escribir el nombre de la tarjeta.
7. Seleccionar un tipo de tarjeta.
8. Si se desea, modificar el contenido de la tarjeta.
9. Pulsar sobre el icono “Guardar” en la barra de menú.
Error al conectar con la tarjeta.
Error al leer un bloque.
Posibles errores Dispositivo sin memoria y no se almacena la tarjeta.
Error al insertar información en la base de datos.
No hay acceso a internet y no se guardan las claves en el backend.
Requisitos RSF-04, RSF-08, RSF-09, RSF-10, RSF-11, RSF-19, RSF-47, RSF-48, RSF-49
La tarjeta es leída, almacenada y mostrada por pantalla.
Resultado esperado Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 207: Prueba PSF-03 – Leer tarjeta Mifare Classic 4K
Identificador PSF-04
Se comprobará que un usuario puede leer y almacenar una tarjeta RFID de tipo
Descripción
Mifare Ultralight.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Leer”.
3. No seleccionar ninguna clave para la lectura.
4. Pulsar sobre el botón “Leer”.
Pasos 5. Acercar al dispositivo la tarjeta a leer.
6. Escribir el nombre de la tarjeta.
7. Seleccionar un tipo de tarjeta.
8. Si se desea, modificar el contenido de la tarjeta.
9. Pulsar sobre el icono “Guardar” en la barra de menú.
Error al conectar con la tarjeta.
Error al leer un bloque.
Posibles errores Dispositivo sin memoria y no se almacena la tarjeta.
Error al insertar información en la base de datos.
No hay acceso a internet y no se guardan las claves en el backend.
Requisitos RSF-01, RSF-08, RSF-11, RSF-47, RSF-48, RSF-49
La tarjeta es leída, almacenada y mostrada por pantalla.
Resultado esperado Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 208: Prueba PSF-04 – Leer tarjeta Mifare Ultralight
Identificador PSF-05
Se comprobará que un usuario puede escribir una tarjeta RFID de tipo Mifare
Descripción
Classic Mini.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Escribir”.
3. Seleccionar la tarjeta que se quiere escribir.
Pasos
4. Seleccionar las claves necesarias para la escritura.
5. Pulsar sobre el botón “Escribir”.
6. Acercar al dispositivo la tarjeta a escribir.
Error al conectar con la tarjeta.
Error al escribir un bloque.
Posibles errores
Error al leer información de la base de datos.
No hay acceso a internet y no se guardan las claves en el backend.
Requisitos RSF-13, RSF-16, RSF-17, RSF-18, RSF-19, RSF-47, RSF-48, RSF-49
La tarjeta es escrita.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 209: Prueba PSF-05 – Escribir tarjeta Mifare Classic Mini
Identificador PSF-06
Se comprobará que un usuario puede escribir una tarjeta RFID de tipo Mifare
Descripción
Classic 1K.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Escribir”.
3. Seleccionar la tarjeta que se quiere escribir.
Pasos
4. Seleccionar las claves necesarias para la escritura.
5. Pulsar sobre el botón “Escribir”.
6. Acercar al dispositivo la tarjeta a escribir.
Error al conectar con la tarjeta.
Error al escribir un bloque.
Posibles errores
Error al leer información de la base de datos.
No hay acceso a internet y no se guardan las claves en el backend.
Requisitos RSF-14, RSF-16, RSF-17, RSF-18, RSF-19, RSF-47, RSF-48, RSF-49
La tarjeta es escrita.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 210: Prueba PSF-06 – Escribir tarjeta Mifare Classic 1K
Identificador PSF-07
Se comprobará que un usuario puede escribir una tarjeta RFID de tipo Mifare
Descripción
Classic 4K.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Escribir”.
3. Seleccionar la tarjeta que se quiere escribir.
Pasos
4. Seleccionar las claves necesarias para la escritura.
5. Pulsar sobre el botón “Escribir”.
6. Acercar al dispositivo la tarjeta a escribir.
Error al conectar con la tarjeta.
Error al escribir un bloque.
Posibles errores
Error al leer información de la base de datos.
No hay acceso a internet y no se guardan las claves en el backend.
Requisitos RSF-15, RSF-16, RSF-17, RSF-18, RSF-19, RSF-47, RSF-48, RSF-49
La tarjeta es escrita.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 211: Prueba PSF-07 – Escribir tarjeta Mifare Classic 4K
Identificador PSF-08
Se comprobará que un usuario puede escribir una tarjeta RFID de tipo Mifare
Descripción
Ultralight.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Escribir”.
3. Seleccionar la tarjeta que se quiere escribir.
Pasos
4. No seleccionar ninguna clave para la escritura.
5. Pulsar sobre el botón “Escribir”.
6. Acercar al dispositivo la tarjeta a escribir.
Error al conectar con la tarjeta.
Error al escribir un bloque.
Posibles errores
Error al leer información de la base de datos.
No hay acceso a internet y no se guardan las claves en el backend.
Requisitos RSF-12, RSF-18, RSF-47, RSF-48, RSF-49
La tarjeta es escrita.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 212: Prueba PSF-08 – Escribir tarjeta Mifare Ultralight
Identificador PSF-09
Se comprobará que un usuario puede crear una tarjeta RFID de tipo Mifare Classic
Descripción
Mini.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Ver escaneados”.
3. Pulsar sobre la opción “Crear Tag” en el menú desplegable.
4. Pulsar sobre el tipo de Tarjeta “Mifare Classic Mini”.
Pasos
5. Escribir el nombre de la tarjeta.
6. Seleccionar un tipo de tarjeta.
7. Modificar el contenido de la tarjeta.
8. Pulsar sobre el icono “Guardar” en la barra de menú.
Dispositivo sin memoria y no se almacena la tarjeta.
Posibles errores
Error al insertar información en la base de datos.
Requisitos RSF-23, RSF-26, RSF-47, RSF-48, RSF-49
La tarjeta es creada y almacenada.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 213: Prueba PSF-09 – Crear tarjeta Mifare Classic Mini
Identificador PSF-10
Se comprobará que un usuario puede crear una tarjeta RFID de tipo Mifare Classic
Descripción
1K.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Ver escaneados”.
3. Pulsar sobre la opción “Crear Tag” en el menú desplegable.
4. Pulsar sobre el tipo de Tarjeta “Mifare Classic 1K”.
Pasos
5. Escribir el nombre de la tarjeta.
6. Seleccionar un tipo de tarjeta.
7. Modificar el contenido de la tarjeta.
8. Pulsar sobre el icono “Guardar” en la barra de menú.
Dispositivo sin memoria y no se almacena la tarjeta.
Posibles errores
Error al insertar información en la base de datos.
Requisitos RSF-24, RSF-26, RSF-47, RSF-48, RSF-49
La tarjeta es creada y almacenada.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 214: Prueba PSF-10 – Crear tarjeta Mifare Classic 1K
Identificador PSF-11
Se comprobará que un usuario puede crear una tarjeta RFID de tipo Mifare Classic
Descripción
4K.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Ver escaneados”.
3. Pulsar sobre la opción “Crear Tag” en el menú desplegable.
4. Pulsar sobre el tipo de Tarjeta “Mifare Classic 4K”.
Pasos
5. Escribir el nombre de la tarjeta.
6. Seleccionar un tipo de tarjeta.
7. Modificar el contenido de la tarjeta.
8. Pulsar sobre el icono “Guardar” en la barra de menú.
Dispositivo sin memoria y no se almacena la tarjeta.
Posibles errores
Error al insertar información en la base de datos.
Requisitos RSF-25, RSF-26, RSF-47, RSF-48, RSF-49
La tarjeta es creada y almacenada.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 215: Prueba PSF-11 – Crear tarjeta Mifare Classic 4K
Identificador PSF-12
Se comprobará que un usuario puede crear una tarjeta RFID de tipo Mifare
Descripción
Ultralight.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Ver escaneados”.
3. Pulsar sobre la opción “Crear Tag” en el menú desplegable.
4. Pulsar sobre el tipo de Tarjeta “Mifare Ultralight”.
Pasos
5. Escribir el nombre de la tarjeta.
6. Seleccionar un tipo de tarjeta.
7. Modificar el contenido de la tarjeta.
8. Pulsar sobre el icono “Guardar” en la barra de menú.
Dispositivo sin memoria y no se almacena la tarjeta.
Posibles errores
Error al insertar información en la base de datos.
Requisitos RSF-22, RSF-26, RSF-47, RSF-48, RSF-49
La tarjeta es creada y almacenada.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 216: Prueba PSF-12 – Crear tarjeta Mifare Ultralight
Identificador PSF-13
Descripción Se comprobará que un usuario puede modificar una tarjeta RFID.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Ver escaneados”.
Pasos 3. Seleccionar la tarjeta a modificar.
4. Modificar la información deseada (nombre, tipo o contenido).
5. Pulsar sobre el icono “Guardar” en la barra de menú.
Dispositivo sin memoria y no se almacena la tarjeta.
Posibles errores Error al leer información de la base de datos.
Error al modificar información en la base de datos.
Requisitos RSF-20, RSF-47, RSF-48, RSF-49
La tarjeta es modificada.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 217: Prueba PSF-13 – Modificar tarjeta RFID
Identificador PSF-14
Descripción Se comprobará que un usuario puede borrar una tarjeta RFID.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Ver escaneados”.
Pasos
3. Mantener pulsada la tarjeta que se desea eliminar.
4. Pulsar sobre el botón “Aceptar”.
Error al leer información de la base de datos.
Posibles errores
Error al eliminar información de la base de datos.
Requisitos RSF-21, RSF-47, RSF-48, RSF-49
La tarjeta es eliminada.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 218: Prueba PSF-14 – Borrar tarjeta RFID
Identificador PSF-15
Se comprobará que un usuario puede importar una tarjeta RFID de tipo Mifare
Descripción
Classic Mini.
1. Guardar en el dispositivo un fichero con el contenido de una tarjeta Mifare
Classic Mini y con el nombre “tarjetaMini_mfcMini.dmp”.
2. Iniciar la aplicación.
3. Pulsar sobre el botón “Ver escaneados”.
Pasos
4. Pulsar sobre la opción “Importar tags” en el menú desplegable.
5. Introducir la dirección donde se encuentra el fichero indicado en el paso1.
6. Seleccionar la opción “Importar claves de tarjeta”.
7. Pulsar sobre el botón “Aceptar”.
Error al leer el fichero a importar.
Posibles errores Dispositivo sin memoria y no se almacena la tarjeta.
Error al insertar información en la base de datos.
Requisitos RSF-31, RSF-33, RSF-34, RSF-47, RSF-48, RSF-49
La tarjeta es importada.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 219: Prueba PSF-15 – Importar tarjeta Mifare Classic Mini
Identificador PSF-16
Se comprobará que un usuario puede importar una tarjeta RFID de tipo Mifare
Descripción
Classic 1K.
1. Guardar en el dispositivo un fichero con el contenido de una tarjeta Mifare
Classic 1K y con el nombre “tarjeta1K_mfc1k.dmp”.
2. Iniciar la aplicación.
3. Pulsar sobre el botón “Ver escaneados”.
Pasos
4. Pulsar sobre la opción “Importar tags” en el menú desplegable.
5. Introducir la dirección donde se encuentra el fichero indicado en el paso1.
6. Seleccionar la opción “Importar claves de tarjeta”.
7. Pulsar sobre el botón “Aceptar”.
Error al leer el fichero a importar.
Posibles errores Dispositivo sin memoria y no se almacena la tarjeta.
Error al insertar información en la base de datos.
Requisitos RSF-31, RSF-33, RSF-34, RSF-47, RSF-48, RSF-49
La tarjeta es importada.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 220: Prueba PSF-16 – Importar tarjeta Mifare Classic 1K
Identificador PSF-17
Se comprobará que un usuario puede importar una tarjeta RFID de tipo Mifare
Descripción
Classic 4K.
1. Guardar en el dispositivo un fichero con el contenido de una tarjeta Mifare
Classic 4K y con el nombre “tarjeta4K_mfc4k.dmp”.
2. Iniciar la aplicación.
3. Pulsar sobre el botón “Ver escaneados”.
Pasos
4. Pulsar sobre la opción “Importar tags” en el menú desplegable.
5. Introducir la dirección donde se encuentra el fichero indicado en el paso1.
6. Seleccionar la opción “Importar claves de tarjeta”.
7. Pulsar sobre el botón “Aceptar”.
Error al leer el fichero a importar.
Posibles errores Dispositivo sin memoria y no se almacena la tarjeta.
Error al insertar información en la base de datos.
Requisitos RSF-31, RSF-33, RSF-34, RSF-47, RSF-48, RSF-49
La tarjeta es importada.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 221: Prueba PSF-17 – Importar tarjeta Mifare Classic 4K
Identificador PSF-18
Se comprobará que un usuario puede importar una tarjeta RFID de tipo Mifare
Descripción
Ultralight.
1. Guardar en el dispositivo un fichero con el contenido de una tarjeta Mifare
Ultralight y con el nombre “tarjeta_mfu.dmp”.
2. Iniciar la aplicación.
3. Pulsar sobre el botón “Ver escaneados”.
Pasos
4. Pulsar sobre la opción “Importar tags” en el menú desplegable.
5. Introducir la dirección donde se encuentra el fichero indicado en el paso1.
6. No seleccionar la opción “Importar claves de tarjeta”.
7. Pulsar sobre el botón “Aceptar”.
Error al leer el fichero a importar.
Posibles errores Dispositivo sin memoria y no se almacena la tarjeta.
Error al insertar información en la base de datos.
Requisitos RSF-31, RSF-34, RSF-47, RSF-48, RSF-49
La tarjeta es importada.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 222: Prueba PSF-18 – Importar tarjeta Mifare Ultralight
Identificador PSF-19
Se comprobará que un usuario puede importar varias tarjetas RFID de tipo Mifare
Descripción
(Classic o Ultralight).
1. Guardar en el dispositivo un fichero con el contenido de una tarjeta Mifare
Ultralight y con el nombre “tarjeta_mfu.dmp”.
2. Guardar en el mismo directorio que en el paso1 un fichero con el contenido
de una tarjeta Mifare Classic 1K y con el nombre “tarjeta1K_mfc1k.dmp”.
3. Iniciar la aplicación.
Pasos
4. Pulsar sobre el botón “Ver escaneados”.
5. Pulsar sobre la opción “Importar tags” en el menú desplegable.
6. Introducir el directorio que contiene los ficheros indicados en el paso1.
7. Seleccionar la opción “Importar claves de tarjeta”.
8. Pulsar sobre el botón “Aceptar”.
Error al leer los ficheros a importar.
Posibles errores Dispositivo sin memoria y no se almacenan las tarjetas.
Error al insertar información en la base de datos.
Requisitos RSF-32, RSF-33, RSF-34, RSF-47, RSF-48, RSF-49
Las tarjetas son importadas.
En pantalla se muestra la lista con las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 223: Prueba PSF-19 – Importar varias tarjetas Mifare
Identificador PSF-20
Descripción Se comprobará que un usuario puede crear una clave.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Claves”.
Pasos 3. Pulsar sobre el icono “Nuevas claves” en la barra de menú.
4. Escribir una clave hexadecimal de 12 dígitos.
5. Pulsar sobre el botón “Aceptar”.
Dispositivo sin memoria y no se almacena la clave.
Posibles errores Error al leer información de la base de datos.
Error al insertar información en la base de datos.
Requisitos RSF-36, RSF-47, RSF-48, RSF-49
La clave es guardada.
En pantalla se muestra la lista con las claves almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 224: Prueba PSF-20 – Crear clave
Identificador PSF-21
Descripción Se comprobará que un usuario puede crear varias claves.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Claves”.
Pasos 3. Pulsar sobre el icono “Nuevas claves” en la barra de menú.
4. Escribir varias claves hexadecimales de 12 dígitos cada una en una línea.
5. Pulsar sobre el botón “Aceptar”.
Dispositivo sin memoria y no se almacenan las claves.
Posibles errores Error al leer información de la base de datos.
Error al insertar información en la base de datos.
Requisitos RSF-37, RSF-47, RSF-48, RSF-49
Las claves son guardadas.
En pantalla se muestra la lista con las claves almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 225: Prueba PSF-21 – Crear varias claves
Identificador PSF-22
Descripción Se comprobará que un usuario puede modificar una clave.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Claves”.
Pasos 3. Pulsar sobre la clave a modificar.
4. Modificar la clave.
5. Pulsar sobre el botón “Aceptar”.
Dispositivo sin memoria y no se almacena la clave.
Posibles errores Error al leer información de la base de datos.
Error al modificar información en la base de datos.
Requisitos RSF-38, RSF-47, RSF-48, RSF-49
La clave es modificada.
En pantalla se muestra la lista con las claves almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 226: Prueba PSF-22 – Modificar clave
Identificador PSF-23
Descripción Se comprobará que un usuario puede eliminar una clave.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Claves”.
Pasos
3. Mantener pulsada la clave a eliminar.
4. Pulsar sobre el botón “Aceptar”.
Error al leer información de la base de datos.
Posibles errores
Error al eliminar información en la base de datos.
Requisitos RSF-39, RSF-47, RSF-48, RSF-49
La clave es eliminada.
En pantalla se muestra la lista con las claves almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 227: Prueba PSF-23 – Eliminar clave
Identificador PSF-24
Descripción Se comprobará que un usuario puede crear un grupo de claves.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Claves”.
3. Pulsar sobre la opción “Crear grupo de claves” en el menú desplegable.
Pasos
4. Escribir el nombre del grupo de claves.
5. Seleccionar las claves que componen el grupo de claves.
6. Pulsar sobre el botón “Aceptar”.
Dispositivo sin memoria y no se almacena el grupo de claves.
Posibles errores Error al leer información de la base de datos.
Error al insertar información en la base de datos.
Requisitos RSF-40, RSF-47, RSF-48, RSF-49
El grupo de claves es almacenado.
En pantalla se muestra la lista de grupos de claves almacenados.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 228: Prueba PSF-24 – Crear grupo de claves
Identificador PSF-25
Descripción Se comprobará que un usuario puede modificar un grupo de claves.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Claves”.
3. Cambiar a la ventana de los grupos de claves.
Pasos 4. Pulsar sobre el grupo de claves a modificar.
5. Pulsar sobre icono “Editar” en la barra superior.
6. Modificar la información deseada (Nombre del grupo o claves).
7. Pulsar sobre el botón “Aceptar”.
Dispositivo sin memoria y no se almacena el grupo de claves.
Posibles errores Error al leer información de la base de datos.
Error al modificar información en la base de datos.
Requisitos RSF-41, RSF-47, RSF-48, RSF-49
El grupo de claves es modificado.
En pantalla se muestra la lista de grupos de claves almacenados.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 229: Prueba PSF-25 – Modificar grupo de claves
Identificador PSF-26
Descripción Se comprobará que un usuario puede eliminar un grupo de claves.
1. Iniciar la aplicación.
2. Pulsar sobre el botón “Claves”.
Pasos 3. Cambiar a la ventana de los grupos de claves.
4. Mantener pulsado el grupo de claves a eliminar.
5. Pulsar sobre el botón “Aceptar”.
Error al leer información de la base de datos.
Posibles errores
Error al eliminar información de la base de datos.
Requisitos RSF-42, RSF-47, RSF-48, RSF-49
El grupo de claves es eliminado.
En pantalla se muestra la lista de grupos de claves almacenados.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 230: Prueba PSF-26 – Eliminar grupo de claves
Identificador PSF-27
Descripción Se comprobará que un usuario puede importar un fichero de claves.
1. Guardar en el dispositivo un fichero con las claves a importar (una clave por
línea) y cuya extensión sea “.txt”.
2. Iniciar la aplicación.
Pasos 3. Pulsar sobre el botón “Claves”.
4. Pulsar sobre la opción “Importar claves” en el menú desplegable.
5. Introducir la dirección donde se encuentra el fichero indicado en el paso1.
6. Pulsar sobre el botón “Aceptar”.
Error al leer el fichero a importar.
Posibles errores Dispositivo sin memoria y no se almacenan las claves.
Error al insertar información en la base de datos.
Requisitos RSF-43, RSF-45, RSF-47, RSF-48, RSF-49
Las claves son importadas.
En pantalla se muestra la lista de claves almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 231: Prueba PSF-27 – Importar un fichero de claves
Identificador PSF-28
Descripción Se comprobará que un usuario puede importar varios ficheros de claves.
1. Guardar en el dispositivo un fichero con las claves a importar (una clave por
línea) y cuya extensión sea “.txt”.
2. Guardar otro fichero con otras claves a importar (una clave por línea) y cuya
extensión sea “.txt”.
Pasos 3. Iniciar la aplicación.
4. Pulsar sobre el botón “Claves”.
5. Pulsar sobre la opción “Importar claves” en el menú desplegable.
6. Introducir el directorio que contiene los ficheros indicados en el paso1.
7. Pulsar sobre el botón “Aceptar”.
Error al leer el fichero a importar.
Posibles errores Dispositivo sin memoria y no se almacenan las claves.
Error al insertar información en la base de datos.
Requisitos RSF-44, RSF-45, RSF-47, RSF-48, RSF-49
Las claves son importadas.
Resultado
En pantalla se muestra la lista de claves almacenadas.
esperado
Aparece un mensaje indicando que la operación ha terminado correctamente.
Tabla 232: Prueba PSF-28 – Importar varios ficheros de claves
Identificador PSF-29
Descripción Se comprobará que un usuario puede crear nuevos tipos de tarjetas RFID.
1. Leer (PSF-01/02/03/04) o modificar (PSF-13) tarjeta RFID.
2. Escoger la opción “--Nuevo tipo--” en el tipo de tarjeta.
Pasos
3. Escribir el nuevo tipo.
4. Pulsar sobre el botón “Aceptar”.
Dispositivo sin memoria y no se almacenan las claves.
Posibles errores
Error al insertar información en la base de datos.
Requisitos RSF-05, RSF-47, RSF-48, RSF-49
El tipo de tarjeta es almacenado.
En la lista de tipos de tarjetas se puede seleccionar el nuevo tipo.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 233: Prueba PSF-29 – Crear tipo de tarjeta
Identificador PSF-30
Descripción Se comprobará que un usuario puede renombrar una tarjeta RFID.
1. Leer (PSF-01/02/03/04) o modificar (PSF-13) tarjeta RFID.
2. Escribir el nombre de una tarjeta que ya exista en la base de datos.
3. Pulsar sobre el icono “Guardar” en la barra de menú.
Pasos
4. Pulsar sobre el botón “Renombrar”.
5. Introducir el nuevo nombre de la tarjeta.
6. Pulsar sobre el botón “Aceptar”.
Dispositivo sin memoria y no se almacenan las claves.
Posibles errores Error al leer información de la base de datos.
Error al insertar información en la base de datos.
Requisitos RSF-06, RSF-47, RSF-48, RSF-49
La tarjeta es almacenada con el nuevo nombre.
En pantalla se muestra la lista de las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 234: Prueba PSF-30 – Renombrar tarjeta RFID
Identificador PSF-31
Descripción Se comprobará que un usuario puede reemplazar una tarjeta RFID.
1. Leer (PSF-01/02/03/04) o modificar (PSF-13) tarjeta RFID.
2. Escribir el nombre de una tarjeta que ya exista en la base de datos.
Pasos
3. Pulsar sobre el icono “Guardar” en la barra de menú.
4. Pulsar sobre el botón “Reemplazar”.
Dispositivo sin memoria y no se almacenan las claves.
Posibles errores Error al leer información de la base de datos.
Error al insertar información en la base de datos.
Requisitos RSF-07, RSF-47, RSF-48, RSF-49
La tarjeta es almacenada sustituyendo a la anterior.
En pantalla se muestra la lista de las tarjetas almacenadas.
Resultado esperado
Aparece un mensaje temporal indicando que la operación se ha llevado a
cabo correctamente.
Tabla 235: Prueba PSF-31 – Reemplazar tarjeta RFID
Identificador PSF-32
Descripción Se comprobará que un usuario puede ver una tarjeta RFID en formato ASCII.
1. Leer (PSF-01/02/03/04) o modificar (PSF-13) tarjeta RFID.
Pasos
2. Pulsar sobre la opción “Ver como ASCII” en el menú desplegable.
Posibles errores Error al leer información de la base de datos.
Requisitos RSF-27, RSF-47, RSF-48, RSF-49
Resultado esperado El contenido de la tarjeta será mostrado en formato ASCII.
Tabla 236: Prueba PSF-32 – Ver tarjeta RFID en formato ASCII
Identificador PSF-33
Se comprobará que un usuario puede ver una tarjeta RFID en formato
Descripción
hexadecimal.
Pasos 1. Leer (PSF-01/02/03/04) o modificar (PSF-13) tarjeta RFID.
Posibles errores Error al leer información de la base de datos.
Requisitos RSF-28, RSF-47, RSF-48, RSF-49
Resultado esperado El contenido de la tarjeta será mostrado en formato hexadecimal.
Tabla 237: Prueba PSF-33 – Ver tarjeta RFID en formato hexadecimal
Identificador PSF-34
Se comprobará que un usuario puede ver una tarjeta RFID como tarjeta de
Descripción
transporte.
1. Leer (PSF-01/02/03/04) o modificar (PSF-13) tarjeta RFID.
Pasos 2. Pulsar sobre la opción “Ver como tarjeta de transporte” en el menú
desplegable.
Error al leer información de la base de datos.
Posibles errores
Información de tarjeta errónea al convertirla en tarjeta de transporte.
Requisitos RSF-29, RSF-47, RSF-48, RSF-49
Resultado esperado El contenido de la tarjeta será mostrado como tarjeta de transporte.
Tabla 238: Prueba PSF-34 – Ver tarjeta RFID como tarjeta de transporte
Identificador PSF-35
Se comprobará que un usuario puede ver las condiciones de acceso de una tarjeta
Descripción
RFID.
1. Leer (PSF-01/02/03/04) o modificar (PSF-13) tarjeta RFID.
Pasos
2. Pulsar sobre la opción “Ver condiciones de acceso” en el menú desplegable.
Error al leer información de la base de datos.
Posibles errores
Error al decodificar las condiciones de acceso de la tarjeta.
Requisitos RSF-30, RSF-47, RSF-48, RSF-49
Resultado esperado Las condiciones de acceso serán mostradas.
Tabla 239: Prueba PSF-35 – Ver condiciones de acceso de una tarjeta RFID
Identificador PSF-36
Descripción Se comprobará que un usuario puede ver las estadísticas de uso de las claves.
1. Iniciar la aplicación.
Pasos
2. Pulsar sobre el botón “Estadísticas”.
Posibles errores No hay acceso a internet y no se obtienen las claves del backend.
Requisitos RSF-35, RSF-47, RSF-48, RSF-49
Tabla con el número de lecturas, escrituras y el porcentaje de ambos valores
Resultado esperado
de una clave sobre el total de todas las claves.
Tabla 240: Prueba PSF-36 – Ver estadísticas de uso de las claves
Identificador PSF-37
Se comprobará que un usuario puede activar la tecnología NFC a través de la
Descripción
aplicación.
1. Desactivar tecnología NFC.
2. Iniciar la aplicación.
Pasos
3. Pulsar sobre el botón “Ajustes” en el diálogo “NFC desactivado”.
4. Activar la tecnología NFC.
Posibles errores
Requisitos RSF-46, RSF-47, RSF-48, RSF-49
Resultado esperado Activada tecnología NFC del dispositivo.
Tabla 241: Prueba PSF-37 – Activación tecnología NFC
RSF-06
RSF-09
RSF-08
RSF-04
RSF-40
RSF-46
RSF-02
RSF-49
RSF-20
RSF-48
RSF-07
RSF-05
RSF-44
RSF-03
RSF-30
RSF-26
RSF-29
RSF-28
RSF-24
RSF-36
RSF-39
RSF-42
RSF-38
RSF-47
RSF-45
RSF-34
RSF-43
RSF-22
RSF-27
RSF-25
RSF-01
RSF-32
RSF-10
RSF-23
RSF-37
RSF-35
RSF-33
RSF-16
RSF-19
RSF-18
RSF-14
RSF-41
RSF-12
RSF-21
RSF-17
RSF-15
RSF-31
RSF-13
RSF-11
PSF-01 X X X X X X X X X
PSF-02 X X X X X X X X X
PSF-03 X X X X X X X X X
PSF-04 X X X X X X
PSF-05 X X X X X X X X
PSF-06 X X X X X X X X
PSF-07 X X X X X X X X
PSF-08 X X X X X
PSF-09 X X X X X
PSF-10 X X X X X
PSF-11 X X X X X
PSF-12 X X X X X
PSF-13 X X X X
PSF-14 X X X X
PSF-15 X X X X X X
PSF-16 X X X X X X
PSF-17 X X X X X X
PSF-18 X X X X X
PSF-19 X X X X X X
PSF-20 X X X X
PSF-21 X X X X
PSF-22 X X X X
RSF-06
RSF-09
RSF-08
RSF-04
RSF-40
RSF-46
RSF-02
RSF-49
RSF-20
RSF-48
RSF-07
RSF-05
RSF-44
RSF-03
RSF-30
RSF-26
RSF-29
RSF-28
RSF-24
RSF-36
RSF-39
RSF-42
RSF-38
RSF-47
RSF-45
RSF-34
RSF-43
RSF-22
RSF-27
RSF-25
RSF-01
RSF-32
RSF-10
RSF-23
RSF-37
RSF-35
RSF-33
RSF-16
RSF-19
RSF-18
RSF-14
RSF-41
RSF-12
RSF-21
RSF-17
RSF-15
RSF-31
RSF-13
RSF-11
PSF-23 X X X X
PSF-24 X X X X
PSF-25 X X X X
PSF-26 X X X X
PSF-27 X X X X X
PSF-28 X X X X X
PSF-29 X X X X
PSF-30 X X X X
PSF-31 X X X X
PSF-32 X X X X
PSF-33 X X X X
PSF-34 X X X X
PSF-35 X X X X
PSF-36 X X X X
PSF-37 X X X X
Tabla 242: Matriz de trazabilidad entre requisitos software funcionales y pruebas del sistema
2. Resultados
Además de las pruebas del sistema se han realizado una serie de comparaciones para
comprobar que los resultados obtenidos con la aplicación son correctos. Para ello se utiliza un
lector de tarjetas RFID junto con las librerías LibNFC o el programa Mfoc. El resultado de esta
operación es almacenado en un fichero en formato hexadecimal y cargado en una página web
para decodificarlo a formato legible [56] . En las tarjetas de transporte también se utiliza el
programa Mfoc GUI para decodificar la información de transporte leída.
Para poder leer las tarjetas RFID de tipo Mifare Classic a través del dispositivo móvil es
necesario conocer sus claves de autenticación, las cuales son obtenidas a través de la
Proxmark3. Debido a que el proceso de obtención de claves requiere mucho tiempo y que es
idéntico para el resto de pruebas solamente se mostrará este resultado para la primera tarjeta
Mifare Classic 1K.
Ilustración 19: Prueba 1 – Resultado de dispositivo móvil (arriba) y del lector con LibNFC (abajo)
En esta primera prueba se puede observar que la información leída por el dispositivo es
idéntica a la obtenida por el lector, por lo tanto la lectura de tarjetas RFID de tipo Mifare
Ultralight es correcta.
Ilustración 20: Prueba 2 – Claves obtenidas a través de la Proxmark3 (arriba), resultado de dispositivo móvil
(izquierda) y del lector con Mfoc (derecha)
Ilustración 21: Prueba 3 – Resultado de dispositivo móvil (izquierda) y del lector con Mfoc (derecha)
Ilustración 22: Prueba 4 – Resultado lectura de dispositivo móvil (izquierda) y del lector con Mfoc (derecha)
Información general
Ilustración 23: Prueba 4 – Decodificación información general de transporte con el dispositivo móvil
Ilustración 24: Prueba 4 – Decodificación información general de transporte con el lector y Mfoc GUI
Historial de viajes
Ilustración 25: Prueba 4 – Decodificación historial de viajes de transporte con el dispositivo móvil
Ilustración 26: Prueba 4 – Decodificación historial de viajes de transporte con el lector y Mfoc GUI
Subscripciones
Ilustración 28: Prueba 4 – Decodificación subscripciones de transporte con el lector y Mfoc GUI
Ilustración 29: Prueba 5 – Resultado modificación de tarjeta almacenada en el dispositivo móvil: hexadecimal
(izquierda), ASCII (derecha)
Ilustración 30: Prueba 5 – Resultado lectura de dispositivo móvil de tarjeta modificada: hexadecimal (izquierda),
ASCII (derecha)
Ilustración 31: Prueba 5 – Resultado lectura con el lector y Mfoc de una tarjeta escrita
Con esta comprobación se observa que la lectura a través del dispositivo y del lector
son equivalentes, por lo que esta prueba es correcta.
CAPÍTULO 5:
CONCLUSIONES Y FUTURAS LÍNEAS DE
TRABAJO
1. Conclusiones
Inicialmente se probó la librería RFIDIOt, la cual requiere instalar una gran cantidad de
paquetes para poder utilizarla, y algunos de ellos están obsoletos o no son compatibles con
otros programas. Además esta librería no está documentada por lo que fue necesario analizar y
comprender su código, el cual está desarrollado en Python, lenguaje que ha sido necesario
aprender ya que no se tenían conocimientos previos. Esta librería fue descartada debido a que
no era compatible con el lector de tarjetas Touchatag.
La librería LibNFC ocasionó algún problema para su instalación debido a que necesita
unos paquetes con unas versiones muy concretas pero aun así fue mucho más fácil de probar
que la librería RFIDIOt. Esta librería tampoco está documentada por lo que fue necesario el
análisis de su código fuente, más sencillo que RFIDIOt ya que está escrito en lenguaje C.
El quinto objetivo consistía en leer, escribir, almacenar y emular tarjetas RFID a través
del teléfono. Todas estas operaciones han sido desarrolladas a excepción de la emulación
debido a que Android restringe el envío libre de comandos NFC del protocolo 14443-3, la
autenticación, lectura y escritura ya vienen implementadas a través de unos métodos
específicos que deben ser utilizados para interactuar con las tarjetas RFID. Esto también ha
influido en el algoritmo Crapto1 ya que la idea inicial era atacar la seguridad de las tarjetas
Mifare Classic directamente desde la tecnología NFC del dispositivo móvil. Para solucionar este
problema se decidió utilizar la Proxmark3 desde el teléfono conectándola a través del cable
USB OTG.
El sexto objetivo hace referencia al desarrollo de una base de datos que gestione toda la
información de la aplicación. Ya se poseían conocimientos de SQL, lenguaje parecido al
utilizado para la base de datos interna (MySQL). En el backend ha sido utilizado Google App
Engine, el cual ofrece almacenar la información en varios lenguajes de programación, que es
una gran ventaja para el programador.
Respecto a errores de tipo hardware solamente se produjo uno debido a que para
conectar el teléfono Samsung Galaxy Nexus al PC e instalar la aplicación era necesario
descargar un driver específico desde la página oficial de Samsung. [19] Esto ocurrió
únicamente con ese teléfono.
Crear un servidor centralizado para el almacenamiento de todas las tarjetas RFID, de tal
forma que los usuarios las almacenen en dicho servidor y las consulten cuando lo deseen. El
teléfono tendría un registro de un número de tarjetas utilizadas frecuentemente que serían
almacenadas en el teléfono para su acceso más rápido, mientras que para acceder al resto
habría que recogerlas del servidor centralizado. Esto puede prevenir la pérdida de tarjetas
almacenadas de manera local en el propio teléfono. Esta mejora también podría aplicarse a las
claves y grupos de claves.
Que la aplicación interactúe con tarjetas a través del protocolo 14443-4, lo que
permitiría leer y emular pasaportes electrónicos y tarjetas de crédito. Esta sería una ampliación
interesante ya que los pasaportes y tarjetas de crédito son utilizados en el día a día y así serían
usados sin necesidad de llevarlos.
Hacer la aplicación más accesible para personas con discapacidades, por ejemplo,
reconocer los comandos leer y escribir vocalizando las palabras “leer” y “escribir”,
respectivamente, pronunciar el nombre con el que se almacenaría la tarjeta, la información a
escribir en una tarjeta, etc. De la misma manera la propia aplicación también iría explicando
verbalmente la situación en la que se encuentra, cuando termina de realizar una acción, la lista
de tarjetas almacenadas, etc.
REFERENCIAS
[39] Bueno Delgado, Mª Victoria. Pavón Mariño, Pablo. De Gea García, Alfonso. La
tecnología NFC y sus aplicaciones en un entorno universitario, Universidad
Politécnica de Cartagena, 2011
[41] Antipolis, Sophia. NFCIP-1 Security Standard Protects Near Field Communication,
4th ETSI Security Workshop, 2009
[42] Flavio D. Garcia, Gerhard de Koning Gans, Ruben Muijrers, Peter van Rossum, Roel
Verdult, Ronny Wichers Schreur, and Bart Jacobs. Dismantling MIFARE Classic,
Instituto de Informática y Ciencias de la Información - Universidad de Radboud
Nijmegen, 2008.
[43] Flavio D. Garcia, Peter van Rossum, Roel Verdult, Ronny Wichers Schreur.
Wirelessly Pickpocketing a Mifare Classic Card, Universidad de Radboud
Nijmegen, 2009.
[44] Pedro Peris-López, Agustín Orfila, Julio C. Hernández-Castro and Jan C. A. van der
Lubbe. Flaws on RFID grouping-proofs. Guidelines for future sound protocols,
Journal Network and Computer Applications, 2009.
[45] Karsten Nohl, David Evans, Starbug Starbug, Henryk Plötz. Reverse-Engineering a
Cryptographic RFID Tag, Departamento de Ciencias de la Computación –
Universidad de Virginia y Chaos Computer Club, 2008
ANEXOS
ANEXO I:
Acrónimos y Definiciones
En el presente apartado se van a mostrar los acrónimos y definiciones que se van a usar
a lo largo de toda la memoria.
1. Acrónimos
Acrónimo Significado
AC Anticollision Command
ACID Atomic, Consistent, Isolated, and Durable
ADT Android Developer Tools
AES Advanced Encryption Standard
API Application Programming Interface
APK Android Package
ATQA Answer To reQuest Type A
AVD Android Virtual Device
BSD Berkeley Software Distribution
CU Caso de Uso
DES Data Encryption Standard
DEX Dalvik Executables
EAL Evaluation Assurance Level
ECJ Eclipse Compile for Java
GAE Google App Engine
GPS Global Positioning System
GUI Graphic User Interface
HCE Host Card Emulation
HF High Frequency
IDE Integrated Development Environment
JDT Java Development Toolkit
JVM Java Virtual Machine
LFSR Linear Feedback Shift Register
MFOC MiFare classic Offline Cracker
MVC Modelo Vista Controlador
NDEF NFC Data Exchange Format
NFC Near Field Communication
NFCIP NFC Interface and Protocol
PC Personal Computer
PCD Proximity Coupling Devices
POR Power On Reset
REQA REQuest command Type A
RF Requisito Funcional
RFID Radio Frequency Identificator
RNF Requisito No Funcional
RNG Random Number Generation
RTD Record Type Definition
RUC Requisito de Usuario de Capacidad
2. Definiciones
AES: algoritmo para cifrar información que utiliza el cifrado por bloques.
Android: sistema operativo basado en Linux para dispositivos móviles, tales como
teléfonos inteligentes o tablets. Fue desarrollado inicialmente por Android Inc.,
una firma comprada por Google en 2005. Es el principal producto de la Open
Handset Alliance.
API: consiste en un conjunto de llamadas que ofrecen acceso a funciones y
procedimientos representando una capa de abstracción para el desarrollador.
App: Abreviatura de aplicación, muy utilizada cuando se refiere a aplicaciones en
terminales móviles.
Bytecode: es un código intermedio más abstracto que el código máquina.
Crapto1: implementaciones abiertas de ataques contra el sistema de cifrado
Crypto1.
Crypto1: algoritmo utilizado por las tarjetas RFID de tipo Mifare Classic para
encriptar su información.
Dalvik: es la máquina virtual que utiliza la plataforma para dispositivos móviles
Android. Dalvik ha sido diseñada por Dan Bornstein con contribuciones de otros
ingenieros de Google. Dalvik está optimizada para requerir poca memoria y está
diseñada para permitir ejecutar varias instancias de una máquina virtual
simultáneamente, delegando en el sistema operativo subyacente el soporte de
aislamiento de procesos, gestión de memoria e hilos.
DES: algoritmo para cifrar información.
Microsoft Excel: es una aplicación distribuida por Microsoft Office para hojas de
cálculo. Este programa es desarrollado y distribuido por Microsoft, y es utilizado
normalmente en tareas financieras y contables.
Microsoft Office: es una suite de oficina que abarca e interrelaciona aplicaciones
de escritorio, servidores y servicios para los sistemas operativos Microsoft
Windows y Mac OS X.
Mifare: es la tecnología de tarjetas inteligentes sin contacto (TISC) más
ampliamente instalada en el mundo con aproximadamente 250 millones de TISC y
1.5 millones de módulos lectores vendidos. Es equivalente a las 3 primeras partes de
la norma ISO 14443 Tipo A de 13.56 MHz con protocolo de alto nivel. La distancia
típica de lectura es de 10 cm (unas 4 pulgadas). La distancia de lectura depende de
la potencia del módulo lector, existiendo lectores de mayor y menor alcance.
Modelo Vista Controlador: es un patrón o modelo de abstracción de desarrollo
de software que separa los datos de una aplicación, la interfaz de usuario, y la
lógica de negocio en tres componentes distintos.
NFC: tecnología de comunicación inalámbrica, de corto alcance y alta frecuencia
que permite el intercambio de datos entre dispositivos a menos de 10cm. Es una
simple extensión del estándar ISO 14443 (RFID).
NFC Forum: se creó en 2004 por las tres compañías pioneras de la tecnología NFC:
Philips, Sony y Nokia, para avanzar en las especificaciones de esta tecnología.
Actualmente, cuenta con más de 160 miembros que representan a fabricantes,
desarrolladores de aplicaciones software, vendedores, instituciones financieras,
agencias gubernamentales, consorcios de transporte y organizaciones sin ánimo de
lucro.
Open Headset Alliance: es una alianza comercial de 78 compañías para
desarrollar estándares abiertos para dispositivos móviles.
Plugin: pieza de software que se relaciona y ejecuta con otro para aportarle una
función nueva y especifica.
Proceso: un proceso es un programa en ejecución, y representa la unidad de
procesamiento básica gestionada por el sistema operativo.
Proxmark3: herramienta de tecnología RFID diseñada para espiar, escuchar y
emular tarjetas RFID.
RFID: es un sistema de almacenamiento y recuperación de datos remotos que usa
dispositivos denominados etiquetas, tarjetas, transpondedores o tags RFID.
ANEXO II:
Gestión del Proyecto
El proyecto se comenzó el día 27 de Junio del 2014 y ha finalizado el día 4 de Enero del
2015, una duración de 137 días sin tener en cuenta los fines de semana pero sí los días festivos
entre semana.
Se debe señalar que durante este periodo no se ha mantenido una jornada de trabajo
estable ya que por motivos laborales el tiempo de trabajo ha ido variando según la
disponibilidad que se ha tenido, la mayoría de las semanas se empleaba una jornada de dos
horas diarias, algunas de 4 ó 1 hora y en ocasiones era imposible realizar tarea alguna.
En este apartado se detalla el presupuesto que cubre todos los costes y las necesidades
que se plantean a lo largo de la evolución del proyecto.
2.7. Beneficio
Al ser un proyecto académico no se realiza con ánimo de lucro, por lo que el beneficio
será de 0€.
Descripción Coste sin IVA (€) IVA (€) Coste con IVA (€)
Costes totales 19423,10 4078,85 23501,95
Costes indirectos 388,46 81,58 470,04
Beneficio 0 0,00 0,00
Riesgos 2913,46 611,83 3525,29
TOTAL 22725,02 4772,26 27497,28
ANEXO III:
Manual de Usuario
Este manual de usuario es una guía para utilizar la aplicación NFC en cualquier
dispositivo móvil que contenga la tecnología NFC.
Nota1: es recomendable la lectura íntegra del manual para comprender mejor el sistema.
Nota2: es recomendable no remover la tarjeta RFID una vez que la operaciones de lectura
y escritura han sido iniciadas para evitar daños en la propia tarjeta.
1. Acceso Inicial
2. Pantalla Principal
En la pantalla inicial se pueden seleccionar cinco opciones: Leer, Escribir, Ver tarjetas
escaneadas, Claves y Estadísticas, las cuales están explicadas en los apartados 3, 4, 5, 6 y 7,
respectivamente, de este manual.
Nota: sólo se podrá leer o escribir una tarjeta RFID si la tecnología NFC del dispositivo
está activada.
3. Leer
Para leer una tarjeta hay que pinchar sobre el icono de la operación leer.
Posteriormente es necesario seleccionar las claves con las que la tarjeta será
autenticada y hacer click sobre el botón Leer. Existen tres opciones en la selección de claves:
Por último hay que acercar la tarjeta RFID a leer a la parte posterior del dispositivo
móvil, aparecerá el mensaje “Leyendo tag. Por favor espere…” mientras la lectura continúe.
Cuando termine aparecerá la información leída en formato hexadecimal.
Una vez que la tarjeta ha sido leída existe la posibilidad de borrar el contenido leído o
almacenarla en el dispositivo móvil.
Para borrar el contenido hay que hacer click sobre la opción Limpiar en el menú de
opciones y la pantalla volverá a encontrarse en la situación anterior de acercar la tarjeta RFID
al dispositivo móvil.
Una vez que el nombre, tipo y contenido de la tarjeta han sido rellenados se hace click
en la opción Guardar del menú de opciones.
Cuando se intenta almacenar una tarjeta puede ocurrir que ya exista una guardada con
ese mismo nombre. En este caso aparecerá un diálogo ofreciendo dos opciones:
Para ello hay que hacer click sobre la opción “Ver como tarjeta de transporte”.
Historial: muestra la información de los viajes que el usuario ha hecho con esta
tarjeta de transporte. Contiene el identificador, fecha y hora, compañía, vehículo,
máquina, importe y la estación del viaje.
Con esta opción la pantalla sigue teniendo la misma estructura pero el contenido de la
tarjeta es legible.
Para volver a ver el contenido en hexadecimal hay que seleccionar la opción “Ver como
HEX” en el menú de opciones.
Esta pantalla muestra el tipo de clave (A, B, ambas o ninguna) que se necesita para
realizar una operación sobre cada bloque de la tarjeta.
4. Escribir
Para escribir una tarjeta hay que pinchar sobre el icono de la operación escribir.
Posteriormente es necesario seleccionar las claves con las que la tarjeta será
autenticada y hacer click sobre el botón Escribir. Existen tres opciones en la selección de
claves:
Si algún bloque no puede ser escrito aparecerá un diálogo indicandolo junto con su
motivo y dando la opción de cancelar la operación o de escribir todos los bloques que sean
posibles.
Esta funcionalidad consiste ver y gestionar todas las tarjetas que han sido almacenadas
en el dispositivo móvil.
Para acceder a esta opción hay que pinchar sobre el icono Ver escaneados.
A continuación hay que indicar el tipo de tarjeta que se desea crear: Mifare Ultralight,
MIfare Classic Mini, Mifare Classic 1K o Mifare Classic 4K.
Al pulsar sobre un tipo se rellenará todo su contenido con caracteres con valor 0. A
continuación se muestra la apariencia de una tarjeta creada del tipo Mifare Ultralight
(izquierda) y Mifare Classic (derecha).
Ilustración 61: Manual de usuario – Tarjeta Mifare Ultralight creada (izquierda); Tarjeta Mifare Classic Mini, 1K y
4K creada (derecha)
Aparecerá un diálogo en el que hay que pulsar sobre el botón Aceptar para confirmar la
acción.
6. Claves
Para acceder a esta opción hay que pinchar sobre el icono Claves.
Todos: muestra las claves almacenadas en el dispositivo móvil. Existen dos tipos:
o Sistema: claves por defecto del sistema y que no pueden ser modificadas ni
eliminadas.
o Personalizada: claves insertadas o importadas por el usuario. Estas claves
pueden ser modificadas y eliminadas.
Grupos: muestra todos los grupos de claves almacenados en el dispositivo móvil.
Ilustración 67: Manual de usuario – Lista de claves (izquierda) y grupos de claves (derecha)
Ilustración 69: Manual de usuario – Crear una clave (izquierda); varias claves (derecha)
Por último hacer click en el botón Aceptar para confirmar la acción. Si las claves son
almacenadas correctamente aparecerá el mensaje “Claves almacenadas”, sino el mensaje de
error correspondiente.
Por último hacer click en el botón Aceptar para confirmar la acción. Si las claves son
almacenadas correctamente aparecerá el mensaje “Clave modificada”, sino el mensaje de error
correspondiente.
Aparecerá un diálogo en el que hay que pulsar sobre el botón Aceptar para confirmar la
acción.
6.4.Importar claves
Esta función permite importar claves desde ficheros ubicados en el dispositivo móvil.
Para ello hay que acceder al listado de claves almacenadas (ver apartado 6 Claves) y hacer click
sobre la opción “Importar claves” del menú de opciones.
Nota: los ficheros deben tener extensión .txt y los claves que posea deben estar formadas
por 12 caracteres hexadecimales (del 0 al 9 y ABCDEF).
Nombre: nombre del grupo de claves a crear. Este nombre es único por lo que no
podrá existir otro grupo con este nombre.
Claves: seleccionar las claves que van a componer este grupo de claves.
Por último hacer click en el botón Aceptar para confirmar la acción. Si el grupo de
claves es almacenado correctamente aparecerá el mensaje “Grupo de claves almacenado”, sino
el mensaje de error correspondiente.
Nota: las claves utilizadas para crear el grupo de claves deben haber sido almacenadas
previamente.
Aparece una nueva pantalla listando las claves que forman el grupo de claves.
A continuación hay que hacer click sobre la opción “Editar” del menú de opciones.
Por último hacer click en el botón Aceptar para confirmar la acción. Si el grupo de
claves es almacenado correctamente aparecerá el mensaje “Grupo de claves modificado”, sino
el mensaje de error correspondiente.
Nota: las claves utilizadas para editar el grupo de claves deben haber sido almacenadas
previamente.
Aparecerá un diálogo en el que hay que pulsar sobre el botón Aceptar para confirmar la
acción.
Esta funcionalidad consiste en visualizar las estadísticas de uso de las claves utilizadas
para las operaciones con las tarjetas RFID.
Para ver las estadísticas hay que pinchar sobre el icono de la operación estadísticas.
Aparecerá un listado con todas las claves que se han utilizado en algún momento para
la lectura o escritura de tarjetas RFID.
ANEXO IV:
Scripts y Modificaciones de
Aplicaciones
Para el desarrollo de este proyecto se ha visto necesario crear una serie de scripts y
modificar el código de otras aplicaciones. En este anexo se indican dichos elementos.
Scripts de instalación
En este punto se especifican los scripts en lenguaje BASH utilizados para las reiterativas
instalaciones del software LibNFC y Mfoc en PC y el dispositivo móvil, y Proxmark3 en el
dispositivo móvil. En ambos máquinas la instalación se ha hecho sobre una máquina virtual
Linux.
#! /bin/bash
su
mount
cd system
dd if=/sdcard/libusb.so of=/system/lib/libusb.so
dd if=/sdcard/libreadline.so of=/system/lib/libreadline.so
dd if=/sdcard/libtermcap.so of=/system/lib/libtermcap.so
dd if=/sdcard/proxmark3 of=/system/bin/proxmark3
#! /bin/bash
#-----------------------------------
#LibNFC
#-----------------------------------
wget http://libnfc.googlecode.com/files/libnfc-1.7.0-rc7.tar.gz
rm libnfc-1.7.0-rc7.tar.gz
cd libnfc-1.7.0-rc7
autoreconf -vis
cd ..
sudo ldconfig
#-----------------------------------
#Mfoc
#-----------------------------------
wget https://mfoc.googlecode.com/files/mfoc-0.10.6.tar.gz
cd mfoc-0.10.6/
autoreconf -vis
automake
autoconf
./configure
make all
Modificación de LibNFC
Debido a que LibNFC posee escasa documentación se ha visto necesario realizar una
serie de modificaciones en el código fuente para entender su funcionalidad.
Estas modificaciones han consistido en añadir mensajes de depuración para saber cuál
es la situación de la aplicación en cada momento. Además estos mensajes han servido para
conocer la información y los comandos enviados entre el lector y la tarjeta RFID, tanto en
formato hexadecimal como ASCII.
Esta aplicación solo se ha modificado para que las claves obtenidas sean legibles para el
usuario ya que inicialmente eran codificadas en base octal.