stringtranslate.com

Principio de robustez

En informática , el principio de robustez es una directriz de diseño de software que establece: "sé conservador en lo que haces, sé liberal en lo que aceptas de los demás". A menudo se reformula como: "sé conservador en lo que envías, sé liberal en lo que aceptas". El principio también se conoce como ley de Postel , en honor a Jon Postel , quien utilizó la redacción en una de las primeras especificaciones de TCP . [1]

En otras palabras, los programas que envían mensajes a otras máquinas (o a otros programas en la misma máquina) deben cumplir completamente con las especificaciones, pero los programas que reciben mensajes deben aceptar entradas no conformes siempre que el significado sea claro.

Entre los programadores, para producir funciones compatibles , el principio también se conoce en la forma: ser contravariante en el tipo de entrada y covariante en el tipo de salida.

Interpretación

RFC 1122 (1989) amplió el principio de Postel recomendando que los programadores "asuman que la red está llena de entidades malévolas que enviarán paquetes diseñados para tener el peor efecto posible". [2] Los protocolos deberían permitir la adición de nuevos códigos para campos existentes en futuras versiones de los protocolos al aceptar mensajes con códigos desconocidos (posiblemente registrándolos). Los programadores deben evitar enviar mensajes con "características de protocolo legales pero oscuras" que puedan exponer deficiencias en los receptores, y diseñar su código "no sólo para sobrevivir a otros hosts que se portan mal, sino también para cooperar para limitar la cantidad de perturbaciones que dichos hosts pueden causar al sistema compartido". facilidad de comunicación". [3]

Crítica

En 2001, Marshall Rose caracterizó varios problemas de implementación al aplicar el principio de Postel en el diseño de un nuevo protocolo de aplicación. [4] Por ejemplo, una implementación defectuosa que envía mensajes no conformes podría usarse sólo con implementaciones que toleren esas desviaciones de la especificación hasta que, posiblemente varios años después, se conecte con una aplicación menos tolerante que rechace sus mensajes. En tal situación, identificar el problema suele ser difícil e implementar una solución puede resultar costoso. Por lo tanto, Rose recomendó "verificaciones explícitas de coherencia en un protocolo... incluso si imponen una sobrecarga de implementación".

En 2018, un artículo sobre tecnologías de mejora de la privacidad de Florentin Rochet y Olivier Pereira mostró cómo explotar el principio de robustez de Postel dentro del protocolo de enrutamiento Tor para comprometer el anonimato de los servicios cebolla y los clientes Tor. [5]

En 2023, Martin Thomson y David Schinazi argumentaron que el principio de robustez de Postel en realidad conduce a una falta de robustez, incluida la seguridad: [6]

Un defecto puede convertirse en un estándar de facto. Se requiere cualquier implementación del protocolo para replicar el comportamiento aberrante, o no será interoperable. Esto es a la vez una consecuencia de tolerar lo inesperado y un producto de una renuencia natural a evitar condiciones de error fatales. A menudo se hace referencia a garantizar la interoperabilidad en este entorno como objetivo de ser " compatible error por error ".

Ver también

Referencias

  1. ^ Postel, Jon , ed. (Enero de 1980). Protocolo de Control de Transmisión. IETF . doi : 10.17487/RFC0761 . RFC 761 . Consultado el 9 de junio de 2014 .
  2. ^ Braden, R. , ed. (octubre de 1989). Requisitos para servidores de Internet: capas de comunicación. IETF . doi : 10.17487/RFC1122 . RFC 1122 . Consultado el 9 de junio de 2014 .
  3. ^ Wilde, Erik (2012) [1999]. WWW de Wilde: fundamentos técnicos de la World Wide Web. Springer-Verlag. pag. 26.doi :10.1007/978-3-642-95855-7 . ISBN 978-3-642-95855-7. S2CID  19897299.
  4. ^ Rose, M. (noviembre de 2001). Sobre el Diseño de Protocolos de Aplicación. IETF . doi : 10.17487/RFC3117 . RFC 3117 . Consultado el 9 de junio de 2014 .
  5. ^ Rochet, Florentino; Pereira, Olivier (2018). "Al límite: flexibilidad y confirmación de tráfico en los protocolos de enrutamiento Onion" (PDF) . Actas del Simposio sobre tecnologías para mejorar la privacidad . 2018 (2). Abierto De Gruyter: 27–46. doi :10.1515/popets-2018-0011. ISSN  2299-0984.
  6. ^ M. Thomson; D. Schinazi (junio de 2023). Mantener protocolos robustos. Junta de Arquitectura de Internet (IAB). doi : 10.17487/RFC9413 . RFC 9413. Informativo.

enlaces externos