ロバストネス原則

コンピューティングにおいて、堅牢性の原則とはソフトウェアの設計ガイドラインであり、「自分の行動には保守的、他者からの受け入れには寛容」というものです。これはしばしば「送信には保守的、受け入れには寛容」と言い換えられます。この原則は、TCPの初期の仕様でこの表現を用いたジョン・ポステルにちなんで、ポステルの法則としても知られています。[ 1 ]

つまり、他のマシン (または同じマシン上の他のプログラム) にメッセージを送信するプログラムは仕様に完全に準拠する必要がありますが、メッセージを受信するプログラムは意味が明確である限り、非準拠の入力を受け入れる必要があります。

プログラマーの間では、互換性のある関数を作成するための原則は、入力型では反変、出力型では 共変であるという形式でも知られています。

解釈

この原則は、1979年のIPv4仕様においてジョン・ポステルによって初めて記述されました。[ 2 ] 1989年、ボブ・ブレイデンはポステルの原則を拡張し、プログラマーに対し「ネットワークは、最悪の影響を及ぼすように設計されたパケットを送信する悪意のあるエンティティで満ちていると想定する」ことを推奨しました。[ 3 ]プロトコルは、未知のコードを持つメッセージを受け入れる(場合によってはログに記録する)ことで、将来のバージョンのプロトコルにおいて既存のフィールドに新しいコードを追加できるようにする必要があります。プログラマーは、受信者の欠陥を露呈させる可能性のある「合法だが分かりにくいプロトコル機能」を持つメッセージの送信を避け、「他の不正なホストから生き残るだけでなく、そのようなホストが共有通信設備に引き起こす混乱を最小限に抑えるように」コードを設計する必要があります。[ 4 ]

批判

2001年、マーシャル・ローズは、ポステルの原理を新しいアプリケーションプロトコルの設計に適用する際に生じるいくつかの導入上の問題を特徴づけました。[ 5 ]例えば、仕様に準拠していないメッセージを送信する欠陥のある実装は、仕様からの逸脱を許容する実装でのみ使用され、場合によっては数年後には、そのメッセージを拒否する、より許容度の低いアプリケーションに接続される可能性があります。このような状況では、問題を特定することが困難になることが多く、解決策の導入にはコストがかかる可能性があります。そのため、ローズは「たとえ実装のオーバーヘッドが生じるとしても、プロトコルにおける明示的な整合性チェック」を推奨しました。

2018年、フロレンティン・ロシェとオリヴィエ・ペレイラによるプライバシー強化技術に関する論文では、Torルーティングプロトコル内部のポステルの堅牢性原理を利用して、オニオンサービスとTorクライアントの匿名性を侵害する方法が示されました。[ 6 ]

2023年、マーティン・トムソンとデビッド・シナジは、ポステルの堅牢性原理は実際にはセキュリティを含む堅牢性の欠如につながると主張した。[ 7 ]

欠陥は事実上の標準として定着する可能性があります。プロトコルの実装は、異常な動作を再現することが必須であり、そうでなければ相互運用性がありません。これは、予期せぬ事態を許容することの結果であると同時に、致命的なエラー状態を避けようとしないという自然な抵抗の産物でもあります。このような環境における相互運用性を確保することは、しばしば「バグ対バグの互換性」を目指すことと呼ばれます。

参照

参考文献

  1. ^ J. ポステル編(1980年1月)。DOD 標準 - 送信制御プロトコルIETF土井: 10.17487/RFC0761RFC 761。 IEN 129。廃止。RFC 793 および7805 により廃止。置換: IEN 124、112、81、55、44、40、27、21、および 5。
  2. ^全米研究会議、工学・物理科学部、物理科学・数学・応用委員会、コンピュータ科学・電気通信委員会、進化する情報基盤におけるインターネット委員会(2001年1月22日)。『インターネットの成熟』全米科学アカデミー出版。ISBN 978-0-309-17205-9{{cite book}}: CS1 maint: 複数の名前: 著者リスト (リンク)
  3. ^ R. Braden編 (1989年10月).インターネットホストの要件 - 通信層. ネットワークワーキンググループ. doi : 10.17487/RFC1122 . STD 3. RFC 1122 .インターネット標準3。RFC 1349、4379、5884、6093、6298、6633、6864、8029、9293  によって更新れまし
  4. ^ Wilde, Erik (2012) [1999]. Wilde's WWW: Technical Foundations of the World Wide Web . Springer‑Verlag. p.  26. doi : 10.1007 /978-3-642-95855-7 . ISBN 978-3-642-95855-7. S2CID  19897299 .
  5. ^ M. Rose (2001年11月).アプリケーションプロトコルの設計について. ネットワークワーキンググループ. doi : 10.17487/RFC3117 . RFC 3117 .情報提供。
  6. ^ Rochet, Florentin; Pereira, Olivier (2018). 「Dropping on the Edge: Flexibility and Traffic Confirmation in Onion Routing Protocols」(PDF) . Proceedings of the Privacy Enhancing Technologies Symposium . 2018 (2). De Gruyter Open: 27– 46. doi : 10.1515/popets-2018-0011 . ISSN 2299-0984 . 
  7. ^ M. Thomson; D. Schinazi (2023年6月). 「堅牢なプロトコルの維持」 .インターネットアーキテクチャ委員会. doi : 10.17487/RFC9413 . RFC 9413 .情報提供。