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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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
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-
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:
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.
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.
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
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,