Si sigues El lado del mal por tu buzón de correo electrónico, este servicio va a dejar de funciona mañana. Hasta el momento se utilizaba la plataforma de FeedBurner que ofrecía la capacidad de gestionar un servicio de un Feed RSS to e-mail, pero desde mañana mismo deja de funcionar.
Figura 1: FeedBurner dice adios y quita la suscripcion por e-mail.
Cambia tu conexión con en El lado del mal.
Como muchos otros productos y servicios, le ha llegado su hora de retiro dentro de su ciclo de vida y va a entrar en modo mantenimiento, desapareciendo el servicio de suscripción a los blogs por correo electrónico.
Así que si quieres seguir conectado con El lado del mal, tienes otras opciones de para hacerlo, que te van a permitir seguir recibiendo los artículos que publicamos por aquí en su dosis diaria, igual que los recibías por el correo electrónico.
- Feedly como lector RSS: Puedes seguir las publicaciones de El lado del mal con un lector de blogs que te sea cómodo. Cuando Google Reader cerro para incorporarse en el servicio de Google +, que luego también cerró, muchos nos pasamos a este lector, y la verdad es que yo estoy contento como usuario con él desde hace tiempo. Te suscribes a El lado del mal, y listo, tendrás todas las actualizaciones.
- If this then that Applet RSS to email: Es una configuración muy sencilla. Basta con que te saques una cuenta gratuita de ITTT y configures el applet de Feed RSS to Email. Verificas tu e-mail, pones el Feed RSS de El lado del mal, y listo. Yo lo he hecho hace unos minutos, y se tarda poco más de 60 segundos en hacer.
- Suscripción a Newsletter de No Hack, No Fun: En lugar de recibir un e-mail con cada artículo publicado, recibirás un boletín de noticias a la semana (más o menos), con todos los artículos publicados en el periódico de No Hack, No Fun, donde están principalmente los artículos de "El lado del mal".
A parte de estas opciones, tienes la posibilidad de seguir las publicaciones que hago yo de los artículos en mis redes sociales, a través de Facebook, Twitter y Linkedin, e incluso en la Stories de Instagram, donde salen todos los artículos de El lado del mal publicados.
Figura 6: Canales de comunicación en redes sociales
A los que estáis suscritos por e-mail, os llegará, a parte de esta comunicación, un correo de despedida con las opciones de suscribirse (o no, que aún lo tengo que pensar), a una nueva lista de correo legacy para seguir recibiendo los mensajes por e-mail, pero personalmente no sé si el correo electrónico es el mejor canal para leer blogs hoy en día, sabiendo cómo es el correo electrónico.
Como curiosidad, después de ver morir Google Reader, Google Plus y ahora FeedBurner, no sé si tener el blog en Blogger es una buena idea a futuro. Estoy viendo como El lado del mal sobrevive a la estrategia de blogs de Google, y tal vez deba ir pensando en migrar a WordPress y ponerme a pensar ya sen sus seguridad, que puede tocar en algún momento hacerlo, así que ya veremos cómo acaba esto.
La página de Killed by Google se ha convertido en una página de consulta para mí constante, para ver qué proyecto es el siguiente en desaparecer no vaya a ser que se lleve a mi querido blog por delante. Y aprovecho para terminar dándoos las gracias a todos los que lleváis años y años siguiendo a El lado del mal, que bendito problema el buscar nuevas formas de seguir comunicados. Por cierto, se admiten sugerencias para configurar nuevos canales de comunicación para El lado del mal, más que bienvenidos.
Este libro, que sacamos entre Enrique Rando y yo hace ya una década, lo hemos ido actualizando, con la colaboración de Pablo González, para que siga estando de actualidad y los nuevos pentesters que quieran entrar en este mundo puedan estudiar y aprender con él. Son más de 4.000 ejemplares de este texto que hacemos con tanto cariño.
El contenido sigue teniendo la misma base que tenía desde la primera edición, pero con cambios y correcciones - algunas aportadas por los lectores - para hacer más entendibles, reparar un error, o añadir una pequeña explicación extra que deje más claro un concepto que no quedaba claro.
Y, para entender mejor el objetivo de lo que cuenta el libro, las palabras de Enrique Rando presentándolo en su descripción:
Si fuera preciso explicar qué es un programa a alguien que no conociera nada en absoluto sobre el tema, quizá habría que comenzar indicándole que es "algo muy complejo". Algo que, aunque no lo parezca, hace muchas cosas y se relaciona con muchas otras componentes para realizar su trabajo. Algo que obedece ciegamente y al pie de la letra las instrucciones de su autor. Y algo a lo que no le preocupan las consecuencias de sus actos.
Complejidad. Ésa es la clave.
Tanto en el producto como en el proceso de elaboración. Miles de líneas de código. Algoritmos complicados.
Entornos de ejecución cambiantes. Presiones para entregar el producto en una determinada fecha. Escasez de medios humanos, materiales y técnicos... Pero esto es sólo el principio: después viene la puesta en producción y su posible exposición al mundo exterior. Un mundo que también es complejo.
Visto lo visto, no es de extrañar que los programas contengan fallos, errores, que, bajo determinadas circunstancias los hagan funcionar de forma extraña. Que los conviertan en algo para lo que no estaban diseñados. Aquí es donde entran en juego los posibles atacantes. Pentesters, auditores,... y ciberdelincuentes. Para la organización, mejor que sea uno de los primeros que uno de los últimos. Pero para la aplicación, que no entra en valorar intenciones, no hay diferencia entre ellos. Simplemente, son usuarios.
Esperamos que este libro, con el que muchos habéis estudiado, siga siendo un compañero de viaje nuestro y vuestro, que mientras que las vulnerabilidades de SQL Injection sigan existiendo, nosotros seguiremos trabajando en este área tan bonita que es el pentesting.
Hace apenas una semana os hablamos de como los avances en la Inteligencia Artificial en el campo de la medicina la habían convertido en uno de los mejores aliados de los investigadores para luchar contra la COVID utilizando algoritmos para determinar qué factores provocan que el virus afecte más a unas personas que otras o para descubrir qué fármacos ya aprobados por la FDA podrían ser eficaces para tratar los síntomas que produce el virus.
Figura 1: Inteligencia artificial para la detección prematura y el tratamiento del Alzheimer
Llevamos desde hace ya varios años trabajando con los avances en Inteligencia Artificial, en el campo de del Machine Learning, y en su aplicación práctica en muchos campos. Como es normal, hemos aplicado en profundidad el Machine Learning a la Ciberseguridad, pero también vemos cómo avanza la Inteligencia Artificial en otros campos. Hoy os hablaré de otra de las aplicaciones más recientes de la IA en el campo de la medicina, en este caso os contaremos cómo es posible predecir cuándo una persona podría tener la enfermedad de Alzheimer.
El Alzheimer de por sí es una enfermedad silenciosa, y que en algunas ocasiones tarda en detectarse. Su característica más común y por la que más se conoce es la perdida de memoria inmediata y la perdida de otras capacidades mentales. Se dice que es una enfermedad silenciosa porque en las personas de avanzada edad es muy común experimentar pequeños olvidos que son parte del envejecimiento natural y esto oculta los comienzos de la enfermedad.
Figura 3: Cerca de 800.000 personas padecen Alzheimer en nuestro país.
Entre los síntomas más comunes del Alzheimer se encuentran la perdida de memoria, el deterioro en la capacidad motora, la perdida de energía y los problemas de orientación y de atención. Estos síntomas suelen mostrar una fase de la enfermedad ya avanzada pero un tratamiento prematuro de la enfermedad puede ayudar a que la aparición de estos síntomas se retrase.
Durante la pandemia el colapso del sistema sanitario ha sido uno de los principales problemas a los que se ha enfrentado la mayoría de los países, no solo por la gran cantidad de ingresos en las UCI sino porque ha habido millones de pacientes que ya fuese por miedo la COVID o por el propio colapso del sistema sanitario no han acudido a sus revisiones periódicas. En el caso de nuevos pacientes de Alzheimer y otras enfermedades degenerativas el confinamiento en la vivienda y la falta de atención médica han provocado el avance más rápido de las mismas.
Figura 4: Células cerebrales de una persona afectada por Alzheimer.
Por suerte los doctores no tardarán en contar con un gran aliado como es la Inteligencia Artificial para ayudarles a detectar el Alzheimer y otros tipos de demencia de forma prematura. Un equipo de investigadores de la farmacéutica Pfizer e IBM han desarrollado un modelo que sería capaz de detectar los primeros signos de la enfermedad a través del análisis de la escritura de los pacientes (centrándose en los patrones lingüísticos y en el uso de las palabras).
No es la primera vez que se utiliza la Inteligencia Artificial para estudiar posibles casos de demencia, sin embargo, en los casos anteriores era necesario la realización de pruebas clínicas (como escáneres cerebrales) a los pacientes para luego analizar los resultados de dichas pruebas y compararlos con una gran base de datos.
En una entrevista para la revista Scientific American, Ajay Royyuru, encargado del departamento de salud e investigación de ciencias de la vida explicaba que el uso de IA en estos casos proporciona grandes ventajas a los expertos a la hora de detectar cambios sutiles en el comportamiento de los pacientes que podrían indicar fases tempranas de la enfermedad antes de que se haya dado un diagnóstico clínico.
“Estos resultados en realidad podrían alertarte de algunos cambios que indican que deberías hacerte un examen más completo”.
Para el estudio de Pfizer e IBM se utilizaron los resultados de un estudio previo (Framingham Heart Study) que recogía información de 14.000 personas de tres generaciones distintas desde 1948. En ese estudio una de las pruebas que se les pedía a los pacientes consistía en pedir a los pacientes que describiesen una imagen y transcribir su respuesta. Con las respuestas obtenidas el modelo de IBM fue capaz de detectar características lingüísticas que suelen asociarse a signos tempranos del deterioro cognitivo como el uso palabras repetidas, faltas de ortografía o la ausencia de oraciones gramaticalmente complejas.
Figura 5: El Farmingham Heart Study comenzó en el año 1948 y a día de hoy sigue recopilando datos para evaluar los factores que afectan a algunas enfermedades.
En la primera prueba realizada por el modelo su eficacia fue del 70%, según el estudio de Framingham la mayoría de los pacientes seleccionados por la IA desarrolló síntomas de Alzheimer antes de los 85 años. Por desgracia esta prueba esta basada en resultados históricos y en los que participaron ciertos grupos étnicos, por lo tanto, el modelo no podría aplicarse directamente en la población de cualquier país, sin embargo, esto no deja de ser una de las mayores contribuciones al estudio de este tipo de enfermedades. Al haber comprobado la eficacia de este modelo de Pfizer e IBM basado en datos históricos se demuestra que sería posible crear un modelo similar aplicado a la actualidad, aunque sería necesario la realización de un nuevo estudio con datos actualizados y que englobase todo tipo de pacientes.
Este no es el único caso en el que se ha utilizado la inteligencia artificial para luchar contra el Alzheimer y otros tipos de demencia, de hecho, ya se ha utilizado un modelo similar al que os hablamos hace unos días para detectar que fármacos ya aprobados por la FDA podrían ser eficaces para combatir la COVID. En este caso, al igual que en el que os acabamos de mencionar los medicamentos tendrían que enfrentarse a estudios in vitro e in vivo para garantizar su eficacia. El algoritmo en cuestión ayuda a encontrar que fármacos son más efectivos o tienen unas propiedades mas beneficiosas para los pacientes y así poder centrar la investigación en aquellos que parecen más prometedores.
Figura 6: Harvard Medical School utiliza la IA para estudiar fármacos eficaces contra el Alzheimer.
El algoritmo resultante de la colaboración entre la HMS (Harvard Medical School) y el Hospital General de Massachusetts, que ha recibido el nombre de DRIAD, estudia como se comportan las células cerebrales cuando son expuestas a determinados fármacos con el fin de determinar cuales de ellos tienen propiedades protectoras o dañinas para las células cerebrales. DRIAD también permite a los investigadores analizar sobre qué proteínas actúan estos fármacos y cómo influye esto al avance y comportamiento de la enfermedad.
Por último, quería hablaros de un proyecto que analiza los micro gestos de los pacientes con el fin de detectar si están sufriendo algún dolor. Dependiendo de la cultura a la que pertenezcamos nuestras expresiones y gestos son diferentes, esto también ocurre a la hora de expresar sentimientos como la alegría o el dolor. En esto se ha basado el estudio desarrollado por Pau Rodríguez, investigador de la empresa canadiense Element AI y profesor adjunto de la Universidad Autónoma de Barcelona. Gracias a esta tecnología es posible detectar estos gestos sutiles que realizamos involuntariamente y que no pueden ser falsificados. La IA incluso es capaz de detectar cuándo estos gestos se exageran ya que el algoritmo se entrenó utilizando vídeos de personas cuyo umbral del dolor se estaba registrando en una escala objetiva.
Figura 7: Pau Rodríguez, investigador de Element AI recientemente premiado por la SCIE.
Al igual que es posible utilizar los microgestos para saber si una persona esta sufriendo dolor es posible aplicar esta tecnología para analizar si un paciente tiene síntomas prematuros de demencia. Para comprobarlo se desarrolló un test que ha recibido el nombre de “praxis” y que se esta poniendo a prueba en el Hospital Universitario de Niza. El test consiste en hacer que los pacientes realicen una serie de gestos con las manos, el médico pide que reproduzcan determinados gestos mientras que la IA analiza si hay olvidos, confusiones o algunos fallos sutiles a la hora de realizarlos.
Por el momento los resultados del experimento han sido cuanto menos prometedores ya que la Inteligencia Artificial ha sido capaz de detectar de forma prematura casos de Alzheimer que los doctores no han sido capaces de diagnosticar hasta que la enfermedad ya ha avanzado. El estudio de Pau Rodríguez ha sido premiado recientemente por la Sociedad Científica Informática de España y la Fundación BBVA.
Saludos,
Autor: Sergio Sancho, Security Researcher en Ideas Locas.
El pasado 22 de Junio fui invitado por Unitel, junto con la empresa Palo Alto, para dar un seminario en el Centro Regional de Innovación Digital de Castilla-La Mancha y hablar a las empresas de cómo los cibercriminales atacan a las empresas. Así que, preparé una pequeña charla en la que conté algunos ejemplos de cómo los malos usan la tecnología para perpetrar sus actividades delictivas.
En la charla, que es de poco más de 40 minutos, hablé de cómo utilizan las técnicas OSINT para preparar sus ataques a las empresas, buscando a los empleados que trabajan en ellas - usando plataformas como Linkedin para localizar quién trabaja o ha trabajado en qué empresas - para saber de esas personas en qué otras plataformas o servicios de Internet tienen cuentas y preparar el ataque.
Para hablar de todo ello, el pasado lunes 21 de Junio nos reunimos todos en la preciosa sede de la Academia para hablar de todo ello. Abrió el acto el presidente de la RAE, Don Santiago Muñoz Machado, para que después tuviéramos un debate orquestado por Olivia Piquero, la directora de comunicación de RAE, que fue dirigiendo la conversación con preguntas, donde hablamos mucho de los retos, de los avances en el cuidado del Español, del Proyecto Maquet, e incluso un poco de los sesgos en la traducción de los que os he hablado por aquí.
Para responderlas estábamos David Carmona, VP de AI en Microsoft Corporation, Marie Mulot, gerente general en España de Amazon Alexa, Ester Marinas, responsable de marca y reputación de GoogleEspaña y Portugal y yo. Para cerrarlo, vino Carme Artigas, Secretaria de Estado de Digitalización e Inteligencia Artificial. Puedes ver el vídeo completo de la sesión que os he subido a mi canal Youtube.
Figura 1: Explainable AI (XAI): Cómo detectar si los algoritmos
de Inteligencia Artificial nos engañan
Mi experiencia con redes neuronales profundas ha sido siempre positiva, pero no es así para gran parte de la comunidad científica. Una de las grandes tareas aún por resolver del Deep Learning es la interpretabilidad de los algoritmos, que muchas veces hace que éstos tengan sesgos asociados y no se puedan detectar. Para que veáis la complejidad del tema os adjunto un gráfico interesante:
Figura 2: Accuracy vs Explainability en distintos modelos de aprendizaje
Como veis, Deep Learning ha roto el estado del arte de multitud de tareas de Inteligencia Artificial, sobretodo en Computer Vision (donde las redes convolucionales y los actuales visual Transformers están dando mucho que hablar) o NLP (donde ya vimos con el Proyecto Maquet que BERT y los Transformers nos dan muchas opciones). Pero esta mejora ha implicado un gran problema de interpretabilidad de los algoritmos: si uno observa la estructura de un Decision Tree puede entender por qué, para cada entrada, hay una salida asociada, pero no es así para los algoritmos más complejos de redes neuronales profundas.
OpenAI publicó hace un par de meses Microscope, una herramienta online que te permitía investigar, para las redes neuronales más conocidas, cuál eran sus distintas activaciones. Con esto intentaban “emblanquecer” la black-box de las redes neuronales. Pongamos algún ejemplo:
Figura 4: Visualización de las capas de AlexNet
Si visualizamos las capas de AlexNet, una red neuronal publicada en 2012, posterior a LeNet (primera red convolucional diseñada por Yann Lecun) y con 5 bloques de capas convolucionales, obtenemos la imagen anterior. Como observamos, los distintos filtros de la primera capa convolucional corresponden a las low level features, esas características que nos dan poca información sobre el contenido de la imagen más allá de patrones específicos. Cambios de color de azul a amarillo, patrones en blanco… Cosas sencillas que con algoritmos de Machine Learning de procesamiento de imagen podríamos conseguir, con bancos de filtros.
En el apartado Technique, podemos encontrar para cada una de las neuronas las imágenes del dataset Imagenet que provocan una mayor activación. ¿Os suena alguna foto?
Figura 5: Unidad 4 de la primera convolución de AlexNet
y las imágenes de Imagenet que más la activan
Pero la cosa se pone interesante cuando nos vamos a las últimas capas convolucionales. Si nos vamos a la unidad 5 de la conv_6:
Figura 6: Imagen generada para la activación máxima de la neurona 5
de la convolución 6 con un patrón repetitivo
Aquí me diréis: Bruno, te has vuelto loco, no se entiende nada. La Explainable AI no explica nada. Pero veamos qué imágenes de Imagenet hacen que se active al máximo esta neurona:
Figura 7: Imágenes que producen activación máxima de esa neurona
Exactamente, esa neurona es una especialista en detectar pájaros azules. Cuando tenemos activación máxima en esa neurona… lo más probable es que en la imagen aparezca ese animal. Esto es así ya que existen muchas imágenes de este tipo en Imagenet, por lo que la red neuronal ha aprendido que las características de este tipo de imágenes son tan importantes que deben tener una neurona exclusiva para ello. Y esto se hace de forma automática durante el backpropagation. [Si quieres profundizar en estos temas con ejemplos en ciberseguridad tienes el libro de Machine Learning aplicado a Ciberseguridad]
Hasta aquí todo bien, sabemos qué imágenes de nuestro dataset (en este caso Imagenet) tienen activación máxima en cada una de las neuronas, pero los ataques adversarios a redes neuronales también hace tiempo que se conocen. Aunque en el caso anterior fuera un tipo concreto de pájaro el que activaba esa neurona, hay otras imágenes que podrían activarla y, por tanto, engañar a nuestro clasificador.
Figura 9: Imágenes no reconocibles para los seres humanos, pero que
el clasificador del estado del arte los clasifica con una label en concreto.
Además, y si nos damos cuenta de que las low level features que hemos mostrado al inicio correspondían sobre todo a texturas, nos podemos imaginar que los algoritmos de IA se podrán fácilmente engañar si modificamos la textura de una imagen de entrada:
Figura 10: De izquierda a derecha, imagen clasificada como elefante,
imagen clasificada como gato e imagen clasificada como elefante
Para defendernos de este concepto de Black-Box, los investigadores en Explainable AI han hecho grandes avances, como por ejemplo Grad-CAM, un algoritmo (está en Keras, por cierto) que te permite visualizar el feature map de la imagen que es más importante para la clasificación de ésta. Por ejemplo, si tenemos una imagen de un perro y un gato juntos, te dirá por qué ha clasificado la imagen como una imagen “gato” o imagen “perro” señalando en la imagen el porqué de la decisión:
Figura 11: (De izquierda a derecha) Imagen original, explicación
de clasificación “gato” y explicación de clasificación “perro”
GradCam es un paper muy bueno y alucinante de 2016… pero es que dos años más tarde un grupo de investigadores estudió la idea de que las explicaciones de la clasificación fueran por texto, lo que se conoce como Pointing and Justification Explanation (o como a mí me gusta llamarlo, un “Justifique su respuesta” de toda la vida). En el caso que veremos ahora, para una tarea de Visual Question and Answering (VQA-X), podemos, a partir de una imagen de entrada y una pregunta, que el algoritmo nos devuelva no sólo la respuesta, sino una justificación escrita y una señalización en la imagen.
Figura 12: VQA-X con justificación textual y señalización visual,
y ejemplo del dataset utilizado para entrenar el modelo
Alucinante. Y aquí es donde el Bruno más soñador piensa e imagina un futuro (como siempre me pasa con la tecnología, vaya). A todo humano, me incluyo, nos da respeto que decisiones del día a día las tomen las máquinas, pero eso es debido a que las estamos enseñando a decidir, no a explicarnos la decisión. Un caso muy claro es el de las empresas de telemedicina, os pongo un caso hipotético (totalmente hipotético). Una app del móvil para la detección de enfermedades de la piel (como Legit Health) se vincula con Siri, Aura o Alexa, y entonces ocurre la siguiente conversación:
- “Oye XXX, creo que el lunar de la espalda me ha crecido.”
- “A ver, enséñame una foto.”
- “Hecho ¿Cómo lo ves, debería ir al médico?”
- “Sí Bruno, debes ir al médico, por X, Y, Z. Te pido cita.”
Igual será en 5, 10 o 15 años, pero esto pasará. Ipse dixit.
¡Saludos!
Autor: Bruno Ibáñez, Investigador de Ciberseguridad e IA en Ideas Locas
En el anterior artículo hablamos sobre los defectos que tiene la arquitectura de red TCP/IP actual. Antes de empezar a desarrollar cómo RINA mejora los defectos que tiene la arquitectura actual, me gustaría matizar algo que considero importante. RINA no se plantea como un reemplazo del TCP/IP. RINA nace con la motivación de proponer una arquitectura nueva donde TCP/IP no puede llegar.
Figura 1: RINA: Breve introducción a su arquitectura y sus principios de arquitectura
RINA se puede desplegar de manera incremental interoperando con las tecnologías actuales. No necesita un despliegue limpio como por ejemplo si necesita IPv6. Es decir, puede funcionar en varios casos de uso distintos (por encima de una red Ethernet, por encima de una red IP, etcétera).
Principios de la arquitectura
RINA de manera general, se basa en el principio de maximizar los invariantes en la arquitectura, de modo que se pueda minimizar el número de protocolos. La siguiente figura ejemplifica esta afirmación de manera gráfica.
Figura 2: Representación abstracta de la arquitectura y los protocolos de red
Lo que se pretende en RINA es solucionar la mayoría de problemas complejos dentro de la arquitectura, es decir, todas las cuestiones que no dependan de los requisitos de cada red, solucionarlos dentro de la arquitectura de manera que tendremos menos protocolos y estos se parecerán más entre ellos.
¿Qué es la red?
Como hemos explicado en el artículo anterior, la red no es más que el canal que permite comunicación entre aplicaciones (por ejemplo, Skype, e-Mail, WhatsApp, etcétera). Por tanto, la red es en sí misma, una aplicación distribuida especializada en proveer este canal de comunicación entre aplicaciones (es decir, procesos).
En RINA, a este canal se le llama DIF (Distributed IPC Facility), que viene a significar exactamente lo que veníamos diciendo, una aplicación que provee servicios de comunicación entre procesos. Como primer modelo podríamos tener un solo DIF que proporcione a dos aplicaciones capacidad para comunicarse.
Figura 3: Representación de un DIF para proporcionar IPC entre dos endpoints.
Pero no nos podemos quedar tranquilos así. Si solo tenemos un DIF para dar comunicación a todas las aplicaciones del mundo, no funcionaria, ergo no es escalable. Pero esto es algo que podemos solucionar de manera relativamente sencilla. Necesitamos aislar los diferentes scopes en las redes.
Figura 4: Representación de varios DIFs para proporcionar IPC entre 2
Lo que tenemos en RINA entonces, son múltiples DIFs que proveen IPC entre ellos. Al fin y al cabo, un DIF simplemente es una aplicación distribuida. ¿Y cuántos DIFs se tienen que usar en una red? Pues tantos como el diseñador de la red considere oportunos para el caso de uso que se quiere proveer IPC. Por ejemplo, habrá un DIF (rojo) que estará por encima del nivel físico, que se adaptará a la tecnología que modula la información por debajo (aire, fibra, cable, etcétera); o bien puede interesar tener un segmento de red metropolitano (azul) más lejos de los usuarios, que agregue más cantidad de tráfico al flujo.
Al final, lo que tenemos es una arquitectura más abstracta y más sencilla, ya que en una red solo se tiene el mismo elemento repetido N veces. Con lo cual, gestionar la red se hace más fácil, ya que solo sabiendo cómo se comporta un DIF y cómo se relaciona con otro DIF (o aplicación, porque interactúan de la misma manera), se puede generalizar a cómo interactúa toda la red con todos los elementos que la componen. De aquí viene lo de Recursive en RINA, ya que (abusando del término) lo que se tiene es un mismo tipo de capa que se va repitiendo y se usan los servicios de una capa a otra de la misma manera que las aplicaciones usan los servicios de ella.
Importante hacer énfasis en que las distintas capas (distintos DIFs) no tienen funcionalidades distintas, solo se ocupan de proveer servicios de comunicación entre procesos en un scope. Entonces, un DIF provee servicios para que dos aplicaciones se comuniquen, pero… ¿Puede haber varias aplicaciones usando los servicios de un mismo DIF? Por supuesto, de hecho, de manera más concreta, un DIF proporciona los servicios de comunicación asignando recursos (memoria en buffers, capacidad de ancho de banda, etcétera) para las distintas aplicaciones. Luego, las aplicaciones piden un flujo de comunicación al DIF con unos requisitos concretos y compiten unas aplicaciones con otras para poder obtener ese flujo.
Dentro del DIF
¿Y qué hay dentro de un DIF exactamente? Dentro de los DIFs, siguiendo la filosofía de RINA, también se pretende simplificar al máximo su estructura interna (siguiendo el principio de maximizar las invariancias). Las funciones que hace un DIF se clasifican en tres tipos:
Funciones de transferencia de datos
Funciones de control de transferencia de datos
Funciones de gestión de capa
Para poder realizar estas funciones, se necesitan de protocolos, tal y como nos pasa en la arquitectura actual. Pero recordamos que queremos tener los mínimos protocolos y lo más simple posible. Para minimizar la variabilidad entre protocolos dentro del DIF al mínimo, lo que se hace es separar entre mecanismo y policy.
Los mecanismos son las partes fijas en un protocolo. Por ejemplo, el acknowledgement (ACK); que es un tipo de mensaje que se utiliza para saber si un paquete ha llegado correctamente a su destino.
Policy es la parte del protocolo que cambia. Por ejemplo, cuando y cómo enviar un ACK es una policy.
Y con esta premisa de separar entre mecanismo y policy, nos sale que solamente con dos protocolos es suficiente para cubrir las tres funcionalidades del DIF: EFCP para transferencia y control de transferencia de datos, y CDAP para gestión de capa.
Nombres y direccionamiento
Sin entrar mucho en detalle, ya que de esto ya hemos hablado en el otro artículo, RINA plantea un esquema de nombres que facilita la movilidad, simplifica el enrutamiento de tráfico y proporciona multi-homing de manera nativa.
Figura 5: Estructura de nombres y direccionamento en RINA.
Como ya hemos discutido anteriormente, necesitamos que las aplicaciones tengan un nombre, y que lo conserven independientemente de donde se encuentren. Luego tenemos direcciones de nodo, que nos dan pistas sobre dónde viven las aplicaciones. A continuación mostramos una tabla comparativa con el sistema de nombres actual
Figura 6: Tabla comparativa.
Por último, tenemos las direcciones de punto de anclaje (point of attachment), que estas direcciones sí que nos dicen cómo llegar a donde viven las aplicaciones.
Conclusión
Si has llegado hasta al final, te habrás dado cuenta de que RINA proporciona una arquitectura bastante abstracta, y en consecuencia, el objetivo final de RINA es poder tener un framework que permita desarrollar protocolos y así poder simplificar las redes en general. Como he dicho en el principio del artículo, se puede aplicar RINA en ábmbitos concretos, como por ejemplo dentro de los centros de datos.
Figura 7: Future Internet and RIMA
Al ser una tecnología relativamente nueva, la idea es ir empezando con casos de usos muy sencillos y poco a poco irse moviendo a casos de usos más grandes y complejos. Os dejamos algunos enlaces que podrían ser interesantes.
Future Internet and RINA Architecture | EduTec&Cria: Charla de Eduard Grasa, la cual se ha usado de guía y referencia para escribir estos dos artículos. De hecho, estos dos artículos se podrían considerar como una síntesis/introducción de esta charla. Esta charla explica de manera muy entendedora y sencilla qué problemas tiene la arquitectura actual y cómo RINA puede solucionarlos.
IRATI: Es una implementación Open Source de RINA que tiene una Wiki bastante completa y documentación sobre RINA.
ETSI RINA Report: Este es el documento de estandarización de RINA en el que se explica de manera más técnica todos los detalles técnicos de RINA.
Saludos,
Autor: Bruno Ibáñez, Investigador de Ciberseguridad e IA en Ideas Locas y Sergio Giménez investigador de i2cat.