WEBVTT

00:00.000 --> 00:13.000
All right, take two. All right, let's again welcome Mattias to the stage. He's a project manager of

00:13.000 --> 00:17.760
Qual and a developer of open source censorship circumvention tools. He's giving an introduction to

00:17.760 --> 00:23.000
Qual, which is a privacy focused P2P mesh communication app that enables off-the-grid messaging via

00:23.000 --> 00:30.000
the BLE, LAN, and internet overlays. All right, how may I welcome him?

00:30.000 --> 00:55.680
Thank you. What a world. Climate crisis, wars, the world is falling apart. When we have such

00:55.760 --> 01:00.760
big problems, do we really need to worry about even more platforms and forms of networking?

01:00.760 --> 01:05.840
It seems as if our achievements in digital communication have only made the problems more

01:05.840 --> 01:12.800
manifold. Today we struggle with uncertainties and fears. For the things, we gave that gave

01:12.800 --> 01:19.600
us stability, our planet, the world, alliances between states, the values we share, the order

01:19.640 --> 01:26.920
we know and in which we recognize ourselves. We are experiencing a shift in power relations

01:26.920 --> 01:32.080
and heteromonic context and we find ourselves in the situation between the effects of power

01:32.080 --> 01:38.960
and our own powerlessness. A disintegration is looming, extending to networks which are becoming

01:38.960 --> 01:45.520
less and less intercontinental in scope and increasingly fragmented, leading to a Chinese

01:45.520 --> 01:54.000
Russian US-American network. What does this make with us? Within a formation, we appear

01:54.000 --> 02:00.000
a subject to subjects and are only empowered through our application. In Fuku's power

02:00.000 --> 02:09.280
analytic sense, we can therefore understand forms of participation as a subjectification. On

02:09.360 --> 02:16.160
the one hand, the question arises as to how we bring ourselves into play. On the other hand,

02:16.160 --> 02:22.320
there is a suspicion that not everything can be found in this formation and even more so

02:22.320 --> 02:28.240
that this formation itself produces exclusions, at least as an experience of contingency.

02:29.440 --> 02:36.080
The use of software and hardware is a form of such a subjectification. This subjectification

02:36.160 --> 02:41.360
often goes unnoticed as many seem to be completely satisfied with their presence in the form

02:41.360 --> 02:48.080
of accounts and user profiles. Others are rightly concerned about this subjectification,

02:48.080 --> 02:54.160
mistrusting precisely those systems that inscribed themselves so dominantly in communication

02:54.160 --> 02:59.760
and possibilities for action. They even inscribed themselves in our presence and existence.

03:00.320 --> 03:06.960
The dystopia and oppression, the fear, the delusion that powers are at work here. Of course,

03:06.960 --> 03:11.680
all these emotions have their basis in this very subjectification which can never be fully

03:11.680 --> 03:18.080
understood or discarded. When dealing with communication networks and their effects, we engage

03:18.080 --> 03:25.040
in a biological structure. We oscillate between our own statement limited by the option of

03:25.040 --> 03:31.040
expression of the specific system on one hand and our objections to the systemic conditions and

03:31.040 --> 03:37.600
constraints on the other. This experience is becoming particularly important in the struggle

03:37.600 --> 03:44.320
of self-determination and maturity. Of course, it is important which platform we choose to improve

03:44.320 --> 03:51.440
privacy and to improve control over our own data. However, the experience of subjectification

03:51.440 --> 03:59.440
is fundamental. It gives us the context that in return we must be able to also shape these systems.

03:59.440 --> 04:07.200
This co-creation is a characteristic of a participatory social order. It is what we mean

04:08.000 --> 04:17.120
by democratic, by value-based and by civil society. The relevance of this power to act and these

04:17.120 --> 04:24.080
options for shaping the system often remain unseen. There seems to be an overwhelming force

04:24.080 --> 04:29.280
that shapes our own positions in such a way that our identity in the assigned position of

