`US008239852B2
`
`c12) United States Patent
`Etchegoyen
`
`(IO) Patent No.:
`(45) Date of Patent:
`
`US 8,239,852 B2
`Aug. 7, 2012
`
`(54) REMOTE UPDATE OF COMPUTERS BASED
`ON PHYSICAL DEVICE RECOGNITION
`
`(75)
`
`Inventor: Craig Stephen Etchegoyen, Irvine, CA
`(US)
`
`(73) Assignee: Uniloc Luxembourg S.A., Luxembourg
`(LU)
`
`( *) Notice:
`
`Subject to any disclaimer, the term ofthis
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`AU
`
`5,490,216 A
`5,666,415 A
`5,745,879 A
`5,754,763 A
`5,790,664 A
`5,925,127 A
`5,974,150 A
`
`211996 Richardson, III
`9/1997 Kaufman
`4/1998 Wyman
`511998 Bereiter
`8/1998 Coley et al.
`7/1999 Ahmad
`10/ 1999 Kai sh et al.
`(Continued)
`
`FOREIGN PATENT DOCUMENTS
`678985
`6/1997
`(Continued)
`
`OTHER PUBLICATIONS
`
`(21) Appl. No.: 12/818,906
`
`(22) Filed:
`
`Jun. 18, 2010
`
`(65)
`
`Prior Publication Data
`
`US 2010/0333081 Al
`
`Dec. 30, 2010
`
`Related U.S. Application Data
`
`(60)
`
`Provisional application No. 61/220,092, filed on Jun.
`24, 2009.
`
`(51)
`
`Int. Cl.
`(2006.01)
`G06F 9144
`(52) U.S. Cl. ......................... 717/172; 717/168; 717/171
`(58) Field of Classification Search ........... 717/168-178
`See application file for complete search history.
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`4,351,982 A
`911982 Miller et al.
`4,658,093 A
`4/1987 Hellman
`11/ 1987 Smith et al.
`4,704,610 A
`1/1989 Wolfe
`4,796,220 A
`5,155,847 A *
`10/ 1992 Kirouac et al.
`5,210,795 A
`511993 Lipner et al.
`5,291,598 A
`3/1994 Grundy
`5,414,269 A
`5/1995 Takahashi
`5,418,854 A
`5/1995 Kaufman et al.
`5,440,635 A
`8/1995 Bellovin et al.
`
`............... 709/221
`
`Williams, R., "A Painless Guide to CRC Error Detection Algo(cid:173)
`rithms", Ver. 3, Aug. 19, 1993.
`
`(Continued)
`
`Primary Examiner - Wei Zhen
`Assistant Examiner - Qing Chen
`(74) Attorney, Agent, or Firm - Sean D. Burdick
`
`ABSTRACT
`(57)
`A system for remotely updating a program configuration
`includes an update server in communication with a client
`device configured to execute a remote update program. The
`client device includes a first processor coupled to memory
`storing the program which, executed, performs physical
`device recognition on the client device to determine its
`machine parameters, and generates unique device identifiers
`based thereon, and a first transceiver configured to send the
`identifiers to the update server. The update server is config(cid:173)
`ured to collect the identifiers from the client device, and
`includes a second processor for analyzing the identifiers and
`determining an updated program configuration based on the
`collected identifiers matching known identifiers, and a second
`transceiver configured to deliver data representing the
`updated program configuration to the client device for storage
`therein.
`
`18 Claims, 6 Drawing Sheets
`
`100
`
`109
`
`DELIVERS THE
`UPDATE TO THE
`
`CLIENT SIDE
`PROGRAM SENDS
`DATA REGARDING
`ACCOUNT, DEVICE,
`AND PROGRAM INFO
`FOR AN UPDATE
`DELIVERY SERVER
`
`AUDIT
`SERVER
`
`107
`
`UPDATE
`DELIVERED VIA
`NETWORK TO
`CUSTOMER
`UPDATES MAYBE
`BJ NARY
`EXECUTABLES,
`PATCHES, DLLS.
`MS.IS. OR ASSETS
`
`120
`
`105
`
`UPDATE
`SERVER
`
`DATA IS RECEIVED BY THE
`UPDATE SERVER THE INFO
`SEND RE DEVICE, ACCOUNT,
`GEO-LOCATION AND PROGRAM
`ARE INSPECTED ANO A SUITABLE
`UPDATE IS SELECTED
`ADDITIONAL DATA TO BE
`CONSIDERED JS THE LOCATION
`OF THE USER WITHIN A GIVEN
`PROGRAM AND/OR FEATURES
`THE USER JS ENTITLED TO
`
`APPLE EXHIBIT 1001
`Page 1 of 15
`
`
`
`US 8,239,852 B2
`Page 2
`
`............... 717/173
`
`............. 717/173
`
`U.S. PATENT DOCUMENTS
`6,009,401 A
`12/1999 Horstmann
`6,044,471 A
`3/2000 Colvin
`6,158,005 A
`12/2000 Bharathan et al.
`5/2001 Revashetti et al.
`6,230,199 Bl
`6,233,567 Bl
`5/2001 Cohen
`6,243,468 Bl
`6/2001 Pearce et al.
`6,294,793 Bl
`9/2001 Brunfeld et al.
`6,324,519 Bl
`1112001 Eldering
`6,327,617 Bl* 12/2001 Fawcett ........................ 709/219
`12/2001 England et al.
`6,330,670 Bl
`6,449,645 Bl
`912002 Nash
`6,467,088 Bl* 10/2002 alSafadi et al.
`6,536,005 Bl
`3/2003 Augarten
`6,785,825 B2
`8/2004 Colvin
`6,859,793 Bl
`212005 Lambiase
`6,880,086 B2 *
`412005 Kidder et al. ................. 713/191
`6,920,567 Bl
`7/2005 Doherty et al.
`6,976,009 B2
`12/2005 Tadayon et al.
`7,032,110 Bl
`412006 Su et al.
`7,069,440 B2
`612006 Aull
`612006 Cognigni et al.
`7,069,595 B2
`7,085,741 B2
`8/2006 Lao et al.
`3/2007 Cronce et al.
`7,188,241 B2
`7,200,237 B2 *
`4/2007 Zhang et al . .................... 381160
`7,203,966 B2
`4/2007 Abburi et al.
`4/2007 Gilliam et al.
`7,206,765 B2
`9/2007 Pierson et al.
`7,272,728 B2
`7,319,987 Bl
`112008 Hoffman et al.
`2/2008 Bachelder et al.
`7,327,280 B2
`7,337,147 B2
`2/2008 Chen et al.
`7,343,297 B2
`3/2008 Bergler et al.
`12/2008 Kiesel et al.
`7,463,945 B2
`7,577,948 B2 *
`8/2009 Zomayaet al. ............... 717/168
`7,653,899 Bl
`112010 Lindahi et al.
`7,676,804 B2 *
`3/2010 Ferguson et al.
`200110034712 Al
`10/2001 Colvin
`200110044782 Al
`1112001 Hughes et al.
`2002/0019814 Al
`212002 Ganesan
`612002 Ko bata et al.
`2002/0082997 Al
`200210099952 Al*
`712002 Lambert et al. ............... 713/200
`10/2002 Coley et al.
`2002/0161718 Al
`2003/0014745 Al*
`112003 Mah et al . ..................... 717/170
`2003/0065918 Al
`4/2003 Willey
`2003/0172035 Al
`9/2003 Cronce et al.
`2003/0195995 Al* 10/2003 Tabbara ........................ 709/313
`2004/0024860 Al
`212004 Sato et al.
`2004/0030912 Al
`212004 Merkle et al.
`3/2004 Rodgers et al.
`2004/0059929 Al
`2004/0143746 Al
`7/2004 Ligeti et al.
`2004/0187018 Al
`912004 Owen eta!.
`2005/0034115 Al*
`212005 Carter et al.
`3/2005 Roetter et al.
`2005/0055269 Al
`2005/0108173 Al
`512005 Stefil< et al.
`2005/0138155 Al
`6/2005 Lewis
`2005/0172280 Al
`8/2005 Ziegler et al.
`2005/0262498 Al* 1112005 Ferguson et al.
`2006/0072444 Al
`412006 Engel et al.
`2006/0095454 Al
`512006 Shankar et al.
`712006 Morrison et al.
`2006/0161914 Al
`2006/0265337 Al
`1112006 Wesinger, Jr.
`2006/0282511 Al
`12/2006 Takano et al.
`2007/0072676 Al
`3/2007 Baluja
`200710168288 Al
`7/2007 Bozeman
`
`.................. 717/173
`
`............. 717/172
`
`2007/0169087 Al*
`2007/0198422 Al
`2007/0203846 Al
`2007/0219917 Al
`2007/0282615 Al
`2008/0065552 Al
`2008/0086423 Al
`2008/0147556 Al
`2008/0167943 Al
`2008/0228578 Al
`2008/0320607 Al
`2009/0037337 Al *
`2009/0083730 Al
`2009/0138975 Al
`
`7/2007 Fadell ........................... 717/168
`8/2007 Prahlad et al.
`8/2007 Kavuri et al.
`9/2007 Liu et al.
`12/2007 Hamilton et al.
`3/2008 Elazar et al.
`4/2008 Waites
`6/2008 Smith et al.
`7/2008 O'Neil et al.
`9/2008 Mashinsky
`12/2008 Richardson
`212009 Baitalmal et al. ............... 705/59
`3/2009 Richardson
`512009 Richardson
`
`EP
`EP
`EP
`EP
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`
`FOREIGN PATENT DOCUMENTS
`5/2001
`1096406
`3/2006
`1637958
`3/2006
`1637961
`1670188
`612006
`WO 9220022
`1111992
`111993
`WO 9301550
`WO 9535533
`12/1995
`WO 0067095
`11/2000
`WO 01190892
`1112001
`1112005
`WO 2005104686
`5/2007
`W02007060516
`1/2008
`W02008013504
`12/2008
`W02008157639
`3/2009
`W02009039504
`W02009065135
`512009
`W02009076232
`612009
`W02009 l 05702
`8/2009
`1112009
`W02009143115
`12/2009
`WO 2009158525
`
`OTHER PUBLICATIONS
`
`Angha, F. et al., "Securing Transportation Network Infrastructure
`with Patented Technology of Device Locking-Developed by Uniloc
`USA", avail. at: http://www.dksassociates.com/admin/paperfile/
`ITS%20World%20Paper%20Submission_Uniloc%20_2_.pdf,
`Oct. 24, 2006.
`Econolite, "Econolite and Uniloc Partner to Bring Unmatched Infra(cid:173)
`structure Security to Advanced Traffic Control Networks with
`Launch of Strongpoint", avail. at: http://www.econolite.com/docs/
`press/20080304_Econolite_StrongPoint.pdf, Mar. 4, 2008.
`Microsoft Corporation, "Operations Guide: Microsoft Systems Man(cid:173)
`agement Server 2003," 2003, Internet Citation retrieved on Jun. 27,
`2007. XP 002439673.
`Rivest, R. "RFC 1321-The MD5 Message Digest Algorithm," Apr.
`1992, Retrieved from the Internet on Jul. 21, 2005.
`Wikipedia: "Software Extension," May 28, 2009, Internet Article
`retrieved on Oct. 11, 2010. XP002604710.
`H. Williams, et al., "Web Database Applications with PHP &
`MySQL", Chapter 1, "Database Applications and the Web", ISBN
`0-596-00041-3, O'Reilly & Associates, Inc., Mar. 2002, avail. at:
`http://docstore.mik.ua/orelly/webprog/webdb/chO l_O l .htm.
`XP002603488.
`* cited by examiner
`
`APPLE EXHIBIT 1001
`Page 2 of 15
`
`
`
`U.S. Patent
`
`Aug. 7, 2012
`
`Sheet 1of6
`
`US 8,239,852 B2
`
`100
`
`109
`" --,
`
`I
`I
`
`CLIENT PROGRAM
`DELIVERS THE
`UPDATE TO THE
`PROGRAM
`
`101
`
`CLIENT
`COMPUTER
`LOADS SECOND
`OR THIRD
`PROGRAM
`
`CLIENT SIDE
`PROGRAM SENDS
`DATA REGARDING
`ACCOUNT, DEVICE,
`AND PROGRAM INFO
`FOR AN UPDATE
`DELIVERY SERVER
`
`AUDIT
`SERVER
`
`FIG. 1
`
`107
`
`UPDATE
`DELIVERED VIA
`NETWORK TO
`CUSTOMER .
`.--------! UPDATES MAY BE
`BINARY
`EXECUTABLES,
`PATCHES, DLLS,
`MSIS OR ASSETS
`
`120
`
`105
`
`UPDATE
`SERVER
`
`DATA IS RECEIVED BY THE
`UPDATE SERVER. THE INFO
`SEND RE DEVICE, ACCOUNT,
`GEO-LOCATION AND PROGRAM
`ARE INSPECTED AND A SUITABLE
`UPDATE IS SELECTED.
`ADDITIONAL DATA TO BE
`CONSIDERED IS THE LOCATION
`OF THE USER WITHIN A GIVEN
`PROGRAM AND/OR FEATURES
`THE USER IS ENTITLED TO
`
`APPLE EXHIBIT 1001
`Page 3 of 15
`
`
`
`U.S. Patent
`
`Aug. 7, 2012
`
`Sheet 2 of 6
`
`US 8,239,852 B2
`
`210
`
`220
`
`230
`
`240
`
`250
`
`LOADING CLIENT
`DEVICE(S) WITH A
`COMPUTER PROGRAM
`FOR PERFORMING A
`REMOTE UPGRADE
`
`PERFORMING
`PHYSICAL DEVICE
`RECOGNITION ON THE
`CLIENT DEVICE(S) TO
`DETERMINE MACHINE
`PARAMETERS
`
`GENERATING UNIQUE
`DEVICE IDENTIFIERS,
`AT LEAST IN PART,
`FROM THE
`DETERMINED MACHINE
`PARAMETERS
`
`SENDING THE UNIQUE
`IDENTIFIERS TO AT
`LEAST ONE OF AN
`AUDIT SERVER AND AN
`UPDATE SERVER
`
`RECEIVING AN
`UPDATED PROGRAM
`CONFIGURATION FROM
`THE UPDATE SERVER
`
`FIG. 2
`
`APPLE EXHIBIT 1001
`Page 4 of 15
`
`
`
`U.S. Patent
`
`Aug. 7, 2012
`
`Sheet 3 of 6
`
`US 8,239,852 B2
`
`320
`
`/
`
`302
`
`MEANS FOR LOADING CLIENT DEVICE(S)
`WITH A COMPUTER PROGRAM FOR
`PERFORMING REMOTE UPDATE
`
`MEANS FOR PERFORMING PHYSICAL
`DEVICE RECOGNITION ON CLIENT
`DEVICES TO DETERMINE MACHINE
`PARAMETERS
`
`330
`
`340
`
`MEANS FOR GENERATING UNIQUE
`DEVICE IDENTIFIERS, AT LEAST IN PART,
`FROM THE DETERMINED MACHINE
`PARAMETERS
`
`350
`
`/
`
`MEANS FOR SENDING UNIQUE
`IDENTIFIERS TO AT LEAST ONE OF AN
`AUDIT SERVER AND AN UPDATE SERVER
`
`360
`
`MEANS FOR RECEIVING AN UPDATED
`PROGRAM CONFIGURATION FROM THE
`UPDATE SERVER
`
`FIG. 3
`
`f""'"""'"""""'"""'"'""'"' ...... "' ... "'"""' ........... ,. ............. "1
`
`; TRANSCEIVER l
`
`to•o••••o••7••>0>0•0.o••••:
`
`304
`
`APPLE EXHIBIT 1001
`Page 5 of 15
`
`
`
`U.S. Patent
`
`Aug. 7, 2012
`
`Sheet 4 of 6
`
`US 8,239,852 B2
`
`410
`
`420
`
`430
`
`440
`
`COLLECTING UNIQUE
`IDENTIFIERS FROM AT
`LEAST ONE OF THE
`AUDIT SERVER AND
`THE CLIENT DEVICE(S)
`
`ANALYZING THE
`UNIQUE IDENTIFIERS
`
`DETERMINING AND
`UPDATED PROGRAM
`CONFIGURATION FOR
`THE CLIENT DEVICES
`
`DELIVERING THE
`UPDATED PROGRAM
`CONFIGURATION TO
`THE CLIENT DEVICES
`
`FIG. 4
`
`APPLE EXHIBIT 1001
`Page 6 of 15
`
`
`
`U.S. Patent
`
`Aug. 7, 2012
`
`Sheet 5 of 6
`
`US 8,239,852 B2
`
`520
`
`/
`
`502
`
`MEANS FOR COLLECTING UNIQUE
`IDENTIFIERS FROM AT LEAST ONE OF AN
`AUDIT SERVICE AND CLIENT DEVICE(S)
`
`MEANS FOR ANALYZING
`THE UNIQUE IDENTIFIERS
`
`530
`
`540
`
`MEANS FOR DETERMINING AN UPDATED
`PROGRAM CONFIGURATION FOR THE
`CLIENT DEVICE(S)
`
`f"""""""'"°"'"'""'"""""'""'"",..,..,...,....,,,..,.,....,,..,."',..1
`
`j
`-------------l
`TRANSCEIVER
`t •••••••••• 7··············:
`
`550
`~·
`
`MEANS FOR DELIVERING THE UPDATED
`PROGRAM CONFIGURATION FOR THE
`CLIENT DEVICE(S)
`
`504
`
`FIG. 5
`
`APPLE EXHIBIT 1001
`Page 7 of 15
`
`
`
`U.S. Patent
`
`Aug. 7, 2012
`
`Sheet 6 of 6
`
`US 8,239,852 B2
`
`VARIABLE KEY
`PORTION
`
`SYSTEM KEY
`PORTION
`
`FIG. 6
`
`APPLE EXHIBIT 1001
`Page 8 of 15
`
`
`
`US 8,239,852 B2
`
`1
`REMOTE UPDATE OF COMPUTERS BASED
`ON PHYSICAL DEVICE RECOGNITION
`
`This application claims priority to U.S. Provisional Appli(cid:173)
`cation No. 61/220,092 which was filed Jun. 24, 2009 and
`which is fully incorporated herein by reference.
`
`BACKGROUND
`
`1. Field of the Invention
`The present invention relates to computers and, in particu(cid:173)
`lar, to methods, apparatus and systems for maintaining appro(cid:173)
`priate configuration updates to software/hardware configura(cid:173)
`tion through the use of physical device recognition to tailor
`configuration updates.
`2. Description of the Related Art
`Monitoring changes and updates to the plurality of com(cid:173)
`puterprograms resident on a client device is a difficult task for
`the typical user to consistently perform. In addition, the latest
`update from a vendor may not be appropriate considering the 20
`hardware, software or physical/geo-location of the client
`device. Thus, there is a need in the art for a tool that will
`automate the program configuration update process and opti(cid:173)
`mize the suggested updated program configuration to match
`the environment of the client device.
`The present invention is directed toward a system, method
`and apparatus for remote updating of the configuration of a
`computer. One embodiment of the invention is system for
`remote updating a computer configuration, comprising: a cli(cid:173)
`ent device configured to load a computer program to perform
`a remote update; a processor, at the client device, configured
`to perform physical device recognition on the client device to
`determine machine parameters, wherein unique device iden(cid:173)
`tifiers are generated for the client device, at least in part, based
`on the determined machine parameters; a transceiver config- 35
`ured to send the unique device identifiers to at least one of an
`auditing server and an update server via Internet; an update
`server configured to collect the unique device identifiers from
`at least one client device; a processor, at the update server,
`configured to analyzed the unique identifiers at the update 40
`server, wherein the analyzed unique identifiers determine an
`updated program configuration; and a transceiver, at the
`update server, configured to deliver the updated program
`configuration to the client device via Internet.
`In accordance with one aspect of the embodiments 45
`described herein, there is provided an apparatus for remote
`update of a program, comprising: means for loading a client
`device with a computer program configured to perform a
`remote update; means for performing physical device recog(cid:173)
`nition on the client device to determine machine parameters; 50
`means for generating unique device identifier based at least in
`part on the determined machine parameters; means for send(cid:173)
`ing the unique device identifier to at least one of an auditing
`server and an update server; and means for receiving an
`updated program configuration from the update server.
`In accordance with another aspect of the embodiments
`described herein, there is provided a method for remote
`update of a program, comprising: collecting unique identifi-
`ers from at least one of an audit server and client device at an
`update server; analyzing the unique identifiers; determining 60
`an updated program configuration for the client device from
`the analyzed unique identifiers; and delivering the updated
`program configuration to the client.
`In accordance with another aspect of the embodiments
`described herein, there is provided a tangible computer read- 65
`able medium having stored thereon, computer-executable
`instructions that, if executed by a computing device, cause the
`
`10
`
`2
`computing device to perform a method comprising: loading a
`client device with a computer program configured to perform
`a remote update; performing physical device recognition on
`the client device to determine machine parameters; generat(cid:173)
`ing unique device identifier based at least in part on the
`determined machine parameters; sending the unique device
`identifier to at least one of an auditing server and an update
`server; and receiving an updated program configuration from
`the update server.
`In accordance with another aspect of the embodiments
`described herein, there is provided an apparatus for remote
`updating of a program, comprising: means for collecting
`unique identifiers from at least one of an audit server and
`15 client device; means for analyzing the unique identifiers;
`means for determining an updated program configuration for
`the client device from the analyzed unique identifiers; and
`means for delivering the updated program configuration to
`the client.
`In accordance with another aspect of the embodiments
`described herein, there is provided a tangible computer read(cid:173)
`able medium having stored thereon, computer-executable
`instructions that, if executed by a computing device, cause the
`computing device to perform a method comprising: collect-
`25 ing unique identifiers from at least one of an audit server and
`client device; analyzing the unique identifiers; determining
`an updated program configuration for the client device from
`the analyzed unique identifiers; and delivering the updated
`program configuration to the client.
`
`30
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is a schematic diagram of a system for remote
`updating of a client device by an update server in accordance
`with an embodiment of the invention.
`FIG. 2 is a flow diagram of a method for remote updating of
`a client device in accordance with an embodiment of the
`invention implemented on the client device.
`FIG. 3 is a block diagram of an apparatus according to the
`invention that may be configured as a client device, or as a
`processor or similar device for use within a client device.
`FIG. 4 is a flow diagram of a method for remote updating of
`a client device in accordance with an embodiment of the
`invention implemented on the update server.
`FIG. 5 is a block diagram of an apparatus according to the
`invention that may be configured as an update server, or as a
`processor or similar device for use within an update server.
`FIG. 6 is a block diagram of memory allocation for a
`unique device identifier used in the various exemplary
`embodiments of the invention.
`
`DETAILED DESCRIPTION
`
`In accordance with the present technology, there is pro(cid:173)
`vided a system, method and apparatus for the remote update
`of computer software licenses through the use of physical
`device recognition. In particular, FIG. 1 shows an exemplary
`schematic diagram for a system for remote updating of at least
`one client device 100 by an update server 120 in accordance
`with an exemplary embodiment of the invention. In particu(cid:173)
`lar, FIG. 1, shows an exemplary system having at least one
`computing/network client device 100 that is in operative
`communication via the Internet 102 with an audit server 110
`and an update server 120. While only one client device 100 is
`illustrated in FIG. 1, it will be understood that a given system
`may comprise any number of client devices and use any
`
`55
`
`APPLE EXHIBIT 1001
`Page 9 of 15
`
`
`
`US 8,239,852 B2
`
`3
`number of apparatuses and methods of the invention as
`described herein. Further details regarding the system of FIG.
`1 are provided below.
`FIG. 2 provides an exemplary flow diagram of a method for
`remotely updating a client device. In particular, in step 210 of
`FIG. 2, the loading of at least one client device with a com(cid:173)
`puter program for remote updating is performed. Physical
`device recognition of at least one of a software, hardware and
`geo-location environment of the client device is performed to
`determine machine parameters in step 220. Step 230 involves
`generating unique device identifiers, at least in part, from the
`determined machine parameters. The unique device identifi-
`ers are sent to at least one of an audit server 110 and an update
`server 120, as shown in FIG. 1, in step 240. In step 250, the
`client device 100 receives an updated program configuration
`from the update server 120, as shown in FIG. 1.
`FIG. 3 illustrates an exemplary apparatus that may be con(cid:173)
`figured as a client device, comprising: a transceiver 304, a
`processor 306 and a memory 308; or as a processor 306; or as
`a similar device for use within a client device 100, as shown
`in FIG. 1, which provides the means for implementing the
`method, as disclosed in FIG. 2, on the client device 100. In
`particular, apparatus 300 may comprise means for loading
`320 a client device with a computer program for performing
`a remote update. In addition, the apparatus 300 may comprise
`means for performing 320 physical device recognition of one
`or more machine parameters of the client device. The
`machine parameters may comprise a combination of at least
`one user-configurable parameter and at least one non-user(cid:173)
`configurableparameter of the client device. Further, the appa(cid:173)
`ratus 300 may comprise a means for generating 340 a device
`identifier for the device based at least in part on the collected
`one or more machine parameters. Furthermore, apparatus 3 00
`may comprise means for sending unique identifiers to at least
`one of an audit server and an update server. Moreover, appa(cid:173)
`ratus 300 may comprise means for receiving 360 an updated
`program configuration from the update server.
`In addition, apparatus 300 may further comprise a means
`for determining the geo-location code for the device and for 40
`associating the geo-location code with a unique device iden(cid:173)
`tifier; and a software identifier to generate an audit number.
`The geo-location code may comprise, but is not limited to an
`Internet protocol (IP) address.
`The apparatus 300 may further comprise a means for gen(cid:173)
`erating a device identifier by implementing or executing at
`least one irreversible transformation such that the machine
`parameters cannot be derived from the device identifier. Addi(cid:173)
`tionally, at least one of the irreversible transformations may
`comprise, but is not limited to a cryptographic hash function.
`It is noted that apparatus 300 may optionally include a
`processor module 306 having at least one processor, in the
`case of apparatus 300 configured as computing device, rather
`than as a processor. Processor module 306, in such case, may
`be in operative communication with means for determining 55
`the geo-location code; means for generating a device identi(cid:173)
`fier by implementing or executing at least one irreversible
`transformation and components thereof, via a bus 302 or
`similar communication coupling. Processor 306 may effect
`initiation and scheduling of the processes or functions per- 60
`formed by means for generating a device identifier by imple(cid:173)
`menting or executing at least one irreversible transformation,
`and components thereof.
`In related aspects, apparatus 300 may include a transceiver
`module 304 for communicating with means for generating a 65
`device identifier by implementing or executing at least one
`irreversible transformation, and components thereof. A stand
`
`4
`alone receiver and/or stand alone transmitter may be used in
`lieu of or in conjunction with the transceiver 304.
`In addition, apparatus 300 may optionally include a means
`for storing information, such as, for example, a computer
`readable medium or memory device/module 308. Further, the
`memory device/module 308 may be operatively coupled to
`the other components ofapparatus 300 via bus 302 or the like.
`The computer readable medium or memory device 308 may
`be adapted to store computer readable instructions and data
`10 for effecting the methods of FIG. 2; and, as shown in FIG. 3,
`the processes and behavior of means 320-360; means for
`determining the geo-location code; means for generating a
`device identifier by implementing or executing at least one
`irreversible, and components thereof; or processor 306 (in the
`15 case of apparatus 300 being configured as a computing
`device) or the methods disclosed herein.
`In yet further related aspects, the memory module 308 may
`optionally include executable code for the processor module
`304 configured to: (a) determine machine parameters of a
`20 client device, the machine parameters comprising a combi(cid:173)
`nation of at least one user-configurable parameter and at least
`one non-user-configurable parameter of the device; (b) gen(cid:173)
`erate a device identifier for the device based, at least in part,
`on the machine parameters; and ( c) determine whether an
`25 Internet connection is available for the client device. One or
`more of steps (a)-( c) may be performed by a processor mod(cid:173)
`ule in lieu of or in conjunction with the means described
`above.
`FIG. 4 shows an exemplary flow diagram of a method for
`30 remote updating of a client device in accordance with an
`embodiment of the invention on the update server 120, as
`shown in FIG. 1. In particular, in step 410 the unique identi(cid:173)
`fiers are collected by update server 120 from at least one of the
`audit server 110 and the client device 100, as shown FIG. 1.
`35 The unique identifiers are then analyzed on the update server
`in step 420. Step 430 involves determining an updated pro(cid:173)
`gram configuration for the client device from the analysis of
`the unique identifiers. The updated program configuration is
`delivered to the client device in step 440.
`FIG. 5 shows an exemplary apparatus that may be config-
`ured as either an update server, or as a processor or similar
`device for use within the update server. an exemplary appa(cid:173)
`ratus diagram that may be configured as an update server
`comprising: a transceiver 504, a processor 506 and a memory
`45 508; or as a processor 506; or as a similar device for use within
`an update server 120, as shown in FIG. 1, which provides the
`means for implementing the method, as disclosed in FIG. 4,
`on the update server 120, as disclosed in FIG. 1. In particular,
`apparatus 500 may comprise means for collecting 520 unique
`50 identifiers from at least one of an audit server and at least one
`client device with a computer program for performing a
`remote update. In addition, the apparatus 300 may comprise
`means for analyzing 530 the unique identifiers that are deter(cid:173)
`mined, at least in part, from the machine parameter. The
`machine parameters may comprise a combination of at least
`one user-configurable parameter and at least one non-user(cid:173)
`configurable parameter of the client device. Further, the appa(cid:173)
`ratus 500 may comprise a means for determining 540 an
`updated program configuration for the device based, at least
`in part, on the collected one or more machine parameters.
`Furthermore, apparatus 500 may comprise means for deliv(cid:173)
`ering the updated program configuration for the client device
`100 from the update server 120, as shown in FIG. 1.
`It is noted that apparatus 500 may optionally include a
`processor module 506 having at least one processor, in the
`case of apparatus 500 configured as a computing device,
`rather than as a processor. In related aspects, apparatus 500
`
`APPLE EXHIBIT 1001
`Page 10 of 15
`
`
`
`US 8,239,852 B2
`
`5
`may include a transceiver module 504 for communicating
`with means for generating a device identifier by implement(cid:173)
`ing or executing at least one irreversible transformation, and
`components thereof. A stand alone receiver and/or stand
`alone transmitter may be used in lieu of or in conjunction with
`the transceiver 504.
`In addition, apparatus 500 may optionally include a means
`for storing information, such as, for example, a computer
`readable medium or memory device/module 508. Further, the
`memory device/module 508 may be operatively coupled to
`the other components of.apparatus 500 via bus 302 or the like.
`The computer readable medium or memory device 508 may
`be adapted to store computer readable instructions and data
`for effecting the methods of FIG. 4; and, as shown in FIG. 5,
`the processes and behavior of means 520-550, and compo(cid:173)
`nents thereof; or processor 506 (in the case of apparatus 300
`being configured as a computing device).
`In yet further related aspects, the memory module 508 may
`optionally include executable code for the processor module
`506 configured to: (a) collect unique identifiers from at least 20
`one of an audit server and client device; (b) analyze the
`collected unique identifiers; (c) determine an updated pro(cid:173)
`gram configuration for the client device; and ( d) deliver the
`updated program configuration to the client device(s ). One or
`more of steps (a)-( d) may be performed by a processor mod- 25
`ule in lieu of or in conjunction with the means described
`above.
`FIG. 6, discloses, for one or more embodiments described
`herein, an exemplary format for a unique device identifier
`600, which may further include two components: (1) a vari- 30
`able key portion; and (2) a system key portion. The variable
`key portion may be generated at the time of registration of
`client device 100 by reference to a variable platform param(cid:173)
`eter, such as, but not limited to: a reference to system time
`information, location and/or other parameters that are vari- 35
`able in nature may be utilized in other embodiments. The
`system key portion may include the above described param(cid:173)
`eters expected to be unique to the client device 100, that are
`for example, but not limited to: hard disk volume name, user
`name, computer name, user password, hard disk initialization 40
`date, or combinations thereof. The variable key portion and/
`or system key portion may be combined with the IP address
`and/or other platform parameters of the client device 100. It is
`noted that unique device identifiers, or portions thereof, may
`be encrypted to add an additional layer of specificity and 45
`security.
`With respect to the system, method and apparatus of the
`invention, the following paragraphs provide additional detail
`regarding the implementation of each of the embodiments
`discussed above.
`The machine parameters may further include, but are not
`limited to: user account information, program information
`(e.g., serial number); location of a user within a given appli(cid:173)
`cation program, and features of the software/hardware the
`user is entitled to use. As shown in FIG. 1, block 107, the
`updated program configuration delivered to the client device
`may include, but is not limited to: binary, executables, paths,
`dlls, miss or assets.
`The client device 100 may be, but is not limited to, a
`personal computer, a server computer, a laptop computer, a
`tablet computer, a personal digital assistant, a mobile phone,
`a wireless communication device, an onboard vehicle com(cid:173)
`puter, a game console, or any other machine/device capable of
`communication with a computer network, such as but not
`limited to the Internet. In related aspects, in wireless commu(cid:173)
`nications, Over The Air (OTA) Push or the like may be imple(cid:173)
`mented to download onto or upgrade (e.g., configuration/
`
`6
`settings, etc.) client network devices. OTA Push involves the
`use of wireless phone numbers (MS-ISDN) rather than IP.
`The client device 100 may comprise software (e.g., an
`operating system or other applications) that requires a license
`to be authorized for use. The client device 100 may further
`comprise an auditing tool or application. The auditing appli(cid:173)
`cation may be any program or application that collects iden(cid:173)
`tifying information regarding the client device 100 and/or
`software on the client device 100. The auditing application
`10 may comprise a stand alone application or an applet running
`within a web browser on the client device 100 (e.g., an applet
`comprising executable code for a Java Virtual Machine).
`The auditing application may be embedded in or associated
`with another software application, including, but not limited
`15 to software. For example, the auditing application may be
`embedded in or associated with a tool bar of a software
`application, for example, but not limited to a web browser.
`The auditing application may prompt the user to register with
`an online software registration service, or may run in the
`background with little or no interaction with the user of the
`client device 100.
`The auditing application may include a registration routine
`that collects information regarding client device 100 by
`checking a number of parameters which are expected to be
`unique to the client device environment. The parameters
`checked may include, but are not limited to: hard disk volume
`name, user name, device name, user passwo