硬直化

インターネットは「ネットワーク同士のネットワーク」です。

このネットワーク同士のネットワークを想定通り確実に動作させるため、インターネット上の実に様々な場所に機器が設置されています。

ネットワーク上に散りばめられたこれら機器のことを「ミドルボックス」と呼びます。

2つのエンドポイント間のあちこちに存在しているこれらミドルボックスが、旧来からのネットワークデータ転送に関わっています。

ミドルボックスは様々な目的で様々な動作をしていますが、それらはインターネットを正しく動作させるために必要だと誰かが考えた結果設置されたものだ、と広い意味で捉えることができると思います。

ミドルボックスはネットワーク間で IP パケットのルーティングを行います。

また、悪意のあるトラフィックをブロックします。

NAT (Network Address Translation) を行ったり、パフォーマンスを向上させたり、通過するトラフィックを監視したり、それ以外にも様々なことを行います。

これらの役割を担うため、ミドルボックスは「ネットワーク間がどうつながっているのか」や、監視・管理の対象である、プロトコルの詳細について知らなければなりません。

こういった目的で、ミドルボックスはソフトウェアを動かします。

これらのソフトウェアは必ずしも頻繁にアップデートされるとは限りません。

ミドルボックスはインターネットを維持するための接着剤の役割を果たしていますが、最新技術に追従できていないこともよくあります。

世界中のクライアントとサーバーの間にあるミドルボックスは、一般的には末端の機器ほどすぐに変化しません。

ネットワークプロトコルのうち、ミドルボックスにプロトコルを分析させ、通信を許可・ブロックさせたいものは、以下の問題を抱えます。

ミドルボックスは設置した当時の仕様で動作するという問題です。

当時知られていなかった、新しい仕様の追加や振る舞いの変化があると、その機器にとっては不具合や不正といったリスクと見なされます。

このようなトラフィックは、単に捨てられたり、あるいはその機能を使用したくないと思うほど遅延させられたりします。

このような状況は「プロトコルの硬直化」と呼ばれます。

TCP も硬直化によって変化が難しい状況にあります。

クライアントとサーバーの間にある機器が、新しい TCP オプションを不明なものとしてブロックするかもしれません。

プロトコルの詳細が分析できると、それを取り巻くシステムはプロトコルの一般的な振る舞いを学習していき、やがてプロトコルの変更を不可能にしてしまいます。

この硬直化と「戦う」ための真に効果的な唯一の方法は、可能な限り通信を暗号化し、ミドルボックスにそこを通過するプロトコルの詳細を観察させないようにすることです。

Last updated