2019년 어느 무렵 자물쇠 아이콘은 아무 의미도 없게 됐고, 그것에 기대던 사람들 거의 아무도 알아채지 못했다.
수년간 보안 조언에는 편한 지름길이 하나 박혀 있었다. 자물쇠를 봐라, https://를 봐라. 은행은 로그인 페이지에 그걸 붙였다. 보안 교육 슬라이드에도 그게 있었다. 꽤 잘 먹혀서 사람들은 그걸 그 신호로 내면화했다 — 자물쇠는 안전, 없으면 조심. 그 조언은 늘 조금 틀렸고, 한동안은 그게 문제되지 않았다. 현실이 우연히 그 조언과 들어맞았기 때문이다. 그러다 현실이 어긋나기 시작했고, 조언은 여전히 밖에 나돌며 피해를 주고 있었다.
우연한 신호
자물쇠가 실제로 알려준 건 이거다: 당신의 브라우저와 이 도메인을 통제하는 누군가 사이의 연결이 암호화돼 있고, 인증서는 그 도메인을 통제한다고 증명한 누군가에게 발급됐다. 그게 전부다. 사이트가 정직하다고 말한 적 없다. 뒤에 있는 회사가 진짜라고 말한 적도 없다. 전송 중 바이트가 암호화돼 있고 이름이 일치한다고 말했을 뿐이다.
하지만 인증서가 공짜가 되기 전, 그 좁은 기술적 사실에는 쓸모 있는 부작용이 있었다. 인증서를 얻는 데는 돈과 수고가 들었다. CA에 돈을 냈고, 때로는 사람이 검증해줄 때까지 기다렸고, OpenSSL과 씨름했다. 주말 동안 크리덴셜을 긁어모으려고 PayPal 사칭 사이트를 급조하는 범죄자는 대개 그 수고를 하지 않았다. 48시간 안에 태워버릴 도메인에 왜 인증서 값을 치르겠는가? 그래서 피싱 키트는 대부분 맨 http://로 돌아갔고, 자물쇠는 “여기 누군가 수고를 들였다”의 거칠고 근거 없는 대리 신호가 됐다.
그건 신뢰를 담은 적이 없다. 비용을 담고 있었다. 그리고 비용을 제거하는 순간, 그 대리 신호는 무너진다.
Let’s Encrypt가 비용을 없앴다
Let’s Encrypt는 2016년 4월 정식 출시되면서 명시적이고 훌륭한 사명을 내걸었다: 웹 전체를 암호화한다. 무료 인증서, 완전 자동, 도메인 검증 챌린지를 통과하면 기계가 몇 초 만에 발급. 신용카드도, 사람을 기다리는 것도, OpenSSL 씨름도 없다. 결과는 눈부셨다. 웹 전체의 HTTPS 채택률은 몇 년 만에 소수의 페이지 로드에서 압도적 기본값으로 바뀌었고, Let’s Encrypt가 그 큰 이유다. 이건 진짜로 좋은 일이다. 전송 암호화는 공짜에 보편적이어야 한다, 이론의 여지 없이.
범죄자도 똑같은 혜택을 받았다. 도메인 검증(DV) 인증서는 딱 한 가지 — 요청자가 그 도메인을 통제한다는 것 — 를 증명하는데, paypa1-secure-login.com을 방금 등록한 피싱범은 그 도메인을 완벽하게 통제한다. 검증은 속은 게 아니다. 속일 게 없다. DV는 제 일을 완벽하게 하고 있었다. 그 일이 사이트가 사기인지와 아무 상관이 없을 뿐이다.
숫자가 곧바로 따라왔다. 2017년 초 Netcraft는 “PayPal”이 들어간 도메인에 발급된 Let’s Encrypt 인증서를 1만 4천 장 넘게 셌다 — 거의 전부 피싱이었다. 2020년 2분기가 되자 APWG 데이터에서 피싱 사이트의 약 80%가 HTTPS를 서빙했다. 2021년 1분기엔 83%였고 — 이 대목이 아프다 — 그건 연구자들이 2015년 추적을 시작한 이래 처음으로 그 수치가 정체된 시점이었다. 피싱이 덜 정교해져서 정체된 게 아니다. 더 오를 자리가 없어서 정체됐다. 거의 모든 피싱 사이트가 이미 자물쇠를 달고 있었다. 그 인증서의 열에 아홉가량이 도메인 검증 — 공짜에 즉시 발급되는 종류 — 이었다.
그래서 자물쇠는, 십 년간의 교육이 찾으라고 시킨 그것은, 이제 피싱 페이지에도 앉아 있었다. 신호는 단지 약해진 게 아니다. 보호하려던 바로 그 집단에 대해 뒤집혔다: 자물쇠가 안전을 뜻한다고 배운 비전문 사용자가, 이제 자신을 털도록 설계된 페이지에서 그 자물쇠를 보게 됐다.
대체 누구 잘못인가
쉬운 악당은 Let’s Encrypt이고, 그 쉬운 악당은 틀렸다.
Let’s Encrypt는 비판이 몰려오기 전에 이 문제를 공개적으로, 소리 내어 고민했다. 2015년, 프로덕션 인증서를 한 장도 발급하기 전에 Josh Aas는 입장을 정리한 글을 썼다: 인증기관은 피싱과 멀웨어와 싸우기에 나쁜 자리다. CA는 사이트가 실제로 뭘 서빙하는지 지속적으로 볼 수 없다 — 한순간의 도메인 통제 챌린지를 볼 뿐 그 뒤로는 아무것도 못 본다. 구글이나 마이크로소프트처럼 웹 전체를 끊임없이 크롤링하고 분류하는 조직은 그 가시성을 갖고 있고, 브라우저는 이미 Safe Browsing과 SmartScreen으로 그들의 판정을 실어 나른다. 그의 문장은 단호했다: 피싱과의 싸움은 중요하지만, 적어도 DV 인증서에 관한 한 CA가 최전선에 서는 건 말이 안 된다.
그들은 한동안 타협도 시도했다. 초기에 Let’s Encrypt는 발급 전 도메인을 Google Safe Browsing API로 확인했고, 이미 플래그된 도메인은 거절했다. 2019년 1월 그걸 중단했는데, 그 이유가 그들이 처음부터 옳았다는 가장 강력한 증거다: 도움이 안 됐다. Safe Browsing이 도메인을 플래그할 때쯤이면 인증서는 이미 발급된 뒤인 경우가 대부분이다 — 피싱 인프라는 빠르고, 발급은 즉시다. 발급 시점 검사는 거의 아무것도 못 잡으면서 비용과 “CA가 의미 있는 필터”라는 착각만 더했다. 인증서를 막아도 어차피 피싱 사이트가 내려가진 않는다. 그냥 맨 HTTP로 서빙하게 될 뿐, 그건 원래 시작점이다. 수고를 들여 사기를 한 칸 뒤로 물린 셈이다.
굳이 뭔가를 탓하고 싶다면, 자물쇠가 “안전”을 뜻한다고 사용자에게 십 년간 말해온 것을 탓하라. 그게 진짜 오류였다 — 공짜 인증서가 아니라 그걸 감싼 마케팅. 브라우저도 팔았다. Chrome은 수년간 자물쇠 옆에 “보안됨(Secure)“이라는 단어를 대놓고 찍었는데, “전송이 암호화됐다”에 붙일 수 있는 가장 오해를 부르는 한 단어일 것이다. 그들은 2018년 “Secure” 문구를 뺐고, 결국 2023년 자물쇠 자체를 중립적인 아이콘으로 교체했다. 그 심볼이 내내 사람들에게 틀린 교훈을 가르쳐 왔음을 조용히 인정한 것이다.
불편한 결론
무료 TLS는 피싱을 기술적으로 더 쉽게 만들지 않았다. 피싱은 애초에 암호화에 걸려 있던 적이 없다. 누군가 링크를 클릭하고 엉뚱한 칸에 비밀번호를 치는 데 걸려 있다. 무료 TLS가 한 일은 우연한 판별자 — 인증서의 비용 — 를 벗겨낸 것이다. 사용자와 교육자가 그 비용을 설계된 적 없는 신뢰 신호로 슬그머니 승격시켜 두었던 그 판별자를.
이건 곱씹을 가치가 있다. 같은 실수가 보안 곳곳에 있으니까. 우리는 부작용에 기댄다. 비싸거나, 드물거나, 수고가 드는 것이 “정상”의 대리 신호가 되고, 우리는 그 바탕 사실이 아니라 대리 신호 위에 습관과 조언을 쌓는다. 그러다 비용이 떨어진다 — 누군가 옳게도 좋은 것을 싸고 보편적으로 만들었기 때문에 — 그리고 옛 희소성 위에 세운 모든 습관이 조용히 무너진다.
자물쇠는 여전히 늘 뜻하던 그대로다: 연결이 암호화돼 있고 이름이 일치한다. 그건 정직함이 아니라 배관에 관한 진술이다. 무료 인증서의 교훈은 그걸 비싸게 유지했어야 한다는 게 아니다. 어떤 것의 가격을 그 본성의 증거로 착각하는 짓을 그만두라는 것 — 그리고 사용자에게도 그러라고 가르치는 걸 그만두라는 것이다.