throbber
US007503072B2
`
`US 7,503,072 B2
`(10) Patent No.:
`a2) United States Patent
`Hughesetal.
`(45) Date of Patent:
`Mar.10, 2009
`
`
`(54) HARDWAREID TO PREVENT SOFTWARE
`PIRACY
`
`(75)
`
`Inventors: Aidan T. Hughes, Bellevue, WA (US);
`David Barnaby Pearce, West Palm
`Beach, FL (US)
`
`5,199,066 A
`5,357,573 A
`5,379,343 A
`5,490,216 A
`5,491,804 A
`
`3/1993 Logan oo. ceeeeeeeeeeee 380/4
`... 380/25
`10/1994 Walters
`
`1/1995 Grube et al. we 380/4
`2/1996 Richardson,IT] ............... 380/4
`2/1996 Heath et al. we. 395/275
`(Continued)
`
`(73) Assignee: Microsoft Corporation, Redmond, WA
`(US)
`
`EP
`
`FOREIGN PATENT DOCUMENTS
`0844549 Al
`5/1998
`
`(*) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 2544 days.
`(21) Appl. No.: 09/859,915
`
`OTHER PUBLICATIONS
`He Fond
`joa
`Silent
`sap
`ih ini
`denizens
`ioe
`e@ Danas
`Hent Safjeguara—An anti-piracy device
`ieis you
`near
`without the blips; B. Fox; New Scientist, (Aug. 21, 1999) v.163, n.
`2200, p. 12.
`
`(22)
`
`Filed:
`
`May17, 2001
`
`(65)
`
`Prior Publication Data
`US 2001/0044782 Al
`Nov. 22, 2001
`
`Related U.S. Application Data
`(63) Continuation-in-part of application No. 09/070,518,
`filed on Apr. 29, 1998, now Pat. No.6,243,468.
`;
`;
`_—
`
`(51)
`
`(56)
`
`Int. Ch.
`(2006.01)
`HOAL 29/00
`(2006.01)
`HOAL 9/00
`726/26: 705/51: 705/59
`(52) U.S. Cl
`(58) Field °f ClassificationSearch
`;
`380201
`380/203. 231. 232: 705/51. 5256.57 58.
`,
`,
`,
`705/59: 126196
`See applicationfile for complete search hisis
`:
`ry:
`PP
`P
`References Cited
`
`
`U.S. PATENT DOCUMENTS
`
`4,658,093 A
`4,688,169 A
`4,796,220 A
`5,182,770 A *
`
`4/1987 Hellman... 380/25
`8/1987 Josh sssecsesverscssvesseesees 364/200
`
`1/1989 Wolfe cccccssscreccesssevess 364/900
`1/1993 Medveezky et al.
`........... 705/56
`
`222.
`
`224
`
`(Continued)
`
`.
`Primary Examiner—Matthew B Smithers
`(74) Attorney, Agent, or Firm—Merchant & Gould PC
`(57)
`ABSTRACT
`
`In one embodiment, the invention is a 64 bit hardware ID
`(H/W ID)for tying a software productto a particular com
`puter 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
`RAMsize in Mb, and the SCSI adapter. Each timethe soft-
`ware product is opened, the expanded H/W ID is comparedto
`the hardware on the computer to determine whethera prede-
`termined minimum number of components match. In one
`embodiment, the expanded H/W ID allows for expansion of
`the user’s computer because so long as the componentorigi-
`nally 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 computerbefore the software product
`will fully operate.
`
`1 Claim, 6 Drawing Sheets
`
`300
`a
`
`| Install
`Customer Computer
`
`20
`
`36
`
`rogram
`-
`Hashing
`Algorithm
`
`PID + H/W ID
`—*
`
`12
`
`Processor Product ID
`
`Customer
`
`N2
`
`license
`file
`
`14
`
`1
`
`1
`
`110
`
`
`
`Activation Unit
`Hashing
`Algorithm
`
`)_
`
`
`
`Activation
`Database
`
`
`
`Activation Authority
`
`GOOGLE 1013
`
`GOOGLE 1013
`
`1
`
`

`

