Cómo diseñar chats grupales en sistemas descentralizados: el caso de Kiyeovo

Fuentes: How should group chats work in decentralized systems?

Kiyeovo es una aplicación de mensajería P2P descentralizada para escritorio cuyo autor detalla en este artículo los retos técnicos de implementar chats grupales sin servidor central. La pieza compara cuatro modelos posibles y explica la solución adoptada, describiendo los compromisos (tradeoffs) asumidos.

¿Por qué cuesta tanto? Con un servidor central, la plataforma responde de forma fiable quién está en el grupo, qué clave cifra los mensajes, en qué orden llegan y qué se perdió mientras un usuario estaba offline. Apps como Signal o Matrix mantienen el contenido cifrado de extremo a extremo, pero delegan esa coordinación en servidores. Sin esa pieza, no hay un «lugar» que conozca el roster, ordene los eventos ni guarde buzones 24/7.

El artículo repasa las alternativas descartadas: mantener un servidor coordinador, MLS/TreeKEM (RFC 9420, muy escalable pero pensado para grupos grandes y dependiente de un servicio de entrega), pertenencia sin líder (convergencia compleja ante particiones) y pertenencia fija estilo Briar. Cada una tiene un inconveniente decisivo para un límite de 10 miembros por grupo.

La solución de Kiyeovo se apoya en un único creador del grupo identificado por una clave Ed25519, que es el único que invita y expulsa. Las claves se rotan por epoch: cada cambio de membresía genera una versión nueva con clave de 32 bytes sellada individualmente para cada miembro. El estado se publica en una DHT como log append-only con registros encadenados por hash, y el orden offline se gestiona con secuencias por emisor en buckets también por emisor. El propio autor señala las limitaciones: el creador es punto único de fallo y no hay forward secrecy continua dentro de una epoch estable.