Solaris のシステム管理 (セキュリティサービス)

暗号化フレームワークの管理

この節では、Solaris 暗号化フレームワークのソフトウェアプロバイダおよびハードウェアプロバイダの管理方法について説明します。必要に応じて、ソフトウェアプロバイダおよびハードウェアプロバイダの使用を解除することができます。たとえば、ソフトウェアプロバイダのアルゴリズムの実装を無効にすることができます。その後、別のソフトウェアプロバイダのアルゴリズムがシステムで使用されるようにすることができます。

Procedure使用可能なプロバイダを一覧表示する方法

Solaris 暗号化フレームワークには、数種類のコンシューマ用のアルゴリズムが用意されています。

  1. 簡潔な形式でプロバイダを一覧表示します。


    注 –

    プロバイダリストの内容と書式は、Solaris のリリースによって異なります。使用しているシステムでサポートされるプロバイダを表示するには、システムで cryptoadm list コマンドを実行します。


    通常のユーザーは、ユーザーレベルのメカニズムのみを使用できます。


    % cryptoadm list
    user-level providers:
        /usr/lib/security/$ISA/pkcs11_kernel.so
        /usr/lib/security/$ISA/pkcs11_softtoken.so
    
    kernel software providers:
        des
        aes
        blowfish
        arcfour
        sha1
        md5
        rsa
    
    kernel hardware providers:
        ncp/0
  2. Solaris 暗号化フレームワークのプロバイダとそのメカニズムを一覧表示します。

    すべてのメカニズムが次の出力のように一覧表示されます。ただし、一覧表示されたメカニズムのいくつかは使用できない場合があります。管理者によって使用が許可されているメカニズムのみを一覧表示する方法については、例 14–16 を参照してください。

    この出力は、表示用に整形されています。


    % cryptoadm list -m
    user-level providers:
    =====================
    /usr/lib/security/$ISA/pkcs11_kernel.so: CKM_MD5,CKM_MD5_HMAC,
    CKM_MD5_HMAC_GENERAL,CKM_SHA_1,CKM_SHA_1_HMAC,CKM_SHA_1_HMAC_GENERAL,
    …
    /usr/lib/security/$ISA/pkcs11_softtoken.so: 
    CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN,
    CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN,
    CKM_AES_CBC,CKM_AES_CBC_PAD,CKM_AES_ECB,CKM_AES_KEY_GEN,
    …
    kernel software providers:
    ==========================
    des: CKM_DES_ECB,CKM_DES_CBC,CKM_DES3_ECB,CKM_DES3_CBC
    aes: CKM_AES_ECB,CKM_AES_CBC
    blowfish: CKM_BF_ECB,CKM_BF_CBC
    arcfour: CKM_RC4
    sha1: CKM_SHA_1,CKM_SHA_1_HMAC,CKM_SHA_1_HMAC_GENERAL
    md5: CKM_MD5,CKM_MD5_HMAC,CKM_MD5_HMAC_GENERAL
    rsa: CKM_RSA_PKCS,CKM_RSA_X_509,CKM_MD5_RSA_PKCS,CKM_SHA1_RSA_PKCS
    swrand: No mechanisms presented.
    
    kernel hardware providers:
    ==========================
    ncp/0: CKM_DSA,CKM_RSA_X_509,CKM_RSA_PKCS,CKM_RSA_PKCS_KEY_PAIR_GEN,
    CKM_DH_PKCS_KEY_PAIR_GEN,CKM_DH_PKCS_DERIVE,CKM_EC_KEY_PAIR_GEN,
    CKM_ECDH1_DERIVE,CKM_ECDSA

例 14–15 既存の暗号化メカニズムを検索する

次の例では、ユーザーレベルライブラリ pkcs11_softtoken が提供するすべてのメカニズムを一覧表示します。


% cryptoadm list -m provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
Mechanisms:
CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN,
CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN,
…
CKM_SSL3_KEY_AND_MAC_DERIVE,CKM_TLS_KEY_AND_MAC_DERIVE


例 14–16 使用可能な暗号化メカニズムを検索する

