¿ Seguridad ?

La seguridad está en nuestro ADN

La Web, tal como la conocemos hoy en día en su tercera versión y quizás la tecnología más influyente de esta época, está llegando a su fin. Los servicios que conforman la Web actual se basan en su mayoría en el patrón de comunicaciones cliente-servidor, cuya principal característica radica en que toda comunicación debe ser iniciada por el componente cliente y que la conexión debe ser cerrada una vez recibida la respuesta.

Este patrón de comunicaciones solicitud-respuesta, desconectado, está evolucionando a un modelo en "tiempo real", en el cual la conexión cliente-servidor se mantiene abierta y las aplicaciones cliente pueden ser notificadas de forma asíncrona desde el servidor. Este modelo de comunicación por subscripción permite que la aplicación cliente se mantenga permanentemente sincronizada con el estado real del sistema.

Esto sin duda dará origen a una nueva Web que será más rápida, y sobretodo más segura, acorde con las necesidades actuales de privacidad.

 

 

 

La confluencia de tecnologías tales como WebSocket y Bases de Datos en Tiempo Real hace posible la implementanción de canales de comunicación full-duplex, más rápidos y más seguros.

En particular, la seguridad general del sistema se ve incrementada significativamente ya que este nuevo modelo de comunicación permite la ejecución de servicios en equipos con direcciones IP locales.

Esto los convierte en servicios "anónimos", no visibles públicamente en la Web, y por lo tanto, no susceptibles de ser atacados.

 

 

Este modelo de comunicación ha dado origen a nuestra solictud de patente de invención #NC2017/0013302 de la Superintendencia de Industria y Comercio de Colombia (SIC), que resumimos a continuación.

 

 
Protocolo WebSocket

El protocolo WebSocket (un protocolo de capa de aplicación) está basado en TCP pero es independiente de HTTP. La única relación con HTTP es que el proceso de negociación handshaking) es interpretado por el componente servidor como una solicitud Upgrade. A diferencia de HTTP, una vez realizada la negociación inicial, el protocolo WebSocket mantiene la conexión abierta lo que permite la comunicación bidireccional y asíncrona (full-duplex) entre cliente y servidor. En otros términos, WebSocket provee un mecanismo estándar para que el servidor pueda enviar contenido que el cliente no ha solicitado, una tecnología que también se conoce como server push.

Una consecuencia importante de lo anterior es que como los paquetes de encabezado utilizados en la negociación son transmitidos una sola vez, la transmisión de datos mediante el uso del protocolo WebSocket puede llegar a ser más de diez veces más rápida que utilizando HTTP estándar.

Más allá de estas características fundamentales, cabe notar que al día de hoy el protocolo WebSocket está soportado por los principales navegadores y servidores Web en uso.

> Más sobre WebSocket

 

 
 
Bases de Datos en Tiempo Real

Las bases de datos y los sistemas de gestión de los datos (DBMS) siguen constituyendo el recurso más importante de todo sistema de información. Al igual que la Web, las bases de datos –relacionales o no relacionales– también han utilizado tradicionalmente el patrón de comunicación solicitud-respuesta y es por esto que los DBMS son servidores que, al igual que un servidor Web, atienden solicitudes en una dirección IP y en un puerto determinado.

Las bases de datos en "tiempo real" (RTDBMS) son sistemas especializados en el procesamiento de datos que se caracterizan por cambiar frecuentemente. Con el advenimiento de tecnologías como WebSocket, la combinación de una base de datos en tiempo real con un patrón de comunicaciones multicasting (también conocido en ingeniería de software como patrón Observer), ha dado origen a una nueva generación de bases de datos en la cual las aplicaciones cliente no utilizan el modelo solicitud-respuesta, sino que se suscriben a los datos. Por lo tanto, cada vez que uno de los datos cambia, el motor de base de datos notifica –de forma inmediata– a todos los observadores conectados.

> Más sobre RTDBMS

 

 
 
RTDBMS como canal de comunicación

Si se cuenta con una base de datos en tiempo real y esta utiliza un protocolo de comunicación como WebSocket para comunicarse con sus suscriptores, entonces es posible crear un canal de comunicación que utiliza la base de datos como servidor proxy, sin requerir hardware adicional.

Este nuevo canal de comunicaciones puede ser utilizado para implementar el mecanismo RPC (Remote Procedure Call) que caracteriza a los protocolos solicitud-respuesta (cliente-servidor), pero también puede ser utilizado como un flujo de datos o eventos (stream) si se desea utilizar un modelo de programación reactivo. En este caso los microservicios pueden enviar datos de forma asíncrona al componente cliente, algo que se conoce como tecnología PUSH.

El resultado de la combinación de estas tecnologías es una herramienta que no solo sirve para almacenar datos, sino que hace posible la implementación de canales de comunicación en tiempo real (NRT) y de servidores que pueden atender solicitudes en la web como los habituales, pero que utilizan direcciones IP locales, i.e., no enrutables. Esto hace que los servidores en sean "invisibles" en la web pública y por lo tanto considerablemente más seguros.

> Más sobre seguridad