1
1

00:00:00,300  -->  00:00:02,010
<v ->Root of trust.</v>
2

2

00:00:02,010  -->  00:00:02,940
In this lesson,
3

3

00:00:02,940  -->  00:00:04,470
we are going to talk about the concept
4

4

00:00:04,470  -->  00:00:07,440
of a hardware root of trust or ROT.
5

5

00:00:07,440  -->  00:00:09,270
Now, this is a cryptographic module
6

6

00:00:09,270  -->  00:00:11,130
embedded within a computer system
7

7

00:00:11,130  -->  00:00:12,870
that can endorse trusted execution
8

8

00:00:12,870  -->  00:00:15,330
and attest to boot settings and metrics.
9

9

00:00:15,330  -->  00:00:17,460
Now, this may sound like a complicated concept
10

10

00:00:17,460  -->  00:00:19,950
but you use a root of trust all the time.
11

11

00:00:19,950  -->  00:00:21,840
If you think about your TPM module
12

12

00:00:21,840  -->  00:00:22,710
inside your bios,
13

13

00:00:22,710  -->  00:00:24,330
that is a root of trust.
14

14

00:00:24,330  -->  00:00:25,860
Essentially, a root of trust
15

15

00:00:25,860  -->  00:00:28,080
is used to scan the boot metrics of the system
16

16

00:00:28,080  -->  00:00:29,550
and the operating system files
17

17

00:00:29,550  -->  00:00:31,080
and it verifies their signatures.
18

18

00:00:31,080  -->  00:00:33,090
And then we can use that root of trust
19

19

00:00:33,090  -->  00:00:34,680
to sign a digital report,
20

20

00:00:34,680  -->  00:00:36,517
to send that over to the processor and say,
21

21

00:00:36,517  -->  00:00:37,890
"I trust these things."
22

22

00:00:37,890  -->  00:00:39,930
Essentially, it's a digital certificate,
23

23

00:00:39,930  -->  00:00:41,730
but it's embedded inside your processor
24

24

00:00:41,730  -->  00:00:43,320
or inside your firmware.
25

25

00:00:43,320  -->  00:00:44,490
Now, as I mentioned earlier,
26

26

00:00:44,490  -->  00:00:46,050
the most common root of trust
27

27

00:00:46,050  -->  00:00:49,320
is a trusted platform module or TPM.
28

28

00:00:49,320  -->  00:00:50,490
This is a specification
29

29

00:00:50,490  -->  00:00:51,630
for hardware based storage
30

30

00:00:51,630  -->  00:00:52,890
of digital certificates,
31

31

00:00:52,890  -->  00:00:53,723
keys,
32

32

00:00:53,723  -->  00:00:54,690
hash passwords
33

33

00:00:54,690  -->  00:00:57,690
and other user and platform identification information.
34

34

00:00:57,690  -->  00:00:59,820
Now, as you look inside of a TPM,
35

35

00:00:59,820  -->  00:01:02,550
there are lots of different functions inside of it.
36

36

00:01:02,550  -->  00:01:03,720
First, it's going to provide you
37

37

00:01:03,720  -->  00:01:05,610
with secured input and output.
38

38

00:01:05,610  -->  00:01:08,100
Then we have this cryptographic processor
39

39

00:01:08,100  -->  00:01:10,530
that provides us with a true random number generator.
40

40

00:01:10,530  -->  00:01:12,180
It has an RSA key generator,
41

41

00:01:12,180  -->  00:01:14,040
it has a SHA-1 hash generator
42

42

00:01:14,040  -->  00:01:16,800
and encryption decryption signature engines.
43

43

00:01:16,800  -->  00:01:17,633
In addition to that,
44

44

00:01:17,633  -->  00:01:19,260
we also have persistent memory
45

45

00:01:19,260  -->  00:01:20,093
and inside of that,
46

46

00:01:20,093  -->  00:01:20,970
we have an endorsement key
47

47

00:01:20,970  -->  00:01:22,020
which is a digital key
48

48

00:01:22,020  -->  00:01:24,540
and a storage root key or an SRK.
49

49

00:01:24,540  -->  00:01:26,280
And then we have versatile memory.
50

50

00:01:26,280  -->  00:01:27,270
This includes things like
51

51

00:01:27,270  -->  00:01:30,180
platform configuration registers or PCRs,
52

52

00:01:30,180  -->  00:01:32,580
attestation identity keys or AIKs
53

53

00:01:32,580  -->  00:01:33,990
and storage keys.
54

54

00:01:33,990  -->  00:01:35,100
Now, do you have to memorize
55

