Reversing : The Hacker's Guide to Reverse Engineering

(ff) #1

  1. When an end user purchases a program, the software developer
    requests the user’s processor serial number, and then contacts the
    authority to obtain the public key for that serial number.

  2. The program binaries are encrypted using the public key and shipped
    or transmitted to the end user.

  3. The end user runs the encrypted program, and the crypto-processor
    decrypts the code using the internally stored decryption key (the user’s
    private key) and stores the decrypted code in a special memory region
    that is not software-accessible.

  4. Code is executed directly from this (theoretically) inaccessible memory.
    While at first it may seem as though merely encrypting the protected program
    and decrypting it inside the processor is enough for achieving security, it really
    isn’t. The problem is that the data generated by the program can also be used to
    expose information about the encrypted program (see “Cipher Instruction Search
    Attack on the Bus-Encryption Security Microcontroller” by Markus G. Kuhn
    [Kuhn]. This is done by attempting to detect environmental changes (such as
    memory writes) that take place when certain encoded values enter the processor.
    Hiding data means that processors must be able to create some sort of com-
    partmentalized division between programs and completely prevent processes
    from accessing each other’s data. An elegant solution to this problem was pro-
    posed by David Lie et al. in “Architectural Support for Copy and Taper Resis-
    tant Software” [Lie] and a similar approach is implemented in Intel’s
    LeGrande Technology (LT), which is available in their latest generation of
    processors (more information on LT can be found in Intel’s LaGrande Technol-
    ogy Architectural Overview[Intel4]).
    This is not a book about hardware, and we software folks are often blinded
    by hardware-based security. It feels unbreakable, but it’s really not. Just to get
    an idea on what approaches are out there, consider power usage analysisattacks
    such as the differential power analysisapproach proposed by Paul Kocher,
    Joshua Jaffe, and Benjamin Jun in “Differential Power Analysis” [Kocher].
    These are attacks in which the power consumption of a decryption chip is
    monitored and the private key is extracted by observing slight variations
    in chip power consumption and using those as an indicator of what goes
    on inside the chip. This is just to give an idea on how difficult it is to protect
    information—even when a dedicated cryptographic chip is involved!


Digital Rights Management


The computer industry has obviously undergone changes in the past few
years. There are many aspects to that change, but one of the interesting ones
has been that computers can now deal with media content a lot better than


Piracy and Copy Protection 319
Free download pdf