SlideShare a Scribd company logo
Decentralised Communication with
Matrix
matthew@matrix.org
http://www.matrix.org
The problem:
Users are locked into proprietary
communication apps.
They have no control over their
data or their privacy.
Worse still, each app is a closed
silo – forcing users to install
redundant apps and fragmenting
their comms.
I want to communicate with the
apps and services I trust.
6
Not be forced into specific
services chosen by my contacts.
7
If email gives me that flexibility,
why not VoIP and IM?
8
Enter Matrix
9
Open
Decentralised
Persistent
Eventually Consistent
Cryptographically Secure
Messaging Database
with JSON-over-HTTP API.
10
Matrix is for:
Group Chat (and 1:1)
WebRTC Signalling
Bridging Comms Silos
Internet of Things Data
…and anything else which needs to
pubsub persistent data to the world.
11
Matrix was built to liberate your
scrollback.
12
1st law of Matrix:
Conversation history and Group
comms are the 1st class citizens.
13
2nd law of Matrix:
No single party own your
conversations – they are shared
over all participants.
14
3rd law of Matrix:
All conversations may be
end-to-end encrypted.
15
Matrix is:
• Non-profit Open Source Project
• De-facto Open Standard HTTP APIs:
– Client <-> Server
– Server <-> Server
– Application Services <-> Server
• Apache-Licensed Open Source Reference Impls
– Server (Python/Twisted)
– Client SDKs (iOS, Android, JS, Angular, Python, Perl)
– Clients (Web, iOS, Android)
– Application Services (IRC, SIP, XMPP, Lync bridges)
• A whole ecosystem of 3rd party servers, clients & services
16
What does it look like?
17
Demo time!
http://matrix.org/blog/try-matrix-now
18
The Matrix Ecosystem
The Matrix Specification (Client/Server API)
client-side
server-side
Other Servers and
Services
Synapse
(Reference Matrix
Server)
Matrix Application
Services
Other Clients
Matrix iOS
Console
MatrixKit (iOS)
matrix-ios-sdk
Matrix
Web
Console
matrix-
angular-
sdk
matrix-js-sdk
Android Console
matrix-android-
sdk
matrix-
react-
sdk
Matrix Architecture
Clients
Home
Servers
Identity
Servers
Application
Servers
Functional Responsibility
• Clients: Talks simple HTTP APIs to homeservers to push
and pull messages and metadata. May be as thin or thick
a client as desired.
• Homeservers: Stores all the data for a user - the history
of the rooms in which they participate; their public
profile data.
• Application Services: Optional; delivers application layer
logic on top of Matrix (Gateways, Conferencing,
Archiving, Search etc). Can actively intercept messages if
required.
• Identity Servers: Trusted clique of servers (think DNS
root servers): maps 3rd party IDs to matrix IDs.
21
How does it work?
22
http://matrix.org/#about
The client-server API
To send a message:
curl -XPOST -d '{"msgtype":"m.text", "body":"hello"}'
"https://alice.com:8448/_matrix/client/api/v1/rooms/ROOM_
ID/send/m.room.message?access_token=ACCESS_TOKEN"
{
"event_id": "YUwRidLecu"
}
23
The client-server API
To set up a WebRTC call:
curl -XPOST –d '{
"version": 0, 
"call_id": "12345”, 
"offer": {
"type" : "offer”,
"sdp" : "v=0rno=- 658458 2 IN IP4 127.0.0.1…"
}
}'
"https://alice.com:8448/_matrix/client/api/v1/rooms/ROOM_
ID/send/m.call.invite?access_token=ACCESS_TOKEN"
{ "event_id": "ZruiCZBu” } 24
The client-server API
To persist some MIDI:
curl -XPOST –d '{
"note": "71",
"velocity": 68,
"state": "on",
"channel": 1,
"midi_ts": 374023441
}'
"https://alice.com:8448/_matrix/client/api/v1/rooms/ROOM_
ID/send/org.matrix.midi?access_token=ACCESS_TOKEN"
{ "event_id": “ORzcZn2” }
25
The server-server API
curl –XPOST –H ‘Authorization: X-Matrix origin=matrix.org,key=”898be4…”,sig=“j7JXfIcPFDWl1pdJz…”’ –d ‘{
"ts": 1413414391521,
"origin": "matrix.org",
"destination": "alice.com",
"prev_ids": ["e1da392e61898be4d2009b9fecce5325"],
"pdus": [{
"age": 314,
"content": {
"body": "hello world",
"msgtype": "m.text"
},
"context": "!fkILCTRBTHhftNYgkP:matrix.org",
"depth": 26,
"hashes": {
"sha256": "MqVORjmjauxBDBzSyN2+Yu+KJxw0oxrrJyuPW8NpELs"
},
"is_state": false,
"origin": "matrix.org",
"pdu_id": "rKQFuZQawa",
"pdu_type": "m.room.message",
"prev_pdus": [
["PaBNREEuZj", "matrix.org"]
],
"signatures": {
"matrix.org": {
"ed25519:auto": "jZXTwAH/7EZbjHFhIFg8Xj6HGoSI+j7JXfIcPFDWl1pdJz+JJPMHTDIZRha75oJ7lg7UM+CnhNAayHWZsUY3Ag"
}
},
"origin_server_ts": 1413414391521,
"user_id": "@matthew:matrix.org"
}]
}’ https://alice.com:8448/_matrix/federation/v1/send/916d630ea616342b42e98a3be0b74113 26
Application Services (AS)
• Extensible custom application logic
• They have privileged access to the server (granted
by the admin).
• They can subscribe to wide ranges of server traffic
(e.g. events which match a range of rooms, or a
range of users)
• They can masquerade as 'virtual users'.
• They can lazy-create 'virtual rooms'
• They can receive traffic by push.
27
Uses for AS API
• Gateways to other comms platforms
e.g.: all of Freenode is available at #freenode_#foo:matrix.org
• Data manipulation
– Filtering
– Translation
– Indexing
– Mining
– Visualisation
– Orchestration
• Application Logic (e.g. bots, IVR services)
• …
28
A trivial application service
import json, requests # we will use this later
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/transactions/<transaction>", methods=["PUT"])
def on_receive_events(transaction):
events = request.get_json()["events"]
for event in events:
print "User: %s Room: %s" % (event["user_id"], event["room_id"])
print "Event Type: %s" % event["type"]
print "Content: %s" % event["content"]
return jsonify({})
if __name__ == "__main__":
app.run()
29
Matrix Bridging with ASes
Existing App
Application
Service
3rd party
Server
3rd party
Clients
matrix-react-sdk
• All new web client SDK!
• Sensible separation of:
– HTTP API wrapper
– Matrix client state machine
– UI business logic
– UI look & feel (skin)
• Either customise per-component
• …or fork your own skin.
31
End to End Encryption with Olm
• Apache License C++11 implementation of an
Axolotl-style ratchet, exposing a C API.
• Axolotl is Open Whisper System's better-than-
OTR cryptographic ratchet, as used by
TextSecure, Pond, WhatsApp etc.
• Supports encrypted asynchronous group
communication.
• 130KB x86-64 .so, or 208KB of asm.js
32
33
Olm C API
Account
• Keys
Session
• Initial Key Exchange
Ratchet
• Encrypt
• Decrypt
Crypto
• Curve25519
• AES
• SHA256
Group chat
• Adds a 3rd type of ratchet, used to encrypt
group messages.
• Establish 'normal' 1:1 ratchets between all
participants in order to exchange the initial
secret for the group ratchet.
• All receivers share the same group ratchet
state to decrypt the room.
34
Flexible privacy with Olm
• Users can configure rooms to have:
– No ratchet (i.e. no crypto)
– Full PFS ratchet
– Selective ratchet
• Deliberately re-use ratchet keys to support paginating
partial eras of history.
• Up to participants to trigger the ratchet (e.g. when a
member joins or leaves the room)
– Per-message type ratchets
35
Current Progress
• Funded: May 2014
• Launched alpha: Sept 2014
• Entered beta: Dec 2014
• Stable v0.9 Beta: May 2015
• Crypto & React SDK, Jul 2015
• Aug 2015: Approaching 1.0...?
36
What's next?
• Rolling out E2E encryption
• Multi-way VoIP
• Lots more Application Services
• Landing V2 APIs
• Use 3rd party IDs by default
• Yet more performance work
• Spec polishing
• New server implementations!
37
We need help!!
38
• We need people to try running their own
servers and join the federation.
• We need people to run gateways to their
existing services
• We need feedback on the APIs.
• Consider native Matrix support for new apps
• Follow @matrixdotorg and spread the word!
39
Thank you!
matthew@matrix.org
http://matrix.org
@matrixdotorg
40

