Okay, hi, good morning, I'm Alexis, this is Harry, I'm also a part of the decentralized
at the CDC committee, so we are a bunch of crew at CDC every year and working on the
privacy infrastructure, so here I was Harry, we've been working for years on the first
large size mixnet in decentralized mixnet in order to build anonymity and so
yeah, we have a we have a team with been it was like coming from a European project called Panohanix
and so with Claude Adias and Annapute Roscaue who are a part of a cozic and also from
a university in UCL they develop a concept based on David Shom's initial concept of the mixnet,
so it's I think we've been funded by first by the European Commission and it was like a large
effort on building a large mixnet, so why does it matter, basically on the internet you leave a lot
of metadata and you can encrypt as much as you want your communication, your message actually
the metadata is about the timing and the volume of data which is exchange and also like the
the recipient and the receiver the recipient and the sender of this communication and so this
pattern can be analyzed and basically the metadata is as important as the content of the data itself,
so when we talk about surveillance capitalism it's more about the profiling and so it's more
about the metadata than actually the data itself and also I think there's a study where you can
derive the content of the data just based on the metadata itself, so how do you hide this so that was
the original idea from David Shom to make a mixnet but it was based it was done for email that's
so the remalers and so you had a whole research for a long time about how to do anonymous email
and remalers and so this is where the name NIM comes from, yeah it's a bit slow, so here you have
like different kind of topologies of the network and so we can see in practice how it works so
on the top you have like a traditional VPN which is basically one computer between you and the
person you're trying to speak to and in this case basically the you hide your IP address and you can hide
where you are from the internet from the person you're talking to or what sort of website you're
going but still the VPN in the middle knows exactly who you are and why you're where you're going so
this model has me improved by double VPNs or even tour which has maybe three computers where
indeed the the degree of separation between you and the the other side is like a much wider but
still by and that is analyzing the timing for example you can make timing at tax and if you
observe the whole network you can correlate who's talking to who so here the design is what we call
five hop or a mixnet which basically creates extra lag and we'll go into the detail how
the the packaging system is done but basically here you can see your enter into a gateway and then
every packet has its own own onion rooting that goes through another gateway and then finally
reaches the the other side and there's some noise which is added some fake packets and there's some
latency which is added so it's slower but it actually prevents for an observer to correlate
between the sender and the recipients so yeah so that's the that's the whole that's the whole point
the whole point is basically and and this is our wallpaper you can go and read on on our websites
you have the link over there the whole point of the mixnet is to avoid is to protect ourselves from
a global passive adversary which is going to be able to have to view the whole network or
big parts of the network and and and this is a new kind of attack that is trying to
denomize basically the your your connection so please you can go read this it's a bit slow so
the project like moved on and basically what we did is that we mixnet is something which is
pretty hard to understand for people and it's pretty slow so in order to like create some
adoption what we build also we use the infrastructure and the infrastructure of the mixnet is like
the mixnet itself but it's also like a second element which is what we call the ZKNIM the
NIM credentials basically this is a zero-knowledge proof that allows you to prove that you
have that you have the right to access the network because in this case it's an incentive network
so we built a an app which looks like a VPN app and but the app has actually two mode it has a
double VPN mode two two VPN mode which we call the fast fast mode based on wireguard an easier
fork and and then there's the anonymous mode which is the mix that and people can try out
and so you can try out the mixnet through a normal app you can also like connect directly on the mixnet
because the mixnet itself is free to use and you can connect it through CLI but for like
daily usage we have the app to make it nice and to have an entry point in one country and an
exit point in another country and and you just connect yeah so there's a whole community behind
NIM which is maintaining all the servers so the whole network of so we only provide provide the code which
is all GPL version three for the for the client side applications and what is running on the on the
on the servers and basically we don't run any infrastructure and it's the community who is running the
infrastructure so hopefully we will go we're going to provide tools so that people can share their own
personal internet connection outside also yeah and now we're going to go into the deep dive and it's
I'm going to give her the talk the mic from okay thank you Alexie so I'm going to I think I
have a few minutes here oh maybe not let's so we're going to try to explain
I'm going to put this on real quick exactly how this thing works so is this better better okay
so effectively when you a mixnet just to reiterate it does what it says on the tin so to speak
it mixes packets and by virtue of mixing packets anonymizes packets on the packet level
so as an overlay network on top of your ordinary TCP IP or UDP connection how does this work
you are hanging out your machine you're running our demon you're running it the NIM software
just like you would you know proxy to any other overlay network like Tor VPN but what you do
is you send your packets to the NIM client and the NIM client packages those packets and the equally
sized uniform cryptographically encrypted packets on your machine using something called the
Sphinx packet format okay then those packets are sent using a what's called a passon distribution
extra continuous time distribution what cover traffic will go into one second into the mixnet
itself at each hop the packet is mixed with other packets then you know after enough hops three
is what we've shown is more sort of declining returns after three every packet has to kind of mixed
ideally equally with other packets the packets come out and they're effectively anonymous next line
so how this things packet format works is a little bit like onion routing if you're familiar with Tor
you could read the paper we've done only a few minor modifications to the paper to get the kind of
crypto more cryptography more at the speed but effectively what you want to say you've got
you have a header that tells you kind of like what's you download the topology of the mixnet
we do use a blockchain that's the main use of it to decentralize the downloading of topology
you download this topology the topology is a bunch of nodes again ran by decentralized volunteers
each identified by a key you then basically do a bunch of diffi Helmins or Kims in the future version
to basically get you your shared keys then you blind each of those and then you attach a payload
and then what happens at each hop you kind of like removing one you do an integrity check
and then you kind of remove one layer and be blind so what this means is that each mixed node
only knows the next mixed node it's going through they don't know your final destination
and then also because we use a wide block cipher is called rerandomizable
but at each hop you can rerandomize all the bits in your packet so that provides what's called
bitwise unlinkability so if an adversary is watching your packets every single packet
and they're looking at the bits at each hop the bits totally change so you can't distinguish
if a packet has gone into a mixed node and it's the same packet coming out by looking at the bits
now how it works and this is sort of knit this is how it's always worked but we're actually
going to show this in the GUI the next release so this would be quite exciting is how it mixes
is again at each hop there's a delay right there's some delay it's randomized ideally and then
that delay you can kind of set the delay but again the what happens is like I'm releasing a packet
and the stream of packets could reveal my data so I release the packets I slow them down
and release them according to a standardized process that's a pass on process and that's a cool
process because I know that every time it's supposed to take my packet to get there right but each
packet individually could be like delayed who knows how long and that kind of scramble the
enemies attempt to predict when your packet is being sent or not and then you have the sending rate
so again we're smoothing these bursts of traffic we're in the pass on process we're delaying
traffic whenever you're not sending a packet a fake packet is sent so the pass on distribution
is kind of maintained and then we also have a second stream of cover traffic and this really
provides a lot of anonymity at the cost of a large slow down and so the way you want to think
about this I'm trying to speed up here is that at each mix there's a delay right so I have a I
packet it's going to mix one it's going to mix two it's going to mix three and these different delays
basically provide a is what actually provides your anonymity and what's really important is that if you
want to send let's say cool the property that's provides in terms of privacy is called sender
anonymity so the sender of the packets anonymous but maybe you want to get some packets back and you want
those packets to also be anonymous so what you do is you use what's called a single use for
apply block which is just a kind of you you don't give when you say I want packets back you don't
ideally give your home address or your address of your gateway or first node you give it kind of
dropbox in the middle of the network somewhere and you give it and then when packets are delivered
there then you send packets again and so this kind of looks like almost like a chat like a chat
and they're going to back and forth between different drop boxes of course the real quick
because every assume most people here are devs let's spend let's see what I might have five minutes
10 okay so I want five minutes of questions but let's just go five minutes on how you could use this so
get some mix net and I want maybe you want to build a app on it so we provide there's two ways
one is very traditional right which is just use your socks five local you send your traffic to
a local local host then of course you know it's sinks in the home then mix that kicks in the
gear and this actually works kind of out the box with you know software like Monero desks top or
Firefox that support socks more app support than you think however a lot of apps don't and also
you know this users may not want to cut in paste you know they're they may not really understand socks
we also allow compilation and API calls and again if you're injured if you're free software
devs I assume most you are are all the client code is GPL version three there's some a patch in
and my and my device is code in the server side now what what do you get when you kind of
integrate them you get a bunch of stuff and you don't have to use it all I just want to say
some of the stuff that we provide that could be useful for you so again we mentioned earlier ZK NIMS
you know NL net and next generation in GI next generation internet help fund some of that work
with ZK NIMS are just a decentralized threshold signature so it's a little bit it's anonymous credential
you can kind of prove things in zero knowledge but more like attribute value pairs it's useful
as a kind of autonomous authentication system because maybe you don't want like everyone
overloading your app and using it like DDoS people which of course is one great use case of
anonymizing technology do you know that we do try to you remember the PGP talk you know
we did try to provide some elementary cryptographic security for the mix that so again there's e-pocks
every e-pock the topology is refreshed it's about an hour and we refresh the keys so you have some
level for security on the cryptographic level currently between the nodes and the mix that we
use noise between you and the first hop we use a mixture of web sockets and we also use wire guard
there and then we do do censorship resistance but when we launch the app a lot of people try to
use them in countries like Russia and China and of course it didn't work because the traffic
looks really weird and wire guards blocks so forth and so on so we do provide modes such as quick
with domain frightening to help poke through censorship and it's been surprisingly effective
particularly combined with decentralization with it's not like a set number of IPs that since
are can just block so if you're interested in native integration we provide a rust SDK
a crate which is the guy from IRO as for we just provided we provide a JavaScript SDK in pmp packages
and because a lot of people need to use C and go particularly in mobile we also provide bindings for
C and go next okay I don't think my time we go into this in super much detail but effectively
what's really cool about them is because the whole thing is built in rust so I'm just going to just
quickly say because it's built in rust you can basically take the whole thing put in web assembly
you can run them inside of a website just also very useful for censorship resistance and we have
a testnet you can use as well that testnet lets you kind of test your app out without screwing up
the real world network if you're building it anything so the rust SDK has a lot of different
modules we have basically you know modules the easily proxy on top of TCP IP we allow you access
the raw data various kinds of interfaces to do all sorts of stuff and particularly to help out
with TLS hand shakes other things that you might need for JavaScript this time we go quickly
here for JavaScript we have kind of two different packages we provide all the functionality the
low-level functionality that you have in rust is provided in what's called mixnet client but a lot
of JavaScript does they really don't want to get down which I can't blame them into the real
dark layers of TCP IP and UDP so we provide a simple thing called mix fetch so if you use the
if you ever use a fetch you can just kind of drop in mix fetch and then you kind of get the mix
net so it's just fetch over the mixnet and that's very useful we found it would be a popular
aspect we are upgrading to post quantum we've upgraded sphinx already so we have a new packet
format called outfox the central trick is that we will allow users to have long-standing keys
including as necessary in macallus keys and we can substitute MLKM or whatever other variant you want
where we use curve two five five one nine right now it seems to work pretty well that will be
implemented the deployed over March we have a lot of people building apps some file sharing apps
messaging apps mailers drives I think one of our good friends over there is working on an
open WRT fork you even put nim on your router or your star link or whatever and even some proof
of concept of using it to anonymize connections that local AI AI and so yeah so we have a lot of stuff
we want to build SSH deaddrops hidden services tons of cool stuff could be built if you want to build
just talk to us we've been discussed more we have we want to try the app we can give you free access
to the app for as long as you want just stop buying grab us after the talk and I do want to think
the person that inspired us to do all this actually was I know it's a bit controversial but
joining us on's really did kind of push for us to help build this way back in the days and look
we do know every we do know that it seems paranoid but surveillance now is totalizing
every single packet can be watched and therefore we need a system which can break that break that
and I think nim is the first real world system to do so thanks so much so if we have time for maybe
I don't know one question a moment one question so we have time for a question maybe one
one question for it yeah sorry the noise that you have mentioned that you say about the
idle packets at the random idle packets you send it during the idle times yeah so what happens
is like I have my machine online and I'm sending a packet on the normal internet you just send the
packet you know you get this kind of burst of traffic because you're just in the bunch of packets
at once so what nim does we we're continuously sending packets on this kind of exponential
looking distribution so it's like this and then essentially when you're not sending packets we
fill in fake packets and so that's the that's the fake cover traffic we also have a few advanced
techniques we'll work on but those aren't quite ready yet to basically because the main problem
of nim is you run on your mobile you're seeing a lot of fake traffic your mobile is online you
have limited data plants not so great so you can we want people to just that build turn it off
and on uh next question we actually have time for a few more so uh awesome I see one over here
oh it's pretty huge right here's a piece of question real quick for the stream oh one
oh I can repeat so what's the difference between the fast mode and the mix that so again the fast
mode says hey cool we have this decentralized network let's just use it like tour and send packets
through and it's because some people they want to do things like watch video and you know we want to
support that too however in general uh mix nuts you know we're talking about like kind of one
megabyte speeds here around in terms of upload download and that's often too slow for a lot of use
cases and that's with like kind of lower level non-immediate you want higher level you can of course
wait even longer um I would say 10 seven seconds is pretty good but then you again it's too slow so
the fast mode just to be clear sends packets into the entry of the mix nut but skips the mixing
part and then send them out a decentralized uh a decentralized network on some level we take the
mix of infrastructure and we in a degenerate case push it towards something that looks basically like
tour or decentralized VPN and that ends up being very fast so that you can you can it's about
fast decentralized VPN because again with a mix nut you want to think back weird-wise it's slow
a mixing delays but that's what gives you an automatic and b cryptographic and linkability
but that requires per packet five defy helmet operations or key exchange operations and that's slow
so uh the fast mode again you're you're doing basically wire guard twice it's like a tunnel inside
tunnel so two cryptographic operations in each packet is sent to the same tunnel so it's a
basis fastest centralized VPN I think that's about as fast as you can get um yeah it's about as fast
that's that I mean you can you could maybe speed up a little bit I think if you've got rid of
all the mixing and it was just like pure cryptography I think we can get it down to like 300 milliseconds
but again there's always network latency between nodes and decentralized networks so if you're running
it like an a test environment and you can do that we we can let we give you having the structure
to do that you can make it even even faster uh hey another question so you presented a VPN which
probably tunnels IP so addresses would be regular IP addresses right via socks and so on but then
you also mentioned hidden services so I'm wondering how our hidden services address and how
stable RT's addresses yeah so again the way you think about mixing that it's a little bit different
than tour it provides an army for the sender and you can provide some an army for the recipient
via again this single use reply block flow so if you want to learn about that flow we have
love documentation on it the problem with that flow is that because it's anonymized using like per packet
routing right it's not ideal like how tour works the hidden services toward as a DHT inside
the network so distribute hash tables you go to like a tour and you're like oh where's thought
onion and you have a key and that kind of sends you there so we don't have persistent
identities within them because every packet is anonymized kind of separately and they're sent
back and forth to different kind of dead drop so again very paranoid which is good but not good
for hidden services because people just want to like I want this website with this long term
precise ID so that's actually an open research topic so we haven't figured out how to do it yet
you could if you were going to build like something that was like an anonymous chat service
like an anonymous I don't know LLMA AI bought or prompts or something I think
nimble actually would be perfect because again chatting is a bit like asynchronous messaging right
so you send something is something back you send something and each of these packets are like
self-contained and the mix that's very good at this kind of self-contained thing like signal
messages or PGP encrypted emails or crypto currency transaction stuff like that it's not so good
like giant chunks of JavaScript like websites so I think it's interesting topic to get hidden
services in someone so talk about it we I can talk a lot about it we had someone did a master
thesis on it you can build these kind of things on top of them but we don't have like a native
hidden service way but you could easily build an online chat apps that kind of look like a hidden
service on top of them that's what we recommend doing now I think that's it maybe I want to
I think that's yeah okay well grab this afterwards thanks so much a more out of applause everyone thank
you very much guys and keep the internet anonymous all right thank you guys