throbber
as) United States
`a2) Patent Application Publication 0) Pub. No.: US 2004/0059938 Al
`
` Hughesetal. (43) Pub. Date: Mar. 25, 2004
`
`
`US 20040059938A1
`
`(54) HARDWARE ID TO PREVENT SOFTWARE
`PIRACY
`
`(52) US. C1.
`
`eeeeceecsseessseseecnesnseneeeneesses 713/200; 705/59
`
`(75)
`
`Inventors: Aidan T. Hughes, Bellevue, WA (US);
`David Barnaby Pearce, West Palm
`Beach, FL (US)
`Maedann&GOULD
`P.O. BOX 2903
`MINNEAPOLIS, MN 55402-0903 (US)
`
`(73) Assignee: Microsoft Corporation, Redmond, WA
`(US)
`
`(21) Appl. No.:
`
`10/668,580
`
`(22)
`
`Filed:
`
`Sep. 23, 2003
`Related U.S. Application Data
`
`(60) Division of application No. 09/859,915,filed on May
`17, 2001, which is a continuation-in-part of applica-
`tion No. 09/070,518,filed on Apr. 29, 1998, now Pat.
`No. 6,243,468.
`Publication Classification
`
`(S51)
`
`Int. C1? oe G06F 12/14; HO4L 9/00
`
`(57)
`
`ABSTRACT
`
`In one embodiment, the invention is a 64 bit hardware ID
`(H/W ID)
`for tying a software product
`to a particular
`computer to prevent software piracy. The 64 bit hardware ID
`represents ten different components of the user’s computer:
`the CD-ROM device, the disk adapter, the disk device, the
`display adapter,
`the first drive serial number,
`the MAC
`address, the processor serial number, the processor type, the
`RAM size in Mb, and the SCSI adapter. Each time the
`software product is opened, the expanded H/W ID is com-
`pared to the hardware on the computer to determine whether
`a predetermined minimum number of components match. In
`one embodiment, the expanded H/W ID allows for expan-
`sion of the user’s computer because so long as the compo-
`nent originally listed in the expanded H/W IDcan be found
`on the computer, then that component matches the expanded
`H/W ID. Typically, seven out of ten components in the
`expanded HIW ID must match the computer before the
`software product will fully operate.
`
`170
`
`172
`
`
`
`
`Start Program
`
`Get PID
`
`
`
`
`
`Generate H/W ID
`
`
`
`
`
`174
`
`176
`
`
`
`
`
`Compute test
`ID from PID and H/W ID
`
`Retrieve Licensefile fro
`memory
`
`
` 178
`
`
`
`
`Lock Program
`
`Allow Program
`to Operate
`
`184
`
`
`
`APPLE EXHIBIT 1108
`Page | of 15
`
`APPLE EXHIBIT 1108
`Page 1 of 15
`
`

`

`Patent Application Publication
`
`Mar. 25, 2004 Sheet 1 of 6
`
`US 2004/0059938 Al
`
`YJOMJBNBadly[2907]
`
`yJOMISN
`
`aoBLE}y|
`
`AUGASIC
`
`SOeHSyU]
`
`jeondo
`
`oneubeyy
`4SICPAEH
`
`
`
`sainpo=wesbolg
`
`8AASIC
`
`BIBYS}u|
`
`aoepayuj
`
`AUG
`
`wes6Osq
`
`eyeg
`
`arLe
`
`
`
`Joydepyyun
`
`oaplABulssao0ld
`
`
`
`Asowswaysks
`
`
`
`
`
`ginpo;eyjeg*wesbolgsainpo=|ainpo-;weibogwuayshS
`
`uonesddywei6o0igwesBosd9¢uonesyddyBuneiedo
`
`
`
`
`£79€uoneaddy
`
`sngwaishsgewashsBunessdo
`
`
`
`
`
`
`
`
`Jayndwoa
`
`a}OWaY
`
`
`
`OrpseogheyZPtr
`
`asnow
`
`weJbolg
`
`e}eG
`
`APPLE EXHIBIT 1108
`Page 2 of 15
`
`APPLE EXHIBIT 1108
`Page 2 of 15
`
`
`
`
`
`
`
`
`

`