ポリシーによって、どのメカニズムが使用可能かが判断されます。ポリシーは、管理者によって設定されます。管理者は、特定のプロバイダのメカニズムを無効にすることができます。-p オプションを指定すると、管理者が設定したポリシーによって許可されているメカニズムのリストが表示されます。


% cryptoadm list -p
user-level providers:
=====================
/usr/lib/security/$ISA/pkcs11_kernel.so: all mechanisms are enabled.
random is enabled.
/usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled.
random is enabled.

kernel software providers:
==========================
des: all mechanisms are enabled.
aes: all mechanisms are enabled.
blowfish: all mechanisms are enabled.
arcfour: all mechanisms are enabled.
sha1: all mechanisms are enabled.
md5: all mechanisms are enabled.
rsa: all mechanisms are enabled.
swrand: random is enabled.

kernel hardware providers:
==========================
ncp/0: all mechanisms are enabled.

Procedureソフトウェアプロバイダを追加する方法

  1. Primary Administrator 役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. システムで使用可能なソフトウェアプロバイダを一覧表示します。


    % cryptoadm list
    user-level providers:
        /usr/lib/security/$ISA/pkcs11_kernel.so
        /usr/lib/security/$ISA/pkcs11_softtoken.so
    
    kernel software providers:
        des
        aes
        blowfish
        arcfour
        sha1
        md5
        rsa
    
    kernel hardware providers:
        ncp/0
  3. pkgadd コマンドを使用して、プロバイダのパッケージを追加します。


    # pkgadd -d /path/to/package pkginst
    

    パッケージには、Sun の証明書によって署名されたソフトウェアが含まれている必要があります。Sun の証明書を要求し、プロバイダに署名する方法については、『Oracle Solaris セキュリティーサービス開発ガイド』の付録 F「暗号化プロバイダのパッケージ化と署名」を参照してください。

    パッケージには、一連のメカニズムを備えたほかのプロバイダが使用可能であることを暗号化フレームワークに通知するスクリプトが含まれます。パッケージの要件については、『Oracle Solaris セキュリティーサービス開発ガイド』の付録 F「暗号化プロバイダのパッケージ化と署名」を参照してください。

  4. プロバイダを更新します。

    ソフトウェアプロバイダを追加した場合や、ハードウェアおよびそのハードウェアに指定されているポリシーを追加した場合は、プロバイダを更新する必要があります。


    # svcadm refresh svc:/system/cryptosvc
    
  5. 新しいプロバイダをリストに追加します。

    この場合、新しいカーネルソフトウェアプロバイダがインストールされています。


    # cryptoadm list 
    …
    kernel software providers:
        des
        aes
        blowfish
        arcfour
        sha1
        md5
        rsa
        swrand
        ecc <-- added provider

例 14–17 ユーザーレベルソフトウェアプロバイダを追加する

次の例では、署名された PKCS #11 ライブラリをインストールします。


# pkgadd -d /cdrom/cdrom0/SolarisNew
Answer the prompts
# svcadm refresh system/cryptosvc
# cryptoadm list
user-level providers:
==========================
    /usr/lib/security/$ISA/pkcs11_kernel.so
    /usr/lib/security/$ISA/pkcs11_softtoken.so
    /opt/SUNWconn/lib/$ISA/libpkcs11.so.1 <-- added provider

暗号化フレームワークによってライブラリをテストする開発者は、ライブラリを手動でインストールすることができます。


# cryptoadm install provider=/opt/SUNWconn/lib/\$ISA/libpkcs11.so.1

プロバイダの署名については、「Sun 以外のソフトウェアのためのバイナリ署名」を参照してください。


Procedureユーザーレベルのメカニズムが使用されないようにする方法

