A Cost Analysis of Windows Vista Content Protection Peter Gutmann, pgut001@cs.auckland.ac.nz

http://www.cs.auckland.ac.nz/~pgut001/pubs/vista_cost.html

Last updated 12 June 2007 (but see the note below)

Distributed under the Creative Commons license (see Appendix) In early August of this year I gave a talk at a security conference with a significantly more up-to-date and cleaned-up version of this material (the writeup here was originally written for comment on a private security mailing list and had to be somewhat hastily retrofitted for non-security-geeks). In addition this text was mostly written nearly a year ago and predates a number of events such as the appearance of hardware with PVP-UAB support, about 100-odd MB of Vista updates, and entire stories like the GigE slowdown issue (although that has nothing to do with content protection). This means that this writeup exhibits the inevitable bit-rot of broken links, stories that have changed, updated or changed technical information, and so on. Finally, numerous images and diagrams don't integrate too well into this text-only writeup (the talk material is in PDF form, which makes it easier to include graphical content). So the slides for the talk are the recommended form if you want to read about this, with an optional version annotated for the humour-impaired. I've also put up a brief comment about statements by the George and Ed tag team at ZDNet for people who were wondering about that.

Executive Summary

Windows Vista includes an extensive reworking of core OS elements in order to provide content protection for so-called “premium content”, typically HD data from Blu-Ray and HD-DVD sources. Providing this protection incurs considerable costs in terms of system performance, system stability, technical support overhead, and hardware and software cost. These issues affect not only users of Vista but the entire PC industry, since the effects of the protection measures extend to cover all hardware and software that will ever come into contact with Vista, even if it's not used directly with Vista (for example hardware in a Macintosh computer or on a Linux server). This document analyses the cost involved in Vista's content protection, and the collateral damage that this incurs throughout the computer industry.

Executive Executive Summary

The Vista Content Protection specification could very well constitute the longest suicide note in history [Note A].

(In case you missed the note at the top, this writeup hasn't been current for some time now, and many links and information are outdated. It's only kept online because of the large number of sites linking to it. If you want the current version, see the note at the top).

Table of Contents

This document looks purely at the cost of the technical portions of Vista's content protection [Note B]. The political issues (under the heading of DRM) have been examined in exhaustive detail elsewhere and won't be commented on further unless it's relevant to the cost analysis. However, one important point to keep in mind when reading this document is that in order to work, Vista's content protection must be able to violate the laws of physics, something that's unlikely to happen no matter how much the content industry wishes that it were possible [Note C]. This conundrum is displayed over and over again in the Windows content-protection requirements, with manufacturers being given no hard-and-fast guidelines but instead being instructed that they need to display as much dedication as possible to the party line. The documentation is peppered with sentences like:

“It is recommended that a graphics manufacturer go beyond the strict letter of the specification and provide additional content-protection features, because this demonstrates their strong intent to protect premium content”.

This is an exceedingly strange way to write technical specifications, but is dictated by the fact that what the spec is trying to achieve is fundamentally impossible. Readers should keep this requirement to display appropriate levels of dedication in mind when reading the following analysis [Note D].

