SlideShare a Scribd company logo
1 of 40
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 2013Benjamin Cabé
 
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 timeBenjamin 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 2018Alan 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 2018Jaime 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 SIPGenora Infotech
 
Workshop on Network Security
Workshop on Network SecurityWorkshop on Network Security
Workshop on Network SecurityUC San Diego
 
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.pptxAyeCS11
 
DCN-chapter1.pdf
DCN-chapter1.pdfDCN-chapter1.pdf
DCN-chapter1.pdfMakuBandar
 
Protecting Web Services from DDOS Attack
Protecting Web Services from DDOS AttackProtecting Web Services from DDOS Attack
Protecting Web Services from DDOS AttackPonraj
 
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
 
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
 
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
 
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
 
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
 
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)
 
Chap 1 Network Theory & Java Overview
Chap 1   Network Theory & Java OverviewChap 1   Network Theory & Java Overview
Chap 1 Network Theory & Java Overview
 

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 ContenedoresOpenDireito
 
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 IAOpenDireito
 
PostCall: Encuestas telefónicas post llamada
PostCall: Encuestas telefónicas post llamadaPostCall: Encuestas telefónicas post llamada
PostCall: Encuestas telefónicas post llamadaOpenDireito
 
Monitorea y controla oxígeno disuelto
Monitorea y controla oxígeno disueltoMonitorea y controla oxígeno disuelto
Monitorea y controla oxígeno disueltoOpenDireito
 
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 YuboxOpenDireito
 
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 BusinessOpenDireito
 
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 IoTOpenDireito
 
VoIP y la incapacidad auditiva
VoIP y la incapacidad auditivaVoIP y la incapacidad auditiva
VoIP y la incapacidad auditivaOpenDireito
 
Asterisk - el futuro es REST
Asterisk - el futuro es RESTAsterisk - el futuro es REST
Asterisk - el futuro es RESTOpenDireito
 
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 digitalesOpenDireito
 
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 ArtificialOpenDireito
 
Integrando encuestas automáticas con IsurveyX
Integrando encuestas automáticas con IsurveyXIntegrando encuestas automáticas con IsurveyX
Integrando encuestas automáticas con IsurveyXOpenDireito
 
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 ElastixOpenDireito
 
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 mundosOpenDireito
 
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 perfectaOpenDireito
 
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 ElastixOpenDireito
 
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

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 

Recently uploaded (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 

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