IPsec と IKE の管理

第 3 章 インターネットキー交換 (概要)

IP データグラムのセキュリティ保護された伝送に必要な IPsec セキュリティアソシエーション (SA) のキー情報の管理を、キー管理といいます。自動キー管理では、キーの作成、認証、および交換のため、セキュリティ保護された通信チャネルを必要とします。Solaris オペレーティング環境では、インターネットキー交換 (IKE) を使用してキー管理を自動化します。IKE を使用すれば、セキュリティ保護されたチャネルを大量のトラフィックに割り当てるために容易にスケーリングできます。IPv4 パケットと IPv6 パケットの IPsec SA では、IKE の利点を生かすことができます。

SunTM Crypto Accelerator 1000 ボードや Sun Crypto Accelerator 4000 ボードを搭載したシステムで IKE を使用する場合には、公開鍵の操作はこのボードで行われます。公開鍵の操作のためにオペレーティングシステムのリソースが使用されることはありません。Sun Crypto Accelerator 4000 ボードを搭載したシステムで IKE を使用する場合、証明書、公開鍵、および非公開鍵はこのボードに格納されます。鍵の格納先をシステム以外の場所にすることで、保護機能が強化されます。

この章では、以下の内容について説明します。

IKE の実装方法については、第 4 章「IKE の管理 (手順)」を参照してください。

IKE の概要

IKE デーモン in.iked では、保護された方法で SA のキー情報のネゴシエーションと認証を行います。Solaris オペレーティング環境によって提供される内部機能からキーのランダムシードを使用します。IKE は、PFS (Perfect Forward Secrecy) をサポートしています。PFS では、データ伝送を保護するキーを使用しないで追加キーを取得し、データ伝送のキーの作成に使用するシードを再利用しません。in.iked(1M) のマニュアルページを参照してください。

IKE デーモンによってリモートシステムの公開暗号鍵が検出されると、ローカルシステムではその鍵を使用できるようになります。ローカルシステムは、リモートシステムの公開鍵を使用してメッセージを暗号化します。メッセージを読み取れるのは、このリモートシステムだけです。IKE デーモンでは、そのジョブを交換と呼ばれる 2 つのフェーズで実行します。

フェーズ 1 交換

フェーズ 1 交換はメインモードといいます。フェーズ 1 交換では、IKE は公開鍵暗号方式を使用して、ピア IKE エンティティで IKE 自体を認証します。その結果が ISAKMP (Internet Security Association and Key Management Protocol) セキュリティアソシエーション (SA) で、IKE で IP データグラムのキー情報のネゴシエーションを行うためのセキュリティ保護されたチャネルとなります。IPsec SA とは異なり、ISAKMP SA は双方向であるため、1 つだけ必要です。

IKE でキー情報のネゴシエーションを行う方法は、フェーズ 1 交換で設定可能です。IKE では、/etc/inet/ike/config ファイルから設定情報を読み取ります。次の設定情報があります。

認証方式には、事前共有鍵と公開鍵証明書の 2 つがあります。公開鍵証明書は、自己署名付きにすることも、PKI (public key infrastructure) 機関から認証局 (CA) によって発行することもできます。PKI 機関には、Baltimore Technologies、Entrust、GeoTrust、RSA Security、Sun Open Net Environment (Sun ONE) Certificate Server、および Verisign があります。

フェーズ 2 交換

フェーズ 2 交換はクイックモードといいます。フェーズ 2 交換では、IKE は IKE デーモンを実行するシステム間の IPsec SA を作成および管理します。また、フェーズ 1 交換で作成したセキュリティ保護されたチャネルを使用して、キー情報の伝送を保護します。IKE デーモンは、/dev/random デバイスを使用して乱数発生関数からキーを作成します。また、IKE デーモンは、キーを一定の割合 (構成可能) で更新します。このキー情報は、IPsec ポリシーの構成ファイル ipsecinit.conf に指定されているアルゴリズムによって使用されます。

IKE 構成の選択

/etc/inet/ike/config 構成ファイルには、IKE ポリシーエントリが含まれています。2 つの IKE デーモンを相互に認証するためには、この構成ファイルが有効でなければなりません。さらに、キー情報も必要です。構成ファイルのエントリは、フェーズ 1 交換を認証するためのキー情報の使用方法を決定します。選択肢は、事前共有鍵か公開鍵証明書のどちらかです。

エントリ auth_method preshared は、事前共有鍵が使用されることを示します。auth_method の値が preshared 以外の場合には、公開鍵証明書が使用されることを示します。公開鍵証明書は、自己署名付きにすることも、PKI 機関から発行することもできます。ike.config(4) のマニュアルページを参照してください。

IKE と事前共有鍵

事前共有鍵は、1 つのシステムの管理者によって作成され、リモートシステムの管理者とアウトオブバンドで共有します。使用する場合は、大量のランダムキーの作成、そのファイルとアウトオブバンド伝送の保護に十分注意する必要があります。鍵は、各システムの /etc/inet/secret/ike.preshared ファイルに保存されます。IPsec の場合は ipseckeys ファイルですが、IKE の場合は ike.preshared ファイルとなります。ike.preshared ファイルにある鍵に何らかの問題があると、その鍵から導出されるすべての鍵に問題が発生します。

1 つのシステムの事前共有鍵は、そのリモートシステムの鍵と同一にする必要があります。これらの鍵は、特定の IP アドレスに関連付けられています。あるシステムの管理者が通信先のシステムを制御する場合、これらの鍵は最も安全です。ike.preshared(4) のマニュアルページを参照してください。

IKE と公開鍵証明書

公開鍵証明書を使用すると、通信するシステムが秘密鍵情報をアウトオブバンドで共有する必要がなくなります。公開鍵では、キーの認証とネゴシエーションに Diffie-Hellman プロトコルを使用します。公開鍵証明書には、2 つの方法があります。公開鍵証明書は、自己署名付きにすることも、認証局 (CA) が認証することもできます。

自己署名付き公開鍵証明書は、管理者によって作成されます。ikecert certlocal -ks コマンドを実行して、システムの公開鍵と非公開鍵のペアの非公開部分を作成します。その後、管理者は、リモートシステムから X.509 形式で自己署名付き証明書の出力を取得します。リモートシステムの証明書は、鍵のペアの公開部分の ikecert certdb コマンドに入力されます。自己署名付き証明書は、通信先システムの /etc/inet/ike/publickeys ディレクトリに保存されます。 証明書をシステムに接続されているハードウェアに保存したい場合は、-T オプションを指定します。

自己署名付き証明書は、事前共有鍵 と CA の中間ポイントになります。事前共有鍵とは異なり、自己署名付き証明書は移動体システムまたは再番号付けされる可能性があるシステムで使用できます。固定番号を使用しないで、システムの証明書に自己署名するには、DNS ( www.example.org) または EMAIL (root@domain.org) の代替名を使用します。

公開鍵は、PKI または CA 機関で配信できます。公開鍵とそれに関連する CA は、/etc/inet/ike/publickeys ディレクトリに格納されます。 -T オプションを指定すると、証明書はシステムに接続されたハードウェアに保存されます。 また、ベンダーは証明書無効リスト (CRL、Certificate Renovation List) も発行します。使用する場合は鍵と CA を格納するだけでなく、CRL を /etc/inet/ike/crls ディレクトリに格納する責任があります。

CA には、サイトの管理者ではなく、外部の機関によって認証されるといった特長があります。その点では、CA は公証された証明書となります。自己署名付き証明書と同様に、CA は移動体システムまたは再番号付けされる可能性があるシステムで使用できます。その一方、自己署名付き証明書とは異なり、CA は通信する多くのシステムを保護するために容易にスケーリングします。

IKE とアクセラレータハードウェア

IKE アルゴリズムは、とりわけそのフェーズ 1 交換において、多くの処理を要します。大量の交換処理を行うシステムでは、Sun Crypto Accelerator 1000 ボードを使って公開鍵の操作を処理することができます。Sun Crypto Accelerator 4000 ボードを使って、計算量の多いフェーズ 1 交換を処理することもできます。

IKE の計算負荷をアクセラレータボードに移すための IKE の設定方法については、IKE で Sun Crypto Accelerator 1000 ボードを使用する方法を参照してください。鍵の格納方法については、IKE で Sun Crypto Accelerator 4000 ボードを使用する方法を参照してください。

IKE とハードウェアストレージ

公開鍵証明書、非公開鍵、および公開鍵は、Sun Crypto Accelerator 4000 ボードに格納されます。RSA の場合、このボードは最大 2048 ビットの鍵をサポートします。DSA の場合は、最大 1024 ビットになります。

ボードにアクセスするための IKE の設定方法については、IKE で Sun Crypto Accelerator 1000 ボードを使用する方法を参照してください。ボードに証明書と公開鍵を追加する方法については、ハードウェア上で公開鍵証明書を生成、格納する方法を参照してください。

IKE ユーティリティおよび IKE ファイル

この節では、IKE ポリシーの構成ファイルと、IKE を実装するさまざまなコマンドについて説明します。 ネットワークに IKE を実装する方法の手順については、IKE の設定 (作業マップ)を参照してください。

表 3–1 IKE の構成ファイルおよびコマンド

ファイルまたはコマンド 

説明 

in.iked デーモン

インターネットキー交換 (IKE) デーモン。自動キー管理を有効にする

ikeadm コマンド

IKE ポリシーの表示および変更用 IKE 管理コマンド

ikecert コマンド

ローカルの公開鍵証明書データベースを操作する証明書データベース管理コマンド。 データベースも接続された Sun Crypto Accelerator 4000 ボードに格納できる

/etc/inet/ike/config ファイル

IKE ポリシーの構成ファイル。インバウンド IKE 要求のマッチングとアウトバウンド IKE 要求の準備に関するサイトの規則が含まれる。このファイルがある場合には、in.iked デーモンがブート時に自動的に開始する

/etc/inet/secret/ike.preshared ファイル

事前共有鍵のファイル。フェーズ 1 交換での認証の秘密鍵情報が含まれる。事前共有鍵を使って IKE を構成するときに使用

/etc/inet/secret/ike.privatekeys ファイル

非公開鍵のディレクトリ。公開鍵と非公開鍵のペアの非公開部分が含まれる

/etc/inet/ike/publickeys ディレクトリ

公開鍵と証明書ファイルを保存するディレクトリ。公開鍵と非公開鍵のペアの公開部分が含まれる

/etc/inet/ike/crls ディレクトリ

公開鍵および証明書ファイルの無効リストを保存するディレクトリ

Sun Crypto Accelerator 1000 ボード 

オペレーティングシステムの処理を少なくすることで公開鍵操作を高速化するハードウェア 

Sun Crypto Accelerator 4000 ボード 

オペレーティングシステムの処理を少なくすることで公開鍵操作を高速化するハードウェア。公開鍵、非公開鍵、および公開鍵証明書も格納する  

IKE デーモン

in.iked デーモンを実行すると、Solaris システム上の IPsec の暗号キーの管理が自動化されます。また、同じプロトコルを実行するリモートシステムとのネゴシエーションを行い、認証されたキー情報が、保護された方法でセキュリティアソシエーションに提供されます。このデーモンは、セキュリティ保護された通信を行うすべてのシステムで実行する必要があります。

IKE ポリシーの構成ファイル /etc/inet/ike/config がある場合には、IKE デーモンがブート時に自動的にロードされます。デーモンは構成ファイルの構文を検査します。

IKE デーモンを実行すると、フェーズ 1 交換では、システムがそのピア IKE エンティティに対してそのシステム自体を認証します。そのピアは、認証方式として IKE ポリシーファイルに定義されています。その後、フェーズ 2 交換のキーが設定されます。ポリシーファイルで指定した時間間隔で、IKE キーが自動的に更新されます。in.iked デーモンを実行すると、ネットワークから着信する IKE 要求と、 PF_KEY ソケット経由のアウトバウンドトラフィックの要求を待機します。詳細については、pf_key(7P) のマニュアルページを参照してください。

2 つのコマンドで IKE デーモンをサポートします。ikeadm コマンドを実行すると、IKE ポリシーを表示および変更できます。ikecert コマンドを実行すると、公開鍵データベースを表示および変更できます。このコマンドは、ローカルデータベース ike.privatekeys および publickeys を管理します。公開鍵の操作とハードウェア上の公開鍵の記憶領域も管理します。

IKE ポリシーファイル

IKE ポリシーの設定ファイル /etc/inet/ike/config により、IKE デーモン自体とこの構成ファイルで管理する IPsec SA に、キー操作の規則とグローバルパラメータが提供されます。IKE デーモン自体は、フェーズ 1 交換でキー情報を要求します。ike/config ファイルにある規則に基づいてキー情報が設定されます。ポリシーファイルにある有効な規則にはラベルが含まれています。その規則により、キー情報を使用して保護されるシステムまたはネットワークが特定され、認証方式が指定されます。有効なポリシーファイルの例については、事前共有鍵による IKE の設定 (作業マップ)を参照してください。そのエントリの例と説明は、ike.config(4) のマニュアルページを参照してください。

IPsec SA は、IPsec ポリシーの設定ファイル /etc/inet/ipsecinit.conf で設定されるポリシーに従って保護される IP データグラムで使用されます。IKE ポリシーファイルにより、IPsec SA の作成時に PFS を使用するかどうかが決定されます。

ike/config ファイルには、RSA Security Inc. PKCS #11 Cryptographic Token Interface (Cryptoki) に従って実装されるライブラリのパスを含めることができます。IKE は、この PKCS #11 ライブラリを使って、アクセラレータおよびキーストレージハードウェアにアクセスします。

