What You Need to Know Before Reading This Book
The code in the book is all based on the C language, so skill in reading C is a requirement for
understanding any of the coding examples. Additionally, it is important that the reader have some
understanding of cryptography—particularly the difference between symmetric and asymmetric
keys, and cryptographic hashes. There is some discussion in the book about these concepts, but a
detailed description of the algorithms used is not included. Bruce Schneier’s Applied Cryptogra-
phy is a good reference for those who wish to go deeper into that area. If the reader wants merely
to find out what TCG is good for, Parts I and III of the book are recommended. If the reader has a
particular project in mind, all sections of the book are likely to be helpful.
Who You Are and Why You Should Read This Book
This book does provide the specific details needed to write applications that take advantage of the
TPM. If you are unfamiliar with Trusted Computing and want to write code that will use the capa-
bilities of the TPM, all of this book will be valuable to you. If you want to learn about the reason-
ing behind the design choices in the TPM, Parts I and II of the book are the ones to concentrate on.
For a Software Engineer
The authors have tried to write a book that would include everything they would have liked to
know about programming with TPMs. As a result, we have included sample code that we have
compiled to make sure it works. We give examples that do real things, not just using defaults
everywhere. We explain the choices we make in designing the code, and the code is commented,
so it is clear about what it does.
If you want to understand how big the problem is that needs to be solved, read Chapter 1,
“Introduction to Trusted Computing.” If you want to learn about the capabilities of the TPM, read
Chapter 2, “Design Goals of the Trusted Platform Module,” and Chapter 3, “An Overview of the
Trusted Platform Module Capabilities.” If you want to find out what kinds of problems can be
solved using the capabilities of the TPM, read Chapters 11–13. If you already understand the
capabilities of the TPM and want to write programs that use TPM 1.1, read Chapters 4–10. If you
want to use the expanded capabilities in the TPM 1.2, read Chapter 14.
For a Software Project Manager or Technical Leader
A software project manager needs to understand the capabilities of the TPM and also the archi-
tecture of projects he is leading. In any security program, it is particularly important that the
architecture be established well before coding begins. Architectural design flaws lead quickly to
security flaws.
This book should help you understand the issues necessary to design a secure program
architecture that takes advantage of the TPM. Chapters 1, 2, 3, 11, 12, 13, and 14 should be
particularly useful for the project manager.
xviii Preface