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». Este principio también se conoce como la ley de Postel , en honor a Jon Postel , quien utilizó esta formulación en una especificación temprana 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 ajustarse completamente a las especificaciones, pero los programas que reciben mensajes deben aceptar entradas que no se ajusten a ellas siempre que el significado sea claro.
Interpretación
El principio fue escrito por primera vez por Jon Postel en la especificación IPv4 de 1979. [ 2 ] En 1989, Bob Braden amplió el principio de Postel al recomendar que los programadores "asumieran que la red está llena de entidades malévolas que enviarán paquetes diseñados para tener el peor efecto posible". [ 3 ] 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 deberían evitar enviar mensajes con "características de protocolo legales pero oscuras" que podrían exponer deficiencias en los receptores, y diseñar su código "no solo para sobrevivir a otros hosts con comportamientos indebidos, sino también para cooperar para limitar la cantidad de interrupción que dichos hosts pueden causar a la facilidad de comunicación compartida". [ 4 ]
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. [ 5 ] Por ejemplo, una implementación defectuosa que envía mensajes no conformes podría usarse solo 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 y desplegar una solución puede resultar costoso. Por lo tanto, Rose recomendó «verificaciones explícitas de consistencia en un protocolo ... incluso si imponen una sobrecarga de implementación».
En 2018, un artículo sobre tecnologías para mejorar 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 onion y los clientes Tor. [ 6 ]
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: [ 7 ]
Un fallo puede arraigarse como un estándar de facto. Cualquier implementación del protocolo debe replicar el comportamiento anómalo, o no es interoperable. Esto es consecuencia de tolerar lo inesperado y producto de una reticencia natural a evitar errores fatales. Garantizar la interoperabilidad en este entorno se suele denominar buscar la compatibilidad "error por error ".
Véase también
Referencias
- ↑ J. Postel , ed. (Enero de 1980). ESTÁNDAR DEL DOD - PROTOCOLO DE CONTROL DE TRANSMISIÓN . IETF . doi : 10.17487/RFC0761 . RFC 761 . EN 129.Obsoleto. Obsoleto según las RFC 793 y 7805. Reemplaza: IEN 124, 112, 81, 55, 44, 40, 27, 21 y 5.
- ↑ Consejo Nacional de Investigación; División de Ingeniería y Ciencias Físicas; Comisión de Ciencias Físicas, Matemáticas y Aplicaciones; Junta de Ciencias de la Computación y Telecomunicaciones; Comité sobre Internet en la Infraestructura de Información en Evolución (22 de enero de 2001). La mayoría de edad de Internet . National Academies Press. ISBN 978-0-309-17205-9.
{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ R. Braden , ed. (octubre de 1989). Requisitos para hosts de Internet: capas de comunicación . Grupo de trabajo de redes. doi : 10.17487/RFC1122 . STD 3. RFC 1122 .Estándar de Internet 3. Actualizado por RFC 1349 , 4379 , 5884 , 6093 , 6298 , 6633 , 6864 , 8029 y 9293 .
- ↑ 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 .
- ↑ M. Rose (noviembre de 2001). Sobre el diseño de protocolos de aplicación . Grupo de trabajo de redes. doi : 10.17487/RFC3117 . RFC 3117 .Informativo.
- ↑ Rochet, Florentin; Pereira, Olivier (2018). "Dropping on the Edge: Flexibility and Traffic Confirmation in Onion Routing Protocols" (PDF) . Actas del Simposio sobre Tecnologías para la Mejora de la Privacidad . 2018 (2). De Gruyter Open: 27–46 . doi : 10.1515/popets-2018-0011 . ISSN 2299-0984 .
- ↑ M. Thomson; D. Schinazi (junio de 2023). Mantenimiento de protocolos robustos . Internet Architecture Board . doi : 10.17487/RFC9413 . RFC 9413 .Informativo.
Enlaces externos
- Historia del principio de robustez (de Internet) (Nick Gall, mayo de 2005). Archivado el 15 de noviembre de 2006 en Wayback Machine .
- Protocolo de Internet archivado el 14 de abril de 2021 en Wayback Machine , página 22; J. Postel, IEN 111, agosto de 1979.
- Declaraciones sobre arquitectura de computadoras
- Estándares de Internet