As far as the question of malware exploiting TC, it's difficult to evaulate without knowing more details about how the technology ends up being used.
First there was TCPA, which is now called TCG. Microsoft spun off their own version called Palladium, then NGSCB. But then Microsoft withdrew NGSCB, and at this point I have no idea whether they will ever offer a new approach. Microsoft offered four concepts for its vision, but only two of them are in the current TCG: Sealed Storage and Remote Attestation. Microsoft's additional features are Trusted I/O and Process Isolation. It's possible that TCG may incorporate these eventually, because without them the security offered by TC is much more limited. Microsoft's vision for application development under NGSCB involved splitting programs into two parts, which they called the left hand side (LHS) and right hand side (RHS). The LHS was the legacy program, which had access to the entire Windows API. It would be responsible for user interface, I/O, and any non-secure features. The RHS was the new stuff; it would run in a special partitioned memory that could not be accessed even by the OS. However the RHS would not have access to the full Windows API, and instead would only get very limited OS support from a mini-kernel called the Nexus. The goal was to publish the source of the Nexus for review and to have it be simple and clean enough to be secure. Applications would do their security stuff in the RHS modules, which were called Nexus Computing Agents (NCAs). These could use the other TPM features. They could encrypt data such that only that NCA could decyrpt it; and they could attest to a remote server or peer about exactly what NCA was running. NCAs would also have some kind of secure I/O channel to input and display devices. An NCA would be immune to molestation by virus and malware unless the virus got into the NCA itself, which would be hard because they were supposed to be relatively small and simple. Infections elsewhere in the program, in the OS, or in other NCAs would not propagate to an NCA. Microsoft's design was sophisticated and (IMO) elegant, and goes far beyond anything the clumsy, design-by-committee TCG has come up with yet. Yet NGSCB failed even before it was released. Experience from early beta testers was uniformly negative, according to press reports, and the project was pulled for a redesign. Nothing has been heard of it for a year now. The problem was apparently that this LHS/RHS design was unacceptable to developers, introducing complexity and requiring a substantial rewrite of existing applications. The RHS Nexus API was so primitive that it was hard to do anything useful there, while LHS functionality was completely unprotected and received no benefits from the new technology. So that's where we stand. Given this uncertainty, it is hard to credit those who claim that TC will be a golden opportunity for malware. Nobody really knows what the architecture of TC will be by the time it is released. In this respect, Bruce Schneier's comments were the most accurate and prescient. Over two years ago he advised adopting a wait and see attitude, and predicted exactly the kind of revamping and redesign which is currently underway. But for the purposes of analysis, let's suppose that Microsoft's original vision were intact, and that NGSCB with the four features were actually being deployed. How might Dan Kaminsky's scenario of an infected Microsoft Word work out in detail? First we need to consider how the LHS/RHS split might work for a word processor. Most functions are not security related and will be in the LHS. Let's imagine a security function. Suppose a company wants to have certain documents to always be saved encrypted, and only to be exchanged (in encrypted form) with other employees also running the secure Word program. Nobody would be able to get access to the data except via this special program. This could be useful for company-confidental docs. So we will have an NCA on the RHS which can, under the guidance of some policy, save documents in encrypted form and locked to the NCA. No other software will be able to decrypt them because of the Sealed Storage function of the TPM. NCA's can exchange documents with matching NCAs on other computers, using Remote Attestation to verify that the remote system is running the right software, and to set up a secure comm channel between the NCAs. No other software, not even the LHS of Word, could decrypt the data being exchanged between the NCAs. And the NCAs run in secure memory, so that even in an infected computer there will be no way for the malware to get access to the sensitive data. So how does Kaminsky's attack work? He proposes to give some bogus data to the NCA and infect it. Now, here's the problem. The NCA is a relative small and simple program. It's not going to have the full capabilities of the rest of Word. It has a clean interface and a clean API to program to. Everything about the system is designed so that secure NCAs will be relatively easy to write. The goal here is to reduce the target size. Presently the target is the entire Windows kernel, device drivers, services and all the other things which run as Administrator. NCAs and the Nexus will be a much smaller target, without the burdens of legacy code which make it so hard to secure a system the size of Windows. (Of course this same "clean piece of paper" approach to design is what caused NGSCB to be rejected, but we are ignoring that for now in this thought experiment.) This gives us reason to expect that NCAs and the Nexus will be much harder for virus writers to hit than the big, fat, juicy target of Windows itself. But no software is perfect, so let's suppose that some NCAs do have bugs and can be infected. Kaminsky is right that these agents would then be immune to memory-based AV scanners. Even though the scanners run with full privileges, they can't see NCA memory. So this does give a virus a place to hide. But what can the virus do? Remember, NCAs do not have access to the full Windows API. They have a much simpler and more primitive API in the form of the Nexus, and it's primarily oriented around doing crypto operations. So a virus can come in and do some crypto. Big whoop. It's important to understand that architecturally, it's not like you break into a "trusted code layer" and can then do whatever you want. NCAs are still protected from one another. The Nexus is protected from NCAs. The only single point of failure is the Nexus itself, but as I said it is designed as a micro kernel set up for open review. This is the one piece of code they would focus most intently on making bulletproof. The other problem with breaking into an NCA is that if it changes the memory footprint of the agent, the agent will lose access to its own sealed storage. The sealed data is locked to the hash of the agent, so if the agent's code is altered, unsealing will no longer be possible. The virus can't even get access to the sensitive documents the NCA was protecting. Based on these considerations, attacking NCAs does not seem to be a productive avenue for malware writers. The other possibility is for virus writers to do as they do now, ignore the RHS and just go after Windows. As Steve Bellovin points out, they can still delete files, send out copies of themselves, and wreak other havoc. What good is TC against this threat? The benefit of TC is that data which is secured by NCAs would be immune to discovery and disclosure by malware which broke into the rest of the machine. This could include financial account numbers, passwords, records and other important documents. We have already seen viruses which scan disks for things that look like credit card and account numbers, and probably these will increase in the future. Just being able to have a secure, hardware protected vault for hiding this data will be an important step forward for security. Other kinds of applications will also benefit from immunity to malware. Any network application can use remote attestation to make sure that its servers, clients or peers are running intact, in secured and isolated memory, on a TC enabled system. One example which has been proposed is secure election software. It would be crazy to think about Internet voting with today's PCs, but running a voting client as an NCA would enable safe voting even on a malware infected PC. Another idea, which should be near and dear to the cypherpunk heart, is a TC secured remailer network. Each remailer could verify that the others in the net were running unmolested, and even remailer operators would be unable to monitor traffic passing through their systems. TC will not stop the malware threat, but it aims to bypass it, by letting designers create a new generation of applications which each runs securely in its own world. This would stop the worst feature of today's systems, that a failure in one part of the PC makes the whole thing insecure. That will be a major step forward for the security and usability of the next generation of computers. If the technology is allowed to exist, that is.