Overview


Contents






1. Requirements

  • JDK 1.3.0_01 or later, and J2EE 1.2.1 or later
    (This is for developers. Only JRE 1.3.0_01 is required to use programs protected by JChain SA)
  • 32MB RAM
  • Linux, Solaris, Mac OS X or Windows 98/2000/NT/XP
  • One of the following cryptographic providers:
  • SunJCE
         Free download: http://java.sun.com/products/jce/index-122.html
         Necessary library: sunjce_provider.jar
  • Signed JAR file of the Bouncy Castle Crypto API (Provider)
         Free download: http://www.bouncycastle.org/latest_releases.html
         Recommended: bcprov-jdk13-123.jar/ bcprov-jdk14-123.jar
  • Cryptix
         Free download: http://www.cryptix.org/
        








2. Features

Advanced Features Basic Features



  Modular licensing (flexible licensing for each feature)

You can license different module/feature in your application, with different license parameters.

For exapmle, an end-user can be licensed to use feature A of your software PERMANENTLY, feature B with 1 year SUBSCRIPTION, feature C with 1 month TRIAL, and other features with NO LICENSE. Later, you can modify the license flexibly. For instance, the license for feature C can be modified from TRIAL to SUBSCRIPTION status.

Also, users can easily request those modifications following a wizard. And you can easily issue updated license keys for them, just by pressing "Accept" button.

Back to the list of features


  Custom (flexible) license modifications

As described in "Modular licensing", JChain enables you and your customers to manage license down to the module level. Your customers can easily request modifications of their license, by following a graphical wizard. And you can easily issue updated license keys for them, just by pressing "Generate a key" button in JChain Key Generator dialog.



Back to the list of features


  Encryption of your bytecodes and/or obfuscation of source codes (option)

To ensure its strength, JChain combines the adaptive key with several measures against reverse engineering. Among others, the program of JChain is made tough against cracking attempts, by:
  • Extensively encrypting the byte codes of JChain. (Note: the customized class loader is also encrypted.)
  • Obfuscating the source codes of JChain.
  • Making the codes of JChain tamper resistant. (see the next feature.)
We also provides optional services to reinforce your codes through encryption, obfuscation, and embedding tamper resistant routines.

Alternatively, you can use our "Java Code Protector" to do the reinfocement by yourself. You wouldn't need our service any more, if you choose to use this tool.

Back to the list of features


  Tamper proofing of your program (option)

JChain contains routines for tamper detection at multiple points. If some routines in JChain are illicitly modified, they would be detected elsewhere in JChain, and the use of the software will be disabled.

If a cracker/pirate ignore the warning messages JChain displays and continue to use the tampered JChain, JChain tries to destroy the cracker's file system. The warning messages cover the entire screen with red letters on a white background, so no one can miss it. The messages tell users what happened and what to do, and only who ignores the messages with wrong intentions will pay the price.

Chainkey provides optional services to make your own codes tamper resistant in the same way. Or you can use our "Java Code Protector" to do it by yourself.

Back to the list of features


  Implementation of the adaptive key technology

We've developed a patent-pending technology named "adaptive key" that, for the first time in the copy protection history, succeeded to utilize the changing file systems as the basis for the identification of indivisual computers. This is the core technology of JChain. In other words, JChain recognizes the difference between computers by the contents and structure of their file systems. That, in combination with other techniques, enables software copy-protection as strong as hardware keys (aka dongles), yet without depending on any hardware. In other words, we had to sacrifice either strong copy protection or online distribution, before this technology.

For further information on the adaptive key, visit our web site.

Back to the list of features


  Configurable copy protection (How accurate, How severe, How often ...)

JChain has some parameters for the configuration of copy protection characteristics. Under normal circumstances, the default settings should be fine. Advanced users could benefit from adjusting some of those parameters:
  • Depth: the depth of hierarchy to which JChain checks customer's file system. More depth generally means more reliable copy protection but worse performance.
  • Allowance (%): the parameter to specify how generous (or severe) JChain judges the difference of file systems.
  • Interval of key updater: How often a license key should adjust itself to end-users' file system.
  • Inaccessibility: How many days products are allowed to work without contacting the licensor server (a Web edition only parameter).
  • ...

Back to the list of features


  Flexible license types

You can set one of the 4 license types (as listed below), separately for each module or feature. Also, you can specify the types and parameters of available licenses in advance by editing a property file using the JChain Key Generator dialog. Your customers will select from them by following a wizard.
  • Permanent license
  • Lease (or Subscription) license, with license term in months
  • Trial (or Evaluation) license, with license term in months
  • No license