More Related Content

Similar to Construyendo un nuevo ecosistema para comunicaciones interoperables

Open source building blocks for the Internet of Things - Jfokus 2013
Open source building blocks for the Internet of Things - Jfokus 2013Open source building blocks for the Internet of Things - Jfokus 2013
Open source building blocks for the Internet of Things - Jfokus 2013
Benjamin Cabé
 
OWF12/Java Building an Open M2M community
OWF12/Java Building an Open M2M communityOWF12/Java Building an Open M2M community
OWF12/Java Building an Open M2M community
Paris Open Source Summit
 
Building an Open M2M community one step at a time
Building an Open M2M community one step at a timeBuilding an Open M2M community one step at a time
Building an Open M2M community one step at a time
Benjamin Cabé
 
Matrix, The Year To Date, Ben Parsons, TADSummit 2018
Matrix, The Year To Date, Ben Parsons, TADSummit 2018Matrix, The Year To Date, Ben Parsons, TADSummit 2018
Matrix, The Year To Date, Ben Parsons, TADSummit 2018
Alan Quayle
 
Microservices Practitioner Summit Jan '15 - Don't Build a Distributed Monolit...
Microservices Practitioner Summit Jan '15 - Don't Build a Distributed Monolit...Microservices Practitioner Summit Jan '15 - Don't Build a Distributed Monolit...
Microservices Practitioner Summit Jan '15 - Don't Build a Distributed Monolit...
Ambassador Labs
 
Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018
Jaime Martin Losa
 