`Patent Application Publication Mar. 25, 2004 Sheet 2 of 6
`
`US 2004/0059938 Al
`
`PEE
`
`
`
`JBAIBSUOHDAOY
`
`WULOO
`
`Bulusoy
`
`
`
`JUN)UOYDAYOY
`
`o0e
`
`UOHDAIOW
`
`asoqnjog
`
`aun]or[ala
`
`esusory
`
`z‘bie JOWOISND
`
`O4sulft
`
`WoOIBOldg
`
`TOC
`
`Jajndwo7JawOosny
`
`gdexoIazz
`
`wuywobly
`
`BulysoH
`
`APPLE EXHIBIT 1108
`Page 3 of 15
`
`APPLE EXHIBIT 1108
`Page 3 of 15
`
`
`
`

`

`Patent Application Publication Mar. 25,2004 Sheet 3 of 6
`
`US 2004/0059938 Al
`
`Software Product on
`Customer Computer
`
`Activation Unit on
`Product Provider Server
`
`150
`
`Get PID
`
`Generate
`Hardware ID
`
`Send PID and H/W ID
`To Activation
`Authority
`
`Store licensefile
`
`(H/W ID)
`
`
`
`156
`
`158
`
`160
`
`Compute Licensefile
`
`Store PID, H/W
`ID, and License file
`
`Send Licensefile to
`Customer
`Computer
`
`Fig. 3
`
`APPLE EXHIBIT 1108
`Page 4 of 15
`
`APPLE EXHIBIT 1108
`Page 4 of 15
`
`

`

`Patent Application Publication Mar. 25,2004 Sheet 4 of 6
`
`US 2004/0059938 Al
`
`170
`
` Start Program
`
`Get PID
`
`176
`
`
`
`Compute test
`
`
`etrieve Licensefile fro
`
`
`
`Generate H/W ID 174
`
`ID from PID and H/W ID 178
`memory 180
`
`with Licensefile
`
`Comparetest ID
`
`
`Allow Program
` Lock Program
`
`to Operate
`
`
`184
`
`Fig. 4
`
`APPLE EXHIBIT 1108
`Page 5 of 15
`
`APPLE EXHIBIT 1108
`Page 5 of 15
`
`

`

`Patent Application Publication Mar. 25,2004 Sheet 5 of 6
`
`US 2004/0059938 Al
`
`
`
`
`Changedigit in H/W ID
`To get modified H/W ID
`
`Concatenate PID and
`Modified H/W ID
`
`Computetest ID from
`PID and modified
`H/W ID
`
`
`
`
`
`
`
`190
`
`192
`
`194
`
`196
`
`Comparetest ID
`with license file
`
`
`
`Tried All
`
`permutationsof
`H/W ID?
`
`
`Allow Program
`to Operate
`
`Lock Program
`
`
`200
`
`Fig. 5
`
`APPLE EXHIBIT 1108
`Page 6 of 15
`
`APPLE EXHIBIT 1108
`Page 6 of 15
`
`

`

`Patent Application Publication Mar. 25,2004 Sheet 6 of 6
`
`US 2004/0059938 Al
`
`Start Program
`
`604
`
`602
`
`
`
`606
`
`608
`
`Getportion of H/W ID
`
`
`
`Compere portion of
`H/W ID with alll
`
`Appropriate components
`On computer
`
`
` More portions of
`H/W ID to examine?
`
`Is count greater than
`minimum?
`
`
`
`
`to Operate
` Lock Program
`
`Allow Program
`
`
`
`Fig. 6
`
`APPLE EXHIBIT 1108
`Page 7 of 15
`
`618
`
`APPLE EXHIBIT 1108
`Page 7 of 15
`
`

`

