Most of us are aware of hardware locks used to prevent illegal copying of software. This is a hardware unit that fits in a designated port as a peripheral and receives, processes and transmits data. Software is written to generate a complex number and transmit it through the parallel port in which the hardware lock is connected. The hardware lock manipulates the number with some algorithm and again transmits it to the parallel port as an input as explained in the flow chart.
But hardware locks have some problems like:
- Hardware compatibility with respect to the OS /platform
- Fabrication cost of the hardware lock
- Interfacing with bi-directional printers
Hardware locks are embedded with the concerned software packages by either ActiveX DLLs or ActiveX EXEs. These deliver the best results only if used under the required OS. Hardware locks are usually connected with the parallel port, which is faster and maintains a standard rate of transfer compared to serial ports. Often a hardware lock will be connected in series with your printer. Most modern printers are bi-directional. They not only receive print jobs from the PC but also send back information like printer status and errors like paper jam etc. It’s somewhat difficult and costlier to construct a lock, which interfaces efficiently with such a printer. The solution to these shortcomings may be a pure software-written lock. Here are the logical steps:
- Identify the ‘uniqueness’ of the system parameters to generate the system dependent variable
- Do ‘coding’ in the beginning of your software to invoke the system dependent Unique Constant (system in which the software is supposed to be installed)
- Manipulate the system dependent unique constant with your own algorithm and generate a number called software serial number
- Display the software serial number and request the user to enter the password
- Check the password entered by the user is equal to the prefixed value
- If the result is yes, allow the user to assess the software features or else display a message to reenter the password (repeat until correct password is entered)
By the unique system dependent constant, we mean units like the hard drive, or any other storage media, which are unique, system dependent and vary from one system to the other. Hence automatically a unique software serial number is generated based on the system in which the user wants to install the software and it is impossible to predict or generate an equivalent password from the same. So the user cannot use the package without the concurrence of the software supplier. Making duplicate copies of the software CD’s is useless in this case.
How to embed the software lock
The coding piece of the software lock can be an independent DLL with methods and properties to flexibly modify the algorithms. It can also be a simple public procedure, which can be checked or referred at a constant interval. For example, in VB applications, it can be a procedure within a timer object, which regularly checks for the lock password or system-dependent unique number. Preferably, it is required to be called at the start of the main application program. This will pop up a modal dialog box with the generated S/W serial Number displayed on the screen. In this dialog box, the corresponding password must be entered. If the password is incorrect, the unauthorized user cannot use the software. A key point to note here is that the password must be asked only till the authorized user enters the correct password for the first time.
S Velmourougan is Scientific Officer `SB’ at Centre For Reliability (CFR-Chennai) STQC Directorate, Ministry of Information
Technology, Govt of India