Chat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIPChat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIP
Genora Infotech
 
Viloria osi layer4-7
Viloria osi layer4-7Viloria osi layer4-7
Viloria osi layer4-7
Jhoniel Viloria
 
Workshop on Network Security
Workshop on Network SecurityWorkshop on Network Security
Workshop on Network Security
UC San Diego
 
Mesh IoT Networks Explained
Mesh IoT Networks ExplainedMesh IoT Networks Explained
Mesh IoT Networks Explained
GlobalLogic Ukraine
 
Topic # 16 of outline Managing Network Services.pptx
Topic # 16 of outline Managing Network Services.pptxTopic # 16 of outline Managing Network Services.pptx
Topic # 16 of outline Managing Network Services.pptx
AyeCS11
 
DCN-chapter1.pdf
DCN-chapter1.pdfDCN-chapter1.pdf
DCN-chapter1.pdf
MakuBandar
 
Application Layer
Application LayerApplication Layer
Application Layer
ushabarad142
 
6. Chapter_2_1_newversion1.pptxasasasdasdasda
6. Chapter_2_1_newversion1.pptxasasasdasdasda6. Chapter_2_1_newversion1.pptxasasasdasdasda
6. Chapter_2_1_newversion1.pptxasasasdasdasda
UsamaMushtaq15
 
Block chain technology
Block chain technologyBlock chain technology
Block chain technology
Ponthota Viswanath Reddy
 
Protecting Web Services from DDOS Attack
Protecting Web Services from DDOS AttackProtecting Web Services from DDOS Attack
Protecting Web Services from DDOS Attack
Ponraj
 
Ex 1 chapter03-appliation-layer-tony_chen
Ex 1 chapter03-appliation-layer-tony_chenEx 1 chapter03-appliation-layer-tony_chen
Ex 1 chapter03-appliation-layer-tony_chen
Đô GiẢn
 
Ex 1 chapter03-appliation-layer-tony_chen
Ex 1 chapter03-appliation-layer-tony_chenEx 1 chapter03-appliation-layer-tony_chen
Ex 1 chapter03-appliation-layer-tony_chen
Đô GiẢn
 