`US 7,503,072 B2
`Page 2
`
`
`
`U.S. PATENT DOCUMENTS
`
`5,502,831 A
`5,509,070 A
`5,651,064 A *
`5,666,411 A
`5,671,412 A
`5,754,864 A
`5,757,907 A
`5,761,649 A
`5,790,664 A
`5,835,911 A
`5,892,900 A
`5,940,504 A
`5,968,175 A
`6,041,411 A
`6,044,471 A
`6,085,324 A
`6,240,401 Bl
`6,243,468 Bl
`6,244,758 Bl
`6,449,645 Bl
`
`3/1996 Grube et al. oo... 395/427
`
`4/1996 Schull
`.....
`wee 380/4
`7/1997 Newell
`....
`. 705/51
`we 380/4
`9/1997 McCarty........
`
`9/1997 Christiano etal.
`. 395/615
`
`5/1998 Hill ww...
`. 395/712
`
`
`wa 380/4
`5/1998 Cooperetal.
`6/1998 Hill
`.........
`. 705/27
`
`....
`8/1998 Coley etal.
`w 380/4
`11/1998 Nakagawaetal
`. 707/203
`4/1999 Ginteretal.
`. 395/186
`
`we 380/4
`8/1999 Griswold .......
`. 713/200
`10/1999 Morishitaetal.
`
`3/2000 Wyatt
`...
`... 713/200
`3/2000 Colvin .......
`w+. 713/202
`
`
`7/2000 Ogram etal.
`. 713/202
`5/2001 Oren etal.
`..
`.. 705/40
`we 380/255
`6/2001 Pearceetal.
`
`395/200.54
`6/2001 Solymar et al
`
`9/2002, Nash? wecscerrvevevsrscens 709/224
`OTHER PUBLICATIONS
`
`Rallying the disc patrol: protection schemes for CD and DVD; D.
`Galante Block; EMedia Professional, Dec. 1998) v. 11, n. 12 p. 34-8,
`40-3.
`Anti-counterfeiting holograms andgovernmentanti-piracyactivities
`in China; Hsu Dahsiung; Proceedings of the SPIE—The Interna-
`tional Societyfor OpticalEngineering Conference, (1998)v. 3358, p.
`318-321.
`
`CD/DVD piracy: the replicator, the user and the technology; D.G.
`Block; EMedia Professional, (Dec. 1997) v.10, n.12, p. 92-96,
`98-100, 102-104, 106-107.
`Preventive and deterrent controls for software piracy, R.D. Gopal
`and G.L. Sanders; Journal of Management Information Systems
`(Spring 1997) v.13, n.4, p. 29-47.
`Foiling corporate software pirates; D.H. Freedman; High Technol-
`ogy (Jul. 1995) v.5, n.7, p. 62-64.
`Software piracy: stopping it before it stops you; Mark B. Johnson;
`Proceedings of the Sixteenth ACM SIGUCCS Conference on User
`Services, 1988, p. 295-299.
`Software watermarking: models and dynamic embeddings; Christian
`Colberg and Clark Thomborson; Proceedings of the 26° ACM
`SIGPLAN-SIGACTSymposiumon Principles ofProgramming Lan-
`guages, 1999, p. 311-324.
`How to prove where you are: tracking the location of customer
`equipment, Eran Gabber and Avishai Wool; Proceedings of the 5
`ACM conference on Computer and Communications Security, 1998,
`p. 142-149.
`Handling site-licensing agreements and public domain software
`architecture; John D. Chovan; Proceedings of the ACM SIGUCCS
`XIConference on User Services: pulling it all together, 1985, p.
`175-179.
`Digital signets: self-enforcingprotection ofdigital information (pre-
`liminary version); Cynthia Dwork, Jeffrey Lotspieh and Moni Naor;
`Proceedings of the Twenty-eighth Annual ACM Symposium on
`Theory of Computing, 1996, p. 489-498.
`Globetrotter Software, Inc., “FLEXIm End User Manual”, Chapters
`1-7 (1996).
`
`* cited by examiner
`
`2
`
`

`

`U.S. Patent
`
`Mar.10, 2009
`
`Sheet 1 of 6
`
`US 7,503,072 B2
`
`
`
`Jayndwoy
`
`aOLUaY
`
`6b
`
`LS
`
`aoeH9}u|
`
`YJOMIONBdlySPlAA|wepon|
`YWIOMIANBly[2907
`Zsvg
`iYIOMJON
`
`Iwapoy|-
`[EWESSIGPJEH
`asnoya
`€zuoneoddy
`
`Jaydepywun
`
`
`
`oOaplABulssa00/d
`
`Le
`
`sngwaysks
`
`
`
`sewayshgBuneiedg
`
`cc
`
`
`
`Asowaywajsks
`
`cv
`
`BAU4S!
`
`aoeLa}U|
`
`jeondo
`
`BALIQASIC
`
`onauBbe;
`
`aauq
`
`
`
`aoe}YS]U|
`
`S0BL9}UI
`
`sainpow,,WesBolg
`
`weiBoig
`
`eyeg
`
`wesbold
`
`eyeq
`
`
`
`sinpo=:wesibolg
`
`uoneoyddy
`
`
`
`
`
`welboigweJbold
`
`uoneoyddy
`Bunessdo
`
`ejeqsa|npoyy
`
`ajnpo-:wesBolg
`
`wayshsS
`
`3
`
`
`
`
`
`
`
`
`
`

`

`U.S. Patent
`
`Mar.10, 2009
`
`Sheet 2 of 6
`
`US 7,503,072 B2
`
`UOOAYOY
`
`SW
`
`aspqnjogZ0|
`
`araarnt
`
`
`
`Tdrt21alyesueon
`
`
`
`{DOUINYUOTOATOV
`
`TeuWosny
`
`Z‘big
`
`esuedl]ZzWwULobly
`
`
`
`JBAJOSUOHDAOYW
`
`
`
`}lUpUOIDAYDY
`
`UIULOBIY
`
`
`
`6BulysoHZLLiz
`
`TY
`
`ryd!M/H+Ald
`
`zz
`
`
`
`JOINAWIOTJOWIOJSND
`
`JOSSOIOId
`
`WpIBold
`
`BurysoH
`
`OltOSU]
`
`ode
`
`CCG
`
`4
`
`
`
`
`

`

