요약
- STARTTLS는 기존 SMTP 연결을 TLS로 업그레이드했지만, 이 전환이 첫 평문 대화를 계승하지는 않았습니다. TLS 이후 양쪽 피어는 핸드셰이크 이전의 지식을 모두 폐기했고, 클라이언트는 서버에게 다시 인사를 보냈습니다.
- 이 재설정은 새 보안 컨텍스트를 오래되고 조작 가능한 주장으로부터 보호했습니다. 그 자체로 암호화를 의무화하거나 모든 메일 홉을 인증하지는 못했으며, DANE과 MTA-STS가 나중에 침묵 속 평문 폴백을 금할 수 있는 정책 근거를 제공했습니다.
하나의 연결에 두 개의 시작점
평범한 SMTP에서 서버는220으로 연결을 열고, 클라이언트는EHLO로 자신을 밝히며, 서버는 사용할 준비가 된 확장 기능으로 답했습니다. 1999년 STARTTLS는 이 익숙한 절차 안에 보안 전환을 삽입했습니다. 서버는 EHLO 응답에 인자 없는 한 단어를 추가했습니다. 클라이언트는STARTTLS로 답할 수 있었고,220응답은 평문 단계를 끝내고 TLS 핸드셰이크를 시작했습니다.
이 경제성은 매력적이었습니다. 운영자는 별도의 공개 메일 라우팅 체계나 새 MX 어휘를 도입할 필요가 없었습니다. 구형 클라이언트는 기존 SMTP를 그대로 사용할 수 있었고, 새 피어는 이미 열어둔 연결 위에서 암호화를 발견할 수 있었습니다.
그러나 발견은 보호보다 앞서 이루어졌습니다. 경로 상의 공격자는 클라이언트의 첫 신원을 수정하거나, 확장 기능을 바꾸거나,STARTTLS줄을 삭제할 수 있었습니다. 핸드셰이크 이전 바이트는 보안 경계에 도달하는 데 유용했지만, 경계 너머에서 내려지는 결정의 신뢰할 수 있는 입력은 아니었습니다.
암호화에는 망각이 필요했다
그래서 표준은 특이한 규율을 부과했습니다. TLS가 완료되면 SMTP는 서버의 최초 서비스 준비 인사 직후 상태로 돌아갔습니다. 서버는 TLS 이전에 클라이언트로부터 학습한 정보, 첫 EHLO 인자를 포함해 폐기했습니다. 클라이언트는 첫 확장 목록을 폐기했습니다. 그런 다음 EHLO를 다시 보냈습니다.
이것은 의례적 반복이 아니었습니다. 두 번째 인사는 서로 다른 증거 맥락에 속했습니다. 서버는 적절한 클라이언트 인증서를 받은 뒤에야 인증 메커니즘을 광고할 수 있었습니다. 클라이언트는 자신이 선택한 정책에 따라 서버를 검증한 뒤에야 기능을 수용할 수 있었습니다. 핸드셰이크가 보증한 것처럼 TLS 이전의 주장이 경계를 넘어 새어 들어올 수 없었습니다.
STARTTLS는 또한 엄격한 구획 지점이 되었습니다. 서버가220으로 답한 뒤 클라이언트는 다른 SMTP 명령을 보내기 전에 TLS를 시작해야 했습니다. PIPELINING으로 명령을 묶을 때 STARTTLS는 그 그룹의 마지막이어야 했습니다. 그렇지 않으면 평문 명령이 핸드셰이크 바이트와 혼동되거나, 이전 기능 집합 하에서 선택된 명령이 새 상태에 도착할 수 있었습니다.
보호된 채널에도 판정이 필요했다
TLS는 기밀성, 무결성, 피어 인증을 제공할 수 있었지만, 프로토콜은 협상된 모든 결과가 충분하다고 명령하지 않았습니다. 인증서 신원, 신뢰 앵커, 알고리즘, 클라이언트 자격 증명은 로컬 정책의 영역이었습니다. 어느 쪽이든 달성된 프라이버시나 인증이 불충분하다고 판단하면 중단할 수 있었습니다.
이 구분은 성공적인 핸드셰이크가 만능 인장이 되는 것을 막았습니다. 수동적 관찰자에 대한 암호화가 의도한 MX로의 인증된 전송을 보장하지는 않았습니다. 검증된 릴레이가 사람 저자의 증명은 아니었습니다. 하나의 보호된 SMTP 홉은 그 앞의 제출 홉이나 뒤의 다음 릴레이에 대해 확실한 아무것도 말해주지 않았습니다.
454응답은 이 절충을 명시적으로 드러냈습니다. TLS가 일시적으로 사용 불가능할 때 발신자는 평문으로 전송하거나, 큐에 넣고 재시도하거나, 실패할 수 있었습니다. 확장은 메커니즘을 제공했지만, 폴백의 결과는 여전히 발신자가 담당했습니다.
상호운용성이 첫 의무화를 제한했다
공개 인터넷 메일에는 까다로운 실패 규칙이 있었습니다. 수신자의 MX는 아직 업그레이드하지 않은 발신자의 메시지도 받아야 했습니다. 따라서 RFC 3207은 공개적으로 참조되는 25번 포트 서버가 단순한 로컬 전달을 위해 STARTTLS를 요구하는 것을 금지했습니다. 사설 서버와 릴레이 서비스는 이를 요구할 수 있었고, TLS 안에서 수립된 인증이 릴레이를 통제할 수 있었지만, 개방된 수신 경계는 호환성을 유지했습니다.
이 선택은 점진적 배포를 가속하고 도달 가능성을 보존했습니다. 그러나 그로 인해 STARTTLS 광고만으로는 지속적인 기밀성 약속을 표현할 수 없었습니다. 공격자가 제안을 제거하면 기회주의적 발신자는 평범한 평문 서버로 보고 그대로 전송할 수 있었습니다.
약점은 TLS 암호화가 실패한 것이 아니었습니다. TLS를 요구하는 정책이 그 정책이 구속하려던 보호되지 않은 대화 안을 이동한다는 점이었습니다.
이후 표준들은 정책을 대화 밖으로 옮겼다
SMTP를 위한 DANE은 목적지의 TLS 약속과 인증 자료를 DNSSEC으로 검증된 TLSA 레코드에 결합했습니다. 안전하고 적용 가능한 레코드가 존재하면, 발신자는 더 이상 STARTTLS 광고의 부재를 계속 진행할 권한으로 취급할 수 없었습니다. 요구되는 채널을 협상하지 못하면 메시지가 노출되는 대신 전달이 지연되었습니다.
MTA-STS는 다른 신뢰 경로를 선택했습니다. 수신자가 발견 가능한 정책을 게시하고 그 내용을 HTTPS로 제공했습니다. 발신자는 수용 가능한 MX 패턴, PKIX 기대치, 강제 적용 수명을 캐시했습니다. 그 수명 동안 제거된 STARTTLS 줄이나 유효하지 않은 인증서는 침묵 속 다운그레이드가 아니라 큐잉을 낳았습니다. 초기 정책 발견은 여전히 다른 노출을 안고 있었는데, 평범한 DNS가 여전히 교란될 수 있었기 때문입니다. 캐싱이 이후의 공격 기회를 좁혔습니다.
두 설계 모두 권위가 어디에 놓이는지를 바꿨습니다. STARTTLS는 여전히 대역 내 전환이었습니다. 외부 정책이 별개의 질문에 답했습니다. 그것 없이 진행해도 되는가?
반복된 인사말이야말로 지속된 발명품이었다
STARTTLS를 평문에서 암호문으로의 스위치로 기억하는 것은 자연스럽습니다. 그러나 그 더 일반적인 기여는 수명이 긴 프로토콜 안의 깔끔한 상태 경계였습니다. 보호 이전에 학습된 주장은 소급적으로 업그레이드되지 않았습니다. 그것들은 만료되었습니다. 기능은 다시 발견되었고, 신원은 명시적 정책 하에서 평가되었으며, 실패는 폴백 허가와 구별 가능하게 남았습니다.
이 패턴은 기존 대화에 보안을 추가하는 어디에서든 중요합니다. 새 암호화 계층은 공격자가 통제한 입력으로 이미 내려진 결정을 정화할 수 없습니다. 시스템은 어느 상태가 살아남고 어느 상태가 지워지며, 누가 더 약한 동작을 승인할 수 있는지를 명명해야 합니다.
출처와 한계
최초의 전환과 다운그레이드 경고는RFC 2487에 나타나며, 수정된 SMTP 규칙, 재설정 및 상호운용성 경계는RFC 3207에 담겨 있습니다.RFC 7672는 SMTP를 위한 기회주의적 DANE TLS를 정의하고,RFC 8461은 MTA-STS를 정의합니다. 이 표준들은 현재의 배포 현황, 글로벌 다운그레이드 공격 또는 공급자 기본 설정을 측정하지 않습니다.
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





