Method and system for protecting against the execution of unauthorized software
Claim Score by NHIP
Abstract
In accordance with an embodiment of the present invention, a client device is protected against the execution of unauthorized software. The client includes a code authentication process that verifies the integrity of executable code, by generating and comparing a first hash value of the executable code with a known hash value of the original code. Furthermore, during boot-up, the client initializes a CPU exception vector table with one or more vector table entries. One or more, or all, of the vector table entries direct the CPU to execute the code authentication process prior to executing an event handler when an exception event occurs. Consequently, the code authentication process is virtually guaranteed to execute, thereby protecting against the execution of unauthorized code.
Term
Term ended
Expired 27 April 2026, 0.4 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
20 claims: 3 independent, 17 dependent
- 1Broadest claimClaim Score 41, average(NHIP)A method for providing security on a client device, the method being performed by one or more processors and comprising:initializing an exception vector table, the exception vector table including comprising one or more vector table entries that each references a corresponding event handling routine that is used to process a corresponding exception event, wherein at least one vector table entry of the one or more vector table entries causes a code authentication process to be executed before a the corresponding event handling routine is executed;in response to detecting an the corresponding exception event associated with the at least one vector table entry of the one or more vector table entries , executing the code authentication process to authenticate a portion of executable code stored in a memory resource, the code authentication process determining whether the portion of the executable code is authorized or unauthorized ;and in response to the code authentication process determining that the portion of the executable code is authorized, executing an the corresponding event handling routine corresponding to the at least one vector table entry of the one or more vector table entries .
- 9A client device comprising:one or more memory resources;and one or more processing resources coupled to the one or more memory resources, the one or more processing resources configured to: initialize an exception vector table, the exception vector table including comprising one or more vector table entries that each references a corresponding event handling routine that is used to process a corresponding exception event, wherein at least one vector table entry of the one or more vector table entries causes a code authentication process to be executed before a the corresponding event handling routine is executed;in response to detecting an the corresponding exception event associated with the at least one vector table entry of the one or more vector table entries , execute the code authentication process to authenticate a portion of executable code stored in the one or more memory resources, the code authentication process determining whether the portion of the executable code is authorized or unauthorized ;and in response to the code authentication process determining that the portion of the executable code is authorized, execute an the corresponding event handling routine corresponding to the at least one vector table entry of the one or more vector table entries .
- 17A non-transitory computer readable medium storing instructions that, when executed by one or more processors, causes cause the one or more processors to perform steps comprising:initializing an exception vector table, the exception vector table including comprising one or more vector table entries that each references a corresponding event handling routine that is used to process a corresponding exception event, wherein at least one vector table entry of the one or more vector table entries causes a code authentication process to be executed before a the corresponding event handling routine is executed;in response to detecting an the corresponding exception event associated with the at least one vector table entry of the one or more vector table entries , executing the code authentication process to authenticate a portion of executable code stored in a memory resource, the code authentication process determining whether the portion of the executable code is authorized or unauthorized ;and in response to the code authentication process determining that the portion of the executable code is authorized, executing an the corresponding event handling routine corresponding to the at least one vector table entry of the one or more vector table entries .
Independent claims3
39 paragraphs in 6 sections, as filed
CROSS REFERENCE TO RELATED APPLICATIONS
0001This ApplicationThe present application is a reissue application of U.S. Pat. No. 8,677,142 issued Mar. 18, 2014 from U.S. patent application Ser. No. 13/538,430 filed Jun. 29, 2012, which is a Continuation of U.S. patent application Ser. No. 11/413,392, filed Apr. 27, 2006, now U.S. Pat. No. 8,239,686; the aforementioned priority applicationapplications being hereby incorporated by reference in itstheir entirety for all purposes.
TECHNICAL FIELD
0002The present invention relates generally to protecting the integrity of a trusted client, and in particular, to a method and system for protecting against the execution of unauthorized software on a trusted client.
BACKGROUND
0003The Internet has shown great promise as a means for delivering digital content (e.g., video and audio content, such as television shows, movies and songs). One of the advantages of network-based digital content delivery systems is the ability to deliver digital content to users on an on-demand basis (e.g., video on demand, or VOD). However, content providers have been slow to make content available via the Internet, in large part because of security concerns. Specifically, content providers fear that, once their digital content is available on the Internet, hackers will circumvent any security mechanisms used to protect their digital content and then freely distribute the content. Consequently, system developers are continuously looking for ways to secure digital content and improve the systems by which digital content is delivered over computer networks.
0004One of the ways that system developers attempt to secure digital content is to develop trusted clients that cannot be modified by hackers. For example, many digital content delivery systems utilize trusted clients to access, or play, digital content. One of the ways that hackers attempt to circumvent digital content security measures is to modify the trusted client device that is used to access, or play, the digital content. In particular, hackers may attempt to modify existing software, or introduce new software, on the trusted client. Accordingly, hackers may use the modified or new software processes to analyze and/or probe the trusted client in an effort to discover encryption keys, or otherwise circumvent security measures. Consequently, it is desirable to prevent the modification, or introduction of new, executable code on a client.
SUMMARY OF THE DESCRIPTION
0005A method and system for protecting against the execution of unauthorized software are disclosed. According to one embodiment of the invention, a client device is protected against the execution of unauthorized software. The client includes a code authentication process that verifies the integrity of executable code, by generating and comparing a hash value of the executable code with a known hash value of the authentic executable code. Furthermore, during boot-up, the client initializes a CPU exception vector table with one or more vector table entries. One or more, or all, of the vector table entries direct the CPU to execute the code authentication process prior to executing an event handler when an exception event occurs. Consequently, the code authentication process is virtually guaranteed to execute, thereby protecting against the execution of unauthorized code.
0006Other objects, advantages and features of the present invention will become apparent upon examining the following detailed description of an embodiment thereof, taken in conjunction with the attached drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
0007The invention will be readily understood by reviewing the following detailed description in conjunction with the accompanying drawings, in which like references indicate similar elements and in which:
0008<figref idref="DRAWINGS">FIG. 1</figref> illustrates a conventional CPU exception vector table;
0009<figref idref="DRAWINGS">FIG. 2</figref> illustrates a CPU exception vector table, according to an embodiment of the invention;
0010<figref idref="DRAWINGS">FIG. 3</figref> illustrates a client device in a power-off state, according to one embodiment of the invention;
0011<figref idref="DRAWINGS">FIG. 4</figref> illustrates a client device in a power-on state, according to one embodiment of the invention;
0012<figref idref="DRAWINGS">FIG. 5</figref> illustrates a method, according to an embodiment of the invention, for protecting against the execution of unauthorized software;
0013<figref idref="DRAWINGS">FIG. 6</figref> illustrates a client-server based digital content delivery system, in which a client device according to an embodiment of the invention may be utilized; and
0014<figref idref="DRAWINGS">FIG. 7</figref> illustrates a distributed peer-to-peer digital content delivery system, in which a client device according to an embodiment of the invention may be utilized.
DETAILED DESCRIPTION
0015A method and system for protecting against the execution of unauthorized software on a trusted client are disclosed. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be evident to one skilled in the art, however, that the present invention may be practiced without these specific details. The description and representation herein are the means used by those experienced or skilled in the art to effectively convey the substance of their work to others skilled in the art. In some instances, to avoid unnecessarily obscuring aspects of the present invention, well-known operations and components have not been described in detail.
0016Reference herein to “one embodiment” or “an embodiment” means that a particular feature, structure, operation, or other characteristic described in connection with the embodiment may be included in at least one implementation of the invention. However, the appearance of the phrase “in one embodiment” or the phrase “in an embodiment” in various places in the specification does not necessarily refer to the same embodiment.
0017<figref idref="DRAWINGS">FIG. 1</figref> illustrates a conventional central processing unit (CPU) exception vector table <b>10</b>. As illustrated in <figref idref="DRAWINGS">FIG. 1</figref>, the exception vector table <b>10</b> maps an exception vector identifier (ID) <b>12</b> to an exception handling routine <b>14</b>. When an exception event occurs in a conventional computing system, the exception vector table <b>10</b> is referenced to determine the proper event handling routine to execute in order to process the exception event. For example, when the exception event with exception event identifier “0000 0003” occurs, the CPU executes instructions in memory <b>16</b> representing “HANDLING_ROUTINE_03.” Generally, the exception vector table <b>10</b> is an essential component of the processing system. Without it, the processing system would eventually grind to a halt as exceptions occur without proper resolution.
0018<figref idref="DRAWINGS">FIG. 2</figref> illustrates a CPU exception vector table <b>18</b>, according to an embodiment of the invention. As illustrated in <figref idref="DRAWINGS">FIG. 2</figref>, each entry of the exception vector table <b>18</b> causes the central processing unit (CPU) to execute a code authentication process <b>20</b> prior to executing an event handling routine associated with the particular exception vector table entry. For example, when an exception occurs, prior to executing the event handler process that is associated with the exception event, the central processing unit (CPU) first executes software instructions associated with the code authentication process <b>20</b>. If, for example, the exception event ID is “0000 0003”, the CPU first executes the code authentication process, and then executes the event handling routine “HANDLING_ROUTINE_A003”. This ensures that the CPU executes the code authentication process each time an exception event occurs. As proper exception handling is critical to a normally operating client, the code authentication process is virtually guaranteed to execute as exceptions occur. This makes it difficult, if not impossible, for a hacker to disable the code authentication process.
0019<figref idref="DRAWINGS">FIG. 3</figref> illustrates a client device <b>30</b> in a power-off state, according to one embodiment of the invention. As illustrated in <figref idref="DRAWINGS">FIG. 3</figref>, the client <b>30</b> includes a central processing unit (CPU) <b>32</b>, coupled by means of a system bus <b>34</b> to a memory <b>36</b>, a non-volatile memory <b>38</b>, a security processor (or co-processor) <b>40</b>, and a network interface <b>42</b>. In addition, the CPU <b>32</b> is coupled to a disk storage device <b>44</b> by means of a disk controller <b>46</b> and the system bus <b>34</b>.
0020In one embodiment of the invention, one or more of the individual components shown in <figref idref="DRAWINGS">FIG. 3</figref> may be part of a system-on-a-chip (SoC). For example, in one embodiment of the invention, the CPU <b>32</b>, security processor <b>40</b>, disk controller <b>46</b>, memory controller (not shown), and network interface <b>42</b> may all be part of a SoC. It will be appreciated by those skilled in the art that the client device <b>30</b> may include a variety of other functional components (e.g., a display subsystem and/or an additional communication component) that are not germane to the invention, and therefore have not been included in <figref idref="DRAWINGS">FIG. 3</figref>.
0021The disk storage device <b>44</b> stores executable code <b>54</b> and a hash table for the executable code <b>66</b>. In one embodiment of the invention, the executable code includes, but is not limited to the operating system <b>56</b>, system applications <b>58</b>, and an executable code authentication process <b>60</b>. The operating system <b>56</b> may be a customized version of any conventional operating system, such as Linux or Microsoft Windows®. The system applications <b>58</b> will generally be customized applications that enable the primary functions of the client device <b>30</b>, to include the play back of digital content received over the network interface <b>42</b>. The executable code authentication process <b>60</b> is a set of instructions, or a process, that authenticates segments of executable code when executed by the CPU <b>32</b>. As described in greater detail below, when the system powers on, segments of the executable code are read into memory to be executed by the CPU <b>32</b>.
0022It will be appreciated by those skilled in the art that, depending on the state of the client, the executable code <b>54</b> may be a set of instructions stored on disk storage <b>44</b>, or alternatively, a process stored in memory and being executed by the CPU. Furthermore, although the disk storage <b>44</b> is shown in <figref idref="DRAWINGS">FIG. 3</figref> to include only executable code, it will be appreciated that a portion of disk storage may be utilized to store digital content (e.g., video and/or audio) as well.
0023The non-volatile memory <b>38</b> includes boot-loader code <b>62</b>, and a digital signature <b>64</b> for the boot-loader code <b>64</b>. The boot-loader code <b>62</b> includes boot-up instructions that are executed during a power-on procedure, which enables the client to load the operating system and enter into an operating state. As described in greater detail below, the boot-loader digital signature <b>64</b> is a mechanism used for authenticating the boot-loader code <b>62</b>. Accordingly, the authentication mechanism is intended to identify non-conforming or unauthorized code before it is executed, thereby preventing hackers from modifying existing code, and/or introducing new code into the client.
0024In one embodiment of the invention, during production of the client <b>30</b>, the executable code <b>54</b> that is to be written to the disk storage device <b>44</b> is loaded on to a production server. On the production server, the executable code <b>54</b> is analyzed, and a hash generator algorithm is utilized to generate a table <b>66</b> of hash values corresponding to segments of the executable code. Accordingly, each hash value in the hash table <b>66</b> represents a digest of a segment of executable code. Similarly, one or more hash values are generated for the boot-loader code <b>62</b>. In one embodiment of the invention, the hash value for the boot-loader code is encrypted with an encryption key to generate a digital signature <b>64</b>. For example, the encryption key utilized to encrypt the hash value for the boot-loader code may be shared in common with the security processor <b>40</b>. Accordingly, the security processor <b>40</b>, utilizing the encryption/decryption key <b>72</b>, can decrypt the digital signature to access the originally generated hash for the boot-loader code <b>62</b>.
0025During production of the client, the boot-loader code <b>62</b> and the digital signature <b>64</b>, are programmed into the non-volatile memory <b>38</b>. In addition, the hash table is stored in a file on the hard disk. Consequently, after production when the client is in use, the system integrity authenticator <b>68</b> can authenticate the boot-loader code <b>62</b> during a power-on, or boot-up, procedure. Similarly, after boot-up, the executable code authentication process <b>60</b> can authenticate the executable code <b>54</b> by generating a hash value with the same hash generating algorithm used on the production server. The generated hash value is then compared with the pre-calculated hash value in the hash table <b>66</b>. If the hash values match, it can be presumed that the segment of executable code is authentic and original.
0026The security processor <b>40</b>, which includes the system integrity authenticator <b>48</b>, also includes an encryption/decryption engine <b>70</b> and at least one encryption/decryption key <b>72</b>. Accordingly, the security processor <b>40</b> may provide the client <b>30</b> with a wide variety of security functions or services. In one embodiment of the invention, the security processor <b>40</b> provides processing power for encryption/decryption tasks that are computationally intensive. For example, encrypted digital content received via the network interface <b>42</b> may be decrypted by the encryption/decryption engine <b>50</b>, in real time, before being provided to the display subsystem (not shown) for display to a user. Accordingly, in various embodiments of the invention, the security processor <b>40</b> may have any number of secret keys in addition to the encryption/decryption key <b>72</b>, and each key may serve a different purpose.
0027<figref idref="DRAWINGS">FIG. 4</figref> illustrates a client device <b>30</b> in a power-on state, according to one embodiment of the invention. The client device <b>30</b> is designed such that, when it is initially powered on, the CPU is held in the RESET state, and prevented from operating. Accordingly, at power-on, the security processor <b>40</b> is enabled. Specifically, the system integrity authenticator <b>68</b> is enabled to perform an authentication operation on the boot-loader code <b>62</b>. In one embodiment of the invention, the system integrity authenticator <b>68</b> authenticates the boot-loader code by comparing a first hash, generated during the power-on procedure, with a second hash, generated during production and programmed into the non-volatile memory after being encrypted with an encryption key For example, the system integrity authenticator <b>68</b> generates a hash value for the boot-loader code by analyzing the boot-loader code <b>62</b> in the non-volatile memory <b>38</b>. In addition, the system integrity authenticator <b>68</b> reads the boot-loader code digital signature <b>64</b>. After reading the digital signature <b>64</b>, the system integrity authenticator <b>68</b> utilizes the encryption/decryption key <b>72</b> to decrypt the digital signature <b>64</b>, resulting in the original hash value for the boot-loader code <b>62</b> that was generated at the production server. If the two hash values match, it is presumed that the boot-loader code <b>62</b> has not been tampered with or changed since being programmed into the non-volatile memory during production. Accordingly, the security processor <b>40</b> then enables the CPU to access the boot-loader code <b>62</b>, and begin the boot-up procedure.
0028During the boot-up procedure, the operating system <b>56</b>, or a portion thereof, is loaded into the memory <b>36</b> in accordance with the boot-loader instructions <b>62</b>. In addition, an exception vector table <b>74</b> is generated and loaded into the memory <b>36</b>, along with system applications <b>58</b>, or a portion of, the executable code authentication process <b>60</b> and the hash table <b>66</b>. Before loading the operating system and the application code, the boot loader also verifies that those files are authentic by checking their signatures.
0029In one embodiment of the invention, the exception vector table <b>74</b> causes the CPU to switch contexts, and execute the executable code authentication process <b>60</b>, when an exception event occurs. As described in connection with <figref idref="DRAWINGS">FIG. 2</figref>, when a particular exception event occurs, the exception vector table is referenced to determine the proper event handling routine to be executed to process the exception event. However, prior to processing the exception event, the exception vector table directs the CPU to execute the code authentication process. Because the operational “health” of the client is dependent upon the proper processing and handling of exception events, associating the code authentication process with the exception vector tables virtually guarantees that the code authentication process <b>60</b> will be executed. This ensures that a hacker is not able to disable, or otherwise render the code authentication process <b>60</b> inoperative.
0030In one embodiment of the invention, the code authentication process <b>60</b> generates a hash value for a segment of executable code in memory, and then compares the hash value with a pre-calculated hash value from the hash table for that particular segment of executable code. Assuming the hash values match, it is assumed that the executable code is authentic. However, if the hash values do not match, it is presumed that the executable code is not authentic. In one embodiment of the invention, when unauthentic code is discovered, the code authentication process may cause the client to halt executing all together. Additionally, or alternatively, the code authentication process <b>60</b> may report the discovery of unauthentic code to a server.
0031In one embodiment of the invention, the code authentication process may maintain status information indicating which segments of code have been authenticated, as well as information relating to the time at which segments were authenticated. Accordingly, the code authentication process <b>60</b> may control how frequently it operates by determining whether executable code in memory <b>36</b> needs to be authenticated based on the status information it maintains. For example, if all of the executable code in memory <b>36</b> has recently been authenticated, the code authentication process <b>60</b> may not operate, thereby passing control to the exception handling routine associated with the exception event that initially triggered the execution of the code authentication process <b>60</b>. Or, if the code authentication process has consumed too much CPU recently, it may decide not to check and just pass control onto the event handler.
0032In one embodiment of the invention, in addition to authenticating the boot-loader code at boot-up time, the system integrity authenticator <b>68</b> of the security processor <b>40</b> systematically authenticates the exception vector table, code authentication process <b>60</b> and the hash table <b>66</b>. For example, the system integrity authenticator <b>68</b> may generate a hash value based on the hash table, and compare that hash value to a previously generated hash value. The previously generated hash value for the hash table may be a special hash value that is stored in the non-volatile memory, or in the security processor. In this manner, the system integrity authenticator can verify the authenticity of the hash table that is used to authenticate the executable code. Similarly, the system integrity authenticator may authenticate the code for the code authentication process <b>60</b>, or the exception vector table <b>74</b>.
0033Although the hash table <b>66</b> is shown in <figref idref="DRAWINGS">FIGS. 3 and 4</figref> to reside on the disk storage <b>44</b>, it will be appreciated by those skilled in the art that the hash table <b>66</b> may be programmed into the non-volatile memory <b>38</b>. Alternatively, the hash table <b>66</b> may reside in a portion of memory (not shown) in the security processor. In addition, the hash table <b>66</b> may be encrypted with an encryption key (e.g., such as encryption key <b>72</b>), such that the security processor is to decrypt the hash table prior to it being used by the code authentication process <b>60</b>.
0034<figref idref="DRAWINGS">FIG. 5</figref> illustrates a method <b>80</b>, according to an embodiment of the invention, for protecting against the execution of unauthorized code on a client device. At operation <b>82</b>, the client device <b>30</b> is powered on, and the system integrity authenticator <b>82</b> performs an authentication operation to authenticate the boot-loader code <b>62</b>. For example, the system integrity authenticator <b>68</b> may verify that a hash generated based on the boot-loader code stored in memory <b>38</b> is consistent with a digital signature <b>64</b> for the boot-loader code <b>62</b>. If the boot-loader code <b>62</b> is determined not to be authentic, then the client halts execution <b>84</b>, and does not boot-up. However, if the boot-loader code checks out as authentic, then at operation <b>86</b>, the client loads the operating system into memory according to the instructions of the boot-loader code <b>62</b>.
0035During the boot-up procedure, boot loader transfers control to the kernel of the operating system, and the operating system boot-up proceeds. At operation <b>88</b>, the client initializes a CPU vector table with one or more vector table entries, which cause the CPU to execute a code authentication process when an exception event occurs, prior to executing the operating system's exception handling routine associated with the exception event. Accordingly, at operation <b>90</b>, when an exception event occurs, the CPU interrupts the current process to lookup the event handling routine associated with the exception event. At operation <b>92</b>, the code authentication process is executed to authenticate a segment of executable code in memory. If the executable code is not authentic, the client halts execution at operation <b>94</b>. However, if the executable code is authentic, then the event handling routine for the exception event is executed at operation <b>96</b>, after which the normal activities of the operating system including execution of the application code resume in block <b>98</b>.
0036<figref idref="DRAWINGS">FIG. 6</figref> illustrates a client-server based digital content delivery system <b>100</b>, in which a client device <b>108</b> according to an embodiment of the invention may be utilized. The digital content delivery system <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref> includes a digital content server <b>102</b> with a mass storage device <b>104</b> for storing digital content. The digital content server <b>102</b> is coupled by means of a network <b>106</b> to multiple client devices <b>108</b>-<b>1</b>, <b>108</b>-<b>2</b> and <b>108</b>-n. In operation, a particular client device <b>108</b>-<b>1</b> may communicate a request for a particular title (e.g., movie), or other digital content, to the content server <b>102</b>. In response, the content server <b>102</b> reads the digital content from the mass storage device <b>104</b>, encrypts the digital content with an encryption key, and then communicates the digital content over the network <b>106</b> to the requesting client device <b>108</b>-<b>1</b>. Upon receiving the encrypted digital content, the client device <b>108</b>-<b>1</b> executes a procedure for decrypting the digital content and then displaying the digital content to the user.
0037<figref idref="DRAWINGS">FIG. 7</figref> illustrates a distributed digital content delivery system <b>200</b>, in which a client device according to an embodiment of the invention may be utilized. In contrast to the client-server based system <b>100</b> of <figref idref="DRAWINGS">FIG. 1</figref>, the system of <figref idref="DRAWINGS">FIG. 2</figref> is a distributed system. For example, the digital content is stored not only on the mass storage device <b>204</b> of the content server <b>202</b>, but also on the storage devices <b>207</b>-<b>1</b>, <b>207</b>-<b>2</b> and <b>207</b>-n of each individual client device <b>208</b>-<b>1</b>, <b>208</b>-<b>2</b> and <b>208</b>-N. Consequently, when a particular client device <b>208</b>-<b>1</b> makes a request for a particular title, the digital content server <b>202</b> manages the delivery process, but the actual data is communicated to the requesting client <b>208</b>-<b>1</b> over the network <b>206</b> from other client devices (e.g., client devices <b>208</b>-<b>2</b> through <b>208</b>-N). This distributed delivery system, which may be thought of as a hybrid of a client-server and peer-to-peer delivery system, is more completely described in U.S. patent application Ser. No. 11/269,462 filed on Nov. 7, 2005, and assigned to VVOND, Inc.
0038The content delivery systems illustrated in <figref idref="DRAWINGS">FIG. 6</figref> and <figref idref="DRAWINGS">FIG. 7</figref> are provided as two examples of systems in which the client device, according to an embodiment of the invention, may be utilized. However, it will be appreciated by those skilled in the art that the present invention may be applicable to a wide variety of client devices and content delivery systems in addition to those illustrated in <figref idref="DRAWINGS">FIG. 6</figref> and <figref idref="DRAWINGS">FIG. 7</figref>. Furthermore, consistent with the invention, the client device may be implemented in one of many possible form factors, including (but not limited to): a set-top box, a handheld player, a mobile phone, a personal digital assistant, or a game playing device.
0039Thus, a method and system for protecting against the execution of unauthorized software on a client device have been described. Although the present invention has been described with reference to specific exemplary embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
Contents6
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US11681809B2 | Cited by | United States of America | Search report |
| US2002114465A1 | Cites | United States of America | Applicant |
| US2002154892A1 | Cites | United States of America | Applicant |
| US2002184489A1 | Cites | United States of America | Applicant |
| US2003084298A1 | Cites | United States of America | Search report |
| US2003120923A1 | Cites | United States of America | Search report |
| US2003208765A1 | Cites | United States of America | Applicant |
| US2004025186A1 | Cites | United States of America | Applicant |
| US2004039911A1 | Cites | United States of America | Applicant |
| US2004088558A1 | Cites | United States of America | Applicant |
| US2004093507A1 | Cites | United States of America | Search report |
| US2004148634A1 | Cites | United States of America | Applicant |
| US2005015814A1 | Cites | United States of America | Applicant |
| US2005094724A1 | Cites | United States of America | Applicant |
| US2005108414A1 | Cites | United States of America | Applicant |
| US2005114659A1 | Cites | United States of America | Applicant |
| US2005117747A1 | Cites | United States of America | Applicant |
| US2005135705A1 | Cites | United States of America | Applicant |
| US2005160308A1 | Cites | United States of America | Applicant |
| US2005177853A1 | Cites | United States of America | Applicant |
| US2005210525A1 | Cites | United States of America | Applicant |
| US2005262546A1 | Cites | United States of America | Applicant |
| US2006008256A1 | Cites | United States of America | Applicant |
| US2006031537A1 | Cites | United States of America | Applicant |
| US2006078307A1 | Cites | United States of America | Applicant |
| US2006129795A1 | Cites | United States of America | Search report |
| US2006136597A1 | Cites | United States of America | Applicant |
| US2006143476A1 | Cites | United States of America | Applicant |
| US2006174004A1 | Cites | United States of America | Applicant |
| US2006190615A1 | Cites | United States of America | Applicant |
| US2006200413A1 | Cites | United States of America | Applicant |
| US2007016832A1 | Cites | United States of America | Search report |
| US2007101399A1 | Cites | United States of America | Applicant |
| US2007157281A1 | Cites | United States of America | Applicant |
| US2007245392A1 | Cites | United States of America | Applicant |
| US2008091840A1 | Cites | United States of America | Applicant |
| US2008148323A1 | Cites | United States of America | Applicant |
| US2008267406A1 | Cites | United States of America | Search report |
| US2009006583A1 | Cites | United States of America | Applicant |
| US2009019131A1 | Cites | United States of America | Applicant |
| US2009300673A1 | Cites | United States of America | Applicant |
| US2010005496A1 | Cites | United States of America | Applicant |
| US2010023976A1 | Cites | United States of America | Applicant |
| US4288659A | Cites | United States of America | Applicant |
| US4578530A | Cites | United States of America | Applicant |
| US5410343A | Cites | United States of America | Applicant |
| US5509120A | Cites | United States of America | Search report |
| US5748732A | Cites | United States of America | Applicant |
| US5949881A | Cites | United States of America | Applicant |
| US6115816A | Cites | United States of America | Applicant |
| US6154633A | Cites | United States of America | Applicant |
| US6263504B1 | Cites | United States of America | Applicant |
| US6289455B1 | Cites | United States of America | Applicant |
| US6408386B1 | Cites | United States of America | Search report |
| US6424714B1 | Cites | United States of America | Applicant |
| US6625729B1 | Cites | United States of America | Search report |
| US6687683B1 | Cites | United States of America | Applicant |
| US6715085B2 | Cites | United States of America | Applicant |
| US6804357B1 | Cites | United States of America | Applicant |
| US6804719B1 | Cites | United States of America | Applicant |
| US6961858B2 | Cites | United States of America | Applicant |
| US6993132B2 | Cites | United States of America | Search report |
| US7003672B2 | Cites | United States of America | Search report |
| US7027460B2 | Cites | United States of America | Applicant |
| US7069332B2 | Cites | United States of America | Applicant |
| US7134138B2 | Cites | United States of America | Applicant |
| US7168065B1 | Cites | United States of America | Search report |
| US7228432B2 | Cites | United States of America | Search report |
| US7240345B2 | Cites | United States of America | Applicant |
| US7380276B2 | Cites | United States of America | Search report |
| US7440574B2 | Cites | United States of America | Applicant |
| US7475254B2 | Cites | United States of America | Applicant |
| US7496756B2 | Cites | United States of America | Applicant |
| US7631356B2 | Cites | United States of America | Search report |
| US7900060B2 | Cites | United States of America | Applicant |
| US20020114465A1 | Cites | United States of America | Applicant |
| US20020154892A1 | Cites | United States of America | Applicant |
| US20020184489A1 | Cites | United States of America | Applicant |
| US20030084298A1 | Cites | United States of America | Search report |
| US20030120923A1 | Cites | United States of America | Search report |
| US20030208765A1 | Cites | United States of America | Applicant |
| US20040025186A1 | Cites | United States of America | Applicant |
| US20040039911A1 | Cites | United States of America | Applicant |
| US20040088558A1 | Cites | United States of America | Applicant |
| US20040093507A1 | Cites | United States of America | Search report |
| US20040148634A1 | Cites | United States of America | Applicant |
| US20050015814A1 | Cites | United States of America | Applicant |
| US20050094724A1 | Cites | United States of America | Applicant |
| US20050108414A1 | Cites | United States of America | Applicant |
| US20050114659A1 | Cites | United States of America | Applicant |
| US20050117747A1 | Cites | United States of America | Applicant |
| US20050135705A1 | Cites | United States of America | Applicant |
| US20050160308A1 | Cites | United States of America | Applicant |
| US20050177853A1 | Cites | United States of America | Applicant |
| US20050210525A1 | Cites | United States of America | Applicant |
| US20050262546A1 | Cites | United States of America | Applicant |
| US20060008256A1 | Cites | United States of America | Applicant |
| US20060031537A1 | Cites | United States of America | Applicant |
| US20060078307A1 | Cites | United States of America | Applicant |
| US20060129795A1 | Cites | United States of America | Search report |
4 members in 1 office
Priority claims10
| Document | Office | Kind | Date |
|---|---|---|---|
| 41339206 | United States of America | A | |
| 41339206 | United States of America | A | |
| 201213538430 | United States of America | A | |
| 201213538430 | United States of America | A | |
| 201615071973 | United States of America | A | |
| 11413392 | – | – | – |
| 13538430 | – | – | – |
| US20060413392 | – | – | – |
| US201213538430 | – | – | – |
| US201615071973 | – | – | – |
Members4
| Document | Office | Kind | |
|---|---|---|---|
| US8239686B1 | United States of America | B1 | |
| US2012272296A1 | United States of America | A1 | |
| US8677142B2 | United States of America | B2 | |
| USRE47364EThis record | United States of America | E |
52 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Email NotificationEML_NTR | EML_NTR | |
| Printer Rush- No mailingTCPB | TCPB | |
| Mail Response to 312 Amendment (PTO-271)MN271 | MN271 | |
| Response to Amendment under Rule 312N271 | N271 | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Response to Reasons for AllowanceREAS | REAS | |
| Amendment after Notice of Allowance (Rule 312)AllowedA.NA | A.NA | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Ex Parte Quayle ActionA.QU | A.QU | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Substitute Specification FiledC604 | C604 | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Ex Parte Quayle Action (PTOL - 326)MCTEQ | MCTEQ | |
| Quayle actionCTEQ | CTEQ | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Notice of Reissue Published in Official GazetteNRE. | NRE. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Email NotificationEML_NTR | EML_NTR | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| Application Is Now CompleteCOMP | COMP | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Application Dispatched from OIPEOIPE | OIPE | |
| FITF set to NO - revise initial settingFTFI | FTFI | |
| Preliminary AmendmentA.PE | A.PE | |
| Applicants have given acceptable permission for participating foreignAPPERMS | APPERMS | |
| Cleared by OIPE CSRL194 | L194 | |
| Entity Status Set To Undiscounted (Initial Default Setting or Status Change)BIG. | BIG. | |
| Initial Exam Team nnIEXX | IEXX |
6 recorded assignments at the USPTO, latest first
- Now
Now: Held by
NBCUNIVERSAL MEDIA LLC - 2022-01-18
Corrective assignment to correct the coversheet to exclude app. no. 11368308, which was inadvertently added at the time of recording the assignment previously recorded at reel: 053609 frame: 0302. assignor(s) hereby confirms the assignment.
- From
- VUDU, LLC
- To
- NBCUNIVERSAL MEDIA LLC
Recorded 2022-01-18, Signed 2020-08-20
- 2020-08-26
Assignment of assignors interest.
Ownership change- From
- VUDU, LLC
- To
- NBCUNIVERSAL MEDIA LLC
Recorded 2020-08-26, Signed 2020-08-20
- 2020-08-24
Change of name.
- From
- VUDU, INC.
- To
- VUDU, LLC
Recorded 2020-08-24, Signed 2020-06-13
- 2018-06-14
Assignment of assignors interest.
Ownership change- From
- HODZIC, EDINGOODMAN, ANDREW M.GANESAN, PRASANNA
- To
- VVOND, INC.
Recorded 2018-06-14, Signed 2006-04-26
- 2018-06-14
Change of name.
- From
- MARQUEE, INC.
- To
- VUDU, INC.
Recorded 2018-06-14, Signed 2007-04-24
- 2018-06-14
Change of name.
- From
- VVOND, INC.
- To
- MARQUEE, INC.
Recorded 2018-06-14, Signed 2006-09-29
8 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- RE047364
- Publication, DOCDB
- RE47364
- Publication, EPODOC
- USRE47364E
- Application
- 15071973
- Application, DOCDB
- 201615071973
- Application, EPODOC
- US201615071973
Titles
- English
- Method and system for protecting against the execution of unauthorized software
Classification
- CPC, 3
- G06F21/51
- G06F21/52
- G06F21/575
- IPC, 4
- G06F12 14
- G06F21 51
- G06F21 57
- G06F21 52