• No se han encontrado resultados

CAPITULO 4: Análisis y pruebas

4.3. Evaluación de vulnerabilidades

4.3.1 Disponibilidad y Confiabilidad

El sistema debe funcionar cuando el usuario lo requiera. Dentro de la plataforma implementada existen puntos de conflicto que pueden obligar la detención del reconocimiento de gestos o de voz. Esto puede suceder por las distintas fallas de hardware o de software que se presentan a continuación.

Requerimientos mínimos de la PC a utilizar:

La disponibilidad de la plataforma estará dada, en parte, por el hardware de la PC en la que se conectan los sensores. El sensor MYO no tiene grandes requerimientos, el conector MYO puede ser ejecutado sobre Windows 7, 8 y 10, y es necesario contar con un puerto USB, y el sistema debe tener OpenGL 2.1 o superior.

Se analizó la performance del dispositivo en dos configuraciones diferentes: Configuración 1:

Sistema operativo Windows 10 x64 Procesador i7 4510u 2.6Ghz 8Gb de Memoria

Configuración 2:

Sistema operativo Windows 7 x64 Procesador i3 2.3Ghz

4 Gb de Memoria.

Se pudo comprobar que la ejecución del sistema en cualquiera de las dos funciona de manera performante.

En cuanto al Dispositivo Amazon Echo, al ser un dispositivo independiente, no depende de donde esté siendo ejecutado Intellihome.

Limitaciones de Hardware

Distancia entre los usuarios y el sensor Amazon Echo:

Para el reconocimiento de voz el usuario debe estar dentro de un espacio a la redonda del dispositivo, de aproximadamente entre 6 y 8 metros, lo cual es una distancia considerable para ser utilizado en un ambiente cerrado. Si esta restricción no se cumple no se reconocerán los comandos ejecutados por el usuario. El sistema actual no reconoce si el usuario está muy lejos del sensor. Aunque esto tiene su restricción en el dispositivo en sí, el usuario da cuenta de su lejanía observando si el sensor enciende su luz, o contesta en algún momento. Esto puede crear la sensación de que el sistema no está funcionando cuando en realidad el usuario no está respetando las restricciones especificadas en la documentación del sensor.

La estrategia a aplicar es prevención de fallas, notificando al usuario las medidas necesarias para saber cuándo el sensor está activo, o colocando repetidores del sensor, que permitan abarcar todo el espacio.

Fallas de software

Para solucionar los problemas encontrados se utilizan como herramienta principal las tácticas de disponibilidad propuestas por el SEI (Avizienis et. al, 2004).

Figura 4.4 - Tácticas de Disponibilidad.

Vulnerabilidades encontradas:

Problema de conectividad entre Alexa WS e Intellihome WS: como se indicó en la sección 3.2.6, para poder configurar que el servicio que procesa los comandos de voz de Alexa envíe peticiones al servicio web provisto por Intellihome, se debe tener acceso al dispositivo de routeo del ambiente en el cual se encuentra Intellihome, y especialmente se debe poder cambiar la configuración de los puertos, lo cual, en algunos proveedores de internet, esto no es posible

Para prevenir este problema se debe tener en cuenta con que configuración de red, y proveedor de internet se cuenta en el ambiente a realizar la implantación del sistema.

Desconexión de red:

Al desconectarse el módulo Intellihome WS, que cumple la función de capa de servicios web conectada con el sistema mediante TCP/IP, se enviará una notificación al módulo Alexa WS que es quien recibe los comandos del usuario, notificando este problema. Este continuará su funcionamiento normal. Sin embargo, no se procesarán comandos de voz, y se pondrá al cliente

en conocimiento de que la conexión se ha interrumpido. Para poder restablecer el servidor se pueden utilizar las siguientes tácticas de recuperación de fallas (Bass et. al, 2003):

● Redundancia activa: Todos los componentes redundantes responden a los eventos en paralelo. En consecuencia, todos se encuentran en el mismo estado. Se utiliza la respuesta del primer componente y las demás son descartadas. Esta táctica es utilizada en sistemas que necesitan respuestas rápidas aun cuando hay fallas, es ideal para configuraciones cliente/servidor.

Figura 4.5 - Redundancia activa a implementar entre el Intellihome (Servidor) y nodos de redundancia activa.

● Redundancia pasiva: Un componente, el primero, responde a los eventos e informa a los otros componentes (en stand by) el estado de las actualizaciones que deben procesar. Cuando ocurre una falla, el sistema primero debe asegurar que el estado de respaldo sea lo suficientemente actualizado antes de reanudar los servicios.

Figura 4.6 - Redundancia pasiva a implementar entre el módulo Intellihome y nodos de redundancia pasiva.

