Kerio Connect License Key Generator

Generating and validating license keys is a common requirement for commercial desktop applications. This article shows a state of the art implementation in 2021. It is simple and cryptographically secure.

  1. Kerio Connect Mail Server
  2. Kerio Connect 10
  3. Kerio Connect Email

Scope

When you browse StackOverflow for licensing implementations, you frequently read the following warning:

No license scheme is 100% secure.

It is true. So, given that our task is ultimately impossible, we don't want to think about it for too long. At the same time, we want something that is reasonably safe.

This article is about registration codes that work offline. No phoning home to a license server. Even if you use a server, you likely don't want your app to stop working just because your user doesn't have internet for a brief while. To achieve this, you will need an offline way of validating licenses.

Kerio Connect is a mail server and an all-in-one collaboration tool deployed by 30.000 companies around the world. It's easy to use and easy to manage. Arcgis 10.5 Keygen. The word 'keygen' means a small program that can generate a cd key, activation number, license code, serial number, or registration number for a piece of software. KeyGen is a shortened word for Key Generator. A keygen is made available through crack groups free to download. When writing a keygen, the author will identify.

Cracks vs. keygens

There are several ways in which people can work around the copy protection in your software. The most common are cracks. These usually patch your application's executable, to trick it into believing that there is a valid license. Every desktop application can be fooled in this way. Fortunately, cracks usually only work for specific versions of an app (eg. 5.1.2 but not 5.1.3).

The worst case for software vendors are key generators. They can be used to create arbitrarily many valid serial numbers. If a keygen exists for your app, then your licensing algorithm is compromised beyond repair.

Partial key verification

To prevent keygens from working for all versions of your software, a commonly used technique is partial key verification. Under this scheme, you only use some bits to check the validity of a license key. For example, the first version of your app might only check the first character in each group of a product key:

If someone publishes a keygen for your app, then you can release a new version that checks the second character (say) for a different requirement:

This limits the potential damage of a single key generator. But it doesn't prevent other keygens from appearing for your new app version.

Key length

Historically, license keys had to be entered manually. For instance, when you bought Windows XP, you received a CD-ROM and a printed product key that you had to type in upon installation:

To make this workable, license keys had to be short and consist of simple characters such as A - Z and 0 - 9.

Nowadays, hardly anyone types in license keys by hand. When a user purchases your software, you send them an email. They either download the license key, or copy/paste it into your application. Because of this, the length of license keys has little practical relevance today.

Older articles about license verification spend a lot of brainpower on 1) encoding information in the limited-length license key, such as a maximum app version, and 2) on partial key verification. If we drop the requirement that license keys be easy to type, we can get a simpler and more secure solution.

A modern approach

Kerio Connect Mail Server

At the end of the day, a license check boils down to code like the following:

Note that this even applies to more exotic solutions. For example, say your app's binary is encrypted and only valid license keys can 'decrypt' it somehow. Then license_key_is_valid() amounts to asking 'can this key be used to decrypt the binary?'.

We thus need to choose an implementation for license_key_is_valid(). Fortunately, modern cryptography gives us just the right tool for this: We can use RSA signature verification to sign the licensing data with a private key, then verify the signature with an associated public key.

Below is an example in Python that uses the rsa library. Because RSA is so ubiquitous, you should be able to easily port this to another language if required.

First, create an RSA key pair on your development machine. We use 512 bits here because it leads to shorter signatures. In practice, you probably want 2048 bits or more.

When a user purchases, generate a license key:

This prints the following:

Send this to your user. Then, in your application, check the validity of the license key as follows:

Once execution reaches the last line, you can trust that data was not tampered with. This lets you include information relevant to licensing in the data, such as a maximum app version to which your user is entitled.

The above code works as-is when you type it into one interactive Python interpreter session. In practice, you will have to ship the public key with your app and decide where the user will put the license key. These are just details however. The important parts of the implementation are all here.

Caveats & Summary

Assuming you use a large enough bit size, the above implementation should be safe from key generators. It is not immune to cracking however – as mentioned above, no desktop app is. If you want to make your app even more secure, you could look at obfuscation. This makes reverse-engineering and thus circumventing your copy protection more difficult.

Michael is the creator of fman, a cross-platform file manager. Frustrated with how difficult it was to create this desktop application, Michael open sourced fman's build system (fbs). It saves you months when creating desktop apps with Python and Qt. A few days of these months come from using fbs's well-integrated licensing implementation.

Deciding on the number of users (licenses)

Kerio Control is licensed as a server. The admin account and five user accounts are included in the basic license. Additional users can be added in packages of five.

A user is defined as a person who is permitted to connect to Kerio Control. Each user can connect from up to five different devices represented by IP addresses, including VPNVirtual private network - A network that enables users connect securely to a private network over the Internet. clients. Guests and their devices are exempted from the licensing system. For more information refer to Configuring the guest network.

If a user tries to connect from more than five devices at a time, this requires an additional user license.

Current license usage is displayed in the administration interface on the Dashboard.

IMPORTANT

Kerio Control does not limit the number of defined user accounts. However, if the maximum number of currently authenticated users is reached, no more users can connect.

Kerio Connect 10

Licenses, optional components, and Software Maintenance

Kerio Control has the following optional components:

  • Kerio Antivirus
  • Kerio Control Web Filter module for web page ratings

These components are licensed individually.

Software Maintenance

The Software Maintenance agreement lets you update the software. If your Software Maintenance expires, you can continue using the existing version of the product, but you cannot install any updates released after the expiration date. Learn more at www.kerio.com.

Registering Kerio Control in the administration interface

If you skip the registration in the Activation Wizard, you can register Kerio Control from the Dashboard in the administration interface (displayed after each login).

Once it is installed, the product can be registered as a trial or full version.

If your trial version is registered, the license file is automatically imported to your product within 24 hours of purchase. The Trial ID you entered in your product upon registration is then activated as a standard license number.

If you have not registered your trial version:

Kerio Connect Email

  1. Open the administration interface.
  2. On the Dashboard, click Configuration Assistant.
  1. In the Configuration Assistant dialog box, click Register product. For more information refer to Configuring the Activation Wizard.

Registering Kerio Control via the Internet

If you purchased a license and your Kerio Control cannot access the Internet, follow these steps to register the product:

  1. In a browser, go to https://secure.kerio.com/reg/
  2. Register using your purchased license number.
  3. You can then download a license key (the licence.key file, including the corresponding certificate), which must be imported to Kerio Control.

Importing the license key

  1. Prepare the file with the license.
  2. Open the administration interface.
  3. On the Dashboard, click Configuration Assistant.
  4. Click Register product. For more information refer to Configuring the Activation Wizard.

You can check to be sure the license was installed successfully in the License section of the Dashboard.

Transferring the license

Key

You can transfer the license between:

  • Two virtual appliances
  • Two software appliances
  • A virtual appliance and a software appliance
  • Two hardware appliances of the same type (if you are replacing equipment)

IMPORTANT

You cannot transfer the license between hardware appliances and software/virtual appliances or between two different types of hardware appliances.

For example: You can transfer a license from one Kerio Control NG100 to another Kerio Control NG100, but you cannot transfer a license from Kerio Control NG100 to Kerio Control NG500.

Transfer the configuration using the built-in export and import feature. For more information refer to Configuration Assistant.

During the installation, register the same license number using the Activation Wizard. After registering the license on the appliance, uninstall the original Kerio Control.

IMPORTANT

Uninstall the old system. You cannot use the same license on multiple systems.