 So actually the thing is we're showing a talk of a person that has lost his voice tonight and so we're just recycling the talk from elsewhere, but the person will be here for the Q&A and Yeah kind of trying to answer at least the questions and And yeah, we might also decorate the talk so get started with the video Enjoy like crazy, you know IP header from where the package goes where it goes to which port it goes to That's just the beginning The result over the last 30 40 years We have built as a system is having lots of insecure default still and has rather high complexity For management most importantly it also has a lot of centralized components We have IANA that allocates IP address space We have I can't and the root zone that have to have to be managed centrally We have a bunch of certificate authorities that we use as our trust anchors And all of these are of course being actively compromised. Let's say by the respective state attackers the other problem There's two problems these things says first of all you have the administrators themselves that might be malicious or Incompetent and then they become targets. So if you have somebody who operates your network infrastructure for you He himself will become a target. So we've seen this with the Snowden revelations on stellar where the network administrators of stellar That's a satellite network provider for Africa were personally targeted because hey They had access to this critical infrastructure that could be used to turn off internet access We brought packets for people. So the moment where you are an administrator. You are also a target It's not just that you are powerful. You're also a target So not having administrators would actually be very beneficial for us as a society Because we can then effectively what we are in charge each of us for ourselves And we don't have to kind of say oh well I have to depend on this other person to set me up to hook me up to control me to Block my access and able my access whichever So I don't like administrators So I'm trying to build self-organizing systems or peer-to-peer systems where effectively it's Flat as no hierarchy. Nobody is in charge, but it still kind of works at least that's the goal Sit back used to work just a second ago Okay So here's the internet for you somewhat simplified You have the usual physical layer ethernet IP BGP TCP UDP DNS And then Google on top of it. I understand this is a slight simplification The ITF has now revised the stack as you know, we have a layer designed for the internet So we have above TCP we have TLS and above TLS we have DNS and then we have TLS above DNS That's a bit more interesting these days. That's what I'm saying. It's a simplified version Biggest problem replacing it is we can't really afford to replace the physical layer You know if I proposed that let's build that one new everybody would laugh, right? So we have to kind of start with what is there as a communication infrastructure So we just say okay. We have HTTPS. We have TCP. We have WLAN. We have Bluetooth Whatever already exists to communicate between two peers. We treat us. Yeah, we can use this But this is not reliable not secure out of order Possibly, you know people can listen in we don't assume anything there in terms of strong semantics from a security point of View and it you know may not be that anybody can talk to anybody like this internet idea was every computer can talk to every other Computer now we assume it might just be a local area network and I talk wireless network, whatever All right, just there's some physical way to communicate. That's terribly insecure and has terrible semantics Above this the first thing we do is we run effectively OTR. Hi So where the ethernet these days, of course, there's no encryption everybody can fake a MAC address Everybody gets proof of MAC address, you know, everybody can listen in we first one OTR on that layer just to be done with You know basic programs like tempora Then we do decentralized routing on top of that so a distributed hash table so There are a bunch of ideas we have currently the R5 and DHT. I've been talking to people last week saying oh I've got even something better. I say well show me that it's better and we replace it But you have a routing algorithm that is decentralized Then we do end-to-end encryption, of course again So this is effectively accidental providing an STTP like interface for those who know don't know STP think TCP or UDP and all Of these variants combined Then we have an alternative public key infrastructure called the new name system On top of this we build applications and that's then roughly the new net at the same level of simplification So what I wanted to do today is effectively give you a fast tour de force through various new net features and The motivation for me was if you want to try to build systems or try to build a better internet I want to give you an idea of what we have as a starting point and you may say well That's not for me. I'm not building systems. I like to attack systems. Okay. Well, you can also maybe try to attack it That's fine, too but if you want to know what is all there what are the various components are there I want to give you an overview and Because I'm only having 45 minutes and not 45 days or something like that for 45 hours at least And usually presenting one of those in depth takes about half an hour to an hour I decide what I'm just gonna do is and tell you what they do not how So it's a bit unfair right from a research point of view. I want to know how does this work and the answer is in most cases Well read the paper Okay So the start was a the lowest layer which is kind of shared for everything That's our abstraction for the system interface And I'm very much looking forward to a working ethros that is Universally available and has all of the basic features we would need to build a system because then I can simplify that dramatically so here we're trying to both work around the atrocities in the sea language and the atrocities in the operating system interface and making it work on free BST linux and windows and nightmares right, so You know It's not Great you have to do it this way and it's awful complexity. You wouldn't want to have That's why I'm looking very much forward to either or solving all of those problems for us But for now you can just run it on a standard system Thanks to a little utility library Then as the other foundation we have of course a couple of cryptographic primitives You find the usual things and number generation symmetric encryption hashing elliptic curves Signatures homomorphic encryption blind signatures You know some of the features you might commonly see in slightly more advanced network protocols Now that's the foundation Then one of the key things we wanted to make sure is that we've got good compartmentalization. So we have lots of Code and we want to isolate the bugs So if you have a problem in one layer you don't want it to affect the other parts And a lot of the code is written in C some code is written in Java Some code might be written soon in Rust and so we want to have different languages We want to be able to mix them so we run all of the different subsystems as a separate process Which means we can set for each process different Policies for the operating system so I'm a profile that say this process doesn't need to write to this So it should never do so this process doesn't need to communicate with the network So it should never do so and so even if in this individual process you have a particular bug The policies that you can set for the process can restrict what it can do or badly could impact things Not to mention of course if you try to understand how the system works You can look at this each individual process audit them individually and not have to worry about how do they interact? Because they have a well-defined inter-process communication to face to interact with each other So the result is effectively if you want to clear these days you're running like 50 processes Now running 50 processes starting them by hand in the right order is a bit messy So you have kind of a master process. It's the arm process Named after a subsystem that IBM had in their OS 360 Which is like system D and that starts all of the other processes when they are needed That's just kind of like a hypervisor process So if you what you need to know here is if you want to start the system you do is knit arm minus s and minus e to stop it Because you don't want to start each day of these services individually and Then the services among themselves communicate via effectively remote procedure calls Typically on Unix domain sockets if you are in a Unix system Okay The lowest level service that we have is the transport service Here we effectively say okay. We need to establish these communications with other peers and We don't know what is below right below could be TCP could be UDP could be an IPv4 IPv6 Address could be HDP could be HTT S could be WLAN could be Bluetooth whatever So we have a pluggable architecture and the semantics that the transport effectively supposed to provide is unreliable Unencrypted out of order, you know best effort kind of semantics what you would expect from Ethernet equivalents The service has a couple of additional functions like it's supposed to enforce quotas So if your user says don't use more bandwidth than this we can enforce that there We do stuff like net reversal. We can just say I only want to be visible to certain friends So I don't know if you know the situation in Russia for a couple of years It has been effectively illegal to participate in these kind of networks So you really want to make sure that your peer doesn't quite appear on the network as I'm participating So you can say well only established connections to other friends Maybe I'm running as an HTTPS reverse proxy So I'm you know behind the website and everything that comes to me looks like it's website traffic So there might be some ways to hide your presence in the network as well there The system also supports finding other peers so we can do UDP broadcast So IPv6 multicast to find other peers and local area network to connect to it as a bootstrapping feature And it provides of course basic performance information on how well do we do when we talk to certain other peers right now? Now one problem if you have these all of these ways to communicate is you have to decide which one to pick So if I can communicate over TCP or UDP or HTTP I have to sometimes pick one and I have to allocate resource I have to decide how much bandwidth am I going to use for my communication with this peer Or this was that peer and of course the network might not allow me to communicate with EM as a hundred gigabit per second But maybe it's okay to do this with Tanya because she's at a university in Europe and he is not right so Selecting which peers to communicate to do we optimize for latency? Do we optimize for bandwidth these decisions are made by the automatic transport selection subsystem We're effectively the applications kind of say these are our current communication preferences These are the peers we really would like to talk to if possible, you know I'm currently trying to do a voice conversation here So maybe you if you can give me something with lower latency that would be good I'm trying to you know, just send a big message here, but it's not urgent So maybe give me lots of bandwidth so the applications can voice these different preferences And this guy is kind of supposed to try to globally optimize and trade off between the various applications one of the higher layers Come on Okay, so about the transport We then effectively have to establish secure communication the first layer. That's the OTR implementation And basically it does two things it does the encryption and at the same time It says if there's a peer that doesn't speak the same protocol as the higher level application So if I have one peer that does whatever voice calls and another peer that doesn't support doing voice calls They effectively hide that this peer is even a network from the other from the application point of view Then we have a very simple service called the hostless service Which allows you to bootstrap the system by downloading a list of existing peers from the web? Okay, that's very boring On the other end it's one of these things you do need in practice to bootstrap things We have several methods to bootstrap you can have multicast you can have broadcast discovery in the land You can have some set of peers you ship with your peer initially You can manually add peers but in practice most users of course to bootstrap by saying hey It's their web server that can give me a list of peers I can start with and then afterwards Of course they can gossip and learn about other peers in the network, but you need to have the starting point in practice Once you have all of that you kind of get the very basic functionality of you know, I have I'm a peer I have a Verified connection to the peer at the peer has a certain addresses and I can Hear these are you know verified addresses this peers available at these addresses over say UDP or TCP And it's currently been picked the UDP to transport to talk with this peer That's just a simple visualization of what you get from this basic layer Now this is not particularly interesting, but if you want to build a peer-to-peer network This is all you have to do to just start with because if you haven't done this if you haven't done that traversal if you have Doesn't haven't found done peer discovery or any of this stuff, you know, so a lot of work to the start with Okay Then we have a very fun subsystems a network-sized estimation Basically, it gives us a log n of the estimate of the size of the number of Pearson network So you can just ask how many peers on the network and tells me an estimate of that and does so in a Byzantine fault-tolerant way. So if you have malicious participants, they cannot change the result. It does so in a denial of service Impossible way as in if you are an attacker and you try to use the subsystem to kind of spam the network take it down That doesn't work. So big problems as previous approaches So it's extremely cheap Byzantine fault-tolerant And if you have a malicious attacker, of course, you can run a civil attack if he you know buys 10 machines and puts Them into the network. Well, yes, we will look like we have 10 more peers Right, that's not really a very strong attack And the API for the program is also very simple you call this Network-sized estimation connect give it a callback and it tells you our current estimate is 10 peers our current estimate is 15 peers our current estimate is 320 peers and it gives you a Senate as dev deviations you have no so, you know how close it's likely to be to the real one The reason might be needed to have this network-sized estimation other than being curious about how big our network is Which is one of these questions people always ask Is that for the distributed hash table? It's an important tuning parameter So this is your test tables basically you store key value person over the network They're being replicated. So if some peer that was storing one of these key value peers goes goes out of the network It's not immediately lost You can Good way to wake everybody up. Okay Should have some water You can have multiple key value stored per key The basic key difference of this DHT to many other DHT's is that effectively does not make the assumption that every peer can talk to every other Peer All right, so remember we had this underlay on the transport layer We said this could be a wireless ad hoc network This could be an IP network where I've got lots of firewalls lots of restrictions where the ISP says oh You really can't talk to this guy and the DHT tolerates that that's the key property that we need here Because we want to use this to establish routes between peers. So we can't assume that routes already exist The complexity is not that great. So if you look at the overall complexity is squared and log n for a lookup Taking order of log n hops. So it's not great for denial of service I've been told somebody has gotten something that they believe is secure at polylog So I'll be very much for looking forward for that But in practice it's so far for the skills we're talking about is dealing fine. So we did experiments was up to I think 100,000 peers and it was performing just fine, you know five six hops But of course the question is once you go internet scale square root n might still be awkward So anybody who has better ideas how to do it Demonstrated the API in the end is very simple. You have you know get I have a key fight find me the value put store key value pair now one of the key things we have is When you do this there is this one DHT. It's going to be used by many applications And different applications will have different semantics for what these values are that are being stored in this thing and the DHT It allows you to say is this value actually correct for this key for this application? So if you have an application Like they will see later that the PKI you might say okay I can verify a signature here, or you might say the value has the key has to be the hash of the value so this kind of how If the application has a particular way how this has how what the relationship between key and value has to be like You can say dear DHT. Here's a method for verifying that this relationship is correct and That way the DHT will not spread values that are Malformed and that can be key for performance because if you try to look up a key value pair that should be properly signed So that no malicious person can put in a value It's important that within the DHT already bad values aren't propagated as opposed to you at the end getting all of the garbage of somebody put spamming A value with a bokeh's bokeh's signature and then you going oh this is all garbage throw it away throw it away Find me the real one right if it's already discarded in the network at the first non malicious peer That's an important feature to make sure that bad values don't propagate Yeah, so then we have on top of the DHT we effectively use the DHT to find a path from One peer to any other peer effectively every peer can say I am here You know, this is my peer identify puts a key that put does a put of his key into the DHT I should we trace that path if I find you'll get on the same path I have actually a path between the two peers and can thereby establish an end-to-end encrypted channel We do this for several several times We get several paths between the different peers and then establish one end-to-end association that we use axolotl to protect The conversation between the two peers In the end for the applications very it's very simple. You have kind of like a listen API where you say, okay I'm waiting for incoming connections here. Please connect to this peer and then you have send and receive between the two peers peers so far for us are Identified by the public key, but they are not the same as users. So again, we have a peer which is a Set of processes running on a machine and then that peer might be used by one or more users Where users again, they might be just pseudonyms or might of course be no users associate with the peer as well And again the users are identified by public keys And you can have many of those and the identity management effectively just says, okay I have this is my set of private keys for my user identities as opposed to my peer identity Then these identities are used in the public key infrastructure, too So you can name users name services with the name system. It's a decentralized name system where we have secure memorable names So your names can be Structured like in DNS so you can have you know Alice Bob Dave no that's a delegation chain and that that securely identifies this user We can have globally secure unique secure identifiers similar to what you have in dot onion What is key here is we have query and response privacy So when you do look up a name unlike in DNS or DNS sake where whenever do you do a query? It goes out in the clear the servers know what you're looking for You know, everybody can see the reply and of course in case of DNS even changed the reply here We've got effectively Private information retrieval except that the confirmation attack is possible So kind of combining the two of your things confirmation attack If I know what you're looking for I can share say well, this is exactly the response. Everybody would get when they look for this user on the other hand If I do not know what they're looking for under nothing have private information retrieval For for the name lookups It is interoperable is DNS So we made sure that you can put Senate DNS records into the system even though of course in practice We will mostly put records that are specific to peer-to-peer applications into it Again, if you want to use it, it's rather trivial You connect to the DNS resolver and then you can do lookups and you get your results back as they have become available Here's an example for you for a little application for your zone management. So for example here I have my different zones my private zone my Master zone here and in that zone I have labels like in DNS and I have record types You have put in an a record an IP address I have an expiration time and so you can manage your zone stuff like you would in DNS except that you have more record types When you have keys you have to possibly say okay my maybe this key can be compromised or can be lost So we have a key revocation protocol here unlike Other TLS like key revocation protocols the overhead only happens if you have to revoke a key If you have to revoke a key you have to do a proof of work calculation So you can't do this too much and then you flood the network with your vocation certificate all the peers pretty much instantly learned This key has been revoked and then there is no delay to check Hey, dear certificate authority has this key been revoked. No, you already know it has been revoked So it's an extremely efficient extremely fast check to see has this key been revoked and The cost is really only there if somebody has revoked a key. Otherwise, it's free Again, the API is rather trivial You can just say hey revoke this key and you can say hey has this key been revoked so then we have a Very generic Mechanism in there, which is the set service the set service You can think of mathematical sets and the set service allows you to say I have two peers This peer has a set with other peers a set Let me compute the set intersection or the set union and effectively efficiently gives both peers the differences to the desired Set union or intersection from the starting sets that the two peers had One of the things we use the set service for is to build a scalar product service So here the idea is that we have two private maps So Alice has a map a to some numbers Bob has a map b to some numbers And we want we want to calculate is over the intersection of the two maps the product of the a and b values The current implementation is very bandwidth efficient takes about hundred bytes per element to the scalar product The computation time to do this is in milliseconds and the nice thing is it it's a secure multi-party computation So if you have these two vectors you only leak the result and what you can derive from the result to the other party And of course I'd like any secure multi-party computation it assumes honest But curious adversary if one party lies about their scalar vector, you know the result is garbage Again very nice API. You just say okay. Here's start this computation Here's my vector or I'm waiting for somebody else to do a computation with here's my vector and you get the result back currently working on a protocol for secure Byzantine fault tolerant random peer sampling here The idea is I want to get a sequence of random peers and network Just give me a random peer in the overall network without using Essential service as a protocol called Brahms that was published a couple of years ago And the basic goal here is ultimately to be able to replace something like Tor directory Authorities where you have a well identified small set of users that if you compromise those you compromise the security of any system That relies on my new peer sampling so if we can build this in a very decentralized way That would be a benefit in my opinion We are also currently working on a multicast primitive where the ideas I have one user who wants to communicate to a large number of other users To to notify them of some important event in the public subscribe fashion And again the key is here to make sure it's end-to-end encrypted But that the source if you have a million other peers to communicate and intercom any Inter-intercripted way with you can't afford to do a key exchange with every member So we have to kind of decentralize the key exchange Building on the fact that we can trust members in the group to not Faults to spread the information because of course they could do that anyway because they can just be cryptic So we can help ask them to kind of help with the key exchange and keep management Over the multicast we're building with psych to a XMPP like messaging protocol With extensible syntax and semantics So if those familiar with XMPP here it's a More efficient encoding and it has the not just the extensible syntax that you have an XML But you also have kind of inheritance built in like from object orientation. So if you Refine message types applications can say, okay, do I understand this refined message type or do I handle it in a more generic fashion? Using psych to we're then building social networking applications Where again users can We have some kind of generic concepts that map to existing social networks. So you have users in the network, so what you would expect so we call them names because I can have of course many identities in our case We have places where the social interactions happen This could be like your Twitter channel or your profile or a chat channel So it's just where the interactions happens a place has to have a host That's kind of the source of the multicastry is the guy who controls access And you have guests who are visiting the places and then you can enter places leave places you can have the host accept guests or Refuse entry as a guest you can talk to other users a place can have a history So you can look at what is the conversation history at a place And you can inspect kind of the state of the place which might for chat be the subject or for a profile We know the image of the owner or whatever So using this generic API where the nymphs and the naming of users use the glue name system as a pki And we use psych for communicating the state of the channel and sending the messages out We believe we have a very generic protocol for building all kinds of social networking applications So this is there's a Student of mine who is building second share versus the first social networking application. I asked him to send me a screenshot But he didn't yet Okay Then in the system for research purposes we have built in some basic ability to collect statistics So you can just say I have an interesting event collect this number of peers. I'm connected to collect this In a number of packets I have received and you can of course plot them then This becomes more interesting when you look at the test bed infrastructure So we have the the test bed subsystem which allows you to launch many peers easily So you can say I want to launch a hundred or a thousand peers on my computer Or here's the cluster take these 20 machines launch 20,000 peers on that cluster or have a supercomputer here Please launch a million peers on the supercomputer you give them the resources to tell here's the job control You say what is the network topology you want you say I want you know the ps3 connected like this I want the following Additional processes to simulate user activity to run here these statistics that I'm creating with the statistics up system Collect them to me in the end so I can have some outcome of my experiment And then you can launch this and run experiments to see how the network would behave if you had whatever number of peers Under whatever scenario you want to evaluate Then we've built applications using names like conversation which effectively Uses the group name system to name users and we have Use opus to encode the voice stream and cadets who have end-to-end encryption And then so here's an example you pick Who you are so here I've just picked my default ego. I have my address book Down here, which is again just like a DNS zone And then here I would have my information of who who is actively calling me and I can also specify who I want to call So for example here could type in Call Alice dot Bob dot new click on connect and then it would establish a phone conversation to that user Here one thing that would be very interesting to maybe was a question of privacy to have something like dp5 for presence Because so far we only have a DNS like the name system look up off the public key and addressing information of the target user We can't show you all these users online right now because we don't have dp5. Oh, and yeah, it still hasn't it doesn't have ringtones It's a waiting for two years for some guy who said I have ringtones for you and I said send them to me never got them But you know it's end-to-end encrypted, you know great public key infrastructure phone application without ringtones Okay Then one of the first applications here for that was anonymous file sharing I Don't like the term file sharing in what we call it publishing of course these days, you know in publishing is a good thing Sharing is bad as we have learned from industry So We use we break up the files into blocks so we can stream the blocks for multiple sources at the same time Like in the new name system when you do a query It's encrypted so the people who are answering the query even if they're just routing the request all the response Don't see what you are downloading or transferring We have a mechanism to kind of track which peers are answering our replies And if they do answer our request price a lot then we will prefer answering their questions when they come along Of course we support keyword search we have a file method is available as part of the search results So you can already have previews or see a bit more than just a file name You can share a directory and then mount it via fuse the file system in user that extension of the Linux kernel There's apis to access file sharing is command and gtk who is for it Yeah More fun stuff for searching The previous one was just searching with keywords here. We can search with using regular expressions So you can say okay. I have this regular expression. I want to find anybody in the network Who has poppers in a regular expression that matches my search string? And effectively it uses the distribute hash table to look up Peers that have published that they are matching this regular expression The API is rather easy to use you just say I have you know this regular expression that could be found and you know search For somebody who has who matches this regular string But you have to read up on the regex prefixes before using it I had a team using it and they didn't look at the need to prefix the regular expression with an application specific prefix Which we use so you know this is this application of that application and then the performance goes to hell So read a bit up before you try to use it We use this regular expression search to Oops, it's tomorrow later. Okay first. So we have a DNS integration where we can effectively say if you want to use Have an application that still uses DNS But you want to use it the new name system for it. We can kind of grab your DNS traffic and modify it on the fly We use this to implement NAT PT For IPv6 IPv4 migration. So if you have a machine that says, okay, I'm only on IPv4 network But DNS gave me an IPv6 address pack and I can't connect to that We can effectively fudge modify the DNS reply, you know route the traffic through the new net and perform that PT for Protocol translation So this was Yeah, so so here you're running effectively now IP traffic over GNU net Right, but you might say why would I want IP traffic over ground if I have IP below But first of all, you may not have IP below if you're running over Bluetooth or wireless Networking right and the other thing is this IPv4 IPv6 Well, some people only IPv6 can't talk to IPv4 and some people only IPv4 can't talk to IPv6 So this one migration mechanism you can Offer this way Not to mention in the end One thing you can of course do with this is you can run like Tor hidden services where you have your machine offering an IP service In the GNU net and you route to that IP service over GNU net Except for this tour you can only do TCP here. You can also do UDP and ICMP Then we've built a Byzantine fault tolerant consensus protocol Here the idea is you have Threshold cryptography involved so you have a certain number of malicious participants you can support you want to compute the union of The sets of all of the participants at start So I have you know and participants they have a certain set and I want to compute the overall union of all of those sets Unlike other consensus protocols where you compute, you know a value or a state machine here We really explicitly focus on set union We have the usual constraints, you know you have to not have too many malicious participants We assume In terms of communication Partial synchrony as in we can say there is a bound on how long messages can take over the network If you don't have those kind of assumptions synchrony is a bit too strong No, no synchrony and you go get get go anywhere anywhere anywhere anymore and So then we have Byzantine fault tolerant consensus using that we can build kramas at electronic voting where we have The usual properties of its of course most are being counted correctly So the I should say the votes are effectively what you do the set union over right if you have the Byzantine consensus You have these voting authorities as opposed to compute the result of the vote and you first You know everybody submits their ballots and then you have to do the union of all of the ballots to make sure that everybody starts The same set of ballots to the secure multi-party computation on so here you get correctness you get secret secrecy of the votes You get individual verification you get universal verification you get fairness you get robustness you do not get coercion resistance So an adversary could verify that you know hey, I asked you to vote for this party and you didn't right? So that that's what we do not get here But otherwise, it's a it's a reasonably efficient protocol if you can It's not fully decentralized in the sense of of course You still have a set of voting authorities that are going to collect the vote into the secure multi-party computation Which is typically smaller than the number of users and most importantly you still have to have a supervisor The supervisor supposed to say what are you supposed to vote on you know? Somebody has to decide what's the question we're going to answer in the vote in the election right? And some supervisor mechanism has to be there to decide who is eligible to vote So those things we didn't decentralize in that sense because that doesn't seem to make too much sense for an election So then for most of not for most for some of these services we started to build restful APIs So you can either access them using a C library using inter-process communication or using HTTP with Jason And there are some people who are building effectively identity management solutions for web applications using The restful API, so that's why they did this So now we're also starting to build a payment system I should emphasize payment system not a new currency. We're not trying to do another Bitcoin in our case what we want is It's a bit not so much in it anymore because it's not peer-to-peer And the key reason is that we want to be able to say Income is accounted for the state can say when you're ever you receive income because we believe that the state should be able to tax you on that and to be able to say these are illegal uses of Payment systems you're doing you know tax evasion you're doing weapons smuggling anything like that And so the receiver of money should not be anonymous And that kind of requirement means for us that you can't be fully decentralized on the other hand when you pay You should be anonymous And that's what we improving this taller. It's based on strong But with some improvements The overall system looks something like this The various dependency graphs between the various components. So again, this is simplified Right and I go oh my goodness and he said the existing thing was complex Now I want to give you a little bigger shocker So this is new net and if I put this on top of the existing Linux system You know that is here when I do the compilation on an operating system like new gigs These are the dependencies in the graph between the dependencies of what is below us Compile time and this is what it looks like at runtime and When we looked at it more closely turned out that this distribution didn't actually build all of the optional things Now you might say oh my god, what did you build? It turns out that some of these things are very simple. You know, I think this here might be curl, right? So libraries that are absolutely standard have themselves sometimes really crass dependency graphs Right. So if I just show you the full dependency graph the problem is usually don't see that All right, it still exists in the systems we built independent of new net Okay future work there are a couple of work in progress is in there we want to add onion routing guns We have Brahms working. We want to have more synchronous messaging. I want to add secure auctions news distribution timeline construction Collaborative editing multi-parted in your programming lots of new things that we can build cool applications with Anyway to conclude Provides some foundations for an alternative network stack We need more work, you know SMTP 2.0 isn't there tour 2.0 isn't there web 2 3.0 isn't there And of course there might be lots of primitives you might say oh this could be a cool thing to have I would I would like to have DP5 for example in there at some point I have to see exactly how we're going to do this but this kind of protocol would be interesting to have And if you're missing something, you know, we feel free to help us The nice thing is the architecture is very modular as you've seen all of these Things here are really separate processes. You can separately understand them and use them or replace them if you have something better so With that I want to open the floor for questions Thank you Christian so other questions. I love sex Okay, well may I just thank you for listening to the recording Carlos bring this on me this at noon And I just told him I don't have a voice Not to mention he didn't even tell me that I was supposed to give this talk before today But I'm happy to take your questions now. I was done with the first questions First question. Do you want to add something since then what we just saw and now things changed? anything Errata maybe No, there weren't anything really wrong with what I said, of course a couple of things have gotten better But nothing really that has to be added at this level of detail. No Okay Then I will ask the audience audience. Do you have any questions? That's a that's a good sign. Yeah, I told Carlos the talk was killing As in killing the audience and I should say there is there is now one new thing Which is a little 180 page document, which is this kind of a summary on the technical side. So hello How many participants already in the clue net? Please repeat the question Knunet has this network size estimation module, which this morning gave me like a hundred and sixty peers in the network Which usually means, you know, I only run one pier I suspect Carlo doesn't run more than two so That's probably about as good as it gets and it's a secure network size estimation So it's very hard to fake that number So it must be about right, but it's of course approximate How does Knunet relate to tour is it an alternative or is it mean there's an base layer to run tour? I can't understand. Is it an alternative to tour or is it mean there's an base layer to run tour on top of? It's I would say it's an alternative to tour even though maybe don't do onion routing yet If we do onion routing the plan is to do it differently from tour in particularly without directorial authorities To decentralize that aspect and to not reinvent the wheel But again tour also offers you this one thing onion routing and as I hope the talk has given you is we use very different kinds of Primitives different cryptography different things to build different applications and Noonet is not really supposed to be used with a web browser either Other than if you use this VPN where you run IP over Knunet, but that's not the vision where I want to end up It's a bit more of a radical rewrite not an add-on to the web But of course you can combine it with tour right so you could run Knunet peers over tour But the tour people don't like that because it uses lots more traffic for the network and For Knunet is of course making it even more slow and may not get you as much as what you want right, so I Do I have a question and I come up on stage? There's one slide where it says that it's about voting and One and the properties and once one slide says secrecy is given which means that I Cannot know what the voter voted for But then yeah, also there was not given Coercion resistance. Yeah, but when I do not know what the voter voted for how can I coerce or some? The idea is that you force the voter to go up its private key Also, it's not a verbal thing. It's more like yeah, yeah coercion You know if I force you to give up your core secrets and then I can tell and The idea is if I know that he has to vote differently and I go to him and I beat it out of his computer Then I can get to it and coercion resistance systems are those where you? Afterwards nobody can get it get the answer back from you plausible deniability something like this Yeah, but in a very strong sense the sense of that even if that you can't give up what you voted for you Can't prove it even if you chose to Okay, I understand And you quit I did this is the hot seat that has a tradition of me asking three questions difficult ones I think they're difficult to answer, but mostly it sounds that there was the first one the second one is when What how do I install GNU net? Get clone Auto recon configure make make install and then Then it's running Then it's compiled and installed to run it a good at arm minus s Um, how do I find you on GNU net then? You don't I would like to to communicate with maybe links over GNU net. How do I do that? Are you running your psych thing behind some I have a psych server running on a GNU net node So if you know my GNU net node you can log into my chat server Okay Well, yeah, thank you Audience any more questions? I will ask the two of you. There's a next talk coming up, right? Yes, and it's still related. It's still very much about the same topic Similar similar. We're talking about scalability and we're talking a bit more about secure share Which is only briefly mentioned in his presentation Okay, if there are no more questions to this topic give us five to seven more minutes to set up the I Just need the slides and we can start Okay, so we'll be back in about five minutes. Thank you. Thank you