WEBVTT
Kind: captions
Language: en

1
00:00:00.000 --> 00:00:02.605
Computers aren't very good
at picking random numbers.

2
00:00:02.605 --> 00:00:04.882
Every part of a computer is
designed to be predictable,

3
00:00:04.882 --> 00:00:06.530
and to follow logical patterns.

4
00:00:06.530 --> 00:00:07.602
You put the same numbers in,

5
00:00:07.602 --> 00:00:09.445
you're going to get the same numbers out.

6
00:00:09.445 --> 00:00:11.318
Which is a problem, because
all modern encryption,

7
00:00:11.318 --> 00:00:13.488
including that padlock up in your browser

8
00:00:13.488 --> 00:00:14.851
that tells you that you're safe,

9
00:00:14.851 --> 00:00:18.163
all of that relies on big,
properly random numbers.

10
00:00:18.163 --> 00:00:20.303
If you can somehow predict those numbers,

11
00:00:20.303 --> 00:00:22.544
you can start breaking those locks.

12
00:00:22.544 --> 00:00:23.516
Which is why I'm here,

13
00:00:23.516 --> 00:00:26.449
at the headquarters of Cloudflare,
in San Francisco.

14
00:00:26.449 --> 00:00:29.800
Cloudflare is a service that protects
websites and web services,

15
00:00:29.800 --> 00:00:32.740
and sort of sits in front of them
as a gatekeeper.

16
00:00:32.740 --> 00:00:36.860
Somewhere around 10% of the web
flows through Cloudflare's network.

17
00:00:36.860 --> 00:00:38.655
Cloudflare was one of the first companies

18
00:00:38.655 --> 00:00:41.697
to provide free SSL
encryption for websites.

19
00:00:41.700 --> 00:00:44.860
So the connection between your web browser
and the website you're going to

20
00:00:44.860 --> 00:00:47.580
is fully encrypted and
invisible for eavesdroppers

21
00:00:47.580 --> 00:00:49.540
to be able to look at.

22
00:00:49.540 --> 00:00:53.220
In short, these folks deal with a lot of
encrypted Internet traffic,

23
00:00:53.220 --> 00:00:55.800
so they need a lot of random numbers.

24
00:00:55.815 --> 00:00:58.948
It is possible to write code
that will simulate randomness,

25
00:00:58.948 --> 00:01:00.862
and that's good enough for a lot of uses,

26
00:01:00.862 --> 00:01:03.563
but in theory, those
numbers could be predicted.

27
00:01:03.563 --> 00:01:05.507
They're just being generated by code,

28
00:01:05.507 --> 00:01:08.020
so the servers here have to get their
randomness

29
00:01:08.020 --> 00:01:11.720
from an external and
entirely unpredictable source.

30
00:01:11.720 --> 00:01:14.700
A lot of home computers treat their own
users as sources of randomness,

31
00:01:14.700 --> 00:01:16.440
tiny twitches of mouse movement,

32
00:01:16.443 --> 00:01:18.769
the exact milliseconds between keystrokes,

33
00:01:18.769 --> 00:01:21.957
or on a phone maybe even the
accelerometer or other sensors.

34
00:01:21.960 --> 00:01:25.660
In all those cases, they generally discard
the bigger parts,

35
00:01:25.660 --> 00:01:27.600
the bits that could just
be influenced by humans,

36
00:01:27.600 --> 00:01:29.520
and go off the tiny little decimal places,

37
00:01:29.524 --> 00:01:31.745
the bits that you couldn't
control precisely,

38
00:01:31.745 --> 00:01:33.365
even if you wanted to.

39
00:01:33.365 --> 00:01:35.535
But that sort of human
interaction is nowhere

40
00:01:35.535 --> 00:01:37.711
near enough for an
operation on this scale,

41
00:01:37.720 --> 00:01:39.860
hence lava lamps.

42
00:01:39.860 --> 00:01:44.540
We videotape these lava lamps
and take the pictures and video,

43
00:01:44.540 --> 00:01:47.700
and turn it into a stream of
random, unpredictable bytes.

44
00:01:47.700 --> 00:01:52.000
And this unpredictable data is what we use
to help create the keys

