CodeMeter SmartBind


Wibu-Systems recently released SmartBind™ in order to solve a serious problem with software activations: unnecessary reactivations. SmartBind is the preferable binding scheme supported now in CodeMeter version 4.30d and later.

The Problem With Activations

Software licensing (as opposed to dongle-based licensing) typically binds the license to a specific PC—otherwise the license could be copied and run simultaneously on multiple PCs, regardless of the license terms. Machine binding is the most common way to prevent license abuse. Machine binding uses hardware factors that are unique to a particular PC, such as MAC address, hard disk serial number, CPU serial number, and so forth. So where's the problem?

The problem is in false positives. All the factors that can be bound by the license are mutable, and sometimes for bad reasons. For example, if the license is bound to the MAC address, what happens if the PC has more than one network card? The operating system may report different MAC addresses to the license system, which might then decide that the license had duplicated on a different PC. That's a false positive: the user has a legitimate right to use the software but the licensing system thinks otherwise. When that happens the user has to reactivate the software with the publisher (ISV): an annoyance to the user and a cost to the ISV.

One common method to address this problem is to use multiple factors and have the license work if only one or two of the factors hasn't changed. CodeMeter CmActLicense gives you this option, and reduces the number of false positives. But it's not perfect.


Introducing SmartBind

Now comes SmartBind, a way to address this problem without any work on the part of you, the ISV. With SmartBind, CodeMeter looks at many factors on a particular PC and weights them based on internal algorithms. Any particular factor can change without necessarily causing the license to require re-activation. Instead, CodeMeter looks at the total picture to decide if enough has changed to warrant a license reactivation. Some factors, like MAC address, are known to be fickle. Others, like the CPU serial number (when available) are stronger indicators of the uniqueness of a system.

With SmartBind, you don't specify which particular aspects of a PC you want to use to determine uniqueness; you only need to specify one of three levels of binding strength: Tight, medium, or loose. Tight means very few factors are allowed to change without a reactivation; loose means many factors can change without a reactivation. You can use a “tight” setting for higher risk markets and a “loose” setting for more trusted markets or customers. Normally “medium” will be perfect.

How It Works

To understand this better, we have several illustrations here. Imagine a picture that is easily recognizable as a jigsaw puzzle. We can remove a few pieces and the image is still recognizable. But if enough parts are removed (especially around critical components we use for recognition), it becomes difficult or impossible to know for certain who the image belongs to. Using this as an analogy for software, the different parts of the picture are like binding characteristics. This is how SmartBind works–it recognizes that certain binding attributes are better than others (like a face is “better” for picture recognition than a background image) and reacts accordingly.

SmartBind identifies (via a proprietary algorithm) the “best” binding characteristics and gives them more weight in deciding whether the software needs to be reactivated or not:

Figure 1. The official portrait of President John F. Kennedy

Figure 1: A familiar figure, easily recognized.

Figure 2. The official portrait of President John F. Kennedy, but with two puzzle piece shapes removed from the picture.

Figure 2: Large parts of the picture could be removed and the image would still be recognizable. In this case, JFK's face is the most critical element in recognizing the picture.

Figure 3. The official portrait of President John F. Kennedy, but with several puzzle pieces removed from the picture. However, you can still identify the subject.

Figure 3: Some parts are more important than others. Quite a bit of the picture could change and we can still be fairly certain who it is.

Figure 4. The official portrait of President John F. Kennedy, but with many puzzle piece shapes removed from the picture. It has now become very difficult to recognize the subject.

Figure 4: However, if you remove or change enough critical parts, you can eliminate the certainty that you recognize this picture. If this were software, you would probably require a reactivation now.

It's Complicated

This may look fairly simple, and it would be easy to assume that this is a technology you can find in other activation solutions, but it's not. SmartBind is a patented-pending technology implementing redundancy-based error correction mathematics similar to those used in forward error correction theory (commonly used in telecommunications and data storage like DVD).


One of the key advantages in SmartBind is its mutability–as better methods of binding and machine detection become available the improvement can be implemented without changing your source code or even the need to update your licenses. Only the CodeMeter runtime on the user's machine will need to be updated to new releases to take advantage of any new binding technologies. For example, if next year some new attribute begins to show up on PCs that doesn't exist now, and it can be used for binding, your current applications could use this attribute by just updating the CodeMeter runtime at your customer's site.

Finally, SmartBind is the solution to the virtual machine problem. Today if you bind to machine characteristics your application may fail to run on a virtual machine, even though the user has a legitimate license. This is currently the case with some of the most widely-used commercial software applications. With SmartBind the problem goes away–the algorithms recognize whether the software is running on a “real” PC or on a guest VM system and adjusts the binding automatically. As a developer you don't need to worry about detecting the current state of the machine or how to bind; just select SmartBind and ship your product. CodeMeter will take care of the rest.

To top