I don't know much about TPMs, and I admittedly don't know as much about cryptography as I'd like to, though I am quite familiar with basic concepts. For the past two hours I've been attempting to improve this situation by trying to gain an understanding of how TPMs work and how they're used for the purposes of disk encryption and digital rights management.

I have, however, become stuck. None of the articles I found manage to describe an architecture that is even remotely secure. They list many neat features of TPMs, like secure cryptographic key storage, platform configuration registers and sealing/unsealing stuff. But fail to explain how all of these features come together to create an environment where a third (or even first, for that matter) party can trust the software that is being executed on the hardware in question.

Let's say you have some form of disk encryption on that uses the TPM to securely store the key used to unlock the disk at boot time. The TPM only makes this key available if the value stored in a platform configuration register (PCR) being correct. And we all know that you can only append stuff to PCR, not set it directly. But the way people put it, is that software that, generally speaking, should not be trusted unequivocally, is responsible for appending values to the PCR that the TPM then checks. So if you rely on what people are saying, and only on it, this just means that this software can be read from memory, executed on an emulator, and be used to compute correct values to append to the PCR to ultimately extract the key used for the disk encryption.

Let's now instead say that you're a publisher of some sort. You want to control the distribution of digital media in a way that your customers can view it on authorized devices, but not copy it to other devices. For that, you obviously need some sort of trusted software running on a hypothetical customer's hardware. Many articles suggest that this sort of trust can be established using a TPM, and some even make claims as bold as "TPM can see all of the software running on your system and make a signed report", but again, none of them actually describe the process used to establish this trust, and what feels like even less than none describe a process that I perceive as actually secure.

I understand that the TPM architecture is designed by people way smarter than me, and is thus probably quite secure. It's just that I have become increasingly frustrated that it is so incredibly hard to find any adequate description of principles by which this security is guaranteed.

Can someone please explain it to me, in more or less simple terms? I don't mind a little cryptography. In fact, I very much like it. But when people start throwing around terms like "endorsment key" before even explaining the general underlying principle of the technology in question, I become very sad and my attention just wanders off elsewhere.

If not, can you point to some resources on the matter? Preferably ones where you don't have to read 50 US letter sized pages of definitions written in 8 pt font just to get to the stuff you're looking for, if those are available. If not, I guess 50 pages it is.

  • And you found and read the architecture document? trustedcomputinggroup.org/resource/… and trustedcomputinggroup.org/wp-content/uploads/… If you want to understand the architecture, you are going to get more comfortable with technical documents longer than 50 pages.
    – schroeder
    Commented May 7 at 10:15
  • @schroeder, I'm gonna go read the doc when I have the time, thanks for linking it. While I agree that being comfortable reading long technical documents is a valuable skill, I think that many a time general considerations out of which an architecture is born can be described in a document that is both under 50 pages and accessible to a person that is reasonably educated in a vaguely related field. Moreover, I think this 'short doc' is still quite valuable, as it helps people reading the long doc for the first time understand it better the first time they read it.
    – Nullcaller
    Commented May 7 at 13:55
  • it's a proprietary hardware component having some documented functions, what did you expect? Commented May 7 at 16:16
  • @SirMuffington, I dunno, some mildly adequate documentation available for hardware used in 99.9% of modern x86 computers? Like it is the case for every single other component?
    – Nullcaller
    Commented May 8 at 17:11
  • Noone likes to make documentations, not even open source people so I really doubt that's realistic Commented May 8 at 17:31


You must log in to answer this question.

Browse other questions tagged .