You’ve nearly finished developing your software application, and now you begin looking for the next steps with regard to securing your app for delivery. After all, you have invested quite a bit of time in the development process, and you want to reduce the risk of people stealing your intellectual property. It’s also important to understand the difference between software “licensing” and software “protection.” Here’s a brief clarification.
Typically, the term “software licensing” is used to refer to protection of software against piracy and over-usage. Some examples of what software licensing technology allows:
- Customers can evaluate software with restricted time and/or features.
- Customers are encouraged – sometimes forced – to purchase licenses for each of their computers that needs the software.
- Licenses can be revoked when customers don’t 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, with the ability to change the enabled features as their needs change.
Software licensing tools offer flexibility for managing license use within legitimate customer environments – as in, keeping honest people honest.
The term “software protection” refers to security against the loss of intellectual property. In the case of software, such loss may stem from:
- Someone removing calls to the software licensing tool so as to bypass any license management features
- 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 surrounding the application’s executables and other data files.
Software protection practices can be complex, meriting discussion far beyond this single post. The Protection PLUS 5 SDK Manual provides some high-level guidance meant to help you avoid the most common things that can lead to your application’s licensing mechanisms being bypassed or compromised.
For customers programming in Visual Studio.NET or Java programming languages, it is important to point out that these languages compile code into intermediary language code, which is compiled on demand when the application is executed. There are tools available to translate and reverse engineer this intermediary code back into source, so it is imperative that you select and use an obfuscation tool to further protect your application and your investments in it. Microsoft offers a good summary of this subject.
Depending on your company’s goals and requirements, you may want to consider a combination of software licensing tools and software protection tools, as they complement each other nicely. In many scenarios, it may not be required to implement a software protection scheme (unless you are programming in .NET or Java) in your product, but in most cases you will always have the need for software licensing to keep honest people honest and benefit from the many advantages of a licensing system.