블로그

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

TLS 세션 재개: 당신을 추적하는 속도 최적화

왕복 한 번을 아끼려고, 브라우저는 서버가 다음 방문 때 자기를 알아보게 한다 — 쿠키 항아리 밑, TLS 계층에서. 수년간 그 최적화는 슈퍼쿠키였고, 그게 고쳐진 과정은 신원이 실제로 어디서 새는지에 관한 교훈이다.

당신의 인증서 체인은 깨져 있고, 크롬이 숨겨 준다

적지 않은 HTTPS 사이트가 불완전한 인증서 체인을 보낸다. 그래도 크롬에선 멀쩡히 열린다 — 크롬이 빠진 조각을 몰래 받아 오기 때문이다. 그러지 않는 모든 클라이언트에서 버그가 터진다.

빠진 밑줄 하나와 24시간 시계

2024년, DigiCert는 검증 단계에서 밑줄 하나가 빠진 걸 발견하고 24시간 안에 인증서 8만 3천 장을 폐기해야 했다. 한 고객은 그걸 막으려 법원에 갔다. 진짜 이야기는 그 오타가 아니다.

데비안 OpenSSL 사건: 두 줄, 그리고 32,767개의 키

거의 2년 동안 데비안과 우분투에서 OpenSSL로 만든 모든 키는 32,767개짜리 목록에서 고를 수 있었다 — 메모리 검사기 경고를 없애려던 정리 작업이 무작위성을 섞어 넣던 그 한 줄을 지웠기 때문이다.

하트블리드: 지문을 남기지 않은 유출

2014년, OpenSSL의 빠진 경계 검사 하나가 누구든 서버에게 자기 메모리 64KB를 달라고 요청할 수 있게 했다 — 개인키, 비밀번호, 세션 쿠키까지. 그 요청은 평범한 하트비트와 완전히 똑같이 생겨서, 어떤 서버도 자기가 털렸는지조차 알 수 없었다.

ROBOT: 19년 만에 돌아온 공격

1998년 블라이헨바허가 TLS의 RSA를 깼다. 그 '수정'은 취약한 우회책이었고, 2017년 상위 100대 도메인 중 27곳에서 다시 깨졌다.

Flame은 마이크로소프트 서명을 위조했다

2012년, 한 첩보 툴킷이 자신을 '서명된 윈도우 업데이트'로 위장해 감염 대상 PC에 설치됐다. 서명하려고 그들은 학계가 아직 발표하지 않은 MD5 충돌로 마이크로소프트 인증서를 위조했다 — 줄줄이 늘어선 제도적 실수의 마지막 고리로.

POODLE, 그리고 SSLv3의 긴 죽음

2014년 구글 팀이 SSL 3.0을 깼다. 1996년에 나온, 아무도 더는 고르지 않던 프로토콜을. POODLE이 공격한 건 쓰이던 암호가 아니라, 18년 전 암호로 슬쩍 되돌아가게 만든 브라우저의 '친절한 반사작용'이었다.

JA3, JA4: 당신의 TLS 핸드셰이크는 지문이다

TLS가 무엇을 암호화하기도 전에, 클라이언트는 자기가 무엇인지 정확히 밝힌다. 인사하는 그 특유의 방식이 곧 지문이다 — JA3와 JA4의 이야기는, 아무도 감출 생각을 하지 않았던 프로토콜의 부위에서 신원이 어떻게 새어 나오는지에 관한 이야기다.

수출용 암호: 2015년에 TLS를 깬 1990년대 법

1990년대 미국 정부는 기업들이 일부러 깨지는 암호를 해외에 팔게 만들었다. 그 약한 암호는 법보다 15년을 더 살아남았고 — 2015년, FREAK과 Logjam이 그것을 웹의 3분의 1에서 다시 켰다.