`US 2004/0059938 Al
`
`Mar. 25, 2004
`
`HARDWARE ID TO PREVENT SOFTWARE
`PIRACY
`
`REFERENCE TO RELATED APPLICATIONS
`
`[0001] This is a continuation-in-part of U.S. patent appli-
`cation Ser. No. 09/070,518, entitled “SOFTWARE ANTI-
`PIRACY SYSTEM THAT ADAPTS TO HARDWARE
`
`UPGRADES”,filed Apr. 29, 1998, which is incorporated by
`reference herein.
`
`TECHNICAL FIELD
`
`[0002] The invention generally relates to systems and
`methods for preventing piracy or illicit use of software by
`identifying hardware components of a computer. More par-
`ticularly, this invention relates to such systems and methods
`that allow hardware components of the underlying computer
`to be upgraded and the software to be legitimately installed
`on the upgraded machine withouttriggering the anti-piracy
`protection.
`
`BACKGROUND
`
`[0003] Computer software is a unique consumer product
`in that the same product can be replicated many timesafter
`being sold. Once a software product is sold, typically as
`software code on a computer-readable disk, the purchaser
`can easily copy the code to other computer-readable media
`thereby replicating the same product many times over.
`
`[0004] This characteristic of software can be a tremendous
`benefit in terms of lowering manufacturing costs and facili-
`tating distribution. For instance, easy replication allows a
`software manufacturer to distribute one physical copy of the
`software product and sell a multi-seat license that legally
`empowers the purchaser to install the software product on
`many different computers.
`
`[0005] Unfortunately, this benefit comes at a cost of open
`abuse. One well-known abuse is piracy. An unscrupulous
`party can obtain a copy of the object code (legally or
`illegally) and thenillicitly replicate and resell pirated copies
`of the product. Software companies attempt
`to monitor
`piracy activities, but detection is often difficult. Moreover,
`even when improperactivity is detected, enforcement and
`legal recourse is often unavailable from a practical stand-
`point, particularly since much of the abuse occurs in foreign
`lands.
`
`[0006] A less subtle abuse is the improper use of a
`software product beyond the scope of the license. One
`common scenario involves a shrink-wrap software product
`available at
`local retail stores. The product
`is typically
`accompanied by a shrink-wrap license to install and use the
`product on one computer, and perhaps additionally on a
`laptop. Unfortunately, the purchaser may intentionally or
`unintentionally install the product on more than the allowed
`computers, thereby violating the license. For the software
`manufacturer, this form of abuse is very difficult to monitor
`and even more difficult to prosecute.
`
`[0007] The computer software industry estimates billions
`of dollars are lost each year due to piracy and otherillicit
`uses. While licenses provide a legal avenue for recourse
`against such practices,
`the practicality of detecting and
`enforcing these licenses often proves too onerous for the
`
`manufacturer. Accordingly, software companies have a real
`incentive to reduce the amount of abuses through other
`means.
`
`[0008] One conventional technique for preventing unlim-
`ited copying of a software productis to design the code with
`a self-regulating mechanism that prevents repeated installa-
`tions. This mechanism counts the number of installations
`and disables the software code after the product has been
`installed a certain numberof times. The underlying premise
`is that multiple installations tend to indicate that the user is
`attempting to install the product on multiple different com-
`puters, rather than just one computer allowed bythe license.
`
`[0009] As an example of this concept, suppose a manu-
`facturer creates a software product and places the code on a
`disk, such as a CD-ROM or floppy diskette. The disk is
`packaged to form a shrink-wrap retail product. The manu-
`facturer generates and assignsa serialized key that uniquely
`identifies that product. For instance, the key might consist of
`a manufacturer ID, a serialized incrementing number, a
`registered product code, and a checksum value. The key is
`printed on a label and affixed somewhere on the product,
`such as the CD-ROMcase.
`
`[0010] During installation, the purchaser of the software
`product is prompted to enter the key. This step alone is
`designed to prevent another party from obtaining the disk
`only, without knowledge of the key, and installing the
`product illegally. Without the key, the holder of the physical
`disk is prevented from installing the product.
`
`tracks the number of installations.
`(0011] The product
`Once the purchaser enters the same key more times than a
`defined limit, the product is disabled. The purchaseris then
`forced to call the manufacturer for assistance.
`
`[0012] While such mechanismshelp reduceillicit copy-
`ing, they often cause other problems in the form of consumer
`inconvenience. For instance, the premise that more instal-
`lations than a requisite number means illegal use may be
`wrong in some cases. A user who has upgraded his/her
`computer, for example, should be able to legitimately rein-
`stall the software product on the upgraded machine. How-
`ever, if the requisite numberofinstallations has already been
`reached,the product will not install, forcing the user (whois
`now disgruntled) to call the manufacturer for assistance.
`
`[0013] Accordingly, there remains a need for improved
`technology solutions to piracy and illicit use, while recog-
`nizing and accommodating the needs and practices of a
`legitimate purchaser.
`
`SUMMARYOF THE INVENTION
`
`[0014] The present invention meets the above-described
`needs by providing a system for enabling enforcement of
`written software licensing terms for a software product for
`use with a computer having a set of hardware components.
`
`the system includes a software
`In one aspect,
`[0015]
`productresident on a computer, the software product having
`an associated product ID. The software product generates a
`hardwareID that identifies the set of hardware components
`on the computer. In one embodiment, a 64-bit hardware ID
`that identifies a set of ten hardware components within the
`computer is derived. The 64 bit hardware ID represents ten
`different components of the user’s computer: the CD-ROM
`
`APPLE EXHIBIT 1108
`Page 8 of 15
`
`APPLE EXHIBIT 1108
`Page 8 of 15
`
`

`

`US 2004/0059938 Al
`
`Mar. 25, 2004
`
`The 64 bit hardware ID represents ten different components
`of the user’s computer:
`the CD-ROM device,
`the disk
`adapter, the disk device, the display adapter, the first drive
`serial number, the MACaddress, the processor serial num-
`ber, the processor type, the RAM size in Mb, and the SCSI
`adapter. Each time the software product
`is opened,
`the
`expanded H/W ID is compared to the hardware on the
`computer to determine whether a predetermined minimum
`number of components match.
`In one embodiment,
`the
`expanded H/W ID allows for expansion of the user’s com-
`puter because so long as the componentoriginally listed in
`the expanded H/W ID can be found on the computer, then
`that component matches the expanded H/W ID. Typically,
`seven out of ten components in the expanded H/W ID must
`match the computer before the software product will oper-
`ate.
`
`[0025] FIG. 2 showsan anti-piracy system 300 that facili-
`tates activation of a software product with an activation
`authority for installation and use on a particular computer.
`The system 300 includes a customer computer 20 and an
`activation server 334, which residesat the activation author-
`ity remote from the customer. The customer computer 20
`and activation server 334 are interconnected by a network
`336 to provide data communication. In the absence of a
`customer computer’s access to a network, the manufacturer
`or trusted third party may provide proxy access to the
`activation server by other means,such as electronic mail, fax
`machine, postal mail, or telephone.
`
`device, the disk adapter, the disk device, the display adapter,
`the first drive serial number, the MAC address, the processor
`serial number, the processor type, the RAM size in Mb, and
`the SCSI adapter. Each time the software product is opened,
`the expanded H/W ID is compared to the hardware on the
`computer to determine whether a predetermined minimum
`number of components match.
`In one embodiment,
`the
`expanded HI/W ID allows for expansion of the user’s
`computer because so long as the componentoriginally listed
`in the expanded H/W ID can be found on the computer, then
`that component matches the expanded H/W ID. Typically,
`seven out of ten components in the expanded H/W ID must
`match the computer before the software product will oper-
`ate.
`
`In another aspect of the invention, the software
`[0016]
`product is subsequently launched following installation and
`the software product retrieves the 64-bit hardware ID. The
`hardware ID is comparedto the set of hardware components
`on the computer on which the software productis installed.
`If a suitable match occurs, the software product is enabled
`to operate on the computer. Otherwise, if a suitable match
`does not occur, the software product is locked and prevented
`from operating on the computer. Typically, a suitable match
`is found whenat least seven out of ten componentsidentified
`by the hardware ID are found in the set of hardware
`components on the current computer. Thus, the invention
`prevents a user from installing the software product onto
`multiple different computers becauseit uses the hardware ID
`to identify a specific computer.
`
`[0017] That the invention improves over the drawbacksof
`prior art and accomplishes the advantages described above
`will become apparent from the following detailed descrip-
`tion of the exemplary embodiments and the appended draw-
`ings and claims.
`
`BRIEF DESCRIPTION OF THE FIGURES
`
`FIG.2 is a block diagram of an anti-piracy system
`[0019]
`that facilitates activation of a software product for installa-
`tion and use on a particular computer.
`
`[0026] For discussion purposes, the customer computer is
`described as a personal computer, such as a desktop or
`portable computer. However,as used herein, the term “com-
`puter” is intended to mean essentially any type of computing
`device or machine that is capable of running a software
`product, including such devices as communication devices
`(e.g., pagers, telephones, electronic books, electronic maga-
`zines and newspapers, etc.) and personal and home con-
`sumer devices (e.g., handheld computers, Web-enabled tele-
`[0018] FIG.1isa block diagram of an exemplary personal
`visions, home automation systems, multimedia viewing
`computer.
`systems,etc.). Within the described context, the network 336
`is representative of an Internet or intranet, or a local or wide
`area network. However,
`the network 336 may be imple-
`mented in many different forms, including both wire-based
`networks(e.g., cable, telephone, fiber optic, etc.) and wire-
`less networks(e.g., RF, satellite, microwave,etc.).
`
`FIG.3 is a flow diagram showing steps in a method
`[0020]
`for activating the software product for use on the computer.
`[0027] FIG.1and the following discussion are intended to
`[0021] FIG. 4 isaflow diagram showing steps in a method
`provide a brief, general description of an exemplary cus-
`for running the software product on the computer.
`tomer computer 20. While the invention will be described in
`the general context of an application program that runs on an
`operating system in conjunction with a personal computer,
`those skilled in the art will recognize that the invention also
`may be implemented in combination with other program
`modules. Generally, program modules include routines, pro-
`grams, components, data structures, etc. that perform par-
`ticular tasks or implement particular abstract data types.
`Moreover, those skilled in the art will appreciate that the
`invention may be practiced with other computer system
`configurations, including hand-held devices, multiprocessor
`systems, microprocessor-based or programmable consumer
`electronics, minicomputers, mainframe computers, and the
`like. The invention may also be practiced in distributed
`computing environments where tasks are performed by
`remote processing devices that are linked through a com-
`munications network. In a distributed computing environ-
`
`FIG.5 isa flow diagram showing steps in a method
`[0022]
`for running the software productafter the computer has been
`upgraded.
`
`FIG.6 is a flow diagram showing steps in a method
`[0023]
`for running the software product with an expanded hardware
`ID.
`
`DETAILED DESCRIPTION OF EMBODIMENTS
`OF THE INVENTION
`
`[0024] An embodiment of the present invention will be
`incorporated into the “OFFICE 10”suite of program mod-
`ules marketed by Microsoft Corporation of Redmond, Wash.
`Briefly described, in one embodiment, the invention is an
`expanded 64 bit hardware ID (H/W ID) for tyinga software
`product to a particular computer to prevent software piracy.
`
`APPLE EXHIBIT 1108
`Page 9 of 15
`
`APPLE EXHIBIT 1108
`Page 9 of 15
`
`

