`
`(12) Unlted States Patent
`(10) Patent No.:
`US 8,239,852 B2
`
`Etchegoyen
`(45) Date of Patent:
`Aug. 7, 2012
`
`(54) REMOTE UPDATE OF COMPUTERS BASED
`ON PHYSICAL DEVICE RECOGNITION
`
`(75)
`
`.
`.
`Inventor: Cralg Stephen Etchegoyen, Irv1ne, CA
`(US)
`
`(73) Assignee: Uniloc Luxembourg S.A., Luxembourg
`(LU)
`
`5,490,216 A
`51666415 A
`5,745,879 A
`5,754,763 A
`5,790,664 A
`5,925,127 A
`5,974,150 A
`
`2/ 1996 Richardson, 111
`9/1997 Kaufman
`4/1998 Wyman
`5/1998 Bereiter
`8/1998 Coley et 31.
`7/1999 Ahmad
`10/1999 Kaish et al.
`
`(Continued)
`FOREIGN PATENT DOCUMENTS
`
`( * ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`AU
`
`678985
`
`6/1997
`
`.
`(Confirmed)
`
`(21) Appl. No.: 12/818,906
`.
`.
`Ffled‘
`
`Jun' 18’ 2010
`
`(22)
`
`OTHER PUBLICATIONS
`Williams, R., “A Painless Guide to CRC Error Detection Algo-
`rithms”, Ver. 3, Aug. 19, 1993.
`
`(65)
`
`Prior Publication Data
`
`(Continued)
`
`Dec. 30, 2010
`US 2010/0333081 A1
`Related US. Application Data
`(60) Provisional application No. 61/220,092, filed on Jun.
`24, 2009-
`
`Primary Examiner 7 Wei Zhen
`Assistant Examiner * Qing Chen
`74 All
`, A
`I,
`F' 7 Sean D. Burdick
`(
`)
`orney
`gen or
`Irm
`(57)
`ABSTRACT
`
`(51)
`
`Int. Cl.
`(2006.01)
`G06F 9/44
`(52) US. Cl.
`......................... 717/172- 717/168- 717/171
`(58) Field of Classification Search
`’
`717/1687178
`See application file for complete search history.
`
`(56)
`
`References Cited
`
`'
`
`US. PATENT DOCUMENTS
`4 351 982 A
`9/1982 Miller et a1
`4,658,093 A
`4/1987 Hellman
`4,704,610 A
`11/1987 Smith et 31,
`4,796,220 A
`1/1989 Wolfe
`511555847 A * 10/1992 Klrouac et 3L ~~~~~~~~~~~~~~~ 709/221
`gégégg :
`$13343! gfiiiyet 31'
`5:414:269 A
`5/1995 Takahashi
`5,418,854 A
`5/1995 Kaufman et 31.
`5,440,635 A
`8/1995 Bellovin et a1.
`
`100
`
`A system for remotely updating a program configuration
`includes an update server in communication with a client
`deVice configured to execme a remme 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-
`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, anda second
`transceiver configured to deliver data representing the
`updatedprogram configurationto the client device for storage
`therem
`
`18 Claims, 6 Drawing Sheets
`
`I CLIENT
`I DEVICE
`
`111 1
`
`
`
`
`107
`CLIENT PROGRAM
`
`DELIVERS THE
`UPDATE TO THE
` UPDATE
`
`
`PROGRAM
`DELIVERED VIA
`
`NETWORK To
`CUSTOMER,
`UPDATES MAV BE
`BINARY
`
`ExECUTNaLEs,
`’101
`PATCHES. DLLs,
`
`
`/
`
`,
`CLIENT
`COMPUTER
`LOADS SECOND
`ORTHIRD ,
`
`MSIS0R ASSETS
`PROGRAM11I
`
`
`
`
`DATA IS RECEIVED BY THE
`
`UPDATE SERVER, THE INFO
`
`SEND RE DEVICEACCOUNT,
`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
`AUDIT
`PROGRAMAND/DR FEATURES
`SERVER
`THE USER IS ENTITLED To
`
`
`CLIENT SIDE
`PROGRAM SENDS
`DATA REGARDING
`
`ACCOUNT. DEVICE,
`AND PROGRAM INFO
`
`FOR AN UPDATE
`DELIVERY SERVER
`
`
`
`
`
`APPLE EXHIBIT 1 101
`
`Page 1 of 15
`
`APPLE EXHIBIT 1101
`Page 1 of 15
`
`
`
`US 8,239,852 B2
`
`Page 2
`
`2007/0169087 A1*
`2007/0198422 A1
`2007/0203846 A1
`2007/0219917 A1
`2007/0282615 A1
`2008/0065552 A1
`2008/0086423 A1
`2008/0147556 A1
`2008/0167943 A1
`2008/0228578 A1
`2008/0320607 A1
`2009/0037337 A1*
`2009/0083730 A1
`2009/0138975 A1
`
`........................... 717/168
`7/2007 Fadell
`8/2007 Prahlad et al.
`8/2007 Kavuri et al.
`9/2007 Liu et al.
`12/2007 Hamilton et al.
`3/2008 Elazar et a1.
`4/2008 Waites
`6/2008 Smith et al.
`7/2008 O’Neil et a1.
`9/2008 Mashinsky
`12/2008 Richardson
`2/2009 Baitalmal et al.
`3/2009 Richardson
`5/2009 Richardson
`
`............... 705/59
`
`EP
`EP
`EP
`EP
`W0
`W0
`W0
`W0
`W0
`W0
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`WO
`W0
`
`FOREIGN PATENT DOCUMENTS
`1 096 406
`5/2001
`1637958
`3/2006
`1637961
`3/2006
`1670188
`6/2006
`W0 9220022
`11/1992
`W0 9301550
`1/1993
`W0 9535533
`12/1995
`W0 0067095
`11/2000
`WO 01/90892
`11/2001
`WO 2005104686
`11/2005
`WO2007060516
`5/2007
`WO2008013504
`1/2008
`WO2008157639
`12/2008
`WO2009039504
`3/2009
`WO2009065135
`5/2009
`WO2009076232
`6/2009
`WO2009105702
`8/2009
`WO2009143115
`11/2009
`WO 2009158525
`12/2009
`
`OTHER PUBLICATIONS
`
`Angha, F. et al., “Securing Transportation Network Infrastructure
`with Patented Technology ofDevice LockingiDeveloped by Uniloc
`USA”,
`avail.
`at: http://www.dl<sassociates.com/admin/paperfile/
`ITS%20World%20Paper%20SubmissioniUniloc%20727.pdf,
`Oct. 24, 2006.
`Econolite, “Econolite and Uniloc Partner to Bring Unmatched Infra-
`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-
`agement Server 2003,” 2003, Internet Citation retrieved on Jun. 27,
`2007. XP 002439673.
`Rivest, R. “RFC 13217The 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/ch01,01.htm.
`XP002603488.
`
`* cited by examiner
`
`APPLE EXHIBIT 1 101
`
`Page 2 of 15
`
`............... 717/168
`
`............. 717/173
`
`............... 713/200
`
`..................... 717/170
`
`.................. 717/173
`
`............. 717/172
`
`............... 717/173
`
`................. 713/191
`
`.................... 381/60
`
`U.S. PATENT DOCUMENTS
`Horstrnann
`12/1999
`3/2000
`Colvin
`12/2000
`Bharathan et al.
`5/2001
`Revashetti et a1.
`5/2001
`Cohen
`6/2001
`Pearce et al.
`9/2001
`Brunfeld et al.
`11/2001
`Eldering
`........................ 709/219
`* 12/2001
`Fawcett
`12/2001
`England et a1.
`9/2002
`Nash
`* 10/2002
`a1Safadi et al.
`3/2003
`Augarten
`8/2004
`Colvin
`2/2005
`Lambiase
`4/2005
`Kidder et al.
`7/2005
`Doherty et al.
`12/2005
`Tadayon et al.
`4/2006
`Su et al.
`6/2006
`Aull
`6/2006
`Cognigni et a1.
`8/2006
`Lao et al.
`3/2007
`Cronce et al.
`4/2007
`Zhang et a1.
`4/2007
`Abburi et al.
`4/2007
`Gilliam et al.
`9/2007
`Pierson et a1.
`1/2008
`Hoffman et al.
`2/2008
`Bachelder et a1.
`2/2008
`Chen et al.
`3/2008
`Bergler et al.
`12/2008
`Kiesel et a1.
`8/2009
`Zomaya et al.
`1/2010
`Lindahi et al.
`3/2010
`Ferguson et al.
`10/2001
`Colvin
`11/2001
`Hughes et al.
`Ganesan
`2/2002
`6/2002
`Kobata et a1.
`7/2002
`Lambert et al.
`10/2002
`Coley et a1.
`1/2003
`Mah et a1.
`4/2003
`Willey
`9/2003
`Cronce et al.
`* 10/2003
`Tabbara ........................ 709/313
`2/2004
`Sato et al.
`2/2004
`Merkle et al.
`3/2004
`Rodgers et a1.
`7/2004
`Ligeti et al.
`9/2004
`Owen et al.
`2/2005
`Carter et al.
`3/2005
`Roetter et a1.
`5/2005
`Stefik et al.
`6/2005
`Lewis
`8/2005
`Ziegler et al.
`* 11/2005
`Ferguson et al.
`4/2006
`Engel et al.
`5/2006
`Shankar et al.
`7/2006
`Morrison et a1.
`11/2006
`Wesinger, Jr.
`12/2006
`Takano et al.
`3/2007
`Baluja
`Bozeman
`7/2007
`
`AAAB
`
`1
`B1
`B1
`B1
`B1
`B1
`B1
`B1
`B1
`B1
`B2
`B1
`B2
`B1
`B2
`B1
`B2
`B2
`B2
`B2
`B2
`B2
`B2
`B2
`B1
`B2
`B2
`B2
`B2
`B2
`B1
`B2
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`A1
`
`*
`
`*
`
`*
`
`*
`
`*
`
`*
`
`*
`
`6,009,401
`6,044,471
`6,158,005
`6,230,199
`6,233,567
`6,243,468
`6,294,793
`6,324,519
`6,327,617
`6,330,670
`6,449,645
`6,467,088
`6,536,005
`6,785,825
`6,859,793
`6,880,086
`6,920,567
`6,976,009
`7,032,110
`7,069,440
`7,069,595
`7,085,741
`7,188,241
`7,200,237
`7,203,966
`7,206,765
`7,272,728
`7,319,987
`7,327,280
`7,337,147
`7,343,297
`7,463,945
`7,577,948
`7,653,899
`7,676,804
`2001/0034712
`2001/0044782
`2002/0019814
`2002/0082997
`2002/0099952
`2002/0161718
`2003/0014745
`2003/0065918
`2003/0172035
`2003/0195995
`2004/0024860
`2004/0030912
`2004/0059929
`2004/0143746
`2004/0187018
`2005/0034115
`2005/0055269
`2005/0108173
`2005/0138155
`2005/0172280
`2005/0262498
`2006/0072444
`2006/0095454
`2006/0161914
`2006/0265337
`2006/0282511
`2007/0072676
`2007/0168288
`
`APPLE EXHIBIT 1101
`Page 2 of 15
`
`
`
`U.S. Patent
`
`Aug. 7, 2012
`
`Sheet 1 of 6
`
`US 8,239,852 B2
`
`CLIENT
`
`
`107--
`CLIENT PROGRAM 3
`
`DEVICE
`
`
`
`................-.................................... V
`DELIVERS THE
`
`UPDATE
`UPDATE TO THE
`
`
`PROGRAM
`DELIVERED VIA i
`NETWORK TO
`
`
`CUSTOMER.
`
`
`UPDATES MAY BE
`
`
`
`BINARY
`CLIENT
`
`EXECUTABLES,
`COMPUTER
`
`
`PATCHES, DLLS,
`LOADS SECOND
`
`
`
`MSIS OR ASSETS
`OR THIRD
`
`
`
`PROGRAM
`
`
`%
`
`103 .5
`
`
`
`
`NETWORK/HTTP
`
`/HTTPS
`
`_____________
`
`CLIENT SIDE
`PROGRAM SENDS
`DATA REGARDING
`ACCOUNT, DEVICE,
`AND PROGRAM INFO
`FOR AN UPDATE
`DELIVERY SERVER
`
`
`
`AUDIT
`SERVER
`
`DATA IS RECEIVED BY THE
`
`
`UPDATE SERVER. THE INFO
`
`
`SEND RE DEVICE, ACCOUNT,
`
`
`GEO-LOCATION AND PROGRAM 3
`ARE INSPECTED AND A SUITABLE
`
`
`5
`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
`
`
`FIG. 1
`
`APPLE EXHIBIT 1 101
`
`Page 3 0f15
`
`
`
`Q U
`
`PDATE
`SERVER
`
`
`
`
`APPLE EXHIBIT 1101
`Page 3 of 15
`
`
`
`U.S. Patent
`
`Aug. 7, 2012
`
`Sheet 2 of 6
`
`US 8,239,852 B2
`
`
`
`LOADING CLIENT
`DEVICE(S) WITH A
`COMPUTER PROGRAM
`
`_ FOR PERFORMING A .
`'
`REMOTE UPGRADE
`.
`
`
`
`
`
`
`
`i
`
`I
`
`PERFORMING
`PHYSICAL DEVICE
`RECOGNITION ON THE
`
`220
`
`_CL_IENT D_EVICE(S) To _
`DETERMINE MACHINE
`'PARAMETERS'
`
`'
`
`'
`
`230
`
`240
`
`250
`
`GENERATING UNIQUE
`
`DEVICE IDENTIFIERS,
`
`AT LEAST IN PART,
`
`
`
`
`.
`EROMTHE
`.
`.
`DETERMINED MACHINE
`
`
`
`
`-
`
`
`
`- PARAMETERS -
`
`_
`
`-
`
`' SENGDIN TI-IE UNQEIU
`IDENTIFIERS TO AT
`LEAST ONE OF AN
`
`AUDIT SERVER AND AN -
`
`'
`
`. UPDATE SERVER.
`
`RECEIVING AN
`UPDATED PROGRAM
`
`CONFIGURATIONFROM3
`
`_THE UPDATESERVER
`
`'
`
`FIG. 2
`
`APPLE EXHIBIT 1 101
`
`Page 4 of 15
`
`APPLE EXHIBIT 1101
`Page 4 of 15
`
`
`
`US. Patent
`
`Aug. 7, 2012
`
`Sheet 3 of6
`
`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
`
`
`
`
`
`
`
`
`
`
`
`MEANS FOR GENERATING UNIQUE
`DEVICE IDENTIFIERS, AT LEAST IN PART,
`FROM THE DETERMINED MACHINE
`PARAMETERS
`
`
`
`
`
`
`MEANS FOR SENDING UNIQUE
`
`
`IDENTIFIERS TO AT LEAST ONE OF AN
`----------------------
`AUDIT SERVER AND AN UPDATE SERVER
`
`c -s 1saI.elcpsan:n c :
`
`rstienc,s1s a I
`
`mununvnu-J
`
`
`
`MEANS FOR RECEIVING AN UPDATED
`
`
`PROGRAM CONFIGURATION FROM THE
`»»»»»»»»»»»»»»»»»»»»» .
`UPDATE SERVER
`
`
`
`FIG. 3
`
`308
`
`APPLE EXHIBIT 1 101
`
`Page 5 0f 15
`
`APPLE EXHIBIT 1101
`Page 5 of 15
`
`
`
`U.S. Patent
`
`Aug. 7, 2012
`
`Sheet 4 of 6
`
`US 8,239,852 B2
`
`COLLECTING UNIQUE
`IDENTIFIERS FROM AT
`LEAST ONE OF THE
`
`:
`
`.-
`
`.
`
`'
`
`-
`
`_
`
`'AUDI'T SERVERAND
`
`' .THE CLIENT DEVICE(S)
`
`ANALYZING THE
`
`UNIQUE IDENTIFIERS
`
`
`
`DETERMINING AND
`UPDATED PROGRAM
`CONFIGURATION FOR
`
`THE CLIENT- DEVICES- j
`
`DELIVERING THE
`UPDATED PROGRAM
`
`. CONFIGURATIONTO
`' THE CLIENT DEVICES
`
`FIG. 4
`
`APPLE EXHIBIT 1 101
`
`Page 6 0f 15
`
`APPLE EXHIBIT 1101
`Page 6 of 15
`
`
`
`US. Patent
`
`Aug. 7, 2012
`
`Sheet 5 of6
`
`US 8,239,852 B2
`
`50
`
`520
`
`502
`
`MEANS FOR COLLECTING UNIQUE
`IDENTIFIERS FROM AT LEAST ONE OF AN
`
`MEANS FOR ANALYZING
`THE UNIQUE IDENTIFIERS
`
`AUDIT SERVICE AND CLIENT DEVICE(S)
`
`
`
`
`MEANS FOR DETERMINING AN UPDATED
`
`PROGRAM CONFIGURATION FOR THE
`
`
`
`
`
`CLIENT DEVICE(S)
`
`MEANS FOR DELIVERING THE UPDATED
`
`PROGRAM CONFIGURATION FOR THE
`
`
`
`
`
`CLIENT DEVICE(S)
`
`
`
`FIG. 5
`
`APPLE EXHIBIT 1 101
`
`Page 7 0f 15
`
`APPLE EXHIBIT 1101
`Page 7 of 15
`
`
`
`US. Patent
`
`Aug. 7, 2012
`
`Sheet 6 of6
`
`US 8,239,852 B2
`
`610
`
`
`
`WW
`
`
`
`VARIABLE KEY
`PORTION
`
`SYSTEM KEY
`PORTION
`
`FIG. 6
`
`APPLE EXHIBIT 1 101
`
`Page 8 0f 15
`
`APPLE EXHIBIT 1101
`Page 8 of 15
`
`
`
`US 8,239,852 B2
`
`1
`REMOTE UPDATE OF COMPUTERS BASED
`ON PHYSICAL DEVICE RECOGNITION
`
`This application claims priority to US. Provisional Appli-
`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-
`lar, to methods, apparatus and systems for maintaining appro-
`priate configuration updates to software/hardware configura-
`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-
`puter programs 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
`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-
`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-
`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-
`tifiers are generated for the client device, at least in part, based
`on the determined machine parameters; a transceiver config-
`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
`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
`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-
`nition on the client device to determine machine parameters;
`means for generating unique device identifier based at least in
`part on the determined machine parameters; means for send-
`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
`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-
`able medium having stored thereon, computer-executable
`instructions that, ifexecuted by a computing device, cause the
`
`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-
`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
`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-
`able medium having stored thereon, computer-executable
`instructions that, ifexecuted by a computing device, cause the
`computing device to perform a method comprising: collect-
`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.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`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.
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`FIG. 2 is a flow diagram ofa 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 ofa 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-
`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 ofat least
`one client device 100 by an update server 120 in accordance
`with an exemplary embodiment of the invention. In particu-
`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
`
`APPLE EXHIBIT 1 101
`
`Page 9 of 15
`
`APPLE EXHIBIT 1101
`Page 9 of 15
`
`
`
`US 8,239,852 B2
`
`10
`
`15
`
`20
`
`25
`
`30
`
`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 5
`FIG. 2, the loading of at least one client device with a com-
`puter program for remote updating is performed. Physical
`device recognition of at least one of a software, hardware and
`geo-location environment ofthe 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-
`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-
`configurable parameter ofthe client device. Further, the appa-
`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-
`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
`associating the geo-location code with a unique device iden-
`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-
`erating a device identifier by implementing or executing at
`least one irreversible transformation such that the machine
`
`35
`
`40
`
`45
`
`parameters cannot be derived from the device identifier. Addi-
`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
`the geo-location code; means for generating a device identi-
`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-
`formed by means for generating a device identifier by imple-
`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
`device identifier by implementing or executing at least one
`irreversible transformation, and components thereof. A stand
`
`50
`
`55
`
`60
`
`65
`
`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 of apparatus 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
`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
`case of apparatus 300 being configured as a computing
`device) or the methods disclosed herein.
`In yet further related aspects, the memory module 3 08 may
`optionally include executable code for the processor module
`304 configured to: (a) determine machine parameters of a
`client device, the machine parameters comprising a combi-
`nation of at least one user-configurable parameter and at least
`one non-user-configurable parameter of the device; (b) gen-
`erate a device identifier for the device based, at least in part,
`on the machine parameters; and (c) determine whether an
`Internet connection is available for the client device. One or
`
`more of steps (a)-(c) may be performed by a processor mod-
`ule in lieu of or in conjunction with the means described
`above.
`
`FIG. 4 shows an exemplary flow diagram of a method for
`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-
`fiers are collected by update server 120 from at least one ofthe
`audit server 110 and the client device 100, as shown FIG. 1.
`The unique identifiers are then analyzed on the update server
`in step 420. Step 430 involves determining an updated pro-
`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-
`ratus diagram that may be configured as an update server
`comprising: a transceiver 504, a processor 506 and a memory
`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
`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-
`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-
`configurable parameter ofthe client device. Further, the appa-
`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-
`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 1101
`
`Page 10 of 15
`
`APPLE EXHIBIT 1101
`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-
`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-
`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
`one of an audit server and client device; (b) analyze the
`collected unique identifiers; (c) determine an updated pro-
`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-
`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-
`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-
`eter, such as, but not limited to: a reference to system time
`information, location and/or other parameters that are vari-
`able in nature may be utilized in other embodiments. The
`system key portion may include the above described param-
`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, userpassword, hard disk initialization
`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 ofthe client device 100. It is
`noted that unique device identifiers, or portions thereof, may
`be encrypted to add an additional layer of specificity and
`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-
`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-
`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-
`nications, Over The Air (OTA) Push or the like may be imple-
`mented to download onto or upgrade (e.g., configuration/
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`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-
`cation may be any program or application that collects iden-
`tifying information regarding the client device 100 and/or
`software on the client device 100. The auditing application
`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
`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 password, hard disk
`initialization date, etc. The collected information may
`include, but is not limited to: information that identifies the
`hardware comprising the platform on which the web browser
`runs, such as, CPU number, or other unique parameters asso-
`ciated with the firmware in use. The system information may
`further include, but is not limited to: system configuration
`information, amount of memory, type of processor, software
`or operating system serial number, etc.
`In the alternative, or in addition, the parameters checked
`may include, but are not limited to virtual machine specifica-
`tions. Examples of virtual machine specifica