ライブラリプロバイダの暗号化メカニズムに使用すべきでないものが存在する場合、選択したメカニズムを削除することができます。この手順では、一例として、pkcs11_softtoken ライブラリの DES メカニズムを使用します。

  1. スーパーユーザーになるか、Crypto Management 権利プロファイルを含む役割を引き受けます。

    Crypto Management 権利プロファイルを含む役割を作成し、作成した役割をユーザーに割り当てる方法については、例 9–7 を参照してください。

  2. 特定のユーザーレベルソフトウェアプロバイダによって提供されるメカニズムを一覧表示します。


    % cryptoadm list -m provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
    /usr/lib/security/$ISA/pkcs11_softtoken.so:
    CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN,
    CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN,
    CKM_AES_CBC,CKM_AES_CBC_PAD,CKM_AES_ECB,CKM_AES_KEY_GEN,
    …
  3. 使用可能なメカニズムを一覧表示します。


    $ cryptoadm list -p
    user-level providers:
    =====================
    …
    /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled.
    random is enabled.
    …
  4. 使用すべきでないメカニズムを無効にします。


    $ cryptoadm disable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so \
    > mechanism=CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB
    
  5. 使用可能なメカニズムを一覧表示します。


    $ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
    /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled,
    except CKM_DES_ECB,CKM_DES_CBC_PAD,CKM_DES_CBC. random is enabled.

例 14–18 ユーザーレベルソフトウェアプロバイダのメカニズムを有効にする

次の例では、無効になっている DES メカニズムを再び使用可能にします。


$ cryptoadm list -m provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
/usr/lib/security/$ISA/pkcs11_softtoken.so:
CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN,
CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN,
…
$ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
/usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled,
except CKM_DES_ECB,CKM_DES_CBC_PAD,CKM_DES_CBC. random is enabled.
$ cryptoadm enable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so \
> mechanism=CKM_DES_ECB
$ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
/usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled,
except CKM_DES_CBC_PAD,CKM_DES_CBC. random is enabled.


例 14–19 ユーザーレベルソフトウェアプロバイダのメカニズムをすべて有効にする

次の例では、ユーザーレベルライブラリのメカニズムをすべて有効にします。


$ cryptoadm enable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so all
$ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so
/usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled.
random is enabled.


例 14–20 ユーザーレベルソフトウェアプロバイダの使用を永続的に削除する

次の例では、libpkcs11.so.1 ライブラリを削除します。


$ cryptoadm uninstall provider=/opt/SUNWconn/lib/\$ISA/libpkcs11.so.1
$ cryptoadm list
user-level providers:
    /usr/lib/security/$ISA/pkcs11_kernel.so
    /usr/lib/security/$ISA/pkcs11_softtoken.so

kernel software providers:
…

Procedureカーネルソフトウェアプロバイダが使用されないようにする方法

暗号化フレームワークに AES などのプロバイダの複数のモードが用意されている場合、遅いメカニズムや破壊されたメカニズムの使用を解除する場合があります。この手順では、一例として、AES アルゴリズムを使用します。

  1. スーパーユーザーになるか、Crypto Management 権利プロファイルを含む役割を引き受けます。

    Crypto Management 権利プロファイルを含む役割を作成し、作成した役割をユーザーに割り当てる方法については、例 9–7 を参照してください。

  2. 特定のカーネルソフトウェアプロバイダによって提供されるメカニズムを一覧表示します。


    $ cryptoadm list -m provider=aes
    aes: CKM_AES_ECB,CKM_AES_CBC
  3. 使用可能なメカニズムを一覧表示します。


    $ cryptoadm list -p provider=aes
    aes: all mechanisms are enabled.
  4. 使用すべきでないメカニズムを無効にします。


    $ cryptoadm disable provider=aes mechanism=CKM_AES_ECB
    
  5. 使用可能なメカニズムを一覧表示します。


    $ cryptoadm list -p provider=aes
    aes: all mechanisms are enabled, except CKM_AES_ECB.

例 14–21 カーネルソフトウェアプロバイダのメカニズムを有効にする

次の例では、無効になっている AES メカニズムを再び使用可能にします。


cryptoadm list -m provider=aes
aes: CKM_AES_ECB,CKM_AES_CBC
$ cryptoadm list -p provider=aes
aes: all mechanisms are enabled, except CKM_AES_ECB.
$ cryptoadm enable provider=aes mechanism=CKM_AES_ECB
$ cryptoadm list -p provider=aes
aes: all mechanisms are enabled.