04:29.280 --> 04:34.560
economic conditions, cultural affiliation, nation-chanted class appears overpowering.

04:35.760 --> 04:40.960
But in a crisis, this breaks down at the moment when these certainties and identities

04:40.960 --> 04:46.720
these contextualizations and self-assurances towards these systems disappear. In a situation

04:46.800 --> 04:53.120
of immediate threat thrown back on an existence on a formation that pushes one's own self-image,

04:53.120 --> 05:00.000
one's own conventions of perception and representation, one's own power to shape and act to a limit.

05:01.040 --> 05:07.200
Call arose from such context of experience. In 2011, people poured into tachyus,

05:07.200 --> 05:11.920
to wear and cryo-eachypt. It was a situation that called for stepping out of those

05:11.920 --> 05:18.480
subjectivities and demanding participation and recognition. And while a democratization movement

05:18.480 --> 05:23.840
was forming in tachyus' to wear, the government shut down the internet and mobile communications.

05:24.560 --> 05:29.600
Call was born out of these experiences, only in our formations can defund the mental aspects

05:29.600 --> 05:35.360
of structures of subjectifications, the assigned forms of options for action and creative forces

05:35.360 --> 05:41.760
be understood and addressed. We do not become aware of subjectifications let alone escape it

05:41.760 --> 05:46.720
when we are stuck in our social media accounts. Nor do we escape this objectification

05:46.720 --> 05:53.040
in supposed activity from a spectator position behind the screen. Clicking and thinking you are connected

05:53.840 --> 06:00.000
is a great and treasureous illusion of online activism. Call is not activism. The experience

06:00.000 --> 06:07.600
of tachyus' wear is relevant in a different way, digital platforms, which like to refer to themselves

06:07.680 --> 06:13.840
as agoras or forums like the old democratic formations, the places of democracy, they are not

06:13.840 --> 06:20.880
designed for appropriation or empowerment by the users. In contrast to these self-styled platforms,

06:21.520 --> 06:28.160
which often obscures the connections and dependencies we use call to examine our own possibilities

06:28.160 --> 06:33.920
for action and our own options for design and expression based on the materials available to us,

06:34.480 --> 06:42.800
our own devices. It is about understanding how our own means of expression are constituted,

06:42.800 --> 06:49.520
how we ourselves can create our own connections, how we can take control over our own devices in our hands.

06:50.400 --> 06:56.960
Using this smartphone in my hand, in such a way as to create a network and connect myself with

06:56.960 --> 07:03.200
other people in a network. In a classical network, we are dependent from an infrastructure.

07:03.280 --> 07:08.800
This is a cellphone antenna in Sudan. The antenna is camouflaged as a palm tree, a quiet

07:08.800 --> 07:15.360
common camouflage for antennas in the region. In such a classical network, the device is connected

07:15.360 --> 07:23.040
to the antenna, the antenna to the ISB gateway and so on. And alternative structure would be a fully

07:23.040 --> 07:28.960
mesh network in which each device is directly interconnected with all other nearby devices. We've

07:28.960 --> 07:35.200
called which created the first of the gross platform Wi-Fi messenger, but not only could you

07:35.200 --> 07:40.400
communicate with the mesh network. The app to build this network was also shareable from user

07:40.400 --> 07:45.600
to user, new users were able to download the app directly from the call network itself. We

07:45.600 --> 07:50.000
called it viral sharing a concept that was picked up quickly by other applications in the field.

07:50.880 --> 07:56.880
This was our first technical setup. From the routing part, we used the OLS error routing protocol,

07:56.880 --> 08:03.200
the system routed directly into the system's routing tables, which created a perfectly

08:03.200 --> 08:09.440
routable TCP IP network. This made a lot of functionalities possible. When someone had

08:09.440 --> 08:13.920
internet, it could be easily shared with all other users in the network. With activists from

08:13.920 --> 08:19.600
gaze-part movement, we developed an autonomous device. The stations were usable for text messages,