En este sistema en específico es necesario actualizar los servidores de respaldo, ya que el servidor activo se comunica con los sensores y no se almacena un historial de las funciones ejecutadas previamente. En esta configuración pueden perderse unos segundos desde que el servidor principal deja de funcionar hasta que uno de respaldo toma su lugar.

Esto puede provocar la pérdida de uno o dos eventos, es decir, el usuario se verá obligado a repetir el comando de voz para que el sistema ejecute la función solicitada. La pérdida de interacción es mínima.

4.3.2 Seguridad e Integridad

Dentro de un sistema de software, seguridad representa la ausencia de consecuencias catastróficas en los usuarios y en el ambiente. Este atributo de calidad se caracteriza por las siguientes cualidades:

● No repudio: una transacción no puede ser negada por ninguna de sus partes. ● Confidencialidad: los datos o servicios están protegidos del acceso no autorizado. ● Integridad: los datos o servicios son entregados sin cambios.

● Disponibilidad: el sistema estará disponible para el uso legítimo. Los ataques no perjudicarán la interacción con los usuarios.

● Auditoria: el sistema lleva un seguimiento de las actividades ejecutadas en un nivel suficiente como para reconstruirlas (Bass et. al, 2003).

Mientras que la integridad representa la ausencia de alteraciones impropias del sistema. En la plataforma implementada se llama usuario a toda aquella persona que utilice el sistema a través de los sensores. No existe autentificación ni registro de quienes usan el sistema. Esto hace que un ataque malicioso únicamente pueda provenir desde otro sistema por medio de una conexión a Internet con el fin de modificar el comportamiento de los servicios del sistema.

Las soluciones a los problemas encontrados se basan en las tácticas de seguridad propuestas por el SEI.

Vulnerabilidades encontradas:

Ataques a la conexión red: Actualmente no existen en el sistema métodos de control de intrusos en la red. Se deben implementar mecanismos para evitar que entidades externas provoquen desconexiones en la red teniendo en cuenta las siguientes tácticas:

Detección de ataques: se debe considerar la implementación de un sistema de detección de intrusos. Estos sistemas funcionan comparando patrones del tráfico de la red con los de una base de datos. Esto puede llevar a elevar los costos de instalación y de hardware de la plataforma. La implementación de esta detección debiera estar en ambos componentes principales del sistema, interacción usuario - sistema e interacción sistema - dispositivos. Teniendo esta mejora, no sería necesario realizar cambios en la interfaz de servicios web, dado que los mismos nunca llegarían a comunicarse con Intellihome, llegado el caso de un ataque externo

Figura 4.8 - Extensión de la funcionalidad de los módulos Cliente y Servidor para brindar el servicio de detección de ataques.

Recuperación de ataques: Esta táctica es similar a la explicada anteriormente en las figuras 4.5 y 4.6 de la sección de disponibilidad. Si alguno de los componentes se desconecta de la red esta puede seguir funcionando a través de los nodos de respaldo

Ataques a los paquetes transportados por la red:

Actualmente no existen en el sistema métodos de protección de los paquetes enviados por la red. Si los mensajes enviados son modificados, pueden descartarse, lo que atenta contra la disponibilidad y la confiabilidad del servicio brindado. Para resolver este problema existen dos soluciones pertenecientes a la táctica de resistencia ante ataques.

Mantener los datos confidenciales: Se deben proteger los datos enviados por la red a través de encriptación. Para brindar mayor seguridad es conveniente el uso de encriptación asimétrica en los módulos principales de la plataforma, como también en la capa de servicios de Intellihome, y el servicio de Amazon Alexa.

Acceso limitado: Pueden utilizarse firewalls para restringir el acceso de mensajes de puertos desconocidos.

Figura 4.9 - Diagrama de despliegue de la plataforma implementada con resistencia de ataques con acceso limitado.

Realizar estos esfuerzos y elevar los costos de hardware del sistema, deben ser considerados solo si se va a utilizar el dispositivo Amazon Echo, dado que el resto no utilizan datos de Internet, la solución más sencilla y económica es mantener las computadoras involucradas sin conexión a Internet para evitar ataques maliciosos y potenciales descargas de virus.

4.3.3 Confidencialidad

Para este sistema en particular, el atributo de calidad Confidencialidad no es aplicable ya que no se mantiene información del usuario almacenada en el sistema.

4.3.4 Mantenibilidad

Dentro de un sistema de software se conoce como mantenibilidad a la facilidad con la que un sistema o componente software puede ser modificado para corregir fallos, mejorar su funcionamiento u otros atributos o adaptarse a cambios en el entorno (IEEE).

Un software bien desarrollado debe tener la flexibilidad necesaria para adaptarse al futuro y que el mantenimiento deba hacerse de manera rápida y efectiva, afectando lo menos posible las labores de la entidad que lo utilice. Por lo tanto, se deben corregir errores de manera rápida y efectiva. Puede agregarse nueva funcionalidad, mejorar el uso del software a través del tiempo, incrementar el rendimiento, resolver problemas actuales de vulnerabilidades o que puedan surgir en el futuro y poder hacer cambios para que sea compatible con los nuevos sistemas operativos que varían a través del tiempo.