`

`US 2004/0059938 Al
`
`Mar. 25, 2004
`
`ment, program modules may be located in both local and
`remote memory storage devices.
`
`[0028] With reference to FIG. 1, an exemplary system for
`implementing the invention includes a conventional per-
`sonal computer 20, including a processing unit 21, a system
`memory 22, and a system bus 23 that couples the system
`memory to the processing unit 21. The system memory 22
`includes read only memory (ROM) 24 and random access
`memory (RAM) 25. A basic input/output system 26 (BIOS),
`containing the basic routines that help to transfer informa-
`tion between elements within the personal computer 20,
`such as during start-up, is stored in ROM 24. A video BIOS
`60 is also stored in ROM 24. The personal computer 20
`further includes a hard disk drive 27, a magnetic disk drive
`28, e.g., to read from or write to a removable disk 29, and
`an optical disk drive 30, e.g., for reading a CD-ROMdisk 31
`or to read from or write to other optical media. The hard disk
`drive 27, magnetic disk drive 28, and optical disk drive 30
`are connected to the system bus 23 by a hard disk drive
`interface 32, a magnetic disk drive interface 33, and an
`optical drive interface 34, respectively. The drives and their
`associated computer-readable media provide nonvolatile
`storage for the personal computer 20. Although the descrip-
`tion of computer-readable media aboverefers to a hard disk,
`a removable magnetic disk and a CD-ROM disk, it should
`be appreciated by those skilled in the art that other types of
`media which are readable by a computer, such as magnetic
`cassettes, flash memorycards, digital video disks, Bernoulli
`cartridges, and the like, may also be used in the exemplary
`operating environment.
`
`environment, the personal computer 20 typically includes a
`modem 54 or other means for establishing communications
`over the WAN 52, such as the Internet. The modem 54,
`which maybe internal or external, is connected to the system
`bus 23 via the serial port
`interface 46. In a networked
`environment, program modules depicted relative to the
`personal computer 20, or portions thereof, may be stored in
`the remote memory storage device. It will be appreciated
`that the network connections shownare exemplary and other
`means of establishing a communications link between the
`computers may be used.
`
`[0032] With reference again to FIG. 2, suppose a customer
`purchases a software product for running on the computer
`20. In this illustration, the software productis in the form of
`a shrink-wrap product 222 having a software program stored
`on a transportable computer-readable medium, such as a
`CD-ROMorfloppy diskette. In other implementations, the
`software product may be delivered electronically over a
`network. The customer loads the software product onto the
`computer 20 as a program 36 stored in system memory 22.
`
`[0033] During installation, the customer is prompted to
`enter a portion of the product ID of the software product.
`The product ID (PID) in this case is partially derived from
`the CD key 224 printed on the label of the shrink-wrap
`package. The customer enters the CD key 224, which is
`associated with the program 36. Additionally, another por-
`tion of the product ID is already included in the software
`program 36 and the software product combines the portion
`with the CD key into a product ID that is unique to the
`specific installation.
`
`[0034] As part of the installation process, the customer
`registers the software product with the activation authority.
`This authority might be, for example, the product manufac-
`turer or an authorized third party. The activation process
`allows the customer to activate the software product for
`installation and use on a specific computer.
`
`[0029] Anumberof program modules maybestored in the
`drives and RAM 25,
`including an operating system 35,
`application program modules 36,
`such as Microsoft’s
`“OFFICE 10” suite of program modules, and program data
`38. A user may enter commands and information into the
`personal computer 20 through a keyboard 40 and pointing
`device, such as a mouse 42. Other input devices (not shown)
`may include a microphone, joystick, game pad, satellite
`[0035] FIG. 3 shows steps in a method for activating the
`dish, scanner, or the like. These and other input devices are
`software product 36 for installation and use on the computer
`often connected to the processing unit 21 throughaserial
`20. The method is described with continuing reference to
`port interface 46 that is coupled to the system bus, but may
`FIG.2. The steps are performed in software by the software
`be connected by other interfaces, such as a game port or a
`product on the customer computer, and by an activation unit
`universal serial bus (USB). A monitor 47 or other type of
`110 on the activation server. At step 150,
`the software
`display device is also connected to the system bus 23 via an
`product 36 obtains its product ID 102. As an example, the
`interface, such as a video adapter 48. In addition to the
`product ID consists of a 5-digit RPC (registered product
`monitor, personal computers typically include other periph-
`code) value for the software product, a 3-digit site value
`eral output devices (not shown), such as speakersorprinters.
`indicating a place of manufacture, and a 7-digit serialized
`numberthat is incremented with each product.
`
`[0030] The personal computer 20 may operate in a net-
`worked environment using logical connections to one or
`more remote computers, such as a remote computer 49. The
`remote computer 49 maybea server, a router, a peer device
`or other commonnetwork node, and typically includes many
`or all of the elements described relative to the personal
`computer 20, although only a memory storage device 50 has
`been illustrated in FIG. 1. The logical connections depicted
`in FIG. 1 include a local area network (LAN) 51 and a wide
`area network (WAN) 52. Such networking environments are
`commonplace in offices, enterprise-wide computer net-
`works, Intranets and the Internet.
`
`[0031] When used in a LAN networking environment, the
`personal computer 20 is connected to the LAN 51 through
`a network interface 53. When used in a WAN networking
`
`[0036] The software product 36 generates a hardware ID
`(H/W ID)that identifies a set of hardware components that
`make up the customer’s computer 20 (step 152). The hard-
`ware ID may be a multi-digit value having at least one digit
`representing each of the corresponding system components.
`As an example,
`the software product generates a 5-digit
`hardware ID that includes a single digit for each of five
`system components: BIOS 26, VBIOS 60, RAM 25, hard
`disk drive 27, and floppy disk drive 28. A digit for a given
`system component can be derived in different ways, such as
`performing a modulo operation on a chunk of the BIOS, or
`on the hard disk drive’s serial number. Table 1 shows an
`example construction of a 5-digit hardware ID, and how the
`digits are derived from the corresponding component.
`
`APPLE EXHIBIT 1108
`Page 10 of 15
`
`APPLE EXHIBIT 1108
`Page 10 of 15
`
`

