Submind YouTube summaries
Thumbnail for Real World Crypto conference 2020:  session 12

Real World Crypto conference 2020: session 12

Watch on YouTube

Video summary

The Real World Crypto conference session focused on advancing end-to-end encryption and securing large-scale messaging systems, with John Milliken from Facebook's Messenger privacy team outlining a comprehensive plan to migrate the platform to full encryption. Acknowledging the complexity of updating a system serving over a billion users, the initiative aims to transform Messenger from a public "virtual town square" into a private "living room," driven by principles that prioritize security against state actors, uphold privacy as a fundamental human right, and ensure Facebook never accesses message contents. The technical strategy involves shifting logic from servers to clients to create "dumb routers," minimizing metadata collection through local differential privacy, and addressing challenges such as cross-device history transfer and mobile notification constraints. Following this, Joeelle Intille introduced the IETF's Messaging Layer Security (MLS) protocol, which utilizes a distributed "ratchet tree" structure to secure dynamic group chats, ensuring that keys remain secure even if an adversary controls the network or corrupts client states during long-lived sessions. Further security enhancements were discussed regarding the optimization of key agreement protocols, specifically analyzing and improving upon the TreeCan architecture to achieve optimal Perfect Forward Secrecy. Standard implementations often require numerous updates to remove critical keys before forward secrecy is realized, but by integrating updatable public key encryption, new protocols can instantly replace keys upon decryption, effectively neutralizing threats within a single epoch. This theoretical improvement was complemented by practical applications in credential protection, where Google's "Password Checkup" system allows users to verify if their credentials have been breached without exposing the passwords themselves. Leveraging ephemeral keys and elliptic curve cryptography, this system ensures password privacy while mitigating abuse risks through expensive hash functions and rate limiting, successfully detecting breaches in a significant portion of scanned logins and encouraging users to change compromised passwords. To address specific vulnerabilities in third-party credential checking services, new C3 protocols were presented that significantly reduce information leakage compared to earlier systems like "Have I Been Pwned." The core innovation lies in how credential spaces are divided into buckets; traditional methods using hash prefixes could leak substantial data because popular passwords cluster together, allowing attackers to narrow down guesses. The proposed solutions include ID-based bucketization for scenarios where usernames are known and frequency smoothing bucketization for password-only settings, which distributes passwords across multiple buckets based on their probability rather than placing them in a single location. Empirical testing with datasets containing over a billion breached credentials demonstrated that these optimized methods perform nearly as well as a baseline with no information leaked, effectively neutralizing the advantage attackers gain from knowing the queried bucket while maintaining high efficiency and reliability for large-scale deployment.
Read the full video transcript
okay welcome back everybody and we have two talks in this mini session on on secure messaging and the first talk will be given by John Milliken from Facebook and he's going to tell us about end-to-end encryption for messenger thank you John thanks Kenny so hello everyone my name is John Milliken and I'm a software engineer on Facebook's messenger privacy team so I'm going to talk to you today about a long-term plan to fully encrypt messenger end-to-end and primarily about how we're thinking about this and some of the challenges involved I'll be honest right now and say that we're still in a place of having more questions than answers well we have made progress in our planning it turns out that and adding end-to-end encryption into an existing complex system is incredibly challenging and involves fundamentally rethinking almost everything so I'm not here today to tell you exactly what we're going to do we've done a lot of thinking about this topic and I'll be sharing some of it but we're really starting out on a consultation process here I'll really be focusing on the reasoning goals and real-world process and challenges of transforming a live system with well over a billion users into something that can run essentially via an opaque encrypted pipe let's start by addressing why we're doing this and this boils down to three major points first is simply that people deserve good security it's undeniable that every major online service has security issues and I imagine many people would give good odds there any service without public security issues simply hasn't found them yet and I'd also note that the more data you have the bigger a target you become so over time as more and more data or masses within major platforms more effort is likely to be put into attacking them in this world who wouldn't want multiple layers of defense and while we do already practice defense in depth especially for messaging data what better defense can be really apt than not even having the data available to us in the first place apart from of course making it impossible for us to even choose to get and I'd be remiss not to highlight the importance of strong security for national security the US Department of Defense has recently stated that they believe maintaining maintaining a domestic climate for state-of-the-art security and encryption is critical to the protection of our national security and the second point unsurprisingly is that privacy is a fundamental human right usually this is considered to mean privacy from governments but we believe that privacy of sensitive communications from companies is also really important and to an encryption may fundamentally be a security technology but it enables this sort of strong privacy and there are instances where server side access to data is necessary to provide a service so I'm not saying that perfect privacy and security should necessarily be blockers for the existence or usage of an otherwise useful service however we believe that messaging need not be one such service indeed we already operate to messaging services whatsapp and messenger secret conversations that use the signal protocol to fully enter and encrypt their data such that Facebook has no access to the plaintext data and so the conclusion we've reached here is that we should aim to end-to-end encrypt our messaging services this would encrypt data such that only the specific endpoint devices could read the contents of communications strengthening the security of data while providing privacy from Facebook ourselves so with that said what's Facebook vision here well in March last year Mark Zuckerberg announced his new vision for privacy phocion focused social networking this frankly took a lot of people by surprise as it focused on seven main principles that people have tended not to associate with Facebook these were private interactions encryption reducing permanence safety interoperability and secure data storage all principles that I imagine people in this room would tend to support but I'm here today to really talk about these top two private interactions and encryption well Facebook has traditionally focused on providing a virtual Town Square through social networking products what we really want from messenger is to provide a virtual living room that is a small intimate space where you can communicate in confidence with those closest to you and in the knowledge that nobody else is watch or listening now the small intimate space is already roughly the product model that messaging apps offer but encryption can serve to provide this guarantee of confidentiality and as I said we believe that this is desirable for all messaging on our services not just whatsapp and messengers secret conversations so that's the vision but where are we with end-to-end encryption and messenger today well at real world crypto 2017 almost exactly three years standing broadly in exactly this spot I spoke about secret conversations are existing e2e product and in this talk I discussed a lot of the reasons why at the time we didn't feel that ETA encryption was a realistic goal for messenger as a whole so what did we have at this point well for starters secret conversations were opted in with the vast majority of messenger users not using them messenger is incredibly feature-rich but many of these features are challenging to build without significant server-side support so for secret conversations the feature set that we provided was pretty limited we had text photos stickers and ephemerality but I think that was pretty much it and only for one-to-one chats so no groups furthermore it only worked on my main Android and iOS maps and for any given account we only supported one device at a time meaning that most people who got new phones simply didn't have it enabled because it was already enabled on their old one although any secret conversations that they were having wouldn't have been transferred over to the new device anyway so as there was no mechanism for transferring conversation history so since then we have made some progress it's otherwise broadly a pretty similar product there so probably the most significant change was adding support for multiple devices on an account meaning that people with multiple phones or those who got a new phone could use secret conversations much more similarly to how they use regular messenger but we also did add a few more features such as sending videos and audio clips we also started to find ways to develop it a little more like how we develop regular Facebook products so with some basic metrics that we collected about categorical data and we did this using local differential privacy and a fair bit of work to make the product just work better and be a more reliable messaging experience but otherwise as I said it's broadly a pretty similar product to what it was and most notably we still don't have group chats and this still no means to transfer message history between devices so that's where we're starting from on the ETA encryption side for messenger now let's look at how we're approaching the task of overcoming and mitigating the the many challenges so that we can expand this to the whole product well primarily having strong end-to-end encryption privacy guarantees sorry having strong end-to-end privacy guarantees is one of our key goals we're not just adding end-to-end encryption to a product we're building an end-to-end encrypted product so for starters that means we cannot have any access to message contents ever unless these have been explicitly willingly and knowingly shared with us for example when abusive behavior is reported engineering wise were investing in security and privacy by design aiming to significantly reduce the likelihood of privacy and security bugs occurring metadata collection is often the elephant in the room when it comes to end-to-end encryption indeed my last real-world crypto talk I think one of the questions afterwards did focus on this is something which was explicitly not covered by or protected by ETA but nonetheless as we're improving the privacy of messenger our goal is to also improve on the metadata that we have available whatsapp for example takes a very principled the position of minimizing collection of metadata and we intend to take this approach for messenger and finally well we do have significant expertise in the company and we're spending a lot of time on getting this right we do intend to gather external perspectives on what we're building because frankly this isn't easy and there are many more viewpoints and use cases that exist just within Facebook so let's dig into this first point of what I meant by having no access to message content so by definition we won't have access to messages in transit that's end-to-end encryption but to provide end-to-end secure it we also must ensure that message content cannot reach us in any other way so some examples of avenues that we'll have to to block and be concerned about are messages being logged particularly in crash reports which are particularly challenging case because frequently the best way to to fix issues that are affecting people in the real world is to have a good idea of what's going on when app crashes do occur we'll also need to make sure that there's no way for Facebook to remotely pull the contents of messages from our own apps and also that the apps enforce that no device can receive any message unless that device has been verified by the sender oh sorry can be verified by the sender and to preempt a likely concern on this point I'd call out that I don't just mean the precise message content here but we're also talking about any data derived from message contents the next point in our approach was security by design and aside from it being a generally good principle why is it particularly important for messenger now well we're a large multidisciplinary organization building a complex and feature-rich products across a number of platforms getting security right is a scaling challenge because even if everyone were an expert in security and cryptography more engineers writing more code just provides more opportunities for bugs to be introduced an effective way of scaling security to a large organization is to ensure that the building blocks that everybody works with are at the right level to provide blanket defenses so this means having frameworks and api's which are secured by defaults and by doing this we aim to make the easiest way to build a feature the secure way to build it and naturally we want everyone to be privacy conscious all of the time but if we were to rely only on expertise to get security right we wouldn't really be practicing defense in depth or security by design within our own engineering practices so for example we don't want to rely on everyone having a good understanding of the signal protocol or exactly how we use it instead if somebody needs to transmit data from one user to another within one of our features we'd much rather provide an API that will do this for them and abstract away the transmission and encryption and one particular call-out I'd make on security by design for ETA encryption is that we're looking to push as much as we can on to the client this is actually a pretty big departure from how messenger works today the vast majority of our features use the server as an active component in how they work it isn't just moving plain text from one device to another it actually contains product logic so we'll need to significantly reengineering messenger features to work primarily on the client but nonetheless we think that this is the most realistic secure design for end-to-end encryption and this means that we'll end up with the server being pretty much a dumb router the next aspect of our approach was consulting with external stakeholders now research is always an important aspect of product development and iteration it's the best way to make sure that we're providing the best tools for our users but what we did differently this time was to publicly announce the plan years in advance of being able to actually ship it and this is because we're conscious of the broad implications of a to encryption and the wide scope of design challenges that we'll need to address with these in mind we wanted to collaborate early with global stakeholders and listen to an experts from a wide range of areas such as industry civil society activist groups academia and of course attendees of cryptography conferences and finally I call that limiting metadata collection and storage as a goal how do we actually want to approach this technically well we're looking into how security by design can be applied here and there are a couple of points that I'd like to talk about on this front the first is that privacy preserving techniques are non-trivial to use at the moment and so if we're going to ask engineers to be applying them it makes a lot of sense to simplify this so for example building logging tooling that allows them to use local differential privacy more easily but we're investigating at the moment how we can more systematically reduce sensitive data logging and storage by building this into logging frameworks so the hope is for example that we might be able to automatically enforce policies that we define data or perhaps detect that certain data is no longer being used and automatically drop it or even potentially examine the queries that are being run to find opportunities under the hood to aggregate or anonymize datasets so the goal here is to pretty much rethink our approach to data collection storage access and usage so that we're going beyond only collecting data that we use and actually automatically minimizing it to so that's the approach that we're planning to take to the problem sort of at a high level let's now look at some specific challenges that we've been thinking about imagine this first example won't surprise anyone preserving message history when changing devices is something that we know people want indeed it's a big value add for messenger at the moment however this is all all data that Facebook cannot have access to in a neater way encrypted world and therefore cannot be in a position to just give directly to the user when they log into a new device therefore providing message history to a new device an accessor tate's that there is some piece of information that Facebook does not have access to be that the data itself or perhaps an encryption key in this space there are some previous examples of storing data on cloud providers for example whatsapp will back messages up to iCloud or Google Drive but we're not actually convinced but this approaches spices for messenger one issue with this is that messenger is inherently multi device and multi-platform so for example I use messenger independently across web iOS and Android all from the same account but there is no cloud storage provider that is easily and widely usable across all of these platforms so one question we were wondering about is whether we should allow users to back their messages up data up to Facebook given that we can guarantee this data will be available to climb any client that we build although naturally if we were to build take this approach we would have to encrypt the content so that it remains inaccessible to us the next challenge we were looking at which I also highlighted last time I spoke here is that of supporting web clients this is especially important to us as web access is another big value proposition for messenger but web presents a number of significant challenges for building end-to-end encrypted apps so we've been thinking about a number of questions in this space for example should we still actually support web clients clients as standalone or should we be looking more to the tethered approach that whatsapp is taken and should web chat be automatically available on facebook.com as it is today or should people have to explicitly opt in to use chat on web then if people do use messenger in web would it benefit them to be notified about the differences they are opting into compared against multiple devices against mobile devices sorry or would this not be broadly useful to people and indeed regarding the code distribution model on web could it be improved by developing binary transparency to ensure that everybody is running the same code indeed is this even a viable technology for browser vendors to build and share and a more recent challenge has been in how notifications work given that secret conversations aims not to keep a permanent record of pairwise threads as we didn't have a technical reason why storing this should be necessary notifications however do rely on thread specific behavior for example bad counts that are displayed by app icons on iOS are calculated based on the number of unread threads and muting a thread requires it relies on suppressing notifications based on the sender of a message so previously for secret conversations we calculated badge counts and we handled muting of threads client-side instead of storing this data on the server but we are starting to see new constraints from mobile platforms requiring that we can control these behaviors from the server and thus requiring that we store sufficient data on the server to to be able to do these sorts of controls and therefore it involves having a bit more metadata about threads stored so the approach that we've taken so far in secret con is to store as little data as we think that we can and format it so that only only certain queries can easily be run so for example you could easily query if I have muted Kenny but not for everybody who has muted him but if as good as we can do is it possible to improve on this so that's just a few of the challenges that we've been looking at as we investigate fully end-to-end encrypting messenger and now let's just wrap up with a few conclusions first I'd particularly stress the complexity of migrating a product like messenger to be fully end-to-end encrypted what's up took years to migrate despite being a significantly simpler challenge than messenger in a number of ways so when people ask why can't you just with respect to end-to-end encryption on messenger quite frankly it almost never applies because the challenge is much more complicated than they're imagining fundamentally we're not just looking at the transport layer change for messages but rather we're looking at a full stack rethink and Ryoka texture of the entire product next I'd stress that we build for people first and building for people at scale means working within real-world constraints for example those introduced by the variety of operating systems platforms distribution channels etc that has software has to run on and remember that our goal here is to deploy end-to-end encryption to the communications of billions of people and to do so we still have to design our product to be usable by billions of people and to wrap up let me just say we are going to ship this it's going to take time to bit to build and to make sure that we're doing it right but nonetheless this is happening we are going to end-to-end encryption S&J thank you very much and do we have time for a couple of questions [Applause] you certainly do and there are people at the mics okay all right thanks for the great talk what road map is there for social graph being put all the way on to the client and being completely off of the server great question I don't think we have anything to share on that at the Ravens hey I think you're the talking does Facebook have any plans to address the sort of threat model where the server pretends that I have a new phone when it's not really my phone so secret conversations at the moment whenever a device is added to a thread will surface that to both to both parties in that thread so it is visible and you can go and verify the keys in that's right thank you further to that could you say any more about the key verification or key transparency or in general how people know that the keys that you're telling them are the right ones so the approach we use today is the approach which is common across most encrypted messaging apps which is allowing people to manually verify keys we have slightly different approaches to this in what's up and secret conversations but they they boil down to essentially the same approach we're certainly tracking developments in this space but to the best of my knowledge no developments have been deployed sort of scale yet hi great talk thank you I remember two years ago I think the original decision was that Facebook it was too difficult and I'm glad to see that it's come this way my question is who exactly does Facebook have an intent on marketing secret conversations and getting people to care about and to end encrypted messaging and explaining why that they should use Facebook's encrypted messenger over non-encrypted messengers and sort of making this the default and actually having them care about it is there like any way that you could explain the threat model to those people and terms that they would understand and care about so I think you really hit the nail on the head when you said about making this the default the idea that the ideal situation really is that people don't need to no one care about this to nontheless get that level of security and so that's what we've already done with whatsapp and what we're hoping to do with messenger right and I think that's great but my concern is like there are people who still for example domestic abusers who will steal Derek they're their partners Facebook accounts or gain access to it and they you know hijack the things that they read and see so I'm curious like exactly how the facebook messenger threat model it kind of intends to have that because obviously their signal and things but not many people use signals they do facebook Messenger and I'm just concerned about those people and how the threat model will be adjustment for them so one thing that I can share about what we do in secret conversations is regarding account switching on a device so if if for example you do log out of messenger you're all of your secret conversations will be inaccessible because they are encrypted besides that we're certainly investing in our privacy roadmap and trying to improve privacy in a number of ways but I'm afraid I don't have a specific product ideas to share at the moment cool thank you thank you how do you handle coordinating keys between multiple different devices or clients we treat every client as a separate endpoint so for multi device under the hood it is a group chat between a series of devices with Facebook user identity superimposed over that thanks so I saw you had a slide where you're pointing to the current problems in like badging notifications being turned is there sort of research that's needed on specific techniques to address these or is it more there there's techniques out there but you need to figure out what the trade-offs are and then pick one very possibly a bit of both we're very interested in learning more about what's possible in this space hi I have two very quick questions one I realized that the number is very small but I'm wondering if you can share any more precise usage usage statistics about secret conversations to date and second I I'd like to hear from you I think I know the answer but I'd like to hear from you how committed is your team to preserving forward secrecy in the final protocol so regarding the first point I don't have any statistics to share I'm not sure I'd characterize that is very small but yeah we don't have numbers to share regarding the encryption we're aiming for the best security that we can achieve while building a usable product at the moment we're using signal signal protocol for this which provides for words secrecy on Facebook for my security so you think that there is a chance that the final protocol won't include forward secrecy I mean you can you can never give a firm commitment but our current plans are not to move away from that thank you thank you thanks everybody for all the great questions we're actually out of time there so let's thank John again for a really insightful talk okay we're just getting miked up here they're still clicker here so if somebody would like to come and claim their clicker or claim somebody else's clicker more than welcome okay great so now we come to the second talk of the session I'm about a ETF MLS effort and the talk will be given by by Joe thanks Kenny so hi my name is Joelle I'm a cryptographer over at wicker I'm gonna tell you about a joint work with Sandra Afghani and Yanis we've been looking at the MLS protocol and we want to tell you about some thoughts on that and some results we have alright so first you know let's get some contacts what is MLS well the goal is here to design a messaging protocol and to unsecure for groups right and groups is kind of really the key point here we want to support really large groups by large you know think fifty thousand people for example this should be asynchronous messaging so in other words think things like SMS or email you know you just come online you read your messages you can send out whatever you want you go offline other people come on and they can read their stuff sessions you know we expect them to last really long years sometimes and group membership therefore is going to be dynamic right during a session people are gonna join and leave the group so challenges here are really I'd say the biggest challenge you know is keeping bandwidth and complexity lo bye lo I mean think logarithmic and group size not linear and really that's what's gonna differentiate MLS from pretty much everything that's out there right now we also want to do you know we want rigorous analysis of the security here and we want to use practical Karima t'v who's who's doing this well this is under the auspices of the IETF so it's being designed by work group also called MLS and I'd say the guiding principle here is really to do for group messaging what TLS did for you know secure communication a synchronous stuff this is a collaboration between academia industry we got more people joining all the time and the the final product is going to be a series of RFC's that define the different aspects the architecture the protocol itself things like that so let's look a little more at the security goals basically in a nutshell we're talking end-to-end security authenticity and privacy the adversarial model here at least for the purposes of this talk is all right and to end security we're talking a man-in-the-middle in particular also corrupt delivery service right we got a delivery service in order to get this asynchronous messaging and in terms of corruption we're looking at state leakage right so when you corrupt a client what we give the adversary is the local state including all the secret keys entropy and everything so that's the corruption model we're talking about an active and adaptive adversary's so you can online make decisions about what to do next and because these sessions last so long we are interested in security notions that talk about corruptions during the session all right in other words forward secrecy post compromised secrecy by forward secrecy or forward security I kind of switched between the two that I'm talking about we want that today's communication will remain secure despite possible corruptions that happen in the future and kind of the flip side of that is PCs which says well if we do have a corruption during the session then continued usage of the protocol will eventually revert us back to a secure state all right so these are kind of becoming like the standards the bar in secure messaging and end-to-end messaging and we you know analyst wants to achieve that as well one thing to keep in mind here is denial of service is kind of at least at the moment is really outside the scope and in particular if you have a completely adversarial network it's not clear really what you're going to do about it anyway at least for this talk and I think it's fair to say for MLS at the moment that's kind of out of scope there are other security notions that are being considered by MLS things like metadata hiding in particular from the delivery service secured against malicious insider so that means like really you know you get malware on your phone and starts actively trying to screw with the protocol and in the future probably a you know deniability is coming up is another notion but for now for this talk it's really end to end off it's an authenticity privacy in particular forward secrecy in pcs so all right what is group messaging as a primitive well it's a you know we'll do the classic thing it's a sequence it's a series of algorithms what can you do what you can initiate a group you can add someone to the group you can remove someone from the group you can do this thing called update which essentially it's like refreshing your local state and this is really where we're going to be getting our pcs from and of course you can also send and receive messages right so the goal here is to have secure communication in this dynamic group using this interface and you can break this interface into two parts the control messages that sort of manage the group state add people remove people refresh the group state and then there's like the application part which is just sending receiving messages and I'm really going to focus in this talk on the control part right and we can isolate this and look at it as its own primitive kind of what you you know key agreement to a secure channel it's it's kind of the same like analogy here and so you know we're looking at just in it add remove and update as the primitive and weak we call this in our in our work we call this continuous group key agreement alright cgk a and and sort of the focus of our work has been on the cgk primitive inside MLS yeah we'll get to that so the the goal of CG ka is kind of to maintain a shared secret or really a continuous stream of constantly updated shared secrets between all the members of this dynamically changing group and why is it okay to just isolate the CG ka as a primitive if we really care about MLS well because there's this nice decomposition that one can do that we've already seen in the two party case so for lack of a better term I'm going to call this the ACD paradigm after the paper where this was introduced and what a CD a CD did for the two party case in particular the double ratchet is it modular rises and generalizes the double ratchet so it modular Rises it into three primitives see ka PRF P G and an AE and sort of forward security ad and it shows how you can compose these three things in to get a secure messaging for the to party case right so this is applied to the two party case and and we realized that one can look at MLS through a very similar lens with with sort of a group variant of the same kind of paradigm so by the way with the addition that we also need signatures or at least MLS uses signatures maybe there's ways to get around it without signatures so one one subtlety here though is that at least for the purposes of MLS at the moment we do want these control messages in other words the CGC gka messages to be delivered in order or at least processed by all group members in order alright and so we we inherit this assumption in our work as well and in particular this is something that cgk can therefore assume about the network and yeah alright so by the way relaxing this is great Avenue for future work alright it's not clear that this is necessary but at the moment this is what MLS does and assumes explicitly that there's this in order processing so when we look at this paradigm we see that okay if you've got CG ka well then you can use these other primitives to essentially build your entire messaging protocol and it's not you know very non-trivial how did the how this duh how this works but it's not that different in the group setting from the two party setting and we know how to do this thanks to signal in the two parties setting basically we're gonna you know keep this entropy pool and seed a bunch of ratchets basically so in this work that's not what we look at we look at the CG ka part because that is really quite different than what's happening in the two party case this asymmetric double ratchet asymmetric ratchet so this the cgk apart is really quite different that's what we focus on and again you know just a the cgk the the point is to agree on a continuous sequence of fresh shared shared secrets for the purpose of this talk we're gonna forget about the dynamic part because everything we say is already non-trivial and relevant if you have a static group so never mind about adding removing people we'll just think of a static group and updating right yeah so all right one thing that's nice about this this modular construction is that it allows us to relax what we need from the network for the cgk in particular we can assume authenticated channels why is that because we get the authentication from the wider construction right from the signatures and the aad they're used in a clever way to basically enforce the authentication from the point of view of cgk so that's nice that means that we we get to make this assumption so now okay let's look at what the adversary is for the cgk well he gets to drive the execution what does that mean essentially the adversary' gets to instruct users at will to perform this update operation and every time there's an update operation this defines a new epoch alright so this term in POC is kind of important this and the next thing the adversary gets to do is also decide to deliver messages right so tell ok user you need to now process this next message but reflecting this assumption about the the ordering one restriction on the adversary is they can only tell a user to do to process update for epoch J if that user is already in epoch J minus 1 so users can be left behind and then catch up so in that sense it's but different than broadcasts is it's weaker but still we want that ordering of course as we said the user the the adversary' can at will at anytime and repeatedly leak the local state of users and finally you can see all the network traffic all right so we've got that man in the middle but for an authenticated network so that's the adversary now what's the what's the security notion that we want here well we want that basically look at Hawkeye we've got this group key for a Pollock eye and we want to ask when when is this key secured by the way group key I say group key or a in the MLS parlance it's actually called the update key all right that's just for those who are already familiar with MLS I use those terms interchangeably so we want to ask ourselves when under what conditions is in a considered secure when is it secure well ideally kind of the minimal thing that we would want this is what we call optimal security for cgk is that anybody who's been corrupted before a POC I has in between that corruption ie when his state was leaked and in Park I itself has performed an update has refreshed his state alright that's pretty much it that's all we really want if that condition is satisfied for a POC I then we want the POC I'd then we want to say a finite park I has to be secure so some things to note here this implies standard sort of forward security and isolation what I mean by an isolation well the notion for forward security is normally you consider only corruptions that happen after a POC I so there are no corruptions before I park I at park I you say is it secure and you look at any corruptions that happen afterwards conversely pcs in isolation is kind of the other side you say well I'm only allowing corrupt I'm only considering corruptions that happen before a park I so so this notion this it combines the two it's it's actually stronger than the two because it allows both before and afterwards all right so that's that's the optimal security we're going for so when we look at MLS they have a CG K and it's it's cool algorithm that's called tricking so this was originally introduced by Karthik Richard and Eric on the MLS mailing list and it's inspired by the art protocol which appeared in CCS last year subsequent to the original introduction on the MLS mailing list there was an update I guess we could call that tree cam with blanks and that's really what I'm gonna be referring to as tree cam in this talk and this is what's currently being used by MLS after you know there's been there's been some follow-up works already around tree cam itself there's been like causal tree cam that was a really cool idea that sort of tries to relax this notion of in order delivery there's came to tree cam which tries to improve the efficiency but I'll be looking at tree camps that's what's in MLS right now so so how does tree cam work well I guess a good way to think about the construction is to look at this shared group state right so every Epoque in in a tree cam execution is given I say you could characterize it by the distributed groups state and this is you can be viewed as a as a binary tree in particular what's called a ratchet tree so this is a left balanced annotated binary tree annotated we're going to be assigning keys and secrets and values to each of these nodes right and and you know it's it's important to understand each of POC has a fixed binary trees the annotation is fixed for that Epoque when we move to the next epoch we're gonna modify the tree maybe some of the annotation and that's going to be the new ratchet tree for the next two talk so how do we annotate it by the way when you see little question marks that's that's meant to be arrows that there's a bit of a font thing so nothing too important there yeah so how do we annotate this tree well the first thing we do is each user in the group is assigned a leaf there as many leaves as there are users each user gets his own leaf so here's the example for four people in a group the next thing is each node in the tree except for the root is also assigned a public secret key pair for that note alright so that's pretty much it in terms of this distributed state but it's distributed so we need to talk about who knows what parts of this state and to that end there's two invariants and really most of the work in tree cam is about maintaining these invariants across a pox the first invariant is about the secret keys who knows which secret keys very straightforward a user knows the secret keys for the nodes that lead from their leaf to the root Alice for example here knows secret key four and secret key to the second invariant is about who knows which public keys it's maybe not the security wise you could say everybody knows all public keys that would be fine too but what's kind of the minimal thing you need for the functionality it's that users know the public keys on their co path co path means the sibling nodes on their path to route so for example Alice should know PK 5 because 5 is the sibling to that that her note for and she should also know PK 3 because note 3 is a sibling 2 - right so these are the two invariants you know the public keys on your Co path you know the secret keys on your path and that's pretty much it in terms of the shared group state so as I said really the the important the most important thing that this kind of is how you do updates and the way tree CEM does updates is as follows all will go by example with Alice doing an update so the first thing Alice does she needs to come up with a new ratchet tree the first thing she does is delete all the nodes on her path to root and now she has to sign new secrets right so first thing she does she chooses a random secret you know with enough entropy and from that using a PRG she's now going to compute a a new secret so from her ass she computes a new secret s Prime as well as a public secret key pair that public secret key pair becomes the public secret key for her node and the secret she derived as prime becomes the new secret for the next node up her path so now we can recurse we take s Prime she again uses a PRG to expand that into a new secret new public secret key pair and so on so forth defining public secret keys all the way up again to the root and in particular when you get to the root this this the the secret that you do that that's get gets defined this way is what's called the update secret is the epoxy-coated self for this new epoch all right so it's all about this secret trying to keep it you know share distribute it to everybody while maintaining these invariants that I told you about with the secret key and public key all right so the question is okay we've defined our new ratchet tree how do we distribute that information to the rest of the users in the group so Alice prepares a packet right a network packet I distinguish between packets and messages just since this is messaging it's a bit of ambiguous packets mean protocol messages here okay so she has to prepare a one-off packet we can't have interaction this is asynchronous so what's you're going to put in this packet well the first thing she does is she in crypts the secrets to the co path right so for example would Bob needs to know to maintain his invariant he needs to know the secret key for node 2 so she knows Bob's public key so she takes that secret for know - and encrypts it to Bob's public key similarly charlie and dave also need to know to see the the group G so this s double prime so she encrypts that to public key 3 because both Bob and sorry Charlie and Dave know that secret key all right so basically you encrypt nodes to the co path all right so this is it and you know the other thing you do is also the the new public keys yeah you also have to distribute these new public keys right for example Bob needs to know Alice's public key so she just includes this new public key as part of this packet so that's how you construct this update packet right we've maintained these two invariants so now we can look at the security of tree can and so so what do we want from so tree camp does achieve pcs and forward secrecy I have to skip this a little bit so sorry in order to understand what kind of forward secrecy is achieved here we have this notion of critical Keys so when can we claim that a secret at the root is actually secure well in order to reason about that we have this definition of a critical key right a secret key in in this ratchet tree we call it critical for a secret S if knowing the secret key and all the network traffic that is transpired in the session allows you to compute the secret s that's what makes a secret key critical for some secret s well with that definition if you've got a ratchet rain you want to ask yourself when is the secret at the root this is pocky when is it going to be forward secret well it's only going to be forward secret if you've removed in in future iterations you've managed to remove all critical Keys from the group stay why is that because if there a group if there is some critical key that's so left and then the adversary' goes and corrupts that person they're gonna learn the critical key and therefore by definition of critical key be able to go back and compute this talk secret in other words for for forward secrecy to kick in we need that all these critical keys are going to be removed so in this particular example critical key for s double prime would be SK 5 and SK 3 because each one of those allows you to decrypt one of the cipher texts that Alice sent out but and this is kind of like the big like Eureka moment for us that we realized this is actually there's recursive critical Keys as well because this this SK 5 and SK 3 in particular SK 3 itself has critical keys in other words if you learned these other critical Keys then you can recompute SK 3 and from SK 3 you can then recompute the secret so there's this recursion in terms of critical Keys and it turns out it's just really not that great if you've got a group of size ends and people in this group it turns out that of the 2 n minus 1 Keys and all ratchet treat n of them are critical and that's not really that good because that means that forward secrecy is really going to take a heck of a long time you're gonna have to do a ton of more updates and modifications is ratchet RIBA for a given Epoque comes forward secret and in particular you think about it in any given update you're only modifying log n keys so you're gonna need at least and over login just just from that observation alone for more Hawks before you get forward secrecy and in fact you can't pick and choose which key so it turns out it's more like linear number of the box whereas optimally we said we wanted immediate forward secrecy within one single epoch so shows tree cam is really quite far away from this optimal notion of forward secrecy and by the way this is best case this n over log n or even n number of plucks if the wrong guy doesn't do an update like your sibling well then you're never gonna get forward secrecy because as long as he doesn't do an update and his leave key is critical no one else can change that leaf key all right so so good so we established the tree cam doesn't have maybe the best forward secrecy really pretty far from this optimal so what can we hope for oh can we do better and it turns out yes we can and basically the big sort of you know change that we make is that we show that well if tree cam uses public encryption you can replace public encryption with this new notion of updatable public key encryption that we introduced and that immediately gives you optimal security right so it's a pretty small change so so what is this optimal updatable public key encryption well it's it's a primitive that is very closely related to what's called key update role PK II which is already being introduced for improving on the double ratchet to party literature and our construction is inspired by a suggestion for this application in fact by Conrad Kovac on the MLS mailing list so we basically ran with that in this paper and intuitively can think about public key encryption a updatable PK e or u PK is giving you sort of a very practical way of getting forward secret PK so how does it compare to standard PK e well it's pretty small change here we've got standard public key encryption and what's the change well basically when you encrypt you actually output now not just the ciphertext but an updated public key and when you decrypt that corresponding ciphertext you output the updated corresponding secret key so in other words the act of encrypting decrypting also re randomizes your public secret key pair at the same time so correctness traditionally is okay any ciphertext you get in a CPA scheme or CCA scheme you can decrypt we now need things to be synchronized we need this in order that's right you have to keep your public secret key pairs as you update them you have to keep that in sync in terms of secret security while standard CPA security you know we all know that encryptions of any two messages should be indistinguishable and now we want that if the adversary gets to choose these updates at will so basically he's supplying cipher texts eventually he says ok now I want a challenge he gets a encryption where he doesn't know the randomness we want that encryption to still secure in the normal CPI sense even if after than the fact he then then you reveal the next updated secret key to him right so so there's the challenge ciphertext and then you do an update with fresh randomness which the adversary' doesn't see and you reveal the new secret key still wants to still want security for the the message in the challenge ciphertext so the construct we have a construction it's very similar to El Gamal basically so it can be generalized across you know pretty much any prime order group and it's it's very practical in terms of efficiency yeah so so basically this new version of tree can we call it our tree cam the takeaway is you take tree can you replace public encryption with updatable public key encryption and you go from you know not great forward secrecy to optimal forward secrecy yeah so so that's pretty much what the picture is there and and you know the reason this this this this helps things is because now we have a second mechanism for replacing keys we don't have to wait for someone need to do an update simply the act of sending them a cipher text and then decrypting already updates those keys so these critical keys are immediately replaced the moment you decrypt the cipher text with a key you replace that key so there are no more critical keys in this tree all right that's why we get forward secrecy within one step so yeah basically there are more results in the paper we look at adaptive security we also have like you know future directions for secure messaging I think you know I agree previous talk there's all kinds of open problems there that we could work on also in a follow-up work that's we show how to do you PK e for the x.25 for 9 X 4 for 8 curves because those are not prime or two groups so you have to do a little bit more kind of working but it's also nice and ficient practical so yeah that's so we're going to move straight on to the next talk I'm sorry if you want to talk to Jill about this paper or this work please catch him at lunchtime we're actually switching now to a slightly different mini session this one on compromised credentials and the first talk in this session will be given by Kevin you all right so thanks to the introduction Kenny and so I'm Kevin and here today I'm going to talk to you guys about protecting accounts from credential stuffing through the use of password breach alerting or all or what I like to call password check up so before I begin I want to mention this was a joint work with a damn Pony at Stanford as well as really a large-scale effort at Google that spanned across many teams across many different locations and it also involved several teams and people that aren't listed here but were integral to the success of the project all right so let's get started so it's sort of to understand the problem with credential stuffing we have to go back and you know go back to the last decade and understand that there's been a lot of breaches of data for several organizations and companies and what's happened is you know the hackers that sort of do the performance data breaches they sort of share and pass around this data through the dark web so like these sort of news articles show that you know these hackers have billions of records and these things in fact the brilliance of breach account credentials so you know using this this large set of breach account credentials what they can do is essentially perform credential stuffing so what they do is literally go to websites and try to log in using these compromised credentials so quit it in almost a jarring statistic for me was that you know let's the online retailers such as Macy's and Nordstrom about 90% of login attempts are actually hackers trying to hijack accounts so it's a real problem is actually quite prevalent and it's it's a something that we really need to tackle so so there are ways to defend against potential so things like defense-in-depth so a great way to defend against these kind of hijacking attacks or 2-step authentication right so even if a hacker has has my compromised credentials which I'm not aware of and they try to hijack my account if I have to factor authentication enabled they wouldn't succeed at hijacking the account unfortunately this only works for really like let's say larger websites because you can imagine there's a long tail of smaller websites for which many people don't even remember they even have accounts at and for which these defense-in-depth sort of protocols are not available right and in these cases would be was a hijack the accountant would be successful essentially and taking over so sort of to get to the you know the actual problem what we believe the real problem is is sort of an imbalance of knowledge so you sort of have on one hand you have these hackers you know who have gone to the dark web and you know they have access to billions of these a compromised credentials and they're able to use them for credential stuffing and whatnot on the other hand you have an average user you know the ones who can already use the Internet but you know maybe are not so well-versed in cryptography or they don't even know how to go to the dark web so they have a list of credentials and they actually just don't know which of the credentials are compromised and which ones are actually secure to use right and sort of this imbalance of knowledge is actually one of the reasons that credential stuffing is so successful so okay so let's in our work we're actually trying to find a way to sort of solve this imbalance of knowledge and we try to do this through the use of what we call password breach alerting or what I like to call typically sometimes as password check out so you can imagine you know on your left you have this sort of server and let's suppose the server is able to also source this list of breached account credentials maybe through the dark web or whatever and sort of you know they have these interests these end compromised credentials so what the password breach alerting protocol would sort of do is expose an API to the general public in such a way that an average user you know let's say an internet user can come and sort of it has a sort of credential that it wants to check whether it's breach or not so what it can you know from a high level what it will do is it'll send something like an encrypted request of its username and password and I'm gonna be very vague here I'll go into more details of what the encryption means so sort of using this encrypted request the server would process of an encrypted response of whether the username and password that was queried by this user it was breached or not alright so now I was very vague about what encryptions what is encryption mean here so let me go deep in and try to exactly define what are the design principles that were necessary for this protocol so the first principle which is now I think the most important is obviously password privacy so going back to sort of this protocol here when this user does this query for his username and password it should be done in such a way that the server who's hosting this API they don't get any knowledge about the query password right so this was sort of the whole problem to begin with is that hackers were able to get plaintext knowledge to the password so to sort of solve this problem and you know that which alerting protocol it must be done in such a way that you know no knowledge about the query password is ever revealed to the server all right so that's sort of the very first design principle of course it's probably the most important a second sort of athough g''l issue but it's actually quite important is actually sort of mitigating abuse risk of the API so you know going back to this server that has this this database of which credentials even though it's sourced it through the dark web the database is actually still quite sensitive right and it shouldn't really be widely spread it shouldn't just be available to everybody who wants to sort of have access to it through the API so what you can imagine is sort of a scenario where a hacker comes you know the API general is exposed to general public so a hacker kernel obviously also use it and what it wants to do is maybe one query or sort of a series of queries to this API and does it in such a smart or maybe some sort of sophisticated way to sort of extract the database of which credentials right and this would be a really bad problem if we like you know if this database which is available to all hackers because now they can go back and do credential stuffing again and again all right so to sort of see what's going on with the problem you have to sort of take a step back and you know take a look at a higher level so of course one wafer hacker is to get these sort of breach credentials is to use the password which alerting API but like I said simultaneously there are other means for this hacker to sort of get this data one is through the dark web right and sort of one the goal that we how we were able to achieve a mitigating abuse Chryst is sort of trying to make sure that sort of the cost of abusing these api by the by these hackers is larger than other the cost of maybe going through the dark web to get this to get this data so for example you can imagine hackers might come up with very sophisticated and expensive sort of ways to sort of use the lies the protocol to get the breach credentials but if that cost is still much larger than what it would be to get on the dark web you know we have mitigated abuse risk if we haven't made it any easier for hackers to sort of get this this sensitive data all right so you know taking a little taking a step back we sort of have to privacy goals right well for the user we want to make sure that the queried password is never leaked to the server and simultaneously from the server's perspective that exposes this API they want to make sure that whenever a user sort korie's for a credential username and password it doesn't or any knowledge about another credential let's say username Prime and password product alright so that was sort of the second design principle and the third one is what I like to call simple but effective crypto and this is very subjective so let me try to get into intuitive the most and carefully like I said before this project Israel it was a really a large-scale effort across many different teams at Google and there are many engineers at Google that are very smart but don't have the expertise or haven't spent the time studying crypto right and since it involves as many so many teams having simple crypto enabled them to be able to utilize the library easily right and this is a very important thing because you can imagine there are reliability teams that need to make sure the machines are running and they actually need to understand the crypto protocol and simple crypto enables such a such sort of reliability another sort of aspect that's very important was developed with velocity or implementation time as we sort of all know implementing crypto is quite difficult right and it takes a long time to implement it correctly try to make sure to vet it and make sure all its secure and sort of simple crypto sort of enables this at a faster rate and with more trust and in the code so I would I guess what I'm trying to say is that simple effective crypto is not necessary for launching this product at such a large scale but it really makes it a lot easier and it's a very important part at least in my opinion all right so given that we have these three design principles let's go ahead and try to and I'll try to explain to you how we achieve design principles in our protocol so again we have let's say these Google servers on the Left who have this set of n compromised credentials as a u 1 P 1 all over the U n P n so the first step essentially is how will the server pre-process this database in a way that it can it can readily sort of serve requests from users so we do essentially is we sort of take each credential and we take his username and keep it there and we sort of take the concatenation of the username and password and hash it using some hash each prime I'll discuss what H prime is a little later but let's say I do this for all and bridge credentials that are big that exist on the database the next step is the server sort of generates a secret key K and essentially encrypts encrypts each of these hashes of username and password concatenations by simply exponentiating it so sort of going back to this this hash H Prime what it's really doing it's sort of mapping strings tune elliptic curve right and in particular we have to choose an elliptic rib obviously where diffie-hellman is hard so that this is actually an encryption all right so that's sort of a completely pre-processing for the second tuple in each in each pair let's go back to the username which is the first tuple in each pair free for this username what we're gonna do essentially is take an uncute hash let's say H we can think of is you let's say shot two three six and so just simply hash it to the usernames so the password breach protocol is actually parameterised by some positive integer B and this B comes in right here where essentially what we're gonna do is we take the uncute hash and just take the first b bits of it we're gonna drop everything beyond the the first PPS and just keep the b bits and so these b bits will actually act as a bucket in the fire so we're gonna do actually is we're gonna have two to the b buckets and each bucket is uniquely identified by a b bit string and we're gonna sort of bucket eyes all of these encryptions using this bucket and fire so for example here let's take this example here you have the third you know the third compromised potential u 3 and P 3 since I went to the bucket that has you know zero B's or be zeros what it essentially means is that the on keyed hash of U 3 the first B bits of that was all zeros and actually that turns out that's all we need to do sort of pre-process the database to get ready for for queries and I guess something I'd like to mention is that this is sort of easily sharable and you'll sort of see why but you can sort of have many machines sort of handle different buckets alright so let's let's go on to the query algorithm and how a user who sort of comes with a specific username and password that it wants to query can now send a request and sort of get these responses so the first step of a query algorithm is that the user will generate an ephemeral key so this ephemeral key R is per session it doesn't have any it doesn't have stored long term as anything like that and sort of what it does next is it'll send two things to the server in an encrypted request the first is it takes the username that it wants to query and does the same sort of on keyed hash let's say you shot two to six and just takes the first be bits and that'll be sent to the server the second thing it does is also takes the concatenation of its username and password and hashes it to the elliptic curve and encrypts it using this ephemeral key arm and that's the entire encrypted Qwest by the by the user so now let's suppose you know this request has been sent by the user and the server sort of receives it so what it first does it sort of takes the B bits of the unkeyed hash and simply sort of identifies the bucket that's core that that's that's corresponding to this B bits and then once it finds this sort of a correlated bucket it sort of just returns all the encryptions in this bucket to the to the user so that's the first part of the encrypted response and the second part is it sort of takes the the encryption of the username and password that was sent by the user encrypted by this by the user secret key R and sort of re-encrypt sit so you can sort of think of this as an almost an oblivious PRF where it's going to sort of use a commutative encryption but what it does is sort of takes this username password carnation encrypted under R and it Rhian crips it so that's now encrypted under both R and K where K is server secret key all right so that's actually the entire cryptid response by the server so given that now this encrypted response comes back to the user the user has to do the following two steps to determine whether this whether it's using the password we breached or not the first step is this sort of decrypt it's a secret key R so since it generated the ephemeral key R it knows our inverse and can simply sort of exponentiate or decrypt by our inverse to sort of get its username and password encrypted under only the server secret key and you can view this essentially an oblivious pseudo-random function and then the second step all it does is actually you know takes this username and password that are encrypted under the server's secret key K and simply checks if it exists in the bucket that was returned by the server and it's not hard to see that you know if you and P did exist in the bridge database it would have been encrypted under the service key and appear in this bucket because of course hash the hash of the username was first P bits will be the same and actually this is the entirety of the protocol so this is it sort of very straightforward very simple and I hope I've sort of convinced you it's sort of simple because I've explained it in probably less than 10 minutes so let's go back to the design principle it sort of said it's simple crypto let's go back to the design principles to make sure that we've sort of achieve what we wanted she remembered the first thing we talked about which was the most important was password privacy in that whatever request was by the user should be encrypted in a way that the server gains no knowledge about the correct password so let's take a look at the protocol again more carefully the user sort of sends two pieces of information to the server clearly the first bits of the hash of the username contains no information about the password so there's no information there so the only bit that contains information about the password was actually this H prime u P but it's encrypted under this user secret key R so assuming you know diff the diffie-hellman problem is hard in the elliptic curve we chose you can actually show that you know the server doesn't gain any information about the password alright so sort of the second sort of design principle we wanted to do was sort of mitigate abuse risk right and that when it's when a user does a single query for username a password you shouldn't learn information about other credentials let's say username Prime and password Prime so taking a look at this side you can sort of look at what's being responded by the server to the user so even though the cert the user sort of gets this bucket of all these encryptions under the secret on this server secret key K it only gets one double encryption of its username and password of the using even has a bit query so even though it gets sort of this bucket it can only test its specific user name and password whether it's it's in the street or not so it sort of satisfies this growing sense but there are actually even more stronger ways to sort of achieve mitigating abuse Chris and one way we actually did was sort of sort of a limit the demand the number of queries that a user can perform by replacing this H you know I said before shot you to six you could imagine it being replaced by more expensive hash functions which she let's say are gone too so you know if a user if is if a hacker wants to come and try to perform many many queries to the to the API it sort of has to pay the cost of computing this expensive argonne to hash over and over again and in addition to sort of using expensive hash functions you can also use things like rate limiting and stuff like that to ensure that we mitigate abuse risk all right so that's actually you know I hope I convinced you guys that you know the protocol is simple and you know it satisfies all the design principles that we wanted ahead of time so let's move on to the actual implementation of the protocol and and where it's implemented so the first thing that we need to figure out is you know where did we get this breach account credentials right where did this password where do these breach passwords come from so actually there's a fabulous counter abuse teaming in Google that actually works on this stuff and they have a paper from CCS 2017 that describes you know that gives more details about how to get this database but this database contains more than four billion unique user names and passwords from breaches and this is what will be used went from the API when serving for the API alright so I'll talk about the first feature that we launched earlier in 2019 that sort of exposed the password breach alerting API to the general public and it was through the use of the password checkup extension so right now this was just very recently it has over a million users at this point in time so what happens is you know a user goes and when they download this extension what happens is the extension would automatically detect login forms so let's suppose you know a chrome user sort of downloads this Chrome extension so every time it sort of logs in a username and password to a form the Chrome browser extension would automatically detect it and automatically perform a password reach alerting protocol and you know you get one or two notices you know if if you're the you know the account credentials you use to login with we're secure you would get sort of no no notice and if you sort of clicked on the extension you'd see that none of the passwords you recently entered were detected in their data breach on the other hand in the bad case when you know you you log in with a breach credential you automatically get sort of this red notice immediately telling you to change your password on this specific website so for example if I logged in to github.com with some bad credentials it would send you this notice alright so before I like to go I'd like to just quickly mention that the extension actually uses an older version of the protocol and the future and another the other features I'll talk about later use the newer version of protocol and the nuances between the two protocols we discussed in the next talk by Lucy all right so I'm going on we were actually able to you know collect anonymous telemetry from this extension and so I wanted to share with you some very interesting statistics that we were able to deduce using this anonymous telemetry so you know for anonymous and lemon tree we just we got things like you know the domain that of which people were logging into timestamps breach status and you know performance and stuff like that so the first thing I'd like to mention is performance metrics of the extension so I think I mean this might be a little outdated but you know at peak usage is about 20 queries per second happening to the extension with over the million users and I think it's a little more now and sort of the round time late around the round-trip latency of password breach alerting protocol was about eight and a half seconds but this includes all the client work that needs to be done and stuff like that and in particular almost half of this was spent on this proof of work you know this argon to hash we had talked about where we used to live to mitigate abuse risk so in turns it turns out that you know this is even though it seems like large 8.5 seconds it's actually quite quite a lot smaller alright so moving on to like the frequency of warnings by extensions in the first month after we launched the Chrome extension we had about 21 million logins that were scanned and of these 21 million logins that were scanned about 300 16,000 of them had a breach credentials that were detected so sort of extrapolating this sort of data out it seems like about one and a half percent of logins on the web are breached but this might be a little skewed because of obviously the people who are who download the extension are privacy conscious people to begin with but sort of this is a this is a general idea of you know of a cool statistic so now this is this I'd like to call out to be a much more open problem is that user response to warnings by extensions we're not actually great you know every time you sort of log in and you have a breach credential you would sort of see this red notice and we wanted to you know keep track of how many people actually adhere to the notice and change their password and it turns out only 26 percent of the people actually changed their password so you know password check up is great but it doesn't really work unless users change their password so I really wanted to call this out as a really an open problem that we really need to solve to make sure this sort of password checkup works better and you know I'd really love for people to work on this alright so this looks like bad news on the other hand we have much better news on the other hand so you know we'd only have like 20 60 percent of people who actually change their passwords when they see this notice but of these 26% percent of people who change their passwords they're newer passwords were strong or stronger than the previous one so in this case this is good news for us right that when when users see this they sort of see that their their their passwords have been compromised they changed their passwords to become stronger in hopes of you know making sure they don't become compromised again alright so that was sort of the first feature we had launched which was early 2019 it was this extension and now we it was a little more experimental in a sense we're trying to get an idea of whether the feasibility of this protocol when we instead of before we deployed it to very large groups of people so now later in 2019 maybe around I think September we actually launched this sort of a pasture breech alerting protocol directly into the Google password manager so if you go to passwords on google.com or those who use the Google password manager you know that they'll sort of show you a list of all the passwords that you have and in particular we launched this password check up sort of a feature so you know if you go to passwords like Google klom you sort of click check passwords it does a bunch of sort of checks for you to make sure that your passwords are strong and they're not compromised so sort of the first line or the first thing that sort of checked is whether your passwords been compromised in data breaches or not right of course other things that are also checked are things like reuse passwords or whether accounts have weak passwords and stuff like that all right so sort of going forward and I think this is probably the most exciting thing that we did was that we you know previously we had this Chrome browser extension that required people to sort a lot to sort of download the extension or sort of opt in so we went ahead and did it was actually implemented this natively into the Chrome browser and this was just recently launched in December of 2019 so last month so what sort of happens now is whenever every signed in user whenever you log in to whenever you know you enter credentials into a login form the Chrome browser would automatically detect that you're logging in to a crawl into a into a into login form and perform the check for you automatically right and you know if again if you sort of have a you sort of log in with credentials with a breached you would sort of get this notice the meetings telling you to sort of change your passwords all right so I mean these are like sort of the three features which are currently available for general public users to utilize the password checkup to help and go and check your credentials all right so going forward I'd like to mention that you know a lot of cryptography it's very difficult implements and it's very important you know that the academic in the outside world the general public sort of that the data so I was sort of at the code so I'd like to mention that all the cryptographic protocols that are used in the in the password in the password breach alerting protocol are available on github and under the private joining compute sort of section so this it contains all the cryptographic elements are the cryptographic implementations but the actually the more general implementation of the actual password breach alerting you can see in the Korean code base which is also open sourced alright so I wanted to come with the conclusion that you know hopefully I've convinced you guys that privacy preserving password check up is actually protecting millions of users from account hijacking around the world and in particular we're trying to solve this imbalance of knowledge where we give users more power and knowledge of which of their credentials are secure into you know which they can feel comfortable with and which ones are breached and should be changed so thanks for taking listening and talking I'll be happy to take any questions so we're already a little bit behind schedule so I'm gonna limit the number of questions just to a few so let's start on this side thank you very very very cool work and I'm really happy to see Google working on this my question is it seems really crucial to the security properties of the protocol that there's this association between the username and the password but what if all you have is a bag of passwords have you thought about that problem yet right so this is this is a great question it's something we actually considered so one of the principles that we came up with when coming with this protocol was that we didn't want any false positives so we felt what I mean by false positive is the following you have a very strong password which sort of give you a false positive that oh your password is compromised you should change it right as we know it's already very hard enough to come with a strong password and if you keep asking people to change it you can sort of they might enter weaker passwords or ones that they'll forget so going back to this idea of just doing password only checkups suppose you know you can imagine a situation where I actually have a strong password and you know maybe only one other person in the world somehow shares the same strong password of me and they're how credentials were breached right so in this sense is it really does your confidential is actually compromised and in our sense we believed it's actually not and it was safer for us to keep to make sure that users kept their old passwords I think so though if an attacker can guess the password that it knows if it if it can do like an online attack to you know it thinks it's highly likely that you might have that password I don't I just don't know if the risk is totally addressed that's fair enough I think I think we still believe that the usability this false positive stuff was much more important in the sense we don't have to go change the passwords thank you so the server reveals a list of hashes to the power K and at the same time the server can be used as an Oracle to raise anything to the power K so can it be abused by an adversary to find a weak password of someone yes so that's a that's a great question and that's that's one of the problems we we were addressing so one of the ways we said we talked about before which you could actually use these sort of to limit the number of queries that are being performed to like you know usually raising to the power of K with the Oracle you can use sort of argon to or expensive hash functions right so sort of it makes a actors sort or like hacker sort of have to really spend the computational time to make that happen right other ways we do this are things like rate limiting so for example the Chrome browser right now only allows signed-in users to sort of perform queries and we have rate limiting for each account and it sort of cost people money or like those there are cost and guards against creating many accounts so we sort of rate limit to prevent these sort of attacks from happening okay I'm gonna take one more question from this site and then we're gonna color line so my question is somewhat related to the first one I'm wondering if you consider using stronger privacy guarantees under username so for example if you ask for if you check our best world enemy at depth I'll use your time to connect to under private connection then you can easily in fact that that reason I mean is being used for that connection yes so absolutely we always look at trying to improve the privacy of everything we do but in this case it turns out to be a sort of a feasibility versus privacy sort of trade-off right to sort of gain very strong guarantees for private for username at least to my knowledge they required a significantly more efficient like efficiency losses right sort of having almost not real time checks cuz you have to you know we can go into this a little more detail but you know it costs more to sort of hide more bits at the username so there's a trade-off of whether we have you know whether the current disk and on India that we provide for usernames suffice is for the data and we believe he does so because usernames are less private than passwords right but on the other hand having the feasibility and enabling users in the general public to have real-time password check out we believe was much more important so we were able to sort of sort of find the right balance we believe Thanks okay thank you very much Kevin let's thank the speaker again Anna will now move to the the last talk of the session and it's a short talk and it's going to be given by a by Lucy I'm just setting up okay so a talk is about protocols for checking compromised credentials and the talk is given by Lucy Lee from Cornell so today I'll be talking about the same general topic as Kevin's talk and Kevin talked about the details of Google's implementation of a compromised credential tracker and I'll be taking a look at these types of further calls as a whole so like what we want security wise and to what extent existing for other calls meet that goal so as we've all heard about there been many passwords reaches over the years which has led to attacks called credential stuffing and these attacks can be dangerous because around 40% of users we use passwords across different websites meaning that even if an attacker has your credentials from another website they might be able to log in as you on a different website so one way to mitigate the problem of credential stuffing is to use a third-party to check if a user's credentials have been previously leaked and we call these third-party services compromised credentials checking services so using this service we have a client which can be some individual or another online service and the compromised credential checking server maintains a copy of a leaked credentials database so a collection of usernames and passwords that have been previously leaked and the client has a credential which can be either a password or username password pair and they want to find out whether or not their credential is present in the servers weak password database so the main question we want to consider here is can we use a third-party checker and still preserve privacy of user credentials to big initial deployments of services with this goal in mind or have I been pwned which checks to see if your password is present in a non dealer breach and Google password check up which we just heard about which checks if you use the name password pair is present in a breach so to answer this question in our paper we made the following contributions we gave a formalization of these c3 protocols and talked about the threat model and we show formally and empirically that have I been pwned and the initial Google password checkup protocols leaked information all passwords so I'll be differentiating between what I call GPC v1 and v2 the one that we just heard about is the second version which is an improvement upon the first version the first one used a different vocalization protocol which I'll talk about in a minute and we give new c3 protocols that leaked less information about passwords in the username password setting this is ID based bucket ization which is now the second version of the Google password checkup protocol and we both arrived at this new protocol independently and in the password only setting we introduced a new protocol called frequency smoothing bucket ization so today I'll specifically be talking about our empirical results that motivate the move from the first version of GPC to the ID based bucket ization and hopefully from the have I been poned protocol to frequency smoothing vulcanization and we give an overview of frequency smoothing bucket ization which is our new password only c3 protocol so to take a quick look at our threat model it's pretty similar to the one that Kevin just described so there's a lot of potential other issues but in this talk I'll focus on the key challenge which is protecting a client's password against a potentially malicious server so obviously this means that we're not going to send the password and the clear to the server and in the ideal case this means no information about the password is leaked because any partial information enough about the password that is leaked to the server could speed up online guessing attacks of this password so more specifically suppose see through service obtained some password leakage associated with a known user Alice and the service could then use this information to improve the efficacy of an online guessing attack in which they have cue tries to guess the guessed Alice's password before they get locked out and knowing any partial information about Alice's password can be the difference between guessing it correctly in Q tries versus not being able to guess it at all so one main issue as we saw when designing compromised credentials checking protocols is the large amount of information a server has to store and search through on request from a client so typically a c 3 server could store hundreds of millions of passwords or even billions of user name/password pairs so they need to be able to handle client requests efficiently one way to achieve this kind of efficiency is to divide the entire credential space up in the buckets so here in this example the list of passwords held by the c 3 server has been split into a few different buckets when a user wants to check for their password in the database they send the bucket identifier in this case it's the color orange to the C 3 service the C 3 servers can then send back all the passwords that are in the same bucket and we also need to combine this vocalisation with some way of hiding the passwords like some sort of private set membership protocol similar to the one we saw in the Google protocol so we don't reveal the plaintext to the client and in practice both have I been pwned and Google password check up use some sort of hash prefix as a bucket identifier have I been po news uses a prefix of the hash of the password and in the first version of the Google password check out protocol they use the hash of the prefix but the prefix of the hash of the username password pair so the key security question we want to answer with artwork is how much does knowing the bucket queried help an adversary guess a client's password so one way we answer the security question is through empirical evaluation again we want to know how easily an attacker can guess passwords given bucket identifiers for different see-through protocols we use a breach data set of 1.4 billion username password pairs which we split into a test set and a leak password set and we measure the percentage of passwords an attacker can guess in Q queries with access to the usernames that they're targeting so to visualize our results I've plotted an attackers successful password recovery rate when given 1 to 1,000 password guesses and in the baseline simulation where the attacker gets no information about the password it can recover less than 10% of passwords and a thousand guesses but when we use the have I been poned or the GPC v1 protocols and leaked that bucket information to an attacker they can now guess 60 to 70% of the passwords and frequency smoothing buccal ization which is our new protocol that we propose in the password only c3 model when we give the attacker the bucket information for that protocol the attack only performs a little bit better than the baseline so first I'll take a quick look at the ID password c3 setting which we already heard a lot about and then I'll talk about the password only c3 setting so in the ID password setting we check for an exact username password pair match with a c3 server and the first version of Google password check up initially implemented a protocol that uses the prefix of the hash of the username password pair as the bucket in the fire and as we saw in the empirical evaluation I just showed there's protocols for security if the username is known to the attacker in our paper we also give a formal justification for why this one for what the security loss is and so we eventually both settled on ID based balkanization which uses just the prefix of the hash of the username as the bucket and of the fire which we also give a formal justification about for why this will leak any information about the password so moving on to the password only c3 setting this is where we check if a user's password is present in breach data so the ID Beit ID based bucket ization protocol does work in this setting because we don't have access to user names and a c3 server might want to use this because it could avoid the risk of storing user name/password pairs and potentially making it easier for an attacker to find those so I'll talk about why have I been pwned leaks information about passwords that speeds up remote guessing attacks and I'll go over our new protocol frequency smoothing bucket ization so how have I been pwned works is the user takes the hash of their password and sends 5 character prefix to the server the server then sends the user a bucket of all credentials that start with the same hash prefix and then the user checks to see if their passwords full hash is present in the bucket so to illustrate the issue with have I been pwned I've constructed a small example so users generally choose passwords from a skewed distribution like the one on the left where some passwords are much more popular than other lower probability passwords and there's usually along the tail of low probability passwords with which I haven't shown here but with the probability distribution you see here we might get a bucket ization like the one on the right where each password is matched to one bucket and the colors in the book is here correspond to the probabilities of the passwords given the bucket so if an attacker knows which bucket was queried it's pretty easy to figure out which password is most likely to be the correct one and then they can narrow down the search space to only those passwords that belong in the bucket and then choose the most likely ones from that list to guess in this example even in the case where we have two passwords in one bucket the blue password is much more likely than the orange password so an attacker would guess that one first and have a higher chance of winning so to fix this problem we introduce frequency smoothing bucket ization as a more secure password localization algorithm instead of putting one password in each bucket corresponding to its hash value we add it to a number of buckets proportional to its probability so the passwords in the distribution on the Left might be mapped to buckets in a way that looks like this and you can see that the most popular password the password is split up into is put into every bucket and the least probable password which is the orange password is only added to one pocket so the goal here is that given a bucket the probability of each password in the bucket being the correct password is about the same and how do we actually implement this so frequency smoothing bucket ization is parameterised by an estimate of the password probability distribution as well as Q the expected guessing budget for an attacker and first I'll talk about how this works when Q is equal to one so we have some number B of buckets and we take the most probable password then we add it to every bucket we then add the rest of the passwords to a number of buckets proportional to their probability relative to the most probable password so for example since the blue password is half the probability of the red password we add it to half the total number of buckets and we choose the starting bucket for a password based on some hash function and we add a password to every bucket in the range from its starting bucket to the number of buckets that we're adding it to and a password can be included in anywhere from 1 to be buckets if a client wants to check if their password is in the server's database they can compute the range and select a password randomly from that range so the server when fetching some bucket I just returns all passwords that have ranges that intersect with I so this parameter Q as I said reflects the expected online guessing budget of an attacker so how do we actually implement this when Q is greater than one so what we do is we include the top Q passwords in every bucket and distribute the rest proportionally relative to their probability compared to the probability of the Q the most popular password so for the security of our frequency smoothing bucket ization protocol we show that if an attacker has less than or equal to Q guesses access to the bucket won't give any information won't give any advantage over baseline guessing where baseline guessing is just guessing passwords order of highest to lowest probability and we also give bounds for when an attacker has greater than Q guesses which we show in our paper in general higher values for Q lead to a smaller security loss but also they mean larger bucket sizes for our protocol so when choosing a parameter at Q we have to balance between the two factors and taking a quick look at how all of these protocols that I mentioned perform if we take a look at the password only setting it's pretty clear that have I been poned is more efficient than frequencies moving bucket ization but as we saw it's also much less secure frequency smoothing bucket ization has about the same cost as the protocols in the ID password see-through settings so it's definitely feasible to implement and run and in terms of the ID password C 3 setting they both have similar bandwidth in runtime so it's pretty clear that ID based bucket ization would be the better protocol to use in this scenario and so in conclusion some deployed C 3 protocols leak a lot of information about the user's password to a c 3 server and we recommend using frequency smoothing bucket ization and the password only setting and ID based vocalization and they username passwords I think thank you so we have time for perhaps one question or two questions if they exist we got one coming you can actually actively you accurately model the probability of any particular password how close is that to be to is to exact how close is that to accurate obviously we don't know like that for the real distribution but because there's so much data over like password breaches we have billions of credentials that have been leaked we can see that there's a lot of passwords and there like a lot more likely than other passwords and it kind of forms a easily guessable distribution so in order to compute the range to know what bucket to query the client needs to know the probability distribution yeah how does the client get that so we have a model of the profit probability distribution that's relatively small that we can send to the client so they can compute this okay thank you very much for the talk yep and that's lunch time and we'll see you in the afternoon for a session on machine learning and cryptography