>> Kristin Lauter: Okay. Thank you very much... to have Brent Waters speaking to us on unbounded HIBE...

advertisement
>> Kristin Lauter: Okay. Thank you very much for coming. Today we are very pleased
to have Brent Waters speaking to us on unbounded HIBE and ABE and Brent will be
receiving a faculty fellowship today, so congratulations, Brent.
>> Brent Waters: Thank you.
>> Kristin Lauter: And we are very pleased to have you here.
>> Brent Waters: Okay. Great, thanks Kris. I see a lot of people--I guess this is a point
of convergence over the summer. I see a lot of people I know from different places. So
today I am going to give what is going to be a little bit more on the technical side of this
functional encryption domain. I am going to talk about unbounded hierarchal identitybased encryption and attribute-based encryption, and I will discuss what I mean by
unbounded soon.
This is joint work with my student Allison. Just a couple of big picture slides before you
start to type out the technical details, to put this in context, one grand notion in
cryptography has been the advent of public-key cryptography where if Bob wants to send
a message to let's say Sarah over here, he doesn’t need to have a operational shared secret
key with Sarah and instead what he can do is he can use her public-key to encrypt a
message for her, and then send it on over to her and she can use her secret key to decrypt.
I am sure here everybody is pretty familiar with this notion. However along with this
great advent though have been too ingrained notions in our head. First one is that when I
am encrypting to someone I am usually targeting a particular receiver, that is, I am
sending to you or so I have someone particular in my mind to which I'm sending. And
the second one is that decryption is an all or nothing process as I either decrypt the
message and learn everything about it, or I don't learn anything at all. And maybe instead
we want to learn some type of function or partial view of the message depending on what
our credentials are.
The problems with this are, let's imagine Bob is in a different scenario where he doesn't
say okay, I just want to encrypt to this user Sarah anymore, what he wants to do is he is
thinking about sharing information let's say in the LAPD with everyone who is in internal
affairs or who is an undercover officer in the Central division. Now when he is thinking
of sharing information this way, he runs into a few problems. First of all, how does he
figure out everyone who matches this? He has to have some process for enumerating
one. Also is he even allowed to know everyone that matches this? Maybe it's not a good
idea to be able to enumerate all undercover officers, you know, it might defeat the
attribute.
Second, what if someone joins the system later? I want to encrypt everyone who, you
know, has and will match this profile, but I don't know what the future holds, like I don't
know who is going to be here next summer at Microsoft. Instead we want to have a
process view of the data. So instead of like in the past where what we had to usually do
was we had to transform, somehow engineer our way between how we think of data and
this mechanism for public encryption, which could be a messy thing and there might not
be solutions in all these cases. And so with the vision of functional encryption does is
instead of trying to just bridge this gap with engineering, I want to be able to when I think
of sharing information in a certain way, I want to be able to express this or embed this in
the encryption system itself. So this is like I decide to throw these couple of borrowed
vowels inside to throwing these things to try to give maybe the big picture of what we are
looking at that will hopefully motivate some of the things we are working on. So today
what I am going to do is I'm going to talk about two specific primitives within this-- so
this functional encryption idea is this big umbrella and I can cover a lot of different
things, and here what I am really going to do is talk about two particular problems, to
specific things, attribute-based encryption and HIBE.
Let's take a look at hierarchal identity-based encryption and just to get a sense, how many
people are familiar with this? Most people in the room? Okay. The idea and most
people are familiar with identity-based encryption? Okay. Identity-based encryption is
where when I want to encrypt the message, I don't need to look up, I can just described it,
I can just describe it with your name or your identity. Hierarchal identity-based
encryption can be thought of somewhat as a generalization of this where the name is
more like a vector of names. For example, you might think of a hierarchy on the internet,
EDU.U Texas, I guess it is the opposite direction, the way that internet puts it. EDU:U
Texas:CS: B Waters. And the idea of hierarchal IB is say some user, there could be some
master authority who generates these keys way up there who is not even in the picture
and let's say there is some user like Allison here who has the.edu one, and what she can
do is well, she can use it to decrypt things in the EDU but she can also create keys further
on down the line, maybe Stanford is over here, and you Texas is ID2 prime, and then we
can go on down to say yes, and delegate on down further. Hopefully the benefit being
that it's easier for let's say this guy to know which departments the University of Texas
has as opposed to someone way up higher on the chain. So it's good that this has become
a brief introduction here, so Alice can have her key and autonomously create these
private keys. She doesn't need to go back up to authority.
So let me just briefly go through HIBE and anybody should stop me if they are--I am
going to go through this a little bit quickly, because I am assuming there is some
familiarity with it, but please stop me if there is a point of confusion. So there is going to
be a set up algorithm where this authority will generate the public parameters and also
generate a master secret key pair. Then there is going to be an encryption algorithm
where I'm going to want to encrypt the message M, use these public parameters, and
describe how I am encrypting it by this vector of identities. So let's say I am encrypting,
and I would just keep on using the same example, I am encrypting again to like EDU.U
TEXAS:CS:B Waters. And then there is a key generation process which the master
authority designates a private key for perhaps a different identity vector, I so again one of
these hierarchal ones and like create the secret key for this and then finally there is, so
that is to get it from the master authority, but also if I am somewhere on this chain like in
Kristen's group, she might want to delegate on down, and she will execute this algorithm
which she can take her secret key and create one sort of lower on the hierarchy below
that.
And finally there's going to be a decryption rhythm, where if I have a private key, so let's
say if a ciphertext was encrypted for an identity vector, let's call it X and I have a private
key for identity vector Y, if Y is a prefix of X, I can decrypt. Uh-huh?
>>: So [inaudible] and delegation generate the same type of key or the same [inaudible]
key to a given identifier?
>> Brent Waters: Let's assume that they do for now. You could have systems where you
could differentiate between them, but let's just assume that we require that they have the
same distribution. Fair enough? Okay. But you can actually gain some efficiency in
practice by relaxing this a little bit. But yeah, let's assume that that is the case. And one
of the goals with hierarchal identity-based encryption is that you get this flexibility. First
of all new users can enter at any level, and you can sort of get your key from the
immediate supervisor. Let's say if Kristin hires someone which apparently she has done
for the summer, she doesn't need to like call up Bill Gates or Steve Ballmer and, not that
that would literally happen, but it she can autonomously make decisions. She has this
local view within her group and it is probably the case that like the people way up at
Microsoft, I am sure they do care about you, but they probably don't, right? They
probably--they care about you but they probably are not knowledgeable about you. And
it is much better if she can make these local decisions. And we can encrypt any ID string.
And it is even less likely that someone@the.com domain knows about your summer
employment.
So in HIBE systems what we have is we can have an ex-potential size identity sort of
horizontally. And what I mean by this is that at each level the string can be of any length.
I mean, just using collision resistant hash functions, we can make the string of any length.
But one question I am going to ask here is using Kristin's system, what about vertical
growth? How many levels do I want to be able to go down? So what we have had in
previous systems is that we always had to when we set up the system we had to set up the
depth of the hierarchy. When we publish the public parameters we have to say that this is
going to go to depth seven. This is going to go to depth three. We had to kind of pick
something ahead of time and the reason that we don't just pick depth 10 billion or
something is that the size of the parameters tends to scale linearly with the depth. So we
kind of end up in this funny situation where you have to take this guess ahead of time and
if you are overly conservative, you might pay a lot in terms of performance. However, if
you really want to keep things small, keep things compact, it might turn out that someone
needs to go down to a certain depth and you cut them off earlier, and that could be a
problem.
We will see towards the end of the talk that in HIBE somebody could say well, maybe 20
is good enough for all applications, but an attribute based encryption this sort of a
pedagogical, we will spend most of the technical time on HIBE, but in attribute based
encryption I think that this scenario becomes more motivating where instead of bounding
a depth, you are bounding the number of attributes that you can use. That is probably-even though I am going to talk about HIBE, I will kind of remark that perhaps a stronger
motivation comes from the attribute based encryption. So we will kind of learn, but the
main technical things we can learn in the HIBE world; it is a little simpler, so I am going
to focus on that, but just keep in mind that this is where we eventually go to.
So before in previous systems we always had to have this bound of the depth for two
different reasons. The first one which we used to have was security degradation where
we used to have these partitioning improves for security, and for adaptive security we just
had an ex-potential loss in the depth of the hierarchy. I don't mean to make this into a
quiz or anything, but how many people have heard of this problem for maybe… So if I
want to go to depth D, I usually have if there were two queries--you said I get to use the
whiteboard, right? So later on I am going to want to just move it. Is that a doable thing?
So if we had two queries and then we had a depth of D, the security loss on all of these
reductions, you lost this Q to the D factor. So if you went to depth six, so this is expotential in the depth D, so this was not such a good thing. But actually it did turn out
that there were techniques first by Craig Gentry and then [inaudible] Levy using one
thing and then myself using something called dual system encryption that I actually got
around this problem, so we just ended up with 1 over Q. We did not need to worry about
this depth of D factor.
But even with this…
>>: What was the [inaudible] for?
>> Brent Waters: Private key queries. So an attacker can make queries to KeyGen and
to Delegate so this was for adaptive security by the way. If we made this false
assumption, it actually tells you which thing he is taking ahead of time. It is tight, but
take for a false reason.
>>: Solution [inaudible].
>> Brent Waters: Both. This is the first one. But then Allison and I had some other ones
along these lines. There are different systems, technically, although they clearly have
inspiration from more than likely just wipe the board clean. But yeah, we needed to
change the system too. Yeah, I can talk about that off-line. It's almost like the same
system. You can prove it secure in two different ways but it is not quite the same. Okay.
But even if we believe the selected model and now that we do have these proofs, we have
another problem, which is that the parameter size, like I was saying earlier, does dictate
how far we can go down and we are kind of--if you think you are trying to export an AP-let's pretend we are cryptographers but we are trying to export this API to some systems
person. They have to make this arbitrary, they have to make this guess about how big
your system is going to be, how deep it is going to be, or in the case of AB how many
attributes you are going to use. It would be better not to force them to make this guess.
Because they have this trade-off and if they want to help performance, they're going to
have to go one way and however, if they go too far the system won't work. So pretty
much in all previous constructions, I should say in the standard model random oracles
you can play a few tricks. It had these limitations and also there is this lattice stuff and so
a lot of the stuff had unique innovations, but it really follows kind of the high-level, and
control stuff like you have all this fancy lattice stuff going around but at the commentary
level it is really the same as the old pairing-based constructions, and so it has the same
limitations.
So I want to do something a little experimental. It is okay. I am under control.
[laughter]. How do we raise the board? There is considerably a button. Uh oh, did I
just, is it so revolutionary that we don't know how to…
>>: I think it is right back here.
>> Brent Waters: Oh boy. Okay. So I might ask you to lower it again Josh. We are
going to try something a little bit experimental here. And we can see if it was a good idea
at the end of the day. I get my award whether it works or not [laughter]. Okay so, what I
am going to do is I am going to write down the Boneh-Boyen system and we are going to
just kind of work out some things on the whiteboard. So I am going to start off with the
Boneh-Boyen based encryption system, and I am going to show you some possible
improvement I have for it and then we can kind of see how it works. It is good to prepare
for these things, which I sort of did. So we are doing IBE right now. That is okay? So
not HIBE for a second. How many people [inaudible] how many people have seen the
Boneh-Boyen system? Okay. So there is going to be a set up. I will be a little loose with
notation. We will pick these elements in the bilinear group, U, GU and H. I am going to
assume no in bilinear maps and there is going to be E of GG to the alpha, where this is
the public parameters and the master secret key will be alpha. Good thing it was G, alpha
[inaudible]. And also the master secret key has the public parameters too.
So what is the next algorithm we want? We want an encryption algorithm, right? We
want to be able to encrypt M given the public parameters and ID. I am also going to
define this one function, F of ID is equal to H of ID, so remember this, what is the
Boneh-Boyen hash function?
>>: G1 to the ID of H?
>> Brent Waters: Yeah, so actually I am going to use U in this case. So to encrypt I am
going to choose a random S and choose exponent S and I am have M times E of G, G to
the alpha S. this is going to be my ciphertext. Let's call it H of ID, any questions here? I
just choose a random exponent S, I take UGG to the alpha, raise it to the S to get this
blinding factor so I blind my message by this. Take G, I can raise it to the S and I can
compute this function H of ID and I can raise that to the S, so we agree that it is
computable? Now what I want, is I want a KeyGen function of, ask it secret key and ID.
here I am going to choose, so G is of order primordial P, okay? Please stop me if there is
any confusion on this and let's see here, marker, okay so we have G to the alpha times H
of let’s call this ID till or something, right? Maybe it is different, to the S, no, no to the
R, yeah, and that should work.
So this is how we encrypt. This is how we generate a private key. And now for
decryption pretty much we just pair this part, so really for decryption, we talked about
getting the message M but once you get this, you divide it out and you get the message
M. So we are really trying to recover this, so we pair this with this, and that with that and
we end up getting this part over here. I am just drawing decryption now which is E of H
of ID comma G the RS. So here when we pair this, we actually get what we want. We
get E of G to the alpha S from this thing over here. We get what we want but we also get
this extra junk over here so we get hash of identity to the RS. However, if this I is equal
to, wait a second. Yeah, I lost a term, so I get E of hash of I… Okay and if I is equal, if
this ID from the ciphertext is equal to this ID from the private key, we can just divide this
out of here and get what we need.
Any questions on this? This is the Boneh-Boyen system. I made this identity function
here a little abstract but if we plug-in their—let’s just plug it in to make it a little bit more
concrete. So this will be U to the IDH for the S And then we will do the similar thing
over here. So now what I want to do is I think we may be shaved down the parameters
just a little bit in the Boneh-Boyen and system so I want to propose an improvement and
then see how that goes. Yeah?
>>: I need a reminder here. So it is okay if my ID is like one more than your ID and the
hash is actually U [inaudible]?
>> Brent Waters: In this hash function? Yes.
>>: So there is no [inaudible].
>> Brent Waters: No [inaudible]. But let's take a look at my improvement.
>>: We will see how it goes.
>> Brent Waters: So suppose, so what I want to do now is I want to shave off a little bit
since this looks a little extraneous. So here is my new hash function. So maybe this is
the starting point to the talk that I am going to have here. And of course you will just
make the same change to the hash function down there. So what do people think about
this?
>>: It is insecure.
>> Brent Waters: It is insecure why?
>>: Just [inaudible].
>> Brent Waters: Okay. What I am saying is that suppose I have an encryption for ID
and I want to change it into one for ID prime under the same message. So maybe I have
the private key for ID prime, but I don't have it for ID. How can I do this? What do I do?
>>: [inaudible].
>> Brent Waters: I raise this whole thing over here to ID prime over ID. So I have the
one over ID part here which cancels this out and then we raise it. So this malleability
attack. I get this so I shouldn't be able to take ciphertext for message M for a certain ID
and just change it to ciphertext for another ID is what I am saying. And this maybe
relates to your question a little bit. It's bad to be able to do that. And apparently with my
new improvement--okay, this may be the way to look at it in the system but I think there
is kind of like a different view like we can take sort of a linear algebra view of what
happened in this attack. The earlier system we believed was secure or at least, you know,
assuming that there is not a break in the paper that is been out there for seven years. And
if we think about what is going on in the ciphertext, what is really happening over here,
so back when we had the H in there, we can kind of right what is happening in the
exponent as a vector. It is like the scaler S, which is hidden times ID, so this is the U
component. I am writing the U component here and the H component was 1. If I wanted
to change it to, and I get one sample of this, from the ciphertext, I get one sample of this.
So if I want to do an attack I pretty much have to change this to ID prime. So what I
have here is I give one vector from a dimensional 2 space. This is a dimensional 2 space.
And there is no scaler symbolically that I can multiply this vector by to get this vector.
Ignore the S even. There is no scale I can multiply assuming ID is not equal to ID prime.
So this is kind of a simple thing.
When I did this so-called improvement over here I kind of--here is my improvement.
What I did is I got rid of this dimension and now we had a one-dimensional vector space,
which I gave you one vector from and I am not very good at linear algebra but it means
you can spam the whole space. Mathematicians can confirm this. So you see the
problem was here that I wanted to give out N things and that meant I had to have N +1 at
least N +1 dimensions sub space. Any questions on this? So we can kind of see this
problem in just the ID context if I want to shave things down a little bit further. Is this
okay for me to do this little white board? I wanted to do something a little different.
So now let's look at HIBE. So the HIBE system… Yeah?
>>: [inaudible].
>> Brent Waters: In the selective security model it was under decisional BDH.
Although right now I am just looking at how to break things. Yes, it is bilineal diffie
home intersumption. If we want to do hierarchal IB but say to depth two, really the
Boneh-Boyen system was actually a hierarchal IBE scheme so instead of having one hash
function, first of all we have one hash function, for the second level we add a different
one and so we might get something like hash of, yeah, a little messy here. How does that
go? So I might get hash of, let's call this R1, hash of ID 1 to the S and this is hash of ID
1:ID 2 to the S. and then if I want to delegate on, oh shoot. Let me get this out of the
way. I will make it simpler here. Let's say I had ID 1 over here and want to delegate on
down to ID2, I just pick a new R2, so, sorry. Hash 1, hash 2 so hash 2 of ID 1: ID 2,
some kind of, I'm doing delegation dynamically on the board. Okay, so I just pick a new
R2 myself so this is Kristin delegating to a group. She picks a new R2 and then has G to
the R2 over here. And to decrypt, we can just kind of do these pairings. Like we just get
this UGG to the FS and then we have two things we need to cancel out here, so the
cancellations will come from these two parts. I won't draw this. I want to ask you a
question, since my first improvement didn't go too well I am going to… Do you have a
question? I was asking a question. [laughter] okay, what is your question?
>>: Is it possible to have [inaudible] that allows encryption or can only be used for
[inaudible]? Of course you can [inaudible] but not every [inaudible] can be used for
[inaudible].
>> Brent Waters: Yeah, I think you could do this in a generic way. So you're saying
what if Kristin is the manager of the group and I don't want her to be able to delegate on
down anymore? Yeah, I don't mean to bring you into every example. Yeah, because I
could just go to her level and then like have this null, null, null null, like kind of give her
nulls all the way down.
>>: [inaudible] ID. The left ID cannot be expanded by semantic…
>> Brent Waters: Yeah, yeah, yeah. So you could do kind of a, you could do it in a
generic fashion I think is the short answer. I kind of do delegate when I give her the key
I delegate. I assume there is a bottom. I guess it doesn't happen on Boneh-Boyen case
but assuming there is a bottom I could just bring her all the way down. Why don't I punt
a little bit on that one for now since it is kind of it is a little tangential. Now I want to
have another improvement which I thought of. So I'm going to try to still do this with
two parameters and here is going to be my hash functions. So let's see how these work. I
am going to replace these with something concrete. So before two parameters worked for
HIBE sorry IB, just one level is IB. And now I am trying to do it with two parameters for
level II and two parameters. We will save that until it actually works.
H to the 1 over ID, okay this would be raised to the S. So this is for level I, this is my,
and then this would be U to the ID squared times H base to the S. Now the question is…
What? So this is ID 1 and this is ID 2 [inaudible] whatever it is. So I am going to take U
to the ID 1, cube it, and H to the 1 over ID
>>: Over the whole combination of IDs or…
>> Brent Waters: And then the concatenation happens over here.
>>: So 1 over ID, is that ID 1 or ID2?
>> Brent Waters: This is ID 1 2.
>>: So that is from the [inaudible] ID 1s?
>> Brent Waters: Yeah, it only has ID 1.
>>: And the other one has…
>> Brent Waters: I am just kind of right now BS, so ID1, concatenates with ID2 squared.
So could this possibly work? Pretty complicated. I have some pretty complicated
looking stuff up here, right? But let's kind of look at the two things. Let's look at the
linear algebra thing. So here I have the vector S, so I raised U to the ID cubed and then I
have this as 1 over ID here, ID 1, okay Leo is going to make me be precise. And then I
have another vector which is S to ID 1 concatenate with ID 2 squared, 1.
>>: [inaudible]
>> Brent Waters: Okay. Don't study this too hard is one hint. What is the dimension of
this space here? Two. How many vectors did I give you? Two. So what can I do? I can
span the whole space again. Name me any AB, I can take some linear combinations of
these and give you this for A and B. This whole cubing and 1 over, I just made this whole
thing up. I did not actually think about this. We raise to the fifth or something, I don't
know. That's what I am saying. Don't, let's not worry. The point here is that we have,
we give away sort of two vectors and our subspace is dimension 2 and then we can spam
it. So I can mull it to anything I want. So compute it for a different ID. Compute any
two-level ID of your choice with--compute the hash functions. Compute what they are
supposed to be, compute the A part. Compute the B part. And you can use what is
already there to calculate it. That's the point. I just made up this cubing and raising to
the fifth thing or whatever. So don't study it too hard.
So this is the problem. The problem is in general like with these previous systems, so the
whole point of this exercise with these previous systems, if I wanted to have N instances,
if I wanted to have N levels, I needed to have N +1 size parameters. And some analog of
this would be true and actually be based in the encryption world. And this is not a good
thing. Part of the reason for this is because this global, like I am getting all these vectors
but they are raised to the same Fs. They are not like individually randomized each time.
But there is a reason for this. The reason I raise the same S is so that the encryption
works. Because I need, I paired this with S over here and I need everything. I can't just,
I need encryption to work. Having a nonfunctioning system is not a good option, so I
can't just make up random, you just make up stuff from over here.
So maybe this gives you some intuition as to why this problem, and this isn't just for
Boneh-Boyen; this is for other systems that have appeared so far basically fall into this
category. So Josh, we have a big task for you.
>> Josh: [inaudible]
>> Brent Waters: Oh, sorry. You have the experience. Any questions before it goes
down? Too late. And this is kind of what these two slides said. So that was my little
experimentation with giving a talk partially on the whiteboard. So these two slides
basically said what I said here. So our approach is to use some type of secret sharing plus
fresh randomness for each level.
>>: Before you go there, is this going to trade large public parameters for ciphertext?
>> Brent Waters: No.
>>: [inaudible]
>> Brent Waters: There are other bad things that it does not do. The ciphertext will get a
little bit larger but not, maybe like a factor of two larger, although there is a better way to
make it a factor of 1.5. But it won't like blowing up to N cubed or something bad like
that. Our goal is going to be able to do an unbounded system. I want to have a constant
number of public parameters, hopefully small content like three or four or five or
something like that, of group elements and be able to go anywhere I want with this HIBE
scheme. This will be kind of a high-level picture and then maybe looking at the actual
construction will help a little bit more. So there will be this kind of master secret which
is G to the alpha, for this alpha back here. And for each level or component we are going
to split this up into many different pieces that should go well together. But then we are
going to randomize each piece of your key. Let's not worry about the delegation for a
second. They need to be unrandomized in order to tie them back together. Then what we
are going to do is for the ciphertext we will be for vector ID prime and for each level-this wasn't the best notation Ice of I, each level what we are going to do is pair them
together and if these things match up right it will sort of paint this brush over it and then
after the pairing of the decryption we will be able to put them back together.
Let's just look at the system and hopefully I will clear things up a little bit. So public
parameters in the system, the actual description in the paper is going to be in some
composite order group mainly for the reason of the proof. But I am just going to give it
to you in the prime order version in order to make it a little simpler so we don't have all
these things flying around. So we are going to have five group elements, four in the
bilinear group and one in the target group. So this is a small constant. We can agree.
And the master secret key will be some exponent alpha. Let's look at how decryption
works. Let's say we are encrypting to a vector of length J like I am going J levels deep in
my, so I should be able to go to any depth I want. There is no bound. This is the point of
it being unbounded. So I picked this S which is the global S, analogous to what we saw
earlier, but also this ren is for each different level which we didn't see earlier. And now,
unfortunately this is a simpler version of the scheme. I wish I had time, this is the version
from the paper. So we take our message M blended by UGG alpha S. We kind of saw
that before. The G to the S part, but now what we do is for each different level, for level
1, 2, all the way to J, we have this W to the F term which is this global thing but the main
point to get across here is that we have this individual randomness on each level, and at
some level it prevents us notice this T cif I is present everywhere. This attack which we
had before of just doing linear combinations of things on each level won't happen, or we
hope it won't happen.
So there is something else going on here. So this T cif I is intuitively stopping us from
doing these linear combinations or at least we hope so, but we have to also hope that
decryption works, that it is correct, easy to make a broken system. So here is our mass of
authority doing our KeyGen, has this alpha which is the master set to the key and splits it
up into J, and so assuming the levels are the same, it splits them into lambda one through
lambda J such that the sum of all of them is equal to alpha. This is the secret splitting and
also chooses two random, two variables randomly for each level. And again, I am going
to try to focus on the part--okay, and then we have for each level, so kind of each level
will have a piece of alpha. And if we have all of these pieces, we can literally combine to
get alpha. And then there is something dependent upon identity of each level. Interesting
thing here even though we say well the Boneh-Boyen thing doesn't work for this, this
kind of remnants, it is almost like we kind of do the scheme locally, we almost kind of
push it back a little bit further like this does look like the Boneh-Boyen HIBE scheme.
At each different level we almost, you can imagine almost instead of having T of I so far
we had this global variable S and now were almost doing this HIBE thing locally at each
level. This is just what I talked about before, but let's look at how things might work for
decryption.
If we have M UGG to the alpha S, so we want to get UGG to the alpha S, so one way to
get UGG to the alpha S is if we just recover UGG to the lambda I times S for each I,
because then when we multiply all of these together, all of the lambdas together which
sums to alpha, so this is going to be our sub task over here. So one way towards getting
to it, so I am just showing you a piece of it, I am not showing you all of the ciphertext in
key is if we pair this together and then pair this together and then divide them out, so this
component paired with this component will cancel out here, so this will give you E of
GW to the S times YI and so what we are left with is something that gives us what we
want over here and something else that we need to cancel. So we get what we want over
here and then we need to cancel, but in order to recover it, we need to cancel out this part.
So this is some local thing. And now this part over here is actually canceled out in the
similar Boneh-like Boyen way or [inaudible] way with this local thing.
So here's like a little more detailed, pretty much what we are going to see is that the
theme of this is that we will get something that we want but it is going to be multiplied by
something that we don't want and we want to get rid of, and then we are going to want to
get that thing and get rid of it. But then when we go for that we are going to get it and
then get another thing, and it is going to be kind of a long chain of things. But it will
terminate which is good. So our first goal is to recover UGG to the alpha S because we
want this to get the message. And then we can do this, we can get a new sub goal of
recovering each of these UGG to the lambda I times S. please ask me a question if there
is any point here. Okay. So we can do this by pairing these two things together so we get
the S and the lambda I part here but then we get this extra junk. So we get the part we
want; then we get this extra junk, so now I have a new goal. I want to get this thing over
here, okay and then, okay but then we can get it by pairing this with this, but again so we
kind of get this thing that we need over here, but now we got that thing, sorry this chain is
a little long here. But then finally at the end we can actually get this apart with all these
cancellations. I should mention that there is a slightly simpler version so I wish I was
able to write out it. It is a slightly simpler version of this scheme which has one less
thing in the chain. It is a little bit easier to understand. I can show some people on paper
afterwards if you are interested.
The proof for this one worked out a little bit better. I just want to mention that key
delegation is, we want to be able to do delegation. That is pretty easy. Before we had it
at J levels, now we want to go to J +1 level, so you just pick this Omega 1 through
Omega J +1, that sum to zero and you re-randomize the key, so you tag on this extra part
to the key and then you re-randomize it. So this is not too much diff, I mean it
accommodates for the system. It is not too much novel compared to what was done
before. And then you have to also we randomize--so who asked this question earlier if
the keys were distributed--that was you Brian? So in this system we do distribute the
keys the same in both ways. You can probably improve the efficiency a little bit of
delegation by not doing it that way. But then your proof becomes harder.
So how are we doing on time Kristin?
>> Kristin Lauter: We definitely have the room until 12 so…
>> Brent Waters: I don't want to torture people that long.
>> Kristin Lauter: A typical talk is an hour.
>> Brent Waters: Okay. So I will wrap it up.
>> Kristin Lauter: So that's about another 15 minutes.
>> Brent Waters: Okay. That will be fine.
>>: The proof is only for the scheme [inaudible] or [inaudible].
>> Brent Waters: It is for a composite order. But I presented you the prime order thing.
You could do prime order in the generic group model or some not so awesome thing. I
think someone else, not me, is actually, so most of these composite sort of group things,
the point is to get the subspace, and you can translate it to prime order groups. But
maybe I will take--this is the system so. So before I go on to just discuss like at a high
level of proof, any questions on the system? So kind of the challenges that you want this,
you want this global variable in the ciphertext to tie everything together, you know, it has
to decrypt it. But we saw the spanning problem with the vectors so the technical
challenge was how do we randomize each level but still let things, we don't want things
to combine in the bad way is how a lot of this crypto--we don't want things to combine in
the way we don't want where we are changing all these vectors, but we do want things,
but we do want things to decrypt at the end. So kind of the trick was to get this kind of
randomize each level locally but still in a way that allows you to combine at the end.
Matt?
>> Matt: So there is some key policy ABs including yours where you got all these
essentially we share the secret to make policies that are more restrictive, and that seems
very similar to this so the fundamental difference is?
>> Brent Waters: This is, HIBE is a subset of ABE with delegation.
>> Matt: That means heightened security techniques aside from security techniques very
similar to that, do they [inaudible] that or are they…
>> Brent Waters: There are other techniques. I will briefly discuss the ABE thing, yeah
the techniques are similar. In some ways HIBE is just pedagogically easier to do, to talk
about right now. Yeah, I think ABE with delegation is more powerful.
>>: [inaudible] assumption?
>> Brent Waters: So the hardest assumption for this is some of these composite order
group assumptions, but I will mention that people have been able to take all of these
systems, built in the assumptions, people have in the past found analogues in the linear
assumption. It is not me, but someone else has already done this. So this is with some of
the subgroup like maybe through these subgroup type assumptions, but I don't know, I
kind of know this privately, so I don't know how much I can share, but someone else has
done this in the linear assumption.
>>: So is there a difference between composite and primordial [inaudible]. I mean you
threw a lot of terms there so it looked like maybe it would be some q less DA thing…
>> Brent Waters: There is no q.
>>: It is just, if your proof was in the primordial group it would be D [inaudible]?
>> Brent Waters: Yeah, in the primordial group, it is not that exact system that I showed
you. There's kind of a version of it someone else has it under Delin and in my paper it is
not q anything is couple, it is like three assumptions in composite order groups, but they
are static assumptions. They don't depend on q.
>>: [inaudible].
>> Brent Waters: I stopped giving them names. They fall within some class, different
subgroup type assumptions. I can show you off-line a little bit if you are interested, but
there is probably no efficient way to communicate them right now. But kind of the point
is I think, okay, now that I am on this, in some sense I see this stuff happening in, there
are kind of two different ways to do these things. If you do them with composite order
groups, you can usually get them without a q type assumption, but then the actual
assumption looks a little messy and some people go, oh my gosh, it is kind of confusing.
It is messy. But then there is the second phase which is translate, well, why do I do a
composite order group, well because I needed these subspaces and it is cleaner and easier
to do with subgroups. And then you can kind of, so this is where you can kind of develop
the main concepts. This is my own view of things. And then there is this kind of
mechanical part where you can take these concepts and then translate them to primordial
groups and get it under this like a decisional linear assumption which is a better
assumption then all of the ones we worked with. And actually I send my student Allison
has been looking at, you know, automating this. If it is best not to have to do it. You like
a quick way to do it. But in the past, all of these things have been translated over. So if
you name me any composite order scheme, I can tell you it has been translated over or I
think I can tell you it has been translated over or has been translated over.
>>: [inaudible] assumption [inaudible]?
>> Brent Waters: So if it is static, we are going a little, let me get back to that, we're
getting a little on a tangent here. Maybe that is best off-line. Okay so, I just want to give
you a little overview of how the proof goes. So the challenges here are that if you want
to do what is called a partitioning type proof, these things they always relied on you if I
had like the [inaudible] vector of length 10, I had to program in these 10 levels of identity
into the public parameters, well, or 15, or whatever. And now my public parameters are
only a size 5 for some small constant. So these partitioning don't look like they will all
work here. So that is a problem. But even with dual system proofs, it is kind of low
entry, they kind of depend on what I will call entropy to avoid some paradox and they
kind of always depend upon the parameters as been pretty big, so it wasn't even obvious
how to do it with these groups. But it turned out we were able to do this with dual system
encryption. And let's see, I am almost, but see, so I will give it a quick overview of dual
system encryption and, but maybe end the talk there and people can ask me questions offline.
Okay. Actually I will just skip a couple of the slides here because I probably won't have,
sorry, this whiteboard thing, I didn't know how long it would take. So if you are
interested in dual system encryption, you can talk to me off-line. So let me just conclude
by saying okay, so we did have this original motivation for a hierarchal ABE, but okay,
we could maybe argue this point little bit. You might be able to say well, what if you just
made them of depth 30. Maybe people won't go below depth 30. I am not sure if that is
actually true or not. Where I think it gets much more motivating is in attribute-based
encryption where, for example, the ciphertext is pegged with some metadata attributes
and uses key which is, you know, describing which ciphertext it is allowed to decrypt.
So in the past what I have had to do is the public parameters would give a bound of how
many attributes would describe something. And there it is a little hard to say well, what
should this bound be. You can have some time variables. You might come up with,
there could be some very short site, there could be some very short ones. And then
maybe every once in a while there are a few that go to a few hundred, and well now
everyone needs to pay the price for this. Moreover, until I compute these hash functions,
actually if you make your public parameters size N it is actually N squared and you need
N exponentiations for computing this hash function each time. So actually the
performance really hurts you much more than even the HIBE case.
So this is kind of the more motivating thing to me. And I will just say we were able to
extend this to attribute-based encryption. A lot of the--it follows reasonably easily. So
before this HIBE, you know, we split up this alpha into the secret lambda 1, plus lambda
2, plus lambda 3, plus lambda J is equal to alpha, here we just mainly, we grab a Boolean
formula, you know, like a secret sharing scheme associated with the policy, we just
reflect that secret sharing over there. Okay, and it turns out kind of weird thing is even
though we use dual system encryption proofs which is supposed to be good for adaptive
security, we were only able to get selective in this case for reason I can, so in the HIBE
we were able to get adaptive security. We had to sort of go back to selective security for
the attribute-based encryption world, which was a little funny in some ways, but for a
technical reason. Anyway this is where I think the motivation really helps out, because I
just have pretty much the same size, very small parameters and, you know, when I
publish my system, I don't have to commit myself to how many attributes I need.
>>: Are those technical reason something that are worth talking about is something
that…
>> Brent Waters: We would need to go deeper into the proof in order to explain the
technical, so I am happy to talk about it off-line at probably the amount of time we can't
do it. So any questions?
>>: [inaudible]
>> Brent Waters: You didn't get what I meant. So this ciphertext is pegged with two
attributes, right? So what is the maximum number of attributes you can tag to a
ciphertext?
>>: [inaudible]
>> Brent Waters: So reference the [inaudible] the so-called Pandi paper, so if you want
to, if you have public parameters as size 4 or something can you tag in 20 attributes in
your work?
>>: [inaudible] divisible [inaudible].
>> Brent Waters: Is the same spanning problem, remember we had this kind of weird
hash function and there was a very…
>>: [inaudible]
>> Brent Waters: Yeah. But even the small universal public parameters are exactly
equal to the number of attributes. So it is in your own work that limitation is present.
>>: So it wasn't totally clear to me your solution. So you had the secret sharing
technique and then that also increases the size of the public parameters [inaudible] you
had sub I and the Is was the number of shares of the secret, right?
>> Brent Waters: So that was not the size of the public parameters. Should I go back to
the slide?
>>: Yes, that would be great. My basic question is whether like what was the purpose of
secret sharing? Is that what was giving you the unbounded that you could keep going
level after level and needed to increase the number of shares of the secret [inaudible]
unbounded?
>> Brent Waters: Okay, let's bring up the system. So maybe I will…
>>: What is J?
>> Brent Waters: So J is the level, but notice the public parameters are here…
>>: What makes those…
>> Brent Waters: Those are constant.
>>: [inaudible] not the public [inaudible] those are [inaudible] text sizes.
>> Brent Waters: That does go with the level.
>>: Yes.
>> Brent Waters: Which is the same as previous systems.
>>: So J can go to infinity and [inaudible] sizes too much…
>> Brent Waters: J can go to infinity. So the ciphertext size does grow with the number
of, I mean, so one question is can you do this with a compacts ciphertext, but this kind of
matches with what was done with previous, in the Boneh-Boyen system for example, the
ciphertext size grew with the number of levels. It just, I can pick any, when I am
encrypting I can pick any J I want. The public parameters, there's nothing in the public
parameters that dictate me to be how far I need to go. It is the case that it does grow
linearly with J but there is nothing in the public parameters which specifies like a
maximum J.
>>: So is the role of this, [inaudible] the sum of these things. So that must've come out
somewhere in the proof that you showed us with your calculation [inaudible] cancel
things [inaudible] and not proof the correct [inaudible] encryption or whatever.
>> Brent Waters: You mean this part here?
>>: Yes. I am having trouble understanding the mapping of secret sharing scheme to
the, to what you showed us. I can't quite follow the details of [inaudible]. Are these
supposed to be like independent secrets that are given at each level? If you are the person
that is delegated out on the J levels you are going to get all of these guys?
>> Brent Waters: Well, you will get them in the exponent over here.
>>: Oh, okay.
>> Brent Waters: I mean if I give them to you in that [inaudible] you can break them. So
here is, let me first say that, you had this other question? Yeah, I didn't, so I kind of took
Allison's site and I modified them a little bit. The secret sharing part was kind of done
before in the previous systems more or less or another thing, I mean it is part of it, but it
is kind of more of this structure of the ciphertext which is more of a novelty in this local
cancellation. So I am making a key for you. I am making a key for let's say you are at
depth five. So the authority, what it does is it chooses lambda 1, lambda 2, lambda 3,
lambda 4, all the way to lambda 5s, essentially that they sum to alpha and I just, and I
give you the key of this according to this algorithm.
>>: And you give me alpha?
>> Brent Waters: No I don't give you alpha. That is the master secret key; I shouldn't
give you alpha. And I don't even give you the lambdas; I just gave you…
>>: The thing that is bothering me is just that it seems weird that like normally keys you
think of them as being random, and here you have them related, right? You took like say,
one instance would be like lambda five would be one more than lambda five and in
another instance lambda four was one less than lambda four in the other instance. So add
to the same thing.
>> Brent Waters: Okay. But here is how I do it. I choose lambda one randomly. I
choose lambda two randomly and lambda three and four randomly. And then I set
lambda five to be alpha minus…
>>: [inaudible] doesn't make sense it is related to the other.
>> Brent Waters: Yeah, they are not completely random. But if they were completely
random, anyone could make a private key. They have to tie together somehow. You
want decryption. You want these things to relate. If they don't relate to alpha in any
way, they are completely random group elements then…
>>: You wouldn't be able to decrypt. But I am just thinking about the security issue. It
seems that there is something that seems a little weird. So is it secret sharing in the sense
that when you do the decryption calculation that it looks like it is the secret sharing thing?
Why do they call it secret sharing?
>> Brent Waters: It is like an n out of n secret sharing. In the HIBE you have to match
at level one. And you have to match at level two. And you have to match at level three.
And you have to match at level four and level five. So basically I am taking this secret, I
am basically executing, I am sharing the secret alpha into these exponents and then I am
embedding them. In the ABE system, if I have some policies like, you know, attribute A
or B and C, I will do C. Pretty much the attribute-based encryption system is just really
the same thing except for we share alpha like according to some [inaudible] something
secret sharing system that represents the policy. But I will just remark that this idea that
alpha is embedded, like in all of these previous systems like the Boneh-Boyen one, alpha
is embedded in the key. So at no point do you have private keys which are completely
random. Like if we lifted up the screen again we would see the Boneh-Boyen system has
alpha embedded in it. So I wouldn't say the fact that alpha is embedded somewhere in
here is a strange thing. Yeah, you have to make the security proof go through, but if it
wasn't embedded in there I would be scared because what the heck is alpha doing? You
know, like these things should all be reflected somewhere. I guess Carl, then Leo.
>>: This is a much less technical question. So you have been using these examples
[inaudible] Kristin and doing [inaudible] delegation and so it has been something of a
disappointment with public-key infrastructure. The delegation changes are typically not
very long. And part of the reason for that is that if you go down to the registration
authority to find the things that you would need to do a long depth chain, basically when
you go climbing back into another place the trust relationship would be very weak and so
having a depth of chain greater than 20, it is hard to imagine that anyone anywhere else in
the tree would trust someone at that lower level with all those registrations [inaudible].
So having a very great depth of tree, it is not very likely that that the type of [inaudible].
I just want to understand if I could how to reconcile that with what you are saying about
the need to have attributes. So having 100 attributes is not all that plausible. It is really
doubtful that that will happen. And so could you help me understand a little better this
relationship between the depth of the tree and the size of the features [inaudible]?
>> Brent Waters: I think during the middle of my talk I did say, for reasons that you are
giving here, that the motivation is stronger in ABE.
>>: I understand. [inaudible] so this depth of tree as far as it's like multiple
delegations…
>> Brent Waters: Okay. Actually, can I grab some whiteboard? In some sense this
HIBE, it is almost like an and, sorry Josh I didn't mean to. This is almost like an and
policy. It is like you match at level I and level II and level III. If you forget about the
delegation for a second, it is almost like you have to match that level I and level II and
level III and level IV and level V, just one big… so this ABE, so that is just and policies
so ABE is just sort of, well we have better than and. We have any Boolean formula. So
it is just kind of like how, it's how many different attributes, how many different, so when
you're in the ciphertext you, when you are in the HIBE you can kind of give something
up for each different level and attribute-based encryption you give out something for each
different attribute. The techniques are very similar. I use HIBE because it is a simpler
thing for pedagogical reasons to give in a talk. But once you understand the HIBE thing,
getting the attribute-based encryption is like a very small step.
>>: So is this relating the depth delegation of HIBE to the depth of the policy that you
have?
>> Brent Waters: Yeah, no, yeah, it's a little bit of a, that is a little bit of a false
connection. It turns out I have to give a component, in HIBE I have to give a component,
we're just counting components of the ciphertext. So for each level in HIBE I have to
give out something for each component of the ciphertext, I have to give out something.
And then in attribute-based encryption for each kind of attribute I have, I have to give out
a component of the ciphertext. I can see how you might hold the depth of--yeah I can see
how it leads you a little--Leo?
>>: So I had a question on attribute-based encryption. What Boolean formula support
[inaudible] or [inaudible]?
>> Brent Waters: Which Boolean formulas do we support?
>>: Like a very deep nested [inaudible] Jesse
>> Brent Waters: Any Boolean formula.
>>: And the cost is sort of [inaudible]?
>> Brent Waters: There are two different kinds of ABE. Let's focus on the key policy
one. Basically the, so think of the number of nodes, leaves in the Boolean formula, or the
size of the Boolean formula. There is like a group element or two, whatever, a couple of
group elements in the private key. The size of the private key grows with the size of the
Boolean formula.
>>: In whatever form you write it for is this like [inaudible]?
>> Brent Waters: In whatever form you write it.
>>: Okay.
>> Brent Waters: So if you can find a good representation then it is fine. If you find a
really bad representation, then it is equally bad. And that is pretty much the same in all
of these ABE systems. Anything else?
>> Kristin Lauter: Terrific.
[applause]
Download