영어 원문: http://blog.jgc.org/2015/11/the-secret-message-hidden-in-every.html
클라이언트가 http2를 사용하려면 우선 서버가 http2를 지원하는지 알아야겠죠?
그래서 일부러 이상한 문자열을 전송하여 서버의 응답을 살핍니다.
http2 스펙에 맞는 답변이 돌아오면 서버가 http2를 지원하는 것이고, 에러가 나면 지원하지 않는 거죠.
그런데 여기에 사용되는 문자열이 PRISM이라고 하네요.
PRI * HTTP/2.0\r\n
\r\n
SM\r\n
http2와 프리즘이 무슨 상관이 있을까요?
2013년 5월에 발표된 버전에서는 이 문자열이 START였다고 합니다.
그런데 2013년 7월 버전에서 PRISM으로 바뀌었고, 그 스펙이 최종 버전까지 그대로 이어져 왔어요.
그 사이에 무슨 일이 있었을까요?
2013년 6월에 에드워드 스노든이 폭로한
미국 국가안보국(NSA)의 광범위한 감청 작전명이 "프리즘"이었답니다.
http2를 만든 개발자들이 미국 정부의 무분별한 인터넷 감청에 항의하는 뜻으로
PRISM이라는 단어를 스펙에 집어넣은 거지요.
앞으로 수십 년간 전세계에서 사용해야 할 프로토콜이니,
서버 기술을 배우는 다음 세대의 개발자들은 이 비밀 메시지를 보면서
미국 정부의 인터넷 감청 스캔들을 기억할 것입니다.
개발자가 아닌 사람들은 다 잊어버렸더라도, 개발자들은 잊을 수 없는 것입니다.
자신이 만드는 기술이 이런 권력의 남용에 도움이 되지는 않을지 생각해 보는 계기가 되겠지요.
스펙을 뜯어고친 것이 별 것 아닌 장난처럼 보일 수도 있겠지만,
목숨을 걸고 비리를 폭로한 스노든의 바램을 너무나 잘 담아낸 것입니다.
게다가 http2 스펙 자체는 SSL 사용을 의무화하지 않았는데도
크롬과 파이어폭스 등 대부분의 브라우저들은 SSL 사용시에만 http2를 지원하기로 약속했습니다.
그것도 아무렇게나 쓰면 안 되고, 최신 기술로도 감청이 불가능하다고 알려진 TLS 1.2 버전 이상을 사용해야
http2의 성능을 제대로 발휘할 수 있도록 만든다고 합니다.
프리즘 작전으로 전세계 인터넷 사용자들을 감청한 미국 정부도
정작 http2 프로토콜에 포함된 PRISM이라는 문자열은 감청할 수 없도록 한다는 거죠 ^^
미국 개발자들은 이렇게 무섭습니다.
전부 그렇지는 않겠지만, 자신이 만드는 기술이 사람의 자유와 세상의 권력 구조에 어떤 영향을 미치는지
항상 생각하면서 새 기술을 만들어내고 있는 거죠.
거기에 비해 우리나라의 내노라하는 개발자들은
평소 어떤 생각을 하고 있는지 궁금합니다.
XE1과 XE3를 만드는 개발자들과 그들을 지원하는 네이버는
사람과 기술의 관계에 대해 어떤 생각을 갖고 있을까요?
본문과 좀 거리가 먼 댓글이라 죄송합니다만 http2 적용하고 싶지만
php2.4아파치2.4라 수정을 하면서 적용해야해 어렵고 겁나서 못하고 있네요ㅋ