55

00:01:35,100  -->  00:01:36,210
all of these different things
56

56

00:01:36,210  -->  00:01:37,770
on this chart for TPM,
57

57

00:01:37,770  -->  00:01:38,790
for the exam?
58

58

00:01:38,790  -->  00:01:39,930
Well, not really.
59

59

00:01:39,930  -->  00:01:41,370
Instead, you really need to remember
60

60

00:01:41,370  -->  00:01:42,203
that TPM,
61

61

00:01:42,203  -->  00:01:43,920
the trusted platform module
62

62

00:01:43,920  -->  00:01:45,900
is this part of your system
63

63

00:01:45,900  -->  00:01:47,640
that allows you to have the ability
64

64

00:01:47,640  -->  00:01:49,380
to ensure that when you're booting up,
65

65

00:01:49,380  -->  00:01:50,610
it is done securely.
66

66

00:01:50,610  -->  00:01:51,810
And we could take those reports
67

67

00:01:51,810  -->  00:01:54,180
and digitally sign them using the TPM.
68

68

00:01:54,180  -->  00:01:56,490
TPM is also used with full disk encryption.
69

69

00:01:56,490  -->  00:01:57,323
So if you're using something
70

70

00:01:57,323  -->  00:01:58,770
like BitLocker in Windows,
71

71

00:01:58,770  -->  00:02:02,040
it uses TPM and that key inside of TPM
72

72

00:02:02,040  -->  00:02:04,320
to make sure that data is secure.
73

73

00:02:04,320  -->  00:02:05,820
Now, when you're dealing with TPM
74

74

00:02:05,820  -->  00:02:08,520
your TPM can be managed inside of Windows
75

75

00:02:08,520  -->  00:02:10,830
using tpm.msc,
76

76

00:02:10,830  -->  00:02:11,970
which is a console
77

77

00:02:11,970  -->  00:02:13,950
or you could do it through group policy.
78

78

00:02:13,950  -->  00:02:16,800
Either these are ways you can configure TPM.
79

79

00:02:16,800  -->  00:02:18,030
Now for the exam,
80

80

00:02:18,030  -->  00:02:19,230
you don't need to go in depth
81

81

00:02:19,230  -->  00:02:20,700
of how to configure these things.
82

82

00:02:20,700  -->  00:02:21,660
In the real world,
83

83

00:02:21,660  -->  00:02:23,040
you may be asked to work on this,
84

84

00:02:23,040  -->  00:02:23,873
and if so
85

85

00:02:23,873  -->  00:02:25,020
you could look up the documentation
86

86

00:02:25,020  -->  00:02:27,030
at microsoft.com.
87

87

00:02:27,030  -->  00:02:27,863
Now, the other thing
88

88

00:02:27,863  -->  00:02:28,696
we need to talk about here
89

89

00:02:28,696  -->  00:02:30,630
is a hardware security module.
90

90

00:02:30,630  -->  00:02:31,463
This is an appliance
91

91

00:02:31,463  -->  00:02:33,690
for generating and storing cryptographic keys
92

92

00:02:33,690  -->  00:02:35,370
that is less susceptible to tampering
93

93

00:02:35,370  -->  00:02:38,520
and insider threats than using storage-based solutions.
94

94

00:02:38,520  -->  00:02:40,560
So typically when we do encryption,
95

95

00:02:40,560  -->  00:02:43,890
we do that using some sort of a long key, right?
96

96

00:02:43,890  -->  00:02:45,660
And so I might type in a long password
97

97

00:02:45,660  -->  00:02:47,430
and that becomes my key.
98

98

00:02:47,430  -->  00:02:48,810
Well, the problem with that is
99

99

00:02:48,810  -->  00:02:51,150
it's a lot easier to crack those things
100

100

00:02:51,150  -->  00:02:54,060
because that key could be compromised by an insider
101

101

00:02:54,060  -->  00:02:55,740
or by somebody telling somebody else it
102

102

00:02:55,740  -->  00:02:56,700
or typing it in
103

103

00:02:56,700  -->  00:02:57,930
or something of that nature.
104

104

00:02:57,930  -->  00:02:59,310
Now, there are lots of different ways
105

105

00:02:59,310  -->  00:03:00,660
to create an HSM.
106

106

00:03:00,660  -->  00:03:02,730
They come in lots of different form factors.
107

107

00:03:02,730  -->  00:03:04,020
For example, here on the screen
108

108

00:03:04,020  -->  00:03:05,040
you could see N-cipher
109

109

