SlideShare a Scribd company logo
ProjectTox
Free as in freedom Skype
replacement
Wei-Ning Huang (AZ)
About the Speaker
• 正在水深火熱中的碩二學生
• 熱愛Python及Open Source
• Involved open source projects:
o Gummi LaTeX Editor
o cppman
o PyTox
o ProjectTox-Core
o Toxic
o jToxcore
o …
• More info: http://azhuang.me
Outline
• What is Tox?
• Functionality
• Architecture and Design
• Pitfalls and Solutions
• In Progress Features
• Client and Bindings
• Live Demo
What is anyway?
What is anyway?
• FOSS messaging network, supports A/V (GPLv3)
What is anyway?
• FOSS messaging network, supports A/V (GPLv3)
• Decentralized architecture
What is anyway?
• FOSS messaging network, supports A/V (GPLv3)
• Decentralized architecture
• End-to-end encryption
What is anyway?
• FOSS messaging network, supports A/V (GPLv3)
• Decentralized architecture
• End-to-end encryption
• Configuration free (does not require registration)
What is anyway?
• FOSS messaging network, supports A/V (GPLv3)
• Decentralized architecture
• End-to-end encryption
• Configuration free (does not require registration)
• Secure and easy to use
What is anyway?
• FOSS messaging network, supports A/V (GPLv3)
• Decentralized architecture
• End-to-end encryption
• Configuration free (does not require registration)
• Secure and easy to use
• A Skype replacement
Why are we doing this?
Why are we doing this?
Why are we doing this?
Why are we doing this?
4chan/g/
Why are we doing this?
4chan/g/
Why are we doing this?
Why are we doing this?
Why are we doing this?
馬卡茸表示:如果沒做錯事,就不用怕監聽!
圖片來自插畫家謝立聖
Why are we doing this?
馬卡茸表示:如果沒做錯事,就不用怕監聽!
圖片來自插畫家謝立聖
???
Why are we doing this?
馬卡茸表示:如果沒做錯事,就不用怕監聽!
圖片來自插畫家謝立聖
???
Why are we doing this?
馬卡茸表示:如果沒做錯事,就不用怕監聽!
圖片來自插畫家謝立聖
憲法第十二條:「人民有祕密通訊之自由」
???
Why are we doing this?
Why are we doing this?
• We want a free(as in Freedom) and secure
alternative for , since it is “Microsofted”....
Why are we doing this?
• We want a free(as in Freedom) and secure
alternative for , since it is “Microsofted”....
• "We don't want to be the next secure chatting
program, we want to be the next secure chatting
program that people actually use." - Someone on
IRC
Why are we doing this?
• We want a free(as in Freedom) and secure
alternative for , since it is “Microsofted”....
• "We don't want to be the next secure chatting
program, we want to be the next secure chatting
program that people actually use." - Someone on
IRC
• Current secure chat programs aren't easy to use,
at least not for our parents and grandparents
normal people
Who started this?
Who started this?
• irungentoo
o Real identity is a mystery :P
o Most of the code is implemented by him
Who started this?
• irungentoo
o Real identity is a mystery :P
o Most of the code is implemented by him
• Project started up Jun 23, 2013
Who started this?
• irungentoo
o Real identity is a mystery :P
o Most of the code is implemented by him
• Project started up Jun 23, 2013
• There are currently about 10 active tox.im
developers, including me.
Architecture and Design
Architecture and Design
• Separated core and client, Tox is a library.
Architecture and Design
• Separated core and client, Tox is a library.
• Current implemented features in core:
Architecture and Design
• Separated core and client, Tox is a library.
• Current implemented features in core:
o Text messages
• Read receipt
• Typing status
Architecture and Design
• Separated core and client, Tox is a library.
• Current implemented features in core:
o Text messages
• Read receipt
• Typing status
o File transfer (way faster than Skype)
Architecture and Design
• Separated core and client, Tox is a library.
• Current implemented features in core:
o Text messages
• Read receipt
• Typing status
o File transfer (way faster than Skype)
o Group chat (IRC-like, currently invitation only)
Architecture and Design
• Separated core and client, Tox is a library.
• Current implemented features in core:
o Text messages
• Read receipt
• Typing status
o File transfer (way faster than Skype)
o Group chat (IRC-like, currently invitation only)
o Audio / Video call support
• Currently only 1-to-1 call supported
• 1-to-many and many-to-many support on the way!
Architecture and Design
• Separated core and client, Tox is a library.
• Current implemented features in core:
o Text messages
• Read receipt
• Typing status
o File transfer (way faster than Skype)
o Group chat (IRC-like, currently invitation only)
o Audio / Video call support
• Currently only 1-to-1 call supported
• 1-to-many and many-to-many support on the way!
o All communication between clients are encrypted.
DHT
DHT
• Distributed Hash Table similar to BitTorrent
DHT
• Distributed Hash Table similar to BitTorrent
• Hash table contains ID to IP-Port mapping
DHT
• Distributed Hash Table similar to BitTorrent
• Hash table contains ID to IP-Port mapping
Bootstrap
Server
Client
NAT
Client Client
LAN Discovery
Client
Client
Boostrap
Hole punching
NAT
Friend Requests
Friend Requests
• Friend requests are routed between clients
Friend Requests
• Friend requests are routed between clients
• Client list or a list of clients whose ID are
mathematically (XOR) closest to us
Friend Requests
• Friend requests are routed between clients
• Client list or a list of clients whose ID are
mathematically (XOR) closest to us
Alice
Jack
Lucy
Bob
Request
Request
Got Alice’s IP_Port
Using the UDP Protocal
• Using UDP, easier for hole punching
Using the UDP Protocal
• Using UDP, easier for hole punching
• A Lossless UDP protocol on top of UDP
Using the UDP Protocal
• Using UDP, easier for hole punching
• A Lossless UDP protocol on top of UDP
• Allow packet drop for A/V data packet
Using the UDP Protocal
• Using UDP, easier for hole punching
• A Lossless UDP protocol on top of UDP
• Allow packet drop for A/V data packet
• NAT Traversal: Most NAT works, but symmetric
NAT are problematic for now
Encryption
• Using Elliptic Curve Cryptography
o Short key length, but still secure
Encryption
• Using Elliptic Curve Cryptography
o Short key length, but still secure
• Using NaCl (Networking and Cryptography library)
Encryption
• Using Elliptic Curve Cryptography
o Short key length, but still secure
• Using NaCl (Networking and Cryptography library)
o libsodium is prefered
Encryption
• Using Elliptic Curve Cryptography
o Short key length, but still secure
• Using NaCl (Networking and Cryptography library)
o libsodium is prefered
o crypto_box: curve25519xsalsa20poly1305
• curve25519 for Key exchange
• xsalsa20 for encryption
• poly1305 for message authentication
Encryption
• Using Elliptic Curve Cryptography
o Short key length, but still secure
• Using NaCl (Networking and Cryptography library)
o libsodium is prefered
o crypto_box: curve25519xsalsa20poly1305
• curve25519 for Key exchange
• xsalsa20 for encryption
• poly1305 for message authentication
• ID == Public Key
o Example ID:
4E9D1B82DEE3BD3D4DDA62190873EA40737251A4
3445E4D517E66230BC4507233533EDD01F24
Pitfalls and Solutions
Pitfalls and Solutions
• Attack against DHT
o Sybil attacks: attacker with large resource (e.g.
governments) can create a large number of pseudo
nodes that does nothing or disrupt network.
Pitfalls and Solutions
• Attack against DHT
o Sybil attacks: attacker with large resource (e.g.
governments) can create a large number of pseudo
nodes that does nothing or disrupt network.
• Metadata Leaking
o When routing friend requests, nodes leaks information
about the request’s ID and IP mapping.
o Possible to identify a users’s real identity with IP
Pitfalls and Solutions
• Attack against DHT
o Sybil attacks: attacker with large resource (e.g.
governments) can create a large number of pseudo
nodes that does nothing or disrupt network.
• Metadata Leaking
o When routing friend requests, nodes leaks information
about the request’s ID and IP mapping.
o Possible to identify a users’s real identity with IP
• How do we safely exchange ID (Public Key)
o Key being swap by a MITM?
Solutions
• Attack against DHT
o Periodically check all client’s behavior to see if it’s a
bad node.
o The criteria of a good node is strict.
Solutions
• Attack against DHT
o Periodically check all client’s behavior to see if it’s a
bad node.
o The criteria of a good node is strict.
• Metadata Leaking
o Don’t use their long term keypair in DHT, generate a
temporary one when sending friend requests.
o Onion routing for friend requests
Solutions
• Attack against DHT
o Periodically check all client’s behavior to see if it’s a
bad node.
o The criteria of a good node is strict.
• Metadata Leaking
o Don’t use their long term keypair in DHT, generate a
temporary one when sending friend requests.
o Onion routing for friend requests
• How do we safely exchange ID (Public Key)
o DNS lookup!
DNS User Discovery
DNS User Discovery
• Use DNS TXT record to store the ID, for example:
o tox://tox1@azhuang.me will be mapped to at TXT record
‘tox1._tox.azhuang.me’
DNS User Discovery
• Use DNS TXT record to store the ID, for example:
o tox://tox1@azhuang.me will be mapped to at TXT record
‘tox1._tox.azhuang.me’
o ‘v=tox1;id=4E9D1B82DEE3BD3D4DDA62190873EA40
737251A43445E4D517E66230BC4507233533EDD01F2
4’
DNS User Discovery
• Use DNS TXT record to store the ID, for example:
o tox://tox1@azhuang.me will be mapped to at TXT record
‘tox1._tox.azhuang.me’
o ‘v=tox1;id=4E9D1B82DEE3BD3D4DDA62190873EA40
737251A43445E4D517E66230BC4507233533EDD01F2
4’
• To prevent DNS poisoning or MITM, use the
tox2 protocol (requires a extra pin):
o 'v=tox2;pub=4E9D1B82DEE3BD3D4DDA62190873EA407372
51A43445E4D517E66230BC450723;check=1F24‘
DNS User Discovery
• Use DNS TXT record to store the ID, for example:
o tox://tox1@azhuang.me will be mapped to at TXT record
‘tox1._tox.azhuang.me’
o ‘v=tox1;id=4E9D1B82DEE3BD3D4DDA62190873EA40
737251A43445E4D517E66230BC4507233533EDD01F2
4’
• To prevent DNS poisoning or MITM, use the
tox2 protocol (requires a extra pin):
o 'v=tox2;pub=4E9D1B82DEE3BD3D4DDA62190873EA407372
51A43445E4D517E66230BC450723;check=1F24‘
• tox.se will be available for the public 
In Progress Features
In Progress Features
• DHT Hardening
o Research for more attach patterns
In Progress Features
• DHT Hardening
o Research for more attach patterns
• TCP Server
o Route traffic for clients behind symmetric NAT or
enterprise firewalls
o Act like a “Super node” in the Skype network
In Progress Features
• DHT Hardening
o Research for more attach patterns
• TCP Server
o Route traffic for clients behind symmetric NAT or
enterprise firewalls
o Act like a “Super node” in the Skype network
• A/V improvements
o Congestion control and variable bitrate support
o A/V synchronization
Clients and Bindings
Clients and Bindings
Clients and Bindings
• Support most platforms
Clients and Bindings
• Support most platforms
o Windows, Linux, Mac
• Toxic (Ncurses CLI), has audio call support
• Venom (Vala with GTK+)
• Poison (MacOS only)
Clients and Bindings
• Support most platforms
o Windows, Linux, Mac
• Toxic (Ncurses CLI), has audio call support
• Venom (Vala with GTK+)
• Poison (MacOS only)
o Mobile
• AnTox (Android), supports QR code scanning
• Toxicity (iOS)
Clients and Bindings
• Support most platforms
o Windows, Linux, Mac
• Toxic (Ncurses CLI), has audio call support
• Venom (Vala with GTK+)
• Poison (MacOS only)
o Mobile
• AnTox (Android), supports QR code scanning
• Toxicity (iOS)
• Language bindings:
o Python: PyTox (full A/V support)
o jTorecore: used in Antox
How to use?
• Just launch any client, and it will generate a
public/private key pair for you
How to use?
• Just launch any client, and it will generate a
public/private key pair for you
• No login required
How to use?
• Just launch any client, and it will generate a
public/private key pair for you
• No login required
• Send your public key to you friends
How to use?
• Just launch any client, and it will generate a
public/private key pair for you
• No login required
• Send your public key to you friends
• Add you friends with their public key
How to use?
• Just launch any client, and it will generate a
public/private key pair for you
• No login required
• Send your public key to you friends
• Add you friends with their public key
• Start chatting!
PyTox
PyTox
• CDD (Conference Driven Developemnt)
PyTox
• CDD (Conference Driven Developemnt)
• No A/V support 2 days ago…
o The video implementation in core even has some critical
bugs
PyTox
• CDD (Conference Driven Developemnt)
• No A/V support 2 days ago…
o The video implementation in core even has some critical
bugs
• Full A/V support implemented before OSDC.tw!
PyTox
• CDD (Conference Driven Developemnt)
• No A/V support 2 days ago…
o The video implementation in core even has some critical
bugs
• Full A/V support implemented before OSDC.tw!
• Leverage the power of Python
o An EchoBot can be implement in less than 50 lines of
Python code
o SyncBot: a PoC of PyTox, syncing messages between
Tox groupchat and freenode #tox-ontopic
PyTox
Live Demo
Join Us!
• Wiki:
o http://wiki.tox.im/
• Github:
o ProjectTox-Core:
https://github.com/irungentoo/ProjectTox-Core
o PyTox: https://github.com/aitjcize/PyTox
• Freenode IRC
o #tox, #tox-dev, #tox-ontopic
Ad