`
`
`
`
`U.S. Patent Mar. 10,2009—Sheet 3 of 6 US 7,503,072 B2
`
`Software Product on
`Customer Computer
`
`150
`
`Get PID
`
`Activation Unit on
`Product Provider Server
`
`
`
`Generate
`Hardware ID
`
`(H/W ID)
`
`154
`
`Send PID and H/W ID
`To Activation
`Authority
`
`
`
`156
`
`158
`
`160
`
`Compute Licensefile
`
`Store PID, H/W
`ID, and Licensefile
`
`Send License file to
`Customer
`Computer
`
`
`Store licensefile
`
`
`Fig. 3
`
`5
`
`

`

`U.S. Patent
`
`Mar. 10,2009
`
`Sheet 4 of 6
`
`US 7,503,072 B2
`
`
`
`Start Program
`
`172
`
`Get PID
`
`
`
`174
`
`Generate H/W ID
`
`Compute test
`ID from PID and H/W ID
`
`etrieve Licensefile fro
`memory
`
`Comparetest ID
`with Licensefile
`
`
`
`
` Lock Program
`
`Allow Program
`to Operate
`
`
`184
`
`Fig. 4
`
`6
`
`

`

`
`
`
`
`U.S. Patent Mar. 10,2009—Sheet 5 of 6 US 7,503,072 B2
`
`Change digit in H/W ID
`To get modified H/W ID
`
`190
`
`192
`
`Concatenate PID and
`Modified H/W ID
`
`194
`
`
`
`Computetest ID from
`PID and modified
`H/W ID
`
`Comparetest ID
`with licensefile
`
`
`Tried All
`permutationsof
`H/W ID?
`
`200
`
`
`
`
`
`
`
`Lock Program
`
`Fig. 5
`
`Allow Program
`to Operate
`
`7
`
`

`

`U.S. Patent
`
`Mar.10, 2009
`
`Sheet 6 of 6
`
`US 7,503,072 B2
`
`602
`
`Start Program
`
` 606
`
`608
`
`Compare portion of
`H/W ID with all
`
`More portions of
`H/W ID to examine?
`
`
`
`
`
`
`
`s count greater than
`minimum?
`
` Allow Program
` Lock Program
`to Operate
`
`
`
`
`
`618
`
`Fig. 6
`
`8
`
`

`