00:03:05,040  -->  00:03:06,390
and there's three different models.
110

110

00:03:06,390  -->  00:03:07,770
We have one that's an internal card
111

111

00:03:07,770  -->  00:03:08,610
that could be put in.
112

112

00:03:08,610  -->  00:03:10,320
There's one that is a rack mounted system
113

113

00:03:10,320  -->  00:03:11,190
and then there's one that's more
114

114

00:03:11,190  -->  00:03:13,050
of an internet of things type of solution.
115

115

00:03:13,050  -->  00:03:15,090
The real advantage of these types of systems
116

116

00:03:15,090  -->  00:03:16,500
is that they are automated,
117

117

00:03:16,500  -->  00:03:18,510
and that means the keys cannot be compromised
118

118

00:03:18,510  -->  00:03:19,440
by human involvement.
119

119

00:03:19,440  -->  00:03:21,570
So we're removing the person from the equation
120

120

00:03:21,570  -->  00:03:24,060
and ensuring the systems are secure.
121

121

00:03:24,060  -->  00:03:25,470
Now, another thing we need to think about
122

122

00:03:25,470  -->  00:03:26,430
is how do we make sure
123

123

00:03:26,430  -->  00:03:28,650
people can't tamper with our different devices?
124

124

00:03:28,650  -->  00:03:30,810
Well, that's where the concept of anti-tamper
125

125

00:03:30,810  -->  00:03:31,950
comes into play.
126

126

00:03:31,950  -->  00:03:33,510
These are methods that make it difficult
127

127

00:03:33,510  -->  00:03:34,343
for an attacker
128

128

00:03:34,343  -->  00:03:37,290
to alter the authorized execution of software.
129

129

00:03:37,290  -->  00:03:38,670
Now, if you think about anti-tampering
130

130

00:03:38,670  -->  00:03:40,080
and you think about it in the physical world,
131

131

00:03:40,080  -->  00:03:41,610
you buy a thing of aspirin
132

132

00:03:41,610  -->  00:03:42,690
and you open up the bottle,
133

133

00:03:42,690  -->  00:03:44,010
what do you see on top?
134

134

00:03:44,010  -->  00:03:45,487
That sealed layer that says,
135

135

00:03:45,487  -->  00:03:46,560
"This has been protected."
136

136

00:03:46,560  -->  00:03:48,690
This is a sealed for your protection.
137

137

00:03:48,690  -->  00:03:50,280
This is an anti-tampered device
138

138

00:03:50,280  -->  00:03:51,690
because if you pull that seal off,
139

139

00:03:51,690  -->  00:03:53,160
you can't put it back on.
140

140

00:03:53,160  -->  00:03:54,060
And so this shows you
141

141

00:03:54,060  -->  00:03:55,500
that somebody has either been in the bottle
142

142

00:03:55,500  -->  00:03:57,060
or not been in the bottle.
143

143

00:03:57,060  -->  00:03:58,290
Well, we want to do the same thing
144

144

00:03:58,290  -->  00:03:59,640
within our electronics
145

145

00:03:59,640  -->  00:04:01,530
and there are two main ways of doing that.
146

146

00:04:01,530  -->  00:04:03,000
We have anti-tamper mechanisms
147

147

00:04:03,000  -->  00:04:04,860
that include things like an FPGA,
148

148

00:04:04,860  -->  00:04:06,960
which is a field programmable gate array
149

149

00:04:06,960  -->  00:04:10,830
or a physically unclonable function, or PUF.
150

150

00:04:10,830  -->  00:04:12,810
Both of these are anti-tamper mechanisms
151

151

00:04:12,810  -->  00:04:13,650
that could be used
152

152

00:04:13,650  -->  00:04:15,540
and designed inside your systems.
153

153

00:04:15,540  -->  00:04:16,373
This means that
154

154

00:04:16,373  -->  00:04:18,300
if somebody tries to tamper with the system,
155

155

00:04:18,300  -->  00:04:19,380
what these things will do,
156

156

00:04:19,380  -->  00:04:21,600
is actually zero out your cryptographic key
157

157

00:04:21,600  -->  00:04:23,280
which then can automatically
158

158

00:04:23,280  -->  00:04:25,170
wipe out the information on that system,
159

159

00:04:25,170  -->  00:04:27,480
making sure you know it's been tampered with
160

160

00:04:27,480  -->  00:04:30,120
and, therefore, nobody can get the information.
161

161

00:04:30,120  -->  00:04:30,953
That's the idea.
162

162

00:04:30,953  -->  00:04:32,940
When you start using things like anti-tamper.