More Related Content

What's hot (20)

Deep drive into rust programming language
Deep drive into rust programming languageDeep drive into rust programming language
Deep drive into rust programming language
Vigneshwer Dhinakaran
 
Passive Intelligence Gathering and Analytics - It's All Just Metadata!
Passive Intelligence Gathering and Analytics - It's All Just Metadata!Passive Intelligence Gathering and Analytics - It's All Just Metadata!
Passive Intelligence Gathering and Analytics - It's All Just Metadata!
CTruncer
 
I believe in rust
I believe in rustI believe in rust
I believe in rust
Reidar Sollid
 
Monorepo at Pinterest
Monorepo at PinterestMonorepo at Pinterest
Monorepo at Pinterest
Suman Karumuri
 
MozillaPH Rust Users Group Kick Off Meeting
MozillaPH Rust Users Group Kick Off MeetingMozillaPH Rust Users Group Kick Off Meeting
MozillaPH Rust Users Group Kick Off Meeting
Robert 'Bob' Reyes
 
NSLogger - Cocoaheads Paris Presentation - English
NSLogger - Cocoaheads Paris Presentation - EnglishNSLogger - Cocoaheads Paris Presentation - English
NSLogger - Cocoaheads Paris Presentation - English
Florent Pillet
 
Symfony2 - A Short Introduction
Symfony2 - A Short IntroductionSymfony2 - A Short Introduction
Symfony2 - A Short Introduction
Andy Grunwald
 
