Java 暗号化アーキテクチャ

JCA

Java 暗号化アーキテクチャー (JCA) は,Java プラットフォームにおける暗号化機能へのアクセスおよび開発のためのフレームワークであり,Java Security API (暗号化 API) が含まれている.

輸出規制への対応から,歴史的に暗号化 API は java.security パッケージと javax.crypto パッケージの 2 つに分かれている.java.security パッケージは,輸出規制の対象ではないクラス (Signature や MessageDigest など) が含まれ,javax.crypto パッケージには、輸出規制の対象のクラス (Cipher や KeyAgreement など) が含まれている.

JDK の JCA には、次の 2 つのソフトウェアコンポーネントが含まれる.

暗号プロバイダの実装

暗号化サービスを独自に実装し組み込むことができる.この場合,以下に示すエンジンクラスを実装し,独自のプロバイダパッケージを作成する必要がある.

エンジンクラスは,特定の暗号化アルゴリズムに依存しない特定の型の暗号化サービス機能へのインタフェースを提供している. エンジンクラスが提供するアプリケーションインタフェースは,Service Provider Interface (SPI) として実装される.すなわち,各エンジンクラスに対応する抽象 SPI クラスが存在し,抽象 SPI クラスによって暗号化サービスプロバイダが実装しなければならない Service Provider Interface のメソッドが定義されている.

SPI クラスの名前は,対応するエンジンクラス名のあとに"Spi" を追加した名前である.例えば,Signature エンジンクラスに対応する SPI クラスは,SignatureSpi クラスである. 各 SPI クラスは,抽象クラスであり,指定したアルゴリズムに対する特定の型のサービスの実装を提供するには,対応する SPI クラスをサブクラス化してすべての抽象メソッドの実装を提供する必要がある.具体的には,engineSign メソッドなどの "engine" で始まる名称のメソッドを全て実装する.

プロバイダによる Cipher,KeyAgreement,KeyGenerator,MAC,または SecretKey ファクトリの実装 (クラス) をインスタンス化する際,JCA フレームワークはプロバイダのコードベース (JAR ファイル) を判定し,その署名を検証する.これにより,JCA はプロバイダを認証して,信頼されたエンティティーにより署名されたプロバイダだけが JCA にプラグインできるようにしている.このため,暗号化プロバイダは署名付きにする必要がある.

暗号プロバイダの組み込み

Java クラスの検索

inserted by FC2 system