Normalmente un sistema sufre modificaciones luego de que ha sido finalizado y presentado a los usuarios como producto final. Esto se debe a que durante su uso pueden encontrarse fallas, surgir nuevos requerimientos, realizar ajustes en alguna funcionalidad o mantener el sistema

actualizado para poder utilizarlo con las nuevas tecnologías de software y hardware existentes en el mercado.

Mantenibilidad está relacionado con el atributo de calidad modificabilidad. Este último plantea reducir el número de módulos que pueden estar directamente afectados por cambios. En la plataforma extendida, el foco está dado por el comportamiento de los sensores y del actuador en relación con los dispositivos. Actualmente se encuentran en el mercado nuevos sensores de gestos que pueden ser más precisos que los que se usan actualmente en la plataforma. Asimismo, existen nuevas tecnologías para el reconocimiento de voz, que ha crecido junto con los avances de la telefonía celular y la inteligencia artificial. Los dispositivos Android y iOS poseen reconocimiento de voz y son capaces de mantener una conversación con los usuarios. Estos dispositivos pueden incorporarse a la plataforma de AAL implementada, pudiendo enviar los comandos reconocidos a la PC por medio de conexiones wifi o bluetooth, o a través de mensajes directamente a la capa de servicios web. Generalmente es difícil anticipar modificaciones en un sistema. En este caso en particular, la plataforma busca brindar asistencia a los usuarios a través de una interfaz interactiva. La funcionalidad de la plataforma implementada puede ser fácilmente extendida para añadir más sensores, actuadores, dispositivos y nuevas conexiones entre estos, así como también ampliar la cantidad de gestos y comandos de voz reconocidos.

El poder ubicar los módulos a modificar es una táctica preventiva llamada anticipación de cambios esperados. Esta se ha tenido en cuenta en el momento de la extensión. El análisis de esta sección está centrado en las modificaciones a futuro de la plataforma implementada. Añadir un nuevo sensor con la característica que procese externamente a Intellihome la entrada del usuario: Al incorporar nuevos sensores se debe analizar si los mismos deben asociarse internamente a Intellihome, o si pueden invocar a los servicios provistos.

Para añadir un nuevo reconocedor de comandos de voz para dispositivos móviles, por ejemplo, éste podrá obtener los comandos del usuario en la aplicación nativa, tal y como se ha implementado para el reconocimiento de voz con el sensor Kinect. y luego de procesar el comando, ejecutar la correspondiente llamada al servicio provisto por la interfaz de servicios web, detallada en la sección 3.2.3.

Las nuevas tecnologías pueden incorporarse teniendo mejores resultados, aunque, agregar nuevos sensores puede no ser favorable. Estos necesitan un período de tiempo de prueba y pueden no ajustarse al funcionamiento esperado dentro de la plataforma, lo que puede generar conflicto entre otros sensores y bajar la performance, disponibilidad y confiabilidad del sistema. Un inconveniente a tener en cuenta es que, aunque se realice un estudio de compatibilidad y desempeño de los nuevos sensores, se deberá realizar la inversión para poder probar su funcionamiento en el ambiente asistido por computadora, pudiendo esta ser o no beneficiosa.

Eliminar un sensor o reconocedor: Estos cambios debieran ser simples y no alterar el funcionamiento de la plataforma. Se debe eliminar de las jerarquías de sensores/reconocedores la clase que no vaya a ser utilizada nuevamente. Actualmente el sistema requiere una modularización y abstracción que permita desactivar módulos a gusto, para evitar ejecutar innecesariamente funcionalidades. Se debe entonces remover la clase gramática, el reconocedor de gestos integrado y los reconocedores de voz y de gestos.

Estos cambios corresponden al módulo servidor de Intellihome, y deberían acarrear una configuración de inicialización de los sensores más dinámica.

Control de versiones: El desarrollo de la plataforma implementada ha sido de forma iterativa e incremental, aunque, recientemente se ha optado por subir la implementación a un repositorio git. En ocasiones ha habido correcciones en archivos antiguos por no tomar este recaudo

previamente. Para evitar confusiones que lleven a modificar archivos equivocados y a una pérdida considerable de tiempo y esfuerzo, en el futuro se debe utilizar constantemente el sistema de control de versiones, para ayudar a quien modifique la funcionalidad de la plataforma a mantener el código, tests y documentación actualizados y sincronizados.

4.4 Pruebas de usuario

Si bien este trabajo de tesis no realiza un análisis de usabilidad, resulto conveniente poder evaluar el uso de los dispositivos de manera general, y poder obtener feedback para evaluar mejoras y trabajos a futuro.

Documento similar