13.03.2013 Views

Hacking the Xbox

Hacking the Xbox

Hacking the Xbox

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Taking a Step Back<br />

Chapter 13 - Onward! 199<br />

There is a problem with <strong>the</strong> phrase “trusted computing”: it has become<br />

synonymous with cryptographically secured trusted computers. Let’s take a<br />

step back and just talk about alternative approaches to building trusted<br />

computers.<br />

Trustability has always been important in computers. However, back in<br />

<strong>the</strong> early days of computing, machines were so expensive that <strong>the</strong><br />

hardware necessary to enforce strong trust policies was not within <strong>the</strong><br />

reach of consumers. For example, many early machines shipped with a<br />

socket for a hardware Memory Management Unit (MMU) chip. The<br />

MMU was one of <strong>the</strong> first steps toward trustable hardware memory<br />

models; part of an MMU’s job is to enforce page-level memory access<br />

protections. MMUs were sold as an option because <strong>the</strong>y were quite pricey<br />

at <strong>the</strong> time. Unfortunately, <strong>the</strong> move toward trustable hardware stopped<br />

at <strong>the</strong> MMU, partially because computer networks didn’t exist in any<br />

major form until relatively recently. In a non-networked world, data<br />

needed to be protected only from programmer errors and from access<br />

by a few select users with physical access to <strong>the</strong> machine. Today, computers<br />

need something stronger than just an MMU, something that can<br />

provide trust in <strong>the</strong> face of viruses and remote attackers attempting to<br />

exploit subtle software weaknesses to run malicious code.<br />

The natural extension to <strong>the</strong> MMU’s hardware-enforced paged virtual<br />

memory model might be address capabilities with a tagged memory model.<br />

A memory tag is a set of bits that record <strong>the</strong> type of data or code stored in a<br />

memory location. In a tagged memory model, every memory location has a<br />

set of tag bits, kind of like how every memory location in a conventional<br />

error-correcting memory implementation is associated with some ECC bits.<br />

Tag bits help <strong>the</strong> hardware enforce data type management policies; for<br />

example, a memory location tagged as piece of data can never be accidentally<br />

or intentionally executed as code. A capability is a pointer granted by a<br />

trusted kernel that cannot be forged. The unforgeability property is preferably<br />

enforced by hardware through tag bits. Many architectures also include<br />

<strong>the</strong> ability to enforce access boundaries as part of a hardware capability. 1<br />

Capabilities and memory tags are not new ideas; in 1961, <strong>the</strong> Burroughs<br />

B5000 used capabilities (<strong>the</strong>n called descriptors) and tagged memory to<br />

guard, in hardware, against buffer overflow attacks, and to isolate code<br />

from data. 2 The MIT PDP-1, Intel i432, IBM System/38, and <strong>the</strong> Mach<br />

and Amoeba operating systems also implemented capabilities in some<br />

1 An efficient, high performance hardware implementation of<br />

precise object boundaries using tagged capabilities can be<br />

found in a tech note titled “A capability representation with<br />

embedded address and nearly-exact object bounds” by<br />

Jeremy Brown, J.P. Grossman, Andrew Huang and Tom Knight.<br />

http://www.ai.mit.edu/projects/aries/Documents/Memos/<br />

ARIES-05.pdf<br />

2 “The Architecture of <strong>the</strong> Burroughs B5000 — 20 Years Later and Still<br />

Ahead of <strong>the</strong> Times?” by Alastair J.W. Mayer. http://www.ajwm.net/<br />

amayer/papers/B5000.html

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!