<<

The project The GXS system Decentralize your app!

A Generic Data Exchange System for F2F Networks

Cyril Soler

C.Soler The GXS System 03 Feb. 2018 1 / 19 The Retroshare project The GXS system Decentralize your app! Outline

I Overview of Retroshare

I The GXS system

I Decentralize your app!

C.Soler The GXS System 03 Feb. 2018 2 / 19 The Retroshare project The GXS system Decentralize your app! The Retroshare Project

I Mesh computers using signed TLS over TCP/UDP//;

I end-to-end encrypted FT with swarming;

I mail, IRC chat, forums, channels;

I available on Mac OS, , Windows, (+ Android).

C.Soler The GXS System 03 Feb. 2018 3 / 19 The Retroshare project The GXS system Decentralize your app! The Retroshare Project

I Mesh computers using signed TLS over TCP/UDP/Tor/I2P;

I anonymous end-to-end encrypted FT with swarming;

I mail, IRC chat, forums, channels;

I available on Mac OS, Linux, Windows.

C.Soler The GXS System 03 Feb. 2018 3 / 19 The Retroshare project The GXS system Decentralize your app! The Retroshare Project

I Mesh computers using signed TLS over TCP/UDP/Tor/I2P;

I anonymous end-to-end encrypted FT with swarming;

I mail, IRC chat, forums, channels;

I available on Mac OS, Linux, Windows.

C.Soler The GXS System 03 Feb. 2018 3 / 19 The Retroshare project The GXS system Decentralize your app! The Retroshare Project

I Mesh computers using signed TLS over TCP/UDP/Tor/I2P;

I anonymous end-to-end encrypted FT with swarming;

I mail, IRC chat, forums, channels;

I available on Mac OS, Linux, Windows.

C.Soler The GXS System 03 Feb. 2018 3 / 19 The Retroshare project The GXS system Decentralize your app! The Retroshare Project

I Mesh computers using signed TLS over TCP/UDP/Tor/I2P;

I anonymous end-to-end encrypted FT with swarming;

I mail, IRC chat, forums, channels;

I available on Mac OS, Linux, Windows.

C.Soler The GXS System 03 Feb. 2018 3 / 19 The Retroshare project The GXS system Decentralize your app! The Retroshare Project

I Mesh computers using signed TLS over TCP/UDP/Tor/I2P;

I anonymous end-to-end encrypted FT with swarming;

I mail, IRC chat, forums, channels;

I available on Mac OS, Linux, Windows.

C.Soler The GXS System 03 Feb. 2018 3 / 19 The Retroshare project The GXS system Decentralize your app! The Retroshare Project

History:

I 10 years old. I 5 main contributors (drbob,csoler,G10H4ck,chris,thunder,...) I a few thousands daily users (?) User experience: network bootstrapping is a bit difficult lots of options and possibilities, etc. once you’re set, you’re pretty much invisible Code:

I 500,000 lines of C++ I depends on , libcrypto, OpenPGP-SDK (for now) I backend + UI ( / Web) I channels, forums, ,... : based on a common generic distribution system

C.Soler The GXS System 03 Feb. 2018 4 / 19 The Retroshare project The GXS system Decentralize your app! Motivation

Friend-to-Friend network: I mesh of computers connected by authenticated/encrypted I nodes only talk to their trusted neighbors

C.Soler The GXS System 03 Feb. 2018 5 / 19 I be robust to network changes, disconnections, heterogeneity

The Retroshare project The GXS system Decentralize your app! Motivation

Friend-to-Friend network: I mesh of computers connected by authenticated/encrypted links I nodes only talk to their trusted neighbors

I publish/exchange data with any

I favor interesting content...while preventing flooding, spam, etc.

I provide authentication/ beyond friends

C.Soler The GXS System 03 Feb. 2018 5 / 19 I be robust to network changes, disconnections, heterogeneity

The Retroshare project The GXS system Decentralize your app! Motivation

Friend-to-Friend network: I mesh of computers connected by authenticated/encrypted links I nodes only talk to their trusted neighbors

Me!

I publish/exchange data with any node

I favor interesting content...while preventing flooding, spam, etc.

I provide authentication/anonymity beyond friends

C.Soler The GXS System 03 Feb. 2018 5 / 19 The Retroshare project The GXS system Decentralize your app! Motivation

Friend-to-Friend network: I mesh of computers connected by authenticated/encrypted links I nodes only talk to their trusted neighbors

Me!