A second point to note is that the term “premium content”, or in more recent statements by Microsoft, “commercial content” (I've used “premium content” throughout this writeup for consistency) goes well beyond the HD-DVD and Blu-Ray examples that I've used above and encompasses not just the obvious definition of “HD content in any form” but even non-HD content, or as Microsoft put it “commercial content generally, independent of resolution”. While premium content is currently still somewhat scarce, in five years' time it'll be hard to find a movie or similar content that isn't HD or similar premium content. So although Microsoft have tried to downplay the perceived impact of Vista's content-protection by stating that it'll only apply when premium/commercial content is present, this conveniently sidesteps the fact that Microsoft hopes that this situation will become universal in the near future. The whole future of Vista's content protection is predicated on this fact, because without near-universal premium content there's no point in having content-protection features in the first place.

Vista's content protection mechanism only allows protected content to be sent over interfaces that also have content-protection facilities built in. Currently the most common high-end audio output interface is S/PDIF (Sony/Philips Digital Interface Format). Most newer audio cards, for example, feature TOSlink digital optical output for high-quality sound reproduction, and even the latest crop of motherboards with integrated audio provide at least coax (and often optical) digital output. Since S/PDIF doesn't provide any content protection, Vista requires that it be disabled when playing protected content [Note E]. In other words if you've sunk a pile of money into a high-end audio setup fed from an S/PDIF digital output, you won't be able to use it with protected content. Instead of hearing premium high-definition audio, you get treated to premium high-definition silence.

Say you've just bought Pink Floyd's “The Dark Side of the Moon”, released as a Super Audio CD (SACD) in its 30th anniversary edition in 2003, and you want to play it under Vista (I'm just using SACD as a representative example of protected audio content because it's a well-known technology, in practice Sony has refused to license it for playback on PCs). Since the S/PDIF link to your amplifier/speakers is regarded as insecure for playing the SA content, Vista would disable it, and you'd end up hearing a performance by Marcel Marceau instead of Pink Floyd.

Similarly, component (YPbPr) video will be disabled by Vista's content protection, so the same applies to a high-end video setup fed from component video. In fact even the most basic composite video out (a.k.a. “TV-out” on video cards) is disabled, at least by nVidia's drivers:

“This feature is no longer supported due to the new Protected Video Path Output Content Protection (PVP-OPM) in Windows Vista.”.

A quick Google search leads to numerous online forums containing howls of outrage at this Windows “feature”, and an iTWire review recommends against nVidia-based media center PCs altogether because of it.

But what if you're lucky enough to have bought a video card that supports HDMI digital video with HDCP content-protection? There's a good chance that you'll have to go out and buy another video card that really does support HDCP, because until quite recently no video card on the market actually supported it even if the vendor's advertising claimed that it did. As the site that first broke the story in their article The Great HDCP Fiasco puts it:

“None of the AGP or PCI-E graphics cards that you can buy today support HDCP […] If you've just spent $1000 on a pair of Radeon X1900 XT graphics cards expecting to be able to playback HD-DVD or Blu-Ray movies at 1920×1080 resolution in the future, you've just wasted your money […] If you just spent $1500 on a pair of 7800GTX 512MB GPUs expecting to be able to play 1920×1080 HD-DVD or Blu-Ray movies in the future, you've just wasted your money”.

(The two devices mentioned above are the premium supposedly-HDCP-enabled cards made by the two major graphics chipset manufacturers ATI and nVidia). ATI was later subject to a class-action lawsuit by its customers over this deception. As late as August of 2006, when Sony announced its Blu-Ray drive for PCs, it had to face the embarrassing fact that its Blu-Ray drive couldn't actually play Blu-Ray disks in HD format:

“Since there are currently no PCs for sale offering graphics chips that support HDCP, this isn't yet possible”.

Only in mid-2007 have the first properly HDMI/HDCP-capable video cards finally started to appear, but even then no-one has been able to identify any Windows system that will actually play HD content in HD quality, in all cases any attempt to do this produced either no output or a message that it was blocked by content protection. Even nVidia's latest and greatest GPU, the G80, can't output 1080p HD video, because once you enable HDCP (which is required by Vista for HD-DVD or BluRay playback), you're limited to 720p resolution. nVidia's older G7x line also has this problem, as does ATI's R5xx. In fact the only GPU that appears to support full-resolution HD playback, requiring dual-link HDMI, is ATI's only-sort-of-released R600. While it's not possible to prove a negative in this manner, it's certainly an indication that potential buyers could be in for a shock when they try and play full HD-quality premium content on their shiny new Vista PC.

The same issue that affects graphics cards also goes for high-resolution LCD monitors. One of the big news items at the 2007 Consumer Electronics Show (CES 2007), the world's premier event for consumer high-tech, was Samsung's 1920×1200 HD-capable 27″ LCD monitor, the Syncmaster 275T, released at a time when everyone else was still shipping 24″ or 25″ monitors as their high-end product [Note F]. The only problem with this amazing HD monitor is that Vista won't display HD content on it because it doesn't consider any of its many input connectors (DVI-D, 15-pin D-Sub, S-Video, and component video, but no HDMI with HDCP) secure enough. So you can do almost anything with this HD monitor except view HD content on it.

If you have even more money to burn, you can go for the largest (conventional) computer monitor made, the Samsung's stupidly large (for a computer monitor) 46″ SyncMaster 460PN. Again though, Vista won't display HD content on it, turning your $4,000 purchase into a still-image picture frame. Oddly enough, this monitor has been advertised as “HDTV ready” by retailers even though there's no HDMI/HDCP input, although in practice the term “HD-ready” has been diluted close to meaninglessness — 10-year-old 14″ CRT monitors have a higher resolution than many “HDTV-ready” TVs being sold today. Someone who works for a large US retail chain has told me that they'll advertise anything that'll run at a higher resolution than standard NTSC/PAL/SECAM as “HD-capable”. Here's an example of an HD-capable PDA, and even a genuine HD-capable cellphone (the mockup using a Nokia phone is particularly amusing) to illustrate where this sort of creative marketing leads. HD-ready cellphones must be from the same marketing people who brough us Internet-ready modems.

In order to appropriately protect content, Vista will probably have to disable any special device features that it can't directly control. For example many sound cards built on C-Media chipsets (which in practice is the vast majority of them) support Steinberg's ASIO (Audio Stream I/O), a digital audio interface that completely bypasses the Windows audio mixer and other audio-related driver software to provide more flexibility and much lower latency than the Windows ones. ASIO support is standard for newer C-Media hardware like the CMI 8788. Since ASIO bypasses Windows' audio handling, it would probably have to be disabled, which is problematic because audiophiles and professional musicians require ASIO support specifically because of its much higher quality than the standard Windows channels. You can get more information on Vista's audio architecture and the changes from XP in this post from Creative Labs, and a discussion of the problems that the DRM-reengineered Vista audio system causes for sound card vendors in this article on the future of Vista audio.

As well as overt disabling of functionality, there's also covert disabling of functionality. For example PC voice communications rely on automatic echo cancellation (AEC) in order to work. Echo cancellation is used to prevent sound from a loudspeaker or headphones interfering with a microphone in the vicinity. This is rather tricky because the sound will be modified by the speaker and the surroundings that it's operating in, so it requires fairly sophisticated signal processing to remove, as well as a high-quality copy of the signal (if you get a degraded copy the signal, it becomes much harder to use it to cancel out the echo with it). Although it's not visible, echo cancellation is very widely used in applications like hands-free car phones, standard phones used in hands-free mode, and conference calling systems.

AEC in a PC requires feeding back a sample of the audio mix into the echo cancellation subsystem, but with Vista's content protection this isn't permitted any more because this might allow access to premium content. What is permitted is a highly-degraded form of feedback that might possibly still sort-of be enough for some sort of minimal echo cancellation purposes.

The requirement to disable audio and video output plays havoc with standard system operations, because the security policy used is a so-called “system high” policy: The overall sensitivity level is that of the most sensitive data present in the system. So the instant that any audio derived from premium content appears on your system, signal degradation and disabling of outputs will occur. What makes this particularly entertaining is the fact that the downgrading/disabling is dynamic, so if the premium-content signal is intermittent or varies (for example music that fades out), various outputs and output quality will fade in and out, or turn on and off, in sync. Normally this behaviour would be a trigger for reinstalling device drivers or even a warranty return of the affected hardware, but in this case it's just a signal that everything is functioning as intended.

Alongside the all-or-nothing approach of disabling output, Vista requires that any interface that provides high-quality output degrade the signal quality that passes through it if premium content is present. This is done through a “constrictor” that downgrades the signal to a much lower-quality one, then up-scales it again back to the original spec, but with a significant loss in quality. So if you're using an expensive new LCD display fed from a high-quality DVI signal on your video card and there's protected content present, the picture you're going to see will be, as the spec puts it, “slightly fuzzy”, a bit like a 10-year-old CRT monitor that you picked up for $2 at a yard sale (see the Quotes for real-world examples of this). In fact the specification specifically still allows for old VGA analog outputs, but even that's only because disallowing them would upset too many existing owners of analog monitors. In the future even analog VGA output will probably have to be disabled. The only thing that seems to be explicitly allowed is the extremely low-quality TV-out, provided that Macrovision is applied to it (see the Decreased System Reliability section for further discussion of Macrovision problems with Windows).

The same deliberate degrading of playback quality applies to audio, with the audio being downgraded to sound (from the spec) “fuzzy with less detail” [Note G].

Amusingly, the Vista content protection docs say that it'll be left to graphics chip manufacturers to differentiate their product based on (deliberately degraded) video quality. This seems a bit like breaking the legs of Olympic athletes and then rating them based on how fast they can hobble on crutches.

The Microsoft specs say that only display devices with more than 520K pixels will have their images degraded (there's even a special status code for this, STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH), but conveniently omit to mention that this resolution, roughly 800×600, covers pretty much every output device that will ever be used with Vista. The abolute minimum requirement for Vista Basic are listed as 800×600 resolution (and an 800MHz Pentium III CPU with 512MB of RAM, which seems, well, “wildly optimistic” is one term that springs to mind). However that won't get you the Vista Aero interface, which makes a move to Vista from XP more or less pointless. The minimum requirements for running Aero on a Vista Premium PC are “a DX9 GPU, 128 MB of VRAM, Pixel Shader 2.0, and minimum resolution 1024×768×32”, and for Aero Glass it's even higher than that. In addition the minimum resolution supported by a standard LCD panel is 1024×768 for a 15″ LCD, and to get 800×600 you'd have to go back to a 10-year-old 14″ CRT monitor or something similar. So in practice the 520K pixel requirement means that everything will fall into the degraded-image category.

(A lot of this OPM stuff seems to come straight from the twilight zone. It's normal to have error codes indicating that there was a disk error or that a network packet got garbled, but I'm sure Windows Vista must be the first OS in history to have error codes for things like “display quality too high”).

Beyond the obvious playback-quality implications of deliberately degraded output, this measure can have serious repercussions in applications where high-quality reproduction of content is vital. Vista's content-protection means that video images of premium content can be subtly altered, and there's no safe way around this — Vista will silently modify displayed content under certain (almost impossible-to-predict in advance) situations discernable only to Vista's built-in content-protection subsystem (Philip Dorrell has created a neat cartoon that illustrates this problem). Microsoft claim that this hidden image manipulation will only affect the portions of the display that contain the protected content, but since no known devices currently implement this “feature” it's hard to say how it'll work out in practice (what happens currently is that Vista just refuses to play premium content rather than downgrading it).

An interesting potential security threat, suggested by Karl Siegemund, occurs when Vista is being used to run a security monitoring system such as a video surveillance system. If it's possible to convince Vista that what it's communicating is premium content, the video (and/or audio) surveillance content will become unavailable, since it's unlikely that a surveillance center will be using DRM-enabled recording devices or monitors. I can just see this as a plot element in Ocean's Fifteen or Mission Impossible Six, “It's OK, their surveillance system is running Vista, we can shut it down with spoofed premium content”.

The silly thing about the industry's obsession with image quality is that repeated studies have shown that what really matters to viewers (rather than what they think matters) is image size and not quality. Sure, if you take the average consumer into a store and put them in front of the latest plasma panel they'll be impressed by the fact that they can count each individual hair in Gandalf's beard, but once he's leaping about wrestling with the balrog this detail becomes lost and the only differentiator is image size. You can find a good discussion of this in The Media Equation by Stanford professors Byron Reeves and Clifford Nass. In one experiment on visual fidelity they showed a film using the best equipment they could get their hands on, and again using a fifth-generation copy on bad tape and poor equipment. There were no differences in users' responses to the two types of images (see the book for more details on this). You can see an example of this effect yourself if you can set up a machine with a CRT and an LCD monitor. Use the CRT monitor for awhile, then switch to the LCD monitor for a minute or two. When you go back to the CRT monitor, does it seem faulty? Did you notice this before you looked over at the LCD monitor?

Photographers have known about this issue for some time because of the pointless megapixel race that camera manufacturers are engaged in (the reason why the race continues is that the masses are under some impression that more pixels = better, so manufacturers are cramming more and more sites onto their sensors with no real effect except for larger file sizes and more image noise due to fewer photons impacting each sensor site). The New York Times ran a great experiment to demonstrate this when they blew up 5 megapixel, 8 megapixel, and 13 megapixel images to poster size and spent 45 minutes asking passers-by to guess which was which. Only one single person, a photography professor (who may have just got lucky), could tell the difference. On the HD media front, the UK's PC Format magazine did a direct pictorial comparison and again couldn't really tell the difference.

Conversely, image size, rather than pixel count, is a huge differentiator: The bigger the better. So in practice a degraded image on a huge VGA monitor (or by extension anything with a lower-quality analog input) will rate better than a non-degraded image on a much smaller LCD monitor, assuming you can find an example of the latter that Vista will actually output an HD image to. Of course convincing consumers of this is another matter.

The image perception problem works in the other direction as well. Even if you do have a true 1080p display (rather than a “1080p compatible” display or some similar weasel-words indicating that what you're actually seeing is a much lower-resolution image), unless the conditions are set up just right (an appropriate viewing distance and display size), you won't be able to tell the difference between a true 1080p image and a much lower-resolution one. Since the real limiting factor is the acuity of human vision and not the resolution of the display, even on a huge 50 inch plasma panel someone with normal eyesight at a standard viewing distance can't distinguish any finer detail than 720p.

In order to prevent the creation of hardware emulators of protected output devices, Vista requires a Hardware Functionality Scan (HFS) that can be used to uniquely fingerprint a hardware device to ensure that it's (probably) genuine. In order to do this, the driver on the host PC performs an operation in the hardware (for example rendering 3D content in a graphics card) that produces a result that's unique to that device type.

In order for this to work, the spec requires that the operational details of the device be kept confidential. Obviously anyone who knows enough about the workings of a device to operate it and to write a third-party driver for it (for example one for an open-source OS, or in general just any non-Windows OS) will also know enough to fake the HFS process. The only way to protect the HFS process therefore is to not release any technical details on the device beyond a minimum required for web site reviews and comparison with other products.

This potential “closing” of the PC's historically open platform is an extremely worrying trend. A quarter of a century ago, IBM made the momentous decision to make their PC an open platform by publishing complete hardware details and allowing anyone to compete on the open market. Many small companies, the traditional garage startup, got their start through this. This openness is what created the PC industry, and the reason why most homes (rather than just a few offices, as had been the case until then) have one or more PCs sitting in a corner somewhere. This seems to be a return to the bad old days of 25 years ago when only privileged insiders were able to participate.

The HFS process has another cost involved with it. Most hardware vendors have (thankfully) moved to unified driver models instead of the plethora of individual drivers that abounded some years ago (in the bad old days it used to be necessary to identify individual device types and download specific drivers for them, something that was more or less impossible for non-geek users). Since HFS requires unique identification and handling of not just each device type (for example each graphics chip) but each variant of each device type (for example each stepping of each graphics chip) to handle the situation where a problem is found with one variation of a device, it's no longer possible to create one-size-fits-all drivers for an entire range of devices like the current Catalyst/Detonator/ForceWare drivers. Every little variation of every device type out there must now be individually accommodated in custom code in order for the HFS process to be fully effective, resulting in a re-balkanisation of drivers that have only just become available in a clean, unified form in the last few years. This is more a concern for device vendors and driver developers than users, since they don't see any of this artifically-created extra complexity. As far as the user is aware it's still a “unified” driver since the internal re-balkanisation isn't visible in the driver bundle (although the “unified” driver suddenly becomes a lot larger). The indirect cost to the user (longer driver development cycles and higher cost) is mostly hidden from them.

If a graphics chip is integrated directly into the motherboard and there's no easy access to the device bus then the need for bus encryption (see Unnecessary CPU Resource Consumption below) is removed. Because the encryption requirement is so onerous, it's quite possible that this means of providing graphics capabilities will suddenly become more popular after the release of Vista. However, this leads to a problem: It's no longer possible to tell if a graphics chip is situated on a plug-in card or attached to the motherboard, since as far as the system is concerned they're both just devices sitting on the AGP/PCIe bus. The solution to this problem is to make the two deliberately incompatible, so that HFS can detect a chip on a plug-in card vs. one on the motherboard. Again, this does nothing more than increase costs and driver complexity.

An even more complex situation occurs with DVI paddle boards, in which the graphics device is on the motherboard but the DVI output is provided through a card that goes into the AGP slot. This means that the graphics device meets the requirements for a non user-accessible bus device (see the section Increased Hardware Costs) but the DVI output portion doesn't. Does this mean that your graphics output gets disabled or not? Either option is unpalatable, because Vista's content-protection design never anticipated such situations.

Further problems occur with audio drivers. To the system, HDMI audio looks like S/PDIF, a deliberate design decision to make handling of drivers easier. In order to provide the ability to disable output, it's necessary to make HDMI codecs deliberately incompatible with S/PDIF codecs, despite the fact that they were specifically designed to appear identical in order to ease driver support and reduce development costs. In fact the Windows Vista logo requirements explicitly state that “HDMI output cannot be shared with an S/PDIF output under any circumstances. All digital outputs must be independent” (reading this part of the logo requirements is another trip into the content-protection twilight zone: In the “Bus Controllers and Ports” section, right under the text telling us that “The requirements defined for controllers and ports emphasize […] industry standards and specifications”, we find the primary Vista requirement for bus controllers, “BUSPORT-0001”, which mandates support for “requirements not specified in the Intel HD Audio specification”.

But wait, there's more! In order to provide the audio channel for HDMI, some manufacturers redirect the not-OK S/PDIF into the OK HDMI. So even if you go out of your way to get premium content-capable hardware, Vista can still disable it even though it's supposed to be approved for premium-content playback.

As other parts of this writeup point out, adding all of this unnecessary overhead and complexity to device drivers costs time and money. The result is that many Vista drivers, particularly for the 64-bit version, are nowhere near ready even after Vista has already been released. There's even a special site set up where people can report which Vista drivers currently work for them, one list for 32-bit Vista drivers and another for 64-bit Vista drivers (note how short the list is for the 64-bit drivers, with major vendors like nVidia being completely absent). Numerous indications I've seen, ranging from public analyses through to private comments from driver developers are that it's going to be about the middle of the year before the drivers for video cards are fully reliable. As of this writing, major vendors like nVidia (graphics) and Creative Labs (sound) still don't have their Vista drivers ready, and other vendors like ATI have resorted to fudging their Vista certification, selling Radeon X1950 graphics cards with no certified drivers but with a “Certified for Windows Vista” label on the box, although nVidia then followed suit, selling their GeForce 8600GTS without a certified driver but with the same “Certified for Windows Vista” label. In fact nVidia only has beta (pre-release) drivers available from its web site (and a pending class-action lawsuit to match, with an accompanying class-action suit against Microsoft for good measure), and when ATI finally released a Vista-certified driver for the X1950, it crashed Vista and would only work reliably in basic VGA mode, circa 1987. Even large companies like Dell and Gateway are admitting that Vista's graphics drivers just aren't ready yet, resulting in them holding back shipping Vista upgrades to people who have already ordered (and paid for) them. For example you can't buy Dell's top-of-the-line XPS 710 PC with Vista installed because there are no graphics drivers for it.

An additional reason for the driver backlog is that 64-bit versions of Vista (which will be displacing the 32-bit versions within the next few years as everyone moves to 64-bit platforms) will only load drivers signed by Microsoft (there's a special debug mode invoked by hitting F8 on boot or using the /TESTSIGN flag that allows you to load unsigned drivers on a one-off basis for debugging purposes, but this gets disabled again at the next reboot, and, if you haven't already guessed it, premium content playback is disabled completely in this mode). This means that no drivers that potentially threaten premium content can be loaded. A downside of this is that an enormous mass of third-party drivers that haven't passed through Microsoft's approval process can't be used under 64-bit Vista, and because of the time and money involved in the approval process may never end up running under Vista. In any case a mere month or so after Vista was released, Indian security researchers at NV Labs released details of their Vbootkit, a pre-loader that allows unsigned (and therefore completely untrusted) drivers to be loaded into the Vista kernel. At about the same time NT kernel developer Alex Ionescu created a simple command-line tool to de-protect Windows Vista's “protected” processes, complete with a screenshot of Vista's audio content-protection process being unprotected. So the whole driver-signing process-protection effort survived for just over a month in the real world, and now remains as a serious impediment to legitimate driver vendors but little more than a speedbump to attackers.

Why is this a problem? Because the vast majority of drivers running on PCs today aren't signed, not so much because the developers couldn't be bothered but because the WHQL process that produces the signed drivers is so slow that they're obsolete by the time they've been approved by Microsoft (and even some of the WHQL-certified ones are still pretty flaky). As a result, vendors supply current but unsigned drivers, a practice so widespread that instructions on bypassing the warning dialog that pops up are a standard part of most device install instructions (you can use Google to find endless examples of the use of unsigned drivers. One quick example of a large, well-known vendor doing this is AGFA). Almost the entire PC industry relies on users clicking Continue in response to the unsigned-driver warning so that the driver can load anyway. This situation is so common that you'll see it written up in computer books and covered in Windows install guides. At the moment the problem with unsigned drivers isn't too visible as people seem to be avoiding 64-bit Vista because of the driver issues, but the inability to load drivers that haven't been through Microsoft's approval process is likely to become a serious headache when its use becomes more widespread. At some point something will have to give in order for Vista to have viable 64-bit driver support. It remains to be seen whether content protection or device support will prove the bigger hammer in this tug-of-war.

Having said that, Vista isn't the only OS that's being hurt by short-sighted decisions about driver handling. The Linux community has a strong lobby in favour of refusing to load non-GPL'd drivers into the kernel, a process that one commentator calls "DRM for code".

Once a weakness is found in a particular driver or device, that driver will have its signature revoked by Microsoft, which means that it will no longer be fed anything considered to be premium content. What this means is that a report of a compromise of a particular driver or device will cause all premium content-handling ability for that device worldwide to be turned off until a fix can be found. To quote the content-protection specs, “Vista will […] revoke any driver that is found to be leaking premium content […] if the same driver is used for all the manufacturer's chip designs, then a revocation would cause all that company's products to need a new driver”. If it's an older device for which the vendor isn't interested in rewriting their drivers (and in the fast-moving hardware market most devices enter “legacy” status within a year or two of their replacement models becoming available), all devices of that type worldwide become permanently unable to handle premium content.

An example of this might be nVidia TNT2 video cards, which are still very widely deployed in business environments where they're all that you need to run Word or Outlook or Excel (or, for that matter, pretty much any non-gaming application). The drivers for these cards haven't been updated for quite some time for exactly that reason: You don't need the latest drivers for them because they're not useful with current games any more (if you go to the nVidia site and try and install any recent drivers, the installer will tell you to go back and download much older drivers instead as soon as it detects that you're using a TNT2). If a such a device were found to be leaking content, it seems unlikely that nVidia would be interested in reviving discontinued drivers that it hasn't touched for several years, creating instant orphanware of the installed user base.

The threat of driver revocation is the ultimate nuclear option, the crack of the commissars' pistols reminding the faithful of their duty. The exact details of the hammer that vendors will be hit with is buried in confidential licensing agreements, but I've heard mention of multi-million dollar fines and embargoes on further shipment of devices alongside the driver revocation mentioned above.

This revocation can have unforeseen carry-on costs. Windows' anti-piracy component, WGA (or in Vista's case its successor Software Protection Platform, SPP), is tied to system hardware components. Windows allows you to make a small number of system hardware changes after which you need to renew your Windows license (the exact details of what you can and can't get away with changing has been the subject of much debate). If a particular piece of hardware is affected by a driver revocation (even just temporarily while waiting for an updated driver to work around a content leak) and you swap in a different video card or sound card to avoid the problem, you risk triggering Windows' anti-piracy measures, landing you in even more hot water. If you're forced to swap out a major system component like a motherboard, you've instantly failed WGA validation. Revocation of any kind of motherboard-integrated device (practically every motherboard has some form of onboard audio, and all of the cheaper ones have integrated video) would appear to have a serious negative interaction with Windows' anti-piracy measures.

Another unforeseen consequence of the potential for a downgrade disguised as an upgrade (that is, a driver being revoked by Windows Update) is that the whole process of updating your machine is supposed to provide benefits to the user in the form of enhanced functionality or, more pragmatically, bugfixes and security patches. Since malware attacks are invisible but a loss of playback capability isn't, if the only visible effect of an update is to reduce system functionality it incentivises users to disable updates in order to avoid this issue. The unfortunate hidden side-effect of this is that in the interests of protecting themselves from having their content-playback capabilities turned off, they're now vulnerable to all manner of malware, viruses, spyware, and so on.

The details of what will happen if a motherboard contains unused onboard audio capabilities and an additional sound card alongside it, and the motherboard drivers are revoked, is unknown. Windows can't tell that there's nothing connected to the cheap onboard audio because the user prefers to use their M-Audio Revolution 7.1 Surround Sound card instead, so it'll probably have to revoke the motherboard drivers even though they're not used for anything. Since virtually all motherboards contain onboard audio in some form, this could prove quite problematic.

An entirely different DoS problem that applies more to HDMI-enabled devices in general has already surfaced in the form of, uhh, “DVI amplifiers”, which take as input an HDMI signal and output a DVI signal, amplifying it in the process. Oh, and as a side-effect they forget to re-apply the HDCP protection to the output. Amusingly enough, precisely this approach has been recommended by a Westinghouse (large US TV manufacturer) VP of Marketing to resolve problems with Sony's interpretation of HDCP in the Playstation 3 and Westinghouse's interpretation in their 1080p televisions, who told consumers to “purchase an HDMI to DVI adapter to bypass HDCP”. The hardware vendors seem to have come to the same conclusion about content protection as the computer in Wargames did about global thermonuclear war: “A strange game. The only winning move is not to play”.

HDCP strippers are relatively simple to design and build using off-the-shelf HDMI chips. Beyond the commercially-available models, individual hardware hackers have built their own protection-strippers using chip samples obtained from chip vendors. If you have the right credentials you can even get hardware evaluation boards designed for testing and development that do this sort of thing. Even more accessible than that are HD players with non-HDMI digital outputs, for example ones that contain an HD-SDI (SMPTE 292M) interface. HD-SDI is an unencrypted digital link typically used in TV studios but also available from various non-US sources as after-market sidegrades for standard HD players, providing better-than-HDMI image quality without the hassle of HDCP.

Now assume that the “DVI amplifier” manufacturer buys a truckload of HDMI chips (they'll want to get as many as they can in one go because they probably won't be able to go back and buy more when the chip vendor discovers what they're being used for). Since this is a rogue device, it can be revoked… along with hundreds of thousands or even millions of other consumer devices that use the same chip. If they're feeling particularly nasty, they can recycle the HDMI chips from junked TVs to ensure that the maximum possible damage to the consumer base occurs. This cannibalisation process is actually fairly common among TV servicemen. When a major component like the picture tube or yoke (which is often only sold as an integral part of the picture tube) fails, it's often not worth repairing the TV any more, at which point it gains a second life as a source of spare parts for other TVs. In particular components like the jungle IC (which integrates a large amount of discrete circuitry into a single device) can cost as much as $50-100 to replace, so it makes sense to recycle some of the parts rather than buy new ones, particularly when it's not obvious whether this is the problem component in a set brought in for repair. Lifting an HDMI chip from such a TV set isn't nearly as exotic as it sounds. Engadget have a good overview of the ensuing doomsday scenario.

Exactly what will happen when a key is leaked depends on how the attackers handle it. The way HD-DVD/Blu-Ray keying works is that a per-device key is used to decrypt the title key on the disk, and the title key is then in turn used to decrypt the content. So the chain of custody is Device key ⇒ Title key ⇒ Content. This level of indirection allows an individual device to be disabled by revoking the device key without making the disk unplayable on all devices, since other device keys can still decrypt the title key and thus the content (I've simplified this a bit to cut down the length of the explanation, see the AACS specification for more details).

The device key is tied to a particular device/player/vendor, but the title key is only tied to the content on disk. You can probably see where this is going… by publishing the device key, the attacker can cause general mayhem by forcing device revocation. On the other hand by publishing the title key the attacker can release the content in an untraceable manner, since it's not known which device key was used to leak the title key. In addition since there's no way to un-publish the title key (encrypted content + title key = unencrypted content), at that point it's game over for the content.

(Finding the manifold holes in these content-protection mechanisms has proven an interesting intellectual exercise, first for security researchers and more recently for hardware and software hackers of all kinds. Some of the public attacks are described elsewhere in this writeup, and in particular the various AACS key recovery attacks have made most other types of attack unnecessary since once you have the keys to the kingdom everything else becomes pretty much irrelevant. The high level of key management flexibility built into AACS may make for a nice dog-and-pony show when describing its capabilities, but adding too many levels of indirection means that once an attacker gets into certain levels of the chain, their access can never be revoked any more. This presents a rather interesting object lesson in crypto design. Although the mass of keying options and multiple levels of indirection provide a great deal of flexibility and functionality for the designers of the crypto mechanisms, they provide just as much flexibility for the attacker. Specifically, there's a nice pick-and-mix capability where an attacker can choose to publish the player key, which unlocks all movies but can be traced and disabled, or they can choose to publish the title key for one particular movie, which unlocks only that movie but can't be traced back to a revocable player. This highly flexible keying system probably serves the attacker better than it does the defender!

Since the following is no longer of much interest to an attacker because universal attacks already exist, I may as well mention my reaction to reading about the details of the AACS revocation process, which was that the threat modelling was done pretty poorly, leaving it vulnerable to attack. The way the revocation processing works is that the player implements a high-water mark mechanism to avoid someone feeding in an old revocation list that doesn't contain the key(s) to be revoked. This is implemented via a monotonically increasing counter in the key block (referred to as a “version number ” in the AACS spec). Players will ignore any list with a counter value smaller than one they've already seen, this preventing key rollback attacks.

So to immunise a player against ever processing another revocation list, you need to feed it a list with a counter value of INT_MAX, the largest possible integer value. Since nothing can exceed this, no future revocation lists will be processed by the player, and no matter how hacked it is, your player will never be revoked. Here's how you do this.

The lists are digitally signed, so you need a way to get around the signature on the data. To do this you hook the system's file read function using any one of a vast number of standard rootkit techniques, an example being a filesystem filter driver that intercepts file access IRPs. When the system reads the media key block file, you use VirtualProtect() to make the second 4K of data (corresponding to an x86 page) a guard page. Then you sit back and wait.

At some point the AACS verification code will check the digital signature on the data. Once the hashing gets to the second x86 page, the guard page exception will trigger and you'll be handed over control. Your exception handler then goes back 4K - 8 bytes from the exception location, sets the value there to INT_MAX, and returns from the exception. You now have a verified digital signature on a media key record with a counter value of INT_MAX, and your player (which carefully records the information in secure non-volatile storage) is immunised against any future revocations, since they'll all have a value less than INT_MAX. QED.

A simpler approach that's already being used is just to patch the drive firmware to bypass the check).

“Drivers must be extra-robust. Requires additional driver development to isolate and protect sensitive code paths” — ATI.

Vista's content protection requires that devices (hardware and software drivers) set so-called “tilt bits” if they detect anything unusual. For example if there are unusual voltage fluctuations, maybe some jitter on bus signals, a slightly funny return code from a function call, a device register that doesn't contain quite the value that was expected, or anything similar, a tilt bit gets set. Such occurrences aren't too uncommon in a typical computer. For example starting up or plugging in a bus-powered device may cause a small glitch in power supply voltages, or drivers may not quite manage device state as precisely as they think. Previously this was no problem — the system was designed with a bit of resilience, and things will function as normal. In other words small variances in performance are a normal part of system functioning. Furthermore, the degree of variance can differ widely across systems, with some handling large changes in system parameters and others only small ones. One very obvious way to observe this is what happens when a bunch of PCs get hit by a momentary power outage. Effects will vary from powering down, to various types of crash, to nothing at all, all triggered by exactly the same external event.

With the introduction of tilt bits, all of this designed-in resilience is gone. Every little (normally unnoticeable) glitch is suddenly surfaced because it could be a sign of a hack attack, with the required reaction being that (from the spec) “Windows Vista will initiate a full reset of the graphics subsystem, so everything will restart”. According to Microsoft this will only take a few seconds and will only affect the graphics subsystem (so it's not a complete restart of Vista), but the true impact of this mechanism remains to be seen. In addition even if it's relatively quick, systems with high availability requirements probably won't appreciate the overhead of periodic soft-reboots of the graphics subsystem. So the effect that these tilt bits will have on system reliability should require no further explanation.

Content-protection “features” like tilt bits also have worrying denial-of-service (DoS) implications. It's probably a good thing that modern malware is created by programmers with the commercial interests of the phishing and spam industries in mind rather than just creating as much havoc as possible. With the number of easily-accessible grenade pins that Vista's content protection provides, any piece of malware that decides to pull a few of them will cause considerable damage. The homeland security implications of this seem quite serious, since a tiny, easily-hidden piece of malware would be enough to render a machine unusably unstable, while the very nature of Vista's content protection would make it almost impossible to determine why the denial-of-service is occurring. Furthermore, the malware authors, who are taking advantage of “content-protection” features, could claim protection under the DMCA against any attempts to reverse-engineer or disable the content-protection “features” that they're abusing.

Going beyond deliberate denial-of-service attacks, it's possible to imagine all sorts of scenarios in which the tilt bits end up biting users. Consider a warship operating in a combat zone and equipped with Vista PCs for management of the vessel's critical functions that does nothing more wrong that to suffer a severe jolt from a near miss, scrambling the bus just enough to activate the tilt bits (without causing any other real damage). In one infamous incident in September 1997, Windows NT managed to disable the Aegis missile cruiser USS Yorktown (“NT Leaves Navy 'Smart Ship' dead in the water”, Government Computer News, 13 July 1998). Now Windows Vista can do the same thing via a by-design feature of the OS [Note H]. This issue, unless it can be clearly resolved, would make the use of Vista PCs unacceptable for any applications that have any hint of unusual environmental conditions such as high altitude, environmental variations, shock, and so on.

Some contributors have commented that they can't see the revocation system ever being used because the consumer backlash would be too enormous, but then the legal backlash from not going ahead could be equally extreme. The only real indication that we have for how committed Microsoft really are to this is the amazing speed with which Microsoft released a patch for the WMDRM (Windows Media DRM) vulnerability, which they rushed out at a speed that even the most virulent worm never produced. This would seem to indicate that they're pretty serious about this, since they prioritised it above any conventional non-DRM-related security problem.

Can these protection mechanisms be inadvertently triggered? There's plenty of real-world evidence to show that this happens all the time. One example that I recently encountered in my friends-and-neighbours computer support work involved a retired filmmaker who has a 50-year collection of educational films made for teaching in schools. Recently he's been transferring his entire collection to DVD to make them more accessible to newer audiences. Unfortunately some component of Windows' content-protection has decided that some protection requirement isn't being met somewhere, and as a result 50 years of educational film-making have been reduced to an error message indicating that Macrovision can't be enabled and therefore the content can't be played. Since it plays just fine on a variety of non-Windows platforms including a range of standard DVD players, it's not a problem with the DVDs but is due to the malfunctioning of a Windows content-protection mechanism around a technology called Macrovision.

Macrovision is a basic analog signal-protection technique that's applied to TV-out ports on computer video cards. Strangely, his computer doesn't actually have any TV-out capability. What it does have is a video chipset that, in theory, can provide TV-out (most video chipsets have this capability, but it's only used on some types of video cards, see the section Increased Hardware Costs for details on their use in different variations of video cards). However, since no actual TV-out capability exists, it's not possible to enable Macrovision for it. This leads to a farcical situation where Windows is prohibiting playback due to the absence of copy protection on a nonexistent output (here's one of many examples of other users running into the same problem). As a result, in the name of content protection, the film-maker is prevented from playing back his own content!

This isn't just an isolated incident. A quick Google search of the error message that comes up reveals thousands upon thousands of users that have encountered this very problem, and this in turn is merely the tip of the iceberg, since few of those affected — home users wanting to play back movies — will have enough know-how to seek out the far-flung technical forums where this is being discussed (to get a better estimate of the number of affected users you need to make multiple searches using variations of the error message since it's reported in a variety of different ways, the single search link above is just one example). In any event even if they do get this far, it's a pointless effort because there's no known solution to the problem (although random poking around like wiping the computer clean and reinstalling Windows has reportedly helped in some cases).

This in turn is just one single way in which Windows' content-protection can malfunction. A Google search for various other playback-prevention error messages (here's one example of such a message) reveals further unfortunate communities of users united by the fact that they've been prevented from viewing legitimate content by malfunctioning Windows content protection.

“Cannot go to market until it works to specification… potentially more respins of hardware” — ATI.

“This increases motherboard design costs, increases lead times, and reduces OEM configuration flexibility. This cost is passed on to purchasers of multimedia PCs and may delay availability of high-performance platforms ” — ATI.

Vista includes various requirements for “robustness” in which the content industry, through “hardware robustness rules”, dictates design requirements to hardware manufacturers. The level of control that the content producers have over technical design details is nothing short of amazing. As security researcher Ed Felten quoted from Microsoft documents on his freedom-to-tinker web site about a year ago:

“The evidence [of security] must be presented to Hollywood and other content owners, and they must agree that it provides the required level of security. Written proof from at least three of the major Hollywood studios is required”.

So if you design a new security system, you can't get it supported in Windows Vista until well-known computer security experts like MGM, 20th Century-Fox, and Disney give you the go-ahead (this gives a whole new meaning to the term “Mickey-Mouse security”). It's absolutely astonishing to find paragraphs like this in what are supposed to be Windows technical documents, since it gives Hollywood studios veto rights over Windows security mechanisms.

As an example of these “robustness rules”, only certain layouts of a board are allowed in order to make it harder for outsiders to access parts of the board. Possibly for the first time ever, computer design is being dictated not by electronic design rules, physical layout requirements, and thermal issues, but by the wishes of the content industry. Apart from the massive headache that this poses to device manufacturers, it also imposes additional increased costs beyond the ones incurred simply by having to lay out board designs in a suboptimal manner. Video card manufacturers typically produce a one-size-fits-all design (often a minimally-altered copy of the chipset vendor's reference design, as illustrated by one product review that shows five virtually identical cards from different vendors with the only noticeable difference being the logo on the heatsink), and then populate different classes and price levels of cards in different ways. For example a low-end card will have low-cost, minimal or absent TV-out encoders, DVI circuitry, RAMDACs, and various other add-ons used to differentiate budget from premium video cards. You can see this on the cheaper cards by observing the unpopulated bond pads on circuit boards, and gamers and the like will be familiar with cut-a-trace/resolder-a-resistor sidegrades of video cards.

An example of omitting components from a high-end card to create a mid-range card clearly shows the large red rectangular area to the far left of the card, which is where the manufacturer has omitted a component to produce a lower- cost model. The same thing is visible in another card. Conversely, an (at the time it was released) top-of-the-line card with optional components fitted shows an additional chip to the left of the large square heatsink+fan that handles video encoding and can be added or removed (along with other optional components) to create different levels of cards at different price points. The automotive industry does the same thing, you have one basic model of each car type and 10,000 extras and options to suit everyone's needs and pockets.

In some cases the addition of extra circuitry isn't merely a convenient price-differentiation mechanism but is required for the device to function. Most newer video cards have dual video outputs, and the higher-end ones tend to have dual-DVI out. However, many devices only provide a single TMDS (Transition Minimized Differential Signaling, a high-speed serial data format) output for DVI signalling. The second output is provided by a DVO (Digital Video Out, not to be confused with Intel's similarly-named SVDO) port in combination with an external TMDS transmitter. In addition some high-resolution displays require multiple DVI/TMDS links because single-channel DVI doesn't have enough bandwidth to support very high resolutions, requiring external TMDS transmitters. You can see this in the first image on a review of Macintosh video cards, which shows the dual-link DVI output used to drive Apple's 30″ Cinema Display (this actually requires two dual-link TMDS transmitters to support a second display, but I'll spare you the technical details of that one). The important point in all of this is the phrase “external TMDS transmitter”, none of which meet the robustness requirements since they have direct access to the high-quality digital signal. Perversely enough, it's mostly the high-resolution displays advertised as suitable for HD content that require the external TMDS circuitry that makes them unable to meet the robustness requirements.

This problem is a nasty catch-22 from which there's no escape. In theory it would be possible to add a DVI-to-HDMI (with HDCP) encoder to bypass this (a typical example would be the Silicon Image Sil139x or Sil193x devices, which were specifically designed for this application. Silicon Image TMDS transmitters are widely used on graphics cards), but HDMI doesn't have the bandwidth to carry the high-definition images that the Cinema Display provides. Even without explicit image degradation via constriction, the requirement to use the lower-quality HDMI link to carry what should be a DVI signal means that image quality is lost, and to make it even more painful the resulting graphics cards will be more expensive because it costs extra to add the quality-downgrading HDMI transmitter. In other words consumers will be paying extra in order to get a lower-quality image.

Even with lower-resolution monitors, the fact that the data signal is present in unprotected form when it enters the external encoder means that it probably won't meet the robustness requirements. (Exactly how this is meant to work is unspecified in any documentation that I've been able to get my hands on. It appears to be close to impossible to output a content-provider approved protected signal from a PC while also meeting the robustness requirements).

Vista's content-protection requirements eliminate the ability to accomodate different feature sets in a one-size-fits-all design, banning the use of separate TV-out encoders, DVI circuitry, RAMDACs, and other discretionary add-ons because feeding unprotected video to these optional external components would make it too easy to lift the signal off the bus leading to the external component. So everything has to be custom-designed and laid out so that there are no unnecessary accessible signal links on the board. This means that a low-cost card isn't just a high-cost card with components omitted, and conversely a high-cost card isn't just a low-cost card with additional discretionary components added, each one has to be a completely custom design created to ensure that no signal on the board is accessible.

This extends beyond simple board design all the way down to chip design. Instead of adding an external DVI/TMDS chip, it now has to be integrated into the graphics chip, along with any other functionality normally supplied by an external device. So instead of varying video card cost based on optional components, the chipset vendor now has to integrate everything into a one-size-fits-all premium-featured graphics chip, even if all the user wants is a budget card for their kid's PC (although given the popularity of graphics-intensive computer games, it's more likely that they'd be getting the budget card for their own PC).

A further example of external meddling in hardware vendors' product development and distribution can be found in the document that specifies what happens when a product is compromised in some way even though it's previously been found to be fully compliant with the robustness requirements:

“Company shall promptly redesign the affected product […] if such redesign is not possible or practical, cease manufacturing and selling such product”.

This indicates that no matter how much dedication you show to the party line, it still won't help you when the chips are down. Some years ago a friend of mine was working for a company that was building a custom IT solution for a government department. When the day came time to sign off on it, everyone in the entire department who had signing authority called in sick rather than end up being the one who put their name to it. I can just imagine the corporate sick day that must have taken place at ATI, nVidia, Intel, VIA, and SiS when it came time to put someone's name to this gem, which gives Hollywood veto rights over your production lines and sales and distribution channels.

“We've taken on more legal costs in copyright protection in the last six to eight months than we have in any previous engagement. Each legal contract sets a new precedent, and each new one builds on the previous one” — ATI.

Protecting all of this precious premium content requires a lot of additional technology. Unfortunately much of this is owned by third parties and requires additional licensing. For example HDCP for HDMI is owned by Intel, so in order to send a signal over HDMI you have to pay royalties to Intel even though you could do exactly the same thing for free over DVI (actually you could do it better, since DVI provides a higher-quality link than HDMI). Similarly, since even AES-128 on a modern CPU isn't fast enough to encrypt high-bandwidth content, companies are required to license the Intel-owned Cascaded Cipher, an AES-128-based transform that's designed to offer a generally similar level of security but with less processing overhead.

The need to obtain unnecessary technology licenses extends beyond basic hardware IP. In order to demonstrate their commitment to the cause, Microsoft have recommended as part of their “robustness rules” that vendors license third-party code obfuscation tools to provide virus-like stealth capabilities for their device drivers in order to make it difficult to interfere with their operation or to reverse-engineer them (for example the spec requires “use of techniques of obfuscation to disguise and hamper attempts to discover the approaches used”). Vendors like Cloakware and Arxan have actually added “robustness solutions” web pages to their sites in anticipation of this lucrative market. This must be a nightmare for device vendors, for whom it's already enough of a task getting fully functional drivers deployed without having to deal with adding stealth-virus-like technology on top of the basic driver functionality. In fact the sorry state of some of Vista's still-not-finished-yet graphics drivers have already prompted a class-action lawsuit against nVidia for deceptive advertising because many devices using nVidia hardware and advertised as “Vista Ready” don't actually work because the drivers aren't ready (the situation with 64-bit drivers, ostensibly a major reason for switching to Vista in the first place, is particularly dire).

The robustness rules further complicate driver support by disallowing features such as driver debugging facilities in shipping drivers. Most Windows XP users will at one time or another have encountered a Windows crash message indicating that some application that they were using has terminated unexpectedly and would they like to send debugging information to Microsoft to help fix the problem. Some device vendors even implement their own custom versions of this debugging support in their drivers, an example being ATI's VPU Recover, which captures graphics diagnostic and debugging information to send to ATI when a graphics device problem occurs. Since this debugging functionality could leak content or content-related security information, it can no longer be used with audio or video components, considerably complicating vendors' driver support and software enhancement processes (the ATI product manager referenced in the Sources section lists these additional testing and support costs as “potentially the highest cost of all”).

“Since [encryption] uses CPU cycles, an OEM may have to bump the speed grade on the CPU to maintain equivalent multimedia performance. This cost is passed on to purchasers of multimedia PCs” — ATI.

In order to prevent tampering with in-system communications, all communication flows have to be encrypted and/or authenticated. For example content sent to video devices has to be encrypted with AES-128. This requirement for cryptography extends beyond basic content encryption to encompass not just data flowing over various buses but also command and control data flowing between software components. For example communications between user-mode and kernel-mode components are authenticated with OMAC message authentication-code tags, at considerable cost to both ends of the connection. The initial crypto handshake is:

driver -> application: cert + nonce application -> driver: RSA-OAEP-SHA512( nonce || key || seqNo1 || seqNo2 )

In this step the driver supplies its certificate to the calling application via DxgkDdiOPMGetCertificate() and a 128-bit nonce via DxgkDdiOPMGetRandomNumber() . This is either a COPP or an OPM certificate, with COPP being the older Windows XP content protection and OPM being the newer Windows Vista one. There's also a third type of fleur-de-lis certificate that the driver uses if it has a UAB (User-Accessible Bus). The certificates contain a 2048-bit RSA key which is used to encrypt a 40-byte payload containing the nonce provided by the driver, a 128-bit session key, and two 32-bit initial sequence numbers (they start at random values), the first number is for status messages via DxgkDdiOPMGetInformation() and the second for command messages via DxgkDdiOPMConfigureProtectedOutput() .

Once the keys are set up, each function call is:

in = OMAC( nonce || seqNo || data ) out = OMAC( nonce || seqNo || data )

(I've used conventional bits-on-the-wire notation for this, the values are actually fields in a structure so for example the sequence number is provided in the ulSequenceNumber member) . This is very similar to the protocol used in SSL or SSH (in practice some steps like cipher suite negotiation are omitted, since there's a hardcoded set of ciphers used). Finding SSL being run inside a PC from one software module to another is just weird.

Needless to say, this extremely CPU-intensive mechanism is a very painful way to provide protection for content, and this fact has been known for many years. Twenty years ago, in their work on the ABYSS security module, IBM researchers concluded that the use of encrypted buses as a protection mechanism was impractical.

In order to prevent active attacks, device drivers are required to poll the underlying hardware every 30ms for digital outputs and every 150 ms for analog ones to ensure that everything appears kosher. This means that even with nothing else happening in the system, a mass of assorted drivers has to wake up thirty times a second just to ensure that… nothing continues to happen (commenting on this mechanism, Leo Laporte in his Security Now podcast with Steve Gibson calls Vista “an operating system that is insanely paranoid”). In addition to this polling, further device-specific polling is also done, for example Vista polls video devices on each video frame displayed in order to check that all of the grenade pins (tilt bits) are still as they should be. We already have multiple reports from Vista reviewers of playback problems with video and audio content, with video frames dropped and audio stuttering even on high-end systems [Note I]. Time will tell whether this problem is due to immature drivers or has been caused by the overhead imposed by Vista's content protection mechanisms interfering with playback.

An indication of the level of complexity added to the software can be seen by looking at a block diagram of Vista's Media Interoperability Gateway (MIG). Of the eleven components that make up the MIG, only two (the audio and video decoders) are actually used to render content. The remaining nine are used to apply content-protection measures.

Even more radical approaches to content protection can be found in Microsoft research papers, which indicate areas that Microsoft are looking at for future work. For example the ASPLOS X paper Enabling Trusted Software Integrity proposes a system whereby content-playback mechanisms are protected by adding encrypted constraints into each basic instruction block that prevent the code from acting in anything other than an extremely constrained way. This goes beyond simple code signing in that each basic code block contains a cryptographic hash that special hardware (around 20K gates on a simple RISC CPU, but far more for a more complex x86 one) added to the processor's instruction unit recalculates on the fly for each basic block of code before it's executed to ensure that nothing other than the originally authorised instruction flow is executed. The content-playback software is node-locked to a CPU on install, a special process that involves the processor running in single-user mode with virtual memory, context switches, and all interrupts disabled (this special operation mode is only required for the initial install step, not during normal playback). With various optimisations applied, typical content-processing operations like MPEG and JPEG encode or decode take a 10-20% performance hit.

On-board graphics create an additional problem because blocks of precious content will end up stored in system memory, from where they could be paged out to disk. In order to avoid this, Vista tags such pages with a special protection bit indicating that they need to be encrypted before being paged out and decrypted again after being paged in. Vista doesn't provide any other pagefile encryption, and will quite happily page banking PINs, credit card details, private, personal data, and other sensitive information, in plaintext. The content-protection requirements make it fairly clear that in Microsoft's eyes a frame of premium content is worth more than (say) a user's medical records or their banking PIN [Note J].

In fact, Microsoft is imposing a higher standard of security for premium content than what's been required in the past for any known secure computing initiative proposed for protecting data classified at TOP SECRET or TS/SCI levels (the closest that anything came to what's required in Vista was the LOCK kernel with SIDEARM and BED coprocessors (PDF link), which didn't go as far as the Vista requirements and after 17 years of development effort was a commercial failure to boot). Just to make this point clear, the level of security that Vista is trying to achieve to protect video and audio is more extreme than anything the US government has ever considered necessary for protecting its most sensitive classified data.

In addition to the CPU costs, the desire to render data inaccessible at any level means that video decompression can't be done in the CPU any more, since there isn't sufficient CPU power available to both decompress the video and encrypt the resulting uncompressed data stream to the video card. As a result, much of the decompression has to be integrated into the graphics chip. At a minimum this includes IDCT, MPEG motion compensation, and the Windows Media VC-1 codec (which is also DCT-based, so support via an IDCT core is fairly easy). As a corollary to the Increased Hardware Costs problem above, this means that you can't ship a low-end graphics chip without video codec support any more.

The inability to perform decoding in software also means that any premium-content compression scheme not supported by the graphics hardware can't be implemented. If things like the Ogg video codec ever eventuate and get used for premium content, they had better be done using something like Windows Media VC-1 or they'll be a non-starter under Vista or Vista-approved hardware. This is particularly troubling for the high-quality digital cinema (D-Cinema) specification, which uses Motion JPEG2000 (MJ2K) because standard MPEG and equivalents don't provide sufficient image quality. Since JPEG2000 uses wavelet-based compression rather than MPEG's DCT-based compression, and wavelet-based compression isn't on the hardware codec list, it's not possible to play back D-Cinema premium content (the moribund Ogg Tarkin codec also used wavelet-based compression). Because all D-Cinema content will (presumably) be premium content, the result is no playback at all until the hardware support appears in PCs at some indeterminate point in the future. Compare this to the situation with MPEG video, where early software codecs like the XingMPEG en/decoder practically created the market for PC video. Today, thanks to Vista's content protection, the opening up of new markets in this manner would be impossible.

This extra overhead carries a heavy cost for the typical user. It's not uncommon to find PCs so infested with malware (spyware, viruses, trojans, bots, and so on) that they can barely perform their normal tasks, let alone handle the overhead of content protection (depending on whose surveys you believe, the typical Internet-connected PC averages 20-30 pieces of malware). Despite the fact that, on paper, they may have plenty of system resources to throw around for content protection, in practice the overhead of hosting an entire zoo of malware means that any added overhead due to content protection renders them more or less unusable for content playback (while users don't seem to mind waiting around for their botnet-hosting PC to open a Word document, they'll be less happy when it drops frames or produces stuttering audio output).

Looking at this from the point of view of the high-end rather than the average user, the problem is rather different. The high-end graphics and audio market are dominated entirely by gamers, who will do anything to gain the tiniest bit of extra performance, like buying Bigfoot Networks' $250 “Killer NIC” ethernet card in the hope that it'll help reduce their network latency by a few milliseconds. These are people buying $500-$1000 graphics and sound cards for which one single sale brings the device vendors more than the few cents they get from the video/audio portion of an entire roomful of integrated-graphics-and-sound PCs. I wonder how this market segment will react to knowing that their top-of-the-line hardware is being hamstrung by all of the content-protection “features” that Vista hogties it with?

“Compliance rules require [content] to be encrypted. This requires additional encryption/decryption logic thus adding to VPU costs. This cost is passed on to all consumers” — ATI.

As part of the bus-protection scheme, devices are required to implement AES-128 encryption in order to receive content from Vista. This has to be done via a hardware decryption engine on the graphics chip, which would typically be implemented by throwing away a GPU rendering pipeline or two to make room for the AES engine (nVidia did this in their low-end G84 variant of the G80 GPU, while saving the G80's silicon for as many rendering pipelines (well, technically speaking they're stream processors now) as they can fit. Discarding GPU features to make way for content-protection hardware seems a sub-optimal business model for graphics device vendors.

Establishing the AES key with the device hardware requires further cryptographic overhead, in this case a 2048-bit Diffie-Hellman key exchange whose 2K-bit output is converted to a 128-bit AES key via a Davies-Meyer hash with AES as its block transformation component. In programmable devices this can be done (with considerable effort) in the device (for example in programmable shader hardware), or more simply by throwing out a few more rendering pipelines and implementing a public-key-cryptography engine in the freed-up space.

Needless to say, the need to develop, test, and integrate encryption engines into audio/video devices will only add to their cost, as covered in Increased Hardware Costs above, and the fact that they're losing precious performance in order to accommodate Vista's content protection will make gamers less than happy.

The burden that the content-protection overhead places on resources is even more severe for portable, battery-powered devices. As a CNET review of portable devices found, “DRM not only slows down an MP3 player but also sucks the very life out of them”, with the extra overhead of processing DRM'd content shortening the battery life by about 25% across a whole range of products. This burden extends beyond DRM'd music into games as well. For example the content-protected version of the game Flatout 2 runs 15% slower than the same game without content protection.

In the introduction, I predicted that Vista's content protection, the entire mass of complex and troublesome technology covered in this writeup, would last less than a week once the hackers got hold of it. Sure enough, shortly after Vista's release, it was broken by an individual who was annoyed by the fact that he couldn't play back his legitimately-purchased HD-DVDs on his legitimately-purchased HD-DVD player (technically what he broke was the AACS content protection rather than mounting a direct attack on Vista, but the end result is that premium content under Vista is now unlocked). In a sort of re-run of the DeCSS/Xing player story from a few years, someone going by the name of muslix64 appears to have figured out how to extract HD-DVD and Blu-Ray keys from the PowerDVD player software, allowing all(?) HD disk content to be decrypted and played back on any HD display, without content-protection measures getting in the way. The manufacturers of PowerDVD claim that they've done nothing wrong and won't be updating the player, and muslix64 says that “they [players] are all vulnerable [to a] different extent”. This was indirectly confirmed in April 2007 when the WinDVD player apparently had its keys revoked, requiring that users download and install, an, uh, “security update” to re-enable the DRM.

As a result, both HD-DVD and Blu-Ray content can now be decrypted and played without image downgrading or blocking by the OS, and unprotected content is already appearing in the usual locations like BitTorrent streams. The fact that the legally-purchased content wouldn't play on a legally-purchased player because the content protection got in the way was the motivating factor for the crack. The time taken was about a week. As a result, all of the content-protection technology (at least for HD-DVDs and Blu-Ray discs) is rendered useless. All that remains is the burden to the consumer. It lasted all of one week.

If you want to read more about the AACS crack and its potential repercussions, Ed Felten has a long and detailed analysis in his Freedom to Tinker blog. TLS security person Eric Rescorla has looked at this a bit further and concluded that this problem is more or less unfixable as long as software players exist. A side-effect is that if the content owners decide to address this by revoking the players, it affects a huge number of innocent users, and because the problem as a whole is unfixable, the attackers can force the content owners to do this whenever they please and as often as they please, a fact that's unlikely to endear the content providers to consumers. From a chess-playing perspective it appears that the content owners' threat modelling never went any further than “Hey, I can move my rook over there!”. There doesn't seem to have been any consideration of what could happen during any subsequent moves, or maybe no-one wanted to think about it. So even though the mechanisms to address this are in place, in practice it looks like AACS is CSS all over again (see [Note C] for the reasons why).

The AACS Licensing Authority in turn says that AACS has not been seriously compromised, which no doubt comes as a considerable surprise to people busy decrypting HD-DVD and Blu-Ray content. Given the legal implications for the various participants in AACS this finger-pointing contest is to be expected (you could just blame Canada, for example), but it's unlikely that anyone but the lawyers will care. In the meantime there's an ongoing arms race (or an amusing game if you're not the AACS LA) in which the AACS LA releases fixes and the opposition break them, often within a day of the fix being released. Overall it's probably safe to say that the future function of AACS will be mostly to act as a teaching example of how not to do security engineering.

(The “blame Canada” comment is a reference to a carefully-planted story in the Canadian Globe and Mail newspaper designed to influence Canadian lawmakers in their vote on Bill C-60. Another Canadian paper calls the story “mostly fiction […] much ado about nothing, featuring unsubstantiated and inconsistent claims about camcording, exaggerations about its economic harm and misleading critiques of Canadian law ”, with further analysis showing that “the industry's own data reveals that the claims are based primarily on fiction rather than fact”).

“No amount of coordination will be successful unless it's designed with the needs of the customer in mind. Microsoft believes that a good user experience is a requirement for adoption” — Microsoft. “The PC industry is committed to providing content protection on the PC, but nothing comes for free. These costs are passed on to the consumer” — ATI. “How do I put all these companies in a position where, regardless of what they see is in their best interest, they have to adopt your technology? […] I realized that a major part of my job was to figure out how to use technology control to create economic force, or leverage, such that money and business flowed in Microsoft's direction” — Alex St.John, father of DirectX. “I'm not sure how the company lost sight of what matters to our customers, both business and home, the most, but in my view we lost our way. I think our teams lost sight of what bug-free means, what resilience means, what full scenarios mean, what security means, what performance means, how important current applications are, and really understanding what the most important problems our customers face are” — Jim Allchin, Platform Products and Services Group, Microsoft.

The product still has a few wrinkles

The topic of DRM is far too complex to cover here, and in any case has been extensively analysed elsewhere. In you want a good summary of the situation then I'd recommend reading There Ain't No Such Thing as a Free Lunch by book author Eric Flint. This provides an interesting view of DRM from one of the artists/content creators that DRM is supposed to be protecting. It's an extremely insightful analysis of the topic that examines the underlying business model and indeed philosophy of DRM rather than focusing exclusively on technical and legislative measures or its counterpart, “information wants to be free” jingoism. This should be required reading for anyone who works with DRM or who's interested in the background for the whole DRM debate.

So setting aside the DRM debate, the question remains: Why is Microsoft going to this much trouble? Ask most people what they picture when you use the term “premium-content media player” and they'll respond with “A PVR” or “A DVD player” and not “A Windows PC”. So why go to this much effort to try and turn the PC into something that it's not? You can get an idea of just how important content protection is to Microsoft by looking at the Windows Vista logo requirements. The primary requirement for graphics devices in the Windows Vista Logo Program isn't, as would be expected, the ability to handle a high-resolution display or display a rich palette of colours. It isn't the presence of a good quantity of memory and powerful graphics rendering. It isn't even the ability to handle Vista's much-touted Aero interface, arguably the primary reason for running Vista. Instead, the number one requirement for Windows Vista graphics device certification, “GRAPHICS-0001” in the specification, is “Display adapter supports output connectors with content protection features and provides control via PVP and COPP DDIs”. It's only the follow-on “GRAPHICS-0002” that requires that “Display subsystem meets GPU, memory, resolution, and bandwidth requirements for a premium Windows experience”. This is a pretty amazing admission, because it means that Microsoft is placing content protection above all other requirements for Vista, even the ability to handle Vista's primary feature, the Aero interface. For audio it's less critical, dropping to 14th place as “AUDIO-0014”, “Audio device implements DRM support as defined in the Windows Driver Kit”. This is probably because Microsoft haven't quite got the audio DRM sorted out yet so it's a bit hard to nail down requirements at this stage.

So why is content protection apparently Microsoft's number one priority for Vista?

In July 2006, Cory Doctorow published an analysis of the anti-competitive nature of Apple's iTunes copy-restriction system that looked at the benefits of restrictive DRM for the company that controls it. The only reason I can imagine why Microsoft would put its programmers, device vendors, third-party developers, and ultimately its customers, through this much pain is because once this copy protection is entrenched, Microsoft will completely own the distribution channel. In the same way that Apple has managed to acquire a monopolistic lock-in on their music distribution channel (an example being the Motorola ROKR fiasco, which was so crippled by restrictions that a Fortune magazine senior editor reviewed it as the STNKER), so Microsoft will totally control the premium-content distribution channel. In fact examples of this Windows content lock-in are already becoming apparent as people move to Vista and find that their legally-purchased content won't play any more under Vista (the example given in the link is particularly scary because the content actually includes a self-destruct after which it won't play any more, so not only do you need to re-purchase your content when you switch from XP to Vista, but you also need to re-purchase it periodically when it expires. In addition since the media rights can't be backed up, if you experience a disk crash you get another opportunity to re-purchase the content all over again. This is by design: as Jack Valenti, former head of the MPAA, put it, “If you buy a DVD you have a copy. If you want a backup copy you buy another one”). It's obvious why this type of business model makes the pain of pushing content protection onto consumers so worthwhile for Microsoft since it practically constitutes a license to print money.

Microsoft have been saying for some years now that they'd really like the PC to go away, to turn into a kind of media platform and content-distribution center for consumers. This was a major theme of Bill Gates' world promotional tour for Vista in early 2007, and in particular something he went into in some detail at the World Economic Forum in Davos, Switzerland. Windows MCE has been the tail and of a long line of (unsuccessful) attempts to achieve this (the only reason why MCE seems to sell at all is because it's the cheapest version of Windows that vendors can pre-install on a PC). If “premium content” ever takes off, Microsoft wants to be the central controller of all content distribution and playback — only Windows can secure the content, therefore only Windows can distribute it. Even the term “premium content” is misleading: in a few years' time, most audio and video will be produced in some form of HD format, at which point “premium content” becomes normal, and so everything is subject to content protection.

Paul Stimpson submitted an excellent analysis of this situation in which he points out that “Microsoft are being clever by releasing these protection 'features' now; The average user who goes to a computer store will get Vista but won't have either premium content or get 'premium ready' PC hardware; The ordinary person in the street can't afford a top-of-the-line machine and display. They will have a 'Vista capable' machine; Vista will look nice and not cause too much trouble or suffer from the protection overhead too much; They won't have any choice or know any different and it will be accepted. These people will dismiss any complaints they hear about these problems as a geek thing. They got their computer at the right price and it does everything they ask of it. They will only find out the truth in a few years when they buy their next computer and all machines are 'premium ready' (and fast enough to implement the protection) and every display has an HDMI connector. By that time XP will be well into its decline so there will be no going back. It's impossible to keep off the upgrade treadmill if you have Windows; Eventually you will either have to buy new hardware (with a new copy of Windows) or your out-of-support version of Windows will become such a target for malware that it will no longer be useable”.

“In today's environment these content protection features are indeed a nonsense. I don't think, however that Microsoft are thinking about today's environment beyond keeping these features low-key for most users in order to avoid rejection. In their heads Microsoft see the 'connected home' where everyone has a network and displays around the house that integrate everything from TV to email, Internet, telephone, lighting and heating. In order to do these things on your TV you need a computer attached to it and Microsoft want that computer to run Windows”.

So not only will Microsoft be able to lock out any competitors, but because they will then represent the only available distribution channel they'll be able to dictate terms back to the content providers whose needs they are nominally serving in the same way that Apple has already dictated terms back to the music industry: Play by Apple's rules, or we won't carry your content. And as the example above shows, they'll also be able to dictate terms to consumers in order to ensure a continual revenue flow. The result will be a technologically enforced monopoly that makes their current de-facto Windows monopoly seem like a velvet glove in comparison [Note K].

The onerous nature of Vista's content protection also provides a perverse incentive to remove the protection measures from the content, since for many consumers that'll be the only way that they can enjoy their legally-acquired content without Vista's DRM getting in the way. This is already illustrated in the Quotes and Footnotes sections, where the people bypassing HD-DVD protection measures aren't hardcore video pirates but ordinary consumers who can't even play their own legitimately-acquired content. The sheer obnoxiousness of Vista's content protection may end up being the biggest incentive to piracy yet created. Even without overt “piracy” (meaning bypassing restrictions in order to play legally-purchased media), it makes very sound business sense for companies to produce media-player hardware that bypasses the problem, just as they have already with region-free play-anything DVD players. Perhaps Hollywood should heed the advice given in one of their most famous productions: “The more you tighten your grip, the more systems will slip through your fingers”.

A historical feature of organisations like Beria's NKVD (and by extension any kind of state enforcers in a totalitarian society) is that the lack of any fixed goals and limits on their behaviour, the kind that would be set by the laws of a democratic country, combined with the intense paranoia of the leadership, leads to a continual extension of the security apparatus and an ongoing escalation of repressiveness by the enforcers. The result is a driftnet approach to enforcement that ends up netting more innocent bystanders than anything else. The many examples given in the rest of this writeup are an indication that Windows is already well down this path.

Overall, Vista's content-protection functionality seems like an astonishingly short-sighted piece of engineering, concentrating entirely on content protection with no consideration given to the enormous repercussions of the measures employed. It's something like the PC equivalent of the (hastily dropped) proposal mooted in Europe to put RFID tags into high-value banknotes as an anti-counterfeiting measure, which completely ignores the fact that the major users of this technology would be criminals who would use it to remotely identify the most lucrative robbery targets (in my Godzilla security tutorial I nominate this (hastily-dropped) idea as “possibly the most stupid use of RFID ever proposed”).

To add insult to injury, consider what this enormous but ultimately wasted effort could have been put towards. Microsoft is saying that Vista will be the most secure version of Windows yet, but they've been saying that for every new Windows release since OS security became a selling point. I don't think anyone's under any illusions that Vista PCs won't be crawling with malware shortly after the bad guys get their hands on them (there were already Vista exploits up for sale before the OS even hit the shelves). But what if the Vista content-protection technology had instead been applied towards malware protection? Instead of a separate protection domain for video playback, we might have a separate protection domain for banking and credit card details. Instead of specialised anti-debugging technigues to stop users getting at even one frame of protected content, we could have those same techniques combatting malware hooking itself into the OS. The list goes on and on, with all of the effort being misapplied to DRM when it could have been used to combat malware instead. What a waste. What a waste.

Where could all this stuff be heading in the future? For some years now Microsoft have been trying to introduce software-as-a-service (SaaS), where you don't pay one lump sum for an application any more but instead rent it in an ongoing series of payments. The reason for this is that they've pretty much run out of ideas for new revenue-generation features for their two flagship produces Windows and Office. If you take a typical user and dump them in front of a ten-year-old copy of Microsoft Word (Office'97) and then ask them to compare it with the latest edition (at least before Office 2007, when they radically changed the user interface) then the only obvious change is that the paperclip is gone. Sure, there's a pile of obscure little changes that 99.99% of the user base would never notice, but for the vast majority of users the functionality of Office that they actually make day-to-day use of hasn't changed in ten years.

This isn't due to any inability of Microsoft to innovate, but because there's only so many things that you can do with (say) a word processor, and at some point you've made the last meaningful change and the only thing left to do is repeatedly tweak the eye candy and bump the version number every few years.

Windows has the same problem. If you take an eight-year-old PC running Windows 98, put it next to a current PC running Windows XP (with the Fisher-Price colour scheme turned off), the typical user won't be able to tell you what's changed without a point-by-point comparison of system features from one machine to the other.

This problem is by no means exclusive to Microsoft. Here's a quick exercise: Apart from the monstrous bloat in size, what changed between Adobe Acrobat Reader 4, Acrobat Reader 5, Acrobat Reader 6, and Acrobat Reader 7? For anyone but a hardcore geek or DTP professional, the response is “ nothing”, because there really wasn't much more left to add after version 4. You can actually see this in a program called Adobe Reader Speedup, which unplugs all of the bloat from newer versions of Acrobat so that it loads and runs almost instantly, with no noticeable loss in functionality.

The same applies to any number of other software packages: After they've reached a certain level of maturity, you just run out of things to add. This is a severe problem for large software (and hardware) vendors, whose revenue streams are dependent on users upgrading to the latest version every few years. If users have a perfectly usable old PC running a perfectly usable old version of Windows and a perfectly usable old version of Office, there's no incentive to upgrade, and so by extension no incentive to provide a new revenue stream to the vendor.

Enter the subscription model for software. Instead of paying for something once and then falling off the radar as a revenue source for several years, subscription-based content and subscription-based software guarantee a continuous revenue stream for the vendor. If Microsoft controls the distribution channel for content (which is what Vista's content protection is trying to achieve) then every time you view or listen to some content (no matter whose con