Block chain technology
Block chain technology Block chain technology
Block chain technology
Ponthota Viswanath Reddy
 
Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)
Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)
Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)
Jakub Botwicz
 

Similar to Construyendo un nuevo ecosistema para comunicaciones interoperables (20)

Open source building blocks for the Internet of Things - Jfokus 2013
Open source building blocks for the Internet of Things - Jfokus 2013Open source building blocks for the Internet of Things - Jfokus 2013
Open source building blocks for the Internet of Things - Jfokus 2013
 
OWF12/Java Building an Open M2M community
OWF12/Java Building an Open M2M communityOWF12/Java Building an Open M2M community
OWF12/Java Building an Open M2M community
 
Building an Open M2M community one step at a time
Building an Open M2M community one step at a timeBuilding an Open M2M community one step at a time
Building an Open M2M community one step at a time
 
Matrix, The Year To Date, Ben Parsons, TADSummit 2018
Matrix, The Year To Date, Ben Parsons, TADSummit 2018Matrix, The Year To Date, Ben Parsons, TADSummit 2018
Matrix, The Year To Date, Ben Parsons, TADSummit 2018
 
Microservices Practitioner Summit Jan '15 - Don't Build a Distributed Monolit...
Microservices Practitioner Summit Jan '15 - Don't Build a Distributed Monolit...Microservices Practitioner Summit Jan '15 - Don't Build a Distributed Monolit...
Microservices Practitioner Summit Jan '15 - Don't Build a Distributed Monolit...
 
Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018
 
Chat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIPChat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIP
 
Viloria osi layer4-7
Viloria osi layer4-7Viloria osi layer4-7
Viloria osi layer4-7
 
Workshop on Network Security
Workshop on Network SecurityWorkshop on Network Security
Workshop on Network Security
 
Mesh IoT Networks Explained
Mesh IoT Networks ExplainedMesh IoT Networks Explained
Mesh IoT Networks Explained
 
Topic # 16 of outline Managing Network Services.pptx
Topic # 16 of outline Managing Network Services.pptxTopic # 16 of outline Managing Network Services.pptx
Topic # 16 of outline Managing Network Services.pptx
 
DCN-chapter1.pdf
DCN-chapter1.pdfDCN-chapter1.pdf
DCN-chapter1.pdf
 
Application Layer
Application LayerApplication Layer
Application Layer
 
6. Chapter_2_1_newversion1.pptxasasasdasdasda
6. Chapter_2_1_newversion1.pptxasasasdasdasda6. Chapter_2_1_newversion1.pptxasasasdasdasda
6. Chapter_2_1_newversion1.pptxasasasdasdasda
 
Block chain technology
Block chain technologyBlock chain technology
Block chain technology
 
Protecting Web Services from DDOS Attack
Protecting Web Services from DDOS AttackProtecting Web Services from DDOS Attack
Protecting Web Services from DDOS Attack
 
Ex 1 chapter03-appliation-layer-tony_chen
Ex 1 chapter03-appliation-layer-tony_chenEx 1 chapter03-appliation-layer-tony_chen
Ex 1 chapter03-appliation-layer-tony_chen
 
Ex 1 chapter03-appliation-layer-tony_chen
Ex 1 chapter03-appliation-layer-tony_chenEx 1 chapter03-appliation-layer-tony_chen
Ex 1 chapter03-appliation-layer-tony_chen
 
Block chain technology
Block chain technology Block chain technology
Block chain technology
 
Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)
Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)
Cotopaxi - IoT testing toolkit (3rd release - Black Hat Europe 2019 Arsenal)
 

More from OpenDireito

Kubernetes: Más Allá de la Orquestación de Contenedores
Kubernetes: Más Allá de la Orquestación de ContenedoresKubernetes: Más Allá de la Orquestación de Contenedores
Kubernetes: Más Allá de la Orquestación de Contenedores
OpenDireito
 
Identificación y Clasificación de Algas con IA
 Identificación y Clasificación de Algas con IA Identificación y Clasificación de Algas con IA
Identificación y Clasificación de Algas con IA
OpenDireito
 
PostCall: Encuestas telefónicas post llamada
PostCall: Encuestas telefónicas post llamadaPostCall: Encuestas telefónicas post llamada
PostCall: Encuestas telefónicas post llamada
OpenDireito
 