MozillaPH Rust Hack & Learn Session 2
MozillaPH Rust Hack & Learn Session 2MozillaPH Rust Hack & Learn Session 2
MozillaPH Rust Hack & Learn Session 2
Robert 'Bob' Reyes
 
Profile all the things! - Capital Go 2017
 Profile all the things! - Capital Go 2017 Profile all the things! - Capital Go 2017
Profile all the things! - Capital Go 2017
John Potocny
 
SPDY
SPDYSPDY
SPDY
Daniel Stenberg
 
Using Wildcards with rsyslog's File Monitor imfile
Using Wildcards with rsyslog's File Monitor imfileUsing Wildcards with rsyslog's File Monitor imfile
Using Wildcards with rsyslog's File Monitor imfile
Rainer Gerhards
 
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
Tom Limoncelli
 
Joomladay denmark-2010-16
Joomladay denmark-2010-16Joomladay denmark-2010-16
Joomladay denmark-2010-16
JoomlalBlogger / Kristoffer Sandven
 
Python workshop
Python workshopPython workshop
Python workshop
Marie Behzadi
 
From NodeJS to Rust
From NodeJS to RustFrom NodeJS to Rust
From NodeJS to Rust
Bastian Gruber
 
Атаки на видеоконвертеры: год спустя
Атаки на видеоконвертеры: год спустяАтаки на видеоконвертеры: год спустя
Атаки на видеоконвертеры: год спустя
Positive Hack Days
 
