Meshtastic, un proyecto de red de comunicaciones descentralizada para zonas de difícil acceso

Meshtastic

Capturas de pantalla de Meshtastic en Android

Hace poco se dio a conocer la noticia del desarrollo de un proyecto que permite utilizar las radios LoRa «Long Range», una tecnología de comunicación inalámbrica de bajo consumo de energía y larga distancia, diseñada para permitir la comunicación de dispositivos en el Internet de las cosas (IoT) y otras aplicaciones que requieren una transmisión de datos eficiente y de larga distancia.

Con el nombre de «Meshtastic», este proyecto tiene la finalidad de ofrecer una plataforma de comunicación abierta con el objetivo de establecer una red de mensajería descentralizada y autosuficiente, en la cual cada nodo se comunica directamente con sus nodos vecinos, sin depender de enrutadores centralizados.

El proyecto se desarrolla bajo la pauta de utilizar los transceptores basados en el protocolo LoRa, lo que permite la transmisión de datos a larga distancia sin necesidad de licencias y con el plus de alcanzar velocidades de varios kilobits por segundo y distancias de hasta cientos de kilómetros.

Como tal, el proyecto no tiene la finalidad de ser utilizado para las comunicaciones de las personas en general, ya que como se mencionó, la velocidad de los datos enviados se limitan a kbps. Es por ello que esta iniciativa, se presenta como una solución ideal para organizar las comunicaciones en zonas de difícil acceso, operaciones de búsqueda y rescate, coordinación de grupos en actividades turísticas o deportivas, en zonas sin infraestructura o en condiciones de mala cobertura del territorio por operadores celulares.

Meshtastic

Funcionamiento de Meshtastic

Se menciona que el largo alcance de las transmisiones es gracias al uso de transceptores autónomos que transmiten mensajes y funcionan con paneles solares, y los propios participantes pueden tener dispositivos LoRa locales que transmiten señales y se controlan conectándose a teléfonos inteligentes a través de Bluetooth.

La red Meshtastic permite a cada usuario participante realizar varias acciones dentro del sistema. Estas acciones incluyen el envío y recepción de mensajes de texto, así como la utilización de herramientas de geolocalización. Gracias a la estructura de red en malla, los mensajes se transmiten a lo largo de una cadena, asegurando que todos los miembros del grupo puedan recibir mensajes incluso del participante más distante. Esto ocurre independientemente de la capacidad de establecer un canal de comunicación directa con dicho participante.

Además de ello, se destaca que se permite el envío tanto de mensajes de difusión, que son recibidos por todos los participantes, como de mensajes direccionados a un participante específico. Para garantizar la seguridad de las comunicaciones, los mensajes transmitidos se cifran mediante claves PSK preseleccionadas (clave precompartida) utilizando el algoritmo AES256.

En cuanto al protocolo de transmisión, su funcionamiento es sencillo: cada paquete se envía en modo transmisión, y las ondas se analizan para confirmar la recepción por parte de uno de los participantes. En caso de que no se reciba la confirmación, se realizan tres intentos de envío adicionales después de un tiempo de espera predeterminado. Cuando un paquete es recibido, se verifica si ha llegado en el pasado; en caso afirmativo, se ignora, y en caso contrario, se retransmite a otros participantes. Con cada transmisión del paquete, el contador de saltos disminuye, y cuando llega a cero, la retransmisión del paquete se detiene. Este enfoque asegura una comunicación confiable y eficiente en la red Meshtastic.

Por la parte de las características clave del proyecto se destacan las siguientes:

  • Mensajería Descentralizada
  • Geolocalización y GPS
  • Seguridad de Mensajes utilizando claves precompartidas (PSK) y el algoritmo AES256, garantizando la seguridad de la comunicación.
  • Largo alcance ( récord de 254 km por kboxlabs )
  • No se requiere teléfono para la comunicación en malla
  • Comunicación descentralizada: no se requiere enrutador dedicado
  • Excelente duración de la batería
  • Enviar y recibir mensajes de texto entre miembros de la malla.

Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

Para los interesados en el código del proyecto, deben saber que se ofrece el código para los transceptores y está disponible bajo la licencia GPLv3, y se han desarrollado aplicaciones móviles para plataformas Android e iOS, así como una interfaz web y una biblioteca Python para facilitar la automatización del envío y recepción de mensajes.

from Linux Adictos https://ift.tt/5CnopxK
via IFTTT

Vcc, un compilador basado en Clang diseñado para generar código ejecutable en Vulkan

logo de vcc

Vcc: el compilador de Vulkan Clang

