Abstract:
What is disclosed is a method of operating an integrated circuit which includes an input module, an output module, and a processing module coupled to the input module and the output module. The method includes, in the input module, receiving a first data segment; in the processing module, reading a hard coded identifier from an identifier module coupled to the processing module, processing the first data segment with the hard coded identifier to generate a first encoded data segment; and in the output module, transferring the first encoded data segment for storage on a storage system.

Description:
RELATED APPLICATIONS 
       [0001]    This patent application is a continuation of and claims priority to patent application Ser. No. 11/340,099; filed Jan. 26, 2006; entitled “DIGITAL CONTENT PROTECTION SYSTEMS AND METHODS” and which is hereby incorporated by reference into this patent application. 
     
    
     FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT 
       [0002]    Not applicable 
       MICROFICHE APPENDIX 
       [0003]    Not applicable 
       BACKGROUND OF THE INVENTION 
       [0004]    1. Field of the Invention 
         [0005]    The invention relates to digital content protection technologies, and in particular, to protecting digital content by linking stored content to particular host systems. 
         [0006]    2. Description of the Prior Art 
         [0007]    The importance of digital content protection has increased as the widespread distribution and use of digital content has become more common. Both content providers and end users desire to control how and when digital content is accessed and used. As electronic devices, such as personal computers, phones, music devices, and video devices, have proliferated, so has the need for improved digital content protection. 
         [0008]    In the prior art, many software and hardware based techniques have been utilized to protect digital content. For example, digital content is often times processed using a software or hardware process executed on the host system portion of a device to encrypt or otherwise encode the content. The protected content is then transferred to the storage system portion of the device, or to a removable storage element, for storage. Upon retrieving the content from storage, the content is typically decrypted or decoded on the host system by the software or hardware process. 
         [0009]    One problem with content protection solutions in the prior art is that, even if content can be strongly encrypted or encoded, many storage systems can be easily ported to new host systems. As a result, the encrypted content stored on the ported storage system can be accessed and the encryption eventually defeated. In one example, porting digital content to a new host system may be contrary to the wishes of a content provider. In another example, porting content to a new host system may be contrary to the wishes of an end user. Thus, a solution is needed to efficiently and cost effectively link stored digital content to particular host systems. 
       SUMMARY OF THE INVENTION 
       [0010]    What is disclosed is an integrated circuit. The integrated circuit includes an input module configured to receive a first data segment, an identifier module having a hard coded identifier, a processing module coupled to the input module and coupled to the identifier module and configured to process the first data segment with the hard coded identifier to generate a first encoded data segment, and an output module configured to transfer the first encoded data segment for storage on a storage system. 
         [0011]    What is also disclosed is a method of operating an integrated circuit which includes an input module, an output module, and a processing module coupled to the input module and the output module. The method includes, in the input module, receiving a first data segment; in the processing module, reading a hard coded identifier from an identifier module coupled to the processing module, processing the first data segment with the hard coded identifier to generate a first encoded data segment; and in the output module, transferring the first encoded data segment for storage on a storage system. 
         [0012]    What is also disclosed is a device. The device includes a storage medium and a host system having a plurality of system elements and a storage control system for controlling data transfer between the plurality of system elements and the storage medium. The storage control system includes a content protection system configured to receive a first data segment from a one of the plurality of system elements, read a hard coded identifier, process the first data segment with the hard coded identifier to generate a first encoded data segment, and transfer the first encoded data segment for storage on the storage medium. The storage control system also includes a transfer system configured to transfer the first encoded data segment to the storage medium. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS  
         [0013]    The same reference number represents the same element on all drawings. 
           [0014]      FIG. 1  illustrates a content protection system in an embodiment of the invention. 
           [0015]      FIG. 2  illustrates the operation of a content protection system in an embodiment of the invention. 
           [0016]      FIG. 3  illustrates the operation of a content protection system in an embodiment of the invention. 
           [0017]      FIG. 4  illustrates a device in an embodiment of the invention. 
           [0018]      FIG. 5  illustrates a device in an embodiment of the invention. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
       [0019]      FIGS. 1-5  and the following description depict specific embodiments of the invention to teach those skilled in the art how to make and use the best mode of the invention. For the purpose of teaching inventive principles, some conventional aspects have been simplified or omitted. Those skilled in the art will appreciate variations from these embodiments that fall within the scope of the invention. Those skilled in the art will appreciate that the features described below can be combined in various ways to form multiple embodiments of the invention. As a result, the invention is not limited to the specific embodiments described below, but only by the claims and their equivalents. 
         [0020]      FIG. 1  illustrates a functional block diagram of content protection system (CPS)  134  in an embodiment of the invention. In this embodiment, digital content is processed and stored in a manner so as to link the stored content to a particular host system. When content is retrieved from a storage system by a host system, the retrieval could succeed if the host system is the same host system that initially provided the content to the storage system for storage. If not, the retrieval process could fail. 
         [0021]    In particular, data segments of digital content are processed by a content protection system using a hard coded identifier to seed an error correction code (ECC) process. Each hard coded identifier is preferably unique to each content protection system, and therefore to each host system and device. Each data segment is stored on a storage system, along with the associated ECC. When the digital content is retrieved from storage, each ECC is processed with the corresponding data segment to produce a result. The result is checked against the hard coded identifier. The differences between the result and the hard coded identifier are used to correct errors in the data segment. 
         [0022]    In a successful case, such as when the retrieving host system is the same host system that initially provided the content, the data segment could be corrected appropriately and the corrected data segment provided to other host system elements for further data processing. In an unsuccessful case, such as when the retrieving host system is not the same host system that initially provided the content, the data segment could be erroneously corrected, resulting in invalid or unintelligible data. 
         [0023]    Turning to  FIG. 1 , CPS  134  includes input module  135 , processing module  136 , output module  137 , and identifier module  138 . CPS  134  could be a semiconductor based integrated circuit and could also be referred to as a microchip or chip. It should be understood that CPS  134  could be a stand alone system. Alternatively, CPS  134  could be integrated as a subsystem of another integrated circuit. As illustrated by  FIG. 1 , processing module  136  is operatively coupled to input module  135 . Processing module  136  is also operatively coupled to output module  137  and identifier module  138 . It should be understood that other elements could be included with CPS  134 . 
         [0024]    Identifier module  138  could comprise one or more inputs connected to processing module  136 . The inputs could be, for example, electrical inputs, such as voltage or current inputs, as well as pins or fuses. The inputs could be set during the manufacturing process to a predetermined identifier. The identifier could be, for instance, a binary identifier. As is well known in the art, semiconductor masks are used in the integrated circuit manufacturing process to create various circuit patterns on each layer of a microchip. In one example, a unique identifier could be defined on an integrated circuit mask or a set of masks. Each microchip produced by the manufacturing process could have a unique identifier that differs from device to device. The unique identifier is connected directly to processing module  136 . In one embodiment, the identifier could be accessible only to processing module  136 , and inaccessible to any other system elements, such as memory registers or bus systems. 
         [0025]      FIG. 2  illustrates storage process  200  describing the operation of CPS  134  in an embodiment of the invention. In this embodiment, data is transferred to CPS  134  for ECC generation using the hard coded identifier of identifier module  138 . It should be understood that ECC processes are well known in the art. The resulting ECC is stored on a storage medium, such as a disk drive or flash memory. Often times, the ECC is stored along with the subject data segment. 
         [0026]    To begin, input module  135  receives a data segment from a host system element for storage on a storage system (Step  210 ). The data segment could be a portion of a larger data set, such as text, music, or video files. Processing module  136  reads the data segment and processes the data segment with the hard coded identifier from identifier module  138  to generate an error correction code (ECC) (Step  220 ). Processing module  136  passes the resulting ECC to output module  137  (Step  230 ). Output module  137  transfers the ECC for storage with the data segment. 
         [0027]      FIG. 3  illustrates retrieval process  300  describing the operation of CPS  134  in an embodiment of the invention. In this embodiment, data is transferred from a storage system to CPS  134  for error correction purposes. Using the hard coded identifier of identifier module  138 , CPS  134  is configured to correct any errors in the data segment being retrieved. Assuming CPS  134  is the same CPS that initially generated the ECC that is stored with the target data segment, the error correction process could proceed normally and the resulting data could be provided in a useful condition to other elements of the host system. 
         [0028]    In a case wherein CPS  134  is not the same CPS that initially generated the ECC that is stored with the target data segment, the data segment could appear to have more errors than in the previous case. The error correction process could therefore miscorrect the data segment, thereby corrupting the subject data. The resulting data could either be provided in a damaged condition to other elements of the host system, or the data transfer process could cease entirely. 
         [0029]    Turning to  FIG. 3 , input module  135  receives the data segment and associated ECC from storage (Step  310 ). Processing module  136  reads and processes the data segment with the ECC to generate a first result (Step  320 ). Next, processing module  136  processes the first result with the hard coded identifier from identifier module  138  to generate a second result (Step  330 ). The second result identifies errors in the data segment. Processing module  136  then corrects the data segment based on the second result (Step  340 ). As discussed above, if the hard coded identifier is the same identifier used to initially generate the ECC during the storage process, the error correction process could work correctly and the resulting data could be provided to host system elements in a useful form. If the hard coded identifier is not the same identifier used to initially generate the ECC during the storage process, the error correction process could further damage the data. The resulting data could be damaged and unintelligible. 
         [0030]    It should be understood that CPS  134  could be implemented in an electronics device, such as a cell phone, audio player, video player, game machine, or personal computing device, as well as other types of electronics devices. In one example,  FIG. 4  illustrates a functional block diagram of a device  400  having a content protection system  434  configured to operate as described for CPS  134 . Device  400  includes host system  410  and storage system  440 . Host system  410  includes storage control system  430 , processing system  421 , peripheral systems  423 , memory system  422 , and interface  424 . Storage control system  430  includes buffer system  431 , control unit  432 , transfer system  433 , and CPS  434 . Storage system  440  includes storage medium  445 . 
         [0031]    In this embodiment, peripheral systems  423  are operatively coupled to processing system  421 . Processing system  421  is operatively coupled to peripheral systems  423 , memory system  422 , and interface  424 . Processing system  421  could be, for instance, a central processing unit. Memory system  422  is operatively coupled to processing system  421  and interface  424 . Memory system  422  could be, for example, general purpose random access memory. Interface  424  could be a logical or physical interface, or both. 
         [0032]    In operation, storage control system  430  controls the transfer of data to and from storage system  440 . Control unit  432  is operatively coupled to buffer system  431 , CPS  434 , and transfer system  433 . CPS  434  is operatively coupled to control unit  432  and buffer system  431 . While not pictured, CPS  434  could be operatively coupled to interface  424 . Similarly, control unit  432  could be operatively coupled to interface  424 . Control unit  432  typically controls and coordinates the operations of the elements of storage control system  430 . Other control units are possible. Buffer system  431  is operatively coupled to control unit  432 , interface  424 , and transfer system  433 . Transfer system  433  is operatively coupled to control unit  432 , buffer system  431 , and storage medium  445 . 
         [0033]    Typically, operating system and application type programs are executed on host system  410  by processing system  421 . In conjunction with the programs, data is transferred between host system  410  and storage system  440 . The transfer protocols involved in data transfer are well known in the art. In a write scenario, data segments are transferred from memory system  422  over interface  424  to buffer system  431 . CPS  434  reads a data segment from buffer system  431  and processes the data segment with a hard coded identifier to generate an ECC. CPS  434  then returns the ECC to buffer system  431 . Buffer system  431  provides the ECC, along with the data segment, to transfer system  433 . Transfer system  433  writes the ECC and data segment to memory on storage medium  445 . The data segment stored on storage system  440  is thus bonded to host system  410  because the ECC associated with the data segment was generated using an inaccessible, hardwired identifier. 
         [0034]    In a read scenario, transfer system  433  reads from storage medium  445  a data segment and the ECC associated with the data segment. Transfer system  433  passes the ECC and data segment to buffer system  431 . CPS  434  processes the data segment with the ECC to generate a first result. CPS  434  then processes the first result with the hard coded identifier to generate a second result. The second result identifies possible errors in the data segment. CPS  434  then corrects the data segment using the second result. If host system  410  is the host system bonded to the data segment, the resulting corrected data segment could be valid and useful for the operating system or application programs running on host system  410 . If not, the resulting corrected data segment could be rendered largely damaged and useless.  FIG. 5  illustrates device  400 , except that in  FIG. 5 , storage control system  430  resides on storage system  440 . 
         [0035]    It should be understood that other digital content protection systems or schemes could be implemented along with the content protection described above. For instance, digital content could be encrypted prior to the ECC generation process. It should also be understood that the ECC process could be seeded with other elements, such as a logical block address, in addition to seeding with a hard coded identifier. It should also be understood that the content protection systems described above could include an encryption module. The encryption module could use the hard coded identifier to encrypt data segments in addition to the ECC process. 
         [0036]    Advantageously, embodiments of the invention protect digital content by processing and storing digital content in a manner so as to link the stored content to a particular host system. In particular, a hard coded identifier is used to seed an ECC process. The resulting ECCs that are stored with data segments are inherently linked to the hard coded identifier, which resides permanently on the host system. When content is retrieved from a storage system by a host system, the retrieval could succeed if the host system is the same host system that initially provided the content to the storage system for storage. If not, the retrieval process could fail.