I publish/exchange data with any node

I favor interesting content...while preventing flooding, spam, etc.

I provide authentication/anonymity beyond friends

I be robust to network changes, disconnections, heterogeneity C.Soler The GXS System 03 Feb. 2018 5 / 19 The Retroshare project The GXS system Decentralize your app! Generic eXchange System (a.k.a. GXS)

GXS: Asynchronous distribution, authentication, , security of generic data.

Working principles: 1. subscribers advertise to friends

2. nodes team up to ensure data integrity and spam control

Developers implement their own "services/data" on of it

C.Soler The GXS System 03 Feb. 2018 6 / 19 The Retroshare project The GXS system Decentralize your app! GXS Core

GXS core automatically provides: I local encrypted storage (sqlcipher) I network sync. I accounts for access-restriction, storage/sync time periods, etc I multi-chunk transactions I validation I data signatures, spam control, cleaning

C.Soler The GXS System 03 Feb. 2018 7 / 19 The Retroshare project The GXS system Decentralize your app! GXS Core

GXS core automatically provides: I local encrypted storage (sqlcipher) I network sync. I accounts for access-restriction, storage/sync time periods, etc I multi-chunk transactions I validation I data signatures, spam control, cleaning

Specific services implement:

I private data types (serialization, GUI ↔ GXS types)

I sync. (auto), subscription (manual) and authentication policies

I service specific actions

C.Soler The GXS System 03 Feb. 2018 7 / 19 The Retroshare project The GXS system Decentralize your app! GXS Primitives

Services, Groups, , Identities, Circles

Service Groups

Messages

C.Soler The GXS System 03 Feb. 2018 8 / 19 The Retroshare project The GXS system Decentralize your app! GXS Primitives

Services, Groups, Messages, Identities, Circles

Service Groups Distribution Authentication

Messages

Signatures

C.Soler The GXS System 03 Feb. 2018 8 / 19 The Retroshare project The GXS system Decentralize your app! GXS Primitives

Services, Groups, Messages, Identities, Circles

Service Groups Identities Distribution Authentication

Messages

Signatures

C.Soler The GXS System 03 Feb. 2018 8 / 19 The Retroshare project The GXS system Decentralize your app! GXS Primitives

Services, Groups, Messages, Identities, Circles

Service Groups Identities Circles Distribution Authentication

Messages

Signatures

C.Soler The GXS System 03 Feb. 2018 8 / 19 The Retroshare project The GXS system Decentralize your app! Groups and Messages

I versionned, hierarchical data

I meta-data (GXS) + private data (service dependent)

C.Soler The GXS System 03 Feb. 2018 9 / 19 The Retroshare project The GXS system Decentralize your app! Pseudo-anonymous identities

I identities are GXS groups in a "Identity" service I sync-ed on request, identities follow groups/messages I optionally signed by node (signature in Group private meta) I unsigned identities are anonymous beyond friend nodes

C.Soler The GXS System 03 Feb. 2018 10 / 19 The Retroshare project The GXS system Decentralize your app! Circles

I Circles are GXS groups in a "Circles" GXS service

I subscription and sync are automatic I membership requires:

I invitation: list signed by admin key I membership request: user msg

I self-restricted circles: only visible to invitee list

C.Soler The GXS System 03 Feb. 2018 11 / 19 The Retroshare project The GXS system Decentralize your app! Data authentication

I signature schemes of groups and messages

I groups: admin, author (depends on service auth. flags) I messages: author, publish (depends on Group auth. flags)

C.Soler The GXS System 03 Feb. 2018 12 / 19 The Retroshare project The GXS system Decentralize your app! Data distribution

I synchronization model

I only compares local times I circle restriction → data (Anonymized AES+RSA)

. Groups

C.Soler The GXS System 03 Feb. 2018 13 / 19 The Retroshare project The GXS system Decentralize your app! Data distribution

I synchronization model

I only compares local times I circle restriction → data encryption (Anonymized AES+RSA)

. Messages

C.Soler The GXS System 03 Feb. 2018 13 / 19 ⇒ always receive data, only forward depending on: I identity node signature I opinions sync-ed from friend nodes (local service) I anti-spam policy for the group

The Retroshare project The GXS system Decentralize your app! Reputation management

I Block unwanted content I default settings allow enough visibility I allow newcomers to bootstrap I discourage creation of new identities to spam

C.Soler The GXS System 03 Feb. 2018 14 / 19 The Retroshare project The GXS system Decentralize your app! Reputation management

