Skip to content

Commit 11761b2

Browse files
committed
TCB
1 parent 49283a5 commit 11761b2

File tree

2 files changed

+71
-21
lines changed

2 files changed

+71
-21
lines changed

intro.rst

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ pioneers are interviewed.
198198
<https://www.washingtonpost.com/sf/business/2015/05/30/net-of-insecurity-part-1/>`__.
199199
The Washington Post, May 30, 2015.
200200

201-
1.2 Trust and Threats
201+
1.2 Threats and Trust
202202
----------------------
203203

204204
A discussion of security often begins with an analysis of the *threat
@@ -258,29 +258,46 @@ applicable to system security.
258258
B. Schneier. Beyond Fear: Thinking Sensibly About Security in an
259259
Uncertain World. Copernicus Books, 2003.
260260

261-
Finally, it is important to recognize that trust and threats are two
262-
sides of the same coin. A threat is a potential failure scenario that
263-
you design your system to avoid, and trust is an assumption you make
264-
about how external actors and internal components you build upon will
261+
It is also important to recognize that threats and trust are two sides
262+
of the same coin. A threat is a potential failure scenario that you
263+
design your system to avoid, and trust is an assumption you make about
264+
how external actors and internal components you build upon will
265265
behave. For example, if you plan to transmit messages over Wi-Fi on an
266266
open campus, you would likely identify an eavesdropper that can
267267
intercept messages as a threat (and adopt some of the methods
268268
discussed in this book as a countermeasure). But if you are planning
269269
to transmit messages over a fiber link between two machines in a
270-
locked datacenter, you might trust that channel is secure, and so take
271-
no additional steps. Every system makes trust assumptions, even if it
272-
as simple as trusting the computer you just bought from a reputable
273-
vendor does not forward your data to an adversary. The key is
274-
to be as explicit as possible about those assumptions, because they
275-
may change over time.
276-
270+
locked machine room, you might trust that channel is secure, and so
271+
take no additional steps. Every system makes trust assumptions. The
272+
key is to be as explicit as possible about those assumptions, because
273+
they may change over time.
274+
275+
Taking this thought process a step further, trust assumptions aren't
276+
always as clear-cut as this strawman suggests. For example, most of us
277+
implicitly trust that the computer we just bought from a reputable
278+
vendor does not forward our data to an adversary, but for some use
279+
cases, the hardware supply chain is a consideration. Buying time on
280+
virtual machines in a cloud only complicates this decision. Even when
281+
you trust the hardware, you might or might not trust the firmware or
282+
the OS (or you might trust it only when certain security enhancements
283+
are enabled). This illustrates a common design question that every
284+
system must face: What do you accept to be the *Trusted Computing Base
285+
(TCB)*; that is, what hardware and software components do you trust?
286+
287+
We revisit this topic in the next chapter, but given that this book
288+
focuses on network security, a reasonable starting point is to trust
289+
the hardware/software on the systems you control, and to assume all
290+
other systems you interact with are untrustworthy. But this definition
291+
is problematic in a service-based environment like today's Internet,
292+
where we end up also putting some amount of trust in the network
293+
providers we connect to, and the cloud services we depend upon. In
294+
many respects, identifying a TCB that meets our needs is an important
295+
part of what makes security so challenging.
277296

278297

279298
1.3 Threats to Network Security
280299
-------------------------------
281300

282-
283-
284301
.. from the original book chapter - somewhat edited to follow the above text
285302
286303
Computer networks are, as we noted above, invariably a shared

principles.rst

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,48 @@ replication, allowing large volumes of traffic to be sent to the
7676
target of a DoS attack; thus it has become necessary to develop means
7777
to mitigate such attacks.
7878

79+
.. sidebar:: Picking Your Battles
80+
81+
*Chapter 1 talked about trust and threats being two sides of the
82+
same coin, but another way of thinking about it that every secure
83+
system design starts with two lists: (1) those elements you trust,
84+
and so can build upon; and (2) those elements you do not trust, and
85+
so must treat as a threat that you defend against. But this is no
86+
different than for any system you build: you first identify the
87+
building blocks you plan to take as a given, and then you design a
88+
solution that fills the "gap" between those building blocks and the
89+
requirements you are trying to meet.*
90+
91+
*One way in which security is unique is that over time you may
92+
discover that you need to move items from the first list to the
93+
second list, as new threats emerge. To reduce this possibility, it
94+
is best to keep the first list as minimal as possible. On the other
95+
hand, if you choose to trust nothing, you may end up "boiling the
96+
ocean" (i.e., having to solve so many problems that you are unable
97+
to make any progress). Every system must pick its battles.*
98+
99+
*Because of our focus on network security, this book effectively
100+
starts with a list of trusted elements that includes commodity
101+
servers and L2/L3 switches, and ignores (i.e., declares
102+
out-of-scope) all the vulnerabilities those elements face and the
103+
countermeasures that go into securing them.*
104+
79105
As a consequence of these three main requirements—confidentiality,
80106
integrity, and availability—additional requirements are placed on the
81-
underlying systems. Foremost among these the need for a mechanism to
82-
enforce *access control*, a system component that limits who has
83-
access to data and what operations they may perform on it. Once we can
84-
securely identify principals, we must then control what objects they
85-
can read or write. Access control is clearly a mechanism included in
86-
end systems, such as laptops and web servers, but it also applies to
87-
network infrastructure, such as routers and name servers.
107+
underlying systems we build upon, which brings us back to the idea of
108+
a Trusted Computing Base (TCB) introduced in Chapter 1. We generally
109+
have three inter-related requirements for these platforms, beyond
110+
their not being malicious (which is implied by our including them in
111+
our TCB). The first we have already seen: they must provide a local
112+
(component-specific) notion of *identity*, giving us a way to support
113+
multiple principals (users). The second is they must provide
114+
*isolation*, protecting information belonging to one user from other
115+
users on the system. The third is they must enforce *access control*,
116+
limiting which users have access to what data, along with what
117+
operations they are allowed to perform on it. Providing these
118+
mechanisms gives us the foundation we need to then meet the
119+
confidentiality, integrity, and availability requirements as we
120+
communicate over the Internet.
88121

89122

90123
2.2 Broader System Requirements

0 commit comments

Comments
 (0)