ロバストネス原則
ロバストネス原則(ロバストネスげんそく、robustness principle)または堅牢性原則(けんろうせいげんそく)とは、ソフトウェアの設計指針の一つで、「貴方が自分ですることに関しては厳密に、貴方が他人から受けることに関しては寛容に」(be conservative in what you do, be liberal in what you accept from others)というものである。これは「送信するものに関しては厳密に、受信するものに関しては寛容に」(be conservative in what you send, be liberal in what you accept)とも言い換えられる。この原則は、TCPの初期仕様でこのことを主張したジョン・ポステルにちなんでポステルの法則(Postel's law)とも呼ばれる。
これは、他の装置(または同じ装置上の他のプログラム)との間でメッセージをやり取りする場合、送信側は仕様に完全に準拠すべきであるが、受信側は、メッセージの意味が明確である限り、仕様に非準拠であってもそれを受け入れるべきであるということである。
マーシャル・ローズ(英語版)は2001年に、新しいアプリケーションプロトコルの設計にポステルの法則を適用した場合の問題点を指摘した。仕様に適合しないメッセージを送信する欠陥のある実装は、当初は仕様からの逸脱を許容する実装のみで使用されたとしても、その数年後には、そのメッセージを拒否するような許容度の低い実装と接続される可能性がある。この場合、問題を特定するのが難しくなり、解決策が判明しても、その導入にコストがかかる。そこでローズは、「実装上のオーバーヘッドが発生してでも、プロトコルで明示的に一貫性をチェックする」べきであると主張した。
マーティン・トムソンは、2015年から2018年にかけて執筆したインターネットドラフトの中で、ロバストネス原則は、実際にはセキュリティを含むロバストネスの「欠如」につながると主張した。
2018年のFlorentin RochetとOlivier Pereiraによるプライバシー強化技術(英語版)に関する論文で、Torのルーティングプロトコルがロバストネス原則を適用していることを利用して、Torクライアントの匿名性を破る方法が示された。