18771 >>: Good morning, everyone. It's my great pleasure to welcome Tom Ristenpart. Tom is a Ph.D. candidate from UCSD. And his advisor is Mihir Bellare, a very famous cartographer. And he also collaborated extensively with Stefan Savage, Tadayashi Kohno and all those folks that we are very familiar with. So, Tom is interviewing drum lay with the Security and Privacy Research Group and the Crypto Research Group. He's intervening for bold researchers in postDoc positions. And Tom is going to talk about his dissertation work, how he has improved the interface between systems and cryptography. >> Thomas Ristenpart: Thank you very much for that kind introduction. So it's great to be up here in Redmond, talk about my work in computer security. And so the background, of course, for working computer security is that it's incredibly hard to get our complex computing technologies of today to be secure in the face of malicious users. And, of course, the -- you know, the consequence of having security, as we all know, can be quite drastic, whether it's criminals breaking into corporate or other organizations, data centers and making off with data on hundreds of millions credit card accounts or growing privacy concerning the fact we are carrying smart phones with us all over the place and these are notifying third parties of our locations. Or even some resent work highlights knew technology, in this case, cloud computing can really give rise to interesting new threats that we really need to consider. And so, to handle all of these, you know, to help us in building more secure systems, we really like to have powerful tools. And one such is cryptography. This allows, for example, encrypting a message that can be sent securely and privately over an insecure public network. And the reason that cryptography is so powerful is not necessarily what we set out to do so much as how we verify that we've accomplished our goal. And here, what cryptographers do is make use of a framework known as approval security. So the idea is that a cryptographer sits down and decides precisely and mathematically the algorithms involved and what the tools are supposed to be accomplishing and quantifying the adversarial resources that they expect attackers to have, whether this be running time or access to their information. And then, now, relative to this abstract model what a cartographer does is give approved security in MP complete style reduction showing that any attacker who can break a cryptographic scheme, well this implies the ability to break some underlying, simpler primitive. And what this reduction does is actually gives a very strong guarantee of security if we make a judicious choice of our underlying primitive. For example, basing it on factoring large composite numbers or some very thoroughly studied primitive such as the AES block cypher. So then we go to a very strong validation tool. We can use proofs to understand that attackers, at least if they are working within this abstract model that we've designed, really have very little chance of breaking the cryptographic mechanisms. So what's the catch? Well the problem is really in the handoff, right? Because on one hand, we have systems with real implementations of cryptographic protocols and real threats. And on the other hand, we have cryptographers using abstract models to design and verify their algorithms. And so the problem is if there's any mismatches between these two worlds, then these mismatches can be found and exploited by attackers. So to give back some of the examples on the first slide, right, we have problems like breaking into databases, and here the cryptographic tools we have aren't deployable due to Legacy constraints, so this leaves plaintext vulnerable. Location privacy really isn't achievable by cryptography alone. Of course you have other systems-related phenomenon like the fact we are using the internet and this reveals our location already to third parties. And then there's more subtle issues about using cryptography in new environments that were not envisioned by designers and implicit security critical assumptions end up being invalidated. So, my work over the last bunch of years has really been about trying to tackle these problems that occur at the intersection of cryptography and systems. Understanding the types of a gaps between models and reality, how these types of gaps can be exploited by attackers, and then, of course, trying to figure out ways to improve the situation and fix the problems. And so, consequently, I've taken a pretty broad view of research, working both on understanding threats, so really this is just a nice way of saying -- finding attacks against systems that are using cryptography. Also, building systems, so starting from scratch to create a system that uses cryptography in some broader system security context. And then also working on improving the cryptographic theory and tools that we have in order to make them more useful for practical situations. So what I'm going to do in this talk is basically go over a bunch of different projects at a pretty high level and relatively quickly. I'll talk about this issue of encrypting credit card numbers in databases, problems related to the use of randomness in cryptographic protocols. I'm looking at building a security system in the complex of device tracking. And then I'll talk about my most recent work at the end in the context of cloud computing and revealing knew threats there. So I say, I'm going to be going over things relatively quickly and kind of high level. I encourage you to jump up and ask questions or interrupt at any time. We can make this quite interactive, it would be good. Okay. So let me start off by talking about this -- this problem with credit card numbers. And the fact is that we just have millions of databases out there that are storing account information about people, and these databases, you know, so they are storing names and also credit card numbers, for example, and the fact is, if we wanted to encrypt these credit card numbers so that if an attacker does succeed in breaking into a system, now you would only have access to ciphertext as opposed to the plaintext credit card data. The fact is our existing traditional cryptographic tools aren't going to help us with the job very well. And this is for a relatively simple reason. Say we want to use something like AES, a traditional block cipher. It's a map that uses a key to encrypt a client text of 128 bits to a cipher text of 128 bits. So if we use this to encrypt a credit card number. Well, the result is that we get a ciphertext that is 128 bits. And there's no way to encode 128 bits into a 16 decimal digit number. And so literally, the ciphertexter can't fit back into the data base in lieu of where the plaintext was. >>: How about a stream cipher? >> Thomas Ristenpart: You can use a stream cipher, but it won't give you much security. So we'll talk about that in part in a minute. So the problem is, so this is kind of a gap where our cryptographic tools, stream ciphers, block ciphers, these things don't really solve the task at hand, and so in practice, we don't end up using encryption in databases as much as we might like. And so there is always that, when criminals break into companies like T.J. Max or credit card processing systems like Heartland Payment Systems, they ended up make off with quite a bit of data. So we'd like to fix this situation. >>: So this is a particular database scheme? Somehow it's used by all of these people. >> Thomas Ristenpart: Uh-huh. >>: Is that just another [inaudible]. >> Thomas Ristenpart: Excuse me. This is just an example. But the point is that there's a lot of software in database systems that are built around the idea that you have a 16 or 18 digit credit card number and to use the existing cryptographic mechanisms that are actually secure for this setting, then you would have to redesign the database and the software around that cryptographic mechanism because you can't just replace and place the credit card number with a ciphertext and so the -- yeah? >>: This assumes that the method of entry would be stealing this data can be solved with encryption if the vast majority is on the [inaudible] sharing or trust or bribes, then encryption is no more -- it is no better than no encryption at all, true? >> Thomas Ristenpart: That's, you know, partly true. The point is that we would like to use encryption in this setting to narrow and limit the focus of what we need to protect, right? So your moving from having to protect the database from multiple copies of a database in various places on various systems to having to protect the cryptographic key, right? >>: Example of stolen identify solved? >> Thomas Ristenpart: Yes. That's the idea. And I'll talk about that. It happens -- to a certain extent. We'll talk about details later, in a minute. So the suggestion actually for ->>: Can you explain why the extreme [inaudible] wouldn't have been secure? >> Thomas Ristenpart: The problem is if you use a stream cipher, right, you have to -- you're going to encrypt with like a pad, basically, right? And so if you use the same pad for multiple plaintext. >>: So [inaudible] with the user. >> Thomas Ristenpart: So where do you store the salts, right, is the question? >>: The salt is, you've got other information in those fields. Why not use the salts? >> Thomas Ristenpart: Well, the question becomes, then you have to ensure that all the information is unique in every single field in the database. And so this becomes a usability issue for the ->>: [inaudible] presumably one of the things you can solve with, correct? >> Thomas Ristenpart: Right. So ->>: I mean it's almost any database is going to have a unique ID so that ->> Thomas Ristenpart: Yeah, so this is -- these are all great questions, and I think the fact is, I don't know all of the details about the deployment requirements in the settings. But when we talked to people in industry who are deploying or wanting to deploy credit card encryption mechanisms, they find that these -- there's too many constraints to use things like stream ciphers. And so what they really want is a stand-alone solution that you're basically handed a credit card number and under some particular key that's easy to start like in a hardware security module, you get back the credit card number that you can then place into the database. And the way it's actually ended up being deployed is they actually taking credit card numbers when they first enter a network, for example, and send it off to HSM right away and get that credit card number even before it ends up landing in a database. So this provides, like global security, no matter where the credit card information ends up appearing, not just the database but throughout the whole network. Okay. So the solution that I've basically just kind of highlighted a little bit is this idea that we want to have what's called format preserving encryption. And the idea is that we want to have encryption mechanisms that can take, for example, a credit card number and map it under a key now to a cipher text that is also a valid credit card number. And this reply for this particular example in place replacement of the plaintext with the cipher text, and the surrounding systems that also use this credit card number now can just treat it, the cipher text as before. So how can we build such a format reserving encryption scheme? Well, we can of course use AES and just truncate the output, but this isn't going to work, right? You've thrown away some of the values you need to decrypt the cipher text. Okay. We can also, of course, use something like electronic code book mode. This actually does allow format preservation. And, for example, what this would do is associate each plaintext digit encryption of it. So this key is the table now. And so to encrypt a credit card number we replaced literally two with the seven, and three with four, et cetera. >>: And that would be the same as a salt to stream cipher product? >> Thomas Ristenpart: Yes, this is the same as a salt to stream cipher problem, right. Yeah, so of course this isn't secure because as soon as you have one plaintext, cipher text pair, you learn the code book. >>: [inaudible]. [laughter.] >> Thomas Ristenpart: Okay. I'm talking to too expert of an audience. Noncryptographers love this example. So anyway that is horrible idea from a security standpoint. It's the same as the unsalted stream cipher. >>: [inaudible.] [laughter.] >> Thomas Ristenpart: What's that? >>: [inaudible] five. >> Thomas Ristenpart: Well, I could go through lots of different attempts. We can spend all day talking about bad ideas. Okay, so, yeah, these things are bad straw mans, right? So what we really want, okay, so we want a format encryption scheme for credit card numbers. But then when we came and looked at this problem, we said why are we restricting our attention to credit card numbers? We may also want to encrypt, say, a valid postal address back to a cipher text that's also chosen from the space of a valid postal addresses for some sub-set of all postal addresses, or maybe we want to apply this to some formatted medical record and retrieve, get a ciphertext back that is also a medical record. So what we said is actually maybe we should actually try and target a more general tool, right? Providing an encryption mechanism that actually can preserve membership in, say, any arbitrary regular language. And this is actually the problem that we -- we set out to solve and we did solve. So, let me just tell you a bit at a high level about what we did. We provided the first formal cryptographic, modern cryptographic treatment of the format preserving encryption problem. This means defining what it means to have a scheme, providing security notions, for example, resistance to messenger cover attacks if we don't want people from a bunch of -- from a ciphertext be able to recover the credit card number and other information. And then we provide practical construction. But doing this formalization actually us to take advantage of quite a bit of cryptographic theory, and also and if your related to, for example, ranking of regular languages. And so just to give a flavor of what the proposed solution looks like, at least for the specific case of credit card numbers, not for an arbitrary regular language, but for credit cards, we end up using a modified variance of [indiscernible] networks, so the idea is you take a 16-digit credit card, split it into two sides and run the right half through AES, and now you have 128-bit value that you can encode as number and you add this mod ten to the eighth with the left-hand side and you get the right half output, and you just drop down the right-hand side to the left-hand side. So the point is this round is invertible so we can go backward through this. And then we can do many rounds of this to achieve security and provable security, so that we can show that for any arbitrary A, for example, that's trying to break our scheme in terms of, say, message recovery, well, then, this is actually going to imply the ability to break AES in some nontrivial way. And so the conch positive gives us a nice guarantee of security that the format serving encryption scheme is as secure as AES. And this means that we haven't introduced any problems in the development of the FP scheme. >>: Are there any boundary cases or like odd length [inaudible] that you need to encrypt? >> Thomas Ristenpart: Right. So in the general case, right, you have to deal with this underlying problem of encrypting on any arbitrary size finite set. So, for example, if you have a prime ordered set, then this becomes problematic. So there's a bunch of techniques that I didn't talk about to deal with this, but for that particular case, you end up using a -- actually relatively old technique called cycle walking. Actually it dates back to the 1910s or something in World War I. That is you can iterate a cipher that works on a slightly larger domain to get back into a prime workset with one that can be split evenly in half, for example. >>: Do you have to know something about the distribution of plaintexts? >> Thomas Ristenpart: Yes. Well, yes and no. See, the -- the definitions and the scheme don't require any knowledge of the distribution of plaintext. Of course, if there's only one plaintext and you get the missing inscription of that one plaintext, you know that there is one plaintext. So in general, if there is a very low entropy in terms of the plaintext size, and you see lots of examples, there could be concern that you are learning information about partial information about messages. But in these -- in these -- we still have a security wing here because we are still encrypting it so you -- you would have to have access to an encryption box to actually check to see. So say you have some relatively small set of potential plaintext that you know occurred, you'd still need to do trial encryptions with the box to actually check if the ciphertext matches the one you have in hand. And so this can be handled by, for example, metering the number of encryptions allowed, you know, per second or something. And, you know, it's a concern, but it's ->>: They can steal the whole database. Can't you say oh, well, the one that occurs most is California. The one that occurs next most, that's New York? >> Thomas Ristenpart: Oh, I see what you're saying. Yeah. So in deployments we, of course, suggest using salts as well, so these are actually tweakable encryption schemes is what they call it technically. So what you can do is not only include the message and encrypt the message and encrypt under key B, but you can actually in some situations you can salt the other elements. And so that is an important way to -- important help to deal with that type of variation issue, uh-huh. But it's fundamental in this case that if you need determinous encryption which is what we need here to achieve this Legacy compatibility that the industry people are asking for, then you have this concern about small message spaces. So, this work we were talking to people at various companies when we were working on this, and the result is that there's a standard that's been proposed to NIST based on this work, and, in fact, some of these companies are actually already deploying this technology. So Heartland Payment Systems is one of the companies saw that had problems before, and they are prototyping the system based on FP, you know, from that voltage. So they actually do like this functionality. Okay? So, that was an example of a kind of mismatch between cryptography and systems. There was a simple stay, we just didn't have the right type of tools to -Yeah? >>: One thing before you move on, I'm not sure if this is the appropriate place for it, but when you say this is the first modern attempt at this sort of thing, are you intentionally dismissing Schroeppel's Hasty Pudding? >> Thomas Ristenpart: Oh, yeah, yeah. So -- so -- well, he didn't formalize format preserving encryption, right? He formalized having a bit-oriented cipher, right? And he did it by hand. So the problem with Hasty Pudding is -- so it gives you something that works on bit strings, bit strings of arbitrary size but not something that works in arbitrary formats. And so there is an extra step to actually ->>: [inaudible] work on arbitrary formats, but it was very cumbersome. >> Thomas Ristenpart: That's may ->>: He described it as an ominous site for a decorative, encrypted any forum and put it back in exactly that forum is just [inaudible.] >> Thomas Ristenpart: So that's just -- he didn't talk about doing things like encrypting regular languages I think at all. So he does -- it's a very flexible cipher, it's true, and we cite the work extensively, of course. The -- you know, the basically recognized problem with Hasty Pudding is no one looked at it in terms of security, so no one knows if it's secure because it was designed by hand whereas with these types of schemes, you can take advantage of the analysis of AES that's, you know, been going on for the last ten years and is ongoing. Okay. So let me move on to talk about a second problem which is the use of randomization in cryptographic algorithms and how this causes problems in practical settings. So just as a bit of background, you know, we have modern public key encryption schemes is a good example that I'll keep coming back to. This allows generating a public key secret key pair and, you know, distributing the public key so others can encrypt messages so only the person with the secret key can decrypt. But the point is that many or the goal now for modern public key encryption schemes is that they are randomized which is that -- which means that the encryption mechanism not only takes the message in the public key, but also takes a string of random bits or bits that are -- should be choosing uniformly at random from the set of all such bid strings. And the reason for this is that it provides a stronger security in some applications. So, for example, if we are communicating between one party to another, and we -- and we have an adversary that's seeing some of the ciphertext going by, and the adversary can't even tell if the same message was encrypted twice, and so this can be important in certain contexts. So, in theory, of course, we can just assume that we have access to some algorithm that samples this value R at random. But in practice, we have to implement this somehow. And so what's done typically is using a random number generator. So software-based random number generators, for example, measure certain unpredictable events like keyboard presses from the user or mouse movements. And then try to extract from these measurements a string R that should be hopefully -- should be uniformly uniform at random from an adversary's point of view. But the problem is, of course, that there's been a long line of work showing that random number generators are really hard to get right. So this ends up with problems that are -- is exposed to attackers or repeated or even predictable in the worst case. So there is this famous example, at least in this community it should be pretty well-known about the dubbing open S cell mod where they commented out a couple of lines of code in the source base, and these are the lines of code they are actually responsible for adding measurements to the random number generator. And so you ended up with a very small set of possible R values that are predictable to an adversary's point of view. >>: This is a problem not just with randomness in primitive calls, but keys are generally from the same source, right? >> Thomas Ristenpart: This is true. So -- so, yeah, of course, if you have keys that are generated with bad random string, your host, I mean, I think there's distinction here between -- and then one that is important here is that, you know, between frequent and infrequent operations. So if you're generating a key, you can only generate the public key secret key pair once for a long time, but then every time you encrypt a new message you need knew randomness constantly. And so it seems intrinsically more difficult. I mean, you need more randomness to deal with the problem of generating randomness for message encryptioning and you need it in a variety of context where you can at least, now in your case, sit down with and generate the public key secret key pair once, and then distribute the public key. >>: You can. But you're all certainly using the same underlying random number generator. So if it's got a small set of R ->> Thomas Ristenpart: Right. >>: Then not only are your protocol randomness [inaudible] but so are your keys. >> Thomas Ristenpart: Right, yeah. And there's something fundamental there that we can't change crypto to make up for that problem, right? If you don't have any randomness anywhere, well cryptography doesn't work. >>: Doesn't work. >> Thomas Ristenpart: Absolutely. So what I'll -- to lead in a little bit, what I'll deal with is one of these two problems which is dealing with the routine randomness. And if you have good keys, then we'll show that you can do something quite a bit better than what's currently done with a bad routine randomness. I want to talk about another place from my recent work where randomness -random number generators kind of failed. This is the context of virtual machines. And the idea is that security experts and companies are advertising the idea that you should do browsing within a virtual machine. And so the idea is pretty straightforward. So, you set up a guest operating system and run, say, your Firefox or some other application within it. And then you can take at this point a clean snapshot of the virtual machine. What is this? It's a copy of the entire state including active memory and persistent storage. And the snapshot, then, you can reset to every time you want to do a browsing session, okay. So with the idea that now in one browsing session you visit a bad site and you are -- have a vulnerability exploited, well, then, the virtual machine ends up getting compromised, but the isolation guarantees the hypervisor should ensure that the host operating system remains virus free. And so next time you go surf and you reset to your snapshot, then, well the Malware is gone and you have security -- a new secure session. So this has some very tangible security benefits, but some recent work showed this actually causes problems for cryptographic protocols, and it's because of random number generation failures. So if you're in this setting and you reset to your virtual machine and now visit a secure website, so use HTTPS, then what happens is the TLS clients on the browser picks -- uses random number generator to generate some secret randomness that's now encrypted and sent to the server, so this shared secret is used to bootstrap a secure session to do your banking. Now, the problem, of course, maybe not of course, the problem that we found out is that if you then reset to this snapshot, and visit a new website that's using HTTPS, you actually end up, the random number generator spits out the same values for the browser. And so you end up sending this secret value to the next server you visit. And this, of course, is a problem because this is all the secret data needed to decrypt a transcript of the banking session. So it isn't an abstract problem, it's a problem with real browsers, Firefox and Chrome had this behavior. And again, the problem is that the random number generation process is being undermined by this snapshotting. And this isn't limited just to browsers. We also looked at TLS servers, particularly we looked at Apache, MOD S, Excel. And there, if your running it multiple times from the same snapshot, then you end up -- and you're using DSA mode, then you can actually end up stealing the secret key from the server. And in general, we think that this -- these -- what are the first examples of what we are calling VM reset vulnerability really seem to be a big -- you know, the tip of the iceberg, so to speak, type of problems here because there's a lot of Legacy software being run in virtualized environments and whether they deal with snapshots is an open question. Back to the story about [inaudible] randomness, well ->>: [inaudible] easy to fix. >> Thomas Ristenpart: So ->>: [inaudible.] >> Thomas Ristenpart: That's actually -- so we haven't worked on this. So this brings up two issues which I'll talk about in this slide, right? You know, one is that we need to revisit the design of our keys in these applications. So there seems like in the short term, there could be a good fix which is just that you don't have Firefox, for example, cache randomness up front and it just does it every time you do a new HTTPS request. Whether in all virtualized environments this is actually giving you good, knew, different randomness each time you run from the snapshot is an open question and something we don't know. And we think, actually fixing the problem in general is going to require more extensive changes. You're going to have to revisit hypervisor design, understand that the random number generators need to be backed up by something from the hypervisor, either hardware or software base and also have all your applications aware of the fact they can't cache randomness for long periods of time because this would still allow this type of reset problem. >>: [inaudible] Firefox having read -- well, it's an application. >> Thomas Ristenpart: It's a good question. We notified the VMM designers as well. They said it was a Firefox bug. But, you know, the -[laughter.] >>: [inaudible] random number generator actually taking the snapshot into different substantiations. You take the snapshot, you [inaudible] in and then you do the same thing again where you get ->> Thomas Ristenpart: Well, that would be true if you had hypervisor that gave you a random number generator. In this case it's not set up that way. >>: [inaudible.] >> Thomas Ristenpart: No, no, no. No, no, no. No, no, no. Okay, so there's two things here. If you have a hypervisor that's providing a rectangle, so for example your placed at random with something the VMM is supplying the randomness for, then you would be okay, I think. But this requires a change to some of the virtual machine hypervisor design. If you just called DEV random and rely on the guest operating system to generate the randomness, well the problem is DEV random gets rolled back with the snapshot as well. So it's not entirely clear that you are going get randomness. >>: [inaudible.] >> Thomas Ristenpart: No, it's open question. I don't know newly. It depends on a lot of things, right? What measurements they are taking. Whether there's enough differential entropy from one run to the next run and this is something we want to study and measure to understand. I mean, to conjecture, I think, having software based RNGS in this setting inside the guest OS almost seems like doomed failure at some point. But whether it's actually a vulnerability or not is a question. >>: So can you always reliably reset the snapshot after the point that the randomness is cached through Firefox. >> Thomas Ristenpart: The way it works is the ->>: If you go back before it's cached, then that's no good, right? >> Thomas Ristenpart: Right. Yes, yes, yes. >>: So you do ->> Thomas Ristenpart: So the way it worked with Firefox, for example, is that the random number generators used the time the Firefox generators booted up. So if you snapshot at any point after Firefox is run -- and the particular experiment, we loaded Firefox, let it sit for a second, took a snapshot, and then went back. And this is consistent behavior, the same randomness got taken all the time. If you took a snapshot in the middle of it booting up or something, then you get inconsistent behavior, but this is unlikely to happen from a usage point of view. So ->>: So a simple fix from the snapshot functionality with VM could be you drawback your [inaudible.] >>: [inaudible] but you can't really take a snapshot, right? Or ->> Thomas Ristenpart: Yeah, it ->>: [inaudible.] >> Thomas Ristenpart: Yeah, it's -- I don't know if there is a -- I mean one simple fix would be to have an architectural -- like an Intel instruction that gave you randomness and maybe you would be okay. But this is totally circumventing hypervisor. >>: [inaudible.] >> Thomas Ristenpart: So there's multiple layers of prongs here. The applications need to be aware of the fact they are being taken -- having snapshots taken of them. And the fact is, the way purposely the way hypervisor is designed is so that applications don't need to be aware of these things like snapshots, right? And that's a functionality thing which is allowing Legacy compatible deployment of systems in virtualized environments. So there's this tension between functionality and security here, and I think this is, as I was trying say before, indicative of abroad set of issues there. I mean we are take all this Legacy code, we are throwing it in virtualized containers there's fundamentally new things going back. We are rolling things back, setting, making copies, duplicates and launching them off and this is only going to become a bigger problem. And so finding the -- so, to have a complete system solution I think is an open question and something that needs -- that I'm looking at. But you know, I don't think there's really a quick fix that's sound in any principled sense. >>: I think the [inaudible] from a systems perspective, I mean there is one fairly easy trigger point, which is these role backs, when you force like a DMp address change, that's something the applications your used to dealing with so. >> Thomas Ristenpart: You still have to modify all the applications that could be vulnerable. >>: To say, you know, you don't have to introduce new event. You just have to introduce the knowledge and the developers that ->> Thomas Ristenpart: Right. >>: -- when you see the address change, you ought to go get a random number [inaudible.] >> Thomas Ristenpart: So that -- that's going to be a significant amount of work. So you're going to have to develop all the developers here at Microsoft on this, right. >>: [inaudible.] >> Thomas Ristenpart: Yeah, so there's two things, right? This basically -- and this is funny, because when I was talking to Chrome or Firefox, one of the guys they are saying look, we are using best practices for random number generation in our code, and so we should be fine. And I'm like, well, okay, the problem is with virtualization we are now going to have to rethink best practice per random number generation usage. I mean, that's just a fact, I think. So that's a hole host of issues that I'm not going to talk about. What I'm going to talk about in the next few slides is this kind of somewhat embarrassing fact, maybe, that you know, our cryptographic operations in the face of doing this repeat randomness like fall over completely, right. Session keys get revealed. Okay. Also secret keys for DSA, stream interest scheme, you can steal them from the server. So our question that we -- the question that this work motivated in part was, you know, can we make the cryptography more robust to these type of failures of routine randomness? So to reiterate, you know, we have kind of varying levels of randomness. We have a proper energy that providing always fresh randomness. We have these settings like VM reset where you get repeat usage of randomness. So you even have things like the [inaudible] debacle which you end up with a very set of predictable values being output. And with our traditional cryptographic mechanisms, basically they are designed in this context where you assume good randomness always and so you get strong security guarantees given a good pop per random share but otherwise everything failings. And so our idea is okay, let's fix this situation and we call this hedge cryptography. So we want our routine cryptographic operations to be as secure as possible. In given whatever randomness they are given. So, for example, with public key encryption when you get good randomness, we achieve our traditional strongest security goals. We get, for example, repeat randomness given to our encryption algorithm then we are not going to be able to improvably reach our strongest security goals but what we will do, instead of failing completely, we'll achieve some weaker but still very meaningful level of security. And so, for example, here your only going to leak the fact that you plaintexted quality which is something that randomization requires to get rid of that leak. And then if the randomness is predictable then we will again get I slightly degraded security level, but still very strong and here, then, only plaintext quality gets leaked. Assuming that there's sufficient entropy in your message randomness pair combined. So let me talk briefly about this last case which in some sense is the hardest for public key encryption. And if we sit back and think for a second about our encryption mechanism well there actually always exists an attack against public key encryption and it's just a BruteForce attack that works as follows. Right. You enumerate the set of all possible messages and the set of all possible R values, and then you just it attacker rate during trial encryptions over each pair and then check to see if the output ciphertext is equal to a target one that your given. And if it is, then you know what the message of that target ciphertext is. Okay so this doesn't always exist, but it's not always practical. So of course if the set of messages or the set of randomness is very large, then this is inefficient and it's not going to be practical in practice. And so at a very high level what are target for hedge public encryption is that security -- a secure hedge public encryption scheme basically mandates that this attack is in some sense the best attack possible. That any other attack will essentially work only as well as this BruteForce attack. So how can we achieve such a thing? Well, we had this idea that we could -- if we could design our i\encryption scheme to behave like a randomness extractor we could achieve this goad. So randomness extractors are these plastic objects that have been used quite extensively in computational complexity. They are used in contexts like derandomization of randomized algorithms and studied extensively. What do they do? Well, they are a map that uses a seed S to map values from some large domain to a smaller range, but with special properties. So, for example, if you choose any sub-set of the domain, that's smaller, but still of large size, then any point chosen randomly from the sub-set actually gets mapped to a uniform point in the range. And so in particular, if we design -- if we just have our encryption mechanism actually act as an extractor so we choose our public key to be such a seed, then this -- this property of the extractor basically makes it look like if you have a message randomness chosen randomly from some sub-set of MR's, then the -an output ciphertext given to an adversary is just going to look like a randomly chosen ciphertext. So you actually hide information about the message. So this approach has a critical failing which is that we need to be able to decrypt messages, and extractors are fundamentally compressing objects. To get these properties, you need to go from a large space down to a smaller space. So you're throwing away some of the Information you would need to decrypt. So we can circumvent this, actually using some new cryptographic objects called Universal Lossy Trap Door functions. And the idea is actually at a high level, somewhat simple. We have a function, now, that actually there's two different types of keys. So you choose a normal key, PK, which has a trap door associated to it, and actually maps to a set of a range of fitness size that you can decrypt properly. But at the same time there exists another way of generating a key, S, such that the encryption algorithm now works like an extractor. And so what it does is actually it only uses some relatively small sub-set of the entire range to -- to map values from D2. And moreover, the point is that these public key and S values are indistinguishable. So from an attacker's point of view, he's given the encryption of an MR, and the -- and another value, either the PK or S. He can't distinguish between the two. So it might as well have been encrypted with this extractor key S. And so that means that we get back to this place where we get the nice properties from extractors that they are hiding information about sufficiently high mid entropy inputs. Yes? >>: [inaudible]. [laughter.] >>: Okay, yeah. >>: [inaudible.] >> Thomas Ristenpart: Say again? >>: Can you give us an intuition for those of us not [inaudible.] >> Thomas Ristenpart: Okay. So a high level, what's the motivation here? That we want to take advantage of any entropy in the message space to make up for a lack of entropy in the randomness. So we like to basically take advantage of all entropy in the MR -- in the message and the randomness combined, and extract that out fully. And so what it -- you know, extractors being used in other cases where you actually have some set of measured events, right, these are using used in some sense for random generation. And what they do is take inputs and map it to an output, and it looks like a uniform point, okay. But the fact is, to do that, to get that property, you need to have a smaller set, and so that comes the cryptographic component that's actually designed a functional encryption scheme we need to actually do something more clever, and that's where this notion of LTDFs comes in, these Lossy Trap Door Functions because they actually have two operating modes. When you actually use it in practice, you use a public key that actually maps to a set that's big enough to decrypt from, okay. But when you're doing your security proof, you can then say, well, from an adversary's point of view, you can just imagine that this public key behaves like an extractor, and it gives this property that it's -- the output just looks like a random point. >>: [inaudible] security proof, why can't you say that? >> Thomas Ristenpart: Why? Well, I mean, there's a lot of details, but. >>: [inaudible.] >>: Many other cipher. >> Thomas Ristenpart: I'm sorry, say again. >>: Why does the security property continue at all. You've proven the secretary property when you're using it in one mode and using it in this producing mode. To actually apply a different mode. >> Thomas Ristenpart: Right. So the key thing is this last kind of mumbo jumbo at the bottom, which is that if I hand you a ciphertext and a key, let's call it D or something, and now D is either a public key or an S, and you can't tell the difference. So in the proof, we take advantage of that fact to say, okay, if we are encrypting a message in the regular world with public key, you get a ciphertext. It might as well, from an adversary's point of view been encrypted with this value S. >>: You say might as well, I mean prior to C adversary can reasonably assume that your actually using this practice. It really is a publication. >> Thomas Ristenpart: Right. But the point is that if you can distinguish between -- if you can learn something about M, then you're going to violate -- we can show using these reductions that you can -- you're violating the fact that these two things are indistinguishable which we've proven under some complexity assumption like -- well, not factoring because we haven't shown that relation here, but something like solving discrete logs or CDH or DDH, I guest in this case [inaudible]. So the point is if in the proof you -- if you show this, what you've shown is that any attacker that does learn message about M is fully able to do something hard. And that's what the proof is in there. So I was just giving you intuition about one of the steps that proof in trying to gloss over quickly. Okay. So we -- yeah, there's proof stuff. And then the -[laughter.] >> Thomas Ristenpart: The fact is that you know, we can take these ideas, basically -- oh, good. And we moved -- and it -- and moving from the starting point, this is actually -- these construction are not practical, but what we show is that we actually can do a practical framework for hedging a variety of randomized primitives. And we'll talk about it, but the fact is you can just go and implement it and it's employable, that's backwards compatible. Yes. >>: [inaudible.] >> Thomas Ristenpart: So in the end, it's like doing two more HMAT calls over RSA by itself. Or an RSA based encryption scheme. >>: They are almost identical, right? >> Thomas Ristenpart: Yeah, right. Uh-huh. Uh-huh. Yeah, not the construction we are showing, but there's a simpler, less mathematically interesting construction, but something that's very practically interesting, yeah. And so we implemented in the open SSO library and the take away is that now what we get is that we have implementations of the cryptographic cools that provided us nice defense in-depth, right. Graceful degradation of security in the face of bad randomness, right. So if some randomness occurs our crypto operations are no longer going to just fall over completely, but give you graceful degradation of security. Okay. So we're still on the last two examples, right. Problems where we identify some issue of practical concern, and dealt it by modifying the crypto, okay. And the next -- the next example, which is kind of systems building example, we are going see is that while we can do a bunch of machinations in design with cryptography, we are going to see this doesn't actually solve the problem. So here it's going to be important to understand the role of the crypto in a broader systems security context. And in this context is device tracking. So let me tell you a little bit about device tracking systems. The idea is straightforward, right? You install on your mobile computing device a tracking client which is going to use the internet to update a remote storage service operated by some third party about the current whereabouts of your device. This could be the time, the IP address, what wireless network your connected to, and maybe other forensic data like pictures taken with a web cam. And then the idea is that if it goes missing or stolen, the tracking client should nevertheless keep updating the storage service with this data. And the user, excuse me, can -excuse me, retrieve this data, work with the authorities and try to attempt recovery of the device. >>: [inaudible.] >> Thomas Ristenpart: It's exactly like Lo Jack, yes. [laughter.] >> Thomas Ristenpart: So Lo Jack is a great example of this. And the point is that there is actually a big industry surrounding these products now and there's a lot of companies offering them, and they are all competing on this engineering to ensure the tracking succeeds in the face of physical adversaries, right. So this laptop has a Lo Jack client actually in it's bios, for example are, to survive, you know, hard disk formats and that time of thing. We are interested in actually a different aspect of this prong which is the privacy issue, right. That of course that these tracking services are also as designed, tracking the legitimate owner when -- via their devices. And so from a psychological acceptability standpoint, this seems a bit uncomfortable. And so we pose this question, that can we provide a tracking service that at least the tracking service provides the functionality that its required in the sense of tracking the system after it goes missing, but at the same time, protects the privacy of the owner when it's -- when it's in their hands. And so, of course, the first idea you have is that we'd like to just encrypt this content before sending it over to protect it from people at the remote storage site that's being operated by the parties. And so we can do that, but there's two problems with this. One is that, of course, other users are going to be making use of this remote storage service, and so there's going to be a big database of a anonymous encrypted content. And so the question is, how do you actually efficiently retrieve a particular users updates if by definition you want this stuff to be anonymous? So we can actually soft that using some fancier cryptography that I'm not going to talk about because I talked about crypto. I'll just put up this kind of scary looking flow chart. But the idea is that you want to provide mechanisms that provide fast search over encrypted data, and so allow the user to retrieve his data efficiently without revealing information about past locations. There's a second problem here which is that, okay, even if you do this, all this fancy stuff, the -- the fact is that when you're talking over the internet, your revealing your IP address to the remote storage service. And -- yes? Is there a question or a half question. >>: The problem that -- isn't there -- you said there are two problems. Isn't there a third problem that once the bad guy gets your device he also has your encryption keys and say ah, I lost my device. I wonder who had it in the past? >> Thomas Ristenpart: That's a great question. Yes. So all the fancy crypto is providing for privacy. So as the device uses up encryption keys, it basically pictures knew once in a deterministic fashion, but such that you can't recover previous keys. You can think of it that way it's like AES, uh-huh. It gets a little complicated because we want to build in things like a cache on the side so you can cache the last few locations inside the clients, so you have to encrypt this and kind of rerandomize encryptions before sending them off and this type of thing. But yeah, we dealt with that issue uh-huh. >>: I'm a little confused about model. Is it assumed that I don't have some home trust in store that I can keep? Because if I do, then ->> Thomas Ristenpart: Right. You want to take advantage of a third-party serves to provide the storage of your. >>: The storage, yes. But if I at home can just store a key and sort of match the forward sequencing of the key that's going on, then I just, you know, encrypt with that key from the device and the third party can't read it and nobody else can read it. >> Thomas Ristenpart: When you say at home, do you mean on your laptop? Because I'm here right now and my laptop is updating some ->>: No, I mean some -- a floppy disk. >>: Yeah. >>: Or the USB. >> Thomas Ristenpart: So a floppy -- I don't have any floppy -- I'm confused about the question, I'm sorry. >>: I have ->>: [inaudible.] >>: Either safe in my house a small amount of data. >> Thomas Ristenpart: Yes, that's the exact idea, yes so we are going to initial lies the client with some small like AES key and that's going generate even more material that we use to encrypt and index our updates. The client needs access to those values and needs to send them off. Okay. And that's the intuition behind the cryptographic component. >>: But the [inaudible] seems like a big issue at this point. That everything I'm seeing on the third-party service is already encrypted and the third-party service >> Thomas Ristenpart: Right. So that -- and that brings me to the next point, why is this point that your revealing IP address potentially damaging? And the idea is that there's partial information leakage here that you can do based on traffic analysis, right? So, okay, we send an update now that it's totally anonymous and encrypted from a particular IP address at a particular time we are sending it remote storage service. So this is what the remote storage service sees. Now, what you can do is take this IP address, and this already reveals the location, right, because you can use a geolocation service to identify where the IP address is physically in the world. And so, okay, now you know it's home residence, right? And so the point is, next time you see an update from this home residence, you have a good guess that that person now returned to it, for example. And so while it's not a hundred percent damage and like you're not revealing everything all the time, and you can hide to some extent in crowds, the fact is, there is partial information being leaked about locations via just the fact you have just an IP address. So we set out to solve this issue as well, right? We don't want to just rely on the crypto. There's a systems security issue here. And so can we -- can we deal with this? Mitigate this threat of traffic analysis even beyond what the crypto can provide? So there's actually a long literature on inhibiting traffic analysis which -- woops which revolves around doing onion routing. So the idea is you just bounce your packets off distributed -- randomly chosen set of nodes to kind of launder the source IP address. And so we can use this type of system as well. But we thought, well, maybe we should -- we actually thought, okay, there's overheads with these types of things, like latency and code complexity and such. And the question was, so we motivate, say, can we actually improve privacy from traffic analysis in some sense for free by using some decentralized storage infrastructure to store updates. And so the idea is we ended up using what are called distributed hash tables. Now these are systems that are decentralized so you have something like Vuze or Azureus which has millions of nodes in it and it's being used for things like bit torrent and it provides a very simple API that you can put data under some index and then retrieve later that data by providing an index. So what we ended up doing is saying okay, let's take advantage of this decentralized architecture. So when we do all this cryptographic work, we also pick cryptographically random indices ones that can be recomputed later by the owner, but from the adversary's point of view, without the original key, they just look like random values. And then when we to a put, we do a put under that random indices. And what that does is choose a random node to talk to in the architecture so the next time you do an update it choose another node. So the idea is we diluted trust across this decentralized storage structure for free without having to use onion routing. And so even if some sub-set of the nodes are compromised, they -- well, they only see one if ever, if that many updates is the idea. Okay, so, with privacy systems, okay, we interested in seeing, you know, is this actually deployable, could people use this type of set up, both from the cryptographic side and with DHT's. So we went ahead and implemented and released a tool, these pictures were taken from our art client. We had a lot of fun playing around with the web cam there. And we were very happy with the results, that quite a few people downloaded it, and have been using it. And then maybe more importantly, this work, this idea of using DHT's as a secure privacy tool picked up a bit of steam and there's been some follow-up work in the community about the efficacy, this idea of using DHTs. So, okay. >>: [inaudible.] >> Thomas Ristenpart: Uh-huh. >>: Actually run open DHT clients? >> Thomas Ristenpart: No, no, they took advantage of the existing open DHT architecture, yeah. So most of the client. >>: [inaudible.] >> Thomas Ristenpart: So open DHT might not be the best realization of this, but we used it because it was the simplest to work with. And it has, I think at the time it had something like 160, 170 nodes. So from that point of view, yeah, you may end up talking to all the nodes at some point over the lifetime of the client. You're still achieving some benefits in terms of privacy, but not going to be to the scale of like if you linked in with Vuze or Azureus where you have millions of nodes, but we wanted to use open DHT because it was simplest to work with at the time and as a prototype to see if people would actually be able to use and would want to use this. >>: [inaudible] with this is that if it compromises nodes from the DHT picture, pretty easy to create. >> Thomas Ristenpart: Right. >>: I mean you can assemble a packet if you really wanted to. >> Thomas Ristenpart: Right. >>: That -- I'm asking if the question is currently that that you would get to see information about some IP addresses that we are sending things, but it would be randomly selected from among the set, so -- right. You get good information but you wouldn't be able to target it, is that's what is happening? >> Thomas Ristenpart: Right. Right. So some portion of the updates you're going to miss the compromised codes, right, from a particular client. >>: Most of them. >> Thomas Ristenpart: Most of them, yeah, that's the idea. So if you had a civil attack where he took over the whole DHT, then you're back to the fact that you have encrypted anonymized updates you have a little bit of privacy leakage, but not that much. If you have a DHT that resists civil attacks, you get much stronger privacy improvement against these particular traffic type cipher attacks. That's the idea yeah. >>: But if you do onion routing. >> Thomas Ristenpart: Then you get. >>: A stronger report. >> Thomas Ristenpart: Right. And then onion routing of course has its own issues about whether it's secure all the time or not, right. So you could do both, right. You could route the DHT puts across onion routes and then you would get like you know the most paranoid level of privacy ever or something, assuming all the components are good. >>: Although there's something to be said to you only need to keep the -- you only need to be private up to a point that it's easier for somebody to just stick a web cam outside your house and you see you walk in. >> Thomas Ristenpart: Right, right, right, right. Exactly. And that raises a good point that there is plenty of other ways that location privacy can be violate by someone's laptop, right? Even. So if you contact G-mail every time you sit down at your laptop, of course your notifying Google of all the locations you're visiting. But solving the location privacy in the global sense is a much more and at moment intractable problem. So we are trying to say just for device tracking component, can you ensure that we are not doing anything? >>: Does onion routing really help here? Because if the first node you touch is compromised your screwed either way, aren't you? >> Thomas Ristenpart: But you choose a different node each time so you get the same type of guarantee you get from the DHT that we are using. >>: Yeah, but I don't -- [inaudible.] >> Thomas Ristenpart: Well, there's another layer of potential -- yeah. I mean, yeah. It's actually a great point. So if you're -- if you're -- yeah. You get the same level of guarantees. That's good. >>: [inaudible.] >> Thomas Ristenpart: Yeah, there's a lot of details I'm glossing over the DHT's that ->>: That's like a factor of Y. >> Thomas Ristenpart: For example, we have to do replication as well to get functionality of the DHT. So you actually -- it's not just one node. You talk to three, and then if you actually have to communicate with multiple nodes for each put, then -- then you are leaking more. So, you know, there's a bunch of details there. >>: Is this really -- is this less complex than [inaudible] because the other reason you gave for superiority over onion routing was latency, which I can't imagine is an issue here. >> Thomas Ristenpart: Well, so, yeah. It may not be an issue, a killer issue, right? You know, one thing, to be perfectly frank is it's easier to work with open DHT when we are implementing it than to work with TOR, right. It's big code base. We want to have a very small client to fit in something like a bios at some point. The latency issues, I mean you have to complete this circuit, right, so yeah, in general, it may not be a killer issue, but the idea is we want to we wanted to experiment with the DHT and get TOR free and you don't have to have TOR and rely on other people's TOR notes and all the security issues there. So in the end it's going to be a choice for deployment, right if you want to use both or one or the other, it's up to the people who end up designing the system. >>: But TOR is [inaudible] because you really just need send one packet in one direction. You don't really need to establish. >> Thomas Ristenpart: Right, right. So you can you use a mixed router or something. >>: The tracking theory is offline. >>: If there was a latency in the sense [inaudible.] >> Thomas Ristenpart: I'm sorry, say again. >>: Here, the location tracking was open DHT is offline. >> Thomas Ristenpart: Right. I mean, you still need a remote storage service, either way, I guess I'm not understanding your question. Let me move on. I have a whole another topic I wanted to cover. We can take more questions at the end. So let me just get into it in the interest of time. And this work was about cloud computing security. And, of course, you know cloud computing is going to have - is going to be quite the consumer of cryptographic services. It already is. So we were interested in what type of threats exist in this context and whether there's really knew threats that come up here or if there's kind of the same old issues. So what is a cloud computing service? Well, we were focusing on so-called infrastructure of service systems. You have a provider that has a bunch of physical hosts with a virtualization layer running on top of it. Users can come and pay the provider to run their computational tasks in the -- in the sense of running virtual machines on their service. They are quiet dynamic so you can start and stop virtual machines at will, start them up again. And an important facet of -- and feature of these types of clouds is the use of multi-tenancy, that simply put, users are sharing physical resource and of course this is important from the provider point of view because they can statistically multiplex their physical resources across a wide user base and get economies of scale that way. So again, this is powered by virtualization, so each physical server has a visual machine running on it and the idea is that it should provide the appearance of having a dedicated machine to one's self. So we are interested in the following hypothetical threat that lies at the intersection of this use of multi tenancy is the fact that these clouds are public, that anyone can start running virtual machines on them. So the idea is the following. The attacker is going to identify one or more victims running in the cloud and then try exploit what we call a placement vulnerability. So, for example, the attacker could launch lots of virtual machines and have each of these checked somehow for co-residence on the same server as the victim. And should this be successful now, the attacker can mount attacks to take advantage of this close physical proximity. So he could, of course, exploit some know VMM vulnerability and just take over the whole box and have a targeted to use a known vulnerability. You could also do denial of service attacks, degrade -- used up resources trying to degrade the efficiency of the victim. And then the perhaps most subtle threat would be that of physical side-channeled attack which is just the fact that your sharing the same physical resource, cache memory, hard disk, might be sufficient to already extract some confidential information out of the victim. So this is a, you know, a hypothetical threat. We were curious to see if it's actually a real threat. So we did a case studies with Amazon's EC2 service. And what we were able to do, despite, you know, being white hat researchers and abiding by the typical use policy of Amazon's service, we were nevertheless able to do the following. Engage in what we call cloud cartography. So this is mapping out some of if not all of the internal infrastructure of the service. With particular and being that given a target, a public IP address, we can locate approximately where in the infrastructure this target is running. And in particular, identify launch parameters that would be advantageous for malicious virtual machines to be ran under to try to end up on the same physical server as the victim. Learn how to do co-residents checking, so actually understanding when you're successfully on the same physical server. And then we did measurements to experiment -- experimental measurements to see if this is frequently achievable, and it is. And so the problem is that of course, there is -- it already reveals a placement vulnerability that attackers can knowingly achieve coresidence with the victim. And so it's dangerous for a bunch of reasons. We were interested in the aspect of physical side-channel attacks, and we were able to show cross-VM side-channel attacks that can spy on the momentary load, computational load of the victim. So I'll talk about each of this in a bit more detail now. But first, let me give a very high level overview of the some of the instance networking of EC2. So you have you a virtual machines running on -- within a XEN virtual machine manager. Each virtual machine has an associated to it an external IP address and an internal IP address. Conveniently, from the attacker's point of view, the internal GNS service in EC2 serves to it by any party to the internal IP address associated to it. And this is to I think encourage people to communicate via internal IP addresses within the cloud. They are priced differently and it's more efficiently for Amazon presumably. Our experiments indicate that internal IP addresses are statically assigned to physical servers, so each machine, for example, hosting the smaller type of instances ends up having eight contiguous internal IP addresses associated to it. And, in fact, the way they did their networking actually provided in hindsight a very simple way of doing co-residence checking. We did a lot of work to establish that this works, but, in the end, it's simple. You can just do a trace route to a target, internal IP address or public IP address, and if you only have one hop, then you know you're on the same box. Because what happens is the VMM actually routes to traffic right back to the guest operating system. So with that in mind, we know how to do co-residence checking, but how do we actually kind of figure out where in the cloud a victim is, and how can we understand how to get to that portion of the cloud? So what we did is this measurement study that we call cloud cartography. So we identify a bunch of launch parameters for virtual machines in the EC2 service. For example this includes things like the availabilities which advertises disjoint portions of the internal infrastructure for redundancy purposes. The type of virtual machine instance requested, and there's just a varying levels of virtualized resources that are handed to the virtual machine. And then, of course, things like the user account are also identified. So what we did is run, using account under our control, virtual minutes and changed each of these parameters one at a time. So here we have a graph of the internal IP addresses of the resulting virtual machine instances colored by the requested availability zone. And so what this shows is that the internal IP space is segregated according to the availability zone which makes sense in light of what their advertising availability needs to be used for. You can repeat this for current instance types. Here we have a bunch of virtual machines that we ran that are colored by the instance type. And again, we see quite a bit of regularity in terms of which portions the internal IP address space is being used by which type of instance. And then this bottom half of the chart is using a second account, and we end up in the same portions of the internal IP address space, and in fact ended up with the same internal IP address many times. So we can take this idea kind of logical conclusion and basically provide a map now that associates, for example, to each slash 24. So the first three octets of internal IP address an estimate of the availability zone and instance type that we think are running on that chunk of IP addresses. And so this proves quite useful because then given a set of public IP address, for example, we can map all those to internal IP addresses using the internal EC2 address and look at the first three octets to get an estimate of the availability zone and instance type. And this is just a chart showing colorings of a bunch of publication P servers that were running at the time of the study. But the point being that we get quite good coverage across the internal IP address space. So. Okay. So now we know how to locate approximately in the cloud where a victim is, and we know specifically what launch parameters would be good for us to use, and so now that we've kind of narrowed the search down, can we actually get on the same physical server with good frequency? And so we did a bunch of different experiments to assess the likelihood of this. And I'll just tell you about one of them. And the setting here is that we are able to launch the attack virtual machines relatively near in time to when the victim was launched. And so we did an experiment where you lunch a target virtual machine and then you launch from another account a few minutes later just 20 quote/unquote attack virtual machines, and these -- all these did was check to see if they are a co-resident with the target. So out of ten trials, this already succeeds 40 percent of the time, so immediately you end up on the same physical server as the victim. And this is actually very cheap, you know, at the time it was 2 U.S. dollars. I think it's gone down since then. >>: You say [inaudible] from the same client? >> Thomas Ristenpart: I'm sorry? >>: In other words, the same ->> Thomas Ristenpart: IP address? >>: Yes. >> Thomas Ristenpart: For these experiments, no. I changed between different IP addresses. I mean, it was from the same UC San Diego domain. So they could be ->>: [inaudible.] >> Thomas Ristenpart: We didn't exhaustively experiment. I also did some lunches from home. It seems they are not taking that into account. Of course, they could, but my sense is that they are not. And, of course, there are some portion of the EC2 infrastructure that we don't have access to. I mean, they have large corporate clients that maybe get some portion privately. But for this kind of public portion of the cloud, it seems that you can really get on the same systems. We did use, for example, there are some free demos from some companies that use EC2 service. So they had like -- they call them cloud appliances or something. And you can launch a free demo using their web interface under their -- so it's their account, and we are able to achieve co-residence with those as well. Okay. So what can you do once you end up on the same physical server? Well, we experiment with the idea of physical side-channel attacks. And in particular showed how to do a cross VM load measurement using CPU cache contention. So at a high level it's straight forward. You have a attacker and victim virtual machine on the same CPU architecture, and so what the attacker does is first read in a large array of data to basically, ensure that he use the entire CPU cache. And then the attacker idle loops with the idea that it will allow the victim to run hopefully on the same cache architecture. And if the victim is -- you know, has computational load it's going to use up some portion of the cache for its own purposes. And so when the attacker runs again he can now measure the time to read in this large array, and this becomes the load measurement. And the point is that it's going to be correlated quite strongly with the amount of cache usage by the victim and consequently the amount of CPU load that the victim is currently under. >>: So is your impression -- what's your impression about how [inaudible] sidechannel attacks might get and how hard would it be to defend? Are we worried about private keys disappearing or are we really worried about core stuff. Because load [inaudible] victims HTTP server and see how latent it is anyway. So the question is, how scary is the threat? I mean, if we look at this for another ten years, are we going to be getting private keys or ->> Thomas Ristenpart: So, yeah. My sense is that I don't know, and I think in general the -- there needs to be a lot more research on these side-channel attacks. Basically they are all kind a black art at this point. You have someone sit down, some grad student who has not enough free time on their hands and figures out how to do an attack for a particular architecture in a setting. And the granularity there is basically depends on a lot of different factors, how many cores you're floating between, how much -- how much noise is on the system. And we don't really have good tools as far as I can tell of quantifying this type of attacks. And I think it's a great open research question. The concern, of course, which I'll talk about, is that these attacks that we used are based on the side channels that in nonvirtualized settings were able to extract AES keys across process boundaries in certain settings. So there's looming concern that, yeah, as you get more refined attacks, then you're going to be pulling out more and more dangerous confidential information. AES may not be a huge threat in the future because we will have an AES architectural chip for -- you know, an Intel architecture will have AES infrastructure. But the problem with side channels are difficult to close down. >>: It seems like you have separated [inaudible.] There's the getting information a particular VM host and I'm interested in getting information from. >> Thomas Ristenpart: Uh-huh. >>: And then there's how I actually get information. Side-channel attacks are probably [inaudible.] >> Thomas Ristenpart: Right. >>: But this ability to target, I mean, do you think that this is important? I mean, Amazon's placement [inaudible] were optimized for impacting. >> Thomas Ristenpart: Right. >>: For efficiency and they have a relatively small cluster. So in the same way that you used to be able to check information and check the [inaudible] predictable sequence numbers, we thought that was a bad idea. We started to randomize. I mean, aren't we just going to make this co-residency impossible in the future? >> Thomas Ristenpart: So the fact is if you're doing multi- tenancy, co-residency is not impossible, right? If you're sharing physical servers between mutually untrusted parties. >>: [inaudible] arbitrarily ->> Thomas Ristenpart: Can you make it arbitrarily? I think it's an interesting question. >>: [inaudible] difficult to ->> Thomas Ristenpart: So certainly in -- yeah, sorry. Finish your ->>: Can I make it arbitrarily difficult to achieve co-residency with a particular target? >> Thomas Ristenpart: You can make it arbitrarily difficult if you don't allow someone else to get on that box. So I mean, there is one way to make it impossible which is to shut down multitasking which is something we suggest as the only sure fire solution here. I think if you allow -- if you allow multi-tenancy, the question is, can you make it arbitrarily hard? I don't know. It's good research question. I think you could close down a lot of the things that we took advantage of like network configuration issues, right? But that's only going to slow an attacker down, right. So it's a good question. I don't know. Whenever you have multi-tenancy you have potential forgetting on the same box and you have side channels. So it's something you need to think about. And the point of the researchers saying look, there's this new aspect in cloud computing, right, where you have this first step. You have to get onto the box first before you can tank advantage of close physical proximity. And so is this something that's realizable? Well, it turns out, yes. Can we defend against it? That's an open research question, yeah. So application across VM load measurement. So we can do things like measure relative traffic rates across virtualization boundaries. So, for example, we set up an Apache server and a -- an attack VM that is co-resident running EC2, and then we just buried the level of traffic sent to the blue server here. And the bar chart on the right reveals the cross -- the VM -- I'm sorry. The load measurements that were taken by the attacker. And so we see the strict differentiation of -- of load measurement and so information is certainly leaking here across boundaries. >>: What do you mean by load characteristics? Load is clearly in a CPU load. >> Thomas Ristenpart: I mean in an abstract sense. The load measurement here is the read time from that third step in the algorithm. And so it could -- it could be a bunch of different features. But the point is that you can correlate it to other things that are happening with the box, right. >>: You can correlate what? I'm not understanding what the "it" is. >> Thomas Ristenpart: Correlate what? So here, it's the relative traffic rates, right? So you know that if you saw -- in this -- in this, granted experimental setting, right, you see higher levels of load measurements. You know there's more activity going on, more HTTPS -- HTTP requests occurring. >>: [inaudible.] >> Thomas Ristenpart: Oh. >>: I'm thinking it looks like ->> Thomas Ristenpart: Oh, this is the mean CPU cycle. >>: [inaudible.] >> Thomas Ristenpart: Right. >>: Okay. But this has ->> Thomas Ristenpart: To load the array in the third step, yeah. >>: This happens to be a metric where you're going to have a strong correlation between memory use and CPU use because your CPU is ->> Thomas Ristenpart: I see what you're saying. So ->>: From memory so -- so this doesn't seem like the right -- it seems like if your only using this test, your getting the wrong -- your measuring the wrong thing. >> Thomas Ristenpart: For what exactly? So for some applications, yeah, maybe you're not hitting the cache as much and then you won't get any signal even though you have CPU load, right. >>: [inaudible] cryptographic load on. It's not going to detect the cache too much. >> Thomas Ristenpart: That's the exact problem like AES does use the cache, right? And so that's where we get issues with AES side-channel attacks across process boundaries which could end up being a problem here. So, I mean, they -- yeah, I mean you do use the cache for lots of different things. The question, maybe there are some things that literally only registers on the CPU property and not using the L1 cache or the L2 cache at all. And then you wouldn't be able to measure those type of behaviors, you're right. So it's cache load measurement, I guess would be ->>: [inaudible] what fraction of time your actually sitting in your busy route? I mean, see how much just look at how much you can schedule. >> Thomas Ristenpart: So it is -- yeah, so you'll see that if other instances are busy, for example, you'll get float more frequently between cores and stuff. So these are other ways that information is leaking across. That doesn't take advantage of the cache. I mean, the point -- yeah, this is just one example where we said, okay, here is to prove a concept, in EC2, we can get information leaked across virtualization boundaries, right? We can get on the same box and then we can do it. Now maybe this isn't the most damaging thing to be learning in the first place, but it's something you shouldn't be learning. The virtualization is supposed to be stopping this type of leakage or at least that's the concern that people think that this is the case. And so, you know, in general, there's going to be a whole wide range of side channels that you might be able to take advantage of. We also looked at, you know, taking care of memory contention, hard disk contention. Of course, I was talking to someone about network card contention, and they are saying, oh, yeah, this seems like a great way to get in a good position to take advantage of network card contention to identify encrypted streams and these types of things. So there's a lot of different ways you kind of play as an attacker with various shared resources once you're on the box. I mean, you still look confused, but maybe we can talk about it later. We are running low on time. >>: [inaudible.] >> Thomas Ristenpart: Yeah. Okay. So, you know, we show these things in EC2 like I said, keep rest timing, you can do this and get even finer grain information. Of course, the future work is -- concern is about AES cryptographic keys or other cryptographic keys being taken across virtual machines. We think this is a big problem, you know talking to people at certain companies and others, they seem to agrees that this is an issue that people should be concerned about. There's a lot of potential counter measures we could look at, but you know, this is an open research question about what are the trade offs and whether you can even quantifiably come up with any resistance to sidechannel attacks. It's an open -- open problem. Let me just finish off very quickly with saying a bit about my future work, and I think, you know, I've cast cloud computing stuff in a negative light in the last bunch of slides. But actually, the project made me quite excited about cloud computing in general that, you know, really looking forward, we can kind of see that this is going to take off. It has a lot of value added for customers. And we are going to end up in a world where a lot of competition classes, not the majority, are going to be done with cloud. In some sense we are going forward, but we are also going backwards. We had long ago many to one systems where you had shared mini frames with many users sharing one single computer and we had this personal computing resolution with kind of one-to-one mapping. And with cloud computing we have this now many users sharing heterogenous distributed infrastructure, say this many to many mapping and with this change we have lots of security looming. We side for one, but there's others and I want to understand these. So, for example, I think investigating more how the mismatch of our Legacy extracting, so how engineers have been designing software now for the one-to-one personal computing era really have mismatches with the current realities of running these things in cloud computing settings. And understanding if this is going to give rise to further security vulnerabilities. I think another interesting line of work is about understanding whether we can do cryptographic auditing of cloud services. So the idea is that right now, cloud services are quite opaque from a user's point of view. And they want to have guarantees about the -- their data and their services, and so can we even provide technical mechanisms that could compliment any contractual mechanisms to audit, you know, for example that a cloud is truly using enough redundancy for our data, for example. And then, finally in a bit farther out there, I think that, you know, we saw with the move from many-to-one to one-to-one personal computing, we had this kind of revolution in electronic crime. And I think it's interesting to at least start thinking about what type of repercussions, moving to this new setting is going to have on the underground economies that are occurring going on out there. Whether we can get a head of this is one question, but also just understanding and measuring electronic crime is a considerable challenge and something I think is fascinating. >>: [inaudible] by the computing model such as main frames to personal computers, or just by the fact that it got a whole lot bigger and so there's a lot more opportunity. >> Thomas Ristenpart: Does it -- I mean, from a crime point of view, I guess it doesn't really matter exactly what the motivation was. The point was having the one-on-one personal computing kind of enabled this new wave crime, right? So yeah, in some sense it's from more people using it, but then we'll see a similar exclusion, a variety of new service because of cloud computing and so similar affects might be going on. So you know, it -- yeah. Lastly before I finish I just want to thank, of course all my collaborators. Without them this work wouldn't have been possible. And at this point I guess I'll just take questions. Thank you. [applause.] >>: I think we already asked the last of the questions. >> Thomas Ristenpart: Yeah. Thank you. Thank you very much.