For lease and trial license, you can set the expiration date from 1 month up to 3 years.

Back to the list of features


  Custom license parameters for your own additional control

You can store up to 50 String objects in each license key, so that your program can use them to complement the license management by JChain.

Back to the list of features


  Easy reissue

Following a wizard, your customers can easily request the reissue of their license keys, in case their key files are lost or damaged. (Reissue doesn't change any license parameters.) You can reissue their keys easily using the JChain Key Generator dialog.

See also "Automatic key issue/reissue".

Back to the list of features


  Easy lease (subscription) extension

Following a wizard, your customers can easily request the extension of their lease license. You can issue new keys with extended lease term, using the JChain Key Generator dialog.

See also "Automatic key issue/reissue".

Back to the list of features


  A graphical wizard for end-users to manage their license keys

JChain comes with a wizard for end-users to manage their own license key. With this wizard, they can easily order issue/reissue of their license keys of a variety of types.


Since v1.6, a checkbox is added to the "Main Menu" of the wizard, with which the user can choose not to see the wizard again for the day.

Back to the list of features


  License key generator

JChain Key Generator dialog provides intuitive GUI for you to issue, reissue, or modify your customer's license keys. All you have to do is to select a request file from your customers, check its details, and press "Generate a key" button.

Back to the list of features


  License key update daemon

Key Updater is a daemon thread to update license keys constantly. JChain internally uses this daemon. You can also use this daemon manually, though it's not always necessary or desirable to do so. See "How to Use Key Updater" for more.

Back to the list of features


  Expiration reminder

You can use JChain's built-in expiration reminder to remind your customers of the expiration date. By editing a property file, you can flexibly set when it starts to work (e.g. 10 days before expiration for 2 months trial, 40 days before expiration for 1 year subscription, ...).

Back to the list of features


  Ensured end-user privacy

A license key contains the profile of end-user's file system. However, the information is hashed and encrypted. Because hash functions are "one way" functions (i.e. it's nearly impossible to derive the original data), the original file system information is well secured against decoding attempts by the crackers or even by licensors.

Back to the list of features


  Localization/i18n ready

You can localize the wizard (GUI) for end-users easily by preparing another property file containing localized messages. It's easy to do that manually.

* Optional JSP for end-users do not support the localization by the property files. You don't have to use those files, as long as you use the wizard for end-users. But if you use them, you'll need to copy and edit them. Editing may take a day.

Back to the list of features


  Logging

JChain core library generates 3 kinds of logs:
  • General log: all log entries will be logged here.
  • Error log: for error messages.
  • Transaction log: for transactions such as key generation.
The former 2 logs discards some old entries, when the file size reaches maximum. The transaction log creates another file to keep all records.



Back to the list of features








3. Options

Customized Obfuscation of JChain
This is a service to create a customized JChain by obfuscation, in order to make it a little bit harder to crack your software.

Customized Obfuscation of Your Software*1
If your software itself is not protected against reverse engineering, you can not fully enjoy the benefits of using JChain. This is a service to obfuscate the source code of your software. You can combine this service with the following protection services to further strengthen your software.

Customized Encryption of Your Software*1
This is a service to encrypt the bytecodes of your software.

Making Your Software Tamper Resistant*1
This is a service to make your codes tamper-resistant, as JChain itself is.


*1: Since v1.6, you can do these reinforcement by yourself (i.e. without depending on our services), using a tool named "Java Cod Protector".

Please contact us, for further customized solutions.









