アプリケーションによっては、通信の暗号化および復号化に対称鍵が必要です。この手順では、対称鍵を作成して格納します。
乱数発生関数がある場合、この関数を使用して鍵の乱数を作成できます。この手順は乱数発生関数を使用しません。
次のいずれかを実行します。
鍵をファイルに格納する利点は、このファイルから鍵を抽出して、/etc/inet/secret/ipseckeys ファイルや IPsec など、アプリケーションの鍵ファイルで使用できることです。使用法の文は引数を示しています。
% pktool genkey keystore=file ...genkey keystore=file outkey=key-fn [ keytype=aes|arcfour|des|3des|generic ] [ keylen=key-size (AES, ARCFOUR or GENERIC only)] [ print=y|n ]
鍵が格納されているファイル名。
任意の長さの対称鍵の場合、値は generic になります。特定のアルゴリズムとして、aes、arcfour、des、または 3des を指定します。
FIPS 140 承認アルゴリズムの場合は、FIPS に対して検証された鍵のタイプを選択します。Using a FIPS 140 Enabled System in Oracle Solaris 11.2 のFIPS 140 Algorithms in the Cryptographic Frameworkを参照してください。
鍵のビット長。8 で割り切れる数にする必要があります。des または 3des には指定しないでください。
FIPS 140 承認アルゴリズムの場合は、FIPS に対して検証された鍵の長さを選択します。Using a FIPS 140 Enabled System in Oracle Solaris 11.2 のFIPS 140 Algorithms in the Cryptographic Frameworkを参照してください。
鍵を端末ウィンドウに印刷します。デフォルトでは、print の値は n です。
PKCS #11 キーストアの利点は、ラベルに基づいて鍵を取得できることです。この方法は、ファイルを暗号化および復号化する鍵の場合に便利です。この方法を使用するには、Step 1 を完了する必要があります。使用法の文は引数を示しています。キーストア引数の前後の角括弧は、キーストア引数が指定されていないときは鍵が PKCS #11 キーストア内に格納されることを示しています。
$ pktool genkey keystore=pkcs11 ...genkey [ keystore=pkcs11 ] label=key-label [ keytype=aes|arcfour|des|3des|generic ] [ keylen=key-size (AES, ARCFOUR or GENERIC only)] [ token=token[:manuf[:serial]]] [ sensitive=y|n ] [ extractable=y|n ] [ print=y|n ]
鍵についてユーザーが指定したラベル。ラベルに基づいてキーストアから鍵を取得できます。
任意の長さの対称鍵の場合、値は generic になります。特定のアルゴリズムとして、aes、arcfour、des、または 3des を指定します。
FIPS 140 承認アルゴリズムの場合は、FIPS に対して検証された鍵のタイプを選択します。Using a FIPS 140 Enabled System in Oracle Solaris 11.2 のFIPS 140 Algorithms in the Cryptographic Frameworkを参照してください。
鍵のビット長。8 で割り切れる数にする必要があります。des または 3des には指定しないでください。
FIPS 140 承認アルゴリズムの場合は、FIPS に対して検証された鍵の長さを選択します。Using a FIPS 140 Enabled System in Oracle Solaris 11.2 のFIPS 140 Algorithms in the Cryptographic Frameworkを参照してください。
トークン名。デフォルトでは、トークンは Sun Software PKCS#11 softtoken です。
鍵の重要度を指定します。値が y の場合、鍵は print=y 引数を使用して出力することはできません。デフォルトでは、sensitive の値は n です。
鍵がキーストアから抽出できることを指定します。鍵が抽出されないようにするには、n を指定します。
鍵を端末ウィンドウに印刷します。デフォルトでは、print の値は n です。
この方法を使用するには、Step 1 を完了する必要があります。使用法の文は引数を示しています。
$ pktool genkey keystore=nss ...genkey keystore=nss label=key-label [ keytype=aes|arcfour|des|3des|generic ] [ keylen=key-size (AES, ARCFOUR or GENERIC only)] [ token=token[:manuf[:serial]]] [ dir=directory-path ] [ prefix=DBprefix ]
鍵についてユーザーが指定したラベル。ラベルに基づいてキーストアから鍵を取得できます。
任意の長さの対称鍵の場合、値は generic になります。特定のアルゴリズムとして、aes、arcfour、des、または 3des を指定します。
FIPS 140 承認アルゴリズムの場合は、FIPS に対して検証された鍵のタイプを選択します。Using a FIPS 140 Enabled System in Oracle Solaris 11.2 のFIPS 140 Algorithms in the Cryptographic Frameworkを参照してください。
鍵のビット長。8 で割り切れる数にする必要があります。des または 3des には指定しないでください。
FIPS 140 承認アルゴリズムの場合は、FIPS に対して検証された鍵の長さを選択します。Using a FIPS 140 Enabled System in Oracle Solaris 11.2 のFIPS 140 Algorithms in the Cryptographic Frameworkを参照してください。
トークン名。デフォルトでは、トークンは NSS 内部トークンです。
NSS データベースへのディレクトリパス。デフォルトでは、directory は現在のディレクトリです。
NSS データベースの接頭辞。デフォルトは接頭辞なしです。
鍵を格納した場所に応じて、次のコマンドのいずれかを使用します。
% pktool list keystore=file objtype=key [infile=key-fn] Found n keys. Key #1 - keytype:location (keylen)
For PKCS #11, use the following command:
$ pktool list keystore=pkcs11 objtype=key Enter PIN for keystore: Found n keys. Key #1 - keytype:location (keylen)
次に、このコマンドの keystore=pkcs11 を keystore=nss に置き換えます。
次の例では、ユーザーは最初に PKCS #11 キーストアを作成し、次にアプリケーション用の大きな対称鍵を生成します。最後に、ユーザーはその鍵がキーストアに格納されていることを確認します。
PKCS #11 キーストアの初期パスワードは changeme です。NSS キーストアの最初のパスワードは空のパスワードです。
# pktool setpin Create new passphrase:Type password Re-enter new passphrase:Retype password Passphrase changed. % pktool genkey label=specialappkey keytype=generic keylen=1024 Enter PIN for Sun Software PKCS#11 softtoken :Type password % pktool list objtype=key Enter PIN for Sun Software PKCS#11 softtoken :Type password No. Key Type Key Len. Key Label ---------------------------------------------------- Symmetric keys: 1 Symmetric 1024 specialappkey使用例 3-2 pktool コマンドを使用して FIPS 承認の AES 鍵を作成する
次の例では、AES アルゴリズムの秘密鍵が FIPS 承認のアルゴリズムと鍵の長さを使用して作成されます。鍵は、あとで復号化するためにローカルファイルに格納されます。コマンドは、400 のアクセス権でファイルを保護します。鍵が作成されると、print=y オプションにより、生成された鍵が端末ウィンドウに表示されます。
鍵ファイルを所有するユーザーは、od コマンドを使用して鍵を取得します。
% pktool genkey keystore=file outkey=256bit.file1 keytype=aes keylen=256 print=y Key Value ="aaa2df1d10f02eaee2595d48964847757a6a49cf86c4339cd5205c24ac8c8873" % od -x 256bit.file1 0000000 aaa2 df1d 10f0 2eae e259 5d48 9648 4775 0000020 7a6a 49cf 86c4 339c d520 5c24 ac8c 8873 0000040使用例 3-3 IPsec セキュリティーアソシエーション用の対称鍵を作成する
次の例では、管理者は IPsec SA 用の鍵データを手動で作成し、それらをファイルに格納します。次に、管理者はそれらの鍵を /etc/inet/secret/ipseckeys ファイルにコピーし、元のファイルを破棄します。
最初に、管理者は IPsec ポリシーで要求される鍵を作成して表示します。
# pktool genkey keystore=file outkey=ipencrin1 keytype=generic keylen=192 print=y Key Value ="294979e512cb8e79370dabecadc3fcbb849e78d2d6bd2049" # pktool genkey keystore=file outkey=ipencrout1 keytype=generic keylen=192 print=y Key Value ="9678f80e33406c86e3d1686e50406bd0434819c20d09d204" # pktool genkey keystore=file outkey=ipspi1 keytype=generic keylen=32 print=y Key Value ="acbeaa20" # pktool genkey keystore=file outkey=ipspi2 keytype=generic keylen=32 print=y Key Value ="19174215" # pktool genkey keystore=file outkey=ipsha21 keytype=generic keylen=256 print=y Key Value ="659c20f2d6c3f9570bcee93e96d95e2263aca4eeb3369f72c5c786af4177fe9e" # pktool genkey keystore=file outkey=ipsha22 keytype=generic keylen=256 print=y Key Value ="b041975a0e1fce0503665c3966684d731fa3dbb12fcf87b0a837b2da5d82c810"
そのあと、管理者は次の /etc/inet/secret/ipseckeys ファイルを作成します。
## SPI values require a leading 0x. ## Backslashes indicate command continuation. ## ## for outbound packets on this system add esp spi 0xacbeaa20 \ src 192.168.1.1 dst 192.168.2.1 \ encr_alg aes auth_alg sha256 \ encrkey 294979e512cb8e79370dabecadc3fcbb849e78d2d6bd2049 \ authkey 659c20f2d6c3f9570bcee93e96d95e2263aca4eeb3369f72c5c786af4177fe9e ## ## for inbound packets add esp spi 0x19174215 \ src 192.168.2.1 dst 192.168.1.1 \ encr_alg aes auth_alg sha256 \ encrkey 9678f80e33406c86e3d1686e50406bd0434819c20d09d204 \ authkey b041975a0e1fce0503665c3966684d731fa3dbb12fcf87b0a837b2da5d82c810
ipseckeys ファイルの構文が有効であることを確認したあと、管理者は元の鍵ファイルを破棄します。
# ipseckey -c /etc/inet/secret/ipseckeys # rm ipencrin1 ipencrout1 ipspi1 ipspi2 ipsha21 ipsha22
管理者は、ssh コマンドや別のセキュアなメカニズムを使用して、ipseckeys ファイルを通信先のシステムにコピーします。通信先のシステムでは、それらの保護は取り消されます。ipseckeys ファイルの最初のエントリによってインバウンドパケットが保護され、2 番目のエントリによってアウトバウンドパケットが保護されます。通信先のシステムでは鍵は生成されません。
次のステップ
鍵を使用してファイルのメッセージ認証コード (MAC) の作成を続行するには、ファイルの MAC を計算する方法を参照してください。