What is the difference between software licensing and protection?
"Software licensing" and "software protection" are terms that are often used interchangeably, but they describe two different technologies. As you finish developing your application and prepare it for delivery, it helps to understand how each one works. In many cases, a combination of the two should be considered to reduce the risk of people stealing your intellectual property and to improve the return on your development investment.
Software Licensing
The term "software licensing" usually refers to protection of your software against piracy and over-usage. Licensing technology lets you control how, where, and by whom your software is used. Some examples of what software licensing allows:
- Customers can evaluate software with restricted time and/or features (trial or demo licenses).
- Customers are encouraged, and sometimes required, to purchase a license for each computer that needs the software.
- Licenses can be revoked when customers do not pay their invoices.
- Customers have the freedom to move licenses between their own computers.
- Software can be licensed with different features enabled for each customer, and those enabled features can be changed as the customer's needs change.
In short, software licensing tools offer flexibility for managing how a license is used within legitimate customer environments. The goal is keeping honest people honest.
Software Protection
The term "software protection" refers to security against the loss of intellectual property. For software, that loss may come from:
- Someone removing the calls to the software licensing tool in order to bypass license management features.
- Someone reverse engineering an underlying algorithm used to implement a particular feature or aspect of the application.
Software protection provides more of a physical and logical security layer around the application's executables and other data files. It makes the application harder to tamper with, disassemble, or modify.
Software protection practices can be involved and merit discussion well beyond a single article. The Protection PLUS 5 SDK Manual provides high-level guidance to help you avoid the most common mistakes that can lead to your application's licensing mechanisms being bypassed or compromised.
A note for .NET and Java developers
If you are programming in Visual Studio .NET or Java, keep in mind that these languages compile code into an intermediate language that is compiled on demand when the application runs. Tools exist that can translate and reverse engineer this intermediate code back into readable source. For that reason, it is important to select and use an obfuscation tool to further protect your application and your investment in it.
Which Do You Need?
Depending on your company's goals and requirements, you may want to consider a combination of software licensing tools and software protection tools, since they complement each other well.
In many scenarios, it may not be necessary to implement a software protection scheme in your product, although this is strongly recommended if you are programming in .NET or Java. In almost all cases, however, you will have a need for software licensing to keep honest people honest and to gain the many benefits of a licensing system, such as flexible trials, per-machine activation, feature control, and license management throughout the product's life.