Monitorea y controla oxígeno disuelto
Monitorea y controla oxígeno disueltoMonitorea y controla oxígeno disuelto
Monitorea y controla oxígeno disuelto
OpenDireito
 
Control de aireadores eléctricos con Yubox
Control de aireadores eléctricos con YuboxControl de aireadores eléctricos con Yubox
Control de aireadores eléctricos con Yubox
OpenDireito
 
Todo lo que tienes que saber del API de WhatsApp Business
Todo lo que tienes que saber del API de WhatsApp BusinessTodo lo que tienes que saber del API de WhatsApp Business
Todo lo que tienes que saber del API de WhatsApp Business
OpenDireito
 
Monitoreo de Tanques de Combustible en Tiempo Real con IoT
Monitoreo de Tanques de Combustible en Tiempo Real con IoTMonitoreo de Tanques de Combustible en Tiempo Real con IoT
Monitoreo de Tanques de Combustible en Tiempo Real con IoT
OpenDireito
 
VoIP y la incapacidad auditiva
VoIP y la incapacidad auditivaVoIP y la incapacidad auditiva
VoIP y la incapacidad auditiva
OpenDireito
 
Asterisk - el futuro es REST
Asterisk - el futuro es RESTAsterisk - el futuro es REST
Asterisk - el futuro es REST
OpenDireito
 
Diseña tu estrategia de certificación con credenciales digitales
Diseña tu estrategia de certificación con credenciales digitalesDiseña tu estrategia de certificación con credenciales digitales
Diseña tu estrategia de certificación con credenciales digitales
OpenDireito
 
Detección temprana de sigatoka en banano usando Inteligencia Artificial
Detección temprana de sigatoka en banano usando Inteligencia ArtificialDetección temprana de sigatoka en banano usando Inteligencia Artificial
Detección temprana de sigatoka en banano usando Inteligencia Artificial
OpenDireito
 
Integrando encuestas automáticas con IsurveyX
Integrando encuestas automáticas con IsurveyXIntegrando encuestas automáticas con IsurveyX
Integrando encuestas automáticas con IsurveyX
OpenDireito
 
Asterisk Update
Asterisk UpdateAsterisk Update
Asterisk Update
OpenDireito
 
Elastix en hoteles, ¿Es posible?
Elastix en hoteles, ¿Es posible?Elastix en hoteles, ¿Es posible?
Elastix en hoteles, ¿Es posible?
OpenDireito
 
Novedades de Elastix
Novedades de ElastixNovedades de Elastix
Novedades de Elastix
OpenDireito
 
GUI o línea de comandos, puedes tener lo mejor de ambos mundos
GUI o línea de comandos, puedes tener lo mejor de ambos mundosGUI o línea de comandos, puedes tener lo mejor de ambos mundos
GUI o línea de comandos, puedes tener lo mejor de ambos mundos
OpenDireito
 
SIP2012: Es hora de reiniciar la PBX!
SIP2012: Es hora de reiniciar la PBX!SIP2012: Es hora de reiniciar la PBX!
SIP2012: Es hora de reiniciar la PBX!
OpenDireito
 
Hardware Digium y Elastix - una combinación perfecta
Hardware Digium y Elastix - una combinación perfectaHardware Digium y Elastix - una combinación perfecta
Hardware Digium y Elastix - una combinación perfecta
OpenDireito
 
Caso de estudio: Instalando 64 E1 con Elastix
Caso de estudio: Instalando 64 E1 con ElastixCaso de estudio: Instalando 64 E1 con Elastix
Caso de estudio: Instalando 64 E1 con Elastix
OpenDireito
 
Buenas prácticas para pequeños/medianos operadores de telefonía basados en Op...
Buenas prácticas para pequeños/medianos operadores de telefonía basados en Op...Buenas prácticas para pequeños/medianos operadores de telefonía basados en Op...
Buenas prácticas para pequeños/medianos operadores de telefonía basados en Op...
OpenDireito
 

More from OpenDireito (20)