Connected Devices, MozVR & Firefox Developer Tools
Connected Devices, MozVR & Firefox Developer ToolsConnected Devices, MozVR & Firefox Developer Tools
Connected Devices, MozVR & Firefox Developer Tools
Robert 'Bob' Reyes
 
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
Puppet
 
It is easy contributing to Open Source - ECLIPSE CON 2020
It is easy contributing to Open Source - ECLIPSE CON 2020It is easy contributing to Open Source - ECLIPSE CON 2020
It is easy contributing to Open Source - ECLIPSE CON 2020
César Hernández
 
Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorial
Ánh Nguyễn
 
Deep drive into rust programming language
Deep drive into rust programming languageDeep drive into rust programming language
Deep drive into rust programming language
Vigneshwer Dhinakaran
 
Passive Intelligence Gathering and Analytics - It's All Just Metadata!
Passive Intelligence Gathering and Analytics - It's All Just Metadata!Passive Intelligence Gathering and Analytics - It's All Just Metadata!
Passive Intelligence Gathering and Analytics - It's All Just Metadata!
CTruncer
 
MozillaPH Rust Users Group Kick Off Meeting
MozillaPH Rust Users Group Kick Off MeetingMozillaPH Rust Users Group Kick Off Meeting
MozillaPH Rust Users Group Kick Off Meeting
Robert 'Bob' Reyes
 
NSLogger - Cocoaheads Paris Presentation - English
NSLogger - Cocoaheads Paris Presentation - EnglishNSLogger - Cocoaheads Paris Presentation - English
NSLogger - Cocoaheads Paris Presentation - English
Florent Pillet
 
Symfony2 - A Short Introduction
Symfony2 - A Short IntroductionSymfony2 - A Short Introduction
Symfony2 - A Short Introduction
Andy Grunwald
 
MozillaPH Rust Hack & Learn Session 2
MozillaPH Rust Hack & Learn Session 2MozillaPH Rust Hack & Learn Session 2
MozillaPH Rust Hack & Learn Session 2
Robert 'Bob' Reyes
 
Profile all the things! - Capital Go 2017
 Profile all the things! - Capital Go 2017 Profile all the things! - Capital Go 2017
Profile all the things! - Capital Go 2017
John Potocny
 
Using Wildcards with rsyslog's File Monitor imfile
Using Wildcards with rsyslog's File Monitor imfileUsing Wildcards with rsyslog's File Monitor imfile
Using Wildcards with rsyslog's File Monitor imfile
Rainer Gerhards
 
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
Tom Limoncelli
 
Атаки на видеоконвертеры: год спустя
Атаки на видеоконвертеры: год спустяАтаки на видеоконвертеры: год спустя
Атаки на видеоконвертеры: год спустя
Positive Hack Days
 
Connected Devices, MozVR & Firefox Developer Tools
Connected Devices, MozVR & Firefox Developer ToolsConnected Devices, MozVR & Firefox Developer Tools
Connected Devices, MozVR & Firefox Developer Tools
Robert 'Bob' Reyes
 
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
Puppet
 
It is easy contributing to Open Source - ECLIPSE CON 2020
It is easy contributing to Open Source - ECLIPSE CON 2020It is easy contributing to Open Source - ECLIPSE CON 2020
It is easy contributing to Open Source - ECLIPSE CON 2020
César Hernández
 

Viewers also liked (9)

EMSCRIPTEN: 將應用快速 PORT 到 JAVASCRIPT 上的神物
EMSCRIPTEN: 將應用快速 PORT 到 JAVASCRIPT 上的神物EMSCRIPTEN: 將應用快速 PORT 到 JAVASCRIPT 上的神物
EMSCRIPTEN: 將應用快速 PORT 到 JAVASCRIPT 上的神物
Wei-Ning Huang
 
Code & Beer Opening
Code & Beer OpeningCode & Beer Opening
Code & Beer Opening
Wei-Ning Huang
 
Chromium OS Introduction
Chromium OS IntroductionChromium OS Introduction
Chromium OS Introduction
Wei-Ning Huang
 
Go Lang Tutorial
Go Lang TutorialGo Lang Tutorial
Go Lang Tutorial
Wei-Ning Huang
 
淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合
Kyle Lin
 
Google Chrome Operating System
Google Chrome Operating SystemGoogle Chrome Operating System
Google Chrome Operating System
vardhaniam
 
