강건성 원리

Robustness principle

컴퓨팅에서, 강건성 원칙은 "당신이 하는 일에 보수적이 되고, 당신이 다른 사람에게서 받아들이는 것에 자유로워져야 한다"는 소프트웨어에 대한 설계 지침이다.그것은 종종 "보내는 것에 보수적이 되고, 받아들이는 것에 자유적이 된다"라고 다시 쓰여진다.이 원리는 TCP의 초기 사양에서 그 문구를 사용한 존 포스텔의 뒤를 이어 포스텔의 법칙으로도 알려져 있다.[1]

즉, 다른 기계(또는 같은 기계에 있는 다른 프로그램)에 메시지를 보내는 프로그램은 사양에 완전히 부합해야 하지만, 메시지를 수신하는 프로그램은 의미가 분명한 한 부적합한 입력을 받아들여야 한다.

프로그래머들 사이에서는 양립 가능한 기능을 생산하기 위해, 원리는 입력형에서는 반반, 출력형에서는 공변량이 되는 형태로도 알려져 있다.

해석

RFC 1122(1989)는 프로그래머들에게 "최악의 영향을 미치도록 설계된 패킷을 보낼 악의적인 실체로 네트워크가 채워져 있다고 가정한다"[2]고 권고함으로써 포스텔의 원칙을 확장했다.프로토콜은 알 수 없는 코드가 있는 메시지를 수신함으로써(아마도 기록했을 것이다) 프로토콜의 미래 버전에서 기존 필드에 새로운 코드를 추가하는 것을 허용해야 한다.프로그래머는 수신기의 결함을 노출시킬 수 있는 "합법적이지만 모호한 프로토콜 특징"이 있는 메시지 전송을 피하고, "다른 잘못된 호스트에서 살아남기 위한 것뿐만 아니라, 그러한 호스트가 공유 통신 설비에 야기할 수 있는 장애의 양을 제한하기 위한 협력" 코드를 설계해야 한다.[3]

비판

2001년에 마샬 로즈는 새로운 애플리케이션 프로토콜 설계에 포스텔의 원칙을 적용할 때 몇 가지 배치 문제를 특징으로 삼았다.[4]예를 들어, 부적합한 메시지를 보내는 결함 있는 구현은 규격의 편차를 허용하는 구현에만 사용될 수 있다. 단, 몇 년 후, 해당 메시지를 거부하는 덜 관용적인 애플리케이션과 연결될 때까지 말이다.이런 상황에서는 문제 파악이 어려운 경우가 많고, 솔루션을 배치하는 데 비용이 많이 들 수 있다.따라서 Rose는 "프로토콜의 일관성 검사...구현 오버헤드를 부과하더라도"

마틴 톰슨은 2015년부터 2018년까지 일련의 인터넷 드래프트에서 포스텔의 강건성 원칙이 실제로 보안을 포함한 강건성의 결여로 이어진다고 주장한다.[5]

결함은 사실상의 표준으로 고착될 수 있다.프로토콜의 구현은 이상 행동을 복제하기 위해 요구되거나 상호운용성이 없다.이는 강건성 원리를 적용한 결과일 뿐 아니라 치명적인 오류 조건을 피하기를 꺼리는 자연적인 거부감의 산물이다.이 환경에서 상호운용성을 보장하는 것을 흔히 "버그 호환성을 위한 버그"를 목표로 한다고 한다.

2018년 플로렌틴 로셰와 올리비에 페레이라의 프라이버시 향상 기술에 관한 논문은 토르 라우팅 프로토콜 안에서 포스텔의 강건성 원칙을 활용하여 양파 서비스와 토르 고객의 익명성을 훼손하는 방법을 보여주었다.[6]

참고 항목

참조

  1. ^ Postel, Jon, ed. (January 1980). Transmission Control Protocol. IETF. doi:10.17487/RFC0761. RFC 761. Retrieved June 9, 2014.
  2. ^ Braden, R., ed. (October 1989). Requirements for Internet Hosts: Communication Layers. IETF. doi:10.17487/RFC1122. RFC 1122. Retrieved June 9, 2014.
  3. ^ 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.
  4. ^ Rose, M. (November 2001). On the Design of Application Protocols. IETF. doi:10.17487/RFC3117. RFC 3117. Retrieved June 9, 2014.
  5. ^ Thomson, Martin (May 2019). The Harmful Consequences of the Robustness Principle. IETF. Retrieved October 4, 2019.
  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. De Gruyter Open (2): 27–46. ISSN 2299-0984.

외부 링크