블로그

프로토콜, 보안 사건, 그리고 인터넷이 실제로 작동하는 방식. 147편.

301 vs 302: 모든 걸 망가뜨리는 리다이렉트

301과 302의 차이는 '영구 vs 임시'가 아니다. 코드 하나에 조용히 묶인 두 개의 별개 결정이고, 실수로 설정한 301은 남의 브라우저 캐시 속에서 영원히 살아남을 수 있다.

HSTS 프리로드: 당신의 보안을 브라우저 벤더에게 넘기는 일

HSTS 프리로드 목록에 도메인을 올리는 건 일방통행 문이다. 목록은 당신 서버가 아니라 브라우저 바이너리 안에 있어서, 되돌리려면 당신이 통제하지 못하는 크롬 릴리스를 몇 달이고 기다려야 한다 — 프리로드하라고 권하는 사람들이 말 안 하는 부분이다.

DANE: 웹에서 실패하고 이메일에서 이긴 프로토콜

다들 DANE은 죽었다고 한다 — DNSSEC 뒤에 발이 묶여 아무도 안 쓴 아름다운 프로토콜. 그 판정은 미국식이다. 네덜란드에선 의무고, 마이크로소프트는 Exchange Online에서 검증하고, 웹에선 정말로 죽었다. 같은 프로토콜, 세 갈래 운명.

Content-Security-Policy는 가장 어려운 헤더다

배포된 CSP 대부분은 아무것도 안 한다. 구글이 측정했다: 스크립트를 제한하려는 정책의 94.7%가 우회 가능. 문법은 쉽다. 어려운 이유는 따로 있다.

MTA-STS: 아무도 모르는 이메일 보안 프로토콜

SMTP 암호화에는 트럭이 지나갈 만한 구멍이 있다: 경로상의 공격자가 STARTTLS를 벗겨내고 메일을 평문으로 읽을 수 있다. MTA-STS가 그걸 막는다. 그러려면 웹 페이지를 하나 띄워야 하고, 그래서 거의 아무도 안 했다.

SMTP relay는 2026년에 실제로 어떻게 작동하는가

1982년엔 모든 메일 서버가 아무한테나 relay해줬다 — 그게 설계였다. 지금은 모르는 사람한테 relay해주면 점심도 되기 전에 블록리스트에 오른다. 'relay'라는 단어는 살아남았고, 그 아래 모든 게 뒤집혔다.

와일드카드 인증서는 보안 안티패턴이다

모든 서버에 같은 개인키 하나, 그게 앞으로 만들 모든 서브도메인을 덮는다. 와일드카드 인증서는 작은 편의를 보이지 않는 폭발 반경과 맞바꾼다 — 그리고 지금의 표준도 그 위험을 분명히 적어 둔다.

와일드카드 DNS 레코드, 계속 발등을 찍는 그 총

와일드카드 DNS 레코드는 '이 이름 아래 전부 매칭'처럼 읽힌다. 아니다. 이미 존재하는 이름은 절대 건드리지 않고, 트리 깊은 곳에 레코드 하나만 추가해도 조용히 죽는다.

네거티브 캐싱: DNS는 '없음'도 기억한다

레코드를 추가했는데 세상은 여전히 '존재하지 않는다'고 답한다. 레코드는 멀쩡하다. DNS가 그 부재를 캐싱했을 뿐이다 — 당신이 설정한 적 없는 TTL, 아무도 건드리지 않는 SOA 필드가 지배하는 수명으로.

Anycast: 하나의 IP, 여러 대의 서버

같은 IP가 서울에 있는 당신과 상파울루에 있는 다른 사람에게, 서로 다른 두 대의 기계에서 응답한다. 둘 다 눈치채지 못한다. 그게 anycast다 — 인터넷 전체가 믿어주기로 합의한 BGP를 향한 거짓말이자, 수백 곳에서 동시에 TCP를 조용히 작동시킨 트릭.