Introduction To Google Chrome Os
Introduction To Google Chrome OsIntroduction To Google Chrome Os
Introduction To Google Chrome Os
Saurabh Jinturkar
 
淺談 Geb 網站自動化測試(JCConf 2014)
淺談 Geb 網站自動化測試(JCConf 2014)淺談 Geb 網站自動化測試(JCConf 2014)
淺談 Geb 網站自動化測試(JCConf 2014)
Kyle Lin
 
Google chrome operating system
Google chrome operating systemGoogle chrome operating system
Google chrome operating system
kondalarao7
 
EMSCRIPTEN: 將應用快速 PORT 到 JAVASCRIPT 上的神物
EMSCRIPTEN: 將應用快速 PORT 到 JAVASCRIPT 上的神物EMSCRIPTEN: 將應用快速 PORT 到 JAVASCRIPT 上的神物
EMSCRIPTEN: 將應用快速 PORT 到 JAVASCRIPT 上的神物
Wei-Ning Huang
 
Chromium OS Introduction
Chromium OS IntroductionChromium OS Introduction
Chromium OS Introduction
Wei-Ning Huang
 
淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合
Kyle Lin
 
Google Chrome Operating System
Google Chrome Operating SystemGoogle Chrome Operating System
Google Chrome Operating System
vardhaniam
 
Introduction To Google Chrome Os
Introduction To Google Chrome OsIntroduction To Google Chrome Os
Introduction To Google Chrome Os
Saurabh Jinturkar
 
淺談 Geb 網站自動化測試(JCConf 2014)
淺談 Geb 網站自動化測試(JCConf 2014)淺談 Geb 網站自動化測試(JCConf 2014)
淺談 Geb 網站自動化測試(JCConf 2014)
Kyle Lin
 
Google chrome operating system
Google chrome operating systemGoogle chrome operating system
Google chrome operating system
kondalarao7
 
Ad

Similar to ProjectTox: Free as in freedom Skype replacement (20)

XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
Balazs Bucsay
 
Spotify: behind the scenes
Spotify: behind the scenesSpotify: behind the scenes
Spotify: behind the scenes
Ricardo Vice Santos
 
Trick or XFLTReaT a.k.a. Tunnel All The Things
Trick or XFLTReaT a.k.a. Tunnel All The ThingsTrick or XFLTReaT a.k.a. Tunnel All The Things
Trick or XFLTReaT a.k.a. Tunnel All The Things
Balazs Bucsay
 
Distributed "Web Scale" Systems
Distributed "Web Scale" SystemsDistributed "Web Scale" Systems
Distributed "Web Scale" Systems
Ricardo Vice Santos
 
Setting Up .Onion Addresses for your Enterprise, v3.5
Setting Up .Onion Addresses for your Enterprise, v3.5Setting Up .Onion Addresses for your Enterprise, v3.5
Setting Up .Onion Addresses for your Enterprise, v3.5
Alec Muffett
 
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
Balazs Bucsay
 
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
Lucas Jellema
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
Lorenzo Miniero
 
Every Solution is Wrong: Normalizing Ambiguous, Broken, and Pants-on-Head Cra...
Every Solution is Wrong: Normalizing Ambiguous, Broken, and Pants-on-Head Cra...Every Solution is Wrong: Normalizing Ambiguous, Broken, and Pants-on-Head Cra...
Every Solution is Wrong: Normalizing Ambiguous, Broken, and Pants-on-Head Cra...
Derek Buitenhuis
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022
Lorenzo Miniero
 
Anon p2p slides
Anon p2p slidesAnon p2p slides
Anon p2p slides
chintaan
 
XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)
XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)
XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)
Balazs Bucsay
 
Spotify: P2P music streaming
Spotify: P2P music streamingSpotify: P2P music streaming
Spotify: P2P music streaming
Ricardo Vice Santos
 
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
Balazs Bucsay
 
NullMQ @ PDX
NullMQ @ PDXNullMQ @ PDX
NullMQ @ PDX
Jeff Lindsay
 
Message:Passing - lpw 2012
Message:Passing - lpw 2012Message:Passing - lpw 2012
Message:Passing - lpw 2012
Tomas Doran
 
Scaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo minieroScaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo miniero
Greg Kawere
 
Blazingly-Fast:Introduction to Apache Fury Serialization
Blazingly-Fast:Introduction to Apache Fury SerializationBlazingly-Fast:Introduction to Apache Fury Serialization
Blazingly-Fast:Introduction to Apache Fury Serialization
shawnckyang
 
Four years of breaking HTTPS with BGP hijacking
Four years of breaking HTTPS with BGP hijackingFour years of breaking HTTPS with BGP hijacking
Four years of breaking HTTPS with BGP hijacking
APNIC
 
XFLTReat: a new dimension in tunnelling
XFLTReat:  a new dimension in tunnellingXFLTReat:  a new dimension in tunnelling
XFLTReat: a new dimension in tunnelling
Shakacon
 
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
Balazs Bucsay
 
Trick or XFLTReaT a.k.a. Tunnel All The Things
Trick or XFLTReaT a.k.a. Tunnel All The ThingsTrick or XFLTReaT a.k.a. Tunnel All The Things
Trick or XFLTReaT a.k.a. Tunnel All The Things
Balazs Bucsay
 
