SoftwareShield System Feature Guide > FingerPrinting / Machine Locking

FingerPrinting / Machine Locking


FingerPrinting (or Machine Locking) refers to a mechanism which will uniquely identify a particular computer by its various features, settings, serial numbers, memory address locations, characteristics, etc. There are two ways which the SoftwareShield System uses FingerPrints. These two are closely related, but it is important to understand the difference:

  1. FingerPrint All Activation Codes. This refers to a feature of a license which ensures Authorization Request Codes uniquely identify the machine from which a request originated and ensures reciprocated Activation Codes are only verified as valid for the unique machine for which they were intended. When this option is turned on in your license, it essentially allows you to ensure that Activation Codes for a specific user (computer) cannot be used by any other user (computer) other than the one for which it is intended. This check is performed once for every Activation Code, as it is input. You do not have to enable Copy-Protection to use this option.

  2. Copy-Protection. This refers to a feature of a license which causes the ClientProtector to check every time the StartUp function is called to see if the host computer is explicitly authorized to use the license. This is done by computing the host systems FingerPrint according to a set of included FingerPrint option flags and comparing that to a list of explicitly authorized FingerPrints stored inside the license. This functionality is in addition to the functionality described above for FingerPrint All Activation Codes. To clarify, when Copy-Protection is on, FingerPrinting must also be on, since it is this mechanism which allows for the underlying Copy-Protection logic.

The FingerPrint of a machine is computed from a set of available options you include in your option flag set. There are 23 available options. Each one can be independently turned on or off. This effectively allows you to configure your license to use up to 8388608 different combinations of algorithms for computing the systems FingerPrint. As well, if you have any particular algorithm of your own, the SoftwareShield System essentially allows you to plug it into the FingerPrint sub-system, simply by calling the function SetPrependedFingerPrintString before you call the StartUp function. See Programmer Created FingerPrint Identifiers for more information. This essentially allows you to integrate any algorithm of your own design into the overall process of uniquely identifying a machine.

This combination of possible option settings combined with the actual diversity of machine configurations and serial numbers results in a huge number of possible unique FingerPrints. Naturally, you can completely turn off FingerPrinting if you wish by selecting no options whatsoever. Each of the flags is described in detail in the subsection FingerPrint Option Flags.

The various options are bound to machine specific information that is retrieved from the (customers) system at run-time. The associated attributes of enabled options on the customers system must remain unchanged or else the systems FingerPrint will essentially change. This could mean that Activation Codes that are intended for a specific system will only work on a system whose FingerPrint (generated from enabled options) match exactly with the FingerPrint that is embedded inside the code itself.

Generally, setting more of these options makes the system more secure but less flexible. For example, if you create a license that uses a FingerPrint that includes the "Total RAM" flag and your customer legitimately upgrades by buying more RAM, they may encounter difficulties if they have to re-input an Activation Code which contained a FingerPrint. Or, if you enabled Copy-Protection, since the FingerPrint will have changed, the StartUp function will return FALSE_SYSTEM_NOT_AUTHORIZED, since with Copy-Protection, the FingerPrint check is performed every time the ClientProtector starts. In that case, you would have to reissue them a new Activation Code. Be sure you understand what all the Machine Locking Considerations are.

The FingerPrint options code that corresponds to the set of flags you define in a license will be output into the Programming Notes file when you compile your license.

More Information

For help on understanding exactly what information each of the flags binds to on the host machine, see the FingerPrint Option Flags subsection.

For help on actually setting your FingerPrint option flags, see System FingerPrint Options Tab in the SoftwareShield License Manager Reference.

For help on understanding Copy-Protection, see Copy-Protection in this Feature Guide.

Related Topics