08:19.600 --> 08:24.880
voice jets, and file sharing. The gaze-part edition allows links to the internet and other networks.

08:24.880 --> 08:31.920
Information can be exchanged even time-delayed. Many networks were set up used for communication,

08:31.920 --> 08:38.880
spontaneous mobile networks on migration routes, self-built infrastructure in Romani settlements,

08:38.880 --> 08:43.920
antennas in direction of the Tahir Square, and also really large antennas setups.

08:45.920 --> 08:52.960
However, the system also had some downsides. To write routing tables, we needed administrative

08:52.960 --> 09:01.120
access on devices, something we are deprived of on mobile platforms. The Wi-Fi standard we used,

09:01.120 --> 09:06.720
the Zoukalk Wi-Fi Huffk Mode, became unusable on most devices and platforms. We therefore

09:06.720 --> 09:13.680
rewrote the app from scratch in 2019 to create a mobile first application with abstracts the entire

09:13.680 --> 09:19.360
network layer away and the routes based on cryptographic identities.

09:20.320 --> 09:26.800
Our goal was the same. A mobile first tier configuration peer to peer messenger with a state

09:26.800 --> 09:32.720
of the RT user interface. Only using technologies that are available to the user

09:32.720 --> 09:37.360
unrestricted mobile platforms. We have three different communication possibilities,

09:37.360 --> 09:42.640
Bluetooth low energy, which is still experimental, local area network communication mode,

09:42.640 --> 09:46.000
and statically linked nodes for internet overlay connections.

09:46.720 --> 09:52.080
Over which every mode you are interconnected, all devices are meshed together. We wrote

09:52.080 --> 09:55.920
our own distance vector based routing protocol to make this happen.

09:58.560 --> 10:04.560
Call is zero config. The onboarding process is really simple. You choose your language

10:05.600 --> 10:13.200
and your username and your set up to go. Call has a user discovery. All users in the network

10:13.200 --> 10:20.480
will automatically appear in your contact list. To make your interconnectivity visible,

10:21.360 --> 10:28.400
we created a network view where you can see how you are interconnected. This connectivity

10:28.400 --> 10:33.360
awareness feature is really important to help users understand the connectedness and the state

10:33.360 --> 10:38.720
of the local network. Every connection in between two nodes is transporting cryptid.

10:39.440 --> 10:45.120
And we have an end-to-end encrypted messaging system. Over which you can chat, send files,

10:45.120 --> 10:50.320
photos, videos, and voice messages. We also have fully encrypted chat groups.

10:51.600 --> 10:57.120
A special feature in call is a public message channel. These messages are unencrypted. They are

10:57.120 --> 11:02.000
cryptographically signed by the sender. The messages are forwarded to everyone in the network

11:02.000 --> 11:08.480
and partially synchronized between devices. In addition to that, we have a

11:08.560 --> 11:13.520
delayed tolerant message routing. If somebody is not present in the network, we can still write

11:13.520 --> 11:19.840
them a message. The message is then sent in a store and forward style, either to a predefined

11:19.840 --> 11:25.360
user for storage and later delivery or to the user with the closest social proximity.

11:28.240 --> 11:34.080
Call is available on all five major platforms. On Linux and AppStores, Android Store, we also have

11:34.080 --> 11:39.760
an additional signed binary to download and share directly Windows, Mac OS, and iOS.

11:40.320 --> 11:50.880
There is also a demon for headless devices and a CLI binary. So, let's quickly try a live

11:50.960 --> 12:02.960
DMotion.

12:06.240 --> 12:10.880
So, okay.

12:10.880 --> 12:24.320
When you open for the first time, the call app, it automatically

12:24.320 --> 12:29.520
selects the language of your device.

12:29.520 --> 12:36.080
You can change to many other languages if you like.

12:36.080 --> 12:44.480
And then to create a user profile, you just type in a user name, whatever user name

