JLicenser
暗号化とライセンスでJavaプログラムを保護するツール
Javaプログラムは、バイトコードの仕様上、簡単に逆コンパイルできてしまいます。これまで、曖昧化などの方法が使われていますが完全ではありません。また、作成したJavaプログラムを特定の相手にだけ使用権を認めて配布することが必要になる場合もあります。そこで、次のような機能を持ったツールを開発しました。
◆ 機能
● クラスを暗号化することによって、次のJavaプログラムの逆コンパイルが不可能になります。

コンソールアプリケーション
GUIアプリケーション
クラスライブラリ
サーブレット
アプレット ※試作段階

● 暗号化の鍵は、公開鍵暗号方式により暗号化して使用者に渡すので、正当な使用者のみが安全に復号できます。
● 使用者に付与する使用権(ライセンス)には、次の条件を組み合わせることができます。
ホスト名
物理アドレス
IPアドレス
有効期限
独自のライセンス条件


ライセンス条件の設定例

● 開発者はプログラムを追加することによって独自のライセンス条件を追加することができます。
● 使用権(ライセンス)は、署名付きのファイルに記述して使用者に配布します。正当な使用権を持たない者が、これを入手し、更に改竄などの不正な操作を行ってもアプリケーションは起動できません。
アプリケーションの開発から実行まで
◆ 動作環境 ◆ 使用方法
OS
Windows 2000、Windows XP、Linux
Java
開発者側:JDK1.5以上
利用者側:JRE1.5以上
本体 [ZIP]
取扱説明書(Wundows編) [PDF]
取扱説明書(Linux編) [PDF]
公開資料(暗号化のメカニズム)[PDF]
API仕様書[HTML]
◆ 更新履歴
[2008.08.04] v0.3.5 暗号化したクラスのスタティック・メソッドを起動できないバグを修正。

[2008.07.09] v0.3.4 アプレット暗号化機能を試作。

[2008.06.22] v0.3.2 取扱説明書に注意事項を加筆。

[2008.06.11] v0.3.1 サーブレット、クラスライブラリに対応。ライセンス条件拡張機能追加。

[2008.05.24] v0.2.5 Java1.5以上に対応。対称鍵暗号を3DESからAESに変更。

[2005.10.19] v0.2.4 リリース バグフィックス

[2004.2.6] v0.2.3 リリース バグフィックス

[2003.8.27] 資料「暗号化のメカニズム」を公開

[2003.8.26] v0.2.2 リリース インストーラーをGUI形式に変更

[2003.5.1] v0.2.1 公開
◆ ご意見、ご要望
お待ちしています。
Q) Linuxにてインストールが行えません。java installにてインストーラーを起動しようとしますと、java.io.IOException: java.io.IOException:"/usr/java/j2sdk1.4.2_08/jre/bin/java": not found install failed (64)となります。(M.Kさん)

A)インストーラーに誤りがありしました。v0.2.4で修正しました。
Q) 使用期限は無制限に出来ないのでしょうか?ドキュメントでは、* にすることで無制限になる旨の記載がありますが認証中にExceptionを起こしてしまいます。日付のみ有効にし、その他を無制限にする場合にはOKです。(K.Yさん)

A)使用期限を無期限とする処理に誤りがありしました。v0.2.3で修正しました。
Q) classpathに指定するjarファイルは、全て暗号化しないと動作しないのでしょうか?他で提供されている API や JDBC ドライバーなどを指定するとjava.lang.reflect.InvocationTargetExceptionが起こります。暗号化すると動作します。(K.Yさん)

A)暗号化クラスと非暗号化クラスの混在は可能です。しかし、Launcherにおいてクラスパスの処理に不具合がありこのような現象が発生します。v0.2.3で修正しました。
Q)「JLicenser」で配布用に作成するアプリケーションは、暗号化処理が含まれていると思いますが、輸出管理上問題にならないことをオーソライズした資料がありましたら、お教え戴けないでしょうか。(O.Kさん)

A)JLicenserは次の2つのコンポーネントによって作られています。

(1) Java2 v1.4
(2) Bouncy Castle Crypto APIs

 はじめに(1)は、JCE(Java Cryptgraphy Extension)バージョン1.2.2が同梱されています。この、JCEはバージョン1.2までは、米国輸出規制の対象となっており、Java本体とは別に配布されていました。しかし、1.2.xからは、適合するプロバイダー(Cryptographic Servive Providers)だけがプラグインできるメカニズムが導入されたおかげで輸出可能となり、本体に同梱されるようになったというわけです。詳しくは、原文でどうぞ。
 次に(2)はJCEのメカニズムによってプラグイン可能な暗号化の心臓部分です。このコンポーネントのライセンスに関しては、ここに書いてある通り再販も可能なようです。
 最後に、ご参考までに、米国の暗号輸出規制に関する最近の記事です。