`US 7,503,072 B2
`
`1
`HARDWAREID TO PREVENT SOFTWARE
`PIRACY
`
`REFERENCE TO RELATED APPLICATIONS
`
`This is a continuation-in-part of U.S. patent application
`Ser. No. 09/070,518, entitled “SOFTWARE ANTI-PIRACY
`SYSTEM THAT ADAPTS TO HARDWARE UPGRADES”,
`filed Apr. 29, 1998 now USS. Pat. No. 6,243,468, which is
`incorporated by reference herein.
`
`TECHNICAL FIELD
`
`The invention generally relates to systems and methods for
`preventing piracy orillicit use of software by identifying
`hardware components of a computer. Moreparticularly, this
`invention relates to such systems and methods that allow
`hardware components of the underlying computer to be
`upgradedandthe software to be legitimately installed on the
`upgraded machine withouttriggering the anti-piracy protec-
`tion.
`
`BACKGROUND
`
`Computer software is a unique consumerproduct in that
`the same product can be replicated many times after 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 rep-
`licating the same product many timesover.
`This characteristic of software can be a tremendousbenefit
`in terms of lowering manufacturing costs and facilitating
`distribution. For instance, easy replication allows a software
`manufacturerto distribute one physical copy of the software
`productandsell a multi-seatlicense that legally empowersthe
`purchaser to install the software product on many different
`computers.
`Unfortunately, this benefit comes at a cost of open abuse.
`One well-knownabuseis piracy. An unscrupulousparty can
`obtain a copy of the object code (legally or illegally) and then
`illicitly replicate and resell pirated copies of the product.
`Software companies attempt to monitor piracy activities, but
`detection is often difficult. Moreover, even when improper
`activity is detected, enforcement and legal recourse is often
`unavailable from a practical standpoint, particularly since
`muchofthe abuse occurs in foreign lands.
`A less subtle abuse is the improperuse of a software prod-
`uct 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. Unfortu-
`nately, 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 abuseis very difficult to monitor and even more
`difficult to prosecute.
`The computer software industry estimates billions of dol-
`lars 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 onerousfor the manufacturer.
`Accordingly, software companies have a real incentive to
`reduce the amount of abuses through other means.
`One conventional
`technique for preventing unlimited
`copying of a software product is to design the code with a
`self-regulating mechanism that prevents repeated installa-
`
`10
`
`15
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`tions. This mechanism counts the numberof installations and
`disables the software codeafter the product has been installed
`a certain number of times. The underlying premise is that
`multiple installations tend to indicate that the useris attempt-
`ing to install the product on multiple different computers,
`rather than just one computer allowed by the license.
`As an example of this concept, suppose a manufacturer
`creates a software productand places the code on a disk, such
`asaCD-ROMorfloppydiskette. The disk is packaged to form
`a shrink-wrapretail product. The manufacturer generates and
`assigns a 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-ROM case.
`Duringinstallation, 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.
`Withoutthe key, the holder of the physical disk is prevented
`from installing the product.
`The product tracks the numberofinstallations. Once the
`purchaserenters the same key more timesthan a definedlimit,
`the product is disabled. The purchaseris then forced to call the
`manufacturer for assistance.
`While such mechanismshelp reduceillicit copying, they
`often cause other problemsin the form of consumerinconve-
`nience. For instance, the premise that more installations than
`a requisite number meansillegal use may be wrong in some
`cases. A user who has upgraded his/her computer, for
`example, should be able to legitimately reinstall the software
`product on the upgraded machine. However,if the requisite
`numberofinstallations has already been reached, the product
`will notinstall, forcing the user (who is now disgruntled) to
`call the manufacturer for assistance.
`
`Accordingly, there remains a need for improved technol-
`ogy solutionsto piracy andillicit use, while recognizing and
`accommodating the needs and practices of a legitimate pur-
`chaser.
`
`SUMMARY OF THE INVENTION
`
`The present invention meets the above-described needs by
`providing a system for enabling enforcementof written soft-
`ware licensing terms for a software product for use with a
`computer having a set of hardware components.
`In one aspect, the system includes a software productresi-
`dent on a computer, the software product having an associated
`product ID. The software product generates a hardware ID
`that identifies the set of hardware components on the com-
`puter. 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 representsten different com-
`ponents ofthe user’ s computer: the CD-ROMdevice,the disk
`adapter, the disk device, the display adapter, the first drive
`serial number, the MAC address, the processorserial 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 com-
`puter to determine whether a predetermined minimum num-
`ber of components match. In one embodiment, the expanded
`H/W ID allowsfor expansion ofthe 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 com-
`puter before the software product will operate.
`
`9
`
`