例 14–22 カーネルソフトウェアプロバイダの使用を一時的に削除する

次の例では、AES プロバイダの使用を一時的に削除します。unload サブコマンドは、プロバイダのアンインストール中にプロバイダが自動的に読み込まれないようにするために使用します。たとえば、unload サブコマンドは、プロバイダに影響を与えるパッチをインストールするときに使用します。


$ cryptoadm unload provider=aes

$ cryptoadm list 
…
kernel software providers:
    des
    aes (inactive)
    blowfish
    arcfour
    sha1
    md5
    rsa
    swrand

AES プロバイダは、暗号化フレームワークが更新されるまでは使用できません。


$ svcadm refresh system/cryptosvc

$ cryptoadm list 
…
kernel software providers:
    des
    aes
    blowfish
    arcfour
    sha1
    md5
    rsa
    swrand

カーネルコンシューマがカーネルソフトウェアプロバイダを使用している場合は、ソフトウェアは読み込み解除されません。エラーメッセージが表示され、プロバイダを使用し続けることができます。



例 14–23 ソフトウェアプロバイダの使用を永続的に解除する

次の例では、AES プロバイダの使用を解除します。いったん削除すると、AES プロバイダはカーネルソフトウェアプロバイダのポリシー一覧に表示されません。


$ cryptoadm uninstall provider=aes

$ cryptoadm list 
…
kernel software providers:
    des
    blowfish
    arcfour
    sha1
    md5
    rsa
    swrand

カーネルコンシューマがカーネルソフトウェアプロバイダを使用している場合は、エラーメッセージが表示され、プロバイダを使用し続けることができます。



例 14–24 削除されたカーネルソフトウェアプロバイダを再インストールする

次の例では、AES カーネルソフトウェアプロバイダを再インストールします。


$ cryptoadm install provider=aes mechanism=CKM_AES_ECB,CKM_AES_CBC

$ cryptoadm list 
…
kernel software providers:
    des
    aes
    blowfish
    arcfour
    sha1
    md5
    rsa
    swrand

Procedureハードウェアプロバイダを一覧表示する方法

ハードウェアプロバイダは、自動的に配置され読み込まれます。詳細は、driver.conf(4) のマニュアルページを参照してください。

始める前に

Solaris 暗号化フレームワーク内での使用が想定されているハードウェアがある場合、そのハードウェアはカーネルの SPI に登録されます。暗号化フレームワークでは、ハードウェアドライバが署名されていることが確認されます。特に、ドライバのオブジェクトファイルが Sun が発行する証明書付きで署名されていることが確認されます。

たとえば、Sun Crypto Accelerator 6000 ボード (mca)、UltraSPARC T1 および T2 プロセッサの暗号化アクセラレータ用 ncp ドライバ (ncp)、UltraSPARC T2 プロセッサ用 n2cp ドライバ (n2cp) は、ハードウェアのメカニズムをフレームワークに接続します。

プロバイダの署名については、「Sun 以外のソフトウェアのためのバイナリ署名」を参照してください。

  1. システムで使用可能なハードウェアプロバイダを一覧表示します。


    % cryptoadm list
    … 
    kernel hardware providers:
       ncp/0
  2. チップまたはボードで提供されるメカニズムを一覧表示します。


    % cryptoadm list -m provider=ncp/0
    ncp/0: CKM_DSA,CKM_RSA_X_509,CKM_RSA_PKCS,CKM_RSA_PKCS_KEY_PAIR_GEN,
    CKM_DH_PKCS_KEY_PAIR_GEN,CKM_DH_PKCS_DERIVE,CKM_EC_KEY_PAIR_GEN,
    CKM_ECDH1_DERIVE,CKM_ECDSA
  3. チップまたはボードで使用可能なメカニズムを一覧表示します。


    % cryptoadm list -p provider=ncp/0
    ncp/0: all mechanisms are enabled.

Procedureハードウェアプロバイダのメカニズムと機能を無効にする方法

