presenta - tesis.ipn.mx
Post on 20-Oct-2021
10 Views
Preview:
TRANSCRIPT
INSTITUTO POLITÉCNICO NACIONAL
Centro de Innovación y Desarrollo Tecnológico en Cómputo
SISTEMA DE CIFRADO DE VOZ PARA EQUIPOS DE TELEFONÍA MÓVIL.
TESIS QUE PARA OBTENER EL GRADO DE MAESTRÍA EN TECNOLOGÍA DE CÓMPUTO
PRESENTA
Ing. Gabriel Eduardo García Rojas
DIRECTORES
M. en C. Eduardo Rodríguez Escobar M. en C. Marlon David González Ramírez.
Diciembre 2015
Sistema de cifrado de voz para equipos de telefonía móvil
ii
Resumen
Las comunicaciones móviles, han tenido un crecimiento en el número de dispositivos de
uso diario, entre ellos se encuentran los Smartphone, que además de hacer llamadas o enviar
mensajes de texto, permiten instalar diferentes aplicaciones con distintos fines. Aunado a esto la
seguridad en los dispositivos de telefonía móvil es escaza en cuanto a la protección de nuestros
datos personales.
Por ello en este trabajo se muestra el desarrollo de una aplicación en un dispositivo de
telefonía móvil con el Sistema Operativo Android con versión 4.0 Ice Cream Sandwich, con ella se
pretende proteger aquella información en audio particularmente mensajes de voz.
Se aplicó un cifrado DES en su variante Triple-DES 96 ya que ésta tiene poca aplicación
sobre archivos de audio. El algoritmo de cifrado fue programado sobre el IDE Eclipse con una
Programación Orientada a Objetos creando clases propias del cifrado Triple DES 96 excluyendo las
bibliotecas contenidas en los paquetes de java.security y java.cypto.
Se utilizaron bibliotecas contenidas en la API de la versión de Android para la obtención
del audio, estas bibliotecas contienen clases y métodos para crear y reproducir información de
audio, fue importante considerar que no todos los dispositivos permiten el uso de esta biblioteca
por falta de codificadores o fuentes.
También se muestra el desarrollo de la implementación de un candado físico, el cual
evitar el uso de la aplicación, si no esta no cuenta con dispositivo. Este candado está
implementado en un microcontrolador PIC 18F2455 a través de una conexión USB, donde el
microcontrolador envía la información referente a las llaves para el cifrado Triple-DES 96, ya que si
un usuario ajeno no cuenta con el candado, no es posible ingresar las llaves manualmente,
evitando cifrar información.
Sistema de cifrado de voz para equipos de telefonía móvil
iii
Abstract
The mobile communications have grown in the number of everyday devices, in addition to
them, there are smartphones which also make calls or send text messages and allow install
different applications for various purposes. Added to this, the mobile device security in the
personal data is low.
Therefore in this work shows the development of an application on a mobile telephone
with Android Operating System version 4.0 Ice Cream Sandwich, with this, the purpose is protect
that audio information, particularly voice messages.
The DES encryption algorithm in variant Triple-DES-96 was applied, since it has little
application for audio files. This encryption algorithm was programmed in platform Eclipse with
Object Oriented Programing, creating own classes of the TripleDES96 encryption excluding the
libraries: java.security and java.cypto.
The libraries included in API from the Android version were used to obtain the audio data;
this libraries contain the classes and methods to create and audio playing. It was important
consideration that not all devices allow the use of this library, because encoders and sources are
missing.
Also, the development of an implementation of a physical lock is displayed, this avoid the
program use if this not found in the device. This lock was implemented in a PIC18F2455
microcontroller connected with an USB, where the microcontroller sends the information of the
keys to cipher in Triple-DES-96, and if a foreign user don't have the lock, is impossible introduce
manually the keys, avoiding encrypt.
Sistema de cifrado de voz para equipos de telefonía móvil
iv
Agradecimientos
Agradezco infinitamente a todo aquellos que han formado parte de este capítulo de mi
vida, que con su apoyo ha sido posible este nuevo logro.
Agradezco a mis padres Irma y Calixto por la confianza que siempre me han brindado,
además de todos los valores que me han enseñado y la importancia del trabajo duro para alcanzar
las metas deseadas.
Para mis hermanos David, Edgar, Gerardo que siempre han sido un pilar en mi formación,
sé que es posible contar con ellos en todo momento, ya sea solo para escuchar o darme un
pequeño consejo. Gracias Marisol y Leonardo que se han integrado a la familia en estos últimos
años.
Aunque la distancia puso un prueba en nuestro camino, hemos demostrado fortaleza, ya
que ha hecho de nosotros personas de trabajo duro y de nuevos logros, con tu apoyo Beatriz
Marlet además de todos los que nos rodean ha sido posible finalizar esta meta deseada, por una u
otra circunstancia hemos superado los obstáculos, no me alcanzan las palabras para agradecer al
destino el habernos puesto en el mismo camino, gracias por ser esa persona autentica.
De manera especial agradezco a la familia Rojas, García, Torres y Perea por el apoyo que
me brindan. A mis tíos Arturo y Elvia que se han adelantado pero siempre formaran parte de mi
vida y estarán en todo momento mi corazón, gracias por sus consejos y por su ejemplo ya que
lucharon hasta el final.
A mis amigos Benito, Sinuhé y Santiago por la amistad que hemos construido y el apoyo
que me han brindado a lo largo de estos diez años de amistad. Y a mis compañeros de este
camino, Julián, Jorge, Eduardo, Joaquín y Javier.
Finalmente a mis profesores Eduardo y Marlon David, por la confianza y la oportunidad de
trabajar con ustedes en este proyecto.
Sistema de cifrado de voz para equipos de telefonía móvil
v
Índice General Resumen...... ........................................................................................................................................ ii
Abstract....... ........................................................................................................................................iii
Capitulo 1. Introducción ...................................................................................................................... 1
1.1 Estado del Arte .......................................................................................................................... 2
1.1.1 Protocolos y redes de comunicación para telefonía móvil ................................................ 6
1.2 Planteamiento del Problema .................................................................................................. 10
1.3 Objetivo General ..................................................................................................................... 10
1.4 Objetivos Particulares ............................................................................................................. 10
1.5 Metodología del Proyecto ....................................................................................................... 11
Capitulo 2. Marco teórico .................................................................................................................. 12
2.1 Telefonía Móvil ........................................................................................................................ 12
2.1.1 Tecnologías móviles ......................................................................................................... 13
2.1.2 GSM .................................................................................................................................. 14
2.2 SO Android .............................................................................................................................. 19
2.2.1 Versiones de Android y niveles de API ............................................................................. 19
2.2.2 Arquitectura de Android .................................................................................................. 22
2.3Seguridad ................................................................................................................................. 24
2.3.1 Historia de la Criptografía ................................................................................................ 24
2.3.2 Protocolos y algoritmos de cifrado .................................................................................. 26
2.3.3 Protocolo de criptografía simétrica .................................................................................. 26
2.3.4 DES.................................................................................................................................... 27
2.3.5Triple-DES .......................................................................................................................... 33
2.3.6Triple-DES96 ...................................................................................................................... 34
2.4 Microcontroladores ................................................................................................................. 36
Capitulo 3. Desarrollo ........................................................................................................................ 38
3.1 Configuración y desarrollo en Android ................................................................................... 38
3.2 Media Recorder ....................................................................................................................... 40
3.3Formato de Audio 3gpp ........................................................................................................... 42
3.4Cifrado Triple-DES 96 Android ................................................................................................. 44
3.4.1 Clase CifradoTDES3gpp .................................................................................................... 45
3.4.2 Clase CifradoTDES96 ........................................................................................................ 45
Sistema de cifrado de voz para equipos de telefonía móvil
vi
3.4.3 Clase DescifradoTDES96 ................................................................................................... 46
3.3.4 Clase LlavesTDES96 .......................................................................................................... 46
3.4 Vista de la Actividad Principal ................................................................................................. 46
3.5 Clase Principal ......................................................................................................................... 48
3.6 Vista para Actividad de Solicitud de Llaves ............................................................................. 51
3.7 Actividad Solicitud Llaves ........................................................................................................ 52
3.8 Implementación de Microcontrolador .................................................................................... 53
3.8.1 Configuración USB en Android ......................................................................................... 53
3.8.2 Configuración USB en Microcontrolador ......................................................................... 55
Capitulo 4. Pruebas de Cifrado y Descifrado. .................................................................................... 60
4.1 Pruebas de la aplicación Android. ........................................................................................... 60
Capitulo 5. Análisis para implementación en GSM. .......................................................................... 73
5.1 Vulnerabilidad de las llamadas telefónicas. ............................................................................ 73
5.2 Implementación de cifrado en la red GSM ............................................................................. 75
Conclusiones ..................................................................................................................................... 80
Trabajos a futuro ............................................................................................................................... 81
Referencias ........................................................................................................................................ 82
Sistema de cifrado de voz para equipos de telefonía móvil
vii
Índice de Figuras
Figura 2.1. Proceso de Comunicación de telefonía móvil ................................................................. 12
Figura 2.2. DynaTac 8000x ................................................................................................................ 13
Figura 2.3. Iphone 5s (izq.), Galaxy S5 (der.) .................................................................................... 13
Figura 2.4. Top 8 SO móviles en el mundo ........................................................................................ 14
Figura 2.5. Top 8 SO móviles en México ........................................................................................... 14
Figura 2.6. Mapa de Cobertura GSM ................................................................................................ 15
Figura 2.7. Modelo de capas GSM . ................................................................................................... 17
Figura 2.8. Arquitectura de Android ................................................................................................. 23
Figura 2.9. Diagrama de cifrado DES ................................................................................................. 28
Figura 2.10. Diagrama general de TripleDES ..................................................................................... 34
Figura 2.11. Diagrama primera ronda Triple-DES 96 ........................................................................ 35
Figura 3.1. Datos recogidos durante un período de 7 días terminado el 2 de noviembre de 2015. 39
Figura 3.2. Diagrama General de la clase MediaRecorder ............................................................... 40
Figura 3.3. Estructura de un archivo de audio 3gpp ........................................................................ 43
Figura 3.4. Diagrama de lectura y escritura del archivo de audio .................................................... 44
Figura 3.5. Vista de actividad principal de cifrado ............................................................................ 47
Figura 3.6. Vista de actividad de solicitud de llaves .......................................................................... 51
Figura 3.7. Registro de Actividad en AndroidManifest.xml .............................................................. 52
Figura 3.8. Diagrama Electrónico conexiones PIC18F2455 .............................................................. 55
Figura 3.9. Cable On-To-Go (OTG) ..................................................................................................... 58
Figura 4.1. Audio "Prueba número nueve aplicación de grabado de mensajes de voz" .................. 61
Figura 4.2. Audio "La prueba diez fue la última realizada el día 25 de Febrero del 2015" ............... 61
Figura 4.3. Audio de fragmento del libro Cien Años de Soledad ...................................................... 62
Figura 4.4. Prueba uno, espectro superior Audio original, inferior Audio Cifrado ........................... 62
Figura 4.5. Prueba 2 de Audio espectro superior original, inferior cifrado ...................................... 63
Figura 4.6. Prueba 3 de Audio espectro superior original, inferior cifrado ...................................... 63
Figura 4.7. Prueba 4 de Audio espectro superior original, inferior cifrado ...................................... 64
Figura 4.8. Prueba 5 de Audio espectro superior original, inferior cifrado ...................................... 64
Figura 4.9. Prueba 6 de Audio espectro superior original, inferior cifrado ...................................... 64
Figura 4.10. Prueba 7 de Audio espectro superior original, inferior cifrado .................................... 65
Figura 4.11. Prueba 8 de Audio espectro superior original, inferior cifrado .................................... 65
Figura 4.12. Prueba 9 de Audio espectro superior original, inferior cifrado .................................... 66
Figura 4.13. Prueba 10 de Audio espectro superior original, inferior cifrado .................................. 66
Figura 4.14. Audio original prueba 1 "Prueba uno". ......................................................................... 67
Figura 4.15. Audio cifrado de prueba 1. ............................................................................................ 67
Figura 4.16. Audio descifrado del archivo cifrado de prueba 1. ....................................................... 67
Figura 4.17. Audio original prueba 10. .............................................................................................. 67
Figura 4.18. Audio cifrado de prueba 10. .......................................................................................... 67
Figura 4.19. Audio descifrado del archivo cifrado de prueba 10. ..................................................... 68
Figura 4.20. Circuito microcontrolador PIC18F2455 con USB ........................................................... 69
Sistema de cifrado de voz para equipos de telefonía móvil
viii
Figura 4.21. Tipos de conectores USB ............................................................................................... 70
Figura 4.22. Conexión PIC18F2455 a Sony MT11 vía USB ................................................................. 70
Figura 4.23. Muestra de las llaves en la vista principal ..................................................................... 71
Figura 4.24. Llaves ingresadas por microcontrolador ....................................................................... 71
Figura 4.25. Prueba final microcontrolador, audio original .............................................................. 71
Figura 4.26. Prueba final, audio cifrado ............................................................................................ 72
Figura 4.27. Prueba final, audio descifrado ...................................................................................... 72
Figura 5.1. Dispositivo Stingray ......................................................................................................... 73
Figura 5.2. Dispositivo Grossamer ..................................................................................................... 74
Figura 5.3. Dispositivo Tiggerfish ...................................................................................................... 75
Figura 5.4. Diagrama módulo SIM900 .............................................................................................. 76
Figura 5.5. Entrada de audio SIM900 ................................................................................................ 77
Figura 5.6. Salida de audio Sim900 .................................................................................................. 77
Sistema de cifrado de voz para equipos de telefonía móvil
ix
Índice de Tablas
Tabla 2.1. Protocolos e interfaces de la arquitectura GSM .............................................................. 18
Tabla 2.2. Permutación inicial 1 (PC-1) ............................................................................................. 29
Tabla 2.3. Corrimientos Llaves DES ................................................................................................... 29
Tabla 2.4. Permutación 2 (PC-2) ........................................................................................................ 30
Tabla 2.5. Permutación Inicial (IP) ..................................................................................................... 30
Tabla 2.6. Expansión (E) .................................................................................................................... 31
Tabla 2.7. Caja S1 .............................................................................................................................. 31
Tabla 2.8. Cajas para obtención de subclaves ................................................................................... 32
Tabla 2.9. Permutación P .................................................................................................................. 32
Tabla 2.10. Permutación inversa (IP**-1) ......................................................................................... 33
Tabla 2.11. Parámetros Microcontrolador PIC18F2455 [17] ............................................................ 37
Tabla 3.1. Proveedores de teléfonos celulares ................................................................................. 38
Tabla 3.2. Top 5 Sistemas Operativos en Smartphones .................................................................... 38
Tabla 3.3. Plataformas Android ......................................................................................................... 39
Tabla 4.1. Características Sony MT11 ............................................................................................... 60
Tabla 4.2. Características Moto G ..................................................................................................... 60
Tabla 4.3. Resultados de Cifrado y Descifrado .................................................................................. 68
Sistema de cifrado de voz para equipos de telefonía móvil
1
Capitulo 1. Introducción
En la actualidad existen diferentes tipos de medios para establecer una comunicación
hablando de largas distancias, ya sea correo tradicional, radio, internet, telefonía fija o móvil, ésta
última desde 1974 con la telefonía celular sigue teniendo un crecimiento exponencial mejorando
su servicio y calidad. Los sistemas de comunicación móviles utilizan redes de radiocomunicación
privadas la cuales se pueden describir como la conmutación automática de algunos canales en un
sistema repetidor multicanal.
Uno de los sistemas más utilizados para la comunicación móvil es GSM (por sus siglas en
inglés Global System for Mobile Communications). GSM es un sistema de telefonía netamente
digital, originalmente se definió como un estándar europeo abierto para redes de teléfonos
móviles digitales que soportan voz, mensajes de texto, datos y roaming (servicio de comunicación
inmediata).
Por su amplio campo de desarrollo los sistemas de comunicación están expuestos a
diferentes ataques de espías que interceptan mensajes de texto y escuchan llamadas privadas
entre los usuarios, donde esto puede traer consecuencias al usuario, como puede ser suplantación
de identidad o algún tipo de fraude con sus datos personales.
Hablando sobre criptografía moderna y el uso de computadoras los algoritmos de cifrado
han permitido en el corto tiempo de su aparición, proteger nuestra información en cuestión de
segundos solo con tener a la mano una llave o contraseña necesaria. Pero a su vez el crecimiento
de la tecnología de cómputo ha concedido que algunos algoritmos queden en desuso por ataques
que permiten obtener la información original, cifrada por dicho algoritmo. Pero hay otros que
fueron mejorados sin llegar perder complejidad computacional; tal es el caso del algoritmo Triple-
DES 96, que puede tener un crecimiento de su llave de 112 bits a 168 bits elevando su complejidad
de cálculo, además de la implementación de permutaciones variables por medio del número
irracional PI y un entero positivo.
Por otra parte debe destacarse que la implementación de sistemas operativos montados
en dispositivos de telefonía móvil, han permitido crear aplicaciones que ayuden al usuario a
mantener una vida más organizada, esto es posible gracias a que el sistema operativo Android al
ser de distribución libre, se puede crear casi cualquier aplicación para el usuario.
Cabe mencionar que existen aplicación para los dispositivos de telefonía móvil que ayudan
a proteger nuestra información personal, como son mensajes de texto, fotografías, videos, correos
electrónicos, hasta aquellas que nos permiten hacer más con nuestro dispositivo, tal es el caso de
aplicaciones que realicen tareas como bloqueo de aplicaciones, eliminación de archivos personales
desde internet o aplicaciones que permitan realizar llamadas de telefónicas. Este tipo de
aplicaciones se pueden encontrar de forma gratuita para su descarga pero algunas de ellas puede
Sistema de cifrado de voz para equipos de telefonía móvil
2
tener algún costo adicional por su uso. Retomando el caso de las aplicaciones que nos permitan
realizar llamas seguras, son aplicaciones que trabajan sobre protocolo de internet dejando fuera
las comunicaciones de radio como son GSM.
Es por ello que se desarrolla la siguiente tesis con la finalidad de crear una aplicación que
tenga como finalidad proteger nuestras llamadas telefónicas, que viajen por un canal inseguro
utilizando el algoritmo de cifrado Triple-DES 96 y la red de telefonía móvil GSM, la cual se
pretende sea de libre distribución sobre el sistema operativo Android. Se plantea también el uso
de un microcontrolador que funja como candado físico, para evitar el mal uso de la aplicación, así
solo el usuario que tenga el candado podrá realizar llamadas seguras.
En el capítulo uno se describe información relevante actual sobre los sistemas de cifrado
de voz sobre redes de telefonía GSM, así como las aplicaciones de mayor uso para realizar
llamadas de voz cifradas creadas en diferentes sistemas operativos.
En el capítulo dos se muestra el marco teórico donde se encuentra la información respecto
a la telefonía a los protocolos de comunicación GSM, también la información del sistema operativo
Android y finalmente el protocolo de cifrado simétrico Triple-DES 96.
Con respecto al capítulo tres es descrito el proceso de desarrollo la implementación del
sistema de cifrado de mensajes de audio creados a partir de un dispositivo de telefonía móvil. Es
descrito el proceso de la programación del sistema sobre el dispositivo además de la configuración
y la programación en el microcontrolador.
Las pruebas realizadas sobre la implementación del sistema de cifrado se muestran en el
capítulo cuatro. En este capítulo se muestran los resultados obtenidos en primer lugar de los
cifrados de mensajes de voz y posteriormente la implementación del microcontrolador con el
dispositivo de telefonía móvil con Android.
La investigación realizada para el desarrollo de la comunicación GSM con respecto a la
implementación del sistema es descrita en el capítulo número cinco, además de los resultados
obtenidos de ésta investigación. Finalmente los últimos apartados exponen las conclusiones y
trabajados a futuro que arrojo la investigación mostrada en esta tesis.
1.1 Estado del Arte
Algunas investigaciones han resuelto problemas para el cifrado de la voz por medio de
diferentes técnicas o protocolos. En el documento Novel End-to-End Voice Encryption Method in
GSM System[1] se encontró que el mecanismo de seguridad de GSM no puede garantizar una
comunicación segura end-to-end (punto a punto), es por eso que se presentó un novedoso
método de cifrado de voz basado en el canal de voz actual, que puede superar la escasez de los
canales de datos y solucionar el problema de la encriptación de voz al penetrar en el codificador
de voz RPE-LTP. El método propuesto en el artículo antes mencionado realiza comunicaciones
Sistema de cifrado de voz para equipos de telefonía móvil
3
seguras end-to-end en el sistema GSM con un retardo de tiempo corto, actuando con un buen
comportamiento con todas las redes de este tipo y es de fácil implementación sin ninguna
modificación en el sistema de señalización GSM actual.
Se sabe que el estándar GSM fue diseñado con un nivel moderado de servicio de
seguridad, por lo cual en el documento A simple and cheap end-to-end voice encryption framework
over GSM-based networks[2] se muestra el diseño de un sistema en primera parte para autenticar
al emisor utilizando una clave pre-compartida donde las comunicaciones entre el emisor y la
estación base se podían cifrar utilizando un cifrado continuo A5/1 y A5/2, pero ambos algoritmos
se volvieron vulnerables al lograrse romper [3][4]; la intercepción de la voz podría hacerse de una
forma inalámbrica.
En segunda parte se implementó un framework para el cifrado de voz end-to-end sobre
redes GSM en el cual se establecen 3 fases al proceso de comunicación: la lectura de parámetros,
donde el prototipo lee un mensaje SMS especial almacenado en el teléfono móvil, la fase de
llamada realizada donde el prototipo ordena al teléfono móvil hacer un CSD (Circuit Switched
Data) utilizando el estándar de comandos AT (attention) los cuales son enviados a través de un
enlace Bluetooth entre el prototipo y el teléfono móvil y finalmente la fase de transmisión de voz
donde la voz digital se comprime y se cifra antes de enviarla a través de la conexión CSD.
Gracias a los sistemas operativos utilizados de los dispositivos de comunicación móviles
como Smartphone, tabletas, entre otros, se han desarrollado gran variedad de aplicaciones que
permiten crear una comunicación segura entre dos dispositivos ya sea para proteger datos o
llamadas. La siguiente lista muestra las aplicaciones más relevantes para diferentes dispositivos
móviles.
· RedPhone Secure Call. Aplicación de distribución gratuita que proporciona un cifrado end-
to-end para sus llamadas con un protocolo ZRTP 'version' byte and superfluous nullbytes,
asegura sus conversaciones para que nadie pueda escucharlas. Utiliza su número de
teléfono normal para hacer y recibir llamadas, por lo que no es necesario otro
identificador. El sistema cifrado funciona cuando las dos partes tengan instalada la
aplicación. Creado para el SO Android versión 2.2 y superiores, trabaja sobre redes 3G y
WiFi.
· Cryptotel - Securecalls. Una aplicación gratuita para los sistemas operativos Android
versión 1.6 o superiores y Symbian. Aplicación dedicada a plataforma de llamadas seguras
más adecuado para los clientes de Europa del Este con los servidores ubicados alrededor
de la península de los Balcanes realiza llamadas anónimas de bajo costo e internacionales
a todo el mundo. Tiene un sistema de manejo de señalización híbrido y protocolos de
comunicación para cifrados ZRTP peer-to-peer y llamadas SRTP sobre la red 3G.
· Silent Phone. Aplicación con capacidad de vídeo y voz similar a Face Time
Su distribución es gratuita, sin embargo se necesita una suscripción a SilentCircle.com.
Sistema de cifrado de voz para equipos de telefonía móvil
4
Usa contactos generales y favoritos existentes de su dispositivo. Trabaja con los SO
Android en versiones 2.3.3 o superiores y IOS 5.0 o superiores. Proporciona cifrado end-to-
end desde el dispositivo móvil o de un ordenador sobre redes 3G, 4G o WiFi.
· SECUMOBI. Aplicación de descarga gratuita pero requiere una suscripción anual y una
cuota mensual. Permite a sus suscriptores obtener una tarjeta micro SD con tecnología
patentada donde el software ofrece una rentable y poderosa comunicación cifrada end-to-
end para establecer comunicaciones privadas, secretas y silenciosas tales como voz y
mensajes. SecuMobi es un producto sueco de SINVO AB, con una garantía de innovación,
empresa sueca registrada con el número: 556809-2042. La aplicación funciona en
teléfonos móviles estándar y es fácil de usar sin sacrificar su seguridad. Es una aplicación
registrada en Android 2.3 o 4.0 y Symbian S60, sobre redes 3G, 4G. SecuMobi ofrece
soluciones avanzadas utilizando la telefonía móvil y la mensajería cifrada a través del
protocolo IP para la transmisión de contenido cifrado entre los teléfonos celulares. Las
claves públicas y privadas se generan en la tarjeta microSD. La clave privada está protegida
y nunca sale de la tarjeta. Mantiene una protección contra ataques de canales laterales y
de autenticación a través de ECC 384. Cifrado de voz basado en AES (Advanced Encryption
Standard) 256 con clave única para cada llamada.AES 256 y firmas digitales para proteger
el almacenamiento de los mensajes y la libreta de contactos. El acceso a la tarjeta está
protegida por códigos PIN y PUK.
· My Secure Voice - safe calls. Aplicación basada en Android 2.3 o superiores, IOS y
Blackberry que funciona sobre la red 3G. Para realizar o recibir una llamada de voz,
tendrás que autenticarte con un código PIN para acceder a las claves criptográficas.
Cifrado e integridad de la llamada desde el principio hasta el final (end-to-end). La clave
está cifrada y firmada digitalmente. El código PIN permite bloquear/desbloquear el acceso
a las llamadas salientes/entrantes. Gracias al uso de certificados y una criptografía
asimétrica, las llamadas que hagas estarán protegidas tanto contra el espionaje (conocido
como ataque Man-in-the-middle) como contra la suplantación de identidad (conocida
como spoofing). Con los protocolos SRTP, SSL y la infraestructura de clave pública (PKI), se
garantiza la máxima integridad y seguridad de las conversaciones en todas las etapas de la
transmisión de datos (end-to-end). Finalmente las llamadas están protegidas a través de
AES, RSA (1024, 2048), SHA-1.
· Kryptos. Kryptos es una aplicación de voz sobre protocolo de Internet (VoiceOverInternet
Protocol, VoIP) segura. La aplicación proporciona una conectividad VoIP. Trabaja sobre
redes 3G y 4G en sistemas Operativos Android 2.1 o superiores, IOS y Blackberry. Utiliza
un estándar de cifrado AES a 256 bit de grado militar para cifrar comunicaciones de voz
entre usuarios y cifrado RSA (Rivest, Shamir y Adleman) de 1024 bit durante el intercambio
de claves simétricas.
Sistema de cifrado de voz para equipos de telefonía móvil
5
· Cellcrypt Mobile. Aplicación basada en los Sistemas Operativos Android 2.3.3 o superiores
iOS 4, 5 o 6 y Symbian S60 sobre las redes 3G, 4G y Satelital. Para realizar una llamada, los
usuarios sólo tienen que abrir la aplicación móvil Cellcrypt seleccionando el icono en su
teléfono, introducir manualmente un número Seguro de Cellcrypt (o seleccionando un
contacto guardado en la agenda de teléfonos) y pulsar 'llamar'. Cellcrypt Mobile debe
estar en ejecución en ambos dispositivos para que ambos puedan cifrar/descifrar la
llamada de voz en cada extremo para garantizar la seguridad a lo largo de todo el
recorrido entre ambas partes que llaman. Utiliza el canal de datos (IP) en lugar de canal de
voz, ambos dispositivos tienen que estar conectados a Internet a través de la conectividad
de datos estándar proporcionada por el proveedor de servicios. Maneja una criptografía
AES un algoritmo de Firma Digital de Curva Elíptica (ECDSA Elliptic Curve Digital Signature
Algorithm) para firmas digitales, una Curva Elíptica Diffie-Hellman ECDH para negociación
de claves entre dispositivos, también algoritmo de SHA (Secure Hash Algorithm) en el
mensaje cifrado. Adicionalmente, antes que estos algoritmos se procesen, Cellcrypt utiliza
algoritmos adicionales para ofrecer mayor seguridad (doble cifrado). Por ejemplo, la
llamada de voz es primeramente cifrada utilizando RC4-256 bit y después es cifrada de
nuevo utilizando AES-256 bit.
· Kriptocall. Aplicación de costo por descarga. La aplicación permite llamar entre cualquier
celular y computadora de forma ilimitada y sin restricción. Se recomienda usar una
conexión de Internet de alta velocidad, ya sea Internet GPRS o WiFi. Los codecs de voz,
automáticamente detectarán el ancho de banda del canal para adaptarse de la mejor
manera posible. Disponible en Sistemas Operativos Android 2.3 o superiores,IOS, Mac,
Linux, Blackberry y Windows PC. Utiliza ZRTP para validación de llaves como una
extensión delReal-time Transport Protocol (RTP) que describe el establecimiento de un
intercambio Diffie-Hellman de claves para el Secure Real-time Transport Protocol (SRTP).
· Cryptify Call. Aplicación disponible en Android 4.0 o superiores y IOS. Usando Cryptify
permite llamadas normales, sin embargo, proporciona la seguridad de llamadas cifradas y
autenticadas de extremo a extremo. Se experimenta un sonido de alta calidad con baja
latencia durante las llamadas seguras. Trabaja sobre redes EDGE, 3G, 4G y WiFi siguiendo
el estándar 3GPP para una comunicación de voz y datos de usuarios cifrando sólo en la
interfaz de radio, entre el teléfono móvil y la estación base.
· PhoneX-Secure Communication. Prueba gratuita por 7 días posteriormente se requiere
hacer una suscripción anual y una cuota mensual. Trabaja en los Sistemas Operativos
Android 2.3 o superiores y IOS sobre la red WiFi. Ofrece una comunicación segura para las
personas y las empresas. Protege las llamadas y mensajes por un fuerte criptografía
simétrica y asimétrica. Cada usuario dispone de certificado propio x509v3 digital. La
seguridad end-to-end provisto por X509v3 certificados de usuario final. Los mensajes son
cifrados utilizando RSA, AES y firmado digitalmente. Las llamadas son cifradas por AES o
Sistema de cifrado de voz para equipos de telefonía móvil
6
Twofish. Las claves de cifrado son generadas por el protocolo de Diffie-Hellman. Maneja
ZRTP como protocolo de clave-acuerdo para negociar las claves de cifrado simétrico (AES,
Twofish).
· RaKaCom: Secure Calls. Ofrece llamadas de voz y video seguros, junto con las
comunicaciones de texto cifrados para usuarios de todo el mundo. Con su propia red
global de nodos, RokaCom encuentra el servidor más cercano para que la experiencia sea
de mejor calidad de audio y conversaciones de vídeo posible. Cifrado End-to-End, que
asegura las conversaciones, además de un cifrado AES 256 Suite B Compliant para voz y
video llamadas seguras de alto nivel. Maneja el cifrado AES 256 c para chat, con claves que
se generan en cada sesión. Disponible en Android 3.0 o superiores y IOS 5 o superiores
sobre la red 3G.
1.1.1 Protocolos y redes de comunicación para telefonía móvil
1.1.1.1 Protocolos
A continuación se realizara una breve descripción de los protocolos de comunicación de
telefonía móvil utilizados.
Sistema Global para las comunicaciones Móviles (GSM)
El sistema global para las comunicaciones móviles (Global System for Mobile
Communications por sus siglas en inglés) es un sistema estándar, libre de regalías, de telefonía
móvil digital. Surgió como alternativa digital a los antiguos sistemas analógicos de telefonía celular
como AMPS y TACS, con la intención de obtener mayor seguridad en la comunicación de voz y de
datos. GSM permite que el usuario se conecte a través de su teléfono a su computadora para
enviar y recibir mensajes, correos electrónicos, faxes, también permite navegar por Internet
accediendo con seguridad, así como utilizar otras funciones digitales de transmisión de datos,
incluyendo el servicio de mensajes cortos (SMS) o mensajes de texto.
Los mecanismos de seguridad implementados en GSM lo convierten en un estándar de
comunicaciones móviles mucho más seguro que los sistemas analógicos anteriores. Las
capacidades de cifrado y autentificación aseguran la seguridad de las conversaciones de teléfono
celular GSM y de las credenciales de identificación del abonado contra posibles escuchas
clandestinas.
GPRS
Surge como nueva tecnología para la transmisión de datos en redes móviles GSM
incorporando un servicio basado en paquetes. El uso de paquetes, no está orientado a conexión,
permitiendo un uso más eficiente del espectro de la señal. Este sistema permite también enviar y
recibir datos en modo de paquetes completamente, sin consumir recursos de la red.
Sistema de cifrado de voz para equipos de telefonía móvil
7
La tecnología GPRS utiliza la misma infraestructura de radio que GSM esto implica
principalmente ventajas para el consumidor, ya que le permite estar siempre conectado a distintos
servicios.La principal transformación proviene de la combinación de varias tecnologías (WAP/XML,
Java y el Servicio Multimedia de Mensajes (MMS)).
UMTS
Sistema universal de telecomunicaciones móviles UMTS (Universal Mobile
Telecommunications System) es sucesora de GSM para móviles de tercera generación debido a
que la tecnología GSM, no podía seguir un camino evolutivo para llegar a brindar servicios
considerados de tercera generación. UMTS permite introducir muchos más usuarios a la red
global del sistema, y además permite incrementar la velocidad a 2 Mbps por usuario móvil.
Sus tres grandes características son las capacidades multimedia, una velocidad de acceso a
Internet elevada, la cual también le permite transmitir audio y video en tiempo real; y una
transmisión de voz con calidad equiparable a la de las redes fijas.
VoIP móvil
Aunque ciertamente no es un servicio completo de telefonía móvil como GSM o UMTS es
posible el envío de señales de voz sobre protocolo IP o VoIP, esto significa que la señal de voz que
se transmite en una comunicación entre dos terminales móviles, viaja a través de internet
empleando un protocolo IP.
Con los últimos avances en telefonía móvil se han podido realizar terminales
suficientemente eficientes como para permitir una conexión a internet a través de redes
inalámbricas, con todo lo que conlleva: navegar por internet, enviar y recibir correos electrónicos,
descargar diferentes archivos de datos y utilizar aplicaciones de mensajería instantánea ya sea por
texto, voz o video. Estas últimas aplicaciones son las que permiten enviar y recibir paquetes de voz
que sería la base de la VoIP móvil.
WiFi
Es una tecnología de comunicación inalámbrica mediante ondas también llamada WLAN
(Wireless LAN) o estándar IEEE 802.11 que permiten a cualquier usuario utilizar la red sin
necesidad de instalar un cable telefónico. Esta tecnología fue incorporada a los teléfonos celulares
como otra alternativa de envío y recepción de datos, permitiendo a los usuarios conectarse a la
red. La emisión y recepción de datos se realiza a través de radiofrecuencia, donde WiFi es
clasificada en dos tipos por su velocidad de transmisión:
· 802.11b, que emite a 11 Mb/seg. y
· 802.11g, más rápida, a 54 MB/seg.
Sistema de cifrado de voz para equipos de telefonía móvil
8
LTE
LTE (Long Term Evolution) es un estándar de la norma 3GPP. Definida para unos como una
evolución de la norma 3GPP UMTS (3G), para otros es un nuevo concepto de arquitectura
evolutiva (4G).
LTE es la interfaz radioeléctrica basada en OFDMA (Orthogonal Frequency-Division
Multiple Access) para el enlace descendente (DL) y SC-FDMA para el enlace ascendente (UL). La
modulación elegida por el estándar 3GPP hace que las diferentes tecnologías de antenas MIMO
(Multiple-input Multiple-output)tengan una mayor facilidad de implementación.
CDMA
CDMA (Code División Múltiple Access) es un término genérico para varios métodos de
multiplexión o control de acceso al medio basados en la tecnología de espectro expandido (spread
spectrum) que puede emplearse indistintamente como espectro ensanchado, expandido, difuso o
disperso para referirse en todos los casos al mismo concepto.
En CDMA, la señal se emite con un ancho de banda mucho mayor que el precisado por los
datos a transmitir; por este motivo, la división por código es una técnica de acceso múltiple
de espectro expandido. A los datos a transmitir simplemente se les aplica la función
lógica XOR con el código de transmisión, que es único para ese usuario y se emite con un ancho de
banda significativamente mayor que los datos.
EDGE
EDGE (Enhanced Data Rates for GSM Evolution) también conocida como EGPRS (Enhanced
GPRS) es una tecnología de la telefonía móvil celular, que actúa como puente entre las
redes 2G y 3G. EDGE se considera una evolución del GPRS. Esta tecnología funciona con
redes GSM. EDGE o EGPRS, puede ser usado en cualquier transferencia de datos basada
en conmutación por paquetes (Packet Switched), como lo es la conexión a Internet. Los beneficios
de EDGE sobre GPRS se pueden ver en las aplicaciones que requieren una velocidad de
transferencia de datos, o ancho de banda altos, como video u otros servicios multimedia.
1.1.1.2 Redes
2G
La telefonía móvil 2G no se clasifica como un estándar o un protocolo sino como un
manera de indicar el cambio de protocolos de telefonía móvil analógica a digital.
Los protocolos en los que se basa la telefonía 2G son los siguientes:
· GSM
Sistema de cifrado de voz para equipos de telefonía móvil
9
· Cellular PCS/IS-136, conocido como TDMA (conocido también como TIA/EIA136 o ANSI-
136) es un sistema regulado por la TIA (Telecommunications Industry Association)
· IS-95/CDMA-ONE, conocido como CDMA (Code Division Multiple Access)
· D-AMPS (Digital Advanced Mobile Phone System)
· PHS (Personal Handyphon System), es un sistema utilizado al principio en Japón por la
compañía NTT DoCoMo con el propósito de tener un estándar enfocado más a la
transferencia de datos que el resto de los estándares 2G.
Los sistemas 2G soportan velocidades de información más altas para voz pero está
limitado en envío de datos. Ofrece algunos servicios de datos como, fax y SMS (Short Message
Service). La mayoría de los protocolos de 2G ofrecen diferentes niveles de encriptación.
La red 2G tuvo una evolución a 2.5G que ofrece características extendidas tales como
GPRS (General Packet Radio System), HSCSD (High Speed Circuit Switched Data), EDGE (Enhanced
Data Rates for Global Evolution), IS-136B, IS-95B, entre otros, que permitiendo dar el paso hacia la
tecnología 3G.
3G
Es la abreviación de tercera generación de transmisión de voz y datos a través de telefonía
móvil mediante UMTS (Universal Mobile Telecommunications System o servicio universal de
telecomunicaciones móviles), donde los servicios asociados con ésta generación proporcionan la
posibilidad de transferir tanto voz y datos (desde una llamada telefónica hasta una video-llamada)
y datos no-voz (como descarga de programas, envío de correos electrónicos, y mensajería
instantánea).
Es importante mencionar que dentro de la generación 3G se utiliza el servicio GPRS
(General Packet Radio Service) que puede dar velocidad de datos desde 56 kbit/s hasta 114 kbit/s.
Además, permite usarse para servicios como el acceso al protocolo de aplicaciones inalámbricas
WAP (Wireless Application Protocol), servicio de mensajes cortos SMS (Short Messaging Service),
sistema de mensajería multimedia MMS (Multimedia Messaging Service), y para servicios de
comunicación por Internet como correo electrónico y el acceso a internet.
4G
Esta generación está basada completamente en el protocolo IP, siendo un sistema y una
red, que se obtiene gracias a la convergencia entre las redes cableadas e inalámbricas. Esta
tecnología podrá ser usada por módems inalámbricos, móviles inteligentes y otros dispositivos
móviles. La principal diferencia con las generaciones predecesoras es la capacidad para
proporcionar velocidades de acceso mayores de 100 Mbit/s en movimiento y 1 Gbit/s en reposo,
manteniendo una calidad de servicio de punta a punta de alta seguridad.
Sistema de cifrado de voz para equipos de telefonía móvil
10
1.2 Planteamiento del Problema
México sufre de 12 ataques cibernéticos por segundo, de los que 60% son al gobierno para
tratar de extraer información y provienen principalmente de complejas redes piratas de Rusia y
Estados Unidos, reveló la corporación alemana GData[5]. Esta información pone en vulnerabilidad
la seguridad de cualquier gobierno, empresa nacional, trasnacional o de los particulares en el país.
Ahora bien el espionaje telefónico considerado un ataque a la privacidad es un delito en
México de acuerdo con el artículo 5to. de la Ley de Seguridad Nacional[6] y en nuestro país, como
ocurre en otros; se ha utilizado como herramienta de ataque político al infiltrarse en
conversaciones entre personajes públicos o autoridades, dando así a conocer esa información al
divulgarla.
A lo largo del siglo XX y XXI las tecnologías de la comunicación han tenido cambios de una
forma exponencial, una de estas tecnologías son las de comunicación móvil. Algunas han
permitiendo agilizar la comunicación, pero estas a su vez han sufrido de innumerables ataques a la
privacidad al realizarse alguna llamada telefónica, con ello muchas personas se han dado a la tarea
de desarrollar diferentes formas de proteger nuestra privacidad ya sea por medio de un
dispositivo físico, una aplicación o programa que garantice una comunicación segura entre el
transmisor y receptor.
Finalmente el uso de sniffer o analizador de paquetes es una vulnerabilidad a la que los
dispositivos móviles están expuestos; si no se tienen las herramientas adecuadas para localizarlos
es posible que estos intercepten el mensaje enviado entre un receptor y el transmisor tomando
gran cantidad de información que viaja sin algún tipo de cifrado. Estos espías se pueden encontrar
en la red y cualquier usuario puede hacer uso de ellos.
1.3 Objetivo General
Diseñar un sistema de comunicación segura en dispositivos de telefonía móvil cifrando la voz.
1.4 Objetivos Particulares
· Analizar la vulnerabilidad de los dispositivos móviles en el uso de llamadas telefónicas.
· Diseño de sistema de cifrado y descifrado de voz en base a los protocolos de seguridad.
· Diseño de sistema de cifrado en software o framework según la pertinencia del proyecto.
· El algoritmo de cifrado será de fuente disponible.
· Implementación del sistema en un dispositivo de comunicación móvil con un sistema
operativo Android utilizando su máquina virtual.
Sistema de cifrado de voz para equipos de telefonía móvil
11
1.5 Metodología del Proyecto
A continuación se describe la metodología seguida para desarrollar este proyecto y el
cumplimiento del objetivo general y particulares descritos anteriormente.
Se planteó la implementación del sistema operativo Android como plataforma de
desarrollo, el cual está montado sobre una máquina virtual Java (Dalvik), por ello se requirió el
conocimiento de la programación orientada a objetos con el uso del lenguaje de programación
Java, también es requerido el lenguaje de programación xml para el desarrollo de las vistas o
actividades en Android. El IDE (Integred Development Enviroment) utilizado para la programación
es Eclipse versión Indigo o superior.
En cuanto al tratamiento digital de la voz, se requirió el conocimiento del estándar de
audio 3gpp, establecido por The production of Technical Specifications for a 3rd Generation Mobile
System (3GPP)basado en redes de comunicación GSM. Los fundamentos principales tomados en
cuenta fueron, la creación y reproducción de archivos de audio con este formato, además de su
contenido a nivel bit para la manipulación de la información contenida en dichos archivos de
audio.
Respecto a las comunicaciones móviles, GSM es el estándar más utilizado del mundo, por
ello y para realizar la innovación respecto a las aplicaciones existentes, se planteó el uso de esta
red; donde se requirió el conocimiento de los protocolos de comunicación sobre GSM, además del
manejo del estándar y la viabilidad de su implementación sobre el sistema operativo Android,
además de los permisos necesarios para la manipulación de los protocolos de la red.
Por otra parte, en el uso de los algoritmos de cifrado, se optó por el manejo de Triple-DES
96, ya que ofrece una alta protección de información clasificada, además de ser un algoritmo de
poco uso ya que es poco conocido y su implementación sobre audio es escaza. Para su
implementación en el proyecto, se requirió el conocimiento de los algoritmos antecesores DES y
Triple-DES, siendo estos la base de Triple-DES 96, además del conocimiento de permutaciones
variables con el teorema JV. El algoritmo implementado fue programado sobre el lenguaje Java y
se necesitó el uso de manejo de ficheros.
Finalmente, la aplicación hace uso de un candado físico montado sobre un
microcontrolador, para ello se requirió del conocimiento de la programación de los
microcontroladores particularmente el manejo información a través del puerto USB, tanto para el
dispositivo de telefonía móvil con Android como en el microcontrolador, ya que se requiere una
sincronización entre ambos dispositivos para el compartimiento de las llaves de cifrado utilizados
por la aplicación.
Sistema de cifrado de voz para equipos de telefonía móvil
12
Capitulo 2. Marco teórico
2.1 Telefonía Móvil
Las ondas de radio han tenido un gran uso desde su aparición en las comunicaciones y una
de las destacadas quizás es en la comunicación con teléfonos móviles, ya que está permite realizar
un enlace desde cualquier lugar y hasta en movimiento. Los componentes básicos para una
comunicación de telefonía móvil son:
· Terminal (Teléfono móvil emisor)
· Estación base (Antenas receptoras y transmisoras)
La forma de proporcionar el servicio de telefonía celular en una región es dividir ésta en
áreas pequeñas llamadas células (de ahí el nombre de telefonía celular), estas células a su vez son
divididas en áreas más pequeñas donde son colocadas las estaciones bases que envían las ondas
de radio, esto con el fin de controlar la congestión de la célula debido al incremento de los
usuarios.
La figura 1 muestra el proceso que rige a la comunicación de telefonía móvil.
Figura 2.1. Proceso de Comunicación de telefonía móvil
Las ondas de radio son transmitidas a una antena receptora colocada en la estación base,
donde ésta realiza el enlace con la red telefónica conmutada para localizar al receptor, una vez
localizado se realiza el enlace con la estación base del receptor para que finalmente la antena
envíe las ondas de radio al teléfono móvil receptor.
Además de la antenas, en las estaciones base hay una serie de dispositivos electrónicos,
como son, baterías para garantizar la actividad aún en el caso de cortes de fluido eléctrico.
Sistema de cifrado de voz para equipos de telefonía móvil
13
2.1.1 Tecnologías móviles
La tecnología de la telefonía celular ha ido evolucionando de manera exponencial desde su
aparición en 1974 por la compañía DynaTAC cell lanzando al mercado el Analog Motorola
DynaTAC 8000X Advanced Mobile Phone System en 1984, hoy en día compañías como Samsung o
Apple dominan en mercado con sus modelos más reciente como son el Samsung Galaxy S6 o el
Iphone 6srespectivamente.
Figura 2.2. DynaTac 8000x
Figura 2.3.Iphone 5s (izq.), Galaxy S5 (der.)
Esta evolución no solo permitió que los teléfonos celulares hayan tenido una cambio en su
arquitectura de hardware sino que también el software, llevándolos a un nivel de desarrollo de
gran magnitud, algunas características importantes que podemos mencionar son conexión a redes
de telefonía de alta velocidad, implementación de un sistema operativo, desarrollo de
aplicaciones, conexión a internet entre otras.
El uso de los sistemas operativos en la arquitectura de un teléfono celular o dispositivo
móvil ha proporcionado una potente herramienta para el desarrollo de aplicaciones que permiten
al usuario desde programar una alarma hasta realizar compras por internet. Los sistemas
operativos más usados en el mundo son Android de Google y IOS de Apple, las siguientes figuras
Sistema de cifrado de voz para equipos de telefonía móvil
14
muestran el porcentaje de usuarios registrados de los 8 sistemas más utilizados en el mundo y en
México en el último año[7].
Figura 2.4. Top 8 SO móviles en el mundo
Figura 2.5. Top 8 SO móviles en México
2.1.2 GSM
GSM proveniente de las siglas en inglés Global System for Mobile Communications del
CEPT establecido en 1982 es un sistema global para las comunicaciones móviles establecido para
unificar los distintos sistemas móviles digitales y desplazar definitivamente a los analógicos
Sistema de cifrado de voz para equipos de telefonía móvil
15
existentes de esa época. GSM fue planteado como un sistema multioperador y su estándar fue
diseñado con la posibilidad de de que varios operadores pudieran compartir el espectro.
Actualmente GSM alcanza un 80 % de uso y está presente en una gran cantidad de países,
soportando tanto voz como texto y datos al incorporar GPRS.
La figura 6muestra el mapa de la cobertura GSM actual.
Figura 2.6. Mapa de Cobertura GSM[8]
La red GSM permite conexiones tanto de voz como de datos; en las llamadas de voz la
transmisión se envía a 13 kbit/s gracias a un codificador GSM, respecto a la conexión de los datos
el celular se utiliza como un módem de 9.6 kbit/s.
GPRS (General Packet Radio Services) fue la primera de las mejoras de GSM, para la
transmisión de datos con velocidades de 115 kbit/s; posteriormente surgió EDGE (Enhanced Data
Rates for GSM Evolution) segunda mejora en GSM y de software para GPRS, que ahora soportaba
tasas de hasta 348 kbit/s usando 8 slots GSM.
La ventaja principal de un sistema digital celular como lo es GSM es que permite realizar o
recibir llamadas en cualquier país que haya adoptado el estándar, aun estando en tránsito por
ellos, facilidad que se conoce como itinerancia o roaming.
El estándar de telefonía móvil GSM facilita la existencia de una serie de servicios añadidos
a los de la telefonía fija, como son el envío de datos sin la necesidad de un módem externo a
través de una tarjeta para conexión con el puerto serie del ordenador, y el envío de fax grupo 3
gracias a la digitalización de las transmisiones de radio. GSM posibilita la creación de redes
privadas virtuales, ofrece un servicio de mensajes alfanuméricos cortos (SMS) de hasta 160
caracteres y toda una gama amplia de servicios suplementarios, a la vez que utiliza un espectro de
forma mucho más eficiente que los sistemas analógicos, con células más pequeñas y presenta un
menor consumo de energía, lo que permite terminales más reducidas.
Sistema de cifrado de voz para equipos de telefonía móvil
16
Su mayor seguridad, al tener acceso por tarjeta inteligente (SIM) y poder cifrar todas las
conversaciones para evitar las posibles intercepciones en la red es otra de muchas ventajas que
tiene el sistema GSM, aunque esta última es un servicio que no todos los operadores
implementan, así que se tiene que ser precavido al utilizarlo.
El sistema GSM es un sistema de multiplexado en el tiempo (TDM) de banda estrecha
dentro de la banda 900/1800 MHz (1900 en EUA y América del sur)y una separación de 200 KHz
entre portadoras, en cualquiera de las tres bandas, con lo que proporciona al menos una selección
de canales de radiofrecuencia dentro del sistema igual a 18 dB.
2.1.2.1 Conversión analógica/digital en GSM
La comunicación mediante GSM se realiza digitalizando, codificando y comprimiendo la
voz para enviarla por la interfaz de radio. Para la conversión de la voz analógica a digital, se utiliza
el procedimiento estándar de muestreo, cuantificación y codificación, antes de su compresión
para que se adapte a la capacidad de la interfaz de aire.
El muestreo de la señal se realiza a 8 KHz al igual que el caso de la telefonía fija, esto
debido a que depende solo del ancho de banda utilizado (0-4 KHz); en cuanto a la cuantificación se
considera 8,192 niveles (213) para una mejor calidad. Esta señal digital resultante es dividida en
segmentos de 20 ms (260 bits) que alimentan el codificador de voz para el análisis y reducción de
velocidad de bit. Con la ayuda de un vocoder se obtiene un flujo de datos de 13 Kbit/s utilizando el
método de codificación RPE-LTP (Regular Pulse Exitation-Long Term Prediction) y finalmente se
realiza un incremento en la velocidad de hasta 22.8 Kbit/s al introducir los códigos de detección de
errores.
En el caso normal de 13 Kbit/s la voz se divide en bloques de 20 ms, dando así un total de
260 bits de información. A cada uno de estos bloques se le añaden 196 bits de redundancia para
protección contra errores, dando un total de 456 bits por bloque de voz.
Entre los conmutadores de la red GSM y la red fija, la tasa de información se adapta a los
64 Kbit/s común en un enlace PCM, para su conmutación y transmisión sobre circuitos
convencionales. La transmisión de datos en GSM requiere el empleo de los servicios portadores
definidos para tal fin y que se apoyan directamente en la naturaleza digital de la interfaz de radio.
En el caso de que la señal se dirija desde la red hacia el terminal de 64 Kbit/s, el transcodificador la
pasa a 16 Kbit/s donde 13 Kbit/s son para la voz y 3 Kbit/s son para la señalización.
2.1.2.2 Protocolos de GSM
GSM presenta un planteamiento en capas para los diferentes protocolos e interfaces, el
cual proporciona una transparencia a través del medio. La pila de protocolos, métodos de acceso o
partes de control de la Capa 1 (TDMA, FDMA) y Capa 2 (LAPDm, SCCP) de GSM corresponden a la
capa física y enlace del modelo de referencia OSI.
Sistema de cifrado de voz para equipos de telefonía móvil
17
La capa 3 de GSM es conocida como la capa de señalización y comprende las capas 3 a 7
del modelo OSI y está compuesta de las siguientes subcapas.
· Nivel CM (Connection Management) administra el establecimiento y terminación de las
llamadas solicitadas por el usuario.
· Nivel MM (Mobility Management) administra los procedimientos de localización y de
registro, informando de la ubicación de los usuarios.
· Nivel RR (Radio Resource Management) es el encargado de establecer, mantener
terminar el enlace entre la MS y el MSC. en el BTS y en el BSC existe el nivel RR que
corresponde a la funcionalidad del nivel RR.
En la figura 7 se muestra el modelo de las capas GSM,
Figura 2.7. Modelo de capas GSM[9].
donde:
CM: Connecion Management SCCP: Signaling Connection Control Part MM: Mobility Management TCAP: Transaction Capabilities Application Part RR: Radio Resource Management MAP: Mobile Aplication Part LAPDm: Link Access Protocol Data for Mobile
ISUP: International Suscriber Dialling Number Part
BTSM: BTS Management TUP: Telephone User Part BSSAP: Base Station System Application Part MTP: Message Transfer Part
Sistema de cifrado de voz para equipos de telefonía móvil
18
En la siguiente tabla se muestra un resumen de los principales protocolos e interfaces de
la arquitectura GSM, además de la información que circula sobre ellos.
Tabla 2.1. Protocolos e interfaces de la arquitectura GSM[9]
Interfaz Situada entre Descripción Intercambio de información de
usuario señalización
A MSC-BSC Permite el intercambio de información sobre la gestión del subsistema BSS, de las llamadas y de la movilidad. A través de ella, se negocian los circuitos que serán utilizados entre el BSS y el MSC.
Si SS7
Abis BSC-BTS Permite el control del equipo del radio. Si LAPD
B VLR-MSC asociados
VLR es la base de datos que contiene toda la información que permite ofrecer el servicio a los clientes que se encuentran en el área de influencia de sus MSC asociados. Por lo tanto, cuando un MSC necesite proporcionar información sobre un móvil acudirá a su VLR. Esta interfaz NO debe ser externa (por el volumen de información intercambiada)
No MAP/B
C HLR-GSMC Interfaz utilizada por los getways GMSC para enrutar la llamada hacia el MSC destino. La GSMC no necesita contar con un VLR, se trata de un nodo que sólo transmite llamadas.
No MAP/C
D HLR-HLR Permite intercambiar información entre ambas bases de datos, esta información se encuentra relacionada con la posición del móvil y la gestión del servicio contratado por el usuario.
No MAP/D
E MSC-MSC Permite intercambiar la información necesaria para iniciar y realizar un intercambio Inter-MSC cuando el móvil cambia de área de influencia de un MSC a otro.
Si MAP/E, RDSI e ISUP
F MSC-EIR Utilizada cuando el MSC desea comprobar el IMEI de un equipo
No
G VLR-VLR Utilizada para permitir la interconexión entre dos VLRs de diferentes MSCs.
No MAP/G
H HLR-AuC Si MAP/H
I MSC-MS Permite el intercambio transparente de datos entre el MSC y el MS a través del BSS
UM BSS-MS Es la interfaz de radio, se encuentra entre la estación móvil y el BSS.
Si LAPDm
Sistema de cifrado de voz para equipos de telefonía móvil
19
2.2 SO Android
Android es un sistema operativo de fuente abierta de Google adquirido en el 2005 de la
empresa Android Inc. quienes estaban orientados a la producción de terminales móviles, en 2007
se crea el consorcio Handset Alliace formado por Google, Intel, Texas Instruments, Motorola, T-
Mobile, Samsung, Ericsson, Toshiba, Vadafone, NTT DoCoMo, Sprint Nextel entre otros, quienes
tenían como objetivo principal era desarrollar estándares abiertos para móviles, así como diseñar
y difundir la plataforma Android. En noviembre de ese mismo año es lanzada la primera versión de
Android SDK y el siguiente año el primer móvil con Android el T-Mobile G1.
Durante el 2010 Android es consolidado como uno de los sistemas operativos más usados
en el mundo, con porcentajes cercanos al sistema operativo de de Apple IOS para iPhone. Un año
más tarde es lanzada la versión 3.x para tabletas y 4.x para móviles haciendo de este el sistema
operativo más importante, alcanzando una cuota superior en el mercado del 50%.
Android es una plataforma de desarrollo libre basada en Linux y de código abierto y
montada sobre la plataforma de Java lo que asegura que pueda ser ejecutada en una gran
variedad de dispositivos gracias a su concepto de máquina virtual. Otra característica importante
es que el diseño de la interfaz de usuario se hace en XML, permitiendo la portabilidad del
dispositivo, ya sea de pantalla reducida o en una tableta. Además contiene una gran cantidad de
servicios como localización basada tanto en GPS como en redes, bases de datos con SQL,
reconocimiento de voz, navegador entre otras. En cuanto en los programas estos se encuentran
aislados gracias a su programación orientada a objetos, permitiendo la herencia; adicionalmente
cada aplicación dispone de permisos que limitan su rengo de actuación.
Otra característica importante es el uso de una Máquina Virtual Dalvik, es una máquina
virtual de Java implementada por Google la cual esta optimizada para el uso de dispositivos
móviles. Finalmente, Android tiene una alta calidad de gráficos gracias a los gráficos vectoriales
suavizados, animaciones inspiradas en flash y gráficos en 3D basados en OpenGL y en cuanto al
audio y video incorpora los codecs estándar más comunes como son H.264 (AVC), MP3, AAC,
3GPP, entre otros.
2.2.1 Versiones de Android y niveles de API
A continuación se describen las versiones de Android que han sido lanzadas, cada versión
consecuente es compatible con las anteriores, es decir, que solo se añaden nuevas funcionalidades
y en el caso de modificar alguna funcionalidad, no se elimina, solo es marcada como obsoleta pero
puede seguir utilizándose. Las plataformas pueden ser identificadas de tres maneras: versión,
Nivel de API o nombre. El nivel de la API corresponde a un número entero comenzando desde el 1.
Para los nombres se han elegido postres en orden alfabético, a partir de la C con Cupcake, las dos
primeras versiones correspondientes a las letras A y B no recibieron nombre.
Sistema de cifrado de voz para equipos de telefonía móvil
20
Android 1.0 API 1. Primera versión de Android, no utilizada comercialmente.
Android 1.1 API 2. Con las mismas funcionalidades, solo se corrigen algunos errores de la
versión anterior, pocos usuarios en uso.
Android 1.5 API 3 Cupcake. Incorpora la posibilidad de teclado en pantalla con predicción
de texto, los dispositivos ya no tienen que tener un teclado físico, así como la grabación de audio y
video avanzado. Incorpora también el soporte para Bluetoothestéreo y aparecen los widgets de
escritorio.
Android 1.6 API 4 Donut. Aparece un nuevo atributo XML, onClick. Permite búsquedas
avanzadas, incorpora multi-touch, gesture y la síntesis de texto a voz. Aparece Play Store antes
Android Mark. Mejora aplicaciones de cámara y soporte para resoluciones de pantalla WVGA.
Android 2.0 API 5 Eclair. Mejora la gestión de contactos y ofrece más ajustes en la cámara.
Se optimiza la velocidad de hardware. Nueva interfaz del navegador y soporte para HTML5.
Android 2.1 API 7 Eclair. Considerada una actualización menor, por lo que siguieron
llamándola Eclair. Se destaca el reconocimiento de voz como entrada en un campo de texto.
Permite desarrollar fondos de pantalla animados. EL paquete Webkit incluye nuevos métodos para
manipular bases de datos almacenadas en web.
Android 2.2 API 8 Froyo. Mejora la velocidad de ejecución de las aplicaciones gracias al
nuevo compilador JIT de la máquina Delvik. Mejoras en el navegador web incorporando el motor
JavaScript V8 utilizando Chrome. Para el desarrollo de las aplicaciones se puede mencionar el
almacenamiento de la aplicación sea interno o externo (como una tarjeta SD). Actualización
automática de las aplicaciones, y proporciona nuevos motores de reconocimiento.
Android 2.3 API 9 Gingerbread. Soporte de pantallas con resolución WXGA. Incluye
soporte nativo para varias cámaras. La máquina virtual Dalvik introduce un nuevo recolector de
basura que minimiza las pausas de la aplicación mejorando animaciones y respuesta en los
videojuegos. Se dispone de mayor apoyo para el desarrollo de código nativo (NDK). Se destaca el
soporte nativo para telefonía sobre Internet VoIP/SIP. Soporte para reproducción de video
WebM/VP8 y codificación de audio AAC.
Android 3.0 API 11 Honeycomb. Se implementa una nueva interfaz de usuario
completamente rediseñada con prototipos nuevos para la interacción, navegación y
personalización. En cuanto a las novedades del SDK (Software Development Kit) están la
reproducción de animaciones 2D/3D gracias al renderizado OpenGL acelerado por hardware.
Primera versión que soporta procesadores multinúcleo. Soporte para la transferencia de archivos
multimedia a través de USB con protocolos MTP y PTP.
Android 3.1 API 12 Honeycomb. Actualización para el manejo de dispositivo USB como
dispositivo o host, se implementa el protocolo PTP/MTP (Picture Transfer Protocol/Media Transfer
Protocol) en tiempo real.
Sistema de cifrado de voz para equipos de telefonía móvil
21
Android 3.2 API 13 Honeycomb. Aplicación de zoom para aplicaciones de tamaño fijo y
sincronización multimedia desde la memoria SD.
Android 4.0 API 14 Ice Cream Sandwich. Nueva interfaz para el usuario donde se pretende
eliminar los botones físicos, se incorpora el reconocimiento facial, mejora en el reconocimiento de
voz. En cuanto a las comunicaciones se agrega un gestor de tráfico de datos por Internet, donde es
posible apreciar el consumo en un gráfico y establecer límite de consumo. En cuanto a las
imágenes, se agrega una manipulación con herramientas de distorsión además que es posible
interactuar con la imagen al momento de ser capturada. Mejora en las comunicaciones NFC e
integración de redes sociales.
Android 4.0.2 API 15 Ice Cream Sandwich. Mejoras en aplicaciones como redes sociales,
calendario, revisor ortográfico, texto a voz y bases de datos entre otros.
Android 4.1 API 16 Jelly Bean. Nuevamente la interfaz de usuario que es actualizada para
corregir puntos importantes como sincronismo vertical, triple búfer y aumento de la velocidad del
procesador al tocar la pantalla. Búsqueda por voz regresa resultados en forma de ficha, dictador
de voz permite búsquedas son conexión a Internet (solo idioma inglés), aplicación Google Now
utiliza información del usuario como posición, agenda y hora en las búsquedas. En cuanto a la
seguridad las aplicaciones son cifradas. Nuevo soporte de idiomas con teclados instalables.
Android 4.2 API 17 Jelly Bean. Actualización con la posibilidad de crear varias cuentas de
usuario sobre el mismo dispositivo con configuraciones propias (solo para tabletas). Se
implementa teclado predictivo Swype. Conexión con Televisiones mediante WiFi con
Miracast.Cámara con la funcionalidad Photo Sphere para fotografías panorámicas inmersivas.
Android 4.3 API 18 Jelly Bean. Control de privilegios de usuarios, es posible que el
programador agregue esta característica en su aplicación de desarrollo. Soporte de Bluetooth Low
Energy (BLE) permitiendo que los dispositivos Android puedan comunicarse con bajo consumo de
energía. Nuevas características de codificación, transmisión y multiplexación de datos multimedia.
También se da soporte para OpenGL ES 3.0. Mejora en la seguridad de gestión y ocultación de
claves privadas y credenciales.
Android 4.4 API 19 Kit Kat. Los componentes de Android son reducidos en tamaño de
memoria para tener un mayor número de dispositivos con esta versión implementando también
una API que tenga un funcionamiento de las aplicaciones con dispositivos de baja memoria.
Conectividad NFC, Bluetooth y mandos infrarrojos mejorados. Los sensores también tiene una
mejora para disminuir su consumo de energía y se agrega el sensor de contador de pasos.
Se agrega un nuevo marco de almacenamiento que permite el acceso de las aplicaciones a
la nube. Este marco agrega document provider con nuevas intenciones para crear y abrir
documentos además de una ventana de dialogo para seleccionar ficheros. En la parte técnica se
introduce la máquina virtual ART que tiene tiempos de ejecución superiores a la máquina virtual
Sistema de cifrado de voz para equipos de telefonía móvil
22
Dalvik, pero solo es utilizada a modo de prueba activada opcionalmente por el programador; la
máquina virtual Dalvik se continua utilizándose por defecto.
Android 5.0 API 20 Lollipop. Extensión hacia plataformas Google Wear, Google TV y Google
Card. Se agregan cambios en la arquitectura para la máquina virtual ART que mejora la ejecución
de código escrito en Java. Hay soporte en dispositivos de 64 bits sobre procesadores ARM 64 y
MIPS.
Se puede utilizar el modo ahorrativo de energía por defecto, desconectando componentes
en caso de batería baja. Incorporación de AndroidJobScheduler haciendo que tareas específicas se
ejecuten en determinadas condiciones.
Soporte nativo para gráficos para OpenGL ES 3.1 con funcionalidades gráficas avanzadas
(fragment shader, tessellation, geometry shaders, ASTC). La interfaz de usuario tiene un cambio de
aspecto sobre los botones de navegación y el menú. Nueva forma de controlar las notificaciones
parecidas a las de Google Now permitiendo leerse en modo de bloqueo de pantalla.
El nuevo enfoque se centra en Material Design (http://www.google.com/design/material-
design.pdf). Consiste en una guía completa para el diseño visual, el movimiento y las interacciones
a través de plataformas y dispositivos. Google pretende aplicar esta iniciativa a todas las
plataformas, incluyendo wearables y Google TV. La nueva versión también incluye varias mejoras
para controlar las notificaciones. Ahora son más parecidas a las tarjetas de Google Now y pueden
verse en la pantalla de bloqueo. Se agregan los sensores de pulso cardiaco, inclinación e
interacción compuestos para detectar ciertos gestos.
2.2.2 Arquitectura de Android En la figura 8 se muestra las cuatro capas por las cuales está formada la arquitectura de
Android. Es importante mencionar que las capas están basadas en software libre.
Núcleo de Linux. La primera capa de la arquitectura y está formado por el sistema
operativo Linux versión 2.6, la cual tiene la tarea de proporcionar los servicios de seguridad,
manejo de memoria, el multiproceso, la pila de protocolos y por último el soporte de los drivers
para los dispositivos.
Runtime Android. Capa para la implementación de la maquina virtual Dalvik para la
optimización de recursos. Además de la maquina virtual se incluye el núcleo de las bibliotecas
disponibles del lenguaje Java.
Bibliotecas nativas. En esta capa se incluyen un conjunto de bibliotecas en C/C++ que son
usadas por varios componentes de Android y que están compiladas en el código nativo del
procesador.
Sistema de cifrado de voz para equipos de telefonía móvil
23
Entorno de aplicación. Esta capa proporciona un entorno de desarrollo libre para
aplicaciones con los sensores, servicios, localización, entre otros. También tiene la fortaleza de
reutilización de compontes.
Aplicaciones. Esta capa se compone de un conjunto de aplicaciones instaladas en la
maquina virtual de Android que son ejecutadas para garantizar la seguridad del sistema por la
maquina virtual Dalvik.
Figura 2.8. Arquitectura de Android[10]
Sistema de cifrado de voz para equipos de telefonía móvil
24
2.3Seguridad
2.3.1 Historia de la Criptografía
En cuanto a la historia de la criptografía podemos remontarnos cuatro mil años atrás hasta
la época de los egipcios con el uso de los jeroglíficos con técnicas de sustitución y transposición de
símbolos entre sí intercambiando uno por el otro. Durante esa época la cultura China manejaba un
pequeño código de cuarenta símbolos de uso militar para evitar el robo de información.
En Grecia Julio Cesar implemento uno de los primeros métodos de cifrado conocido como
el cifrado de Cesar, éste era utilizado también para fines militares, pudiendo dar órdenes a sus
generales de una forma protegida. El método consistía en escribir el mensaje con un alfabeto pero
desplazaba tres posiciones a la derecha, es decir utilizaba un método de transposición:
�(�) = � + 3 ( !" 26)
donde x corresponde a la posición de la letra del alfabeto.
Más adelante los reyes Europeos durante los siglos XV y XVI utilizaron algunos métodos
para proteger sus mensajes, uno de los casos conocidos es el del rey Enrique IV de Francia que en
el año de 1589, intercepto un mensaje cifrado de Felipe de España a uno de sus oficiales y con la
ayuda de un matemático de la corte, pudo descifrarlo.
En el siglo XX antes de la llegada de las computadoras y durante la Segunda Guerra
Mundial el ejército Alemán desarrolló maquinas mecánicas y electromecánicas para el cifrado de
mensajes, una variante de estas máquinas fue la famosa máquina Enigma la cual utilizaba rotores
que automatizaban considerablemente los cálculos que era necesario realizar para las operaciones
de cifrado y descifrado de mensajes.
En cuanto a la criptografía de mediados del siglo XX, el uso de la computadora y avances
matemáticos, son implementados juntos con algunas técnicas de sustitución y transposición que
se aplican hoy en día, aunque con otras técnicas y metodologías. El uso de cifrados por sustitución
y transposición actualmente con las computadoras se puede ver como un recorte del alfabeto que
de veintiséis símbolos del nuestro, es reducido a solo dos 0 y 1. Muchos sistemas criptográficos
actuales combinan aún estas técnicas, pero no es recomendable su uso primitivo para proteger
información importante, ya que un analista experimentado podrá solucionar el cifrado en pocos
minutos.
La criptografía moderna hace alusión a Claude Shannon, considerado como el padre de la
criptografía matemática ya que con sus publicaciones respecto a la teoría matemática de la
comunicación y la teoría de los sistemas secretos establecieron las bases para la implementación
de los algoritmos criptográficos existentes. Gracias a esto y la llegada de las computadoras se
desarrolló el primer algoritmo criptográfico simétrico llamado DES (Data Encryption Standard),
que en la actualidad se considera inseguro por su corta longitud de la clave, lo expone a ataques
Sistema de cifrado de voz para equipos de telefonía móvil
25
de fuerza bruta; así que fue reemplazado por su versión mejorada TripleDES que más adelante
este también sería reemplazado por AES (Advanced Encryption Standard).
Otro punto importante en la criptografía moderna fue la implementación de un método
para distribuir las llaves o claves criptográficas, que más adelante género lo que hoy conocemos
como cifrado asimétrico o de llave pública, el cual permite actualmente realizar compras seguras a
través de Internet.
Hablando de otras técnicas de criptografía moderna está el uso de la firma digital, basado
principalmente en técnicas de cifrado asimétrico que permiten verificar la integridad y/o autoridad
de una información o documento particular, valiéndose del uso de cifrados simétrico, asimétrico y
de las funciones de una vía y/o hashing. Es importante mencionar que para los usos de las técnicas
modernas de cifrado existen protocolos que rigen las normas de los algoritmos implementados
que le corresponden a cada parte para el uso en cuestión.
Para finalizar mencionaremos los usos de los sistemas criptográficos modernos[11]:
Confidencialidad. Es uno de los usos principales de la criptografía. Implica el mantener en
secreto la información importante enviada a través de un canal inseguro. Su objetivo es que solo
las personas autorizadas tengan acceso a la información.
Autenticación. Puede entenderse a la autenticación como un uso relacionado con la
identificación donde su objetivo principal de basa en corroborar la identidad ya sea de una
persona, una computadora, un empresa, etc. Otro tipo de autenticación es aplicado en mensajes
llamados data origin authentication (autenticación de origen de datos), donde lo que se verifica es
la fuente de la información. Un uso englobado serían las firmas digitales de documentos.
Verificación de Integridad. Este punto es referido al uso de técnicas criptográficas para el
aseguramiento de una información en particular, es decir quela información no haya sido alterada
por personal no autorizado o cualquier otro medio desconocido.
Autorización. Permisos concreto, a una parte para el acceso o realización de una tarea
específica o para actuar bajo una identidad determinada.
Validación. Medio de proveer una autorización puntual para el uso o la manipulación de
información y de recursos.
Control de acceso. Otorgar privilegios suficientes para la restricción del acceso a la
información o a los recursos para las partes.
Certificación. Respaldo de información por una parte o entidad de confianza.
El recibo. Acuse de recepción de una información determinada.
Conformación. Acuse de recepción respecto a servicios que han sido presentados.
Sistema de cifrado de voz para equipos de telefonía móvil
26
De propiedad. Medio que provee a una entidad el derecho legal para el uso o
transferencia de una información o recursos a terceros.
Anonimato. Ocultamiento de la identidad de una parte o entidad involucrada en un
proceso.
Retracción o revocación. Medio para quitar o revocar una certificación o una autorización.
2.3.2 Protocolos y algoritmos de cifrado
Antes de comenzar es importante que al hablar de un protocolo nos referimos a una serie
de pasos que involucra a dos o más partes para llegar a un objetivo, donde los pasos deben tener
una secuencia ordenada desde su principio hasta el fin, es decir, que cada paso debe ejecutarse en
su momento o turno preciso. La referencia hacia dos o más partes se trata de la condición que
involucra las reglas, procedimientos, normas o conductas de una parte en un medio particular
pero teniendo una relación con una u otras partes. Finalmente el objetivo hace referencia a
obtener un resultado o beneficio a cambio de la implementación del protocolo.
Es importante mencionar que un protocolo debe conocerse por ambas partes, no debe ser
ambiguo, es decir, debe estar bien definido y por ultimo ambas partes tienen que estar de acuerdo
en su utilización.
Así un protocolo criptográfico es aquel que involucra uno o varios algoritmos
criptográficos pero en él las dos partes pueden o no tener confianza ya que éstas querrán
compartir un secreto, verificar sus identidades o hasta firmar digitalmente un contrato, esto
quiere decir que el objetivo de un protocolo criptográfico lleva más allá de tener la información en
secreto. Así se puede definir el objetivo de un protocolo criptográfico como prevenir, detectar el
acceso indebido o la alteración de un documento que resguarde cierta información de valor
considerable, por el motivo de sea.
2.3.3 Protocolo de criptografía simétrica
Un protocolo de criptografía simétrica, es de los más antiguos en su utilización, además de
su gran uso en la actualidad. Este tipo de protocolos son utilizados ampliamente para proteger
documentos o gran cantidad de información por su velocidad de cifrado.
El protocolo de criptografía simétrica implica tener dos partes donde se menciona que la
parte "A" Alice envía un mensaje a la parte "B" Bob acordando un algoritmo de cifrado y una llave,
estos dos parámetros son conocidos por ambas parte. Alice cifra el mensaje de texto claro
utilizando el algoritmo de cifrado y la llave obteniendo así un mensaje protegido, posteriormente
es enviado a Bob por un canal inseguro donde Bob descifrara el mensaje utilizando el algoritmo y
la llave acordad con Alice, así el podrá obtener nuevamente el mensaje original o el texto claro,
proporcionado por Alice.
Sistema de cifrado de voz para equipos de telefonía móvil
27
Los protocolos de cifrado simétrico deben considerar el aspecto más importante para que
se resguarde la información deseada. La llave que se comparte entre ambas partes debe ser
privada y estar resguardada ya que independientemente del algoritmo elegido, basta con que una
tercera parte conozca la llave y el texto cifrado para poder encontrar el mensaje oculto. Por lo
contrario el algoritmo elegido puede ser público y la tercera parte puede conocerlo.
Retomando nuevamente la importancia de las llaves, éstas deben acordarse en secreto y
estar bajo resguardo ya que además de poder encontrar el mensaje cifrado, la tercera parte al
conocer la llave podrá cifrar nuevos mensaje con la llave conocida haciendo suplantación de
identidad.
Una desventaja sobre los protocolos simétricos se presenta en el manejo de grupos, ya
que si el número de usuarios con los que se desea compartir la información incrementa, las llaves
también lo harán, es decir teniendo un grupo de trabajo de 4 personas, se manejan 3 llaves
propias más otras 3 de uso compartido con cada una de las personas. La fórmula para calcular el
número de llaves que se necesitan en un grupo es:
�(� − 1)
2
donde n es la cantidad de personas contenidas en el grupo.
2.3.4 DES
DES(Data Encryption Standard), es un estándar de cifrado de datos que implementa un
algoritmo desarrollado originalmente por IBM a requerimiento del NBS(National Bureau of
Standards, denominado actualmente como el NIST National Institute of Standards and Technology,
de los EE.UU.), posteriormente modificado y adoptado por el gobierno de EE.UU. en 1977 como
estándar de cifrado de aquella información sensible no clasificadas. Más adelante, en 1980, el NIST
estandarizó los diferentes modos de operación del algoritmo.
DES es el algoritmo de clave simétrica más estudiado y utilizado. El nombre original del
algoritmo, denominado por IBM, era Lucifer. Se implementaba sobre bloques de 128 bits, con una
clave de igual longitud. Se fundamentaba en operaciones lógicas booleanas y era implementado
fácilmente, tanto para software como para hardware.
Después de las modificaciones realizadas por el NBS, que consisto básicamente en la
reducción de la longitud de clave y de los bloques, así DES cifra bloques de 64 bits, mediante
permutación y sustitución, usando una clave de 64 bits, de los que 8 son de paridad (esto es, en
realidad usa 56bits), produciendo así 64 bits cifrados.
Básicamente la tarea del estándar DES es ocultar la información sensible por medio de
permutaciones y sustituciones, es decir, la información es separada en bloques de 64 bits, donde
la información contenida en el bloque es manipulada de tal manera que ésta quede
incomprensible para una persona ajena.
Sistema de cifrado de voz para equipos de telefonía móvil
28
La aplicación del estándar DES puede encontrarse en la norma FIPS 46-3 [12]. El estándar
DES consiste en 19 etapas para cifrar información. En la primera etapa es aplicada una
permutación inicial IP sobre el bloque de 64 bits y en la última etapa se aplica la permutación
inversa IP-1. Las 16 etapas restantes son una Red de Feistel de 16 rondas. Para cada una de las 16
rondas se emplea un valor Ki obtenida a partir de la cave de 64 bits.
El proceso para la obtención de las 16 subclaves consiste en los siguientes pasos: se le
aplica una permutación inicial (PC-1) a la clave y se obtiene una salida resultante de 56 bits,
después la clave obtenida se divide en dos mitades de 28 bits, donde posteriormente cada una de
las cuales se rota a izquierda un número de bits determinado es diferente para cada una de las
subclaves. Ki se deriva de la elección permutada (PC-2) de 48 de los 56 bits de estas dos mitades
rotadas.
La función f de la red de Feistel, es aplicada junto a la subclave ki y la parte derecha del
bloque; esta función se compone de una permutación de expansión (E), que convierte el bloque
correspondiente de 32 bits en uno de48. Posteriormente se aplica una operación or-exclusiva con
el valor de una subclave Ki, también de 48 bits, a continuación se aplican ocho Cajas de 6*4 bits, y
finalmente se efectúa una nueva permutación de compresión (P), regresando nuevamente 32 bits
de salida. A la salida de la función f ahora es aplicada la operación or-exclusiva junto con la parte
izquierda del bloque obteniendo como resultado una salida nueva que pasa a formar la nueva
parte derecha. La parte derecha antes de aplicarse la función f es tomada como la parte izquierda
para la siguiente ronda. El siguiente diagrama muestra el proceso de cifrado DES.
Figura 2.9. Diagrama de cifrado DES
Sistema de cifrado de voz para equipos de telefonía móvil
29
2.3.4.1 Cifrado DES
La siguiente lista muestra los pasos completos para la aplicación de DES:
1. Crear las Claves.
1.1. Se ingresa la clave de 64 bits.
1.2. Aplicación de la Permutación PC-1 que reduce a 56 bits la clave.
Tabla 2.2. Permutación inicial 1 (PC-1)
El bit 57 pasa a ocupar la posición 1, el bit 49 ocupa ahora la posición 2, así hasta recorrer
los 64 bits de la clave.
1.3. Separar en dos mitades de 28 bits la permutación obtenida, nombrarlas con C(0) y D(0)
respectivamente.
1.4. Calculo de las 16 subclaves.
1.4.1. Partiendo de i = 1 para C(i-1) y D(i-1) rotar a la izquierda siguiendo la tabla 2.3 para
obtener C(i) y D(i).
Tabla 2.3. Corrimientos Llaves DES
Número Inicial
Rotaciones a la izquierda
1 1
2 1
3 2
4 2
5 2
6 2
7 2
8 2
9 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1
Sistema de cifrado de voz para equipos de telefonía móvil
30
1.4.2. Concatenar C(i) con D(i) y realizar la permutación PC-2 donde se obtiene la clave Ki,
este proceso se repite para a las 16 claves.
Tabla 2.4. Permutación 2 (PC-2)
2. Proceso de cifrado del bloque.
2.1. Aplicación de la permutación inicial (IP) con respecto a la tabla 2.5, al bloque de 64 bits, si
el bloque no contiene los 64 bits, es necesario a completar ya sea con 0 ó 1.
Tabla 2.5. Permutación Inicial (IP)
2.2. Dividir en dos mitades iguales de 32 bits el bloque, siendo Lo parte izquierda y Ro parte
derecha.
2.3. Cifrado de 16 rondas con la función f y las 16 subclaves obtenidas en el paso 1.
2.3.1. Se aplica la Expansión sobre la parte derecha, es decir, �(��)para pasar de 32 a 48
bits con respecto a la tabla 2.6.
Sistema de cifrado de voz para equipos de telefonía móvil
31
Tabla 2.6. Expansión (E)
2.3.2. Posteriormente al resultado obtenido se aplica la operación or-exclusiva con la
subclave correspondiente �(��−1)⨁�� .
2.3.3. El siguiente paso es crear ocho bloques de 6 bits cada uno nombrados con B(1),
B(2),..., B(8).
2.3.4. Se aplica la función S sobre los nuevos bloques creados de la siguiente manera
�(!�).
2.3.4.1. El primero y el último bit de B representan un número base 2 con valor
decimal entre 0 y 3 (en binario 00 al 11). Este número será la fila para la
aplicación de la función S.
2.3.4.2. Los 4 bits restantes de B representan un número base 2 con valor decimal
entre 0 y 15 (en binario de 0000 al 1111). Este número es la columna para la
aplicación de la función S.
2.3.4.3. La aplicación de la función S consiste en buscar un nuevo valor que es
proporcionado por la fila y la columna de los dos puntos anteriores sobre la
tabla 2.7 definida para la función. La salida de la aplicación de la función resulta
una reducción de 6 a 4 bits. Tomemos como ejemplo !1 = 0110112 = 2710
Los valores necesarios para 1 son:
"�#$ = 01 = 110 , %&#'*+$ = 1101 = 1310 y la tabla al aplicar es:
Tabla 2.7. Caja S1
El valor resultante al aplicas 1(!1) = 510 = 01012
2.3.4.4. La tabla 2.8 muestra todas las cajas necesarias para cada uno de los 8
bloques de 6 bits.
Sistema de cifrado de voz para equipos de telefonía móvil
32
Tabla 2.8. Cajas para obtención de subclaves
2.4. El resultada de cada bloque aplicado a S es concatenado para obtener un nuevo bloque
de 32 bits, es decir, �1( 1)�2( 2)�3( 3)…�8( 8) y se aplica la permutación P respecto a
la tabla 2.9.
Tabla 2.9. Permutación P
2.5. A la salida de la permutación es aplicada la operación or-exclusiva y la parte izquierda del
bloque !"−1.
2.6. EL resultado de la operación anterior es la nueva parte derecha del bloque y la nueva
parte izquierda será la parte derecha sin la aplicación de la función f, es decir, !" = $"−1 ,
$" = !"−1⨁&($"−1'").
Sistema de cifrado de voz para equipos de telefonía móvil
33
2.7. El punto 2 de la lista es aplicado en 16 rondas.
3. Una vez realizadas las 16 rondas y para finalizar el cifrado, se aplica la permutación inversa
definida en la tabla 2.10.
Tabla 2.10. Permutación inversa (IP**-1)
2.3.4.2 Descifrado DES
Para descifrar nuevamente el mensaje se aplican los pasos anteriores pero comenzando
con la subclave 16 a la subclave 1, de �16 �1.
Aunque una clave de 56 bits ofrece una enorme cantidad de posibilidades, muchos
procesadores pueden calcular más de 106claves por segundo. Por lo cual, cuando se utilizan al
mismo tiempo una gran cantidad computadoras, es posible que un gran organismo (un Estado, por
ejemplo) encuentre la clave correcta. En otras palabras, hasta la década de los 90, DES era un
estándar seguro, pero con la evolución de las computadoras, es posible probar una gran cantidad
de claves por segundo, a esto se le conoce como un ataque de fuerza bruta, en el cual se prueban
todas las combinaciones posibles de llaves (para DES 256) hasta descifrar el mensaje. Es por esto
que DES es propenso a recibir ataques de fuerza bruta. La solución propuesta para la situación
anterior fue la aplicación de Triple-DES.
2.3.5Triple-DES Triple-DES es la solución propuesta para eliminar la vulnerabilidad con respecto a los
ataques de fuerza bruta aplicados a DES. La propuesta consistió en aplicar tres veces el algoritmo
DES incrementando el tamaño de la llave en 112 bits o 168 bits.
Triple-DES aplica el algoritmo DES en tres ocasiones siendo la primera etapa como cifrado
DES, posteriormente un descifrado DES y finalmente otro cifrado DES, cada etapa con una llave
diferente de 56 bits o bien para las etapas 1 y 3 es posible utilizar la misma llave. Con ello la
cantidad de operaciones por segundo para descifrar un mensaje protegido por Triple-DES se ve
incrementado exponencialmente su cálculo. La figura 10 muestra el diagrama general del cifrado
Triple-DES.
Sistema de cifrado de voz para equipos de telefonía móvil
34
Figura 2.10. Diagrama general de TripleDES
Al igual que el proceso de Descifrado DES, para Triple DES consiste en aplicar el algoritmo
de forma inversa pero comenzando con un descifrado DES y la llave K3, posteriormente un cifrado
DES con la llave K2 y finalmente un descifrado DES con la llave K1.
2.3.6Triple-DES96
El cifrado Triple-DES 96, es una propuesta desarrollada en el Centro de Innovación y
Desarrollo Tecnológico en Cómputo del Instituto Politécnico Nacional por el Dr. V.M. Silva García,
el Dr. R. Flores Carapia y el Dr. C. Rentería Márquez. La variante del Triple-DES, consiste en una
modificación de complejidad alta sobre la permutación aplicada en el algoritmo.
El sistema criptográfico Triple-DES 96 es una variante del sistema criptográfico Triple-DES
definido en el estándar internacional FIPS 146-3 [13]con un bloque de entrada de 64 bits. Sin
embargo Triple-DES 96 puede expandirse a 96 bits sin perder la complejidad computacional que
un algoritmo de cifrado debe tener. Una de las principales características de Triple-DES 96 es que
es eliminada la permutación inicial PI y la permutación inversa PI-1 de cada ciclo DES y el tamaño
del bloque de entrada es mayor, proporcionando así una importante reducción en los tiempos de
cifrado.
La Figura 11 muestra el diagrama a bloques del proceso del algoritmo de cifrado para una
ronda inicial tipo Triple-DES 96.
Con base en esto, Triple-DES 96 utiliza una permutación variable en la tercera ronda de
cifrado del primer ciclo y la treceava ronda del tercer ciclo, siendo esta permutación creada por
medio del algoritmo JV y el teorema factorial[14][15]. Esta permutación es generada con los
decimales contenidos en el número irracional Pi (�) y a su vez se multiplica por un número entero
� que incrementar la complejidad del algoritmo de cifrado. Así mismo, esta permutación se realiza
después de las primeras dos rondas ya que tanto la parte izquierda !como la parte derecha "! del
Sistema de cifrado de voz para equipos de telefonía móvil
35
bloque son sometidas a una operación or-exclusiva(XOR) que es necesaria como en el algoritmo
de la familia "Substitution-Permutation-Network" (SPN) [16], para proteger la permutación del
bloque de 96 bits, es decir, que la permutación protege ambos lados del texto siendo ésta no solo
una permutación simple como la que se realiza en Triple-DES.
Figura 2.11. Diagrama primera ronda Triple-DES 96
El algoritmo Triple-DES 96 se desarrolla en tres ciclos al igual que su predecesor, en el
primer y el tercer ciclo es aplicado un proceso de cifrado con una llave �1 y �3 respectivamente
con �1 ≠ �3 o �1 para ambos y el segundo ciclo tiene un proceso de descifrado con una llave �2.
Cada uno de los ciclos es sometido a 16 rondas, donde cada ronda está conformada por un
proceso de cifrado !96�(") donde " es el texto plano de 96 bits y � la llave de su ciclo
correspondiente, el proceso de cifrado !96�(") comienza con la separación de la cadena de 96
bits en dos de 48 bits conocidas como # −1y % −1, posteriormente a la parte % −1 es aplicado una
función &96(% −1 , � ) de la ronda que sigue los siguientes pasos:
1. Se aplica a la cadena % −1 la operación XOR con la llave � , la llave � es obtenida del
mismo proceso del algoritmo Triple-DES, es decir, % −1⊕� La salida de esta operación
será una cadena de 48 bits.
2. Posteriormente la nueva cadena es sometida a un proceso de sustitución aplicada como
en el estándar DES, quien proporciona como salida una nueva cadena de 32 bits nombrada
como salida C.
3. A la salida de las cajas C, es necesario aplicar una permutación E utilizando el estándar
DES, así la cadena de salida para &96(% −1 , � ) = !(*), será de 48 bits y se podrá aplicar
XOR con la parte izquierda # −1.
Este proceso es sometido para las 16 rondas de cada uno de los ciclos del estándar Triple-
DES 96, recordando la implementación de la permutación en las rondas 3 y 13 de de los ciclos 1 y 3
respectivamente antes del proceso de cifrado.
Sistema de cifrado de voz para equipos de telefonía móvil
36
2.4 Microcontroladores
Gracias a al desarrollo de la tecnología sobre la fabricación de circuitos integrados en la
implementación de miles de transistores en un chip, los microprocesadores junto con los
periféricos correspondientes externos, tales como memoria, dispositivos de entrada/salida,
temporizadores entre otros, han permitido crear un dispositivo tal que contenga esos periféricos
integrados en un solo encapsulado denominado microcomputadora que posteriormente tomaría
el nombre de microcontrolador.
Un microcontrolador está diseñado de tal manera que tiene integrados todos los
componentes necesarios para trabajar como una computadora, tales como, memoria,
temporizadores, convertidores u otros. Su éxito se debe, que a lo largo del tiempo ha podido
controlar dispositivos de una manera eficaz y sencilla que anteriormente requerían de un diseño
de electrónica complicado además del uso de muchos componentes.
La empresa Microchip ofrece soluciones para todo el rango de funcionamiento de
microcontroladores de 8, 16 y 32 bits, con una poderosa arquitectura, ofrece completas
herramientas y las tecnologías de memoria flexibles fáciles de utilizar, además de documentación
técnica completa.
Entre sus microcontroladores se encuentra diferentes familias que ofrecen distintas
soluciones, una de ellas son los PIC18F que cuenta con 16MIPS (Millones de Instrucciones por
Segundo), una arquitectura optimizada para programación en C y cuenta con periféricos
avanzados como son CAN (Control Area Network), USB (Universal Serial Bus), LCD y Ethernet, hasta
2 MB de memoria de programa direccionable, una pila de hardware de 32 niveles y el mayor
rendimiento de la arquitectura de 8 bits.
Para el desarrollo de este trabajo se utilizó un microcontrolador PIC18F2455 con periférico
USB para la comunicación con nuestro dispositivo Android. El PIC18F2455 trabaja con baja
potencia sobre los nanoWatt además de aplicaciones de conectividad con la disponibilidad de tres
puertos serie: FS-USB (12 Mbit/s), I²C y SPI (hasta 10 Mbit/s). Cuenta también con una gran
cantidad de memoria RAM para almacenamiento interno y una memoria de programación FLASH
mejorada, ideal para monitoreo de aplicaciones o controles integrados que requieren una
conexión periódica con una computadora a través de USB y puede operar hasta con 48 MHz.
Sus características principales son:
· Velocidad de interfaz USB 2.0 (12 Mbit/s).
· Puerto dual de 1K byte RAM + 1K byte GP RAM
· Transceptor Full Speed
· 16 Endpoints (IN / OUT)
· Resistencia interna Pull Up (D + / D-)
· Rendimiento de 48 MHz (12 MIPS)
· Compatibilidad pin a pin con PIC16C7X5
Sistema de cifrado de voz para equipos de telefonía móvil
37
Y parámetros principales son:
Tabla 2.11. Parámetros Microcontrolador PIC18F2455[17]
Nombre del parámetro Valor
Tipo de memoria programable Flash
Memoria Programable (KB) 24
Velocidad CPU (MIPS) 12
Bytes RAM 2,048
Datos EEPROM (bytes) 256
Periféricos de comunicación digital
1-UART, 1-A/E/USART, 1-SPI, 1-I2C1-MSSP(SPI/I2C)
Periféricos de Captura/Comparador/PWM
2 CCP
Timers 1 x 8-bit, 3 x 16-bit
ADC 10 ch, 10-bit
Comparadores 2
USB (ch, speed, compliance) 1, FS Device, USB 2.0
Rango de Temperatura (°C) -40 a 85
Rango de voltaje de operación (V)
2 a 5.5
No. de Pines 28
Sistema de cifrado de voz para equipos de telefonía móvil
38
Capitulo 3. Desarrollo
3.1 Configuración y desarrollo en Android
El primer paso para comenzar con el desarrollo de este trabajo, fue la selección de la API
correspondiente, esta selección consistió en verificar los siguientes puntos:
· Verificación de dispositivos con Android. Para ello se revisaron datos proporcionados a
través de la web donde la siguiente tabla muestran información del año 2014 [18] sobre el
uso de teléfonos inteligentes según el proveedor:
Tabla 3.1. Proveedores de teléfonos celulares
Cuota de Mercado de proveedor mundial
de teléfonos inteligentes %
2014 2013
Samsung 20.01% 28.83%
Apple 19.85% 17.43%
Lenovo 6.59% 4.75%
Huawei 6.25% 5.66%
Xiaomi 4.42% 2.03%
Otros 42.9% 41.31%
Total 100.0% 100.0%
La tabla 3.1 muestra que Apple a retomado fuerza y ganado mercado, pero el conjunto de
teléfonos inteligentes con Android se sigue manteniendo por arriba del porcentaje, de la siguiente
tabla muestra el porcentaje alcanzado por sistema operativo[19].
Tabla 3.2. Top 5 Sistemas Operativos en Smartphones
Sistema Operativo Porcentaje Mercado
Android 79.0 %
iOS 14.2 %
Windows Phone 3.3 %
BlackBerry 2.7 %
Otros 0.9 %
Sistema de cifrado de voz para equipos de telefonía móvil
39
Finalmente, el último punto para la selección de la API fue verificar el porcentaje sobre el
número relativo de los dispositivos que ejecutan una versión determinada de la plataforma
Android [20].
Tabla 3.3. Plataformas Android
Versión Nombre API Distribución
2.2 Froyo 8 0.2 %
2.3.3 - 2.3.7
Gingerbread 10 3.8 %
4.0.3 - 4.0.4
Ice Cream Sandwich 15 3.3 %
4.1.x Jelly Bean 16 11.0 %
4.2.x 17 13.9 %
4.3 18 4.1 %
4.4 KitKat 19 37.8 %
5.0 Lollipop 21 15.5 %
5.1 22 10.1 %
6.0 Marshmallow 23 0.3 %
Con la información recopilada, se tomó la decisión de elegir la API 15, ya que con ella se abarcan el 96 % de los dispositivos con versiones soportables a partir de esta API.
Figura 3.1. Datos recogidos durante un período de 7 días terminado el 2 de noviembre de 2015 [20].
Sistema de cifrado de voz para equipos de telefonía móvil
40
Ya que la clase MediaRecorder es aplicada desde la API de nivel 1,la API 15 que hace
referencia a la versión de Android 4.0 IceCream Sandwich, donde esta versión permite crear,
reproducir y eliminar grabaciones de audio. También junto con los paquetes de Java es posible
manipular los archivos correspondientes a las grabaciones creadas.
3.2 Media Recorder
Android incluye una clase multimedia para la captura y codificación de varios formatos de
audio, que son integrados a una aplicación. La clase con esas características es MediaRecorder, la
cual está disponible desde la versión API nivel 1 pero es importante considerar las especificaciones
del dispositivo ya que no todos los dispositivos Android pueden hacer uso de ella.
La Figura 13 muestra el diagrama de estados general de la clase MediaRecorder.
Figura 3.2. Diagrama General de la clase MediaRecorder[21]
Se debe considerar el diagrama anterior ya que para obtener grabaciones de audio es
necesario realizar los siguiente pasos propuestos por el sitio web de desarrollo Android.
1. Crear una instancia de la clase MediaRecorder. El constructor no requiere parámetros iníciales.
2. Establecer:
· La fuente de audio con el método MediaRecorder.setAudioSource().
· El formato de salida de audio en MediaRecorder.setOutputFormat().
· El nombre del archivo de salida a utilizar MediaRecorder.setOutputFile().
· El codificador a utilizar a través de MediaRecorder.setAudioEncoder().
3. Hacer uso del método MediaRecorder.Prepare(), el cual establece en la grabación los parámetros seleccionados en el punto anterior para iniciar con la grabación.
Sistema de cifrado de voz para equipos de telefonía móvil
41
4. Iniciar la captura de Audio utilizando MediaRecorder.start().
5. Detener la captura de Audio por medio de MediaRecorder.stop().
6. Finalizar liberando los recursos utilizados con MediaRecorder.release().
A continuación se describen las clases anidadas, métodos y variables principales que son
utilizados para la grabación de un archivo de audio.
· MediaRecorder. Clase pública principal utilizada para grabar audio y video, su
constructor por defecto es MediaRecorder(). Los métodos públicos contenidos en esta
clase son los siguientes:
1. prepare(). Prepara el grabador para iniciar los datos de captura y codificación.
2. release(). Libera los recursos asociados con MediaRecorder.
3. reset(). Restaura MediaRecorder a su estado inicial sin configuración.
4. start(). Inicia la captura y la codificación de datos al archivo especificado con setOutputFile().
5. stop(). Detiene la grabación.
· MediaRecorder.AudioSource. Clase pública anidada que establece la fuente de audio,
es utilizada por el método setAudioSource(int) de la clase MediaRecorder y contiene
las constantes:
1. CAMCORDER. Fuente de audio del micrófono con la misma orientación que la cámara si está disponible.
2. MIC. Fuente de audio del micrófono.
3. REMOTE_SUBMIX. Fuente de audio para una submezcla de los flujos de audio que se presentará de forma remota.
4. VOICE_CALL. Fuente de audio de una llamada de voz de enlace ascendente más enlace descendente.
5. VOICE_COMMUNICATION. Fuente de audio del micrófono en sintonía para las comunicaciones de voz, tales como VoIP.
6. VOICE_DOWNLINK. Fuente de audio de una llamada de voz de enlace descendente receptor (Rx).
7. VOICE_RECOGNITION. Fuente de audio del micrófono en sintonía para el reconocimiento de voz, si está disponible.
8. VOICE_UPLINK. Fuente de audio de una llamada de voz de enlace ascendente emisor (Tx).
· MediaRecorder.OutputFormat. Clase publica anidada que define el formato de salida
de audio, es utilizada por el método setOutputFormat(int) de la clase MediaRecorder y
sus constantes definidas son:
1. Archivo de formato AAC_ADTS
Sistema de cifrado de voz para equipos de telefonía móvil
42
2. Archivo de formato AMR_NB
3. Archivo de formato AMR_WB
4. Archivo de formato RAW_AMR
5. Archivo de formato THREE_GPP
6. Archivo de formato MPEG_4
7. Archivo de formato AAC_ADTS
· MediaRecorder.AudioEncoder. Clase pública anidada que define la codificación de
audio, es utilizada por el método setAudioEncoder(int) de la clase MediaRecorder y los
tipos de constantes que se pueden utilizar son:
1. AAC. Códec de audio de baja complejidad (AAC-LC)
2. AAC_ELD. Códec de audio de bajo retardo AAC.
3. AMR_NB. AMR (Banda estrecha) códec de audio.
4. AMR_WB. AMR (Banda ancha) códec de audio.
5. HE_ACC Códec de audio de alta eficiencia AAC.
Con lo anterior se establece un formato para la aplicación con las siguientes características:
MediaRecordermRecorder =newMediaRecorder()
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC)
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)
3.3Formato de Audio 3gpp
El formato 3gpp es un formato multimedia establecido por Third Generation Partnership
Project (3GPP) está definido en especificación técnica ETSI 3GPP y es un formato de archivo para
audio y video utilizado en IP Multimedia Subsystem (IMS), Multimedia Messaging Service (MMS),
Multimedia Broadcast/Multicast Service (MBMS) y Transparent end-to-end Packet-switched
Streaming Service (PSS).
La figura 14establece la siguiente estructura de datos que es necesario conocer para el
desarrollo de este trabajo, ya que con esto se crean nuevos archivos de audio cifrado
manteniendo un formato de 3gpp.
· ftyp. Contiene la información referente al tipo de formato de reproducción.
· moov. Contiene información de los datos del audio y el video como son track, media,
sample, compressed, reference.
· mdat. Contiene la información correspondiente al contenido de audio y video del
archivo.
Sistema de cifrado de voz para equipos de telefonía móvil
43
Figura 3.3. Estructura de un archivo de audio 3gpp[22]
La creación de un nuevo archivo tipo 3gpp de forma cifrada toma en consideración la
estructura anterior dejando intacta la conformación del tipo de archivo así como el contenido de
los datos, es decir el contenido de ftyp y moov se mantienen sin modificación o cifrado, con la
finalidad de evitar texto claro sobre un mensaje cifrado.
Al generar un cifrado de audio se copia el contenido del archivo original hasta localizar los
bytes que hacen referencia a la información del audio almacenado, de tal forma que se busca la
secuencia de caracteres "mdat" para posteriormente comenzar con el cifrado del audio.
Para lo anterior se realizaron los pasos siguientes.
// Se abre el archivo original para lectura
FileInputStream fileInput = new FileInputStream(dirArchivo);
BufferedInputStream bufferedInput = new BufferedInputStream(fileInput);
// Se abre el archivo donde se hará la copia
FileOutputStream fileOutput = new FileOutputStream (archivoCifrado);
BufferedOutputStream bufferedOutput = new BufferedOutputStream(fileOutput);
Sistema de cifrado de voz para equipos de telefonía móvil
44
Ahora se comienza la lectura del archivo original hasta localizar la secuencia "mdat" como se muestra en el siguiente diagrama.
Figura 3.4. Diagrama de lectura y escritura del archivo de audio [Elaboración propia]
3.4Cifrado Triple-DES 96 Android
El cifrado desarrollado en Android está compuesto por cuatro clases que permiten crear
archivos de audio cifrados a partir de un archivo original existente. Las clases desarrolladas para
este proyecto son CifradoTDES3gpp, CifradoTDES96, DescifradoTDES96 y LlavesTDES96, cada una
de ellas con un propósito distinto pero una interacción mutua entre ambas.
Inicio
Lectura de buffer de archivo original
Escritura a nuevo archivo
La lectura mostro
la secuencia
“mdat”
Cifrado o descifrado
Si
No
Sistema de cifrado de voz para equipos de telefonía móvil
45
3.4.1 Clase CifradoTDES3gpp
Clase que permite crear objetos de tipo cifrado y descifrado Triple-DES 96. Su función
principal es la creación de archivos cifrados y descifrados, se encarga de leer los archivos de audios
originales y hacer la separación correspondiente de bloques de 96 bits, donde dichos bloques son
enviados a la clase CifradoTDES96 o DescifradoTDES96 junto con la llave de 128 bits
proporcionadas por el usuario.
Los métodos principales de la clase son:
public void cifrarTDES96(File dirArchivo, String llave1, String llave2). Método público que
recibe como parámetros un archivo tipo 3gpp y dos llaves de 64 bits proporcionada por el usuario,
hace uso de las clases CifradoTDES96 y LlavesTDES96 para crear bloques cifrados de 96 bits, su
función principal es recibir los bloques cifrados para crear un archivo protegido por el algoritmo
donde posteriormente puede ser recuperado por el método public File archivoCifra() para la
reproducción de audio.
public void descifrarTDES96(File dirArchivo, String llave1, String llave2). Método público
que recibe como parámetros un archivo tipo 3gpp y dos llaves de 64 bits proporcionada por el
usuario, hace uso de las clases DescifradoTDES96 y LlavesTDES96 para crear bloques descifrados
de 96 bits, su función principal es recibir los bloques descifrados para crear un archivo recuperado
o descifrado por el algoritmo donde es posible recuperarlo por el método public File
archivoDescifra() para la reproducción de audio.
3.4.2 Clase CifradoTDES96
Clase encargada de cifrar la información, su tarea principal es aplicar el algoritmo de
cifrado Triple-DES 96, su constructor no recibe parámetros pero tiene como función crear la
permutación variable que es utilizada por el algoritmo de cifrado. Esta clase sólo contiene el
método publicint[] cifrar(int [] cadenaArray, int [][] key1, int[][] key2), recibe como parámetros un
bloque de 96 bits, y la matriz de llaves para cada una de las rondas necesarias; regresa como
parámetro el bloque de 96 bits cifrado.
El método ejecuta las 16 rondas del estándar DES con su variante a Triple-DES 96; el
bloque es separado en dos bloques de 48 bits cada uno llamados parte izquierda y derecha. La
parte derecha es sometida a la función �96( !−1 ,#!), función que realiza una compresión y
posteriormente una expansión del bloque junto con cada una de las filas de la matriz de llaves
obtenidas. Una vez realizada la función, al resultado obtenido se le es aplicada la operación ⊕ (or
exclusiva) con la parte izquierda del bloque %!−1 ⊕�96( !−1 ,#!). Es importante mencionar que en
la ronda tres del primer ciclo es aplicada la permutación variable a todo el bloque de 96 bits, esto
con la seguridad de que tanto la parte derecha como la parte izquierda han sufrido una
modificación en su contenido. Una vez realizado este proceso sobre las 16 rondas, pasa al segundo
ciclo donde es sometido al proceso de descifrado Triple-DES 96 con la matriz de llaves. Finalmente
obtenido el segundo bloque, se somete nuevamente al proceso de descifrado que a diferencia del
Sistema de cifrado de voz para equipos de telefonía móvil
46
primer ciclo la permutación variable es aplicada en la ronda trece sobre el bloque, evitando así
ataques tanto por la parte inicial como final.
Al concluir los tres ciclos el método regresa un nuevo bloque de cifrado el cual es
integrado al nuevo archivo de audio.
3.4.3 Clase DescifradoTDES96
Clase encargada de descifrar la información, su tarea principal es aplicar el algoritmo de
cifrado Triple-DES 96 pero de manera inversa, es decir, los ciclos se aplican de la siguiente manera,
descifrado del bloque después cifrado y finalmente otro descifrado, respetando el orden de la
aplicación de la permutación variable, su constructor no recibe parámetros pero tiene como
función también crear la permutación variable. Esta clase sólo contiene el método publicint[]
descifrar(int [] cadenaArray, int [][] key1, int[][] key2), recibe como parámetros un bloque de 96
bits, y la matriz de llaves para cada una de las rondas necesarias; regresa como parámetro el
bloque de 96 bits descifrado.
Al igual que el método de cifrar de la clase CifradoTDES96, se aplica el algoritmo de Triple-
DES 96 con la variación del orden ya mencionado, descifrado-cifrado-descifrado.
Una vez concluidos los tres ciclos el método regresa un nuevo bloque descifrado el cual es
integrado al nuevo archivo de audio por la clase CifradoTDES3gpp.
3.3.4 Clase LlavesTDES96 Es una clase que realiza el proceso de obtención de las 16 llaves necesarias para cada una
de las rondas del algoritmo Triple-DES 96, implemente el método publicint[][] getKey1(String key)
que recibe como parámetro la llave de 64 bits proporcionada por el usuario y regrese una matriz
de llaves de tamaño 16x48. La obtención de las llaves es sometida a un proceso de corrimiento de
bits además de permutación que alteran el contenido original.
3.4 Vista de la Actividad Principal
La actividad principal está compuesta de siete objetos tipo botón, además de tres caja de
salida de texto, cada objeto tiene sus propiedades especificas, en donde se puede especificar,
tamaño, posición, color, entre otras, además es posible asignarle el método con el cual responderá
al realizar un clic si es el caso. El siguiente código muestra de manera general las propiedades más
usadas para los objetos.
<Button android:id="@+id/button2" <!--Identificado del objeto--> android:layout_width="match_parent" <!--Ancho del objeto--> android:layout_height="wrap_content" <!--Alto del objeto--> android:layout_alignLeft="@+id/button1" <!--Alineación respecto a otro objeto--> android:layout_below="@+id/button1" <!--Posición respecto a otro objeto--> android:layout_marginTop="24dp" <!--Posición respecto al margen superior-->
Sistema de cifrado de voz para equipos de telefonía móvil
47
android:onClick="detener" <!--Método que ejecuta al realizar un click--> android:text="Detener" <!--Texto mostrado sobre el objeto--> android:textSize="15sp" <!--Tamaño del texto--> android:textColor="#FFFFFF"/> <!--Color del texto-->
El layout o plantilla montada sobre la vista es de uso relativo, es decir, cada objeto tiene
una posición relativa respecto a un objeto o algún margen, esto ayuda a mantener un orden en la
posición de los objetos. La figura 16 muestra el formato final de la vista creada para la grabación
de archivos además del cifrado y descifrado de estas grabaciones.
Figura 3.5. Vista de actividad principal de cifrado
En la vista se muestran los objetos con los que interactúa el usuario, primera caja de texto,
es el Estado actual de la aplicación, hay un cambio de texto respecto a la tarea que esté realizando
la aplicación (grabación, cifrado, descifrado). Segunda y tercera caja muestran las llaves k1 y k2
necesarias para el cifrado, estas son ingresadas desde la segunda actividad. Botón Grabar,
comienza con la grabación de audio en formato 3gpp. Botón Detener, detiene la grabación que
este en curso. Reproducción, reproduce el audio grabado por el usuario. El botón Cifrar, ejecuta el
algoritmo Triple-DES 96 cifrado sobre el audio almacenado previamente por la aplicación. El botón
Descifrar, ejecuta el algoritmo Triple-DES 96 descifrado sobre el audio cifrado previamente por la
aplicación. Finalmente, los botones RepCifra y RepDesC, reproducen el audio cifrado o descifrado
respectivamente.
Sistema de cifrado de voz para equipos de telefonía móvil
48
3.5 Clase Principal
El siguiente apartado consiste en la descripción y funcionamiento de la clase principal que
manipula la actividad inicial de la aplicación. La clase tiene por nombre MainActivity, es una clase
extendida de la clase Activity, encargada de la gestión entre código xml o la vista y el código Java o
control. MainActivity tiene la implementación de la clase OnCompletionListener, esta será descrita
más adelante.
La tarea principal de la clase es la gestión y control de los objetos creados en la vista para
la interacción con el usuario. Los objetos para la vista son particularmente, botones (Button) y
cajas salida de texto (TextView).
Se realiza la instancia de la clase de los objetos a utilizar.
TextView tv1;
Button b1, b2, b3, bCifrar, bDescifrar, bRepC, bRepD;
A continuación es necesario realizar la conexión entre la vista y el control para ello se hace
uso del método protectedvoidonCreate(Bundle savedInstanceState), es el encargado de crear la
vista para cualquier aplicación en Android; dentro de este método es posible el enlace de los
objetos de la vista, para ello se busca el identificador del objeto de la vista con el que fue creado,
con ayuda del método findViewById(); a su vez será asignado al objeto del mismo tipo al que se
quiere realizar interacción, donde es importante realizar una conversión del tipo de objeto (cast);
para el caso de nuestros botones y salidas de texto se realizó la siguiente asignación.
tv1 = (TextView) this.findViewById(R.id.textView1);
b1 = (Button) findViewById(R.id.button1);
b2 = (Button) findViewById(R.id.button2);
b3 = (Button) findViewById(R.id.button3);
Una vez asignado un objeto de la vista a un objeto Java se procese a interactuar con ellos.
Para las botones se realizaron distintos métodos con diferentes tareas, las cuales son descritas a
continuación:
Método grabar. Es un método público con un parámetro de entrada View (el cual contiene
información de la vista), y sin parámetros de retorno. El método se encarga de grabar los archivos
de audio en formato 3gpp donde es instanciado y configurado el objeto tipo MediaRecorder con
los parámetros especificados anteriormente.
recorder = newMediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
Sistema de cifrado de voz para equipos de telefonía móvil
49
Para la grabación de archivos de audio y la escritura en la memoria externa o interna del
dispositivo móvil, es necesario la activación de permisos en Android, esto se realiza en el archivo
AndroidManifest.xml, en la pestaña permissions dar de alta los permisos RECORD_AUDIO y
WRITE_EXTERNAL_STORAGE o bien se puede agregar directamente por código las líneas.
<uses-permissionandroid:name="android.permission.RECORD_AUDIO"/> <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Una vez creado el objeto, se procede a crear la instancia del objeto de tipo archivo para
registrar la ruta de almacenamiento del archivo, esto se realizó con la clase tipo File.
File path = new File(Environment.getExternalStorageDirectory().getPath());
Se verifica que la ruta pueda ser creada para el archivo de audio con el método de la clase
File.createTempFile donde se especifica el nombre del archivo y el formato y la ruta donde será
almacenado.
archivo = File.createTempFile("temporal", ".3gpp", path);
El objeto archivo proporciona la ruta absoluta donde será almacenado el audio grabado
por el objeto recorder, con el método setOutputFile, que recibe como parámetro la ruta final con
nombre y tipo de dato.
recorder.setOutputFile(archivo.getAbsolutePath());
Si el proceso anterior es ejecutado sin fallas se procede a preparar la grabación y
finalmente comenzar a grabar con las dos siguientes instrucciones.
recorder.prepare(); //Se prepara la grabación. recorder.start(); //Inicio de la grabación. El proceso o la actividad de grabación de audio continua hasta que esta sea detenida por
el evento que contiene el método stop de la clase MediaRecorder, para ello se creó otro método
que detiene la grabación y es ejecutado al presionar el botón detener.
El método detener tiene como función principal detener el proceso de grabación y liberar
los recursos proporcionados para este fin, además de configurar los parámetros necesarios para
poder implementar una reproducción del archivo creado anteriormente.
recorder.stop(); //Se detiene la grabación recorder.release(); //Se liberan los recursos utilizados
La configuración para la reproducción depende de la clase MediaPlayer, esta proporciona
los recursos de codificación para escuchar nuevamente la grabación. Con ello se crea un objeto y
se hace uso del método setOnCompletionListener, encargado de realizar la preparación completa
Sistema de cifrado de voz para equipos de telefonía móvil
50
por medio de estados de la reproducción. Se obtiene la ruta donde fue creada la grabación y se
deja preparado para la reproducción.
player = newMediaPlayer(); player.setOnCompletionListener(this); player.setDataSource(archivo.getAbsolutePath()); player.prepare(); Una vez que el método detener estableció los parámetros para la reproducción, el método
reproducir iniciara con la grabación con player.start().
Ahora los métodos para cifrar y descifrar harán uso de una segunda actividad ya que en
ella son ingresadas las llaves por el usuario. El método cifrar es el encargado de crear la intención
hacia la segunda actividad, que al finalizar esa actividad regresara los parámetros para la ejecución
el método onActivityResult, encargada de cifrar las grabaciones de audio con las llaves propuestas.
Intent i = new Intent(this, SolicitudLlaves.class); startActivityForResult(i, 1234);
Si la respuesta de la segunda actividad es favorable y el código de requerimiento hace
referencia al cifrado, regresa las llaves que son obtenidas por medio de getExtras() que proviene
de los datos de la actividad, así entonces se almacenan las llaves en una variable de tipo String.
key1 = data.getExtras().getString("key1"); key2 = data.getExtras().getString("key2");
Y con ellas y un objeto de la clase CifradoTDES3gpp se procede a crear el archivo cifrado,
con la grabación creada anteriormente.
CifradoTDES3gpp cifrar;
File archivoCifrado;
cifrar.cifrarTDES96(archivo, key1, key2);
archivoCifrado = cifrar.archivoCifra();
El método archivoCifrar() regresa el archivo de audio cifrado.
Por otro lado el método descifrar realiza el mismo proceso que el método cifrar ya que
lanza también una nueva actividad donde son ingresadas las llaves para el descifrado, la actividad
lanzada es la misma, el cambio que se tiene que realizar es el código de verificación para la
respuesta de la actividad.
Intent i = new Intent(this, SolicitudLlaves.class); startActivityForResult(i, 5678);
Las llaves son recuperadas de la actividad lanzada y se procede a utilizar el método
descifrar de la clase CifradoTDES3gpp.
Sistema de cifrado de voz para equipos de telefonía móvil
51
key1 = data.getExtras().getString("key1");
key2 = data.getExtras().getString("key2");
File archivoCifrado;
cifrar.descifrarTDES96(archivoCifrado, key1, key2);
archivoDescifrado = cifrar.archivoDescifra();
Finalmente la reproducción del archivo cifrado y descifrado tiene la siguiente
configuración.
//Se obtiene el nombre del audio cifrado o descifrado
String direccion = archivoCifrado.getName();
//Se obtiene las direcciones de almacenamiento y se concatena con el nombre del
archivo.
Uri datos = Uri.parse(Environment.getExternalStorageDirectory() .getPath()+ "/" + direccion);
//Se crea un nuevo archivo MediaPlayer y se ejecuta la reproducción
MediaPlayer mp1 = MediaPlayer.create(this, datos); mp1.start();
3.6 Vista para Actividad de Solicitud de Llaves
La segunda actividad consiste en dos bloques de texto oculto para contraseñas además de
un botón que tiene como funcionalidad terminar con la actividad y regresar los datos necesarios
para la actividad principal. La figura 17 muestra la vista de la segunda actividad.
La actividad tiene como tarea solicitar las llaves que son utilizadas por el cifrado o
descifrado según la solicitud del usuario. El usuario tiene que ingresar en los campos de texto las
llaves en formato hexadecimal con una longitud de 16 caracteres que esto es equivalente a los 64
bits necesarios para el cifrado Triple-DES 96.
Figura 3.6. Vista de actividad de solicitud de llaves
Sistema de cifrado de voz para equipos de telefonía móvil
52
3.7 Actividad Solicitud Llaves
Al crear una nueva clase que extienda a la clase Activity es necesario hacer registro de ella
sobre el archivo AndroidManifest.xml, esto se realiza sobre en la pestaña aplicación donde es
ingresado el nombre de la clase que funge como actividad secundaria a la principal.
Figura 3.7. Registro de Actividad en AndroidManifest.xml
Donde SolicitudLlaves es el nombre de la clase extendida. Una vez que se dio de alta la
clase que da control a la segunda actividad, hay que sobrecargar el método protected void
onCreate(Bundle savedInstanceState), ya que es el encargado de crear la relación con la vista. Es
importante agregar los elementos que realizan la relación.
super.onCreate(savedInstanceState); setContentView(R.layout.keys_cifrar);
donde keys_cifrar es el nombre dado para la vista de la segunda actividad.
En la clase SolicitudLlaves se realizó solo un método para el botón que finaliza con la
actividad, el método nombrado aceptarKeys regresa el valor capturado por los editText
k1=edTKey1.getText().toString(); k2=edTKey2.getText().toString();
Y por medio de una intención son regresados los valores de las llaves a la aplicación
principal y continuar con el cifrado de la información.
Intent i = new Intent(); i.putExtra("key1", k1); i.putExtra("key2", k2); setResult(RESULT_OK, i); finish();
El método putExtra, pasa los valores a la actividad principal, con dos parámetros de
entrada un String de identificación y el valor que es enviado, mientras que el método finish()
termina la actividad SolicitudLlaves.
Sistema de cifrado de voz para equipos de telefonía móvil
53
3.8 Implementación de Microcontrolador
3.8.1 Configuración USB en Android Para la implementación de la lectura de datos de un microcontrolador se activa el permiso
WAKE_LOCK sobre el archivo AndroidManifest como se realizó para el manejo de audio.
<uses-permissionandroid:name="android.permission.WAKE_LOCK"/>
El siguiente punto fue permitir que el dispositivo Android tuviera comunicación con el
microcontrolador, para ello se agregó la información de identificación del proveedor y del
producto, además de la clase subclase y el protocolo con el cual se comunican.
Esta configuración se agregó en un nueva carpeta, éste es creado dentro de la carpeta res
que y tiene por nombre xml, dentro del contenido de la carpeta se creó un archivo con extensión
xml con el nombre device_filter.xml, y su contenido debe registrarse el nuevo recurso que es
reconocido por el dispositivo.
<?xmlversion="1.0"encoding="utf-8"?> <resources> <usb-devicevendor-id="1121"product-id="32"class="239"subclass="0"protocol="0"/> </resources>
Esta configuración se realiza también en la programación del microcontrolador, la cual es
explicada más adelante.
Ahora retomando de nuevo la actividad principal, ya que en ella se realiza la programación
para la sincronización de la información que es enviada a través del puerto USB.
Las variables necesarias son:
/*Variables para el puerto USB*/ privatestaticfinalintTIMEOUT = 100; //Tiempo de espera entre conexión privatestaticfinalbooleanforceClaim = true; //Petición USB privatestaticfinal String USB_RECEIVE_THREAD_NAME = "Usb-Receivethread"; //Nombre del hilo USB privatestaticbooleanCurrentlyRunning=false; //Estado de Conexión USB private usbConnectionInThread usbConnectionInThread; //Hilo de conexión USB private UsbDevice device; //Dispositivo USB private UsbDeviceConnection connection; //Conexión de USB private ByteBuffer bufferIn = ByteBuffer.allocate(64); //Buffer de lectura para USB
Se crea también la variable mUsbReceiver que es una variable de tipo BroadcastReceiver,
esta clase ayuda a iniciar una actividad al atender un anuncio o Broadcast, el cual envía un
mensaje al dispositivo sobre el reconocimiento de la conexión. Su configuración es descrita de la
siguiente manera.
Sistema de cifrado de voz para equipos de telefonía móvil
54
//Instancia del objeto BroadcastReceiver mUsbReceiver = new BroadcastReceiver() { @Override //Sobrecarga del método onReceive public void onReceive(Context context, Intent intent) { String action = intent.getAction(); //Se verifica que si el dispositivo está conectado. if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) { //Si hay conexión se obtiene la información del dispositivo device = (UsbDevice) intent .getParcelableExtra(UsbManager.EXTRA_DEVICE); //Se verifica que el dispositivo conectado sea reconocido como un //dispositivo valido para comunicarse if (checkAttachedUsbDevice(device)) { //Es válido se establece la conexión. Log.d("FOUND", "Connectedusb"); //Método que establece la conexión USB establishUsbConnection(); } else { De lo contrario regresa null device = null; } //Verifica que el dispositivo haya sido desconectado } elseif (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) { //El dispositivo y la conexión son null, se liberan los recursos. if (device != null&&connection != null) { usbConnectionInThread.cancel(); connection.releaseInterface(device.getInterface(0)); connection.close(); usbConnectionInThread.close(); } } } };
Al realizarse la conexión a través de USB, se creó un hilo secundario que se ejecuta sin
interferir con el trabajo del hilo principal, ya que la conexión de USB requiere de una verificación
constante. Esto permite que el dispositivo responda a otro tipo de intenciones por ejemplo el
hacer touch sobre la pantalla. El hilo es creado a través de la conexión USB como se muestra a
continuación.
privatevoid establishUsbConnection() { UsbInterface intf = device.getInterface(0); connection = ((UsbManager) getSystemService(Context.USB_SERVICE)) .openDevice(device); connection.claimInterface(intf, forceClaim); usbConnectionInThread= new usbConnectionInThread(); usbConnectionInThread.start(); }
Sistema de cifrado de voz para equipos de telefonía móvil
55
Se recupera la interfaz del dispositivo, posteriormente se otorgan la gestión de
configuración y se realiza una petición de la interfaz, para finalmente instanciar el nuevo hilo que
será ejecutado al tener la conexión con el dispositivo USB.
El hilo de nombre usbConnectionInThread es una clase dentro de la actividad principal que
está a cargo de la ejecución de la comunicación con un dispositivo USB, y es ejecutada en segundo
plano mientras la actividad está en funcionamiento.
La clase consta de un método que establece los puntos y el requerimiento de conexión
UsbEndpoint endpointIn = device.getInterface(0).getEndpoint(0); usbOutRequest = new UsbRequest(); usbOutRequest.initialize(connection, endpointIn);
Si la conexión esta actualmente establecida y el buffer de lectura del dispositivo Android
está lleno, es posible realizar la lectura de la información enviada por el microcontrolador, así
entonces se obtienen las llaves enviadas para el cifrado.
key1Pic = new String(bufferIn.array()).substring(0,16); key2Pic = new String(bufferIn.array()).substring(17,33);
3.8.2 Configuración USB en Microcontrolador Como se mencionó en el Capítulo 2, el microcontrolador PIC18F2455 tiene la posibilidad
de establecer una conexión a través del puerto USB versión 2.0.
La figura 19 muestra el diagrama de conexiones necesarias para establecer la conexión con
el dispositivo Android.
Figura 3.8. Diagrama Electrónico conexiones PIC18F2455 [Elaboración propia]
El siguiente paso consistió en programación del microcontrolador, para ello es necesario
incluir la biblioteca PicUSB.h, ésta permite realizar las configuraciones necesarias para la
Sistema de cifrado de voz para equipos de telefonía móvil
56
comunicación con un dispositivo Android y contiene la información respecto al dispositivo como
son vendor ID, product ID, class, subclass y protocol, además que incluyen funciones de
transmisión y recepción de datos. Se incluye también la biblioteca pic_18_usb.h.
//Descripción del dispositivo
char const USB_DEVICE_DESC[] ={
USB_DESC_DEVICE_LEN, //the length of this report
0x01, //constant DEVICE (0x01)
0x01,0x00, //usb version in bcd
0xEF, //class code
0x00, //subclass code
0x00, //protocol code
USB_MAX_EP0_PACKET_LENGTH, //max packet size for endpoint 0. (SLOW SPEED SPECIFIES 8)
0x61,0x04, //vendor id 0x0461 = 1121 base 10
0x20,0x00, //product id 0x0020 = 32 base 10
0x01,0x00, //device release number
0x01, //index of string description of manufacturer. therefore we point to string_1 array (see
below)
0x02, //index of string descriptor of the product
0x00, //index of string descriptor of serial number
USB_NUM_CONFIGURATIONS //number of possible configurations
};
La programación se desarrolló en PCWHD IDE Compiler for Microchip, es un compilador
altamente optimizado y basto en funciones ANSI C para Microchip, permitiendo al programador
enfocarse en la funcionalidad del diseño, ya que el compilador crea los archivos fuentes necesarios
para la programación de microcontroladores.
El primer punto de la programación es declarar las constantes para la trasmisión y
recepción de datos a través de USB.
USB como dispositivo HID (Human Interface Device) ya que el dispositivo de telefonía móvil trabaja como host.
#define USB_HID_DEVICE TRUE // PIC como dispositivo HID. Trasmisión de datos con tamaño de 64 bits #define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT // Habilita EP1 para transmisión #define USB_EP1_TX_SIZE 64 // 64 bytes para transmisión Recepción de datos con tamaño de 64 bits #define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT // Habilita EP1 para recepción #define USB_EP1_RX_SIZE 64 // 64 bytes para recepción
Sistema de cifrado de voz para equipos de telefonía móvil
57
Además de las variables que contienen la información a ser enviada al dispositivo Android.
Las variables son arreglos de tipo carácter.
char msg1[64]; // Mensaje a enviar a USB. char keys1[17] = "0123456789ABCDEF"; // Llave 1 del cifrado. char keys2[17] = "ABCDEF9876543210"; // Llave 2 del cifrado.
Para realizar las pruebas de la conexión, las llaves son escritas desde el microcontrolador
durante la programación.
El envío de las llaves es transferido por la función keys() descrita a continuación, función
que se ejecuta en el programa principal del microcontrolador durante la conexión.
Función sin recepción y envío de parámetros, el primer paso de la función consta de
limpiar la variable msg1 con espacios en blanco para evitar que ésta envíe basura contenida en el
arreglo. Posteriormente con ayuda de la función sprintf, se escriben las llaves dentro del arreglo
msg1 de la siguiente manera.
sprintf(msg1, "%s %s \n\0", keys1,keys2);
donde msg1 = "0123456789ABCDEFABCDEF9876543210\n\0" después del uso de sprintf.
Finalmente es transmitido el mensaje con la función usb_put_packet(numpkg, ptr , len,
toggle),
donde los parámetros de entrada son:
numpkg. número de paquetes a enviar ptr. arreglo o apuntador a enviar en el paquete len. tamaño del paquete toggle. cambio de estado.
quedando como resultado la función de la siguiente manera.
usb_put_packet(1,msg1, 64, USB_DTS_TOGGLE); Un paquete con la información contenida
en el arreglo msg1 de 64 bytes y con cambio de estado.
Como último punto la función principal main inicializa el puerto USB con transmisión y
recepción por medio usb_init() y usb_task(). Una vez inicializada se verifica que la conexión haya
sido establecida de ser así es ejecutada la función keys(), que envía el mensaje con las llaves
contenidas a través de USB al dispositivo Android.
Para la conexión entre el dispositivo móvil y el microcontrolador es necesario el uso de la
tecnología On-To-Go descrita a continuación.
Sistema de cifrado de voz para equipos de telefonía móvil
58
3.8.2.1 USB On-To-Go
La tecnología USB OTG (On-The-Go), es una extensión de para la versión USB 2.0 que
propone una mejor tenacidad en el manejo de la conexión USB. Es decir, que los dispositivos que
manejen esta tecnología como algunos smartphones o tablets, se les pueda conectar algún
dispositivo USB, como una memoria de almacenamiento, un teclado, un mouse o hasta una
cámara digital, esto gracias a que USB OTG hace que el dispositivo pase de ser un esclavo a ser un
maestro con respecto a otros medios USB.
En la actualidad se puede hablar que todos los dispositivos móviles o portátiles utilizan una
conexión USB con una computadora. A medida de que la popularidad de estos productos
aumenta, existe una necesidad creciente de éstos para comunicarse tanto con los periféricos USB
como directamente uno con otro cuando no se tiene al alcance una computadora. Cabe
mencionar que también existe un aumento en el número de anfitriones o no computadoras los
llamados Hosts Embedded que admiten dispositivos USB para conectarse a periféricos USB.
El USB On-The-Go y los suplementos Host Embedded manejan estos escenarios,
permitiendo que dispositivos portátiles y anfitriones que no son computadoras comunes puedan
tener las siguientes características:
· Capacidad accesible para comunicarse con otros periféricos USB seleccionados.
· Soporte para conexiones directas entre dispositivos OTG.
· Ahorro de energía para preservar la vida de la batería.
Para utilizar esta tecnología se requiere un cable OTG de micro USB a USB 2.0 para la
conexión con el dispositivo móvil ver Figura 20. El manejo completo de la tecnología OTG pude ser
revisada en[23][24].
Figura 3.9. Cable On-To-Go (OTG)
Sistema de cifrado de voz para equipos de telefonía móvil
59
3.8.2.1 Soporte Android, USB host y Accesorio
Android [25][26]permite una variedad de periféricos USB y accesorios USB (hardware que
implementa el protocolo accesorio Android) a través de dos modalidades: accesorios USB y host
USB. En el modo de accesorio USB, el dispositivo externo actuara como un USB anfitrión (host);
algunos ejemplos de este tipo de conexión podrían incluir controladores de hardware, estación de
conexión, equipos de diagnóstico y musical, lectores de tarjetas y mucho más. Esto le da a los
dispositivos Android que no tienen la capacidad de anfitrión, la habilidad para interactuar con el
hardware USB. Accesorios USB Android deben estar diseñados para trabajar con dispositivos con
Android y deben cumplir con el protocolo de comunicación de accesorio Android.
En el modo de host USB, el dispositivo con Android actúa como el anfitrión. Algunos
ejemplos de dispositivos incluyen cámaras digitales, teclados, ratones y dispositivos de juego. Los
dispositivos USB que están diseñados para un amplio rango de aplicaciones y entornos puede aún
interactuar con las aplicaciones Android que pueden comunicarse correctamente con el
dispositivo.
El modo accesorio USB está soportado desde la versión Android 3.1 (nivel de API 12) hasta
las plataformas recientes. El modo accesorio USB también está soportado en Android 2.3.4 (nivel
de API 10) como un complemento de la biblioteca para una amplia gama de dispositivos. Los
fabricantes de dispositivos pueden elegir si incluir o no la biblioteca add-on en la imagen del
sistema del dispositivo.
Es importante mencionar que aunque el sistema operativo incluya las funciones y
bibliotecas para trabajar los modos host y accesorios USB, no todos incluyen el soporte USB OTG,
este recurso está habilitado solo en algunos dispositivos en particular.
Sistema de cifrado de voz para equipos de telefonía móvil
60
Capitulo 4. Pruebas de Cifrado y Descifrado.
4.1 Pruebas de la aplicación Android. Para desarrollar las pruebas de funcionamiento de la aplicación de cifrado y descifrado, se
utilizaron dos dispositivos de telefonía móvil, tanto en software como en hardware, el primero de
ellos es un modelo Sony Ericsson Xperia Neo V MT11, con las siguientes características:
Tabla 4.1. Características Sony MT11
Sistema Operativo Android 4.0.4 Ice Cream Sandwich ICS
CPU / Procesador QualcommSnapdragon MSM8255 / Scorpion
Clock Procesador / Núcleos
1000MHz32 bits / Single-Core
Memoria RAM 512 MB LPDDR2
Memoria Interna 1 GB
Memoria Expansible Hasta 32Gb microSD
El segundo dispositivo es un Motorola Moto G primera generación.
Tabla 4.2. Características Moto G
Sistema Operativo Android 4.4.4 KitKat
Procesador SoC Qualcomm Snapdragon 400
Clock Procesador / Núcleos
1.2GHz / Quad-Core ARM Cortex-A7
Memoria RAM 1 GB
Memoria Interna 8 GB
Memoria Expansible N/A
La primera prueba realizada se basa en la grabación de los archivos de audio, constó de
realizar 10 grabaciones de voz con diferentes mensajes y diferente duración, a manera de lista se
enuncian los mensajes grabados con el dispositivo de telefonía móvil.
1. Prueba uno.
2. Se realiza prueba dos.
3. Prueba de mensaje tres.
4. Prueba número cuatro realizada hoy.
5. Probando mensaje de voz número cinco.
6. Mensaje de voz número seis con Android.
7. Esta prueba es la número siete con éxito.
Sistema de cifrado de voz para equipos de telefonía móvil
61
8. La prueba número ocho fue grabada también con éxito.
9. Prueba número nueve aplicaciones de grabado de mensajes de voz.
10. La prueba diez fue la última realizada el día 25 de Febrero del 2015.
Los mensajes son grabados a un nivel de conversación telefónica al rededor de los 60 db
para comprobar los cambios correspondientes entre cada mensaje. El propósito de las primeras
pruebas fue verificar el funcionamiento de las grabaciones correctas con el dispositivo, se verifico
claridad y comprensión del mensaje.
Las grabaciones son convertidas a un formato de audio mp3 con la ayuda del convertidor
Xilisoft Video Converter Ultimate para Windows, con la finalidad de utilizar el programa Audiocity
también para Windows, donde con este último es posible mostrar el espectro de una señal de
audio, ya que no existe la compatibilidad con el formato 3gpp, por ello la conversión.
Las figura 21 y 22 muestran el espectro del mensaje grabado de las pruebas 9 y 10, estos
espectros.
Figura 4.1. Audio "Prueba número nueve aplicación de grabado de mensajes de voz"
Figura 4.2. Audio "La prueba diez fue la última realizada el día 25 de Febrero del 2015"
La segunda prueba consistió en la grabación de un mensaje de mayor duración con la
finalidad de comprobar la estabilidad de la grabación, esta consta de un fragmento del libro "Cien
años de soledad" de Gabriel García Márquez, el cual menciona lo siguiente:
Macondo ya era un pavoroso remolino de polvo y escombros centrifugados por la cólera
del huracán bíblico, cuando Aureliano salto once páginas para no perder el tiempo en hechos
demasiado conocidos, y empezó a descifrar el instante que estaba viviendo, descifrándolo a
medida que lo vivía, profetizándose a sí mismo en el acto de descifrar la última página de los
Sistema de cifrado de voz para equipos de telefonía móvil
62
pergaminos, como si se estuviera viendo en un espejo hablado. Entonces dio otro salto para
anticiparse a las predicciones y averiguar la fecha y las circunstancias de su muerte. Sin embargo,
antes de llegar al verso final ya había comprendido que no saldría jamás de ese cuarto, pues
estaba previsto que la ciudad de los espejos (o los espejismos) sería arrasada por el viento y
desterrada de la memoria de los hombres en el instante en que Aureliano Babilonia acabara de
descifrar los pergaminos y que todo lo escrito en ellos era irrepetible desde siempre y para siempre,
porque las estirpes condenadas a cien años de soledad no tenían una segunda oportunidad sobre
la tierra.
La grabación anterior se realizó al igual que las primeras pruebas con éxito, no hay
interrupción, la claridad y la comprensión son correctas, la figura 23 muestra el espectro de la
señal de voz.
Figura 4.3. Audio de fragmento del libro Cien Años de Soledad
Como tercera prueba consistió en cifrar las primeras dos pruebas, para cumplir con la
validación de que cada mensaje está siendo cifrado, ocultando así el mensaje original para
cualquier persona ajena.
La figura 24 muestra la prueba de audio número, con la cual se comparan el espectro del
audio original y el cifrado, notando que existe un cambio total en el espectro, tanto en amplitud
como en la posición de la señal con respecto al tiempo.
Figura 4.4. Prueba uno, espectro superior Audio original, inferior Audio Cifrado
Sistema de cifrado de voz para equipos de telefonía móvil
63
A continuación son mostradas las imágenes de los 10 espectros obtenidos tanto de los
audios originales como del cifrado correspondiente.
Figura 4.5. Prueba 2 de Audio espectro superior original, inferior cifrado
Figura 4.6.Prueba 3 de Audio espectro superior original, inferior cifrado
Otro punto importante a mencionar es el incremento en la duración de la grabación de
audio al realizar una conversión al formato mp3, ya que la grabación corresponde a otro contenido
cifrado, este cambia con respecto a un contenido de audio en otro formato. Aunque no es parte
del desarrollo de este trabajo el análisis de audio mp3, es destacable que esa conversión da aun
más seguridad de cifrado, ya que no hay correspondencia en tamaño de contenido, pero si tiene
afectación ya que son archivos con mayor tamaño de bytes, si es que se requiere enviar el
contenido cifrado en formato mp3.
Sistema de cifrado de voz para equipos de telefonía móvil
64
Figura 4.7.Prueba 4 de Audio espectro superior original, inferior cifrado
Figura 4.8. Prueba 5 de Audio espectro superior original, inferior cifrado
Figura 4.9. Prueba 6 de Audio espectro superior original, inferior cifrado
Sistema de cifrado de voz para equipos de telefonía móvil
65
Conforme el contenido de voz se fue incrementando durante las pruebas, la grabación
cifrada tiene distintos puntos de incremento de potencia, pero en puntos no correspondientes con
el audio original, observando la Figura 30, la relación entre los niveles de audio entre ambas
señales, los puntos donde se encuentran los incrementos (donde existe voz), no corresponden con
los del cifrado. Se menciona que el audio obtenido en cada una de las pruebas cifradas es solo una
grabación con ruido, sin comprensión alguna de la información real.
Figura 4.10. Prueba 7 de Audio espectro superior original, inferior cifrado
Figura 4.11. Prueba 8 de Audio espectro superior original, inferior cifrado
Se menciona como otro punto importante que los dispositivos de telefonía móvil Moto G y
Sony MT11, no logran reproducir el audio cifrado en varias de las pruebas, la razón es que la
aplicación de reproducción no es compatible con el formato 3gpp generado por el Moto G, ya que
el audio original es modificado, el reproductor de los dispositivos envía una advertencia que no es
posible la reproducción de ellos, cancelando la misma. Esto no sucede con los reproductores de
formato 3gpp en una PC con sistema operativo Windows 10 ya que la aplicación Películas y TV
logró reproducir las 10 pruebas cifradas.
Sistema de cifrado de voz para equipos de telefonía móvil
66
Figura 4.12. Prueba 9 de Audio espectro superior original, inferior cifrado
Figura 4.13. Prueba 10 de Audio espectro superior original, inferior cifrado
Como se muestra en las figuras anteriores los mensajes originales no tiene una relación
directa sobre el espectro de la señal, cumpliendo así con la modificación del audio original. Al ser
escuchadas estas grabaciones, el audio es totalmente diferente, escuchándose un patrón de
pulsaciones, es decir, que todo el mensaje cifrado se puede interpretar como ruido o una mala
grabación de audio. Es importante mencionar que durante las pruebas con la grabación del Moto
G, no fue posible obtener el espectro de la señal ya que el archivo cifrado es interpretado tanto
por la PC como el dispositivo Android, como un archivo de audio incompatible o dañado.
La siguiente prueba consistió en recuperar el audio original a partir del archivo cifrado
generado y los resultados se muestran a continuación. Se desataca que todos los archivos cifrados
se lograron recuperar con éxito, al descifrar no existe pérdida de información, permitiendo
escuchar el mensaje real y obtener el mismo espectro del audio original como los muestran las
siguientes figuras.
Sistema de cifrado de voz para equipos de telefonía móvil
67
Figura 4.14. Audio original prueba 1 "Prueba uno".
Figura 4.15. Audio cifrado de prueba 1.
Figura 4.16. Audio descifrado del archivo cifrado de prueba 1.
Figura 4.17. Audio original prueba 10.
Figura 4.18. Audio cifrado de prueba 10.
Sistema de cifrado de voz para equipos de telefonía móvil
68
Figura 4.19. Audio descifrado del archivo cifrado de prueba 10.
En las figuras anteriores se muestran los tres espectros, original, cifrada y descifrada, en
ellas se nota la comparación entre los resultados obtenidos, primero el espectro cifrado no
corresponde con la original y descifrada, y en cuanto a los espectros originales y descifrados el
resultado es idéntico donde al ser escuchada esta información, no hay perdida, el audio es el
mismo en ambos archivos.
Ya que cada dispositivo Android maneja un diferente procesador de audio, las grabaciones
tienen capacidades de almacenamiento distintos, mientras el dispositivo Sony en una grabación de
30 segundos genera un archivo de 23 KB, el dispositivo Moto G con la misma duración genera un
archivo de 60 KB, por lo que se procedió a realizar la siguiente pruebas para comprobar la
velocidad de cifrado y descifrado de ambos dispositivos, la cual consistió en el proceso completo
de las pruebas anteriores, que son, grabación de audio, cifrado y descifrado de la grabación,
realizando 10 pruebas con 30 segundos de duración cada una de ellas, siendo el mismo mensaje
para ambas.
En la tabla 4.3 se enlistan los resultados con respecto al tiempo de las pruebas para cada
uno de los dispositivos, para el modelo MT11 el tamaño del archivo es de 23 KB y para el MotoG es
de 60 KB, es de importancia notar que cada dispositivo genera un tamaño de archivo diferente,
con lo que los tiempos se incrementan.
Tabla 4.3. Resultados de Cifrado y Descifrado
Sony MT11 Moto G
Cifrado (seg)
Descifrado (seg)
Cifrado (seg)
Descifrado (seg)
7.55 6.98 12.8 12.75
7.03 7.03 12.46 12.14
7.05 7.31 12.3 12.53
7.07 7.08 12.7 12.32
7.08 6.64 11.85 11.96
7.08 7.1 12.27 12.09
6.99 7.22 11.82 12.11
6.55 7.13 12.01 12.63
7.08 7.22 12.06 12.38
7.05 7.31 12.31 13.07
Sistema de cifrado de voz para equipos de telefonía móvil
69
El dispositivo Sony MT11, genera un archivo de 29KB para una duración de 30 segundos
con un promedio de cifrado de 7.053seg. lo que equivale a:
������ ⇒ 29 !
7.053 "#$= 4.11
!
"#$= 32.88
%&'
"#$
y un promedio de descifrado de 7.102seg. lo que equivale a:
(#")&*+,-. ⇒ 29 !
7.102 "#$= 4.08
!
"#$= 32.64
%&'
"#$
En cuanto al dispositivo Moto G, generó archivos de 60 KB poco más del doble del modelo
MT11 con un promedio de cifrado de:
/&*+,-. ⇒ 60 !
12.258 "#$= 4.89
!
"#$= 39.12
%&'
"#$
y un promedio de descifrado de 7.102seg. lo que equivale a:
(#")&*+,-. ⇒ 60 !
12.398 "#$= 4.83
!
"#$= 38.64
%&'
"#$
lo que muestra que con una diferencia de tamaño el tiempo de proceso es similar de un modelo a
otro.
Finalmente la prueba final para probar la aplicación de las grabaciones de voz, se realizó
utilizando el microcontrolador para el envío de las llaves desde éste. Con la finalidad de probar la
sincronización entre ambos dispositivos. La figura 40 muestra el circuito de pruebas armado sobre
un protoboard.
Figura 4.20. Circuito microcontrolador PIC18F2455 con USB
Se utilizó un programador universal para la carga del programa final hacia el
microcontrolador, el circuito no requiere de alimentación externa ya que el dispositivo móvil le
proporciona el voltaje y la corriente necesaria para que el PIC18F2455 envíe las llaves
correspondientes a la aplicación.
Sistema de cifrado de voz para equipos de telefonía móvil
70
La salida USB del microcontrolador se encuentra conectada a un cable con conector tipo A
macho (ver Figura 41), es necesario la conexión hacia el dispositivo móvil con la ayuda de un cable
tipo On-To-Go (OTG) como se mencionó en el capítulo anterior, con conexión tipo A hembra por
un extremo y un conector tipo micro-B por el otro extremo.
Figura 4.21. Tipos de conectores USB
Al realizar la conexión el dispositivo móvil envía el mensaje que es posible utilizar la
aplicación de audio (cifrado de mensajes), preguntando si se quiere realizar esta operación, como
lo muestra la Figura 42.
Figura 4.22. Conexión PIC18F2455 a Sony MT11 vía USB
Una vez aceptado el requerimiento de la conexión la pantalla de la vista principal a manera
de prueba, muestra las llaves enviadas por el microcontrolador, esto con la finalidad de verificar
que las llaves sean recibidas correctamente como se muestra en la figura 43, nuevamente se
menciona que esto es modo de prueba y no deben mostrarse las llaves ya que esto rompe la
política de la seguridad de las llaves de un cifrado simétrico, por lo cual la muestra de las llaves es
retirado de la aplicación final.
Sistema de cifrado de voz para equipos de telefonía móvil
71
Figura 4.23. Muestra de las llaves en la vista principal
Las llaves mostradas en la vista principal son enviadas posteriormente a la vista de la
solicitud de las llaves donde ya no es necesario ingresarlas manualmente, esto debido a que la
aplicación cuenta con la restricción del ingreso manual, es decir, los editText creados para el
ingreso de la llaves son bloqueados para que solo sean ingresadas las llaves a través del
microcontrolador, evitando el uso de otras personas de la aplicación. La figura 44 muestra las
llaves agregadas directamente por el microcontrolador.
Figura 4.24. Llaves ingresadas por microcontrolador
El proceso anterior es el mismo tanto para el cifrado y el descifrado de las grabaciones. La
grabación realizada para esta prueba es el fragmento del libro cien años de soledad que se utilizo
en las primeras pruebas y el resultado obtenido los muestra en las siguientes figuras.
Figura 4.25. Prueba final microcontrolador, audio original
Sistema de cifrado de voz para equipos de telefonía móvil
72
Figura 4.26. Prueba final, audio cifrado
Figura 4.27. Prueba final, audio descifrado
La prueba final fue realizada con éxito en el uso del microcontrolador y el envío de las
llaves. La grabación, el cifrado y el descifrado se ejecutaron sin falla, con el uso del
microcontrolador durante todo el proceso.
El consumo de corriente solicitada por el microcontrolador al dispositivo de telefonía
móvil es de 27. 4 mA, con un voltaje de 5 V, requiriendo así una potencia 0.13W, proporcionando
hasta 2 horas de comunicación continua, con el uso de ambos dispositivos conectados.
Sistema de cifrado de voz para equipos de telefonía móvil
73
Capitulo 5. Análisis para implementación en GSM.
5.1 Vulnerabilidad de las llamadas telefónicas.
El monitoreo de los celulares sin el consentimiento del usuario crece rápidamente en los
países de América Latina como Argentina, México y Brasil después de ser muy famoso en Estados
Unidos desde 2008.
Actualmente existe un interceptor nombrado Stingray Receptor de IMSI por GSM; es un
equipo con el cual se recopilan datos de teléfonos en zonas específicas y puede realizar ataques de
denegación de servicio a los teléfonos móviles e interceptar conversaciones telefónicas. Aunque
este producto no está disponible de forma legal, se pueden conseguir a través de los mercados
negros.
Figura 5.1. Dispositivo Stingray
Este tipo de dispositivos son utilizados por la policía y la milicia para rastrear teléfonos
celulares. Un sistema de Stingray está conformado por una antena, mapas, y un dispositivo de
señal. El dispositivo trabaja como una torre celular de Base Transmitting Stations (BTS) y obtiene la
lista de los teléfonos sobre la zona de conexión con la BTS. Después se obtiene el International
Mobile Subscriber Number (IMSI) y el Electronic Serial Number (ESM) asociados con todos los
teléfonos en la zona.
Existen dos formas de utilizar estos dispositivos. La primera es utilizar la antena en un área
determinada para recoger IMSI y ESN de los teléfonos móviles en esa zona y saber quién se
encuentra en la zona pre-determinada. La segunda, es localizar un teléfono móvil con el
International Mobile System Equipment Identity(IMEI) y ESN como la aplicación utilizada por
AppleFind my phone para localizar móviles extraviados, pero en este caso, se puede rastrear el
teléfono incluso si es formateado, ya que el IMEI está asociado con el hardware y no el software.
Con base a la intensidad de la señal del dispositivo es posible encontrar la ubicación exacta del
teléfono móvil.
También es posible con este dispositivo generar ataques DDOS sobre los teléfonos móviles
pero en términos de señal de GSM no en los paquetes de datos. Al referirse a un ataque DDOS el
teléfono no puede recibir o realizar llamadas. Con el software adecuado se pueden utilizar estos
Sistema de cifrado de voz para equipos de telefonía móvil
74
dispositivos para interceptar las conversaciones de los teléfonos móviles además de hacer
llamadas y enviar mensajes de texto falsos. Estos softwares son conocidos como Over-The-Air
special signal software como FISHHAWK, PORPOISE.
Existen otros tipos de dispositivos conocidos como Imsi Catcher, Gsm Interceptor,
Interrogator, Blackfin, Blackfin II, Harpoon, Hawksbill, Spurdog, Fishfinder, Kingfish, Stingray,
Moray, Stingray II, Gossamer, Gsm Interrogator, Longship, Rayfish, Cdma Iden Interrogator, Umts
Interrogator, Stonecrab, Fishhawk, Porpoise, Firefish, Tarpon, Amberjack, Lanterneye. Algunos de
estos dispositivos como están disponible en el mercado.
A continuación se muestran alguno de ellos y sus características.
Gossamer. Es un dispositivo portátil similar al Stingray es capaz de recopilar datos de los
teléfonos móviles que están operando en su rango. El dispositivo tiene la capacidad realizar
ataques denegación de servicios sobre los usuarios, bloqueando sus teléfonos al realizar o recibir
llamadas. El costo aproximado de este dispositivo en el mercado negro en México, Brasil y
Argentina es alrededor de los 10 mil a 20 mil dólares, dependiendo del estado del dispositivo y
características del dispositivo.
Figura 5.2. Dispositivo Grossamer
Dispositivos Triggerfish. Es un dispositivo espía con el cual es posible interceptar llamadas
o mensajes de texto en tiempo real en el área seleccionado. Contiene todas las funciones del
Stingray. Algunas versiones rusas avanzadas del dispositivo tiene la capacidad de interceptar
llamadas y mensajes de cerca de 100 mil teléfonos en una zona deseada de la ciudad.
Sistema de cifrado de voz para equipos de telefonía móvil
75
Figura 5.3. Dispositivo Tiggerfish
Dispositivos Kingfish. Es un dispositivo con la capacidad de rastrear y analizar la
información de los celulares en una zona especificada. El dispositivo es más pequeño de Stingray,
pero otorga una la lista de conexiones entre diferentes teléfonos. El dispositivo puede ser
controlado de forma inalámbrica para monitorear las comunicaciones.
Dispositivos Harpoon. Es un dispositivo amplificador utilizado junto con los dispositivos
Stingray o Kingfish, para rastrear grandes áreas y mayor cantidad de dispositivos móviles a grandes
distancias. Su costo en el mercado está valuado en 15 mil dólares.
Con esta información se puede conocer que la intercepción de señales celulares es posible,
pero tiene un costo elevado para realizar pruebas propias que permitan verificar la vulnerabilidad
completa de la red GSM.
5.2 Implementación de cifrado en la red GSM Una vez realizado la implementación del cifrado y descifrado sobre mensajes de voz
generada a partir del dispositivo Android, se planteó la propuesta de la manipulación del Audio
sobre la trama creada a partir de GSM.
Con la información recopilada en el capítulo 2, se mencionó que los paquetes de
información, son enviados en tramas con un contenido de13 Kbit/s, donde la voz se divide en
bloques de 20 ms (0.02 segundos), y que las pruebas realizadas sobre cifrado y descifrado
consistieron en una duración de más de 20 ms fueron un éxito, se propuso la tarea de cifrar la
información creada por los módulos GSM y sustituir posteriormente, la información de audio
original por el archivo de audio cifrado, con ellos la información viajaría a través de la red de forma
segura.
Con la propuesta anterior se dio a la tarea de realizar una nueva búsqueda enfocada a la
manipulación de los módulos GSM por medio de la programación en Android.
La programación en Android y el sitio de desarrollo ofrece clases particulares para el
paquete de telefonía, muchas de estas clases ofrecen a los programadores la posibilidad de
recuperar información referente a las llamadas telefónicas, como determinar los servicios de
telefonía, así como obtener información referente a estas. La siguiente lista muestra las clases
para el manejo de telefonía con GSM.
Sistema de cifrado de voz para equipos de telefonía móvil
76
· TelephonyManager. Proporciona acceso a la información sobre los servicios de telefonía
en el dispositivo. Las aplicaciones pueden utilizar los métodos en esta clase para
determinar los servicios de telefonía y de los estados, así como acceder a alguna
información sobre su servicio su suscripción de telefonía. Las solicitudes también pueden
registrar un oyente para recibir la notificación de cambios de estado de telefonía.
· CellIdentityGsm. Clase para representar a las células GSM únicas.
· CellInfoGSM. Proporciona información de la celda inalterable desde un punto en el
tiempo.
· CellSignalStrengthGsm. Otorga información relacionada con la intensidad de la señal GSM.
Con la información proporcionada por el sitio web de desarrollo Android, se estudiaron
varias clases referente a la comunicación móvil, sin obtener información referente a la
manipulación sobre los módulos GSM. Por ello se planteó la propuesta de ingresar en las clases
referentes a la telefonía y obtener la estructura de la arquitectura de estas clase, con la finalidad
de poder manipularla y reemplazar el audio original de una llamada por la del audio cifrado.
El punto anterior no fue posible ya que la arquitectura de GSM en cuanto al módulo o la
capa de trasmisión MS (Mobile Station) que hace referencia al dispositivo de telefonía móvil, está
compuesta por una arquitectura de hardware cerrada, es decir, que el proceso de ejecución de
obtención de la voz, la conversión Analógica/Digital, la codificación y la creación de la trama de
envío, se realiza de manera propia de cada tarjeta o modem incorporada al procesador. Donde la
forma para comunicarse con el dispositivo es por medio de comandos AT, que en Android son
sustituidos por clases que configuran esa información.
En la figura 51 aparece la arquitectura de la tarjeta SIM900, que muestra la estructura
conformada por la mayoría de los módulos GSM para trabajar como estación móvil dentro de las
redes GSM.
Figura 5.4. Diagrama módulo SIM900[27]
Sistema de cifrado de voz para equipos de telefonía móvil
77
Y como se muestra en las figuras 52 y 53 el modulo sobre la obtención y salida de audio
están encapsuladas o cerradas al programador.
Figura 5.5. Entrada de audio SIM900[27]
Figura 5.6. Salida de audio Sim900 [27]
Por la razón anterior se estudiaron las formas para comunicarse con los módulos GSM;
esta comunicación se realiza por medio de comandos denominados AT. Estos comandos permiten
la configuración de ciertas especificaciones del módulo o la obtención de información particular
como pueden ser el número IMEI. A continuación se muestra una lista de los comandos AT más
utilizados dividido en 4 grupos (Para los primeros 3 grupos anteponer el prefijo AT):
Comandos Básicos.
· A : Responder la llamada entrante
· A/ : Repetir el último comando (no se le antepone AT)
· D : Configura la forma de marcado: T (por tonos), P (por pulsos)
· E : Deshabilita el eco para la terminal
Sistema de cifrado de voz para equipos de telefonía móvil
78
· E1 : Habilita el eco
· H : Cuelga la llamada
· I : Pedido de información
· L : Regula el volumen del sonido de salida del módem
· O: Retorna al modo En Línea desde el modo Comando.
· Q : Configuración para mostrar los resultados
· Q1 : Hace que el módem no arroje resultados de las operaciones
· Sn? : Pregunta por el valor del registro n
· Sn=r : Ingresa el valor r al registro n
· V : El módem devuelve resultados numéricos
· V1 : El módem devuelve resultados con palabras
· X : Reporta los códigos básicos de conexión
· X1 : Ídem al anterior y agrega la velocidad de la conexión
· X2 : Ídem al anterior y además detecta tono de marcado
· X3 : Ídem X1 y además es capaz de detectar tono de ocupado
· X4 : El módem reporta y detecta todos los acontecimientos anteriores
· Z : Reset de la configuración del módem con los datos del perfil 0
· Z1 : Reset de la configuración del módem con los datos del perfil 1
· W : Envía códigos de progreso de la negociación
· +++ : Carácter de escape para volver al modo comando, estando en modo en línea sin
colgar la comunicación (por defecto es el carácter + pero puede configurase otro en el
registro S2). Aquí no se debe anteponer el prefijo AT.
Comandos Extendidos
· &C : Mantiene activa la señal de “Carrier Detect”(contra el otro módem).
· &C1 : Detecta e indica “Carrier Detect” (contra el otro módem).
· &D : Ignora la señal de “Data Terminal Ready”.
· &D1 : si DTR se desactiva el módem para a modo comando.
· &D2 : El módem cuelga la comunicación si el DTR cae.
· &D3 : El módem cuelga, reset y vuelve a modo comando si cae el DTR.
· &F : Carga el perfil de configuración de fábrica 0.
· &F1 : carga el perfil de configuración de fábrica 1 (IBM-PC compatible).
· &F2 : Carga el perfil de configuración de fábrica 2 (MAC compatible).
· &F3 : Carga el perfil de configuración de fábrica 3 (MAC compatible).
· &K : Deshabilita el control local de flujo.
· &K1 : Habilita el control local de flujo por hardware (RTS/CTS).
· &K2 : Habilita el control local de flujo por software (XON/XOFF).
· &Q : Deshabilita el control de errores.
· &Q5 : Selecciona el control de errores V.42 (necesita control de flujo).
· &Q8 : Selecciona una corrección de errores alternativa: MNP.
· &Q9 : Condiciona la compresión: si está activo la V.42 bis desactiva el MNP5.
· &U : Habilita la modulación Trellis según la norma V.32.
· &U1 : Deshabilita la modulación Trellis según la norma V.32.
· &V : Muestra la configuración activa.
· &W : Guarda la configuración actual en el perfil 0.
Sistema de cifrado de voz para equipos de telefonía móvil
79
· &W1 : Guarda la configuración actual en el perfil 1.
· &Y : Hace que el perfil 0 sea el activo cuando se prende el equipo.
· &Y1 : Hace que el perfil 1 sea el activo cuando se prende el equipo.
Nota: estos comandos no son aceptados por la totalidad de los módems y es posible que
algunos de los parámetros aquí mencionados no tengan los mismos efectos en todos los módems.
Comandos Propietarios
· %C : Deshabilita la compresión de los datos.
· %C1 : Habilita la compresión MNP5.
· %C2 : Habilita la V.42 bis.
· %C3 : Habilita la MNP5 y la V.42 bis.
Registros S.
· S0 : Número de “rings” al cabo del cual el módem debe contestar. Si el valor es 0 el
módem no contesta nunca de forma automática.
· S1 : Lleva la cuenta de cuantos rings han ocurrido.
· S2 : Contiene el número en ASCII del caracter de escape. Por default: 43 (+)
· S6 : Tiempo de espera para el tono de discado.
· S7 : Tiempo de espera para la señal de “Carrier Detect” remoto.
· S12 : Tiempo de guarda para pasar al modo comando luego del “+++” .
· S37 : Negociación de la velocidad.
Nota: la cantidad de registros que posea un módem dependen del modelo del mismo. Solo
los primeros 12 son estándar.
Como ya se mencionó anteriormente los parámetros dan la posibilidad de configurar
ciertas especificaciones de los módulos, pero no es accesible la sustitución de los bits que hace
referencia a las tramas con el contenido de voz en el canal de tráfico. Por las siguientes razones no
es posible trabajar con la modificación del contenido de las tramas de la red GSM. Como primer
punto se tiene que el procesamiento del sonido o en el caso de las llamadas sobre la red GSM, está
bloqueado porque el procesamiento es realizado por hardware y no por software ya que el tráfico
de voz y de datos son conmutados por circuitos impidiendo al sistema operativo Android trabajar
con este nivel de la arquitectura del dispositivo de telefonía móvil. Como segundo punto es que los
fabricantes de teléfonos celulares esta obligados a utilizar un formato de diseño estándar respecto
a la incorporación de los protocolos GSM y tiene estrictamente prohibido realizar modificaciones
donde sea alterada la voz.
Sistema de cifrado de voz para equipos de telefonía móvil
80
Conclusiones
El sistema operativo Android ofrece una máquina virtual con la información suficiente para
darle al programador las herramientas necesarias para crear o desarrollar casi cualquier
aplicación, ya que este sistema operativo se encuentra montado en dispositivos cada vez con
mejores recursos de procesamiento, ya que los procesadores utilizados por los dispositivos
móviles continúan elevándose.
El objetivo general de este trabajo tuvo el inconveniente de la aplicación sobre la red de
telefonía GSM, ya que por razones de hardware principalmente, no es posible su manipulación con
el sistema operativo Android, aunque existen clases que ofrecen cierta información para la
comunicación con el módulo GSM que es interpretado con los comandos AT; sin embargo, fue
posible el desarrollo de la aplicación con la pertinencia de cifrar y descifrar grabaciones de voz,
utilizando el protocolo Triple-DES 96.
En cuanto a la vulnerabilidad de la red, se concluyó que existen dispositivos capaces tanto
de interceptar llamadas y mensajes, como el bloqueo total de las señales en aéreas específicas,
estos dispositivos son de uso exclusivo por parte de las autoridades pero son posibles de conseguir
en el mercado negro, a un costo elevado, sin el alcance para realizar pruebas completas de
vulnerabilidad.
Con respecto al sistema de cifrado y descifrado de voz con base a los protocolos de
seguridad, se realizó la aplicación con la cual es posible integrar el algoritmo Tiple-DES 96 en el
sistema operativo Android montado en la máquina virtual Dalvik en grabaciones creadas a partir
de un dispositivo de telefonía móvil, con un funcionamiento adecuado.
Android al ser un sistema operativo instalado en llámese una computadora de bolsillo, que
cuenta con puertos de entrada y salida, es posible agregar otros dispositivos que interactúen con
él, ya sea el caso de dispositivos de almacenamiento o algún otro que ofrezca una respuesta por
medio de una entrada enviada a través de un puerto USB, ya que el dispositivo móvil puede
convertirse en un anfitrión o host capaz de controlar otros dispositivos, con las configuraciones
adecuadas en ambos dispositivos, otorgando al usuario una herramienta de gran alcance para
múltiples aplicaciones.
Sistema de cifrado de voz para equipos de telefonía móvil
81
Trabajos a futuro
En cuanto a los trabajos a futuro, se puede contemplar la implementación del cifrado y
descifrado de mensajes de voz utilizando el estándar Triple-DES 96 sobre redes que trabajen con
protocolo de internet, ya que la red GSM tiene restricciones de acceso.
Establecer un nuevo codificador de voz en el cual incluya un cifrado de la información una
vez codificada digitalmente, es decir implementar una etapa de cifrado en la salida del codificador,
esto daría una alternativa de protección de la información sin la utilización de algún dispositivo de
cifrado externo.
Ya que la programación fue realizada a nivel de clases en Java, una mejora puede incluir la
manipulación de la información a nivel de bit o el trabajo en un lenguaje nativo, ofreciendo un
incremento en la velocidad de cifrado de la aplicación de mensajes de voz realizada en esta tesis.
La aplicación de cifrado con el algoritmo Triple-DES 96 puede ser programada sobre otros
sistemas operativos para móviles, como iOS o Windows phone, ya que el algoritmo de cifrado
puede ser programado sobre estas plataformas.
La programación y el contenido del microcontrolador son cargadas por medio del
programador de forma protegida evitando la copia o la lectura original del código contenido en él,
sin embargo el envío de las llaves de cifrado y descifrado viaja de forma insegura ya que si ambos
dispositivos son utilizados por un tercero, es posible que exista el robo de las llaves, por ello se
propone como una implementación a futuro también la implementación del envío de las llaves
con un cifrado asimétrico como puede ser RSA.
Finalmente la programación de cifrado sobre un sistema embebido sería una alternativa
de uso para las redes de radio como GSM, mantenido separadas las tareas de comunicación y
cifrado sin saturar los recursos de un solo dispositivo.
Sistema de cifrado de voz para equipos de telefonía móvil
82
Referencias
[1]. Qi, H. F.; Yang, X.H.; Jiang, R.; Liang, B.; Zhou, S. J., "Novel End-to-End Voice Encryption
Method in GSM System," Networking, Sensing and Control, 2008. ICNSC 2008. IEEE
International Conference on , vol., no., pp.217,220, 6-8 April 2008
[2]. Chumchu, P.; Phayak, A.; Dokpikul, P., "A simple and cheap end-to-end voice encryption
framework over GSM-based networks," Computing, Communications and Applications
Conference (ComComAp), 2012 , vol., no., pp.210,214, 11-13 Jan. 2012
[3]. P. Bouška and M. Drahanský, “Communication Security in GSM Networks,” In: Proceedings
of SecTech 2008, Sanya, Hainan, CN, IEEE CS, 2008, p. 248-251.
[4]. GCom Thecnologies "GSM Intercepter". Marzo 2014. [Online] Available:
http://www.gcomtech.com/ccp0-prodshow/gsm-intercept.html.
[5]. El Universal "México sufre 12 ataques cibernéticos cada segundo". Abril 2014. [Online]
Available: http://www.eluniversal.com.mx/finanzas-cartera/2014/mexico-ataques-
ciberneticos-1004734.html.
[6]. Congreso de los Estados Unidos Mexicanos "Ley de Seguridad Nacional". Diciembre 2005
[Online] Available: http://www.ordenjuridico.gob.mx/Federal/Combo/L-65.pdf
[7]. StatCounter "Top 8 Mobile Operating Systems from July 2013 to July 2014" Julio 2014
[Online] Available: http://gs.statcounter.com/#mobile_os-ww-monthly-201307-201407
[8]. World Time Zone "GSM World Coverage Map and GSM Country List" Noviembre 2014
[Online] Available: http://www.worldtimezone.com/gsm.html.
[9]. H. Moya, J. Manuel, "Comunicaciones Móviles. Sistemas GSM, UMTS Y LTE" 2da. RA-MA
Editorial, México, 2012.
[10]. J. Girones, "El gran libro de Android" 2da ed. Alfaomega Grupo Editor, México, Julio
2012.
[11]. A. Maiorano, "Criptografía Técnicas de desarrollo para profesionales" 1a ed. Alfaomega
Grupo Editor, México, Agosto 2014.
[12]. "Federal Information Processing Standards Publication", FIPS PUB 46-3, 1999.
[13]. V.M. Silva-García, R. Flores-Carapia, C. Rentaría-Márquez, B. Luna-Benoso "The Triple-
DES-96 Cryptographic System", Int. J. Contemp. Math. Sciences, Vol. 8, No. 19, pp.925 -
934, 2013
[14]. V.M. Silva-García. "Algorithm for Strengthening Some Cryptography Systems", Journal of
applied Mathematics and Decision Sciences Hikari ltd. Vol. 4, No. 20, pp. 967-976, 2010.
[15]. V.M. Silva. "Reducing Computational Complexity for 192 bits SPN Encryption Algorithms
with Variable Permutation", JP Journal of Algebra, Number Theory and Applications,
Pushpa Publishing House. Vol. 16 No. 2, pp. 161-172, 2010.
[16]. D. R. Stinson, CRYPTOGRAPHY: Theory and practice, Chapman & Hall/ CRC Press, 2002.
[17]. Microchip, "PIC16F2455 Features and DataSheet " [Online] Available:
http://www.microchip.com/wwwproducts/Devices.aspx?product=PIC18F2455.
Sistema de cifrado de voz para equipos de telefonía móvil
83
[18]. Xataka "TopFive smartphone vendors" Diciembre 2014 [Online] Available:
http://www.xataka.com/moviles/asi-queda-el-ranking-de-fabricantes-de-smartphones-en-
2014-segun-idc.
[19]. Gartner "Smartphone Sales Grew 46.5 Percent in Second Quarter of 2013 and Exceeded
Feature Phone Sales for First Time". Octubre 2013. [Online] Available:
http://www.gartner.com/newsroom/id/2573415
[20]. Android developer "Dashboards". Julio 2015. [Online] Available:
https://developer.android.com/about/dashboards/index.html?utm_source=ausdroid.ne
[21]. Android developer "MediaRecorder" Septiembre 2014 [Online] Available:
http://developer.android.com/intl/es/reference/android/media/MediaRecorder.html
[22]. Apple Developer "Quick Time File Format Specification" Julio 2015 [Online] Available:
https://developer.apple.com/library/mac/documentation/QuickTime/QTFF/qtff.pdf
[23]. USB On-To-Go and Embedded Host "Introduction to USB On-To-Go" 2015 [Online].
Available: http://www.usb.org/developers/onthego/
[24]. USB On-To-Go "USB On-The-Go and Embedded Host Automated Compliance Plan" 2015
Available: http://www.usb.org/developers/onthego/
[25]. Android Developers, website. 2015 [Online]. Available: http://developer.Android.com
[26]. USB Host and Accesory [Online] 2015 Available:
https://developer.Android.com/guide/topics/connectivity/usb/index.html
[27]. SimCom, A company of SIM Tech "SIM900 Hardware Design_V2.0.pdf" Septiembre 2015.
[28]. J. Tomás, V. Carbonell, M. García, "El gran Libro de Android Avanzado", 2da ed.
Alfaomega Grupo Editor, México, Julio 2014.
[29]. R. D. Stinson, "Cryptography Therory and Practice" 2nd ed, CRC Press LLC, USA 2000.
[30]. W. Stallings, "Cryptography and Network Security Priciples and Practice" 5th ed, Prentice
Hill, USA 2011.
[31]. P.J. Deitel, H. M. Deitel, "Java Como Programar" 7ma ed, Pearson Education, México
2008.
[32]. A. Fuster, D. De la Guía, L. Hernández, "Técnicas criptográficas de protección de datos",
2da ed, Alfaomega Grupo Editor, México 2001.
[33]. B. Schneier, "Applied Cryptography", 2nd ed, Wiley, USA, 1996.
top related