En el panorama de las API de gráficos, los lenguajes de sombreado han enfrentado una limitación, pues a pesar de la posibilidad de escribir código en un subconjunto común entre GLSL, HLSL y C++, las restricciones actuales estas presentes.

Es por ello que nace Vcc (Vulkan Clang Compiler) el compilador Vulkan Clang, el cúal es un proyecto que estuvo en desarrollo durante 3 años, surge como una respuesta a estas limitaciones y desafíos. Este proyecto busca no solo superar las restricciones expresivas, sino eliminar el concepto mismo de lenguajes de sombreado.

Al incorporar la familia completa de lenguajes C/C++ a Vulkan, Vcc introduce características nunca antes vistas en los sombreadores de Vulkan, como punteros físicos, punteros genéricos, llamadas a funciones reales y un completo flujo de control.

Esta iniciativa busca cerrar la brecha de software entre las API de gráficos y de computación. Al hacer que Vulkan sea compatible con otras API de computación de GPU, Vcc se presenta como un paso importante hacia la unificación de la programación en gráficos y computación, alineándose con la adopción masiva y la calidad de implementación que caracterizan a Vulkan.

Sobre VCC

Vcc es un compilador basado en Clang diseñado para generar código ejecutable en Vulkan, tiene como objetivo, el posicionarse como un compilador capaz de traducir código C++ en una representación que pueda ejecutarse en GPU que soporten la API de gráficos Vulkan. A diferencia de los modelos de programación de GPU basados ​​en los lenguajes de sombreado GLSL y HLSL, Vcc toma la idea de eliminar por completo el uso de lenguajes de sombreado separados y brinda la capacidad de compilar directamente código C/C++ para Vulkan.

Aunque podría considerarse un competidor de GLSL y HLSL, la verdadera intención detrás de este proyecto va más allá, pues Vcc busca incorporar la familia de lenguajes C/C++ a Vulkan, presentando una serie de características en los sombreadores de Vulkan.

Vcc es simplemente una interfaz para Shady, un IR y un compilador diseñado para ampliar SPIR-V con soporte para las construcciones antes mencionadas. Shady se presenta como un IR relativamente convencional e incluye soporte para analizar LLVM IR. Maneja la reducción y emulación de todas las funciones adicionales que no se encuentran en las versiones actuales de SPIR-V 3 .

Por supuesto, hay una serie de características únicas que sólo se encuentran en los sombreadores. Estos se exponen en Vcc mediante intrínsecos y anotaciones, lo que permite escribir código que interactúe con las diversas características del canal Vulkan.

El proceso de compilación en Vcc implica la utilización de los componentes del proyecto LLVM y Clang como interfaz. Para su ejecución en la GPU, Vcc desarrolla su propia representación de sombreador intermedia «Shady», junto con un compilador dedicado para convertir el código a esta representación. Este enfoque permite la compilación de código C/C++ estándar y se complementa con funciones integradas específicas para aprovechar las capacidades de la GPU.

Vcc destaca por admitir funciones nativas de C/C++ para controlar el flujo del programa, incluso permitiendo el uso de la instrucción «goto». Asimismo, proporciona la capacidad de llamar funciones, ejecutar funciones de manera recursiva y utilizar diversos tipos de punteros, como punteros físicos, punteros etiquetados y punteros de función. Además, se facilita la realización de operaciones aritméticas en punteros y la determinación de diseños de tipos en la memoria.

La representación intermedia de sombreador Shady se basa en SPIR-V 3 y se expande para admitir construcciones especiales que son inherentes a las características de C/C++. La emulación se utiliza para implementar capacidades avanzadas que no son directamente aplicables a SPIR-V. Vcc incluye funciones y anotaciones integradas para permitir que los programas utilicen de manera eficiente las capacidades específicas de los sombreadores, proporcionando así un entorno versátil y potente para el desarrollo de aplicaciones GPU.

Finalmente, cabe mencionar que no todo es color de rosa y es esencial tener en cuenta algunas limitaciones de la implementación. Por ejemplo, Vcc no admite excepciones de C++, y la funcionalidad de malloc/free no está disponible. Además, existe una restricción en la portabilidad de funciones y punteros entre el sistema host y la GPU. Estas consideraciones son cruciales al planificar el desarrollo de aplicaciones que utilicen Vcc para garantizar una implementación eficaz y libre de problemas.

Si estás interesado en poder conocer más al respecto, puedes consular el sitio web y para los interesados en el código, deben saber que está disponible aquí.

from Linux Adictos https://ift.tt/gDsnb8d
via IFTTT

LeftoverLocals, una vulnerabilidad en GPUS que permite el robo de datos 

