Workplace Messaging Using PSS
Devcon·Sun, Oct 7, 2018, 12:00 AM
Workplace messaging today presents various trade-offs. Companies want their communications to be secure, convenient and real-time while retaining control of their own data, without having to rely on any third party infrastructure or proprietary software. Beyond mere encryption, companies also want stronger protection against surveillance by government or competitors. Mainframe is developing an open-source messaging platform that leverages swarm/pss to allow companies to achieve these goals. We will briefly discuss the challenges and opportunities of decentralized messaging in the workplace and then present a demonstration of cross-platform group chat over pss. Speakers: Shane Howley, Carl Youngblood
Transcript
they have been really active in the Ruby community in the past and I co-founded an AV production company that you might have heard of called confreaks that did a lot filmed a lot of events in that community I'm also really into blockchain ever since I first heard about Bitcoin back in 2010 I was a member of the London aetherium meetup in the early days where I met Victor over there it's really great and also participated in the presale and now I'm really excited to be with mainframe where we're building a fully decentralized messaging platform for businesses and as almost every presentation is said so far if we find favor with the demo gods we're going to show you a sneak peek of what we're working on I'm honored to be sharing the stage also with my colleague Shane Holly one of our lead engineers so you guys might want to get out your laptops because we're gonna be doing a collaborative group chat session at the end of our demo so get excited for that collaboration tools today present various trade offs companies want their communications to be secure convenient and real-time but they also want to retain control of their own data and they don't want to have to rely on any third party infrastructure or proprietary software beyond just encrypting your data companies want their communications to resist disruption and surveillance could say the same for individuals as well these we also want to achieve convenient and secure messaging between organizations so if you're running on a fully decentralized messaging platform it means you should never have to ask who's IT are we running on not only that we're trying to build directory services that make it very easy for organizations to share contacts with one another and to manage their own contacts mainframe is trying to do all of these things essentially we to create a decentralized slack with dark routing and a few extra features besides we want it to be a compromise free messaging platform for your organization and we're thrilled to be working with the swarm team to make this possible so just to give you guys a little bit of background on the company we're a team of twelve we're headquartered in London and for the past two years we've been working on a micro format based real-time messaging platform and we're now leveraging this experience to move into a new phase of development that will be fully decentralized so one of the first questions I'd like to get out of the way is do people really need messaging that's this secure we heard some details from Louis about this this system is not just encrypted but it can't easily be detected or disrupted so as we've seen in recent years the threat of dragnet surveillance and corporate espionage are greater than many of us realized but we actually think that there's more trivial and mundane reasons for us to want this level of security in our messaging well it's possible for people to run their own email servers and to use PGP for all their messaging hardly anybody does this and when you're interacting with other people who don't you have to trust numerous third parties who may or may not have your best interest in mind or who might not always be reliable some of you may remember not too long ago slack went down in the middle of the u.s. work day for quite some time and even if these organizations do seem to have your best interests in mind there's no guarantee that they always will and besides that emailing somebody at a managed domain means that the manager of that domain can also see your communication so even if you trust the person you're talking to there may be other people in the chain that you don't trust true user sovereignty means that we minimize the level of trust and the technical ability required if your app isn't easy for non-technical users all the amount of security in the world isn't really gonna help you fully decentralized messaging also means that it's less likely for companies it's to be seen by people who shouldn't have access to them and it protects companies from accidental or forced disclosure of private information these kinds of concerns are actually kind of a big deal for IT and tech managers a recent security journal said that 73% of InfoSec officers expected to experience a major security breach within the next year so let me get into some of the architectural strategy and and challenges one of the first questions that we faced as we were beginning our transition to fully decentralized development is what do you do about those dependencies for which a decentralized solution doesn't exist yet so our general approach to this is you know you kind of have a chicken and egg problem so our generalized approach to this is that in the long term we want to build and contribute to decentralized infrastructure projects like swarm but we also want to provide our users with a pragmatic short-term solution that it that retains as much user sovereignty as possible so now we're gonna look at a little bit of what we've already accomplished here first we have mailbox scene services that we're working on by default in swarm your messages are ephemeral if they come while you're disconnected or you want to retrieve them on another device or you want to search through old messages you're gonna have to have a mailbox in service and we're gonna download this feature in just a moment we've also developed a lot of expertise around real-time messaging and we're gonna leverage this to make an amazing cross-platform app for group chat and we're going to show you this too so I'm now moving into the demo portion of our demonstration our presentation I'm just gonna describe a little bit of the architecture of this demo we have a swarm node we have a mailbox service running beside this swarm node in the same electron app that we've packaged for the desktop and this service is exposing a graph QL API that the clients talk to to get updates on messages and to retrieve old messages etc and we'll be demonstrating both mobile and desk absence so now I'm going to turn the time over to Shane for this demo thanks Carl hi everyone we're now gonna look at a demo of our prototype messaging client using PSS in one moment okay so just to describe what we have running in this machine we have a cluster of swarm nodes running these terminal windows and on the other screen we have a few switch over on this screen we have some instances of our app and each one of these is connected to one of the swarm nodes that we just saw so each one of these instances connects those four nodes using an RPC interface and maintains a local database of all the messaging protocol data that is sent or received over that interface this data is then exposed via graph QL server and that data is used to feed the UI but as Carl said just the graph QL server could be deployed in the cloud somewhere as a standalone service so you could have like light in desktop and mobile clients okay so in order to start a conversation we're gonna need the user's public key that we want to talk to so this public key is used to encrypt all the messages that are sent to this user so if we copy Carl's public key here we can send him a contact request now what's happened here is I don't know where Carl is on the network so I send a broadcast out over the network with a payload that um can only be decrypted by Carl containing my public key my swarm address and my profile so he can see who's contacting him but right now I don't know anything about him but if he accepts the contact request his client will reciprocate this handshake and we can start chatting so what you've just seen here is the decentralized messaging hello world to make it easier to add a context we also have a mobile app that we can use to read the public keys from QR codes so what we're seeing in this screen here is a mirror of the display with our connected iPhone here and the iPhone can be used to hook into the graph QL server that's currently running inside these electron apps and so in order to connect to the graph QL server we just need its IP address and for convenience we can get it from the profile and now if Carl shows me his public key we can scan it and we should be able to start sending with some messages and hey and you can see that the data is mirrored between both connected clients so that's an example of the the mobile app that we have so now we also support group messaging with channels so let's create a channel now to talk about engineering so we can select - we want in the channel now I'll explain a little about this privacy level so this actually first a head of routing is done inside this form cluster so the dark routing uses no recipient addresses going back to what Louis talked about earlier and this is useful for for providing plausible deniability receipt for the true recipient and disrupting potential surveillance whereas the direct routing is a more traditional shortest path style routing that we're gonna be adding you know additional levels of darkness and and configurability around this feature but really right now this is the only group chat kind of platform that provides you with is this sort of dark networking feature that you get things to swarm and you can also notice here that even though it wasn't connected to Adam I know about him though from joining the channel and if I want to make a direct connection I can do it from here now mainframe we've been working on rich messaging formats for a while now and we've adapted some of our favorite features into our decentralized demo so one of our favorite features is actually attaching action items to messages so we can do that using the action button on the input bar and we also have real-time typing notifications that you can see down here and we also support file uploads and we've actually implemented this using the swarm file storage so if we click the file upload button select the file it uploads the file interest form and when the message is sent we just send the swarm hash of the file so that the clients can just use the swarm Chunk requesting to get the file if we send an image attachment we actually just showed in line so this is just a sneak peek at some of the features that are going to be in our decentralized messaging product and now I think we're going to go over to the audience participation section so if everyone has their laptops ready what you'll need to do is connect to this Wi-Fi network that we have set up in the room mainframe PSS so change your Wi-Fi this is a desktop as a laptop only demo rise to this URL 10 0.02 and you should see this beautiful webpage you can download the app using these links here and so if we open our alright so just to tell you about the cluster were running 50 swarm nodes in a cluster on this web server and when you open up the app you'll be assigned randomly to one of the swarm nodes and you'll get a random profile so if we open up the app okay we're gonna download it okay here we go so we are on a Tiffany and in order to get access to our public key if we go back to the website you can see a list of all the users who are currently connected so this is us here if you click on any row here it will copy the public key to your clipboard and you can make contact requests so we have some coming in there already and so jump in and we'll get a group chat session going but for now I'll hand you back to Carl alright so while we're accepting new chat requests from all these lovely memes I just want to tell you guys a little bit about some future directions that we're thinking of going so one of the things we want to add is the ability to search through your message archives we're also looking at easy deployments to either your own infrastructure or to our managed service if you prefer a more turnkey solution we're looking at we've been working for a while on a bot marketplace that will allow people to buy and sell extensions to the platform and a bunch of other features we'd love to get your feedback and your ideas as well and the demo that we've been showing you today is also going to be open source and you can play around with it so stay tuned for news from us about that but for the next little while I think there's a break after this so like we can just go to town on these chat sessions guys let's just just go for it oh I guess a few people we've already started our session so oh and please keep it clean you know keep it safe for work you know go fans [Music] if someone you know is if some new activity has occurred it shows red yeah any yeah yeah that's right yeah and that that is one sort of hand waving portion of the demo is that we're not actually encrypting the uploaded content but thank you yeah we we love the swarm team glad that they're helping us out it's awesome oh that's I love that I love the gifts keep them coming they're great yeah any other questions uh-huh back here just yell it out it's great earlier in the prayer in the previous presentation it was mentioned that the the message isn't guaranteed to be sent so in this act and it should be handled and on the application side how are you guys handling that that kind of situation and then also for files how are how are you maintaining that that file will stay around for a longer period of time so eventually Swarm will provide more guarantees that you are ways of guaranteeing that a file is retained and stays and you can sort of pay a little extra for that so I think there are certain things in the incentivization layer that will make that possible remind me your first question again oh yeah so right now we're just kind of hoping that the message gets there and if it doesn't oh well but we'll probably bake into the client some type of retry ideas maybe some sort of acknowledgment that that at least sounds like a good idea offhand any other questions yeah oh so there it does not actually preserve the message order so in some cases we may find that some users have a slightly different view of met the message order than others although there may be we've talked about some ways of sort of replaying history in a peer-to-peer fashion so that spears could like say well I know this much about the group this group that you just joined so there might be some ways of sharing common views of the world but those views would still be confined to like the individual peers and what they see and we think that for most real-time chat situations that's probably sufficient but you know there might be some weird special applications where you might need a higher level of synchronization between notes but for this app it's probably probably okay any other questions all right well he thanks a lot guys we there's nothing after this for a little while so if you guys want to you know keep going with the memes have at it and thanks again [Applause] you
Automatic transcript — names and jargon may be misspelled.