12:44.480 --> 12:53.880
you like, okay, and you're good to go.

12:53.880 --> 13:00.640
So, and what now happened is that cryptographic identity was created for you in the

13:00.640 --> 13:05.720
background and the routing protocol started.

13:05.720 --> 13:12.240
And when you are in a network and there are already devices present, then the public

13:12.240 --> 13:18.360
messages partially the last messages are shared with you.

13:18.360 --> 13:22.640
You are now in the public messenger that's what was coming in.

13:22.640 --> 13:31.400
You also have a contact list in which you see all the users that you ever got a message

13:31.400 --> 13:36.000
from or that are currently present.

13:36.000 --> 13:44.160
So, these users, they have a profile page, you have the public key, and you have the identity

13:44.160 --> 13:46.720
which is the hash of the public key.

13:46.720 --> 13:50.640
You can verify a user, this needs to be done off the grid.

13:50.640 --> 13:56.280
You get a security number, it's the same system that also signal used, and then you can

13:56.280 --> 14:01.360
check on the other device, if it's the same security number, because the security number

14:01.360 --> 14:06.200
are always in between two devices, and if it's the same, you can manually trust it and

14:06.200 --> 14:11.920
you get a little batch.

14:11.920 --> 14:19.760
Of course, you can also send them messages.

14:19.760 --> 14:28.080
So now this was sent, we see we have two blue check marks, this means this message has

14:28.080 --> 14:34.240
been sent and was delivered.

14:35.120 --> 14:40.360
While we did that, we did one round trip, and we basically made the defy helmet to

14:40.360 --> 14:49.880
cut from to static key that we can use for encryption, but already the first message

14:49.880 --> 14:53.320
is encrypted in the system.

14:53.320 --> 15:10.280
So, over this channel, we can exchange text messages, but we can also, for

15:10.280 --> 15:27.360
example, send multimedia data, photos, so, yeah, okay, yeah, and we should also be

15:27.360 --> 15:43.560
seeing the network, okay, it's not too big, we are only here in the room.

15:43.560 --> 15:46.200
This is the program structure currently of call.

15:46.200 --> 15:53.440
So we have a lip call written in Rust, we have three different network connections, for

15:53.440 --> 15:58.760
two of the network connections we use Rustly peer-to-peer, we have a parallel quick and

15:58.760 --> 16:10.480
TCP stack, yeah, basically all the important features are in this Rust lip call, and

16:10.480 --> 16:20.120
before the UI we have a flutter, which gives us the same UI on all platforms.

16:20.120 --> 16:26.640
As designed and inspired to enable individuals and community communities to establish networks

16:26.640 --> 16:34.240
and build structures, it tells us so much about the systems of power and control and surveillance,

16:34.240 --> 16:40.080
which we can now understand and specific forms of sub-selectification, and which we can counter

16:40.080 --> 16:45.880
with our own formations, our own forms of networking and communication.

16:45.880 --> 16:46.880
Thank you.

16:50.120 --> 16:58.280
All right, we have about five minutes here for questions, so questions everyone, I'll

16:58.280 --> 17:04.200
see you on right here, and then I'll see you on how I'll get to you after it.

17:04.200 --> 17:16.720
Thank you, what do you do now, like, is it using the same technology as BChat, and if

17:16.800 --> 17:21.040
you have any thoughts on that other peer-to-peer messaging app?

17:21.040 --> 17:34.160
BChat, BChat, BChat, no, well, partially of course, but BChat also uses BLE, for example, but

17:34.160 --> 17:38.880
it does not really have a routing protocol, it just sends messages, we have a routing protocol

17:38.880 --> 17:44.760
which kind of ensures that you message really arrives and you also get and feedback from

17:44.760 --> 17:45.760
that.

17:45.760 --> 17:55.800
So, yeah, partially, so I would say what makes us quite unique is the routing protocol

17:55.800 --> 18:03.920
where we can really interconnect all the different layers and wherever you are, you can

