Matrix (protocolo)
# Matrix (protocolo)

Matrix es un protocolo abierto de mensajería instantánea. Está diseñado para permitir a los usuarios comunicarse vía charla en línea, voz encima IP, y videochat.

De una perspectiva técnica, es un protocolo de comunicaciones de capa de aplicación para comunicación federativo en tiempo real. Proporciona API HTTP e implementaciones de referencia del código abierto para distribuir de forma segura y persistir mensajes en formato JSON sobre una federación abierta de servidores. Pueda integrar con los servicios web estándares a través de WebRTC, facilitando aplicaciones navegador-a-navegador.

## Protocolo

Matrix se centra en casos de uso como la voz sobre IP (VoIP), la Internet de las cosas y la mensajería instantánea, incluida la comunicación de grupo, junto con un objetivo a más largo plazo de ser un sistema genérico de mensajería y sincronización de datos para la web. El protocolo apoya la seguridad y la replicación, manteniendo un historial completo de conversaciones, sin puntos únicos de control o fracaso. Los servicios de comunicación existentes pueden integrarse con el ecosistema Matrix.

El software cliente está disponible para mensajería instantánea (IM), voz sobre IP (VoIP) e Internet de las cosas (IoT).

El estándar Matrix especifica las API HTTP RESTful para transmitir y replicar datos JSON de forma segura entre clientes, servidores y servicios con capacidad Matrix. Los clientes envían los datos poniéndolos en una 'sala' de su servidor, que luego replica los datos en todos los servidores Matrix que participan en esta 'sala'. Estos datos son firmados usando una firma de estilo git para mitigar la manipulación, y el tráfico federado es cifrado con HTTPS y firmado con la clave privada de cada servidor para evitar la falsificación. La replicación sigue una semántica de consistencia eventual, permitiendo que los servidores funcionen incluso si están desconectados o después de la pérdida de datos mediante la re-sincronización de la historia que falta de otros servidores participantes.

La biblioteca de Olm proporciona un cifrado opcional de extremo a extremo en cada habitación mediante la implementación de un algoritmo de doble trinquete, que puede garantizar que los datos de la conversación en reposo solo sean legibles por los participantes de la habitación. Con su configuración, los datos transmitidos por Matrix solo son visibles como texto cifrado para los servidores de Matrix, y solo pueden ser descifrados por los participantes autorizados de la sala. Las bibliotecas Olm y Megolm (una ampliación de Olm para adaptarse mejor a la necesidad de salas más grandes) han sido objeto de un examen criptográfico por el Grupo NCC, cuyas conclusiones están a disposición del público, y han sido abordadas por el equipo de Matrix. El examen fue patrocinado por el Open Technology Fund.

## Puentes

Matrix soporta el enlace de mensajes de diferentes aplicaciones de chat en salas Matrix. Estos puentes son programas que se ejecutan en el servidor y comunicarse con otros servidores que no son matrix.

Actualmente hay puentes para:

* Telegram
* Discord
* Gitter
* Slack/Mattermost
* IRC
* WhatsApp

Pero todos están en varias etapas de finalización.

## Clientes

Element es la implementación de referencia de un cliente. Muchos otros clientes, bots, puentes, servidores y otras implementaciones del protocolo Matrix existen también.

