draft-moskowitz-hip-arch-05.txt
http://www.ietf.org/internet-drafts/draft-moskowitz-hip-arch-05.txt
この文書では Host IdentifyとHIPのnon-cryptographic な形態について述べる。
cryptographicについては、draft-moskowitz-hip-08を参照かな。
用語集
Host Identityに関するプロトコル
そのentityを識別するもの
IdentifierはIdentityを表す単なるbit patternである。
HIPでは、HIをそのまま使うのではなく、HITを利用する。現在HIを126bitにhash したもの+2bitのHeaderをつけて、128bitで扱う。
現在、IPアドレスとDomain Nameという二つの名前空間が別々に存在している。 これをつなぐのがDNSであるが、そもそも、別々の名前空間が存在していること は混乱の元である。
また、三つの問題点も存在する。
Host Identityとは、そのentityを識別するものである。これは、Network stack やkernelを意味する。
物理的に一つの計算機が複数の論理的なエンドポイントを持つこともある。二枚 ざしとか。そういう場合、それらのendpointは、個別のHost Identityを持つ。
また、複数の計算機に、同じHost Identityをつけることで、クライアントにな にも変更すること無しにclusterなサービスを提供することができる。
二種類のIDentityがある。
これらのIDentityは自分でassertionするか、第三者によって証明されてもいい。 (may)
Host Identifiersは最初はDNSSECで認証されるし、全ての実装は最低限DNSSECを サポートする。
IdentityはそのentityをIdentするもの
IdentifierはIdentityを表す単なるbit patternである。
Host Identifierにはpublic key pairが最適である。
Host Identityは公開鍵と定義されているので、Host Identifierも公開鍵となる。
秘密鍵持っているということが、Host Identity自体を示すことになる。もしも、 秘密鍵を複数のノードが使うならば、分散系となる。
Host Identity自体はInternet上では使われない。Identifierが、DNSやLDAPディ レクトリなどに蓄積され、使われる。
HIP 以外のprotocolを使う場合、Host Identity Tag(HIT)として、Identityを扱 う。
ちなみに、もちろんHost Identifierとして、公開鍵を使わないことも考えられ るけれども、この文書は公開鍵を使う場合だけに限定される。
HITはHost IdentifierをHashした128bitのbit列である。
固定長を使うことでプロトコル的に楽になり、パケットサイズも小さくなるのと、 Hashなので、どんなIdentifierを使ってもいいってことがいいところ。
通常はHIであるところのpublic_keyそのものではなく、このHITを使って通信を 行う。
万が一、128bitなhash値ががいっしょになったら、public_keyで判断かな。
32-bitなLocal Identifier。これは、既存プロトコルとAPIから扱うのを楽にす るために使われるけど、Localでしか使えないよ。
これは例えばFTPコマンドのアドレスや、ソケットコールのアドレスなどに使わ れたりする。
Process ------ Socket | | Endpoint ----- Host Identity | | Location ----- IP address
HIPはIPアドレスが変更されても関係ないからmobilityを提供できる。
また、複数のIPアドレスを持っていたとしても、HIは一つであるため、 multi-homingにも対応できる。
mobile nodeにつなごうとするとき、どうやってIPアドレスを知ればいいのか問 題。Dynamic DNSもあるけれども、HIP Rendezvous serverというのを考えている。 そこにBU(Binding Update)っぽいパケットを送り続ける。
なんかHA、あるいはMAみたいだ。でも、MIPやLIN6がreferされていないなぁ。
移動した先のIPアドレスは信頼がおけないから、ちゃんとそのアドレスが有効か どうか一回確かめてから通信する。
これで、spoofingされたDoSとかも防げるかな。
RRとか考えてるのかな?
実際のデータはIPSecで保護される。具体的にはEncapsulated Security Payload(ESP)。
NATやIPv4v6変換などを行うとヘッダが書き換わる。
HIPを前提にすると、IPアドレスがどんなに変わっても別に関係ないことになる。
HIPの実装は、最低二種類のHIをサポートしなければならない。
HIPでの通信が始まったら、FirewallはHITsやSPIやIPaddressの対を学習して、 firewallでの安全性を高めることができる。
HIは公開鍵ではなく、例えばFQDNみたいな、暗号系ではないものも使用できる。 しかし、このようなものはプライバシや認証機構として使えないので、HIPは公 開鍵で実装すること。
HIP パケットは公開鍵で署名され、man-in-the-middle attackを防ぐ。
DoSを防ぐために、Diffie-Hellman exchangeが使用される。
Host IdentifierはDNS上に保持される。そのRR TypeはIPSECKEYと似たかたちで これから定義されるだろう。HIは他にPKIを利用して保持されることもあるだろ うね。