`

`US 2004/0059938 Al
`
`Mar. 25, 2004
`
`TABLE1
`
`2
`
`Hard Disk Drive
`
`Digit Place Hardware Component Method
`1
`BIOS
`Perform modulus 8 onfirst 2
`K chunk of BIOS.
`Perform modulus 8 on 64-bit HDD
`serial number.
`Perform modulus 9 oftotal bytes
`of RAM.
`Perform modulus 9 on FDD
`configuration return value.
`Perform modulus 9 on
`Video BIOS.
`
`3
`
`4
`5
`
`RAM
`
`Floppy disk drive
`Video Card
`
`It is noted that other hardware components may be
`[0037]
`used. For instance, many computers are equipped with a
`network card with a unique 48-bit address. A digit for the
`hardware ID can be derived from this global network card
`address. Moreover, more than, or fewer than, five system
`components may be used to derive the hardware ID.
`
`[0038] The software product in this example concatenates
`the 15-digit product ID with the 5-digit hardware ID, and
`sends the 20-digit value over the network 336 to the acti-
`vation server 334 (step 154 in FIG. 3). This phase is
`preferably automated in that the software product automati-
`cally initiates connection with the activation server 334 to
`register itself with the activation authority.
`
`the software product supports an
`[0039] Alternatively,
`activation pilot with a graphical user interface (UI) dialog
`window asking the customerto call a service representative
`at the activation authority. The UI windowlists the product
`ID and the hardware ID, and includes an entry box to enter
`the license file given by the service representative over the
`phone.
`
`Theactivation server 334 has an activation unit 110
`[0040]
`to assign a license file to the software product on the
`customer’s computer. The activation unit 110 computes the
`license file from the product ID and the hardware ID (step
`156 in FIG.3). In the illustrated implementation, the acti-
`vation unit 110 employs a hashing algorithm 112 to compute
`a hash value of the concatenated product ID and hardware
`ID. The activation server 334 also maintains a database 114
`to store the product ID, hardware ID, and licensefile (step
`158 in FIG.3). Preferably, these IDs are correlated in a table
`or other data record 116.
`
`[0041] The activation server 334 returns the license file
`over the network 336 to the customer computer 20 (step 160
`in FIG. 3). In the manual case, the service representative
`tells the customer the license file over the phone and the
`customer enters the license file via the UI window. The
`
`licensefile 118 is stored locally in the system memory 22 of
`the customer computer 20, where it is accessible by the
`software program 36 (step 162 in FIG. 3). The program 36
`is also equipped with the same hashing algorithm 112 as
`found in the activation unit 110 at the activation server 334.
`
`[0042] FIG. 4 shows steps in a method for running the
`software product 36 on the computer 20. The method is
`described with continuing reference to FIG. 2. The steps are
`performed by software code within the software product on
`the customer computer. At step 170, the software productis
`started. On each launch after installation,
`the software
`
`product obtains the product ID 102 (step 172) and generates
`the hardware ID from the set of hardware components
`within the computer (step 174).
`
`[0043] At step 176, the software product 36 computesits
`own test ID from the product ID and hardware ID using the
`hashing algorithm 112. This is the same hashing algorithm
`as employed by the activation unit 110 when computing the
`original license file 118. The software product 36 retrieves
`the original license file 118 from memory 22 (step 178 in
`FIG.4) and compares the test ID to the license file 118 (step
`180 in FIG.4). If the two match (i.e., the “yes” branch from
`step 182), the software product is enabled to operate on the
`computer (step 184). On the other hand, if no match occurs
`(i.e., the “no” branch from step 182), the software product is
`locked and prevented from operating on the computer (step
`186 in FIG. 4).
`
`[0044] The anti-piracy system is effective at stopping
`repeated installation of the same software product on mul-
`tiple different machines. In the typical case, the test and
`license files will not match if the hardware ID is different
`
`now than it was when the customer first registered the
`software product with the activation authority. That is, the
`only thing that has changed in the computation of the test
`and licensefiles is the hardware ID. The product ID and the
`hash algorithm are the same for both computations.
`
`[0045] A different hardware ID suggests that the underly-
`ing hardware components have been altered in some man-
`ner. For instance, reconfiguring the floppy disk drive or
`replacing the hard disk drive might change the hardware ID.
`Ofcourse, an entirely different computer with a different set
`of hardware components might also result in a different
`hardware ID.
`
`Ifan unscrupulous customerattemptsto install the
`[0046]
`product on another computer,
`the software product will
`determinethat the test and licensefiles do not match and will
`self-lock, thereby preventing its operation on the different
`computer. The customer is then forced to contact the acti-
`vation authority to obtain a new licensefile, and if appro-
`priate, pay an additional
`licensing fee for an additional
`installation.
`
`[0047] Another advantageis that the anti-piracy system is
`sensitive to the situation in which the customer has upgraded
`his/her computer, without effectively creating a new
`machine, and is now attempting to reinstall the software
`product on the upgraded computer. In this situation,
`the
`software product determines whether a new set of hardware
`components in the computer is substantially different from
`the original set of hardware components.If only one or a few
`components are different, the upgraded computer is more
`like the original computer and the software product
`is
`permitted to operate. Conversely, if many or all components
`are different,
`the “upgraded” computer more closely
`resembles a new computer and the software product
`is
`prevented from operating on this new computer.
`
`[0048] One way the software product makes this determi-
`nation is by trying different permutations of the hardware
`ID, changing at least one digit per try while leaving other
`digits unchanged. Each modified hardware ID is concat-
`enated with the product ID, and then hashed to produce the
`test ID. If this trial-and-error process yields a match between
`the test and original license files, the software product is
`
`APPLE EXHIBIT 1108
`Page 11 of 15
`
`APPLE EXHIBIT 1108
`Page 11 of 15
`
`

