Which VOB Packets Are Encrypted Under CSS?

Under the Content Scramble System (CSS) specification, encryption is applied exclusively to the payload of MPEG-2 video packets within a DVD Video Object (VOB) file. Audio streams, subtitle data, navigation packs, and all stream headers remain completely unencrypted to allow DVD players to demux, synchronize, and navigate the disc without needing to decrypt the entire data stream.

The Structure of a VOB File

A VOB file is based on the MPEG-2 Program Stream format, organized into discrete 2,048-byte blocks that match the physical sector size of a DVD-Video disc. Each 2,048-byte sector represents a "Pack" containing:

Each PES packet includes a PES header followed by the actual elementary stream payload (video, audio, or private data).

Specifically Encrypted Packets: Video Only

CSS targets only video PES packets. In an MPEG-2 stream, video elementary streams are identified by the Stream ID range 0xE0 through 0xEF (DVD-Video almost universally uses Stream ID 0xE0).

Within these designated video sectors, CSS does not encrypt the entire sector:

Unencrypted Packets Within the VOB

All non-video packets within the VOB container remain unencrypted under CSS specifications:

How Encryption is Flagged

A player determines whether a sector contains encrypted video through two indicators:

  1. Sector Copyright Management Information (CPR_MAI): The physical DVD sector header contains a copyright management field where specific bits indicate whether the sector payload is scrambled and which CSS key generation applies.
  2. PES Scrambling Control Bits: The MPEG-2 PES header contains a 2-bit field (PES_scrambling_control). In unencrypted packets, this field is set to 00. In CSS-encrypted video packets, this field is set to a non-zero value (typically 01 or 10), indicating that the payload requires descrambling before being sent to the MPEG-2 video decoder.