`

`US 7,503,072 B2
`
`3
`In another aspect of the invention, the software productis
`subsequently launched following installation and the soft-
`ware productretrieves the 64-bit hardware ID. The hardware
`ID is compared to the set of hardware components on the
`computer on which the software product is 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 often components identified by
`the hardware ID are foundin 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 spe-
`cific computer.
`That the invention improves over the drawbacksofpriorart
`and accomplishes the advantages described above will
`become apparent from the following detailed description of
`the exemplary embodiments and the appended drawings and
`claims.
`
`BRIEF DESCRIPTION OF THE FIGURES
`
`FIG. 1 is a block diagram of an exemplary personal com-
`puter.
`FIG. 2 is a block diagram of an anti-piracy system that
`facilitates activation of a software productfor installation and
`use on a particular computer.
`FIG. 3 is a flow diagram showing steps in a method for
`activating the software product for use on the computer.
`FIG. 4 is a flow diagram showing steps in a method for
`running the software product on the computer.
`FIG. 5 is a flow diagram showing steps in a method for
`running the software product after the computer has been
`upgraded.
`FIG. 6 is a flow diagram showing steps in a method for
`running the software product with an expanded hardwareID.
`
`DETAILED DESCRIPTION OF EMBODIMENTS
`OF THE INVENTION
`
`
`
`An embodimentofthe present invention will be incorpo-
`rated into the “OFFICE 10”suite of program modules mar-
`keted by Microsoft Corporation of Redmond, Wash.Briefly
`described, in one embodiment, the invention is an expanded
`64 bit hardware ID (H/WID)for tying a software product to
`a particular computer to prevent software piracy. The 64 bit
`hardwareID represents ten different components ofthe 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 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 H/W ID allowsfor
`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 componentsin
`the expanded H/W ID must match the computer before the
`software product will operate.
`FIG. 2 shows an anti-piracy system 300 that facilitates
`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 andan activation server
`334, which residesat the activation authority remote from the
`
`4
`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 manufactureror trusted third party
`may provide proxy access to the activation server by other
`means, such as electronic mail, fax machine, postal mail, or
`telephone.
`is
`the customer computer
`For discussion purposes,
`described as a personal computer, such as a desktop or por-
`table computer. However, as used herein, the term “com-
`puter”is intended to mean essentially any type of computing
`device or machinethat is capable of running a software prod-
`uct, including such devices as communication devices(e.g.,
`pagers, telephones, electronic books, electronic magazines
`and newspapers, etc.) and personal and home consumer
`devices (e.g., handheld computers, Web-enabledtelevisions,
`home automation systems, multimedia viewing systems,
`etc.). Within the described context, the network 336 is repre-
`sentative of an Internet or intranet, or a local or wide area
`network. However, the network 336 may be implemented in
`many different forms, including both wire-based networks
`(e.g., cable, telephone,fiber optic, etc.) and wireless networks
`(e.g., RF, satellite, microwave, etc.).
`FIG. 1 and the following discussionare intendedto provide
`a brief, general description of an exemplary customer com-
`puter 20. While the invention will be described in the general
`context of an application program that runs on an operating
`systemin conjunction with a personal computer, those skilled
`in the art will recognize that the invention also may be imple-
`mented in combination with other program modules. Gener-
`ally, program modules include routines, programs, compo-
`nents, data structures, etc. that perform particular 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, includ-
`ing hand-held devices, multiprocessor systems, microproces-
`sor-based or programmable consumerelectronics, minicom-
`puters, mainframe computers, and the like. The invention
`mayalso be practiced in distributed computing environments
`wheretasks are performed by remote processing devices that
`are linked through a communications network. In a distrib-
`uted computing environment, program modules may be
`located in both local and remote memory storage devices.
`With reference to FIG. 1, an exemplary system for imple-
`menting the invention includes a conventional personal com-
`puter 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 includesread 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 information between elements
`within the personal computer 20, such as during start-up, is
`stored in ROM 24. A video BIOS60 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-ROM disk 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 ahard disk drive interface 32, a magnetic disk drive inter-
`face 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 description of computer-readable media aboverefers to a
`hard disk, a removable magnetic disk and a CD-ROMdisk,it
`should be appreciated by those skilled in the art that other
`types of media which are readable by a computer, such as
`
`10
`
`15
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`10
`
`10
`
`

`