History of JChain

  • 12/05/2000

    We filed a new patent application in Japan to protect our "adaptive key".
    (Japanese Patent Application No. 2000-370630)

  • 12/09/2000

    JLicense v1.01 was released from Crawlbase Software.
    JLicense products are the direct ancestors of JChain SA.

  • 07/24/2001

    JLicense v1.3 was released from Crawlbase Software.
    Several features including localization and obfuscation supports are added.

  • 10/26/2001

    We added some claims to the application, regarding "mine field" protection techniques.
    (Japanese Patent Application No. 2001-329310)

  • 11/08/2001

    JLicense v1.32 was released from Crawlbase Software.
    User registration functions are introduced.

  • 12/03/2001

    We filed a new patent application in the U.S. with a claim of priority.
    "Method and Program for Preventing Unfair Use of Software"

  • 4/08/2002

    By this time, several software companies around the world has purchased JLicense
    and it has proved to be the most successful product of Crawlbase Software.
    Crawlbase Software has re-branded itself to "Chainkey", and decided to concentrate
    on the anti-piracy product lines.

  • 5/01/2002

    The development JChain SA has started.

  • 8/02/2002

    The final testing phase of JChain SA Minimal v1.0 started.

  • 10/09/2002

    JChain SA Minimal v1.0 released.

  • 11/20/2002

    JChain SA Minimal v1.1.3 released.
    Easier reissue and lease extension.

  • 04/21/2003

    JChain SA Minimal v1.2 released.
    Easier/simplified usage.
    Bug fix regarding the deployment in jar format.
    Optional byte code protection service reinforced.
    Improved tutorial.
    "JChained" demo programs.

  • 08/06/2003

    JChain SA Minimal v1.2.3 released.

  • 09/03/2003

    JChain SA v1.3.1 released.

    Support for JSP interface for license management. (A function for the Enterprise edition)
    Support for Mac OS, in addition to Windows/Linux/Unix.
    Modification of classloading for environments where classpath can not be set frexibly.

  • 11/28/2003

    JChain v1.5.0 Web edition released.

    Online licensor server
    Support for modular licensing and management of multiple products
    One-stop management panel for integration and license management

  • 01/05/2004

    JChain v1.5.2 SA Minimal edition released.

    Bug fixes from v1.3.1 SA edition
    Support for modular licensing and custom modifications
    Enhanced key generator for issue, reissue, lease-extension, and modifications of keys

  • 02/26/2004

    JChain v1.5.2.6 SA Minimal edition

    Property files simplified.
    Some problems fixed for when X11 library is unavailable on UNIX/LINUX servers.

  • 04/17/2004

    JChain v1.5.3.1 SA Minimal edition

    Performance much improved for the licensee-side wizard.
    JChain itself protected by "Java Code Protector".

  • 04/30/2004

    JChain v1.6.0.0 SA Minimal edition

    Bug fix for a deadlock when using Sun's Java HotSpot Server VM.
    3rd party cryptic library switched from the Cryptix to the Bouncy Castle.

  • 05/18/2004

    JChain v1.6.1.1 SA Minimal edition

    Support for proxy and authentication, when accessing the ChainKey server.

  • 06/04/2004

    JChain v1.6.0.0 SA Minimal edition

    Performance improved through an extensive refactoring.
    A deadlock on expiration reminder fixed.
    A checkbox added, with which users can choose not to see the wizard for the day.

  • 06/13/2004

    JChain v1.6.3.0 SA Minimal edition

    Adjusting properties at installation becomes no more necessary.
    (The "chainkey.root" property is automatically detected at runtime).

  • 06/22/2004

    JChain v1.6.3.2 SA Minimal edition

    Adjustment of the timing to log the state of Key Updater
    Bug fix. The expiration reminder was using the settings for the primary module.
    (causing display of the reminder too early for other modules).

  • 06/24/2004

    JChain v1.6.3.6 SA Minimal edition

    User experience improved for modular licensing, by removing redundant
    routines regarding getLicenseStatus(FID).
    [Before]
    * profile difference was calculated each time getLicenseStatus(FID) is called.
    * key updater is restarted each time getLicenseStatus(FID) is called.
    * product name being displayed each time getLicenseStatus(FID) is called.
    * nag being displayed each time getLicenseStatus(FID) is called.
    [After]
    * profile difference is calculated at start-up or when the key file is changed.
    * key updater is restarted at start-up or when the key file is changed.
    * product name is displayed at start-up and not displayed for at least a certain period.
    * nag is displayed at start-up and not displayed for at least a certain period.

  • 07/27/2004

    JChain v1.6.3.7 SA Minimal edition

    Using JChain in the Apache Ant environment supported.


  • 10/04/2004

    JChain v1.6.5.0 SA Minimal edition

    Licensors can continue using JChain even if ChainKey server is unavailable.
    Licensors and end-users can choose cryptographic library to use (SunJCE, Bouncy Castle, or Cryptix)








5. Development Plan

JChain SA Minimal

  • Automatic integration
  • Better GUI for end users
JChain SA Enterprise

  • Authorization/registration database
  • One stop management console for integration and license management
  • Automated processing of a large number of activation requests
JChain Web

  • Watch dog programs to analyze and respond against cracking attempts flexibly
  • Piracy detection report/statistics








© 2002 - 2004 ChainKey, Inc. All rights reserved.