Oracle Solaris セキュリティーサービス開発ガイド

暗号化プロバイダアプリケーションおよびモジュールのパッケージ化

Solaris オペレーティングシステムでは、アプリケーションソフトウェアは「パッケージ」と呼ばれる単位で配布されます。パッケージとは、ソフトウェア製品の配布とインストールに必要なファイルの集まりです。通常、パッケージは、アプリケーションコードの開発が完了したあとでアプリケーション開発者が設計して作成します。ソフトウェアアプリケーションのパッケージ化の概要については、『アプリケーションパッケージ開発者ガイド』を参照してください。

暗号化プロバイダのパッケージ化には、次の 2 つの要件があります。

米国政府の輸出法への準拠

米国政府は、公開された暗号化インタフェース (「crypto-with-a-hole」とも呼ばれる) の輸出を制限しています。この制限のために、プロバイダのすべてのベンダーは米国政府から輸出の承認を得る必要があります。ベンダーは、輸出法に準拠していることを示すために、Sun Microsystems, Inc. が発行する証明書を要求する必要があります。そして、ベンダーは、プロバイダの電子署名を行い、証明書を添付してソフトウェアを出荷します。

輸出承認プロセスでは、暗号化の強度によってソフトウェアを使用できる国が決まります。米国政府では、アメリカ合衆国で製造される暗号化製品に対して 2 つの輸出カテゴリを定義しています。

プロバイダが非リテール承認を得ている場合は、リテール承認を受けられるようにすることができます。リテール承認を得るには、IPsec などの特定の呼び出し側によるプロバイダの使用を禁止します。Sun では、この場合、制限付きと制限なしの 2 つの証明書を用意します。どちらの証明書を使用するかは、証明書要求プロセス (「プロバイダに署名するための証明書を要求するには」) で指定します。また、特別な起動ファイルを作成および署名し、プロバイダとともに出荷する必要があります。「リテール版の輸出用の起動ファイルを作成するには」を参照してください。

ユーザーレベルのプロバイダアプリケーションのパッケージ化

Sun 以外で、ユーザーレベルの暗号化プロバイダアプリケーションの開発者は、次の処理を実行します。

  1. Sun Microsystems, Inc から証明書を取得します。次に、ライブラリに署名します。「プロバイダへの署名の追加」を参照してください。

  2. 証明書を添付してパッケージを出荷します。証明書は、/etc/crypto/certs ディレクトリに格納する必要があります。

  3. pkcs11conf クラスを pkginfo ファイルの CLASSES 文字列内に追加します。次の行を追加してください。

    CLASS=none pkcs11conf
  4. 入力ファイル pkcs11.conf/etc/crypto ディレクトリに作成します。

    ユーザーレベルのプロバイダの入力ファイル名は、pkcs11.conf です。このファイルは、プロバイダへのパスを示します。pkcs11.conf では、エントリに次の構文を使用します。

    filename
    

    このエントリは、ファイルへの絶対パス (/opt/lib/$ISA/myProviderApp.so など) です。pkgadd を実行すると、このファイルが構成ファイルに追加されます。パス名の $ISA 表現を書き留めておいてください。$ISA は、必要に応じて、32 ビット版または 64 ビット版のアプリケーションを指します。

  5. 次の行をパッケージのプロトタイプファイルに追加します。

    e pkcs11conf etc/crypto/pkcs11conf 0644 root sys

カーネルレベルのプロバイダモジュールのパッケージ化

Sun 以外で、カーネルレベルの暗号化プロバイダモジュールの開発者は、次の処理を実行します。

  1. Sun Microsystems, Inc から証明書を取得します。次に、カーネルソフトウェアモジュールまたはデバイスドライバに署名します。「プロバイダへの署名の追加」を参照してください。

  2. 証明書を添付してパッケージを出荷します。証明書は、/etc/crypto/certs ディレクトリに格納する必要があります。

  3. kcfconf クラスを pkginfo ファイルの CLASSES 文字列内に追加します。次の行を追加してください。

    CLASS=none kcfconf
  4. 入力ファイル kcf.conf/etc/crypto ディレクトリに作成します。このファイルは、ソフトウェアとハードウェアのプラグインをカーネル構成ファイルに追加します。

    • プロバイダが暗号化機構を備えたカーネルソフトウェアモジュールである場合は、エントリに次の構文を使用します。

      provider-name:supportedlist=mech1,mech2,...
      provider-name

      カーネルソフトウェアモジュールのベース名

      mech*

      リスト内の暗号化機構の名前

      次のエントリは、カーネルソフトウェアモジュールの例です。

      des:supportedlist=CKM_DES_CBC,CKM_DES_ECB,CKM_DES_CFB
    • プロバイダが暗号化機構用のデバイスドライバ (アクセラレータカードなど) である場合は、エントリに次の構文を使用します。

      driver_names=devicedriver1,devicedriver2,...
      devicedriver*

      暗号化デバイス用のデバイスドライバの名前

      次のエントリは、デバイスドライバの例です。

      driver_names=dca