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

Procedurepktool コマンドを使用して対称鍵を生成する方法

アプリケーションによっては、通信の暗号化および復号化に対称鍵が必要です。この手順では、対称鍵を作成して格納します。

  1. (省略可能) キーストアを使用する場合は、作成します。

  2. 対称鍵として使用する乱数を生成します。

    次のいずれかを実行します。

    • 鍵を生成してファイルに格納します。

      鍵をファイルに格納する利点は、このファイルから鍵を抽出して、/etc/inet/secret/ipseckeys ファイルや IPsec など、アプリケーションの鍵ファイルで使用できることです。


      % pktool genkey keystore=file outkey=key-fn \ 
      [keytype=specific-symmetric-algorithm] [keylen=size-in-bits] \
      [dir=directory] [print=n]
      keystore

      file の値は、鍵の格納場所のファイルタイプを指定します。

      outkey=key-fn

      keystore=file のときのファイル名です。

      keytype=specific-symmetric-algorithm

      特定のアルゴリズムとして、aesarcfourdes、または 3des を指定します。

      keylen=size-in-bits

      鍵のビット長です。8 で割り切れる数にする必要があります。des または 3des には指定しないでください。

      dir=directory

      key-fn へのディレクトリパスです。デフォルトでは、directory は現在のディレクトリです。

      print=n

      鍵を端末ウィンドウに印刷します。デフォルトでは、print の値は n です。

    • 鍵を生成して PKCS #11 キーストアに格納します。

      PKCS #11 キーストアの利点は、ラベルに基づいて鍵を取得できることです。この方法は、ファイルを暗号化および復号化する鍵の場合に便利です。この方法を使用するには、手順 1 を完了する必要があります。


      % pktool genkey label=key-label \ 
      [keytype=specific-symmetric-algorithm] [keylen=size-in-bits] \
      [token=token] [sensitive=n] [extractable=y] [print=n]
      label=key-label

      鍵についてユーザーが指定したラベルです。ラベルに基づいてキーストアから鍵を取得できます。

      keytype=specific-symmetric-algorithm

      特定のアルゴリズムとして、aesarcfourdes、または 3des を指定します。

      keylen=size-in-bits

      鍵のビット長です。8 で割り切れる数にする必要があります。des または 3des には指定しないでください。

      token=token

      トークン名です。デフォルトでは、トークンは Sun Software PKCS#11 softtoken です。

      sensitive=n

      鍵の重要度を指定します。値が y の場合、鍵は print=y 引数を使用して印刷することはできません。デフォルトでは、sensitive の値は n です。

      extractable=y

      鍵がキーストアから抽出できることを指定します。鍵が抽出されないようにするには、n を指定します。

      print=n

      鍵を端末ウィンドウに印刷します。デフォルトでは、print の値は n です。

    • 鍵を生成して NSS キーストアに格納します。

      この方法を使用するには、手順 1 を完了する必要があります。


      % pktool keystore=nss genkey label=key-label \ 
      [keytype=[keytype=specific-symmetric-algorithm] [keylen=size-in-bits] [token=token] \
      [dir=directory-path] [prefix=database-prefix]
      keystore

      nss の値は、鍵の格納場所の NSS タイプを指定します。

      label=key-label

      鍵についてユーザーが指定したラベルです。ラベルに基づいてキーストアから鍵を取得できます。

      keytype=specific-symmetric-algorithm

      特定のアルゴリズムとして、aesarcfourdes、または 3des を指定します。

      keylen=size-in-bits

      鍵のビット長です。8 で割り切れる数にする必要があります。des または 3des には指定しないでください。

      token=token

      トークン名です。デフォルトでは、トークンは NSS 内部トークンです。

      dir=directory

      NSS データベースへのディレクトリパスです。デフォルトでは、directory は現在のディレクトリです。

      prefix=directory

      NSS データベースの接頭辞です。デフォルトは接頭辞なしです。

      print=n

      鍵を端末ウィンドウに印刷します。デフォルトでは、print の値は n です。

  3. (省略可能) 鍵が存在することを確認します。

    鍵を格納した場所に応じて、次のコマンドのいずれかを使用します。

    • key-fn ファイル内の鍵を確認します。


      % pktool list keystore=file objtype=key infile=key-fn
      Found n keys.
      Key #1 - keytype:location (keylen)
      
    • PKCS #11 または NSS キーストア内の鍵を確認します。


      $ pktool list objtype=key
      Enter PIN for keystore:
      Found n keys.
      Key #1 - keytype:location (keylen)
      

例 14–5 pktool コマンドを使用して DES 鍵を作成する

次の例では、DES アルゴリズムの秘密鍵を作成します。鍵は、あとで復号化するためにローカルファイルに格納されます。コマンドは、400 のアクセス権でファイルを保護します。鍵が作成されると、print=y オプションにより、生成された鍵が端末ウィンドウに表示されます。

DES メカニズムでは、 64 ビット鍵を使用します。鍵ファイルを所有するユーザーは、od コマンドを使用して鍵を取得します。


% pktool genkey keystore=file outkey=64bit.file1 keytype=des print=y
        Key Value ="a3237b2c0a8ff9b3"
% od -x 64bit.file1
0000000 a323 7b2c 0a8f f9b3