18:03.920 --> 18:14.920
then use the services that are offered there.

18:14.920 --> 18:20.800
During the trips and crisis, did you try some other layers quite like advanced mouse

18:20.800 --> 18:26.760
coding called visible communications or infrared transmission to create the mesh?

18:26.760 --> 18:28.360
No, we were not there.

18:28.440 --> 18:33.960
Only two dots for GGS Wi-Fi.

18:33.960 --> 18:41.680
So we started in 2011 during the hourspring to write this application because of the

18:41.680 --> 18:54.480
average rate.

18:54.480 --> 19:02.440
So the user is a public key and the private key is derived on the device.

19:02.440 --> 19:06.000
Is there some backup mechanism or what's the idea behind that?

19:06.000 --> 19:10.480
We are currently implementing a backup mechanism that you can export all your data that you

19:10.480 --> 19:16.160
also can transfer it to a new device and that you can re-import it again, yes.

19:16.160 --> 19:20.640
So I would say coming soon.

19:20.640 --> 19:22.040
All right, any other questions up?

19:22.040 --> 19:23.040
David?

19:23.040 --> 19:37.920
Oh, okay, then there should be a new version next week, yes.

19:37.920 --> 19:44.640
Okay, hello, we have a question from the internet, from someone in the chat, which is,

19:44.640 --> 19:47.760
is for a world secrecy implemented?

19:47.760 --> 19:49.760
No, yet, but it will come.

19:49.760 --> 19:50.760
Okay.

19:50.760 --> 19:55.240
We will implement the key rotation system that contains forward secrecy at the moment you

19:55.240 --> 19:59.760
have just a static key for your connection.

19:59.760 --> 20:04.840
And I have a follow-up question which is which crypto stack are you using?

20:04.840 --> 20:11.440
We are using for the end-to-end encryption, encryption, the noise stack, for the transport

20:11.440 --> 20:14.040
encryption, it depends for the TCP stack there.

20:14.040 --> 20:21.040
We are also using the noise protocol and for the quick stack there is TLS.

20:21.040 --> 20:23.040
Okay, and you have time.

20:23.040 --> 20:28.040
Okay, one more question, which is which routing are you using?

20:28.040 --> 20:30.040
Are you routing packets?

20:30.040 --> 20:31.040
Are you fluid?

20:31.040 --> 20:32.040
Floating the network?

20:32.040 --> 20:33.040
How are you doing it?

20:33.040 --> 20:38.040
We are using a distance-based, distance vector-based routing protocol.

20:38.040 --> 20:46.040
So each user sends to all its neighbor packages of all the neighbors it sees.

20:46.040 --> 20:51.040
And every kind of one in the network and out of these tables.

20:51.040 --> 20:55.040
And then the metrics we also test the connection.

20:55.040 --> 20:57.040
We test the connection, we have the hop counts.

20:57.040 --> 21:03.040
And out of these metrics each user calculates the best way to the next one.

21:03.040 --> 21:09.040
Only always the next hop in this metric is then decided by.

21:09.040 --> 21:12.040
So you are doing analysis with that information periodically.

21:12.040 --> 21:18.040
And then the local router calculates is best next to the hop and that's how packets travel.

21:18.040 --> 21:23.040
And do you have any way to assure the arrive at the destination?

21:23.040 --> 21:26.040
And you kind of TCP-like confirmation?

21:26.040 --> 21:29.040
Yes, we have a confirmation packet, so yeah.

21:29.040 --> 21:31.040
Okay.

21:31.040 --> 21:33.040
All right, and that takes us to our time.

21:33.040 --> 21:35.040
Let's get another round of applause, everyone.

21:35.040 --> 21:36.040
Thank you, Matt.

21:36.040 --> 21:38.040
Please share your time.

21:38.040 --> 21:39.040
Thank you.

21:39.040 --> 21:43.040
All right, I want to verify our next presentation is also a chat app.

