So when we looked in the last video my security overview for a particular website we noticed he actually wasn't using Diffie Hellman
it was using elliptic curve diffie-hellman, so this is just going to be a short video
that explains broadly the difference between the two without going into too much maths although actually the maths of elliptic curves isn't that difficult.
Let's not go over Diffie-Hellman a third time
So you and me have some kind of secret key and we use that to talk securely
Diffie-Hellman is how we get that secret key.
Every time I talk about Diffie-Hellman
and use any kind of analogy people were like oh show us the maths so this is for the maths people
We had a few interesting questions on the Diffie-Hellman video so let's explore
Remember that Alice here has some public variable g ^ a mod n now
what's important about this is that in some sense a has been mixed into this generator, so what we can't split it up
She can send this around,
without everyone working out
what a is, which is the important thing. So really what the mathematics behind Diffie-Hellman does, is allow the protocol to send
messages where you can't extract this private variable and that's exactly what elliptic curves do, they just do it in a slightly different way
I'll draw a picture elliptic curve ish. Right so this is an elliptic curve
Elliptic curves are curves in two dimensions
Cameraman: We need colors on this mark, colors, couple colors
Mark: It's the future, right!
So the formula for an elliptic curve is y^2 = x^3 + ax + b.
and that's the last time we were to talk about it. So the parameters of the curve are a and b
and then the curve will look something like, hold on I'm going to sort take a bit of artistic license with this
but something a bit like that. Now they vary in shape depending on what a and b are. The thing about an elliptic
Curve is in our modular arithmetic we had numbers going around modulo n, right which is just a list of numbers
it's a cycle of numbers.
Here we have a cycle of points somewhere on this curve, so our generator will be a point on this curve
Let's use blue, shall we.
This is our generator
That's not a good place for my generator
It's not a good place my generator, because then my next example of adding things to the generator won't work
Let's let's do it
Let's do it there all right ignore that point that can be a different point for later now if this is our generator G
What we can do, instead of raising things to powers, we just add G to itself. We have 2G 3G
3G is G Plus G Plus G. Yeah, so what we can do is we can add
G to itself. To do that what you do is you draw a line
At the tangent of this curve all the way until it hits another point on the curve
You flip it over to the other dimension, and this is 2g over here
3G would be the line between these two. Find out where it intersects and flip it over here
So this is 3G. 3G plus G, would be, it goes along here like this
Intersects the curve somewhere else flips over and it's over here, so this is 4G.
Now we won't look at it anymore right the actual formula for this is just
mathematics to do with lines and the tangent of this curve
It's actually not very complicated the point is what we're doing is by multiplying G
By various numbers or adding it to itself this point addition. We're moving around this curve sort of seemingly at random
Right a bit like how we were moving around our clock face seemingly at random so the nice thing is that if you're adding points
together one elliptic curve
You will always intersect only one other point
Which means that you've never got a choice of two or three points where you could go so that helps a lot?
When you're doing this so if I give you a point on the curve here
And I say question mark G right how many multiples of G
Is that then any ideas no no idea at all right? It could be 50 G. It. Could be 5 billion G
We don't we you know it
There's no way of knowing that is our private number, and that's the thing we can't extract back out here
We couldn't get our a if I give you a G
That's all I'm gonna capitalize it now G. Plus G Plus G Plus G a times on this curve
I give you that point and ask you to tell me what the private variable was oh
No idea, you know for a small curve. You might get it off a few attempts for a big curve
You're never going to get it. Oh, it's going to take you so long and you won't bother
So what?
Elliptic curves, do is literally a plug in replacement for the mathematics that a modular arithmetic mathematics involved in normal
difficulty late B
G and their shared secret will end up being a B G and it's very very similar now
Just to give you someone. We also do this all modulo n because why wouldn't you?
Know because that's how the mathematics works. That's what we do so in fact. It doesn't really look like a curve anymore
I'll show you a picture of one so this is an example of elliptic curve. I just looked on internet right modulo something like
460 this is some curve
I don't know what the parameters are now you can see if this was a generator
The points are just gonna dot around all over the place eventually
They'll go back to the start and cycle background again
But not for a long long time so if I give you this point and tell you what was my private number
That's how it's secure. It's very hard
to undo that and in fact
It's very mathematically quite easy to calculate some multiple of G and move around
But it's difficult to undo that process that's the private part of elliptic curves. You know I'm going to ask you though
Why why, would you bother with this? So this looks like it's are being unnecessary complication. Yeah well
It's a notice in some sense slightly more complicated, but actually
Mathematically, it's much more efficient the so elliptic curves are a little bit harder to solve this elliptic curve discrete logarithm problem
Which is what we call it?
It's slightly harder to solve in some sense than the regular discrete logarithm problem
Which means that elliptic curves can get away with shorter key sizes?
And that just means less computation when you're calculating a to the G or B to the G
To give you an example, so let's imagine that I use a different key was three thousand bits long
I would get the same security from an elliptic curve where my
prime n is only 256 bits long which is much much shorter the matter is much easier to compute much much faster, so
There was a strong tendency to use elliptic curves for that reason if you've got to imagine if you're a server
Performing these key exchanges all the time because people come into your shop or something like this
Then that kind of savings actually quite useful. It doesn't really matter if you're doing on your home
PC
But you know that many
You might as well use it with the flip side of that question that yeah is anyone still using the other way
Yep
so there are a few people who are a little bit suspicious of elliptic curves and
certain elliptic curves for example the NIST P 256 curve has its disk trap
Detractors because they're not absolutely sure where things like this a and B came from and so on okay
Maybe I mean for what it's worth big companies are also using that curve, and they seem to be fond of it
Other curves are available to give you an example
I've used a publicly available cryptography library to generate a couple essentially equivalent to
G to the a and a G just so you can see the difference in this sort of size
We're talking about here if I run this Python script
We've established a generator and a large prime
And this prime is 2048 bits so this is our a and this is our G to the a mod N
And you can see I mean this will be slightly shorter, but the idea you can see they're there
They're quite long approaching two thousand bits so that on a fast version you can see it didn't take very long to compute
But it took a little time to compute if I've run the same thing using elliptic curve. Cryptography on the NIST P 256 curve
We'll see it should be a lot shorter, okay
There we go right much shorter the missing 256 bit number much much shorter. You can see our private key is actually a number
Because it's a number a the number of times
We've jumped around our elliptic curve, and this is our actual XY coordinate of our point on the curve
So you can see it's split into here's the first part, and then the second part here
So this is X and this is y?
What you would normally do in this kind of situation if you were driving a key from this is
Scrap the Y and just use the X because it's long enough and secure enough
But that will depend on your situation there are debates that I had over
What curves are safe to use a lot of people use the NIST PT five six curve?
But some people other researchers don't think that secure because it may be made they've taken shortcuts on some of the parameters for efficiency reasons
They're not sure where somebody's parameters came from and that isn't without precedent
There was a situation where an elliptic curve random number generator was found to essentially have a backdoor
Which might be for a different video so the x.25 five one nine. Curve is quite well-regarded because they've gone to great lengths to
Demonstrate how they came up with their variables, and why it's used you know if you're if you're intricate to graphic research
This is something that comes concern. You who's just using the web probably don't worry about it
Heed the message hello computer file pop up, so it's getting the data of various things and we see here hello computer file
We've been able to do this by accessing a value that we shouldn't be able to access this code this if statement should stop us
Being able to access this past the end of this array