`US 7,503,072 B2
`
`6
`5
`an authorized third party. The activation process allows the
`magnetic cassettes, flash memory cards, digital video disks,
`customerto activate the software product for installation and
`Bernoulli cartridges, and the like, may also be used in the
`use on a specific computer.
`exemplary operating environment.
`FIG. 3 showssteps in a methodforactivating the software
`A numberof program modules maybestored in the drives
`product 36 for installation and use on the computer 20. The
`and RAM 25, including an operating system 35, application
`methodis described with continuing reference to FIG. 2. The
`program modules 36, such as Microsoft’ s “OFFICE 10”suite
`steps are performed in software by the software product on
`of program modules, and program data 38. A user may enter
`the customer computer, and by an activation unit 110 on the
`commands and information into the personal computer 20
`activation server. At step 150, the software product 36 obtains
`through a keyboard 40 and pointing device, such as a mouse
`its product ID 102. As an example, the product ID consists of
`42. Other input devices (not shown) may include a micro-
`a 5-digit RPC (registered product code) valueforthe software
`phone,joystick, gamepad, satellite dish, scanner, or the like.
`These and other input devices are often connected to the
`product, a3-digit site value indicating a place ofmanufacture,
`
`processing unit 21 throughaserial port interface 46 that is and a 7-digit serialized numberthat is incremented with each
`coupled to the system bus, but may be connected by other
`product.
`interfaces, such as a gameport or a universal serial bus (USB).
`The software product 36 generates a hardware ID (H/W
`A monitor 47or other type of display device is also connected
`ID) that identifies a set ofhardware components that make up
`to the system bus 23 via an interface, such as a video adapter
`the customer’s computer 20 (step 152). The hardware ID may
`48. In addition to the monitor, personal computers typically
`be a multi-digit value having at least one digit representing
`include other peripheral output devices (not shown), such as
`each of the corresponding system components. As an
`speakers or printers.
`example, the software product generates a 5-digit hardware
`The personal computer 20 may operate in a networked
`ID that includes a single digit for each of five system compo-
`nents: BIOS 26, VBIOS 60, RAM 25, hard disk drive 27, and
`environmentusing logical connectionsto one or more remote
`computers, such as a remote computer 49. The remote com-
`floppy disk drive 28. A digit for a given system component
`puter 49 may bea server, a router, a peer device or other
`can be derivedin different ways, such as performing a modulo
`common network node, and typically includes manyorall of
`operation on a chunk of the BIOS, or on the hard disk drive’s
`the elements described relative to the personal computer 20,
`serial number. Table 1 shows an example construction of a
`although only a memory storage device 50 has been illus-
`5-digit hardware ID, and how the digits are derived from the
`trated in FIG. 1. The logical connections depicted in FIG. 1
`corresponding component.
`include a local area network (LAN) 51 and a widearea net-
`work (WAN) 52. Such networking environments are com-
`monplace in offices, enterprise-wide computer networks,
`Intranets and the Internet.
`When used in a LAN networking environment, the per-
`sonal computer 20 is connected to the LAN 51 through a
`network interface 53. When used in a WAN networking envi-
`ronment,
`the personal computer 20 typically includes a
`modem 54 or other means for establishing communications
`over the WAN 52, suchasthe Internet. The modem 54, which
`maybeinternal or external, is connected to the system bus 23
`via theserial port interface 46. In a networked environment,
`program modules depictedrelative to the personal computer
`20, or portions thereof, may be stored in the remote memory
`storage device. It will be appreciated that the network con-
`nections shown are exemplary and other meansofestablish-
`ing a communications link between the computers may be
`used.
`With reference again to FIG. 2, suppose a customer pur-
`chases a software product for running on the computer 20. In
`this illustration, the software product is 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 soft-
`ware product maybe delivered electronically over a network.
`The customerloads the software product onto the computer
`20 as a program 36 stored in system memory 22.
`During installation, the customer is prompted to enter a
`portion ofthe productID ofthe software product. The product
`ID (PID)in this caseis partially derived from the CD key 224
`printed onthe label ofthe shrink-wrap package. The customer
`enters the CD key 224, whichis associated with the program
`36. Additionally, another portion ofthe product IDis already
`included in the software program 36 andthe software product
`combinesthe portion with the CD key into a product ID that
`is uniqueto the specific installation.
`Aspart of the installation process, the customerregisters
`the software product with the activation authority. This
`authority might be, for example, the product manufacturer or
`
`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 activation
`server 334 (step 154 in FIG. 3). This phase is preferably
`automatedin thatthe software product automatically initiates
`connection with the activation server 334 to register itself
`with the activation authority.
`Alternatively, the software product supports an activation
`pilot with a graphical user interface (UI) dialog windowask-
`ing the customerto call a service representative at the activa-
`tion authority. The UI windowlists the product ID and the
`hardware ID, and includesan entry boxto enterthe license file
`given bythe service representative over the phone.
`The activation server 334 has an activation unit 110 to
`assign a licensefile to the software product on the customer’s
`computer. The activation unit 110 computes the licensefile
`from the product ID and the hardwareID (step 156 in FIG.3).
`In the illustrated implementation, the activation unit 110
`employs a hashing algorithm 112 to compute a hash value of
`
`TABLE 1
`
`Method
`Perform modulus 8 onfirst 2K
`chunk of BIOS.
`Perform modulus 8 on 64-bit
`HDDserial number.
`Perform modulus 9 of total
`bytes of RAM.
`Perform modulus 9 on FDD
`configuration return value.
`Perform modulus 9 on Video
`BIOS.
`
`10
`
`15
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`11
`
`Digit Place Hardware Component
`1
`BIOS
`
`2
`
`3
`
`4
`5
`
`Hard Disk Drive
`
`RAM
`
`Floppy disk drive
`Video Card
`
`It is noted that other hardware components may be 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. More-
`over, more than, or fewer than, five system components may
`be used to derive the hardware ID.
`
`11
`
`

