A portion of the disclosure of this patent document may contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever. The following notice shall apply to this document: Copyright © 2006, 2007 Microsoft Corp.
The presently disclosed subject matter relates to the field of computing, and more particularly, to fields such as gaming and media content, although these are merely exemplary and non-limiting fields.
Game consoles are prevalent in today's markets. Such game consoles are also typically closed systems that only allow signed games controlled by hardware vendors to execute on such consoles. This restriction may be done for various reasons, whether to preserve the business model of having a tightly controlled environment for publishers, where piracy of intellectual property is kept to a minimum, or controlling the types games that can be played on a gaming system, for instance, to allow content that meets parental expectations for children playing such content. Additionally, allowing signed code to run helps to control and mitigate the potential for cheating on games in an online community, where certain assumptions, such as community scores or digital currency, are essential to be accurate.
However, these tight restrictions present on game consoles prevent the larger creative community as a whole from developing games or game-like applications on closed game consoles. Thus, it is important to address the need of allowing developers, gamers, general hobbyist, and student game developer communities, among others, to write games for a traditionally closed system and then being able to store these games on closed systems. Additionally, it is important to address the problem of a burgeoning market of homebrew developers who spend the time and effort in order to hack game consoles in order to allow the running of unsigned code on such consoles. Thus, it would also be advantageous provide for secured storing of unsigned content.
Various mechanisms are disclosed herein for securely storing unsigned information in closed computing devices. In one aspect of the presently disclosed subject matter, unsigned media entities can be stored in memory of a closed computing device, where the storing can include preventing any content from accessing the unsigned media entities (and/or vice-versa). Thus, the unsigned media entities can be isolated from such content on a per unsigned media entity basis (the media entity forming the unit of isolation). Such media entities can include (but are not limited to) games, videos, songs, software, and just about any digital content.
The storing can further comprise storing the unsigned media entities in directory structures that logically isolate the unsigned media entities from any other content. The closed computing device can also use a directory structure to guarantee that a specified signed loader can load unsigned media entities that persists in a given directory or subdirectory of a directory structure. This structure can further be enforced by storing some or all the relevant hierarchical location information along with the content. Once stored, the media entities can also be secured from tampering by using a unique hardware key associated with the closed computing device.
It should be noted that this Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
The foregoing Summary, as well as the following Detailed Description, is better understood when read in conjunction with the appended drawings. In order to illustrate the present disclosure, various aspects of the disclosure are illustrated. However, the disclosure is not limited to the specific aspects shown. The following figures are included:
Various mechanisms are disclosed herein for securely storing unsigned information in closed computing devices. By way of example and not limitation, unsigned media entities, such as independently developed games, can be stored in a closed computing device, such as a gaming console. The storing of media entities can include preventing any content, whether residing on the closed console or remotely, from accessing the unsigned media entities, or alternatively, from modifying them.
Depending on the aspect of the present disclosure, unsigned media entities can be isolated from such content on a per unsigned media entity basis (the media entity being the unit of isolation). Moreover, the media entities can be stored in directory structures that logically isolate the unsigned media entities from any other content. The closed computing device can also use a directory structure to guarantee that a specified signed loader can load unsigned media entities. This structure can further be enforced by storing some or all the relevant hierarchical location information along with the content. Once stored, the media entities can also be secured from tampering by using a unique hardware key associated with the closed computing device. In the following discussion, these and similar aspects are explored in more detail, and exemplary computing and networking environments are provided.
Unsigned content, as it pertains to this document, refers to any content that does not bear a digital signature granting certain rights for that content on the computing device. Unsigned content can therefore refer to content bearing a digital signature, so long as that signature does not affect the device's handling of the content. In other words, traditional games, for example, may be signed by their publishers for any purpose (identification, compatibility, copyright, etc . . . ), but such games are still considered unsigned content unless that signature, or another on the same game, affords certain rights or treatment on the device in question. Unsigned content, in contrast, can be developed by anyone and it does not have to be signed (whether such signing is accomplished using cryptographic means, such as certificates and so on). In any event, those of skill in the art will readily appreciate the distinction between signed content and unsigned content.
Thus,
Next,
Furthermore, on a more abstract level, signed and unsigned content may be stored, where such content is not limited to media entities, but rather also may include software, various files, programs, and so on. Turning to
Such games 200, 202, 212, 214, media entities 204, 206, 216, 218, and content 208, 210, 220, 222 may want to interact with one another (however, such interaction is prevented as is shown in
Interaction between signed games, media entities, and content can be varied. The arrows in
Turning back now to
Turning now to
Thus, loader B 414 can load 420 the media entity B 404, and it can load 422 any other code and/or data that is a subdirectory thereof. In other words, it can load 422 the parent media entity 404 and any children 406, 408, 410 thereof (or, to use another visual metaphor, any branch and any leaves thereof).
Other loaders, such as loader A 416 may be designed for loading other code and/or data, namely unsigned content A 180, or in the case of loader C 418, signed content A 168. By properly logically storing unsigned content and assigning the appropriate loader therefore, unsigned content can be properly isolated from other unsigned content (and other signed content).
Next,
Next,
Then, at block 705, a guarantee can be made that a specified signed loader can load the media entity that persists in a given directory or subdirectory of the directory structure 705. This forms part of the sandboxing mechanism discussed above. Then, at block 710, to add to device security, the media entity can be secured from tampering by signing certificates using a unique hardware key associated with the closed computing device, per the discussion above. If any hierarchical isolation data is encoded therein, it can then reliably be compared against the location where the content was found ensure no external tampering with the isolation locations has occurred.
To summarize, in more abstract terms, this is a method for securely storing unsigned information in a closed computing device. Thus, such storing comprises storing at least one unsigned media entity in memory of the closed computing device, where the storing can further comprise preventing any content from accessing the at least one unsigned media entity (and vice-versa, in other aspects). It also includes isolating the at least one unsigned media entity from the content on a per unsigned media entity basis—i.e. the media entity is the unit of isolation (as opposed to, say, a set of media entities being the unit of isolation, or user accounts being the unit of isolation). In some exemplary and non-limiting aspects of the present disclosure, such isolation can mean that access to unsigned media entities is prevented from within a computing device (by other code stored on the computing device) and/or, moreover, external tampering can be prevented (i.e. by code outside the computing device). It should be noted that while the aforementioned storing is occurring, the closed computing device can be one physical device or a device distributed over a network (one logical device, but not necessarily one physical device).
Gaming consoles can be used to store information, such as unsigned content, since such gaming consoles could be considered exemplary and non-limiting embodiments of the presently disclosed subject matter. Referring next to
A graphics processing unit (GPU) 108 and a video encoder/video codec (coder/decoder) 114 form a video processing pipeline for high speed and high resolution graphics processing. Data is carried from the graphics processing unit 108 to the video encoder/video codec 114 via a bus. The video processing pipeline outputs data to an A/V (audio/video) port 140 for transmission to a television or other display. A memory controller 110 is connected to the GPU 108 and CPU 101 to facilitate processor access to various types of memory 112, such as, but not limited to, a RAM (Random Access Memory).
The multimedia console 100 includes an I/O controller 120, a system management controller 122, an audio processing unit 123, a network interface controller 124, a first USB host controller 126, a second USB controller 128 and a front panel I/O subassembly 130 that are preferably implemented on a module 118. The USB controllers 126 and 128 serve as hosts for peripheral controllers 142(1)-142(2), a wireless adapter 148, and an external memory unit 146 (e.g., flash memory, external CD/DVD ROM drive, removable media, etc.). The network interface 124 and/or wireless adapter 148 provide access to a network (e.g., the Internet, home network, etc.) and may be any of a wide variety of various wired or wireless interface components including an Ethernet card, a modem, a Bluetooth module, a cable modem, and the like.
System memory 143 is provided to store application data that is loaded during the boot process. A media drive 144 is provided and may comprise a DVD/CD drive, hard drive, or other removable media drive, etc. The media drive 144 may be internal or external to the multimedia console 100. Application data may be accessed via the media drive 144 for execution, playback, etc. by the multimedia console 100. The media drive 144 is connected to the I/O controller 120 via a bus, such as a Serial ATA bus or other high speed connection (e.g., IEEE 1394).
The system management controller 122 provides a variety of service functions related to assuring availability of the multimedia console 100. The audio processing unit 123 and an audio codec 132 form a corresponding audio processing pipeline with high fidelity, 3D, surround, and stereo audio processing according to aspects of the present invention described above. Audio data is carried between the audio processing unit 123 and the audio codec 126 via a communication link. The audio processing pipeline outputs data to the A/V port 140 for reproduction by an external audio player or device having audio capabilities.
The front panel I/O subassembly 130 supports the functionality of the power button 150 and the eject button 152, as well as any LEDs (light emitting diodes) or other indicators exposed on the outer surface of the multimedia console 100. A system power supply module 136 provides power to the components of the multimedia console 100. A fan 138 cools the circuitry within the multimedia console 100.
The CPU 101, GPU 108, memory controller 110, and various other components within the multimedia console 100 are interconnected via one or more buses, including serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus using any of a variety of bus architectures.
When the multimedia console 100 is powered on or rebooted, application data may be loaded from the system memory 143 into memory 112 and/or caches 102, 104 and executed on the CPU 101. The application may present a graphical user interface that provides a consistent user experience when navigating to different media types available on the multimedia console 100. In operation, applications and/or other media contained within the media drive 144 may be launched or played from the media drive 144 to provide additional functionalities to the multimedia console 100.
The multimedia console 100 may be operated as a standalone system by simply connecting the system to a television or other display. In this standalone mode, the multimedia console 100 may allow one or more users to interact with the system, watch movies, listen to music, and the like. However, with the integration of broadband connectivity made available through the network interface 124 or the wireless adapter 148, the multimedia console 100 may further be operated as a participant in a larger network community. As such a participant, it may interact with computing devices, whether PCs or servers, and receive information that may be eventually stored.
Thus, per
Finally, it should also be noted that the various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. Thus, the methods and apparatus of the presently disclosed subject matter, or certain aspects or portions thereof, may take the form of program code (i.e., instructions) embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, or any other machine-readable storage medium, where, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the subject matter.
In the case of program code execution on programmable computers, the computing device may generally include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. One or more programs that may utilize the creation and/or implementation of domain-specific programming models aspects of the present invention, e.g., through the use of a data processing API or the like, are preferably implemented in a high level procedural or object oriented programming language to communicate with a computer system. However, the program(s) can be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language, and combined
Lastly, while the present disclosure has been described in connection with a plurality of exemplary aspects, as illustrated in the various figures, it is understood that other similar aspects may be used or modifications and additions may be made to the described aspects for performing the same function of the present disclosure without deviating therefrom. For example, in various aspects of the disclosure, processes and methods were described at least for storing unsigned content on gaming consoles. However, other equivalent mechanisms to these described aspects are also contemplated by the teachings herein. Therefore, the present disclosure should not be limited to any single aspect, but rather construed in breadth and scope in accordance with the appended claims.
The presently disclosed subject matter is related to the following applications: U.S. application Ser. No. 11/636,199, filed Dec. 7, 2006 (Attorney Docket No.: MSFT-5854/MS 319144.01), entitled “EXECUTING UNSIGNED CONTENT AND SECURING ACCESS IN A CLOSED SYSTEM”; U.S. application Ser. No. 11/636,219, filed Dec. 7, 2006 (Attorney Docket No.: MSFT-5855/MS 319145.01), entitled “TRANSFER OF CONTENT TO CLOSED SYSTEMS”; and, U.S. application Ser. No. 11/636,166, filed Dec. 7, 2006 (Attorney Docket No.: MSFT-5856/MS 319153.01), entitled “SUBSCRIPTION BASED SERVICES FOR CLOSED COMPUTING SYSTEMS.”