ハードウェアプロバイダのメカニズムや乱数機能を選択して無効にすることができます。ふたたび有効にする方法については、例 14–25 を参照してください。この例のハードウェア Sun Crypto Accelerator 1000 ボードは、乱数発生関数を提供します。

  1. スーパーユーザーになるか、Crypto Management 権利プロファイルを含む役割を引き受けます。

    Crypto Management 権利プロファイルを含む役割を作成し、作成した役割をユーザーに割り当てる方法については、例 9–7 を参照してください。

  2. 無効にするメカニズムまたは機能を選択します。

    ハードウェアプロバイダを一覧表示します。


    # cryptoadm list
    ...
    Kernel hardware providers:
        dca/0
    • 選択したメカニズムを無効にします。


      # cryptoadm list -m provider=dca/0
      dca/0: CKM_RSA_PKCS, CKM_RSA_X_509, CKM_DSA, CKM_DES_CBC, CKM_DES3_CBC
      random is enabled.
      # cryptoadm disable provider=dca/0 mechanism=CKM_DES_CBC,CKM_DES3_CBC
      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are enabled except CKM_DES_CBC,CKM_DES3_CBC.
      random is enabled.
    • 乱数発生関数を無効にします。


      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are enabled. random is enabled.
      # cryptoadm disable provider=dca/0 random
      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are enabled. random is disabled.
    • すべてのメカニズムを無効にします。乱数発生関数は無効にしません。


      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are enabled. random is enabled.
      # cryptoadm disable provider=dca/0 mechanism=all
      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are disabled. random is enabled.
    • ハードウェアのすべての機能とメカニズムを無効にします。


      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are enabled. random is enabled.
      # cryptoadm disable provider=dca/0 all
      # cryptoadm list -p provider=dca/0
      dca/0: all mechanisms are disabled. random is disabled.

例 14–25 ハードウェアプロバイダのメカニズムと機能を有効にする

次の例では、一部のハードウェアの無効になっているメカニズムを選択して有効にします。


# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled except CKM_DES_ECB,CKM_DES3_ECB

.
random is enabled.
# cryptoadm enable provider=dca/0 mechanism=CKM_DES3_ECB
# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled except CKM_DES_ECB. 
random is enabled.

次の例では、乱数発生関数のみを有効にします。


# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled, except CKM_MD5,CKM_MD5_HMAC,…. 
random is disabled.
# cryptoadm enable provider=dca/0 random
# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled, except CKM_MD5,CKM_MD5_HMAC,….
random is enabled.

次の例では、メカニズムのみを有効にします。乱数発生関数は無効にしておきます。


# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled, except CKM_MD5,CKM_MD5_HMAC,….
random is disabled.
# cryptoadm enable provider=dca/0 mechanism=all
# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled. random is disabled.

次の例では、ボードのすべての機能とメカニズムを有効にします。


# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled, except CKM_DES_ECB,CKM_DES3_ECB.
random is disabled.
# cryptoadm enable provider=dca/0 all
# cryptoadm list -p provider=dca/0
dca/0: all mechanisms are enabled. random is enabled.

Procedureすべての暗号化サービスを更新または再起動する方法

デフォルトでは、Solaris 暗号化フレームワークは有効になっています。何らかの理由で kcfd デーモンが失敗したときには、サービス管理機能を使用して暗号化サービスを再起動することができます。詳細は、smf(5) および svcadm(1M) のマニュアルページを参照してください。暗号化サービスの再起動がゾーンに与える影響については、「暗号化サービスとゾーン」を参照してください。

  1. 暗号化サービスの状態を確認します。


    % svcs cryptosvc
     STATE          STIME    FMRI
    offline         Dec_09   svc:/system/cryptosvc:default
  2. スーパーユーザーになるか、同等の役割を引き受けて、暗号化サービスを有効にします。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、「RBAC の構成 (作業マップ)」を参照してください。


    # svcadm enable svc:/system/cryptosvc
    

例 14–26 暗号化サービスを更新する

次の例では、暗号化サービスを大域ゾーンで更新します。その結果、すべての非大域ゾーンのカーネルレベルの暗号化ポリシーも更新されます。


# svcadm refresh system/cryptosvc