JP2007166552A - 通信装置及び暗号通信方法 - Google Patents
通信装置及び暗号通信方法 Download PDFInfo
- Publication number
- JP2007166552A JP2007166552A JP2005364045A JP2005364045A JP2007166552A JP 2007166552 A JP2007166552 A JP 2007166552A JP 2005364045 A JP2005364045 A JP 2005364045A JP 2005364045 A JP2005364045 A JP 2005364045A JP 2007166552 A JP2007166552 A JP 2007166552A
- Authority
- JP
- Japan
- Prior art keywords
- public key
- address
- communication
- entity
- cga
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】CGAによる暗号通信と、身元確認を行っての暗号通信とを可能にすることを目的とする。
【解決手段】ネットワークを介して通信を行う通信装置であって、ネットワークを介して接続された他の通信装置に対して、暗号的に生成されたアドレスに対応する公開鍵を証明対象とする匿名公開鍵証明書の発行要求を送信する発行要求送信手段と、発行要求に応じて発行された匿名公開鍵証明書を、他の通信装置より受信する証明書受信手段と、アドレスに基づいて暗号通信を行う第一の暗号通信手段と、匿名公開鍵証明書に基づいて暗号通信を行う第二の暗号通信手段と、を有することによって上記課題を解決する。
【選択図】図10
【解決手段】ネットワークを介して通信を行う通信装置であって、ネットワークを介して接続された他の通信装置に対して、暗号的に生成されたアドレスに対応する公開鍵を証明対象とする匿名公開鍵証明書の発行要求を送信する発行要求送信手段と、発行要求に応じて発行された匿名公開鍵証明書を、他の通信装置より受信する証明書受信手段と、アドレスに基づいて暗号通信を行う第一の暗号通信手段と、匿名公開鍵証明書に基づいて暗号通信を行う第二の暗号通信手段と、を有することによって上記課題を解決する。
【選択図】図10
Description
本発明は、通信装置及び暗号通信方法に関する。
IPv6の登場により、従来はネットワークに接続することが考えられなかった装置がネットワークに接続する場面が考えられてきた。例えば、インターネットに直接接続可能なエンドユーザ向けのディジタルカメラ等である。
IPv6で通信するパーソナル・コンピュータやワークステーションの場合、ネットワークとの接続のインターフェイスには通常はイーサネット(登録商標)が用いられる。
イーサネット(登録商標)では、IEEE identifier(MAC address)を元にしてインターフェイスIDが生成され、インターフェイスIDとsubnet prefixとからIPv6アドレスが構成されるようになっている。この構成はModified EUI−64 formatと呼ばれ、RFC3513"Internet Protocol Version 6 (IPv6) Addressing Architecture"に定義されている。
ところが、Modified EUI−64 formatのIPv6アドレスのようにハードウェアに1対1で対応する情報を固定的に用いると、それが装置もしくはその装置のユーザと1対1で対応する情報とみなされる。そして、そのアドレスを使う通信をモニターされることによりプライバシが侵害される恐れが強い。
この課題に対して、ランダムなIPv6アドレスを生成する方法が、RFC3041"Privacy Extensions for Stateless Address Autoconfigurationin IPv6"等において定義されている。また、生成したランダムな値が既に使われている場合には、それを検出し、別のランダムな値を計算/生成し、ユニークなランダムな値を定めるプロトコル(の拡張)も記述されている。このランダムな値を用いたアドレスはtemporary addressと呼ばれる。
ここで、IPv6で通信する装置が、IPsecを用いて暗号通信を行なうことを考える。IPsecは、インターネット上の2つの装置が他の誰も知らない秘密データを共有し、その秘密データに基づいて暗号化や認証を行なうプロトコルであり、通信に際して秘密データやお互いのIPv6アドレス等を安全に共有する必要がある。
秘密データやお互いのIPv6アドレス等のデータはSA(Security Association)と呼ばれる。SAを安全に共有するプロトコルはIKE(Internet Key Exchange)と呼ばれ、RFC2409"The Internet Key Exchange(IKE)"において規定されている。ここで、SAを安全に共有するという意味は、意図する相手のみと確実にSAを共有するという意味であり、相手を確実に認証することを必要とする。IKEでは秘密データを共有する方法としてDiffie−Hellman公開鍵配送方式(以下、DHと記す)が使われ、4つの認証方法が規定されている。
一つはpre−shared keyを用いる方法で、残りは公開鍵暗号(暗号化或いはディジタル署名)を用いる方法である。pre−shared keyは予め送信者と受信者との間で何らかの方法でそのpre−share keyを共有しておかなければならないので、不特定多数とIKEを実行してIPsec通信を行う場合には使えない。公開鍵暗号に基づく認証方法は、公開鍵と、その公開鍵の持ち主との対応関係を保証する公開鍵証明書を用いて通信者の身元の確認を行うので、不特定多数とIKEを実行してIPsec通信を行う場合に適する。
上述のように、IPv6にはtemporary addressと呼ばれるアドレスがあり、プライバシ保護のために使われる。従って、インターネット上での盗聴や改ざんをIPsecで防ぎながら、しかも第三者のみならず通信相手にも身元を隠してIPv6で通信する方法があれば、従来以上に安全で安心したインターネット通信を実現できる。
temporary addressを用いて、通信相手にも身元を隠してIPsecを行う方法として、特許文献1や特許文献2がある。
特許文献1及び特許文献2共に、temporary addressを記載した匿名公開鍵証明書を用いてIKEを実行してIPsec通信を行う方式である。ここで、匿名公開鍵証明書とは、複数の匿名公開鍵証明書の持ち主が同じエンティティ(装置又は装置のユーザ)か否かが第三者には判別困難な証明書であり、証明書の持ち主のプライバシ保護に役立つ(例えば、非特許文献1参照。)。
特許文献1及び特許文献2においては、temporary addressと、公開鍵暗号とを用いて匿名公開鍵証明書の要求と、発行とを行う。よって、あるtemporary addressを本当に使用するエンティティのみが発行された匿名公開鍵証明書を利用して公開鍵暗号を利用でき、匿名にも係らず、なりすましを防ぐことができる。
一方、temporary addressが最初に与えられるという状況とは異なる状況を想定して、公開鍵から計算したinterface IDを用いるIPv6アドレスが提案されている。これは、装置が生成した公開鍵をハッシュ関数に入力して計算した値をinterface IDとして使う方法である。つまり、公開鍵からIPv6アドレスを生成するとみなすことができる。この考え方と、その応用とが述べられている文献として、特許文献3、非特許文献2、非特許文献3、非特許文献4がある。
特許文献3の目的は、あるIPv6アドレスを使うホスト(装置)が、本当にその
IPv6アドレスを使うホストであるか否かを確認可能にすることである。
IPv6アドレスを使うホストであるか否かを確認可能にすることである。
非特許文献2の目的は、Mobile IPv6において、IPsecのAHを使えない時にbinding updatesの一方向的な認証を行うことが目的である。
非特許文献3は、非特許文献2の欠点を補い、より一般的な用途にも使えるよう
に拡張した方式を提案している。
に拡張した方式を提案している。
非特許文献4は、CGA(Cryptographically Generated Address)を用いてNeighbor Discoveryを安全にするプロトコルを提案している。
以下では、特許文献3、非特許文献2、非特許文献3、非特許文献4で述べられている方式に基づくIPv6アドレスを総称してCGA(Cryptographically GeneratedAddress)と記す。
CGAの特徴の一つは、CA(Certification Authority)が不要なことである。しかし、これは長所にも短所にもなる。
例えば、不特定多数が利用可能な無線LANのアクセスポイントがレストランや図書館のような公共の場に設けられているとする。このような環境では、不特定多数の利用を前提としているのでユーザの身元確認の必要は無いが、LANの設備が安全とは限らず、しかも無線で通信するので通信内容の盗聴や改ざんの恐れがあり暗号化や認証(データの改ざん検出)は必要である。更に、ユーザのプライバシの侵害を防ぐために、MAC addressから生成されたModifiedEUI−64 formatのIPv6アドレスを使うのではなく、temporary addressを使う方が望ましい。
このような状況では、安全な通信路を確保する手段としてCGAを用いてインターネット上の通信相手との間で公開鍵暗号に基づく認証(データがCGAから送られたことの確認)を実行して、IKE及びIPsecを実行する方法が適していると考えられる。このとき、CAが不要であることは長所とみなせる。
一方、企業や大学のような組織のネットワークにおいてCGAに基づく暗号通信を許可すると、身元の不明な装置或いはユーザでも暗号通信を行えることになる。この場合、ウイルスの配布や違法な通信をそのネットワークを使って行われても、その行為を検出することが困難になるのでネットワークの管理と、セキュリティとの観点から考えると短所になる。このようなネットワークでは、身元が不明な装置はCGAに基づく暗号通信を禁止される場合も考えられる。
本発明は上記の問題点に鑑みなされたもので、CGAによる暗号通信と、身元確認を行っての暗号通信とを可能にすることを目的とする。
そこで、上記問題を解決するため、本発明は、ネットワークを介して通信を行う通信装置であって、前記ネットワークを介して接続された他の通信装置に対して、暗号的に生成されたアドレスに対応する公開鍵を証明対象とする匿名公開鍵証明書の発行要求を送信する発行要求送信手段と、前記発行要求に応じて発行された前記匿名公開鍵証明書を、前記他の通信装置より受信する証明書受信手段と、前記アドレスに基づいて暗号通信を行う第一の暗号通信手段と、前記匿名公開鍵証明書に基づいて暗号通信を行う第二の暗号通信手段と、を有することを特徴とする。
係る構成とすることにより、暗号的に生成されたアドレス(CGA)による暗号通信と、身元確認を行っての暗号通信とを可能にすることができる。
また、上記問題を解決するため、本発明は、暗号通信方法としてもよい。
本発明によれば、CGAによる暗号通信と、身元確認を行っての暗号通信とを可能にすることができる。
以下、本発明の実施形態について図面に基づいて説明する。
始めに、OGAについて説明を行う。
CGAは、IPv6アドレスである。そのinterface IDは、公開鍵を含むパラメータをハッシュ関数に入力して計算した値から作られる。
CGAは、IPv6アドレスである。そのinterface IDは、公開鍵を含むパラメータをハッシュ関数に入力して計算した値から作られる。
パラメータは、Modifier、Subnet Prefix、Collision Count、Public Key、Extension Fieldsからなる。そして、これらを格納する構造体はCGA Parameters data structureと呼ばれる。Modifierは128ビット、Subnet Prefixは64ビット、Collision Countは8ビットである。また、Public Keyは可変長、Extension Fieldは可変長、Extension Fieldsはオプションである。
CGAを生成するときは、64ビットのsubnet prefix、DER−encoded ASN.1 structure of the type SubjectPublicKeyInfoの公開鍵、セキュリティパラメータSecを入力値とする。Secは3ビットの整数(0、1、...、7)で、ブルートフォースアタックに対する強度を定める。
エンティティは、HASH2と、HASH1とを後述するように計算し、interface IDが重複しているか否かを検証する。重複していないinterface IDが求められた時、Modifierと、Collision Countとの値が定まる。
図1は、Hash2の計算方法を模式的に示す図である。
エンティティは、Modifierに、128ビットの乱数若しくは擬似乱数の値を格納し、Subnet Prefixには64ビットのゼロを格納する。また、エンティティは、Collision Countには8ビットのゼロを格納し、Public KeyにはDER−encoded ASN.1 structure of the type SubjectPublicKeyInfoを格納する。
エンティティは、Modifierに、128ビットの乱数若しくは擬似乱数の値を格納し、Subnet Prefixには64ビットのゼロを格納する。また、エンティティは、Collision Countには8ビットのゼロを格納し、Public KeyにはDER−encoded ASN.1 structure of the type SubjectPublicKeyInfoを格納する。
そして、エンティティは、CGA Parameters data structureをSHA−1に入力して計算し、160ビットのハッシュ値を求める。このハッシュ値の最上位112ビットがHash2である。
エンティティは、Hash2の値の最上位16*Secビットがゼロか否か比較し、全てゼロ(或いはSec=0)ではないならばModifierの値を1増加させ、再びHash2を計算する。
エンティティは、最上位16*Secビットがゼロになるまで以上の処理を繰り返し、最終のModifierの値を定める。エンティティは、Collision Countの値はゼロにする。
図2は、Hash1の計算方法を模式的に示す図である。
エンティティは、ModifierにHash2の計算によって求められた最終のModifierの値を格納する。また、エンティティは、Subnet PrefixにHash2の計算によって求められたSubnet Prefixの値を格納する。また、エンティティは、Collision CountにHash2の計算によって求められた最終のCollision Countの値を格納する。また、エンティティは、Public KeyにDER−encoded ASN.1 structure of the type SubjectPublicKeyInfoを格納する。
そして、エンティティは、CGA Parameters data structureをSHA−1に入力して計算し、160ビットのハッシュ値を求める。このハッシュ値の最上位64ビットがHash1である。エンティティは、Hash1の最上位3ビットにSecの値を書き込み、ビット6と、ビット7とを共にゼロにした64ビットを求める。この64ビットがinterface IDである。
エンティティは、以上のようにして求めたinterface IDをSubnet Prefixに付加してIPv6アドレスを生成する。そして、エンティティは生成したIPv6アドレスがLAN内部で重複しているか否かをDAD(Duplicated Address Detection)で検証する。エンティティは、重複している場合は、Collision Countの値を1増加させ、Hash1を再計算し、interface IDを求める。この処理はCollision Countの値が3まで繰り返される。重複していないinterface IDを含むIPv6アドレスが求められたならば、それがCGAである。求められない場合は、エンティティは、エラーを出力する。
以上のようにして求められたCGAは、対応するCGA Parameters data structureと一緒に、エンティティのメモリ等に記録される。ここで、対応するCGA Parameters data structureとは、最終のModifierの値、Subnet Prefixの値、最終のCollision Countの値、を含む。また、対応するCGA Parameters data structureには、更に公開鍵のDER−encoded ASN.1 structure of the type SubjectPublicKeyInfoが含まれる。
CGAを使った通信をするときに、CGAそのものはIPパケットのソースアドレスとして用いられる。対応するCGA Parameters data structureは、何らかのフォーマットに従って通信相手に伝えられる。
下記に示す非特許文献5には、Neighbor DiscoveryにCGAを応用した場合が提案されている。非特許文献5では、新しいNDP optionとしてCGA optionが定義され、公開鍵と対応するCGAパラメータはCGA optionに入れて通信相手に伝えられるとされている。
(非特許文献5)J. Arkko、 J. Kempf、 B. Sommerfeld、 B. Zill、P. Nikander、"SEcure Neighbor Discovery (SEND)"draft−ietf−send−ndopt−06.txt、July 17、2004.
(非特許文献5)J. Arkko、 J. Kempf、 B. Sommerfeld、 B. Zill、P. Nikander、"SEcure Neighbor Discovery (SEND)"draft−ietf−send−ndopt−06.txt、July 17、2004.
CGAの認証は、IPv6アドレスと、CGA Parameters data structureとを入力として行われる。認証が成功するとき、その公開鍵がアドレスの使用者の公開鍵であることが確認される。CGAの認証が成功した後は、その公開鍵を用いてディジタル署名を利用することで、データの偽造や改ざん、使用者へのなりすましを防ぐことができる。
CGAの認証は以下のように行われる。
エンティティは、CGA Parameters data structureからCollision Countの値を取り出し、0、1、2の何れかであることを確認する。Collision Countの値が、0、1、2の何れでもない場合は認証失敗である。
エンティティは、CGA Parameters data structureからCollision Countの値を取り出し、0、1、2の何れかであることを確認する。Collision Countの値が、0、1、2の何れでもない場合は認証失敗である。
エンティティは、CGA Parameters data structureからSubnet Prefixの値を取り出し、IPv6アドレスと比較して同じ値であることを確認する。Subnet Prefixの値が、IPv6アドレスと異なる場合は、認証失敗である。
エンティティは、CGA Parameters data structureをSHA−1に入力し、出力からHash1を求める。そして、エンティティは、Hash1と、IPv6アドレスのinterface IDとが同じか否か確認する(但し、最初の3ビットや、ビット6、ビット7の比較は行わない。)。Hash1と、IPv6アドレスのinterface IDとが同じでない場合は認証失敗である。
エンティティは、interface IDの最初の3ビットを取り出し、Secの値とする。また、エンティティは、CGA Parameters data structureのSubnet Prefixと、Collision Countとの値をゼロにしたデータをSHA−1に入力し、出力からHash2を求める。
エンティティは、Hash2の最初の16*Secビットが全てゼロであるか否かを確認する。全てゼロでは無い場合は、認証失敗である。なお、Secの値がゼロの時は、このステップで認証が失敗することは無い。
以上の確認を全て成功した場合、CGAの認証は成功となる。
あるCGAから送られたデータが本当にそのCGAから送られたデータであるか否かを確認可能にするために、CGAの使用者(又はエンティティ)はデータに対してディジタル署名を生成する。そして、CGAの使用者(又はエンティティ)はデータ及び公開鍵を含むCGAのパラメータと、ディジタル署名とをCGAから通信相手に送る。
通信相手はCGAの認証を行い、認証が成功すれば公開鍵がそのIPv6アドレスの使用者の公開鍵であるとみなす。そして、通信相手は、その公開鍵でデータと、ディジタル署名との対応関係を検証し、検証が成功した場合は、そのデータがそのIPv6アドレスの使用者からのデータであるとみなす。
次に、CGAを用いるIKEの説明をする。
IKEにおいては、通信相手の身元を識別する情報としてIPv6アドレスを利用することができる。通信相手の身元確認は、pre−shared key或いは公開鍵証明書を用いて行われる。
IKEにおいては、通信相手の身元を識別する情報としてIPv6アドレスを利用することができる。通信相手の身元確認は、pre−shared key或いは公開鍵証明書を用いて行われる。
従って、ディジタル署名を用いる認証方式を採用し、ディジタル署名の公開鍵としてCGAで用いられる公開鍵を使う方法がCGAを用いるIKEの実現方法として考えられる。但し、IKEはCGAをサポートしているわけではないので、CGAをサポートするように変更し、且つCGAを公開鍵証明書と関連付ける必要がある。
CGAと、公開鍵証明書との対応付けの方法の一つとして、自己署名証明書を用いる方法が下記に示す非特許文献6で述べられている。
(非特許文献6)J. Laganier、 G. Montenegro、"Using IKE with IPv6 Cryptographically Generated Address" draft−laganier−ike−ipv6−cga−01、 June 30、 2003.
(非特許文献6)J. Laganier、 G. Montenegro、"Using IKE with IPv6 Cryptographically Generated Address" draft−laganier−ike−ipv6−cga−01、 June 30、 2003.
自己署名証明書は、公開鍵証明書の持ち主であるエンティティが公開鍵証明書を生成・発行するエンティティを兼ねる場合の公開鍵証明書である。つまり、あるエンティティが自分の公開鍵に対する公開鍵証明書を自分で作る。このとき、公開鍵証明書の検証に用いる公開鍵と、公開鍵証明対象の公開鍵とは同一になる。
CGAの公開鍵を用いて、CGAの使用者(ノードAとする)が自己署名証明書を生成し、IKEの実行中に通信相手(ノードBとする)に送る。
ノードBは、IKEにおいてID Payloadに含められて送られてくるIPv6アドレスがCGAであるならば(それがCGAであることを示すID Typeか否かで判別)CGAの認証を行い、対応する公開鍵を知る。CGAの認証が失敗したら、IKEは中断する。
ノードBは、送られてきた自己署名証明書がディジタル署名として正しいか否かを、前記公開鍵を用いて確認する。ディジタル署名として正しいことが確認されたならば、ノードBは、その公開鍵を用いて、IKEにおける認証データ(HASH_I或いはHASH_Rに対するディジタル署名)の正当性を確認する。
以上の確認が成功したならば、CGAを用いるIKEにおいてノードBが通信相手の
身元をIPv6アドレス(CGA)で確認出来たとみなす。
身元をIPv6アドレス(CGA)で確認出来たとみなす。
次に、匿名公開鍵証明書を用いたIKEの説明をする。
なお、以下ではホストがイーサネット(登録商標)のLAN経由でインターネットと接続する場合を説明する。
なお、以下ではホストがイーサネット(登録商標)のLAN経由でインターネットと接続する場合を説明する。
図3は、本実施形態が適用される接続環境(ホストがイーサネット(登録商標)のLAN経由でインターネットと接続する環境)を模式的に示した図である。図3は、LANに接続されたホスト204、205、206がdefault gateway(ゲートウェイ)202経由でインターネット201にアクセスする環境を示している。本実施形態では、各ホストはリンク207で接続するものとし、リンク207は具体的にはイーサネット(登録商標)であるとする。ここで、リンクとは、それに接続された装置がそれを介して通信することができる設備若しくはメディアであり、IP層の下側に接する。
リンクにはイーサネット(登録商標)の他に、IEEE802.11gやIEEE802.11a等の所謂無線LAN、PPPリンク、X.25、フレームリレー、ATMネットワークがある。
以下、リンクに接続されたIPv6対応装置をノードと呼ぶ。図4は、ノードの構成を示す図である。ノードには、ルーターと、ホストとがあり、ルーターは自分宛ではないパケットを転送するがホストは転送しない。図4に示されるように、ノード300は、ネットワーク・インターフェイス301、302、CPU303、ROM304、RAM305、HD(ハードディスク)306、電源307を含む。また、図4に示されるように、ノード300は、キーボード/ポインティングデバイス等のインターフェイス308、モニター等のインターフェイス309、バス310等を含む。
ルーターは複数のネットワーク・インターフェイス301、302を持つのに対し、ホストは多くの場合は一つのネットワーク・インターフェイス301を持つ。
ホスト204、205、206は、ネットワーク・インターフェイス301により、リンク207を介して、リンク207に接続された他のノード或いは、更に、ゲートウェイ202を介して、インターネット201上のサイトと通信する。
default gateway202は、ネットワーク・インターフェイス301により、インターネット201を介して、ホスト等と通信する。なお、ノードによってはHD306やキーボード/ポインティングデバイスのインターフェイス308、モニターのインターフェイス309を持たないものもある。
なお以下の処理内容(手順)は、プログラム又はモジュールで実現される。例えば、プログラムで実現される場合、CPU303は、ROM304又はHD306に格納されたプログラムをRAM305上に読み込み、必要に応じてRAM305を計算のためのデータ一時保管空間として利用しながら処理を実行する。また、例えばモジュールで実現される場合、プログラムがCPUやRAM等と協調して実行する上述の動作と同等の動作を実行する実体が、例えばLSIとして実現され、ノードに組み込まれている。ノードのCPUからモジュール(LSI)へ指示が発行され、それをきっかけにモジュールが動作し、処理を実行する。
以下、ノードがアドレスをインターフェイスに割当てる処理を説明する。
始めに、本実施形態のイーサネット(登録商標)LAN環境で各ホストがIPv6グローバルアドレスのプレフィックスやdefault gateway 202のアドレスを取得するプロトコルの仕組みを説明する。
始めに、本実施形態のイーサネット(登録商標)LAN環境で各ホストがIPv6グローバルアドレスのプレフィックスやdefault gateway 202のアドレスを取得するプロトコルの仕組みを説明する。
図5は、図3のリンク207に接続された図4のノードが、電源を入れられた、或いはリブートされた場合に行なう処理のフローチャートである。なお、この処理はDAD(Duplicate Address Detection)と呼ばれる。
ステップS801において、ノードは、電源を入れられた或いはリブートされる。ステップS802において、ノードは、ネットワーク・インターフェイス301に割当てられているイーサネット(登録商標)のMAC address(MACアドレス)からインターフェイスIDを作成する。そして、ノードは、作成したインターフェイスIDをtentative link−local address(以下、文書中において、仮リンクローカルアドレス)とする。
次に、その仮リンクローカルアドレスがリンク上で一意か否かを判断するため、ノード(ホスト)300は以下の処理を行なう。
最初に、ステップS803において、ノードは、ネットワーク・インターフェイス301の初期設定をする。即ち、ノードは、ネットワーク・インターフェイス301に、all−nodes multicast address(FF02::1)を割り当てる。なお、以下、文書中において、all−nodes multicast addressを全ノードマルチキャストアドレスと記す。また、ノードは、ネットワーク・インターフェイス301に、その仮リンクローカルアドレスのsolicited−node multicast address(以下、文書中において、要請ノードマルチキャストアドレスと記す)を割当てる。
この結果、ネットワーク・インターフェイス301は全ノードマルチキャストアドレス宛のパケットを見つけたときはそれを自分のインターフェイス宛のパケットとして受け取る。またネットワーク・インターフェイス301はその仮リンクローカルアドレスの要請ノードマルチキャストアドレス宛のパケットを見つけたときはそれを自分のインターフェイス宛のパケットとして受け取る。
ノードは、上述したように、全ノードマルチキャストアドレスをネットワーク・インターフェイス301に割当てる。このことによって、ネットワーク・インターフェイス301は、既にその仮リンクローカルアドレスを使っている他のノードからのデータを受信することができる。
また、ノードは、上述したように、その仮リンクローカルアドレスの要請ノードマルチキャストアドレスをネットワーク・インターフェイス301に割当てる。このことによって、ネットワーク・インターフェイス301は、同じ仮リンクローカルアドレスを同時に使おうとしている他のノードの存在を検出することができる。
また、ノードは、上述したように、その仮リンクローカルアドレスの要請ノードマルチキャストアドレスをネットワーク・インターフェイス301に割当てる。このことによって、ネットワーク・インターフェイス301は、同じ仮リンクローカルアドレスを同時に使おうとしている他のノードの存在を検出することができる。
仮リンクローカルアドレスの要請ノードマルチキャストアドレスとは、link−local scope multicast addressである。つまり、RFC2461のpage 91に定義されているように、仮リンクローカルアドレスの下位24ビットをプレフィックスFF02:0:0:0:0:1:FF00::/104に付加したデータである。
次に、ステップS804において、ノードは、各パラメータに以下の値を設定し、Neighbor Solicitation message(以下、文書中において、NSメッセージと記す)を作成する。
つまり、ノードは、ターゲット アドレス(Target Address)に判断対象の仮リンクローカルアドレスを設定する。また、ノードは、IP Source(送信元アドレス)にunspecified address(128ビット全てが0)を設定する。また、ノードは、IP destination(宛先アドレス)に判断対象の仮リンクローカルアドレスの要請ノードマルチキャストアドレスを設定する。
つまり、ノードは、ターゲット アドレス(Target Address)に判断対象の仮リンクローカルアドレスを設定する。また、ノードは、IP Source(送信元アドレス)にunspecified address(128ビット全てが0)を設定する。また、ノードは、IP destination(宛先アドレス)に判断対象の仮リンクローカルアドレスの要請ノードマルチキャストアドレスを設定する。
ノードは、このようにして作成したNSメッセージをRetransTimerミリセカンド間隔で、DupAddrDetectTransmits個、リンク207に送出する。
NSメッセージを受け取ったノードは、その送信元アドレスがunspecified addressならば、そのメッセージを、DADを行っているノードからのデータであると判断する。
同時に複数のノードが同じアドレスを対象としてDADをしている場合、その仮リンクローカルアドレスの要請ノードマルチキャストアドレスを割当てられた複数のノードは、同じアドレスをターゲットアドレスに含む複数のNSメッセージを受け取る。
ノードは、自分が送ったNSメッセージと同じNSメッセージを同じアドレスを対象としてDADをしている他のノードより受け取るので、重複していることがわかる。このような場合、どのノードもそのアドレスは使わない。
なお、受け取ったNSメッセージが、自分が送ったものであるならば、他にそれを使っている或いは使おうとしているノードが存在することを示さない。ノードは、自分が送ったNSメッセージに加えて、同じアドレスをターゲットアドレスに含むNSメッセージを受け取る。このような場合、ノードは、同時に複数のノードが同じアドレスを対象としてDADをしていると判断する。
NSメッセージを受け取ったノードが、そのメッセージのターゲットアドレスに含まれるアドレスを既に使っていれば、ターゲットアドレスにその仮リンクローカルアドレスが設定されたマルチキャストNAメッセージを全ノードマルチキャストアドレス宛に返す。ここで、NAメッセージとは、Neighbor Advertisement messageの略である。
従って、NSメッセージを送ったノードが、全ノードマルチキャストアドレス宛のマルチキャストNAメッセージを受け取る。そして、そのターゲットアドレスが判断対象の仮リンクローカルアドレスである場合(S805ステップの「はい」の場合)、ノードは、判断対象の仮リンクローカルアドレスが唯一ではない、つまり重複している、ことがわかる。
以上のDADの結果、判断対象の仮リンクローカルアドレスがリンク上で唯一であることが確認された(S805ステップの「いいえ」の場合)ならば、ノードは、そのアドレスをリンクローカルアドレスとしてネットワーク・インターフェイス301に割当てる。これが図5のステップS806である。以上でDADは終了する。
以上に説明した図5の動作は、ノードであるゲートウェイ202、DHCP server203、ホスト204、ホスト205、ホスト206のそれぞれが、リンク207を収容するネットワーク・インターフェイス301について、実行することができる。
ホスト、例えばホスト206は、リンクローカルアドレスをネットワーク・インターフェイス301に割当てたら、次はグローバルアドレスを決定するために必要な情報をゲートウェイ202から入手することを試みる。この動作を図6に示す。ここで、グローバルアドレスを決定するために必要な情報は、Router Advertisement message(以下、文書中において、RAメッセージと記す)と呼ばれる。
ゲートウェイ202は通常はルーターと呼ばれるので以下ではルーター202と記す。ルーター202は管理者によって必要な設定が行われ、RAメッセージを定期的にリンク207に送っている。ホスト206がRAメッセージを早く入手したい場合は、Router Solicitation message(以下、文書中において、RSメッセージと記す)と呼ばれるデータをルーター202に送る。
なお、ホスト206はリンクローカルアドレスを割当てた直後にはルーター202の存在はわからないので、実際にはRSメッセージはリンク207上のルーター全てに対するマルチキャストとして送られる。ステップS901はこの処理を示す。
RSメッセージを受け取ったルーター202は、RAメッセージを送る。ステップS902の「はい」の場合に示すように、stateless address autoconfigurationのみを指定するRAメッセージを受け取ったホスト206は、ステップS903に進む。なお、以下、文書中において、stateless address autoconfigurationは、ステートレスアドレス自動設定と記す。
ホスト206は、受け取ったメッセージ中のプレフィックスの有効性(既にその装置によって使われていないこと等)を確認し、それ(ら)に適当なインターフェイスIDを付加して作ったアドレスをグローバルアドレスとする。そして、ホスト206は、このグローバルアドレスをネットワーク・インターフェイス301に割当てる。ステップS903がこの処理である。
ステップS902の「いいえ」の場合に示すように、ホスト206がステートレスアドレス自動設定のみを指定するRAメッセージを受け取らなかった場合、ステップS904に進む。
ステップS904において、ステートレスアドレス自動設定と、ステートフルアドレス自動設定との両方を指定するRAメッセージを受け取った場合(ステップS904の「はい」の場合)、ホスト206は、ステップS905に進む。ここで、ステートフルアドレス自動設定とは、stateful address autoconfigurationと同一である。
一方、ステップS904において、RAメッセージを何も受け取らなかった場合(ステップS904の「いいえ」)、ホスト206は、ステップS906に進む。ステップS906において、ホスト206は、ステートフルアドレス自動設定、即ちDHCPv6のみを実行する。これがステップS906であり、詳細を図7に示す。
DHCPサーバー203は管理者によって必要な設定が行われている。即ち、ノードとして自分のリンクローカルアドレスをネットワーク・インターフェイス301に割当ててあり、DHCPサーバーとして振る舞うために必要なサイトローカルアドレス若しくはグローバルアドレスのためのプレフィックス等が設定されている。
図7のステップS1001において、ホスト206は、DHCPサーバー203にDHCP Solicit Messageを送る。ホスト206は、どこにDHCPサーバー203が存在するのかわからないのでDHCPサーバー203に対するマルチキャストとしてリンク207に送出する。ホスト206の接続されているリンク207とは異なるリンク(図示せず)にDHCPサーバー203が存在する場合は、DHCP Solicit Messageは、実際はDHCPリレー(図示せず)によって中継されてDHCPサーバー203に届く。
DHCP Solicit Messageを受け取ったDHCPサーバー203はそれに対する返答としてDHCP Advertise Messageをホスト206に返す。DHCP Advertise Messageは、(別リンクの場合はDHCPリレーによって中継されて)、ホスト206に届く。これがステップS1002である。この時点でホスト206は、DHCPサーバー203のアドレスがわかる。
次にステップS1003においてホスト206は DHCP Request MessageをDHCPサーバー203に送る。DHCPサーバー203はDHCP Request Messageを受け取ると、DHCP ReplyMessageをホスト206に送る。
ステップS1004において、ホスト206は、DHCP Reply Messageを受け取る。ステップS1005において、ホスト206は、DHCP Reply Messageからグローバルアドレスを決め、グローバルアドレスの中のインターフェイスIDが重複しているか否かを確認するために、DAD処理に必要な処理を行なう。つまり、ホスト206は、図5のステップS803と同様に、ネットワーク・インターフェイス301にマルチキャストアドレス等を設定する。
ステップS1006において、ホスト206は、図5のステップS804と同様、NSメッセージを送信する。ステップS1007において、ホスト206は、図5のステップS805と同様、NAメッセージを受信したか否かを判定する。
ホスト206は、NAメッセージを受信した場合は、そのアドレスが重複しているので、別のアドレスをDHCPサーバー203から受け取るためにステップS1003に戻る。一方、ホスト206は、NAメッセージを受信しなかった場合は、そのアドレスは重複していないので、DHCP Reply Messageから決めたグローバルアドレスをステップS1008において、ネットワーク・インターフェイス301に割当てる。
以上で図6のステップS906における処理が終了する。つまり、図6のステップS904においてRAメッセージを何も受け取らなかった場合はこれで正常終了する。
一方、図6のステップS905において、ホスト206は、ステートレスアドレス自動設定と、ステートフルアドレス自動設定と、の両方を行なう。処理内容はステップS903及びステップS906と同じである。
以上のようにして、イーサネット(登録商標)207をインターフェイスとして持つホスト206は、ステートレスアドレス自動設定と、ステートフルアドレス自動設定(DHCPv6)と、を任意の組み合わせで適用する。そして、ホスト206は、リンクローカルアドレス、グローバルアドレス、default gateway等を自動設定することができる。
上述したように、ホスト206は、インターフェイスIDにランダムな値を用いて、その値を対象にしてDADを行ない、リンク207における一意性を確認する。よって、ゲートウェイ202或いはDHCPサーバー203から得たグローバルアドレスのプレフィックスと組み合わせて使い捨てのIPv6グローバルアドレスを利用することができる。なお、CGAの場合は、Hash1の上位64ビットがインターフェイスIDに利用される。
次に、上述した動作(プロトコル)を拡張して、使い捨て匿名公開鍵証明書を利用可能にするプロトコルを説明する。最初に、匿名公開鍵証明書の例を説明し、次にそれを効率的に発行するためのプロトコルを説明する。
匿名公開鍵証明書を発行するエンティティCAは、共通のパラメータとして大きな素数pと、qとを定める。なお、素数qは、p−1を割りきることができる素数である。エンティティCAは、オーダーqの生成元gと、ハッシュ関数Hとを定める。
エンティティCAは、秘密の乱数s_ca(1以上q以下)を生成し、v_ca=g^(s_ca)mod pを計算する。ここで、A=(B)^(C)mod Dは、整数A、B、C、Dに対して、BをC乗した値をDで割り、その剰余をAとする計算を表す。エンティティCAは、pと、qと、gと、Hと、v_caと、を公開する。
一方、匿名公開鍵証明書を利用するエンティティiは、秘密の乱数s_i(1以上q以下)を生成し、v_i=g^(s_i) mod pを計算する。s_caや、s_iを秘密鍵、v_caや、v_i及び公開のパラメータを公開鍵と呼ぶ。エンティティCAは、秘密鍵s_caを自分以外の誰にも知られないように、例えばハードディスク等に格納し、管理する。また、エンティティiは、秘密鍵v_iを自分以外の誰にも知られないように、例えばハードディスク等に格納し、管理する。
上述した特許文献1或いは特許文献2の方法では、エンティティは最初に、匿名公開鍵証明書を発行するエンティティCAに身元を登録する。例えば、エンティティiは、匿名公開鍵証明書を利用開始する際に、自分のエンティティ名(ユーザ名)と、パスワードと、公開鍵v_iとをエンティティCAに登録する。エンティティCAは、必要に応じてエンティティiの身元を物理的手段等で確認し、提示されたエンティティ名(ユーザ名)と、パスワードと、公開鍵v_iとを記憶する。
しかし、エンティティの身元確認の方法は本実施形態に特有の事柄ではないので、本実施形態では、何らかの手段によってエンティティの身元を確認可能で、身元が確認されたエンティティはその公開鍵をエンティティCAに登録しているものと仮定する。
匿名公開鍵証明書を発行する際、エンティティCAは、乱数r(1以上q以下)を生成し、(g'、v_i')=(g^r mod p、 (v_i)^(r) mod p)を計算する。エンティティCAは上述の公開鍵や、この匿名公開鍵証明書の有効期限、及び公開鍵v_caに対する後述する公開鍵証明書等の証明書の管理・属性情報をXとし、(g'、v_i')と、Xとを含むメッセージ(のハッシュ値)に対してディジタル署名を生成する。
エンティティCAは、離散対数問題に基づくディジタル署名方式、例えば、DSA(Digital Signature Algorithm)署名方式を使うことができる。本実施形態では、エンティティCAは、秘密鍵s_caを用いるものとする。このディジタル署名をSig_ca(g'、v_i'、X)と記す。
エンティティiに対してエンティティCAが発行する匿名公開鍵証明書APC_ca(i)は、APC_ca(i)=(g'、v_i'、X、Sig_ca(g'、v_i'、X))である。
匿名公開鍵証明書APC_ca(i)=(g'、v_i'、X、Sig_ca(g'、v_i'、X))の発行を受けたエンティティiは、その中から(g'、v_i'、X)を取り出す。そして、エンティティiは、そのハッシュ値(例えば、H(g'|v_i'|X)、但し | は連接を示す)を計算し、Sig_ca(g'、v_i'、X)がハッシュ値に対する正しいディジタル署名であるか否かを、公開鍵v_caを用いて確認する。
正しいディジタル署名であると確認できると、エンティティiは、公開鍵であるg'と、v_i'と、共通のパラメータpとを用いて離散対数問題に基づく公開鍵暗号の暗号化やディジタル署名の検証を行なう。
なお、公開鍵v_caそのものの正当性の確認は、より上位若しくはより普及しているエンティティCAに公開鍵v_caを提出して、公開鍵v_caに対する公開鍵証明書を発行してもらえば、それを用いて確認できる。
匿名公開鍵証明書の管理・属性情報をXは、公開鍵v_caに対する公開鍵証明書を含む。この公開鍵v_caに対する公開鍵証明書を用いて、公開鍵v_caそのものの正当性を確認することができる。これは、エンティティCAを階層的に構築することに相当し、順当なPKI(Public−keyInfrastructure)を構成することもできる。
なお、上記の説明では乗法群(mod p)上の離散対数問題の困難性に基づく署名方式を説明したが、楕円曲線上の離散対数問題の困難性に基づく署名方式を適用することも可能である。この場合、乗法群の場合よりも少ないビット数の鍵で同じ程度の安全性が見込まれるので、より効率がよくなる。
以上の匿名公開鍵証明書方式を、図2の環境に適用する場合を説明する。なお、インターネット201を介して通信可能なノード209を、匿名公開鍵証明書を発行するエンティティCA、ホスト206(若しくはそれを利用するユーザ)を、匿名公開鍵証明書を利用するエンティティiとする。
以下では、IPv6装置(ホスト206)がエンティティiである場合、その装置には公開鍵証明書が格納され安全に利用可能になっているとする。或いはホスト206の使用者であって日本国の住民基本台帳カードのような個人向け公開鍵証明書と、その実行プラットフォームを有するユーザとがエンティティiである場合、実行プラットフォームをホスト206が安全に利用可能になっているものとする。従って、装置若しくはそれを利用するユーザの何れかエンティティi自身であるかは特に区別せず、単にエンティティiと記す。
ゲートウェイ202は、ホスト206に、IPv6のグローバルアドレスのプレフィックスを提供する。上述のように、ゲートウェイ202は多くの場合ルーターなので、ルーター202と呼ぶことにする。
ノード209(エンティティCA)の管理者は、上述の公開パラメータp、g等を定め、公開する。例えば、ノード209の管理者は、匿名公開鍵証明書を発行するエンティティCAとしての公開鍵v_caを定め、必要であれば、より上位若しくはより普及しているCA等に提出して、公開鍵v_caに対する公開鍵証明書を発行してもらう。
エンティティiは匿名公開鍵証明書を要求するときは、公開されているパラメータp、g等を用いて、自分の秘密鍵s_iを生成し、対応する公開鍵v_iを計算して、エンティティ名と、公開鍵v_iとをノード209に提出する。
ノード209は、その運用方針に応じてエンティティiの身元確認を行なう。ノード209は、例えば、公開鍵証明書に基づく認証プロトコルを実行することで、エンティティ名が正しいか否かを確認でき、そのエンティティの公開鍵が識別できる。
また、エンティティiが提出した公開鍵v_iが本当にエンティティiによって提出された公開鍵であるか否かは、公開鍵証明書を用いて公開鍵v_iに対するディジタル署名をエンティティiが生成し、v_iと一緒に提出することでノード209は確認できる。
上記のエンティティ名と、公開鍵v_iとの正当性を確認したら、ノード209(エンティティCA)の管理者は、エンティティ名を検索キーとして公開鍵v_iが検索できるように、RAM304若しくはHD306に登録してもよい。公開パラメータp、g等や公開鍵v_i、特に秘密鍵s_iはエンティティiが管理し、ホスト206で安全に利用可能になっているものとする。
以上の準備を行なった上で実行される公開鍵証明書発行プロトコルの一般形を図8に示す。図8は、匿名公開鍵証明書を利用するエンティティiがホスト206、匿名公開鍵証明書を発行するCAがノード209であり、それらの間で行なわれる匿名公開鍵証明書の発行プロトコルである。
匿名公開鍵証明書を発行するためにはエンティティを特定する必要があるので、ノード209(エンティティCA)と、エンティティi(この場合は、ホスト206)との間でなんらかの特定(認証)プロトコルを実行する。本実施形態では、以下のような公開鍵暗号に基づく方式を例として説明する。図8の流れに沿って動作を説明する。
ホスト206は、ステップS1601でRouter Solicitation拡張を送る。RouterSolicitation拡張にはノード209(エンティティCA)のアドレスを要求するメッセージが含まれる。
Router Solicitation拡張を受け取ったルーター202はステップS1602でRouterAdvertisement拡張を送る。Router Advertisement拡張にはノード209(エンティティCA)のアドレスが含まれる。
なお、ルーター202にはノード209(エンティティCA)のIPアドレスが予め設定されているものとする。企業や大学の場合であればルーター202がしかるべき管理者によって管理されているので、その管理者がノード209(エンティティCA)のIPアドレスを設定すると仮定することは現実的である。
ルーター202が仮定で使われている場合、例えばISPと契約してADSLでインターネットに接続する場合、ルーター202にISP側のルーターが情報を設定することが可能である。例えば、DHCP−PD(DHCP Prefix Delegation)が使える。そのような機能を用いてノード209(エンティティCA)のIPアドレスが設定されると仮定することも現実的である。
ホスト206は、ステップS1603で、public address(MAC addressから生成されたModified EUI−64 formatのグローバルアドレス)を生成する。また、ホスト206は、ステップS1603で、temporary addressを生成する。そして、ホスト206は、ノード209(エンティティCA)のアドレスを取得する。
ホスト206はステップS1604で、匿名公開鍵証明書を要求するメッセージである、Certificate Solicitationを生成する。ホスト206は、Certificate Solicitationを、匿名公開鍵証明書を要求する旨と、ホスト206のIPv6アドレスとを含むデータであることをノード209(エンティティCA)が理解できる形式で生成する。
Certificate Solicitationの内容は、エンティティ名(ユーザ名、装置名、型番、装置シリアル番号等)と、証明書のシリアル番号と、登録した公開鍵v_iとから計算される。なお、公開鍵v_iがノード209(エンティティCA)に記録されている場合はv_iを含めなくてもよい。証明書のシリアル番号は、例えば、ホスト206のpublic address或いは、temporary address、或いはCGAと、そのときの時刻と、を連接して一つのデータにした値である。一度だけ使われるカウンタ値を時刻の代わりに使ってもよいが、最後に使われたカウンタ値をエンティティ209(CA)が記録する必要がある。
再送攻撃や、なりすましを防ぐために、秘密鍵を用いて、エンティティ名と、証明書のシリアル番号とをハッシュ関数に入力した値に対して生成したディジタル署名が、Certificate Solicitationに含まれるのが望ましい。ここで、ディジタル署名は、認証用signatureであり、例えば、Sig_i(hash(エンティティ名、パスワード、シリアル番号))である。
次に、ホスト206は、Certificate SolicitationをステップS1605でノード209に送る。
ステップS1606で、ノード209は、ステップS1605で受け取ったCertificate Solicitationに含まれる公開鍵を取り出す。或いはノード209は、Certificate Solicitationに含まれるエンティティ名を検索語として、登録された公開鍵v_iをRAM305若しくはHD306から検索し、公開鍵を取得する。
そして、ノード209は、公開鍵v_iを用いて認証用signatureの正当性を確認する。より具体的に説明すると、ノード209は、エンティティ名と証明書のシリアル番号をハッシュ関数の入力とし、そのハッシュ値を求め、認証用signatureがそれに対する正しいディジタル署名であることを公開鍵v_iで確認する。
認証が成功したら、ノード209は、ライフタイム(使用期限、例えば24時間)等を含む匿名公開鍵証明書APC_ca(i)を作成する。より具体的に説明すると、上述のAPC_ca(i)=(g'、v_i'、X、Sig_ca(g'、v_i'、X))の中の証明書の管理・属性情報Xの中にIPv6アドレスやライフタイム等が含まれる。なお、IPv6アドレスのライフタイム(使用期限)と、匿名公開鍵証明書の有効期限とは同じとは限らない。
そして、ステップS1607でノード209は、匿名公開鍵証明書APC_ca(i)を含むCertificate Advertisementを、認証されたホスト206に送る。本実施形態では、ノード209は、このCertificate Advertisementを登録された公開鍵を用いて暗号化して、送信する。
ステップS1608において、ホスト206は、受け取ったCertificate Advertisementから匿名公開鍵証明書APC_ca(i)を取り出し、その正当性を確認する。このように、匿名公開鍵証明書APC_ca(i)は、その管理・属性情報X中に有効期限を含む。匿名公開鍵証明書APC_ca(i)に含まれる公開鍵g'と、v_i'とは、同一のエンティティi(ホスト206)の公開鍵であるが、時間の経過に伴い変更される公開鍵である。
ホスト206は、通信相手が変る度に、或いは、セッションが変る毎に、若しくは、通信パケットの送信毎に、図8の匿名公開鍵発行プロトコルを実行し、使用する公開鍵g'と、v_i'とを変更する。
以上のプロトコルと、既存のステートレスアドレス自動設定及びステートフルアドレス自動設定とを組み合わせた拡張プロトコルのホストの動作フローチャートが図9である。ホスト206は、ステップS1701において、図6のステップ901で送られるRSメッセージの代わりにRouter Solicitation拡張を送る。
また、ホスト206は、ステップS1702で、図6のステップS902で受け取るRAメッセージの代わりにRouter Advertisement拡張を受け取る。
ステップS1703からステップS1706までの処理は、図6に示したステップS903からステップS906までの処理と同様のため、説明を省略する。
ステップS1707において、ホスト206は、図8に示したプロトコルを実行する。
以上が、匿名公開鍵証明書の発行プロトコルの一般形である。
本実施形態の特徴は、temporary addressの代わりにCGAを対象とする匿名公開鍵証明書が要求・発行されること、CGA候補の生成が代理計算されることである。また、本実施形態の特徴は、CGA候補が重複しないことが確認されたならばそのCGAを用いて匿名公開鍵証明書を要求すること、CGAを用いる通信を検出・禁止すること、CGAと、匿名公開鍵証明書とを適応的に選択してIKEを実行することである。
以下では、エンティティCAによって代理計算されるCGA候補の生成、CGAを用いるエンティティiと、匿名公開鍵証明書を発行するエンティティCAとが行う証明書発行プロトコルを説明する。また、以下では、CGAを用いるエンティティiがIKEを実行するときにCGAを使う場合と、匿名公開鍵証明書を使う場合との両方の場合に対応可能なプロトコルを説明する。
始めに、図10を参照しながら、CGAを対象とする匿名公開鍵証明書発行プロトコルを説明する。エンティティiは、ステップS101において、図6に示された動作フローチャートに従い、temporary addressを生成する。また、エンティティiは、CGA候補を要求するメッセージと、CGAを対象とする匿名公開鍵証明書を要求するメッセージとを生成する。
エンティティiは、ステップS102において、CGA候補を要求するメッセージと、CGAを対象とする匿名公開鍵証明書を要求するメッセージとをエンティティCAに送る。このとき、エンティティiは、temporary addressをソースIPアドレスとする。前記2つのメッセージは、エンティティiの公開鍵証明書によるディジタル署名(及び公開鍵証明書)が添付されているものとする。
エンティティCAは、ステップS103で、CGA候補を要求するメッセージと、CGAを対象とする匿名公開鍵証明書を要求するメッセージと、を受け取り、それらの正当性をエンティティiの公開鍵証明書を用いて検証する。検証が成功したら、エンティティCAは、CGA候補と、CGA候補に対応するCGAパラメータとを生成する。
エンティティCAは、登録済みの公開鍵v_iから匿名公開鍵証明書を生成するときと同様に乱数rを生成し、(g'、v_i')=(g^r mod p、(v_i)^(r) mod p)によって、CGA候補の公開鍵を求める。
エンティティCAは、CGA候補の公開鍵と、CGAパラメータとから上述のようにHash2と、Hash1とを生成し、CGAパラメータを確定させ、interface IDを求める。
CGA候補の公開鍵を生成する他の方法として、エンティティCAは、秘密鍵sと、公開鍵vとのペアを(s、v)=(s、g^s mod p)によって求め(sは乱数とする)、公開鍵v_I'をv*(v_i mod p)としてもよい。
このとき、対応する秘密鍵s_i'は、秘密鍵sを送られたエンティティiが、s_i'=s + s_i mod (p−1)によって計算する。但し、この場合は、鍵ペア(sと、vと)は暗号化されてエンティティiに送られる必要がある。暗号化されないで平文で送られる場合、登録された公開鍵と、送られた鍵ペアから公開鍵v_i'が容易に計算できるので、公開鍵の匿名性が保たれずプライバシ保護に役立たない。
エンティティCAは、ステップS104で、CGA候補と、CGA候補に対応するCGAパラメータとをtemporary address宛に送る。このとき、場合によっては(前記鍵ペア(s、v)が生成され送られる場合には)エンティティCAは、エンティティiの公開鍵証明書を用いて暗号化して送る。
エンティティiは、ステップS105で受け取ったCGA候補と、CGAパラメータとからCGAとして正しく計算されているか否かをHash2と、Hash1と、interface IDとを生成して確認する。次に、エンティティiは、その正当性が確認されたCGAを対象にDADを実行し、接続しているLAN(リンク207)でそのIPv6アドレスが重複しているか否かを判断する。
エンティティiは、重複していない(unique)ならばそのCGAを使い、重複している(NG)ならばそのCGAは使わない。エンティティiは、resultにDADの結果(unique或いはNG)を格納し、CGAに対応する公開鍵を用いるディジタル署名をresultに対して生成する。
エンティティiはステップS106で、CGAをソースIPアドレスとしてresult(unique)、或いはtemporary addressをソースIPアドレスとしてresult(NG)、をエンティティCAに送る。
リンク207と、インターネット201との間のどこかに位置するFirewallは、ステップS107で、CGAに基づくディジタル署名(resultに対する署名)を検出する。
resultのデータ形式が定められていれば、FirewallにおけるCGAに基づくディジタル署名の検出は容易である。CGAを使わせないポリシーで運用されている場合、Firewallは、CGAに基づくディジタル署名(resultに対する署名)を検出したら、そのパケットを転送せず、破棄する。CGAを使わせるポリシーで運用されている場合、Firewallは、CGAに基づくディジタル署名(resultに対する署名)を検出しても廃棄せず、そのパケットを転送する。なお、どのようなポリシーで運用するかの情報は、Firewallのメモリ等に格納されており、Firewallは、この情報に基づいて、動作を行う。
エンティティCAはステップS108で、CGAと、ディジタル署名を含むresultと、を受け取り、CGAの認証と、ディジタル署名の認証とを行い、resultの内容の正当性を確認する。エンティティCAは、resultの内容がuniqueならば、前記CGAを含む匿名公開鍵証明書を生成し、それをステップS109でCGA宛に送る。
このとき、エンティティCAは、エンティティiの公開鍵証明書を用いて、CGAを含む匿名公開鍵証明書を暗号化して送ってもよい。エンティティCAは、resultの内容がNGならば、別のCGA候補を生成し、ステップS104からステップS108までを中断条件が成立するまで繰り返す。
中断条件は、いろいろな内容を設定できる。例えば、「CGA候補を規定の回数生成する」、「CGA候補を要求するメッセージの到達からresultの到達が規定時間以内であれば回数に制限なくCGA候補を生成する」等である。中断条件は、例えばHD306等に格納されている。エンティティCAは中断条件が成立すると、中断条件が成立した旨を示すメッセージを作成し、ステップS109でエンティティiに送る。
エンティティiは、ステップS110で、匿名公開鍵証明書、或いは中断条件が成立した旨のメッセージを受け取る。エンティティiは、中断を示すメッセージを受け取ると処理を中断する。
以上の手順により、CGAを対象とする匿名公開鍵証明書がエンティティiと、エンティティCAとの間で要求・発行される。公開鍵証明書と、登録された公開鍵v_iと、を基にしてCGA候補の公開鍵が生成されるので、エンティティiではないエンティティがエンティティi用のCGAを受け取って対応する秘密鍵を使ってディジタル署名を生成することはできない。CGA用の公開鍵から対応するエンティティを特定することは計算量的に困難なので匿名性が保たれる。
CGA候補の生成はエンティティCAによって行われるので、鍵ペアの生成をエンティティiが行わなくてすむ。また、Secの値が0ではない場合に必要とされるModifierを定めるための総当り計算をエンティティiが行わなくてすむ。
なお、上記の匿名公開鍵証明書の要求・発行プロトコルでは、CGAはエンティティCAによって生成された。エンティティCAがCGAの代理計算を行わず、エンティティiがCGAを生成する場合の匿名公開鍵証明書の要求・発行プロトコルを図11に示す。
図10と、図11との違いは、エンティティiがCGAを生成してDADを実行してから匿名公開鍵証明書の要求を行う点である。また、匿名公開鍵証明書要求メッセージに添付するエンティティiが生成するディジタル署名が、公開鍵証明書に基づくか、CGAに基づくかも異なる点である。従って、エンティティiの身元をエンティティCAは確認できるとは限らない。
なお、図11において、CGAによるディジタル署名を用いるのではなく公開鍵証明書に基づくディジタル署名を用いることもできる。この場合、エンティティiの身元をエンティティCAは確認できる。
次に、CGAに基づく暗号通信と、身元確認を行っての暗号通信とを適応的に実行可能にするプロトコルを、図12を参照しながら説明する。図12のプロトコルは、エンティティiがIKE InitiatorとしてIKE(Main Mode)を実行し、通信相手peer(IKE responder)がCGAに対応する場合としない場合の手順を含む。なお、IKE Responderは公開鍵証明書をサポートすると仮定する。
エンティティiは、ステップS1901で、IKE phase1を開始する。エンティティiは、CGAをソースIPアドレスとして用いる。エンティティiは、ステップS1902で、SAの提案を複数peerに送る。peerは、ステップS1903で、SAを一つ選ぶ。
peerは、ステップS1904で、選んだSAをエンティティiに送り返す、或いはNGを返し、IKEの続行を中止する。エンティティiは、ステップS1905で、Diffie−Hellman公開鍵交換プロトコルを開始する。
エンティティiは、ステップS1906で、Diffie−Hellman公開鍵交換プロトコルで最初に送るデータKEをpeerに送る。peerは、ステップS1906で、Diffie−Hellman公開鍵交換プロトコルで送るデータKEをエンティティiに送る。エンティティiと、peerとは交換したデータKEを基にして秘密の共有鍵を生成する(図示せず)。
エンティティiは、ステップS1908で、認証データを生成する。認証データは、HASH_Iに対するディジタル署名を含む。エンティティiは、CGAの公開鍵を用いてディジタル署名を生成する。
エンティティiは、ステップS1909で、認証データと、CGAパラメータとをpeerに送る。このとき、エンティティiと、peerとで共有した暗号化鍵によってデータは暗号化されている。
peerは、ステップS1910で、暗号化されたデータを受け取り、復号する。そして、peerは、CGAの認証を行う。peerは、認証が失敗したらIKEの続行は中断し、認証が成功したら、復号された認証データが正当か否かをCGAの公開鍵を用いて確認する。peerは、CGAの認証と、認証データの認証とが成功したら、HASH_Rに対する認証データを生成し、暗号化してステップS1911でエンティティiに送る。
エンティティiは、ステップS1912で、受け取ったデータを復号し、認証データの正当性を確認する。エンティティiは、確認が成功したら、IKE phase2を開始する。エンティティiは、確認が失敗した場合(タイムアウトを含む)は、再びIKE phase1を開始する。
ステップS1913からステップS1918までの処理は、ステップS1902からステップS1907までの処理と同様である。
エンティティiは、ステップS1919で、匿名公開鍵証明書に基づく認証データを生成する。ここで、匿名公開鍵証明書に基づく認証データとは、例えば、HASH_Iに対するディジタル署名である。なお、匿名公開鍵証明書に含まれるIPv6アドレスはCGAである。
エンティティiは、ステップS1920で、匿名公開鍵証明書に基づく認証データと、匿名公開鍵証明書とをpeerに送る。このとき、エンティティiと、peerとで共有した暗号化鍵によってデータは暗号化されている。
peerは、ステップS1921で、暗号化されたデータを受け取り、復号する。そして、peerは、匿名公開鍵証明書の正当性を確認する。peerは、匿名公開鍵証明書の正当性が確認できなかったらIKEの続行は中断し、匿名公開鍵証明書の正当性が確認できたら、その公開鍵を用いて認証データの正当性を確認する。
peerは、匿名公開鍵証明書の正当性確認と、認証データの正当性確認とに成功すると、HASH_Rに対する認証データを生成し、暗号化してステップS1922でエンティティiに送る。
エンティティiは、ステップS1923で、受け取ったデータを復号し、認証データの
正当性を確認する。エンティティiは、確認が成功すると、IKE phase2を開始し、確認が失敗すると、IKEの続行を止める。
正当性を確認する。エンティティiは、確認が成功すると、IKE phase2を開始し、確認が失敗すると、IKEの続行を止める。
以上のプロトコルによって、CGAによる暗号通信と、身元確認を行っての暗号通信とを適応的に実行することが可能になり、状況によってCGAによる暗号通信が行えなかった場合でも身元確認を行っての暗号通信を行うことができる。
例えば、図10や図11におけるFirewallが設けられている場合、CGAに基づくIKEの実行は、IKEパケットが途中で破棄されて実行できないときがある。このとき、遅くとも図12のステップS1912においてタイムアウトとなる。すると、匿名公開鍵証明書を用いるIKEが実行され、エラーが起こらない限りはIKEが成功し、IPsecが行えるようになる。従って、従来ならば暗号通信を断念しなければならない状況でも暗号通信を実行可能にしている。
もちろん、最初から匿名公開鍵証明書を用いてIKEを実行することも可能である。従って、本実施形態は、CGAに基づく暗号通信と、身元確認を行っての暗号通信と、を適応的に実行可能にしている。
以上、上述したように、本実施形態によれば、CGAを用いる場合でも公開鍵証明書に基づく暗号通信、即ちIKEを実行してIPsec通信を行うことができる。従って、CGAに基づく暗号通信が禁止されている状況においても暗号通信を行うことができ、しかもプライバシ保護も確保される。
また、本実施形態によれば、CGAによる暗号通信と、身元確認を行っての暗号通信とを適応的に実行することが可能になり、状況によって暗号通信が行えなかった場合でも暗号通信を行うことができる。
また、本実施形態によれば、異なる公開鍵に基づくCGAを使う際にCGAの生成を行わずとも済み、装置のレスポンスの低下や使い勝手の低下を防ぐことができる。
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
300 ノード
301 ネットワーク・インターフェイス
302 ネットワーク・インターフェイス
303 CPU
304 ROM
305 RAM
306 HD(ハードディスク)
307 電源
308 キーボード/ポインティングデバイスのインターフェイス
309 モニターのインターフェイス
301 ネットワーク・インターフェイス
302 ネットワーク・インターフェイス
303 CPU
304 ROM
305 RAM
306 HD(ハードディスク)
307 電源
308 キーボード/ポインティングデバイスのインターフェイス
309 モニターのインターフェイス
Claims (5)
- ネットワークを介して通信を行う通信装置であって、
前記ネットワークを介して接続された他の通信装置に対して、暗号的に生成されたアドレスに対応する公開鍵を証明対象とする匿名公開鍵証明書の発行要求を送信する発行要求送信手段と、
前記発行要求に応じて発行された前記匿名公開鍵証明書を、前記他の通信装置より受信する証明書受信手段と、
前記アドレスに基づいて暗号通信を行う第一の暗号通信手段と、
前記匿名公開鍵証明書に基づいて暗号通信を行う第二の暗号通信手段と、
を有することを特徴とする通信装置。 - 前記第一の暗号通信手段において暗号通信を行うことができない場合、前記第二の暗号通信手段において暗号通信を行うよう制御する通信制御手段を更に有することを特徴とする請求項1に記載の通信装置。
- 前記ネットワークを介して接続された他の通信装置に対して、前記アドレスの代理生成要求を送信する生成要求送信手段と、
前記代理生成要求に応じて発行された前記アドレスを、前記他の通信装置より受信するアドレス受信手段と、
を更に有することを特徴とする請求項1又は2に記載の通信装置。 - ネットワークを介して通信を行う通信装置における暗号通信方法であって、
前記ネットワークを介して接続された他の通信装置に対して、暗号的に生成されたアドレスに対応する公開鍵を証明対象とする匿名公開鍵証明書の発行要求を送信する発行要求送信ステップと、
前記発行要求に応じて発行された前記匿名公開鍵証明書を、前記他の通信装置より受信する証明書受信ステップと、
前記アドレスに基づいて暗号通信を行う第一の暗号通信手段において暗号通信を行うことができない場合、前記匿名公開鍵証明書に基づいて暗号通信を行う第二の暗号通信手段において暗号通信を行うよう制御する通信制御ステップと、
を有することを特徴とする暗号通信方法。 - 前記ネットワークを介して接続された他の通信装置に対して、前記アドレスの代理生成要求を送信する生成要求送信ステップと、
前記代理生成要求に応じて発行された前記アドレスを、前記他の通信装置より受信するアドレス受信ステップと、
を更に有することを特徴とする請求項4に記載の暗号通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005364045A JP2007166552A (ja) | 2005-12-16 | 2005-12-16 | 通信装置及び暗号通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005364045A JP2007166552A (ja) | 2005-12-16 | 2005-12-16 | 通信装置及び暗号通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007166552A true JP2007166552A (ja) | 2007-06-28 |
Family
ID=38248890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005364045A Pending JP2007166552A (ja) | 2005-12-16 | 2005-12-16 | 通信装置及び暗号通信方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007166552A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009004687A1 (ja) * | 2007-06-29 | 2009-01-08 | Fujitsu Limited | 認証装置および接続管理装置 |
JP2009038512A (ja) * | 2007-07-31 | 2009-02-19 | Panasonic Corp | 暗号化情報通信装置、暗号化情報通信システム、暗号化情報通信方法及びプログラム |
JP2015518697A (ja) * | 2012-04-25 | 2015-07-02 | 西安西▲電▼捷通▲無▼綫▲網▼絡通信股▲分▼有限公司China Iwncomm Co., Ltd. | デジタル証明書の自動申請方法、装置及びシステム |
-
2005
- 2005-12-16 JP JP2005364045A patent/JP2007166552A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009004687A1 (ja) * | 2007-06-29 | 2009-01-08 | Fujitsu Limited | 認証装置および接続管理装置 |
JP2009038512A (ja) * | 2007-07-31 | 2009-02-19 | Panasonic Corp | 暗号化情報通信装置、暗号化情報通信システム、暗号化情報通信方法及びプログラム |
JP2015518697A (ja) * | 2012-04-25 | 2015-07-02 | 西安西▲電▼捷通▲無▼綫▲網▼絡通信股▲分▼有限公司China Iwncomm Co., Ltd. | デジタル証明書の自動申請方法、装置及びシステム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8266427B2 (en) | Secure mobile IPv6 registration | |
US8098823B2 (en) | Multi-key cryptographically generated address | |
JP4625125B2 (ja) | マルチ鍵暗号化生成アドレスを用いたセキュアなアドレスプロキシ | |
JP4302398B2 (ja) | インターネットプロトコルのアドレス機構 | |
Montenegro et al. | Crypto-based identifiers (CBIDs) Concepts and applications | |
JP4033868B2 (ja) | IPv6ネットワークで認証を処理する方法及びその装置 | |
EP1355447B1 (en) | Public key certification providing apparatus | |
EP2329621B1 (en) | Key distribution to a set of routers | |
JP4006403B2 (ja) | ディジタル署名発行装置 | |
JP5144685B2 (ja) | 移動ネットワークにおけるシグナリング委任 | |
JP2003324419A (ja) | アドレス・ベースド・キ−を使用して対応情報更新を保護する方法 | |
EP2259542B1 (en) | Method, apparatus and system for processing dynamic host configuration protocol message | |
Lopez et al. | Pceps: Usage of tls to provide a secure transport for the path computation element communication protocol (pcep) | |
JP4938408B2 (ja) | アドレス管理システム、アドレス管理方法およびプログラム | |
JP3782788B2 (ja) | 公開鍵証明書提供装置、方法、及び、接続装置 | |
JP2007166552A (ja) | 通信装置及び暗号通信方法 | |
EP1836559B1 (en) | Apparatus and method for traversing gateway device using a plurality of batons | |
Castelluccia et al. | Hindering eavesdropping via ipv6 opportunistic encryption | |
JP4280536B2 (ja) | 公開鍵生成装置、方法、及び、公開鍵証明書発行方法 | |
WO2010003326A1 (zh) | 保护代理邻居发现的方法、***和相关装置 | |
JP4208868B2 (ja) | 公開鍵証明書発行方法 | |
JP2007258986A (ja) | 通信装置、通信方法および通信プログラム | |
JP3911697B2 (ja) | ネットワーク接続機器、ネットワーク接続方法、ネットワーク接続用プログラムおよびそのプログラムを記憶した記憶媒体 | |
JP4236167B2 (ja) | Ipインタフェース情報の付与方法,その付与装置及びその付与プログラム並びにアクセス認証装置 | |
JP2005191646A (ja) | 遮断装置、匿名公開鍵証明書発行装置、システム、および、プログラム |