`

`US 2004/0059938 Al
`
`Mar. 25, 2004
`
`assured that only one or a few components have been
`altered, and the software product is permitted to run.
`
`[0049] FIG. 5 shows steps in a method for running the
`software product 36 on the computer 20 after upgrade. The
`method is described with continuing reference to FIG. 2.
`The steps are performed by software code within the soft-
`ware product on the customer computer. At step 190, the
`software product changesat least one digit in the hardware
`ID, while leaving the other digits unchanged, to produce a
`modified hardware ID. For example, the software ID might
`toggle one digit in the 5-digit hardware ID, while maintain-
`ing the other four digits the same.
`
`[0050] The software product concatenates the product ID
`and modified hardware ID (step 192) and computes a new
`test ID using the hashing algorithm 112 (step 194). At step
`196, the software productretrieves the licensefile 118 from
`memory 22 and comparesit to the test ID. If the two match
`(i.e., the “yes” branch from step 198), this suggests that that
`only one componenthas been changed or upgraded, but rest
`of the computer remains substantially the same. Thus, the
`computer is deemed an upgrade, and not a new computer.
`The software product is enabled to operate on the computer
`(step 200 in FIG.5).
`
`Ifno match occurs(i.e., the “no” branch from step
`[0051]
`198), the software product remains locked. At step 202, the
`software product checks whether it has exhausted all pos-
`sible new combinations of digits. As an example, suppose
`the software manufactur

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket