Solaris のシステム管理 (IP サービス)

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

インターネットキー交換 (Internet Key Exchange、IKE) は、Ipsec の鍵管理を自動化します。IKE について説明するこの章の内容は次のとおりです。

IKE を実装する手順については、第 23 章IKE の設定 (手順)を参照してください。参照情報については、第 24 章インターネットキー交換 (リファレンス)を参照してください。IPsec については、第 19 章IP セキュリティーアーキテクチャー (概要)を参照してください。

IKE の新機能

Solaris 10 4/09: このリリース以降、サービス管理機能 (SMF) は IKE をサービスとして管理します。デフォルトでは、svc:/network/ipsec/ike:default サービスは無効になっています。また、このリリースでは、IPsec と IKE を管理するための Network IPsec Management 権利プロファイルが用意されています。

Solaris 10 7/07: このリリース以降では、IKE で AES アルゴリズムを使用でき、IKE を大域ゾーンで構成して非大域ゾーンで使用できます。

IKE による鍵管理

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

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

IKE のキーネゴシエーション

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

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

IKE のキー用語について

次の表は、キーネゴシエーションで使用される用語と、一般的に使われるその略語、各用語の定義と使用についてまとめたものです。

表 22–1 キーネゴシエーションの用語、略語、使用

キーネゴシエーションの用語 

略語 

定義と使用 

キー交換 

 

非対称暗号化アルゴリズムのキーを生成する処理。主な手法には RSA プロトコルと Diffie-Hellman プロトコルがあります。 

Diffie-Hellman プロトコル 

DH 

キー生成とキー認証に関るキー交換プロトコル。しばしば「認証されたキー交換」と呼ばれます。

RSA プロトコル 

RSA 

キー生成とキー転送に関るキー交換プロトコル。このプロトコル名は、作成者の Rivest、Shamir、Adleman の三氏に因んでいます。 

Perfect Forward Secrecy

PFS 

認証されたキー交換だけに適用されます。PFS では、キーの長期的な機密情報が、以前の通信で交換されたキーの機密性を損なうことがありません。  

PFS では、データ伝送を保護するために使用されるキーが、追加のキーを導き出すために使用されることはありません。さらに、データ伝送を保護するために使用されるキーのソースが、追加のキーを導き出すために使用されることはありません。 

Oakley 方式 

 

フェーズ 2 のキーを安全な方法で確立する 1 つの手法。このプロトコルは、キー交換の Diffie-Hellman 方式に似ています。Diffie-Hellman と同じように、Oakley グループキー交換では、キー生成とキー認証が行われます。Oakley 方式は PFS のネゴシエーションに使用されます。 

IKE フェーズ 1 交換

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

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

認証方式には、事前共有鍵と公開鍵証明書の 2 つがあります。公開鍵証明書は自己署名付きであっても、公開鍵インフラ (PKI) 組織の 認証局 (CA) が発行したものであってもかまいません。この組織には、Trusted、Entrust、GeoTrust、RSA Security、Verisign などがあります。

IKE フェーズ 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 ファイルにある鍵に何らかの問題があると、その鍵から導出されるすべての鍵に問題が発生します。

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

IKE と公開鍵証明書

公開鍵証明書を使用すると、通信するシステムが秘密鍵情報を帯域外で共有する必要がなくなります。公開鍵では、鍵の認証とネゴシエーションに Diffie-Hellman プロトコル (DH) を使用します。公開鍵証明書には、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) も発行します。管理者は鍵と CA を格納するだけでなく、CRL を /etc/inet/ike/crls ディレクトリに格納する責任があります。

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

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

IKE アルゴリズムは、特にフェーズ 1 交換において大量の処理を必要とします。大量の交換処理を行うシステムでは、Sun Crypto Accelerator 1000 ボードを使って公開鍵の操作を処理できます。フェーズ 1 の大量の処理には、Sun Crypto Accelerator 6000 ボードおよび Sun Crypto Accelerator 4000 ボードを使用することもできます。

IKE の負荷を高速化ボードに移すために IKE をどのように構成するかについては、「Sun Crypto Accelerator 1000 ボードを検出するように IKE を設定する方法」を参照してください。キーを格納する方法については、「Sun Crypto Accelerator 4000 ボードを検出するように IKE を設定する方法」cryptoadm(1M) のマニュアルページを参照してください。

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

公開鍵証明書、非公開鍵、公開鍵は、Sun Crypto Accelerator 6000 または Sun Crypto Accelerator 4000 ボードに格納できます。RSA 暗号化の場合、Sun Crypto Accelerator 4000 ボードは最大で 2048 ビットをサポートします。DSA 暗号化の場合、このボードは最大で 1024 ビットをサポートします。Sun Crypto Accelerator 6000 ボードは、SHA-512 および ECC アルゴリズムをサポートします。

ボードにアクセスするように IKE を構成する方法については、「Sun Crypto Accelerator 1000 ボードを検出するように IKE を設定する方法」を参照してください。ボードに証明書や公開鍵を追加する方法については、「ハードウェア上で公開鍵証明書を生成、格納する方法」を参照してください。

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

次の表は、IKE ポリシーの構成ファイルや、IKE キーの格納場所、IKE を実装する各種のコマンドとサービスについてまとめたものです。サービスの詳細については、『Solaris のシステム管理 (基本編)』の第 18 章「サービスの管理 (概要)」を参照してください。

表 22–2 IKE 構成ファイル、キーの格納場所、コマンド、サービス

ファイル、場所、コマンド、またはサービス 

説明 

詳細 

svc:/network/ipsec/ike

現在のリリースでは、IKE を管理する SMF。

smf(5)

/usr/lib/inet/in.iked デーモン

インターネットキー交換 (IKE) デーモン。自動鍵管理を有効にします。現在のリリースでは、ike サービスがこのデーモンを有効にします。これより前のリリースでは、in.iked コマンドを使用します。

in.iked(1M)

/usr/sbin/ikeadm コマンド

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

ikeadm(1M)

/usr/sbin/ikecert コマンド

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

ikecert(1M)

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

/etc/inet ディレクトリにある、デフォルトの IKE ポリシー構成ファイル。インバウンド IKE 要求のマッチングとアウトバウンド IKE 要求の準備に関するサイトの規則が含まれています。

現在のリリースでは、このファイルが存在する場合、ike サービスが有効になると in.iked デーモンが起動します。このファイルの場所は svccfg コマンドで変更することができます。

ike.config(4)

ike.preshared ファイル

/etc/inet/secret ディレクトリにある事前共有鍵ファイル。フェーズ 1 交換での認証の秘密鍵情報が含まれます。事前共有鍵を使って IKE を構成するときに使用されます。

ike.preshared(4)

ike.privatekeys ディレクトリ

/etc/inet/secret ディレクトリにある非公開鍵ディレクトリ。公開鍵と非公開鍵のペアの非公開部分が含まれています。

ikecert(1M)

publickeys ディレクトリ

/etc/inet/ike ディレクトリ内のディレクトリ。公開鍵と証明書ファイルが格納されています。公開鍵と非公開鍵のペアの公開部分が含まれています。

ikecert(1M)

crls ディレクトリ

/etc/inet/ike ディレクトリ内のディレクトリ。公開鍵や証明書ファイルの失効リストが格納されています。

ikecert(1M)

Sun Crypto Accelerator 1000 ボード 

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

ikecert(1M)

Sun Crypto Accelerator 4000 ボード 

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

ikecert(1M)

Solaris 10 リリースにおける IKE の変更

Solaris 9 リリース以降、IKE に次の機能が追加されています。