Setting Up .Onion Addresses for your Enterprise, v3.5
Setting Up .Onion Addresses for your Enterprise, v3.5Setting Up .Onion Addresses for your Enterprise, v3.5
Setting Up .Onion Addresses for your Enterprise, v3.5
Alec Muffett
 
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
Balazs Bucsay
 
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
Lucas Jellema
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
Lorenzo Miniero
 
Every Solution is Wrong: Normalizing Ambiguous, Broken, and Pants-on-Head Cra...
Every Solution is Wrong: Normalizing Ambiguous, Broken, and Pants-on-Head Cra...Every Solution is Wrong: Normalizing Ambiguous, Broken, and Pants-on-Head Cra...
Every Solution is Wrong: Normalizing Ambiguous, Broken, and Pants-on-Head Cra...
Derek Buitenhuis
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022
Lorenzo Miniero
 
Anon p2p slides
Anon p2p slidesAnon p2p slides
Anon p2p slides
chintaan
 
XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)
XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)
XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)
Balazs Bucsay
 
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
Balazs Bucsay
 
Message:Passing - lpw 2012
Message:Passing - lpw 2012Message:Passing - lpw 2012
Message:Passing - lpw 2012
Tomas Doran
 
Scaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo minieroScaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo miniero
Greg Kawere
 
Blazingly-Fast:Introduction to Apache Fury Serialization
Blazingly-Fast:Introduction to Apache Fury SerializationBlazingly-Fast:Introduction to Apache Fury Serialization
Blazingly-Fast:Introduction to Apache Fury Serialization
shawnckyang
 
Four years of breaking HTTPS with BGP hijacking
Four years of breaking HTTPS with BGP hijackingFour years of breaking HTTPS with BGP hijacking
Four years of breaking HTTPS with BGP hijacking
APNIC
 
XFLTReat: a new dimension in tunnelling
XFLTReat:  a new dimension in tunnellingXFLTReat:  a new dimension in tunnelling
XFLTReat: a new dimension in tunnelling
Shakacon
 
Ad

Recently uploaded (20)

tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 