ike/config ファイルのセキュリティに関する注意点は、ipsecinit.conf ファイルのセキュリティと同様です。詳細については、ipsecinit.confipsecconf のセキュリティについてを参照してください。

IKE 管理コマンド

ikeadm コマンドを実行すると、次のことができます。

例とこのコマンドのオプションの詳細については、ikeadm(1M) のマニュアルページを参照してください。実行する IKE デーモンの権限レベルにより、表示および変更可能な IKE デーモンの要素が決まります。権限レベルには、次のものがあります。

0x0 (基本レベル)

基本レベルの権限では、キー情報を表示または変更できない。基本レベルは、in.iked デーモン実行時のデフォルトレベル

0x1 (modkeys レベル)

modkeys レベルの権限では、事前共有鍵を削除、変更、または追加できる

0x2 (keymat レベル)

keymat レベルの権限では、ikeadm コマンドを指定して実際のキー情報を表示できる

ikeadm コマンドのセキュリティに関する注意点は、ipseckey コマンドのセキュリティと同様です。詳細については、ipseckey におけるセキュリティについてを参照してください。

事前共有鍵ファイル

/etc/inet/secret ディレクトリには、ISAKMP SA と IPsec SA の事前共有鍵が格納されています。事前共有鍵を手動で作成すると、ike.preshared ファイルには ISAKMP SA の事前共有鍵、ipseckeys ファイルには IPsec SA の事前共有鍵が格納されます。secret ディレクトリは 0700 で保護されています。secret ディレクトリの中にあるファイルは 0600 で保護されています。


注 –

事前共有鍵は、ハードウェア記憶領域を利用できません。事前共有鍵は、生成後、システムに格納されます。


IKE 公開鍵のデータベースおよびコマンド

ikecert コマンドを実行すると、ローカルシステムの公開鍵データベースを操作できます。このコマンドは、ike/config ファイルが公開鍵証明書を要求するときに使用します。IKE ではそれらのデータベースを使用してフェーズ 1 交換を認証するため、in.iked デーモンを起動する前に、それらのデータベースに必要な情報が含まれていなければなりません。3 つのサブコマンド certlocalcertdbcertrldb をそれぞれ実行して、3 つのデータベースを処理します。

ikecert コマンドを実行すると、Sun Crypto Accelerator 4000 ボード上のキーストレージも操作できます。ikecert コマンドの tokens 引数により、ボード上の使用可能なトークン ID を一覧表示できます。このコマンドは、 /etc/inet/ike/config ファイルに指定された PKCS #11 ライブラリからボードを検索します。PKCS #11 エントリが必要です。このエントリが存在しない場合、ikecert コマンドの -T オプションは機能しません。エントリは次のようになります。


pkcs11_path "/opt/SUNWconn/lib/libpkcs11.so"

詳細については、ikecert(1M) のマニュアルページを参照してください。

ikecert tokens コマンド

tokens 引数は、Sun Crypto Accelerator 4000 ボード上の使用可能なトークン ID を一覧表示します。トークン ID により、ikecert certlocal コマンドと ikecert certdb コマンドは、公開鍵証明書を生成し、ボード上の要求を認証します。

ikecert certlocal コマンド

certlocal サブコマンドを実行して、非公開鍵データベースを管理します。このサブコマンドを選択すると、非公開鍵の追加、表示、および削除を行うことができます。また、自己署名付き証明書または証明書要求のいずれかを作成できます。-ks オプションを選択すると、自己署名付き証明書が作成されます。-kc オプションを選択すると、証明書要求が作成されます。鍵はシステムの /etc/inet/secret/ike.privatekeys ディレクトリに格納されます。-T オプションを指定した場合は、システムに接続されたハードウェアに格納されます。

非公開鍵を作成する場合、ikecert コマンドには、ike/config ファイル内のエントリが必要です。ikecert オプションと ike/config エントリの対応を次の表に示します。

表 3–2 ikecert オプションと ike/config エントリの対応表

ikecert オプション

ike/config エントリ

注 

-A 対象の代替名

cert_trust 対象代替名

証明書を一意に識別するニックネーム。指定可能な値は、IP アドレス、電子メールアドレス、およびドメイン名 

-D X.509 識別名

X.509 識別名

国、組織名、組織単位、共通名を含む認証局のフルネーム 

-t dsa-sha1

auth_method dss_sig

RSA よりもわずかに遅い認証方式。特許は登録されていない

-t rsa-md5 および

-t rsa-sha1