45
00:01:52.000 --> 00:01:55.460
that encrypt the traffic that
flows through Cloudflare's network.

46
00:01:55.460 --> 00:01:58.458
This data is then fed
into our data centres

47
00:01:58.458 --> 00:02:01.066
and then fed into the Linux kernel which

48
00:02:01.066 --> 00:02:04.072
then uses it to help seed
random number generators

49
00:02:04.072 --> 00:02:05.661
that are used to generate keys.

50
00:02:05.661 --> 00:02:07.700
Every time that you take
a picture with a camera

51
00:02:07.700 --> 00:02:10.820
there's going to be some sort of static,
some sort of noise.

52
00:02:10.820 --> 00:02:15.900
So it's not only just where the bubbles
are flowing through the lava lamp,

53
00:02:15.900 --> 00:02:18.959
it's the state of the air,
the ambient light,

54
00:02:18.960 --> 00:02:23.080
every tiny change impacts
the stream of data.

55
00:02:23.100 --> 00:02:25.200
A cryptographic hash function
is something that we use

56
00:02:25.200 --> 00:02:28.940
where even if you have one static image
and one little bit changes,

57
00:02:28.940 --> 00:02:31.958
it changes the entire stream.

58
00:02:31.958 --> 00:02:35.207
So we use that to help
scatter the randomness

59
00:02:35.207 --> 00:02:36.479
as much as possible.

60
00:02:36.479 --> 00:02:38.750
We also collect randomness
around the world.

61
00:02:38.750 --> 00:02:40.829
So in our London office,
we have this thing

62
00:02:40.829 --> 00:02:42.234
called a chaotic pendulum.

63
00:02:42.234 --> 00:02:44.717
It has three pieces and
it's unpredictable in

64
00:02:44.717 --> 00:02:47.145
which way they twist and turn together.

65
00:02:47.145 --> 00:02:50.060
We videotape that and feed it into our
randomness source, as well.

66
00:02:50.060 --> 00:02:52.834
In our Singapore office, we
have a radioactive source

67
00:02:52.834 --> 00:02:55.679
that we use to feed into the
randomness system, as well.

68
00:02:55.679 --> 00:02:58.178
So this is not just some
stunt that we pulled,

69
00:02:58.180 --> 00:03:01.080
it's actually being
fed into our real systems.

70
00:03:01.080 --> 00:03:03.334
Whether anything in
the world is truly random

71
00:03:03.334 --> 00:03:06.241
is arguably a question of
philosophy and not science.

72
00:03:06.241 --> 00:03:08.848
Maybe everything is just
complicated clockwork.

73
00:03:08.848 --> 00:03:11.308
But these lava lamps are so chaotic

74
00:03:11.308 --> 00:03:14.700
that simulating that camera shot
with perfect pixel accuracy,

75
00:03:14.700 --> 00:03:16.740
far enough ahead
to be useful

76
00:03:16.740 --> 00:03:19.700
while figuring out everything else
those images are being put through,

77
00:03:19.700 --> 00:03:24.180
it's roughly the same level of difficulty
as just brute-forcing the encryption in the first place.

78
00:03:24.180 --> 00:03:26.157
And even if you could simulate all that,

79
00:03:26.157 --> 00:03:28.483
you'd only have one piece of the puzzle.

80
00:03:28.483 --> 00:03:30.159
These folks aren't the first to do this.

81
00:03:30.160 --> 00:03:34.320
"Lavarand" was patented by a company called
Silicon Graphics in 1996,

82
00:03:34.320 --> 00:03:37.020
but that only lasted a couple of years.

83
00:03:37.025 --> 00:03:38.797
Now of course, there are less flashy and

84
00:03:38.797 --> 00:03:40.868
more practical ways to
generate random numbers,

85
00:03:40.868 --> 00:03:43.069
but then I wouldn't be here.

86
00:03:43.069 --> 00:03:44.609
I would be at some
other company who'd gone and,

87
00:03:44.609 --> 00:03:48.200
I don't know, pointed a camera at
a basket of kittens.

88
00:03:48.200 --> 00:03:52.100
That'd be a bit higher
maintenance, though.