Kubernetes: Más Allá de la Orquestación de Contenedores
Kubernetes: Más Allá de la Orquestación de ContenedoresKubernetes: Más Allá de la Orquestación de Contenedores
Kubernetes: Más Allá de la Orquestación de Contenedores
 
Identificación y Clasificación de Algas con IA
 Identificación y Clasificación de Algas con IA Identificación y Clasificación de Algas con IA
Identificación y Clasificación de Algas con IA
 
PostCall: Encuestas telefónicas post llamada
PostCall: Encuestas telefónicas post llamadaPostCall: Encuestas telefónicas post llamada
PostCall: Encuestas telefónicas post llamada
 
Monitorea y controla oxígeno disuelto
Monitorea y controla oxígeno disueltoMonitorea y controla oxígeno disuelto
Monitorea y controla oxígeno disuelto
 
Control de aireadores eléctricos con Yubox
Control de aireadores eléctricos con YuboxControl de aireadores eléctricos con Yubox
Control de aireadores eléctricos con Yubox
 
Todo lo que tienes que saber del API de WhatsApp Business
Todo lo que tienes que saber del API de WhatsApp BusinessTodo lo que tienes que saber del API de WhatsApp Business
Todo lo que tienes que saber del API de WhatsApp Business
 
Monitoreo de Tanques de Combustible en Tiempo Real con IoT
Monitoreo de Tanques de Combustible en Tiempo Real con IoTMonitoreo de Tanques de Combustible en Tiempo Real con IoT
Monitoreo de Tanques de Combustible en Tiempo Real con IoT
 
VoIP y la incapacidad auditiva
VoIP y la incapacidad auditivaVoIP y la incapacidad auditiva
VoIP y la incapacidad auditiva
 
Asterisk - el futuro es REST
Asterisk - el futuro es RESTAsterisk - el futuro es REST
Asterisk - el futuro es REST
 
Diseña tu estrategia de certificación con credenciales digitales
Diseña tu estrategia de certificación con credenciales digitalesDiseña tu estrategia de certificación con credenciales digitales
Diseña tu estrategia de certificación con credenciales digitales
 
Detección temprana de sigatoka en banano usando Inteligencia Artificial
Detección temprana de sigatoka en banano usando Inteligencia ArtificialDetección temprana de sigatoka en banano usando Inteligencia Artificial
Detección temprana de sigatoka en banano usando Inteligencia Artificial
 
Integrando encuestas automáticas con IsurveyX
Integrando encuestas automáticas con IsurveyXIntegrando encuestas automáticas con IsurveyX
Integrando encuestas automáticas con IsurveyX
 
Asterisk Update
Asterisk UpdateAsterisk Update
Asterisk Update
 
Elastix en hoteles, ¿Es posible?
Elastix en hoteles, ¿Es posible?Elastix en hoteles, ¿Es posible?
Elastix en hoteles, ¿Es posible?
 
Novedades de Elastix
Novedades de ElastixNovedades de Elastix
Novedades de Elastix
 
GUI o línea de comandos, puedes tener lo mejor de ambos mundos
GUI o línea de comandos, puedes tener lo mejor de ambos mundosGUI o línea de comandos, puedes tener lo mejor de ambos mundos
GUI o línea de comandos, puedes tener lo mejor de ambos mundos
 
SIP2012: Es hora de reiniciar la PBX!
SIP2012: Es hora de reiniciar la PBX!SIP2012: Es hora de reiniciar la PBX!
SIP2012: Es hora de reiniciar la PBX!
 
Hardware Digium y Elastix - una combinación perfecta
Hardware Digium y Elastix - una combinación perfectaHardware Digium y Elastix - una combinación perfecta
Hardware Digium y Elastix - una combinación perfecta
 
Caso de estudio: Instalando 64 E1 con Elastix
Caso de estudio: Instalando 64 E1 con ElastixCaso de estudio: Instalando 64 E1 con Elastix
Caso de estudio: Instalando 64 E1 con Elastix
 
Buenas prácticas para pequeños/medianos operadores de telefonía basados en Op...
Buenas prácticas para pequeños/medianos operadores de telefonía basados en Op...Buenas prácticas para pequeños/medianos operadores de telefonía basados en Op...
Buenas prácticas para pequeños/medianos operadores de telefonía basados en Op...
 