`

`US 7,503,072 B2
`
`10
`
`15
`
`25
`
`30
`
`35
`
`40
`
`45
`
`7
`the concatenated product ID and hardwareID. Theactivation
`server 334 also maintains a database 114 to store the product
`ID, hardware ID, andlicensefile (step 158 in FIG. 3). Pref-
`erably, these IDsare correlated in a table or other data record
`116.
`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.Thelicensefile 118
`
`8
`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 com-
`puter and the software product is prevented from operating on
`this new computer.
`One way the software product makes this determination is
`by trying different permutations ofthe hardware ID, changing
`at least one digit pertry while leaving other digits unchanged.
`Each modified hardware ID is concatenated with the product
`ID, and then hashed to producethe test ID. If this trial-and-
`is stored locally in the system memory 22 of the customer
`error process yields a match between the test and original
`computer 20, where it is accessible by the software program
`licensefiles, the software product is assured that only one or
`36 (step 162 in FIG.3). The program 36 is also equipped with
`afew components have been altered, and the software product
`the same hashing algorithm 112 as found in the activation unit
`110 at the activation server 334.
`is permitted to run.
`FIG. 5 shows steps in a method for running the software
`FIG. 4 showssteps in a method for running the software
`product 36 on the computer 20 after upgrade. The methodis
`product 36 on the computer 20. The methodis described with
`described with continuing reference to FIG. 2. The steps are
`continuing reference to FIG. 2. The steps are performed by
`performed by software code within the software product on
`software code within the software product on the customer
`the customer computer. At step 190, the software product
`computer. At step 170, the software product is started. On
`changesat least one digit in the hardware ID, while leaving
`each launch after installation, the software product obtains
`the other digits unchanged, to produce a modified hardware
`the product ID 102 (step 172) and generates the hardware ID
`ID. For example, the software ID might toggle one digit in the
`from the set of hardware components within the computer
`5-digit hardware ID, while maintaining the other four digits
`(step 174).
`the same.
`At step 176, the software product 36 computes its own test
`The software product concatenates the product ID and
`ID from the product ID and hardware ID using the hashing
`modified hardware ID (step 192) and computes a new test ID
`algorithm 112. This is the same hashing algorithm as
`using the hashing algorithm 112 (step 194). At step 196, the
`employed by the activation unit 110 when computing the
`software productretrieves the license file 118 from memory
`originallicensefile 118. The software product36 retrieves the
`22 and comparesit to the te

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