2024년 1월 9일, 미국 금융시장 감독기관인 증권거래위원회(SEC)의 공식 X 계정이 시장이 몇 달째 기다려온 결정, 곧 비트코인 ETF 승인을 발표했다. 몇 분 만에 비트코인은 개당 1,000달러 넘게 올랐다. 그러고 나서 SEC가 부인했다. 계정이 탈취당한 것이다. 시세는 2,000달러 넘게 되밀렸다.
이 사건이 시사적인 이유는 시장이 얼마나 크게 움직였느냐가 아니라, 사용된 수단이 얼마나 평범했느냐에 있다. 미국 법무부 발표에 따르면 26세의 에릭 카운슬 주니어는 휴대용 카드 프린터로 위조 신분증을 출력한 뒤 AT&T 매장에 들어가, 해당 계정에 연결된 전화번호를 자신이 관리하는 유심으로 옮기도록 직원을 설득했다. 그리고 비밀번호 재설정 코드를 문자로 받아 공범들에게 넘겼다. 2025년 5월 16일 그는 징역 14개월을 선고받았다.
한 가지 짚어둘 점이 있다. 사건의 독법을 바꾸지만 그 교훈을 약화시키지는 않는다. SEC의 공식 성명에 따르면 이 계정의 다중 인증은 2023년 7월, 담당 팀 자신의 요청으로 이미 해제되어 있었다. 즉 사건 당시 SMS는 두 번째 요소가 아니라 계정 복구 통로였다. 그리고 바로 그 점이 이 사례를 유용하게 만든다. 두 번째 요소든 뒷문이든, 사슬이 끊어지는 지점은 언제나 전화번호다.
두 번째 요소가 보장해야 하는 것
원리는 한 문장이면 충분하다. 비밀번호만 있으면 그것은 당신이 아는 것이고, 여기에 당신이 가진 것(전화기, 물리적 키)이나 당신 자신인 것(지문)이 더해진다. 유출된 데이터에서 당신의 비밀번호를 훔친 사람이 그것만으로 당신의 물리적 물건까지 갖게 되지는 않는다.
이 논리는 좀처럼 명시되지 않는 전제 위에 서 있다. 두 번째 요소가 실제로 당신이 소지한 물건에 묶여 있다는 것, 그리고 그것을 제시하는 행위가 당신이 어디에 접속하고 있는지에 관해 무언가를 증명한다는 것이다. SMS는 두 지점 모두에서 무너진다.
SMS는 소지 요소가 아니다
문자로 코드를 받는 일은 당신이 기기를 소지하고 있음을 증명하지 않는다. 통신사가 배정했고 그 통신사가 바꿀 수 있는 전화번호가 어떤 단말을 가리키고 있음을 증명할 뿐이다. 이는 같은 것이 아니다. 이 간극을 파고드는 경로는 셋이며, 각각 막는 방식이 다르다.
심 스와핑
SEC 사건에서 쓰인 공격이며, 어떤 기술적 취약점에도 기대지 않는다. 공격자는 표적의 개인정보를 모은다. 대개는 이미 공개된 유출 자료에서 구할 수 있다. 그런 다음 본인 행세를 하며 통신사에 연락한다. 휴대폰을 잃어버렸으니 번호를 새 유심으로 옮겨 달라고. 설득력이 있거나 직원이 공모하면 번호는 넘어가고, 모든 문자가 공격자에게 도착한다. FBI 신고 센터 IC3의 2024년 연차 보고서는 그해에만 심 스와핑 신고 982건과 약 2,600만 달러의 신고 피해액을 기록했는데, 이는 실제로 신고한 피해자만 센 수치다. 어떤 소프트웨어 업데이트도 이 경로를 막지 못한다. 겨냥하는 대상이 소프트웨어가 아니라 사람이 굴리는 업무 절차이기 때문이다.
SS7를 통한 가로채기
Signaling System 7은 전 세계 전화망이 서로 대화하게 해주는 프로토콜이다. 통화를 라우팅하고, 로밍을 처리하고, 문자를 한 통신사에서 다른 통신사로 전달한다. 설계된 해는 1975년, 통신사들의 모임이 닫혀 있고 수도 적어 서로를 구조적으로 신뢰할 만한 상대로 여기던 시절이다. 그래서 망과 망 사이에 어떤 기본 인증도 갖추고 있지 않다. 정당해 보이는 요청은 정당한 것으로 처리된다.
이는 이론적 약점이 아니다. 2014년 12월 독일 연구자 토비아스 엥겔과 카르스텐 놀이 카오스 커뮤니케이션 콩그레스에서 공개 시연했다. 전화번호 하나만으로 가입자의 위치를 찾고 그의 문자를 가로채는 것이다. 2017년에는 실제 악용이 확인됐다. 독일 통신사 O2-Telefónica는 공격자들이 해외 통신사 망에 접근한 뒤 문자 착신전환을 설정해 은행 확인 코드를 가로챈 결과, 일부 고객의 은행 계좌가 비워졌다고 인정했다.
실시간 피싱
세 번째 경로가 가장 중요하다. 어떤 통신망 결함에도 의존하지 않으며, 앞의 두 경로에서 고칠 수 있는 모든 것을 견뎌내기 때문이다.
가짜 사이트가 어떤 서비스의 로그인 페이지를 완벽하게 흉내 낸다. 당신은 거기에 아이디와 비밀번호를 입력하고, 가짜 사이트는 그것을 즉시 진짜 사이트로 넘긴다. 진짜 사이트는 당신의 전화로 문자를 보낸다. 문자는 실제로 당신에게 도착하고, 진짜다. 당신이 가짜 사이트에 코드를 입력하면 가짜 사이트는 몇 초 만에 그것을 다시 넘긴다. 세션이 열리고, 그것을 쥔 쪽은 공격자다.
이를 adversary-in-the-middle 공격이라 부른다. 이미 산업화되어 있다. 2017년에 등장한 리버스 프록시 Evilginx 같은 도구나 월 구독으로 팔리는 키트가, 별다른 기술 없이도 이를 가능하게 만든다. 게다가 도둑맞는 것은 코드만이 아니다. 세션 쿠키가 함께 넘어가고, 이후로는 어떤 인증도 다시 거치지 않고 로그인 상태를 유지할 수 있다.
문제는 구조에 있다. 문자로 보내진 코드에는 그것을 요청한 사이트에 관한 정보가 전혀 담겨 있지 않다. 따라서 진짜와 가짜를 구별할 수 없다. 입력하는 곳이면 어디서든 유효하다.
이제 이것은 의견이 아니라 공식 입장이다
SMS에 반대하는 가장 강력한 근거는 솔루션 공급업체가 아니라 표준을 쓰는 기관에서 나온다.
2025년 7월 미국 NIST는 SP 800-63B-4 『Digital Identity Guidelines: Authentication and Authenticator Management』의 최종본을 공개했다. 이 문서는 제한된 인증수단이라는 범주를 명시적으로 신설한다. 위협이 진화하면서 저항 능력이 떨어진 방식들에 배정된 범주다. 3.1.3.3절은 공중교환전화망의 사용, 즉 문자나 음성 통화로 보내는 코드를 여기에 넣는다. 「Use of the PSTN for out-of-band verification is restricted as described in this section and SHALL satisfy the requirements of Sec. 3.2.9.」 구체적으로, 여전히 이를 쓰는 서비스는 제한되지 않은 대안을 제공하고, 이용자에게 위험을 알리며, 이전 계획을 갖추어야 한다.
그보다 앞선 2024년 12월, 미국 사이버보안 기관 CISA는 『Mobile Communications Best Practice Guidance』를 발표했다. 중국 국가와 연계된 행위자들이 여러 미국 통신사에 침투한 솔트 타이푼 첩보 작전 이후의 일이다. 표현에는 해석의 여지가 없다. 「Do not use SMS as a second factor for authentication. SMS messages are not encrypted」, 그리고 조금 뒤에 에두르지 않고 「Only FIDO authentication is phishing-resistant.」 문서는 Yubico와 Google Titan을 지목하며 FIDO 하드웨어 키를 명확히 권고하고, FIDO를 켠 뒤에는 반드시 SMS를 꺼야 하며 그러지 않으면 악용 가능한 대체 경로로 남는다고 못 박는다.
인증 앱: 실질적 진전이되 부분적인 해법
Time-based One-Time Password의 약자인 TOTP 앱은 30초마다 바뀌는 여섯 자리 코드를 만든다. 활성화 때 공유한 비밀과 현재 시각을 바탕으로 기기 안에서 계산된다. 전화망을 지나는 것은 아무것도 없다.
이점은 즉각적이다. 번호가 더는 개입하지 않으므로 심 스와핑은 무력해지고, 어떤 메시지도 운반되지 않으므로 SS7 가로채기 역시 마찬가지다. 그 이상으로 나아갈 수 없는 계정이라면 인증 앱으로 옮길 가치가 있다.
그러나 세 번째 경로는 고스란히 남는다. 가짜 사이트에 입력한 TOTP 코드는 문자 코드와 똑같이 진짜 사이트로 넘어간다. 앱은 당신이 어디에 접속하는지 알지 못한다. 숫자 하나를 표시할 뿐이며, 그 숫자는 30초의 창 안에 그것을 제시하는 누구에게나 유효하다. CISA도 같은 말을 한다. 인증 앱 코드는 SMS보다 낫지만 여전히 피싱에 취약하다.
TOTP는 정직한 중간 단계이지 종착점이 아니다.
FIDO2 키가 문제의 성격 자체를 바꾸는 이유
FIDO2/WebAuthn 하드웨어 키는 공격을 더 어렵게 만드는 데 그치지 않고, 그 기계적 가능성 자체를 없앤다.
어떤 서비스에 등록할 때 키는 그 서비스 전용의 암호 키 쌍을 생성한다. 공개 부분은 서비스로 가고, 비공개 부분은 결코 칩을 떠나지 않으며 내보낼 수도 읽을 수도 없다. 복제할 수 있는 공유 비밀도, 가로챌 여섯 자리 코드도 없다.
이어서 결정적인 장치가 온다. 오리진 결속이다. 로그인 시 브라우저는 화면에 떠 있는 페이지의 실제 도메인 이름을 키에 전달한다. 이 정보는 서명 대상 데이터에 포함되고 브라우저가 이를 강제한다. 페이지의 자바스크립트는 그것을 바꿀 수도 위조할 수도 없다.
FIDO2 키는 피싱의 성공을 더 어렵게 만들지 않는다. 피싱의 결과물을 쓸모없게 만든다.
adversary-in-the-middle 공격을 이번에는 키와 함께 다시 보자. 가짜 사이트는 완벽하고, 피해자는 아무것도 눈치채지 못한 채 키를 터치한다. 브라우저는 페이지의 실제 도메인, 즉 사기 사이트의 도메인을 전달한다. 키는 그 도메인에 해당하는 쌍이 없음을 확인하거나, 그 도메인 앞으로 서명해 진짜 서비스가 거부할 서명을 만들어낸다. 어느 쪽이든 공격자는 쓸 만한 것을 하나도 얻지 못한다.
성격의 차이는 여기에 있다. SMS나 TOTP에서 보안은 결국 이용자의 경계심에, 서두르고 있고 페이지도 평범해 보이는 순간에 주소창의 위조 도메인을 알아채는 능력에 달려 있다. FIDO2에서는 이 확인을 기계가 매번 수행하며, 누구의 주의력에도 기대지 않는다. 암호학적 강도보다 이 책임의 이전이 더 중요하다.
효과는 측정할 수 있다. 구글은 2017년 초부터 직원에게 키 사용을 의무화했고, 8만 5,000명이 넘는 규모에서 2018년에 계정 침해가 한 건도 기록되지 않았다고 밝혔다.
하드웨어 키의 현실적인 한계
이를 완벽한 것으로 내세우면 정직하지 못할뿐더러, 실제 판단을 준비하는 데도 쓸모가 없다.
비용은 있다. 모델에 따라 25~60유로 정도, 생체인식 버전은 더 비싸며, 여기에 두 배를 곱해야 한다.
진짜 위험은 분실이다. 중요한 계정에 키가 하나뿐인 것은 설계상의 오류다. 중요한 계정마다 두 개를 등록하고, 그중 하나는 다른 곳에, 가까운 사람에게 맡기거나 금고에 보관해야 한다. 두 번째 키는 편의가 아니라, 첫 번째 키를 불안 없이 쓸 수 있게 해주는 조건이다.
적용 범위는 불완전하다. 특히 유럽의 은행을 비롯한 많은 서비스가 아직 FIDO2를 지원하지 않는다. 아래의 우선순위가 필요한 이유다.
키는 도난당할 수 있다. 그래서 키에 PIN을 설정하거나 지문 방식 모델을 골라야 한다. 그러지 않으면 물건 하나만으로 주운 사람에게 충분하다.
대체 경로가 여전히 가장 약한 고리다. SMS를 끄지 않은 채 FIDO2를 켜는 것은 아무것도 지켜주지 못한다. 공격자는 그저 열린 채로 남은 길로 갈 뿐이다. 이전은 복구 옵션까지 포함해 옛 방식이 계정에서 삭제되었을 때 비로소 끝난다.
하드웨어로 보면, YubiKey 계열이 가장 넓은 프로토콜 범위를 아우르고, Google Titan은 더 저렴하지만 FIDO에 한정되며, Nitrokey와 SoloKeys는 펌웨어가 공개되어 감사 가능한 대안을 제시하고, Token2는 키보드가 아니라 키 본체에서 PIN을 입력하는 키패드 내장 모델을 만든다. FIDO2 인증을 받은 키들 사이에 나쁜 선택은 없다. 프로토콜은 같고 부수적인 용도만 다를 뿐이다.
전부 바꿀 수 없을 때 어디서부터 시작할까
이전 순서는 취향의 문제가 아니라 계정들 사이의 의존 관계에서 나온다.
- 먼저 주 메일함. 나머지 거의 전부의 재설정 링크가 여기로 온다. 이를 장악한 공격자는 다른 계정을 하나도 직접 공격하지 않고 차례로 가져간다. 이보다 먼저 지킬 가치가 있는 것은 없다.
- 비밀번호 관리자. 모든 접근의 첫 번째 요소를 모아 두고 있으므로, 그 보호 수준은 그 안에 담긴 가장 잘 보호된 계정과 같아야 한다. 마스터 비밀번호의 품질을 점검할 때이기도 하다. 이 주제는 엔트로피와 당신의 보안을 떠받치는 과학 글에서 자세히 다뤘다.
- 금융 계정과 암호화폐 플랫폼. 즉각적인 가치를 지닌 표적으로, 침해가 몇 분 만에 되돌릴 수 없는 손실로 바뀐다.
- 독자를 가진 소셜 계정. SEC 사건은 팔로워를 거느린 계정의 말이 어떤 무게를 갖는지 보여준다. 게다가 피해가 반드시 계정 주인에게만 가는 것도 아니다.
- 나머지는 미뤄도 된다. SMS 대신 TOTP 앱이면 충분하다. 포럼이나 스트리밍 서비스가 같은 수고를 정당화하지는 않는다.
아직 FIDO2를 지원하지 않는 계정이라면, 가능한 곳마다 TOTP로 옮기고, 통신사에 번호이동 잠금을 신청하라. 대부분의 통신사에서 무료 옵션이다.
이것이 Arpokrat의 접근에 대해 말해주는 것
이 글이 다루는 문제는, 어떤 식별자를 시스템의 한가운데에 놓았기 때문에만 존재한다. 전화번호는 신원 증명으로 설계된 적이 한 번도 없다. 습관이 쌓여 온라인 인증의 척추가 되었을 뿐이고, 위에서 설명한 세 공격은 모두 이 용도의 뒤바뀜을 파고든다.
Arpokrat Messenger 프로토콜의 설계를 이끈 것이 바로 이 논리다. 전화번호도, 이메일 주소도, 계정도 없다. 이용자는 자기 기기에 보관된 암호 키의 묶음으로 존재하고, 연결은 일회용 초대 링크를 통해 이루어진다. 논리는 FIDO2와 같되 한 단계 위다. 제3자가 보유하지 않은 것은 통신사를 겨냥한 사회공학으로도, 법적 요구로도 그에게서 빼낼 수 없다. 제로 지식 아키텍처와의 이 일관성은 지금 수집하고 나중에 복호화한다 글에서 풀어냈다.
비밀을 한 번도 드러내지 않고 서명하는 하드웨어 키는, 사실 오프라인 암호화폐 지갑의 작동 방식이기도 하다. 콜드 월렛 완전 가이드에서 자세히 다뤘듯이, 비밀 부분은 전용 물건 안에 두고 밖으로는 서명만 내보내는 것이다.
맺으며
SMS 2단계 인증이 잘못 설계된 것은 아니었다. 2010년대 초에 보편화될 무렵 그것은 비밀번호 단독에 비해 상당한 진전이었고, 대규모로 확산될 때 유일하게 중요한 장점을 갖추고 있었다. 모두가 이미 전화기를 갖고 있었다는 점이다.
문제는 발명이 아니라 생존이다. SS7 시연은 2014년, 은행권의 실제 악용은 2017년, 실시간 피싱의 산업화는 그 10년대의 끝으로 거슬러 올라간다. CISA는 2024년에 더는 쓰지 말라고 썼고, NIST는 2025년에 제한을 공식화했다. 결함이 대규모로 악용 가능해진 시점과 기관들이 그것을 문서로 남긴 시점 사이에는 대략 10년의 간격이 있다. 그리고 SMS는 여전히 대다수 일반 소비자 서비스의 기본 두 번째 요소로 남아 있다.
바로 그 간격이 이 글의 진짜 정보다. 보안 장치는 작동을 멈출 때 사라지는 것이 아니라, 그만큼 간편한 무언가가 자리를 대신할 때 사라지며, 그쪽이 훨씬 더 오래 걸린다. 그러므로 질문은 SMS를 버려야 하느냐가 아니다. 그건 이미 여러 해 전에 결론이 났다. 질문은 이것이다. 당신이 당연하게 여기는 다른 어떤 보호 장치가, 아직 아무도 적어두지 않았을 뿐 이미 같은 처지에 놓여 있는가.
출처
- 미국 법무부, Alabama Man Sentenced to 14 Months in Connection with Securities and Exchange Commission X Hack that Spiked Bitcoin Prices, 2025년 5월 16일
- 증권거래위원회, SECGov X Account, 2024년 1월 22일 공식 성명
- NIST, SP 800-63B-4, Digital Identity Guidelines: Authentication and Authenticator Management, 2025년 7월 최종본
- CISA, Mobile Communications Best Practice Guidance, 2024년 12월 18일
- FBI Internet Crime Complaint Center, 2024 Internet Crime Report
- Threatpost, Cellular Privacy, SS7 Security Shattered at 31C3, 토비아스 엥겔과 카르스텐 놀의 시연, 2014년 12월
- Help Net Security, Attackers exploited SS7 flaws to empty Germans’ bank accounts, 2017년 5월
- Krebs on Security, Google: Security Keys Neutralized Employee Phishing, 2018년 7월
- W3C, Web Authentication: An API for accessing Public Key Credentials, WebAuthn 명세