Recently uploaded

Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 

Recently uploaded (20)

Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 

Construyendo un nuevo ecosistema para comunicaciones interoperables

  • 3. Users are locked into proprietary communication apps. They have no control over their data or their privacy.
  • 4. Worse still, each app is a closed silo – forcing users to install redundant apps and fragmenting their comms.
  • 5.
  • 6. I want to communicate with the apps and services I trust. 6
  • 7. Not be forced into specific services chosen by my contacts. 7
  • 8. If email gives me that flexibility, why not VoIP and IM? 8
  • 11. Matrix is for: Group Chat (and 1:1) WebRTC Signalling Bridging Comms Silos Internet of Things Data …and anything else which needs to pubsub persistent data to the world. 11
  • 12. Matrix was built to liberate your scrollback. 12
  • 13. 1st law of Matrix: Conversation history and Group comms are the 1st class citizens. 13
  • 14. 2nd law of Matrix: No single party own your conversations – they are shared over all participants. 14
  • 15. 3rd law of Matrix: All conversations may be end-to-end encrypted. 15
  • 16. Matrix is: • Non-profit Open Source Project • De-facto Open Standard HTTP APIs: – Client <-> Server – Server <-> Server – Application Services <-> Server • Apache-Licensed Open Source Reference Impls – Server (Python/Twisted) – Client SDKs (iOS, Android, JS, Angular, Python, Perl) – Clients (Web, iOS, Android) – Application Services (IRC, SIP, XMPP, Lync bridges) • A whole ecosystem of 3rd party servers, clients & services 16
  • 17. What does it look like? 17
  • 19. The Matrix Ecosystem The Matrix Specification (Client/Server API) client-side server-side Other Servers and Services Synapse (Reference Matrix Server) Matrix Application Services Other Clients Matrix iOS Console MatrixKit (iOS) matrix-ios-sdk Matrix Web Console matrix- angular- sdk matrix-js-sdk Android Console matrix-android- sdk matrix- react- sdk
  • 21. Functional Responsibility • Clients: Talks simple HTTP APIs to homeservers to push and pull messages and metadata. May be as thin or thick a client as desired. • Homeservers: Stores all the data for a user - the history of the rooms in which they participate; their public profile data. • Application Services: Optional; delivers application layer logic on top of Matrix (Gateways, Conferencing, Archiving, Search etc). Can actively intercept messages if required. • Identity Servers: Trusted clique of servers (think DNS root servers): maps 3rd party IDs to matrix IDs. 21
  • 22. How does it work? 22 http://matrix.org/#about
  • 23. The client-server API To send a message: curl -XPOST -d '{"msgtype":"m.text", "body":"hello"}' "https://alice.com:8448/_matrix/client/api/v1/rooms/ROOM_ ID/send/m.room.message?access_token=ACCESS_TOKEN" { "event_id": "YUwRidLecu" } 23
  • 24. The client-server API To set up a WebRTC call: curl -XPOST –d '{ "version": 0, "call_id": "12345”, "offer": { "type" : "offer”, "sdp" : "v=0rno=- 658458 2 IN IP4 127.0.0.1…" } }' "https://alice.com:8448/_matrix/client/api/v1/rooms/ROOM_ ID/send/m.call.invite?access_token=ACCESS_TOKEN" { "event_id": "ZruiCZBu” } 24
  • 25. The client-server API To persist some MIDI: curl -XPOST –d '{ "note": "71", "velocity": 68, "state": "on", "channel": 1, "midi_ts": 374023441 }' "https://alice.com:8448/_matrix/client/api/v1/rooms/ROOM_ ID/send/org.matrix.midi?access_token=ACCESS_TOKEN" { "event_id": “ORzcZn2” } 25
  • 26. The server-server API curl –XPOST –H ‘Authorization: X-Matrix origin=matrix.org,key=”898be4…”,sig=“j7JXfIcPFDWl1pdJz…”’ –d ‘{ "ts": 1413414391521, "origin": "matrix.org", "destination": "alice.com", "prev_ids": ["e1da392e61898be4d2009b9fecce5325"], "pdus": [{ "age": 314, "content": { "body": "hello world", "msgtype": "m.text" }, "context": "!fkILCTRBTHhftNYgkP:matrix.org", "depth": 26, "hashes": { "sha256": "MqVORjmjauxBDBzSyN2+Yu+KJxw0oxrrJyuPW8NpELs" }, "is_state": false, "origin": "matrix.org", "pdu_id": "rKQFuZQawa", "pdu_type": "m.room.message", "prev_pdus": [ ["PaBNREEuZj", "matrix.org"] ], "signatures": { "matrix.org": { "ed25519:auto": "jZXTwAH/7EZbjHFhIFg8Xj6HGoSI+j7JXfIcPFDWl1pdJz+JJPMHTDIZRha75oJ7lg7UM+CnhNAayHWZsUY3Ag" } }, "origin_server_ts": 1413414391521, "user_id": "@matthew:matrix.org" }] }’ https://alice.com:8448/_matrix/federation/v1/send/916d630ea616342b42e98a3be0b74113 26
  • 27. Application Services (AS) • Extensible custom application logic • They have privileged access to the server (granted by the admin). • They can subscribe to wide ranges of server traffic (e.g. events which match a range of rooms, or a range of users) • They can masquerade as 'virtual users'. • They can lazy-create 'virtual rooms' • They can receive traffic by push. 27
  • 28. Uses for AS API • Gateways to other comms platforms e.g.: all of Freenode is available at #freenode_#foo:matrix.org • Data manipulation – Filtering – Translation – Indexing – Mining – Visualisation – Orchestration • Application Logic (e.g. bots, IVR services) • … 28
  • 29. A trivial application service import json, requests # we will use this later from flask import Flask, jsonify, request app = Flask(__name__) @app.route("/transactions/<transaction>", methods=["PUT"]) def on_receive_events(transaction): events = request.get_json()["events"] for event in events: print "User: %s Room: %s" % (event["user_id"], event["room_id"]) print "Event Type: %s" % event["type"] print "Content: %s" % event["content"] return jsonify({}) if __name__ == "__main__": app.run() 29
  • 30. Matrix Bridging with ASes Existing App Application Service 3rd party Server 3rd party Clients
  • 31. matrix-react-sdk • All new web client SDK! • Sensible separation of: – HTTP API wrapper – Matrix client state machine – UI business logic – UI look & feel (skin) • Either customise per-component • …or fork your own skin. 31
  • 32. End to End Encryption with Olm • Apache License C++11 implementation of an Axolotl-style ratchet, exposing a C API. • Axolotl is Open Whisper System's better-than- OTR cryptographic ratchet, as used by TextSecure, Pond, WhatsApp etc. • Supports encrypted asynchronous group communication. • 130KB x86-64 .so, or 208KB of asm.js 32
  • 33. 33 Olm C API Account • Keys Session • Initial Key Exchange Ratchet • Encrypt • Decrypt Crypto • Curve25519 • AES • SHA256
  • 34. Group chat • Adds a 3rd type of ratchet, used to encrypt group messages. • Establish 'normal' 1:1 ratchets between all participants in order to exchange the initial secret for the group ratchet. • All receivers share the same group ratchet state to decrypt the room. 34
  • 35. Flexible privacy with Olm • Users can configure rooms to have: – No ratchet (i.e. no crypto) – Full PFS ratchet – Selective ratchet • Deliberately re-use ratchet keys to support paginating partial eras of history. • Up to participants to trigger the ratchet (e.g. when a member joins or leaves the room) – Per-message type ratchets 35
  • 36. Current Progress • Funded: May 2014 • Launched alpha: Sept 2014 • Entered beta: Dec 2014 • Stable v0.9 Beta: May 2015 • Crypto & React SDK, Jul 2015 • Aug 2015: Approaching 1.0...? 36
  • 37. What's next? • Rolling out E2E encryption • Multi-way VoIP • Lots more Application Services • Landing V2 APIs • Use 3rd party IDs by default • Yet more performance work • Spec polishing • New server implementations! 37
  • 39. • We need people to try running their own servers and join the federation. • We need people to run gateways to their existing services • We need feedback on the APIs. • Consider native Matrix support for new apps • Follow @matrixdotorg and spread the word! 39