auth_method rsa_sig

DSA よりもわずかに速い認証方式。特許の期限切れは 2000 年 9 月

RSA 公開鍵は、最大ペイロードを暗号化するのに十分な長さが必要。通常、X.509 識別名などの ID ペイロードが最大ペイロードになる

-t rsa-md5 および

-t rsa-sha1

auth_method rsa_encrypt

RSA 暗号化により、IKE にある ID が不正侵入者から保護されますが、IKE ピアには互いの公開鍵の認識が要求されます。 

-T

pkcs11_path

PKCS #11 ライブラリは、Sun Crypto Accelerator 1000 ボードおよび Sun Crypto Accelerator 4000 ボード上で鍵操作の高速化処理を行います。このライブラリは、Sun Crypto Accelerator 4000 ボード上のキーストレージを操作するトークンも提供します。 

ikecert certlocal –kc コマンドを指定して証明書要求を実行する場合、そのコマンド出力を PKI 機関または認証局 (CA) に送信します。会社が独自の PKI を運営している場合は、出力を PKI 管理者に送信します。PKI 機関、CA、または PKI の管理者はこれに基づいて証明書を作成します。PKI または CA から返された証明書は、certdb サブコマンドに渡されます。PKI から返された CRL は、certrldb サブコマンドに渡されます。

ikecert certdb コマンド

certdb サブコマンドを実行して、公開鍵データベースを管理します。このサブコマンドを選択すると、証明書と公開鍵を追加、表示、および削除できます。また、リモートシステムで ikecert certlocal -ks コマンドを実行して作成された証明書を入力として受け入れます。手順については、自己署名付き公開鍵証明書による IKE の設定方法を参照してください。さらに、PKI または CA から受信する証明書も入力として受け入れます。手順については、CA からの署名付き証明書による IKE の設定方法を参照してください。

証明書と公開鍵は、システムの /etc/inet/ike/publickeys ディレクトリに格納されます。-T オプションを指定した場合、証明書、非公開鍵、公開鍵は、システムに接続されたハードウェアに格納されます。

ikecert certrldb コマンド

certrldb サブコマンドを実行して、証明書無効リスト (CRL) データベース /etc/inet/ike/CRL を管理します。crls データベースには、公開鍵の無効リストが保存されています。よって、このリストには、すでに有効でない証明書が明記されます。PKI によって CRL が提供されるときに、ikecert certrldb コマンドを指定して CRL データベースにそれらの CRL を格納します。手順については、証明書無効リストを処理する方法を参照してください。

/etc/inet/ike/publickeys ディレクトリ

/etc/inet/ike/publickeys ディレクトリには、公開鍵と非公開鍵のペアの公開部分とファイルにあるその証明書、つまり「スロット」が格納されています。/etc/inet/ike ディレクトリは 0755 で保護されます。ikecert certdb コマンドを使用して、そのディレクトリを読み込みます。 -T オプションを指定すると、鍵は publickeys ディレクトリではなく Sun Crypto Accelerator 4000 ボード上に格納されます。

「スロット」には、別のシステムで生成された証明書の X.509 識別名がコード化形式で格納されます。自己署名付き証明書を使用する場合、そのコマンドへの入力として、リモートシステムの管理者から受信する証明書を使用します。PKI からの証明書を使用する場合、PKI から受け取る 2 つのキー情報をこのデータベースに格納します。PKI に送信した情報に基づいた証明書を格納します。また、PKI からの CA も格納します。PKI に送信した情報に基づいて証明書を格納します。PKI から CA も格納します。

/etc/inet/secret/ike.privatekeys ディレクトリ

/etc/inet/secret/ike.privatekeys ディレクトリには、公開鍵と非公開鍵のペアの一部である非公開鍵ファイル、ISAKMP SA のキー情報が格納されています。このディレクトリは 0700 で保護されています。ikecert certlocal コマンドを実行して、ike.privatekeys ディレクトリを読み込みます。非公開鍵は、ペアとなる公開鍵、自己署名付き証明書や CA が格納されてから有効になります。ペアとなる公開鍵は /etc/inet/ike/publickeys ディレクトリまたは Sun Crypto Accelerator 4000 ボードに格納されます。

/etc/inet/ike/crls ディレクトリ

/etc/inet/ike/CRL ディレクトリには証明書無効リスト (CRL) ファイルが含まれています。各ファイルは、/etc/inet/ike/publickeys ディレクトリにある公開鍵証明書ファイルに対応しています。PKI 機関により、それらの証明書の CRL が提供されます。ikecert certrldb コマンドを使用して、そのデータベースを読み込みます。