ProjectTox: Free as in freedom Skype replacement

  • 1. ProjectTox Free as in freedom Skype replacement Wei-Ning Huang (AZ)
  • 2. About the Speaker • 正在水深火熱中的碩二學生 • 熱愛Python及Open Source • Involved open source projects: o Gummi LaTeX Editor o cppman o PyTox o ProjectTox-Core o Toxic o jToxcore o … • More info: http://azhuang.me
  • 3. Outline • What is Tox? • Functionality • Architecture and Design • Pitfalls and Solutions • In Progress Features • Client and Bindings • Live Demo
  • 5. What is anyway? • FOSS messaging network, supports A/V (GPLv3)
  • 6. What is anyway? • FOSS messaging network, supports A/V (GPLv3) • Decentralized architecture
  • 7. What is anyway? • FOSS messaging network, supports A/V (GPLv3) • Decentralized architecture • End-to-end encryption
  • 8. What is anyway? • FOSS messaging network, supports A/V (GPLv3) • Decentralized architecture • End-to-end encryption • Configuration free (does not require registration)
  • 9. What is anyway? • FOSS messaging network, supports A/V (GPLv3) • Decentralized architecture • End-to-end encryption • Configuration free (does not require registration) • Secure and easy to use
  • 10. What is anyway? • FOSS messaging network, supports A/V (GPLv3) • Decentralized architecture • End-to-end encryption • Configuration free (does not require registration) • Secure and easy to use • A Skype replacement
  • 11. Why are we doing this?
  • 12. Why are we doing this?
  • 13. Why are we doing this?
  • 14. Why are we doing this? 4chan/g/
  • 15. Why are we doing this? 4chan/g/
  • 16. Why are we doing this?
  • 17. Why are we doing this?
  • 18. Why are we doing this? 馬卡茸表示:如果沒做錯事,就不用怕監聽! 圖片來自插畫家謝立聖
  • 19. Why are we doing this? 馬卡茸表示:如果沒做錯事,就不用怕監聽! 圖片來自插畫家謝立聖 ???
  • 20. Why are we doing this? 馬卡茸表示:如果沒做錯事,就不用怕監聽! 圖片來自插畫家謝立聖 ???
  • 21. Why are we doing this? 馬卡茸表示:如果沒做錯事,就不用怕監聽! 圖片來自插畫家謝立聖 憲法第十二條:「人民有祕密通訊之自由」 ???
  • 22. Why are we doing this?
  • 23. Why are we doing this? • We want a free(as in Freedom) and secure alternative for , since it is “Microsofted”....
  • 24. Why are we doing this? • We want a free(as in Freedom) and secure alternative for , since it is “Microsofted”.... • "We don't want to be the next secure chatting program, we want to be the next secure chatting program that people actually use." - Someone on IRC
  • 25. Why are we doing this? • We want a free(as in Freedom) and secure alternative for , since it is “Microsofted”.... • "We don't want to be the next secure chatting program, we want to be the next secure chatting program that people actually use." - Someone on IRC • Current secure chat programs aren't easy to use, at least not for our parents and grandparents normal people
  • 27. Who started this? • irungentoo o Real identity is a mystery :P o Most of the code is implemented by him
  • 28. Who started this? • irungentoo o Real identity is a mystery :P o Most of the code is implemented by him • Project started up Jun 23, 2013
  • 29. Who started this? • irungentoo o Real identity is a mystery :P o Most of the code is implemented by him • Project started up Jun 23, 2013 • There are currently about 10 active tox.im developers, including me.
  • 31. Architecture and Design • Separated core and client, Tox is a library.
  • 32. Architecture and Design • Separated core and client, Tox is a library. • Current implemented features in core:
  • 33. Architecture and Design • Separated core and client, Tox is a library. • Current implemented features in core: o Text messages • Read receipt • Typing status
  • 34. Architecture and Design • Separated core and client, Tox is a library. • Current implemented features in core: o Text messages • Read receipt • Typing status o File transfer (way faster than Skype)
  • 35. Architecture and Design • Separated core and client, Tox is a library. • Current implemented features in core: o Text messages • Read receipt • Typing status o File transfer (way faster than Skype) o Group chat (IRC-like, currently invitation only)
  • 36. Architecture and Design • Separated core and client, Tox is a library. • Current implemented features in core: o Text messages • Read receipt • Typing status o File transfer (way faster than Skype) o Group chat (IRC-like, currently invitation only) o Audio / Video call support • Currently only 1-to-1 call supported • 1-to-many and many-to-many support on the way!
  • 37. Architecture and Design • Separated core and client, Tox is a library. • Current implemented features in core: o Text messages • Read receipt • Typing status o File transfer (way faster than Skype) o Group chat (IRC-like, currently invitation only) o Audio / Video call support • Currently only 1-to-1 call supported • 1-to-many and many-to-many support on the way! o All communication between clients are encrypted.
  • 38. DHT
  • 39. DHT • Distributed Hash Table similar to BitTorrent
  • 40. DHT • Distributed Hash Table similar to BitTorrent • Hash table contains ID to IP-Port mapping
  • 41. DHT • Distributed Hash Table similar to BitTorrent • Hash table contains ID to IP-Port mapping Bootstrap Server Client NAT Client Client LAN Discovery Client Client Boostrap Hole punching NAT
  • 43. Friend Requests • Friend requests are routed between clients
  • 44. Friend Requests • Friend requests are routed between clients • Client list or a list of clients whose ID are mathematically (XOR) closest to us
  • 45. Friend Requests • Friend requests are routed between clients • Client list or a list of clients whose ID are mathematically (XOR) closest to us Alice Jack Lucy Bob Request Request Got Alice’s IP_Port
  • 46. Using the UDP Protocal • Using UDP, easier for hole punching
  • 47. Using the UDP Protocal • Using UDP, easier for hole punching • A Lossless UDP protocol on top of UDP
  • 48. Using the UDP Protocal • Using UDP, easier for hole punching • A Lossless UDP protocol on top of UDP • Allow packet drop for A/V data packet
  • 49. Using the UDP Protocal • Using UDP, easier for hole punching • A Lossless UDP protocol on top of UDP • Allow packet drop for A/V data packet • NAT Traversal: Most NAT works, but symmetric NAT are problematic for now
  • 50. Encryption • Using Elliptic Curve Cryptography o Short key length, but still secure
  • 51. Encryption • Using Elliptic Curve Cryptography o Short key length, but still secure • Using NaCl (Networking and Cryptography library)
  • 52. Encryption • Using Elliptic Curve Cryptography o Short key length, but still secure • Using NaCl (Networking and Cryptography library) o libsodium is prefered
  • 53. Encryption • Using Elliptic Curve Cryptography o Short key length, but still secure • Using NaCl (Networking and Cryptography library) o libsodium is prefered o crypto_box: curve25519xsalsa20poly1305 • curve25519 for Key exchange • xsalsa20 for encryption • poly1305 for message authentication
  • 54. Encryption • Using Elliptic Curve Cryptography o Short key length, but still secure • Using NaCl (Networking and Cryptography library) o libsodium is prefered o crypto_box: curve25519xsalsa20poly1305 • curve25519 for Key exchange • xsalsa20 for encryption • poly1305 for message authentication • ID == Public Key o Example ID: 4E9D1B82DEE3BD3D4DDA62190873EA40737251A4 3445E4D517E66230BC4507233533EDD01F24
  • 56. Pitfalls and Solutions • Attack against DHT o Sybil attacks: attacker with large resource (e.g. governments) can create a large number of pseudo nodes that does nothing or disrupt network.
  • 57. Pitfalls and Solutions • Attack against DHT o Sybil attacks: attacker with large resource (e.g. governments) can create a large number of pseudo nodes that does nothing or disrupt network. • Metadata Leaking o When routing friend requests, nodes leaks information about the request’s ID and IP mapping. o Possible to identify a users’s real identity with IP
  • 58. Pitfalls and Solutions • Attack against DHT o Sybil attacks: attacker with large resource (e.g. governments) can create a large number of pseudo nodes that does nothing or disrupt network. • Metadata Leaking o When routing friend requests, nodes leaks information about the request’s ID and IP mapping. o Possible to identify a users’s real identity with IP • How do we safely exchange ID (Public Key) o Key being swap by a MITM?
  • 59. Solutions • Attack against DHT o Periodically check all client’s behavior to see if it’s a bad node. o The criteria of a good node is strict.
  • 60. Solutions • Attack against DHT o Periodically check all client’s behavior to see if it’s a bad node. o The criteria of a good node is strict. • Metadata Leaking o Don’t use their long term keypair in DHT, generate a temporary one when sending friend requests. o Onion routing for friend requests
  • 61. Solutions • Attack against DHT o Periodically check all client’s behavior to see if it’s a bad node. o The criteria of a good node is strict. • Metadata Leaking o Don’t use their long term keypair in DHT, generate a temporary one when sending friend requests. o Onion routing for friend requests • How do we safely exchange ID (Public Key) o DNS lookup!
  • 63. DNS User Discovery • Use DNS TXT record to store the ID, for example: o tox://[email protected] will be mapped to at TXT record ‘tox1._tox.azhuang.me’
  • 64. DNS User Discovery • Use DNS TXT record to store the ID, for example: o tox://[email protected] will be mapped to at TXT record ‘tox1._tox.azhuang.me’ o ‘v=tox1;id=4E9D1B82DEE3BD3D4DDA62190873EA40 737251A43445E4D517E66230BC4507233533EDD01F2 4’
  • 65. DNS User Discovery • Use DNS TXT record to store the ID, for example: o tox://[email protected] will be mapped to at TXT record ‘tox1._tox.azhuang.me’ o ‘v=tox1;id=4E9D1B82DEE3BD3D4DDA62190873EA40 737251A43445E4D517E66230BC4507233533EDD01F2 4’ • To prevent DNS poisoning or MITM, use the tox2 protocol (requires a extra pin): o 'v=tox2;pub=4E9D1B82DEE3BD3D4DDA62190873EA407372 51A43445E4D517E66230BC450723;check=1F24‘
  • 66. DNS User Discovery • Use DNS TXT record to store the ID, for example: o tox://[email protected] will be mapped to at TXT record ‘tox1._tox.azhuang.me’ o ‘v=tox1;id=4E9D1B82DEE3BD3D4DDA62190873EA40 737251A43445E4D517E66230BC4507233533EDD01F2 4’ • To prevent DNS poisoning or MITM, use the tox2 protocol (requires a extra pin): o 'v=tox2;pub=4E9D1B82DEE3BD3D4DDA62190873EA407372 51A43445E4D517E66230BC450723;check=1F24‘ • tox.se will be available for the public 
  • 68. In Progress Features • DHT Hardening o Research for more attach patterns
  • 69. In Progress Features • DHT Hardening o Research for more attach patterns • TCP Server o Route traffic for clients behind symmetric NAT or enterprise firewalls o Act like a “Super node” in the Skype network
  • 70. In Progress Features • DHT Hardening o Research for more attach patterns • TCP Server o Route traffic for clients behind symmetric NAT or enterprise firewalls o Act like a “Super node” in the Skype network • A/V improvements o Congestion control and variable bitrate support o A/V synchronization
  • 73. Clients and Bindings • Support most platforms
  • 74. Clients and Bindings • Support most platforms o Windows, Linux, Mac • Toxic (Ncurses CLI), has audio call support • Venom (Vala with GTK+) • Poison (MacOS only)
  • 75. Clients and Bindings • Support most platforms o Windows, Linux, Mac • Toxic (Ncurses CLI), has audio call support • Venom (Vala with GTK+) • Poison (MacOS only) o Mobile • AnTox (Android), supports QR code scanning • Toxicity (iOS)
  • 76. Clients and Bindings • Support most platforms o Windows, Linux, Mac • Toxic (Ncurses CLI), has audio call support • Venom (Vala with GTK+) • Poison (MacOS only) o Mobile • AnTox (Android), supports QR code scanning • Toxicity (iOS) • Language bindings: o Python: PyTox (full A/V support) o jTorecore: used in Antox
  • 77. How to use? • Just launch any client, and it will generate a public/private key pair for you
  • 78. How to use? • Just launch any client, and it will generate a public/private key pair for you • No login required
  • 79. How to use? • Just launch any client, and it will generate a public/private key pair for you • No login required • Send your public key to you friends
  • 80. How to use? • Just launch any client, and it will generate a public/private key pair for you • No login required • Send your public key to you friends • Add you friends with their public key
  • 81. How to use? • Just launch any client, and it will generate a public/private key pair for you • No login required • Send your public key to you friends • Add you friends with their public key • Start chatting!
  • 82. PyTox
  • 83. PyTox • CDD (Conference Driven Developemnt)
  • 84. PyTox • CDD (Conference Driven Developemnt) • No A/V support 2 days ago… o The video implementation in core even has some critical bugs
  • 85. PyTox • CDD (Conference Driven Developemnt) • No A/V support 2 days ago… o The video implementation in core even has some critical bugs • Full A/V support implemented before OSDC.tw!
  • 86. PyTox • CDD (Conference Driven Developemnt) • No A/V support 2 days ago… o The video implementation in core even has some critical bugs • Full A/V support implemented before OSDC.tw! • Leverage the power of Python o An EchoBot can be implement in less than 50 lines of Python code o SyncBot: a PoC of PyTox, syncing messages between Tox groupchat and freenode #tox-ontopic
  • 87. PyTox
  • 89. Join Us! • Wiki: o http://wiki.tox.im/ • Github: o ProjectTox-Core: https://github.com/irungentoo/ProjectTox-Core o PyTox: https://github.com/aitjcize/PyTox • Freenode IRC o #tox, #tox-dev, #tox-ontopic