web-dev-qa-db-ja.com

IPsecはどのようにKEYMATを暗号化および認証キーに変換しますか?

IPsecは、サブプロトコルESPおよびAHで構成されるフレームワークプロトコルです。IPsecには、キー交換メカニズムが含まれていないため、手動でキーを設定することに依存しています(古風)、または、IKEv1またはIKEv2を使用して、2者間の相互鍵を安全に確立します。

IKEとIKEv2のRFCを読むと、どちらの時点でもKEYMATが生成されることがわかります。これは、IPsecに渡してIPsecが独自の対称キーを生成できるようにするためのものです。

IKEv1はKEYMATを生成します この式を使用して:

PFS Disabled:
KEYMAT = prf(SKEYID_d, protocol | SPI | Ni_b | Nr_b).

PFS Enabled:
KEYMAT = prf(SKEYID_d, g(qm)^xy | protocol | SPI | Ni_b | Nr_b)

IKEv2はKEYMATを生成します この式を使用して:

For the first Child SA:
KEYMAT = prf+(SK_d, Ni | Nr)

For all subsequent Child SA's
KEYMAT = prf+(SK_d, g^ir (new) | Ni | Nr )

どちらの場合も、KEYMATがIPSecに渡されて(おそらく)独自の対称暗号化および認証キーが作成されます。しかし、IPsecがKEYMATおよび/または派生キー(SKEYID_dまたはSK_d)を取得して独自のキーを作成するために使用する数式をどこにも見つけることができませんでした。

だから私の質問は、独自の対称キーを生成するためにIPsecがKEYMATで何をするのですか?また、関連しますKEYMAT?私は最初の質問に答えると2番目の質問にも答えると思いますが。

2
Eddie

IPsecスタックはそれ自体のキーを作成しないか、任意のキーを要求しますが、IKEデーモンはネゴシエーションに必要なだけのキーマテリアルを生成しますPRF +を使用した暗号化および認証アルゴリズム(基本的に、任意の量のキーマテリアルを返すことができます)。拡張されたKEYMATからキーマテリアルを取得する方法については、 RFC 7296(IKEv2)、セクション2.17 で詳しく説明しています。結果のキーは、IPsecに関する残りの情報と共にSAスタックに渡されます。たとえば、標準化された PF_KEYインターフェース では、これは2つの キー拡張 暗号化と認証が使用されている場合。

1
ecdsa