vulnerabilidad

Si se explotan, estas fallas pueden permitir a los atacantes obtener acceso no autorizado a información confidencial o, en general, causar problemas

Hace poco, los investigadores de Trail of Bits (una firma de seguridad) dieron a conocer mediante una publicación de blog que detectaron un problema en las GPU de AMD, Apple, Qualcomm e Imagination, que hace posible que alguien obtenga datos de la memoria de la tarjeta gráfica, incluso si fueron creados por un programa diferente.

Bautizada como LeftoverLocals, esta vulnerabilidad afecta a las unidades de procesamiento de gráficos y con lo cual un atacante puede robar una cantidad significativa de datos.

Sobre LeftoverLocals

Catalogada ya bajo «CVE-2023-4969» y con una puntación de «8», hacen de LeftoverLocals, es una vulnerabilidad sumamente peligrosa, ya que permite la recuperación de datos de la memoria local de la GPU, que persisten después de que se haya ejecutado otro proceso y podrían contener información sensible.

Lo que hace de LeftoverLocals una vulnerabilidad peligrosa, es que afecta a una variedad de dispositivos ampliamente utilizados, muchos de los cuales seguían sin parchear y que puede ser explotada en entornos multiusuario, donde controladores para diferentes usuarios se ejecutan en la misma GPU, además de que podría ser explotada por malware para monitorear la actividad de los procesos que se ejecutan en la GPU, identificando datos procesados por el kernel de la GPU.

LeftoverLocals surge debido a un aislamiento insuficiente de la memoria local de la GPU y la incapacidad de limpiar dicha memoria después de la ejecución de procesos en la GPU. Esto permite que un proceso malicioso identifique datos residuales en la memoria local después de que otro proceso se ha ejecutado o lea datos de un proceso actualmente en ejecución.

Se menciona que, la esencia de LeftoverLocals radica en memoria local en una GPU que actúa como una caché para almacenar cálculos intermedios y puede variar en tamaño desde decenas de kilobytes hasta varios megabytes para cada unidad informática. El ataque implica ejecutar un controlador (kernel) en la GPU que copia periódicamente el contenido de la memoria local disponible en la memoria global (VRAM). Dado que la memoria local no se borra al cambiar entre procesadores en la GPU y se comparte entre diferentes procesos dentro de la misma unidad de cálculo de la GPU, puede contener datos residuales de otros procesos.

Con la finalidad de probar la vulnerabilidad, los investigadores de Trail of Bits han desarrollado algunos prototipos de exploits para diferentes GPU, utilizando las API OpenCL, Vulkan y Metal para acceder a la GPU. Aunque llevar a cabo un ataque desde un navegador a través de WebGPU es difícil debido a las comprobaciones dinámicas de límites de matriz agregadas por WebGPU, los investigadores han demostrado cómo la vulnerabilidad puede utilizarse para determinar datos de salida de otros usuarios y crear canales de comunicación ocultos entre diferentes procesos.

Ademas de ello, se menciona que la cantidad de datos filtrados depende del marco específico de la GPU y del tamaño de su memoria local. Por ejemplo, la relativamente grande AMD Radeon RX 7900 XT pierde alrededor de 5.5 MB o alrededor de 181 MB por cada consulta LLM, según los investigadores.

Dado que las GPU se utilizan cada vez más para acelerar las aplicaciones de inteligencia artificial y aprendizaje automático, los investigadores advirtieron que fallas como LeftoverLocals podrían convertirse en un objetivo importante.

«En general, la introducción del aprendizaje automático plantea nuevas superficies de ataque que los modelos de amenazas tradicionales no tienen en cuenta y que pueden conducir a un acceso implícito y explícito a datos, parámetros del modelo o resultados resultantes, aumentando la superficie de ataque general del sistema», señala el informe. escribieron los investigadores.

Trail of Bits señaló que se han implementado soluciones para esta vulnerabilidad en algunos dispositivos de Apple, y se espera una actualización de controladores de AMD en marzo, por su parte Qualcomm ha informado que ha solucionado el problema para la GPU Adreno a630 en la actualización de firmware 2.07, mientras que Imagination ha proporcionado una solución en el nuevo DDK 23.3 lanzado en diciembre.

Por otra parte, se menciona que no se ven afectadas las GPU de NVIDIA, Intel y ARM. En los controladores OpenCL de código abierto de Mesa para GPU AMD, la memoria se borra después de cada inicio del kernel, pero este método se considera ineficaz en algunos casos.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

from Linux Adictos https://ift.tt/7UbRWYv
via IFTTT