I Block unwanted content I default settings allow enough visibility I allow newcomers to bootstrap I discourage creation of new identities to spam ⇒ always receive data, only forward depending on: I identity node signature I opinions sync-ed from friend nodes (local service) I anti-spam policy for the group

C.Soler The GXS System 03 Feb. 2018 14 / 19 I tunnels based on turtle [Matejka 2006]

I no global addressing I passive tunnel management I multiple tunnels allowed to the same destination I anonymity + encryption ⇒ needs a pre-shared key

I request tunnels using H(H(f )) I encryption: chacha20+HMAC with H(H(f )|tunnel_id|96-bits IV)

The Retroshare project The GXS system Decentralize your app!

I Problem: anonymous FT without disclosing data/meta-data to intermediate nodes

C.Soler The GXS System 03 Feb. 2018 15 / 19 The Retroshare project The GXS system Decentralize your app! File transfer

I Problem: anonymous FT without disclosing data/meta-data to intermediate nodes I tunnels based on turtle [Matejka 2006]

I no global addressing I passive tunnel management I multiple tunnels allowed to the same destination I anonymity + encryption ⇒ needs a pre-shared key

I request tunnels using H(H(f )) I encryption: chacha20+HMAC with H(H(f )|tunnel_id|96-bits IV)

C.Soler The GXS System 03 Feb. 2018 15 / 19 The Retroshare project The GXS system Decentralize your app!

So, what now?

C.Soler The GXS System 03 Feb. 2018 16 / 19 I service class and authentication policy I private group/message data and group/message creation code

A: provide the following (200 lines of code for forums):

The Retroshare project The GXS system Decentralize your app! Step-by-step example

Q: So what effort does it take to create e.g. distributed forums?

C.Soler The GXS System 03 Feb. 2018 17 / 19 I service class and authentication policy I private group/message data and group/message creation code

The Retroshare project The GXS system Decentralize your app! Step-by-step example

Q: So what effort does it take to create e.g. distributed forums? A: provide the following (200 lines of code for forums):

C.Soler The GXS System 03 Feb. 2018 17 / 19 I private group/message data and group/message creation code

The Retroshare project The GXS system Decentralize your app! Step-by-step example

Q: So what effort does it take to create e.g. distributed forums? A: provide the following (200 lines of code for forums): I service class and authentication policy

C.Soler The GXS System 03 Feb. 2018 17 / 19 The Retroshare project The GXS system Decentralize your app! Step-by-step example

Q: So what effort does it take to create e.g. distributed forums? A: provide the following (200 lines of code for forums): I service class and authentication policy I private group/message data and group/message creation code

C.Soler The GXS System 03 Feb. 2018 17 / 19 The Retroshare project The GXS system Decentralize your app! Step-by-step example

Q: So what effort does it take to create e.g. distributed forums? A: provide the following (200 lines of code for forums): I service class and authentication policy I private group/message data and group/message creation code

Comes free with GXS:

I advertisement of forums to friend nodes

I distribution of posts to subscribed friends

I validation of group/message signatures

I spam control (GUI, lots of Qt):

I creating, visualizing forums/posts

I editing posts (Meta-data has msg versions)

C.Soler The GXS System 03 Feb. 2018 17 / 19 The Retroshare project The GXS system Decentralize your app! Step-by-step example

Q: So what effort does it take to create e.g. distributed forums? A: provide the following (200 lines of code for forums): I service class and authentication policy I private group/message data and group/message creation code

C.Soler The GXS System 03 Feb. 2018 17 / 19 The Retroshare project The GXS system Decentralize your app! Develop fully decentralized apps:

I Some ideas...

I micro-blogging () I (pictures, comment threads) I I directory sync I calendar+Tasks I distributed Git I ... I Our next target: FB style social network

I user’s page: GXS group I page posts: GXS subgroups (allows post-based circle visibility) I user’s comments: GXS messages in each post group I Essentially UI work ;-)

I distribution,crypto,...: already done!

C.Soler The GXS System 03 Feb. 2018 18 / 19 The Retroshare project The GXS system Decentralize your app! Questions?

Sources: http://github.com/Retroshare/Retroshare Developers’ : http://retroshareteam.wordpress.com Project : http://retroshare.net Technical report: ://hal.inria.fr/hal-01617423 Summer of Code 2018 (project ideas here: https://projects.freifunk.net)

Thanks to:

C.Soler The GXS System 03 Feb. 2018 19 / 19