# 20억 개 이메일 주소가 유출되었고, Have I Been Pwned에 모두 색인됨

> Clean Markdown view of GeekNews topic #24203. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=24203](https://news.hada.io/topic?id=24203)
- GeekNews Markdown: [https://news.hada.io/topic/24203.md](https://news.hada.io/topic/24203.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-11-07T13:33:23+09:00
- Updated: 2025-11-07T13:33:23+09:00
- Original source: [troyhunt.com](https://www.troyhunt.com/2-billion-email-addresses-were-exposed-and-we-indexed-them-all-in-have-i-been-pwned/)
- Points: 3
- Comments: 1

## Topic Body

- 총 **19억 5,747만 개의 고유 이메일 주소**와 **13억 개의 비밀번호**가 포함된 대규모 데이터 세트가 공개되어, Have I Been Pwned(HIBP)에 새로 추가됨  
- 이 중 **6억 2,500만 개 비밀번호는 이전에 한 번도 발견되지 않은 것**으로, HIBP가 처리한 데이터 중 가장 방대한 규모  
- 데이터는 **Synthient의 위협 인텔리전스 플랫폼**에서 수집된 자격 증명 채우기(credential stuffing) 자료로, 여러 침해 사고에서 유출된 이메일·비밀번호 조합이 포함됨  
- HIBP는 데이터의 진위를 검증하기 위해 구독자들에게 직접 확인을 요청했으며, 일부는 여전히 **실제 사용 중인 비밀번호**가 포함되어 있었음  
- 이번 색인은 **Gmail 유출이 아닌 악성코드 감염 피해자의 자격 증명 수집 결과**이며, 사용자들은 HIBP나 Pwned Passwords를 통해 노출 여부를 확인 가능  

---
### 데이터 개요
- 데이터 세트에는 **19억 5,747만 6,021개의 고유 이메일 주소**와 **13억 개의 비밀번호**가 포함됨  
  - 그중 **6억 2,500만 개 비밀번호는 HIBP에서 처음 발견된 항목**  
  - HIBP가 지금까지 처리한 데이터 중 **가장 큰 규모**로, 이전 최대 유출보다 약 3배 큼  
- 데이터는 **Synthient**가 수집한 위협 인텔리전스 자료의 일부로, **자격 증명 채우기 목록**을 포함  
  - 자격 증명 채우기 데이터는 여러 침해 사고에서 유출된 이메일·비밀번호 조합이 재활용되어 생성됨  
  - 동일한 비밀번호를 여러 사이트에서 사용하는 관행으로 인해, 한 번의 유출이 다른 서비스 계정 침해로 이어질 수 있음  

### 데이터 검증 과정
- 검증은 작성자의 **개인 이메일 주소**로 시작되었으며, 일부 오래된 비밀번호가 실제로 일치함  
  - 다른 비밀번호들은 익숙하지 않았고, 일부는 IP 주소 형태 등 비정상적인 값이 포함됨  
- HIBP 구독자들에게도 검증을 요청하여 여러 사례를 수집함  
  - 한 사용자는 오래된 비밀번호와 최근 비밀번호가 모두 포함되어 있었으며, 즉시 변경 조치를 취함  
  - 또 다른 사용자는 10~20년 전 사용한 비밀번호가 포함되어 있었음  
  - 일부 응답자는 여전히 **활성 계정에서 사용 중인 비밀번호**가 노출되어 있었음  
- 검증 결과, 데이터에는 **오래된 정보와 실제 사용 중인 비밀번호가 혼재**되어 있음  
  - 일부 항목은 자동 생성된 비밀번호이거나 오래되어 기억나지 않는 경우도 있었음  

### Pwned Passwords 검색 기능
- HIBP의 **Pwned Passwords 서비스**는 이메일 주소와 비밀번호를 분리하여 저장함  
  - 이는 보안 및 개인정보 보호를 위한 조치로, 이메일-비밀번호 쌍이 노출될 위험을 방지함  
- 사용자는 다음 방법으로 비밀번호 노출 여부를 확인 가능  
  1. [Pwned Passwords 검색 페이지](https://haveibeenpwned.com/Passwords) 이용  
  2. **k-anonymity API**를 통한 코드 기반 검색  
  3. **1Password Watchtower** 기능을 통한 자동 점검  
- 모든 4자리 PIN 조합이 이미 유출된 상태이며, HIBP 데이터 기반의 **PIN 사용 패턴 시각화 자료**도 존재함  

### Gmail 유출 아님
- 이번 사건은 **Gmail 보안 취약점과 무관**하며, 악성코드 감염으로 수집된 피해자 자격 증명 데이터임  
- 전체 데이터에는 **3,200만 개의 이메일 도메인**이 포함되어 있으며, 그중 **gmail.com은 3억 9,400만 개**  
  - Gmail 주소는 전체의 약 20%에 불과하며, 나머지 80%는 다른 도메인 소속  
  - Google의 보안 결함과는 관련 없음  

### 기술적 처리 과정
- 이번 데이터는 이전 최대 유출보다 약 **3배 큰 규모**로, 처리 과정이 매우 복잡함  
  - HIBP는 **Azure SQL Hyperscale(80코어)** 환경에서 약 2주간 데이터 처리 수행  
  - 이메일 주소의 **SHA1 해시 생성** 과정에서 대량 업데이트가 실패하여, **1백만 건 단위 배치 처리**로 전환  
- **5.9백만 명의 구독자 중 2.9백만 명**이 이번 데이터에 포함되어 있음  
  - 대량 이메일 발송 시 스팸 필터링 및 서버 제한을 피하기 위해 **점진적 발송 전략**을 채택  
  - 시간당 1.015배씩 증가하는 속도로 발송량을 조절, 하루 약 45%씩 증가  
  - DKIM, DMARC, SPF 설정 및 전용 IP 사용으로 신뢰도 유지  
- **Pwned Passwords API 응답 크기**는 평균 26KB에서 40KB로 증가  
  - 이는 해시 범위 크기가 약 50% 커졌기 때문이며, **brotli 압축**을 통해 효율 유지  

### 결론 및 권장 조치
- 이번 데이터는 HIBP에서 **“Synthient Credential Stuffing Threat Data”** 로 검색 가능  
  - 이전 Synthient 데이터와는 별개의 데이터 세트이며, 일부 중복 존재  
- HIBP는 데이터의 무결성을 검증하고, **개인정보 보호 중심의 검색 기능**을 제공  
- 사용자에게 권장되는 보안 조치  
  - **비밀번호 관리자 사용**  
  - **강력하고 고유한 비밀번호 생성**  
  - **패스키(passkey) 사용 및 다중 인증(MFA) 활성화**  
- HIBP는 이번 작업이 **매우 시간·비용이 많이 든 프로젝트**였음을 언급하며,  
  사용자들이 데이터 접근 요청 대신 **보안 습관 개선에 집중할 것**을 당부함

## Comments



### Comment 46035

- Author: neo
- Created: 2025-11-07T13:33:24+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=45839901) 
- 이제까지 너무 많은 **데이터 유출**이 있었음. 내 주소, SSN, 전화번호, 이메일 등 모든 정보가 여러 번 노출된 것 같음  
  대학, 구직 사이트, 소셜미디어 등에서 유출 통보를 받았고, 그 외에도 합법적인 **빅데이터 분석**으로 내 정보가 돌아다니고 있을 것임  
  지금은 Bitwarden에 강력한 비밀번호를 저장해 관리하고 있지만, 예전에 쓰던 오래된 계정들이 여전히 위험할 것 같음  
  솔직히 이제 와서 뭘 할 수 있을지 모르겠음. 내 정보가 이미 밖에 있다는 게 아쉬움
  - 각 계정마다 다른 이메일 별칭과 비밀번호 관리자를 사용함  
    여가 시간에 오래된 계정들을 정리 중임. 덕분에 스팸이나 유출 출처를 이메일 주소로 바로 파악할 수 있음  
    **Sieve 필터링**을 이용하면 훨씬 정교하게 분류 가능함. ‘envelope to’와 ‘header to’를 함께 쓰면 BCC나 별칭 메일도 정확히 걸러낼 수 있음  
    관련 문서: [RFC5228 Sieve Filtering](https://datatracker.ietf.org/doc/html/rfc5228)  
    예전엔 내 오래된 비밀번호가 포함된 스팸 메일 덕분에 잊고 있던 계정을 복구한 적도 있음
  - Bitwarden 정말 최고임. 개인적으로 주변에 추천 중인데, 반응은 미미함  
    아내는 이미 온라인 정보 보호는 **끝난 싸움**이라고 함. 어쩌면 맞는 말일지도 모름
  - 주소는 대부분 **공공기록**임. [fastpeoplesearch.com](https://www.fastpeoplesearch.com/) 같은 사이트에서 검색하면 바로 나옴  
    전화번호도 예전엔 전화번호부에 다 있었음. 여전히 공개 정보처럼 느껴짐
  - 나도 비슷한 상황임. 미국의 3대 신용평가사에 **신용동결**을 걸어두는 게 중요함  
    예전에 누군가 내 정보로 케이블 TV를 개통해서 신용기록에서 지우느라 고생했음
  - 군 복무 중이었는데, 중국이 내 **DNA 프로필**까지 훔쳐감. 이제는 그냥 체념했음

- Troy가 이제 DB 공간을 많이 절약할 수 있을 듯함  
  그냥  
  ```python
  def email_compromised(email):
      return True
  ```  
  이렇게 해도 될 정도로 모든 이메일이 털린 기분임
  - 꼭 그렇진 않음. 내 주요 이메일 두 개는 아직도 깨끗하게 나옴  
    대신 잡다한 용도의 이메일은 9번이나 유출 기록이 있음

- 이번 데이터에는 **Spotify의 미공개 유출 정보**가 포함된 것 같음  
  2020년 초에 약한 비밀번호로 된 내 Spotify 계정이 미국 IP에서 로그인된 적이 있었음  
  몇 시간 후 Spotify가 자동으로 비밀번호 재설정을 보냈지만, 공식적인 유출 통보는 없었음  
  이제야 그 이메일이 HIBP에 나타남
  - Spotify 같은 대형 회사라면 이런 유출을 **공식 보고**했어야 함

- Troy Hunt의 작업은 존경하지만, [Have I Been Pwned](https://haveibeenpwned.com/)에서 내 이메일을 검색해도 **실질적인 조치 방법**이 없음  
  사이트는 “위험하니 비밀번호를 잘 관리하라”는 메시지뿐임  
  500개 넘는 비밀번호를 전부 바꾸는 건 현실적으로 불가능함. 결국 Bitwarden, 1Password, Chrome 등 **비밀번호 관리자**에 의존해야 함
  - 각 사이트마다 **랜덤한 고유 비밀번호**를 써야 함  
    나도 예전엔 같은 비밀번호를 재사용했다가 모든 계정이 털린 적이 있음  
    지금은 비밀번호 관리자의 마스터 비밀번호, Gmail, 디스크 암호화용 비밀번호만 외우고 나머지는 전부 관리자가 생성함  
    가능한 곳엔 **2FA(U2F/WebAuthn)** 도 활성화함
  - 맞음. 결국 비밀번호 관리자가 핵심임
  - [HIBP Passwords](https://haveibeenpwned.com/Passwords) 페이지에서 비밀번호를 직접 입력해 유출 여부를 안전하게 확인할 수 있음  
    1Password도 같은 방식으로 작동하며, 계정명은 저장하지 않아 새로운 유출 위험이 없음
  - 이번 데이터셋은 여러 유출을 **통합한 집합 데이터**라 출처를 알 수 없음
  - 예전에 HIBP 알림을 받고 사용자 비밀번호를 즉시 초기화한 적이 있음  
    하지만 대부분은 이미 예전 유출에서 나온 비밀번호라, 불필요한 조치를 피하려고 함

- 여러 **커스텀 이메일 주소**를 쓰다 보니 HIBP에서 확인하려면 유료 구독이 필요함  
  수백 개의 이메일을 운영 중이라 불편함. 그래도 각 사이트별로 고유 주소를 쓰는 건 여전히 가치 있음
  - 예전엔 **도메인 검색 기능**이 무료였음. 2017년에 등록했는데 2020년, 2022년에 유출 알림을 받았음
  - 사실 별칭 이메일을 쓰면 유출 시점에 바로 알 수 있음. 이메일만으론 **신분 도용**은 어렵다는 점도 있음
  - 나도 같은 상황임. 비밀번호 관리자에서 모든 이메일을 추적하지만, HIBP에 하나씩 확인하는 건 번거로움
  - 그냥 모든 이메일이 이미 노출됐다고 가정하는 게 현실적임. 이메일은 비밀이 아님
  - 결국 **비밀번호가 진짜 비밀**임. 강력한 비밀번호만 유지하면 괜찮음

- 예전에 Facebook 유출로 내 오래된 이메일이 털렸는데, 그 도메인을 다른 사람이 재등록해서 **계정 탈취 시도**를 했음  
  다행히 2FA와 Facebook의 보안 경고 덕분에 막을 수 있었음  
  사용하지 않는 이메일 주소는 반드시 계정에서 삭제해야 함
  - 개인 도메인을 이메일로 쓰면 **평생 유지비**가 듦. 도메인을 놓치면 다른 사람이 사서 계정 복구를 시도할 수 있음  
    iCloud나 Gmail에서 커스텀 도메인을 쉽게 연결할 수 있게 되면서 이런 위험이 커졌음
  - 한 계정을 노리기 위해 그렇게까지 하는 게 놀라움
  - 그 사람이 굳이 돈을 내고 도메인을 사서 시도했다는 게 신기함. 유명인도 아닌데 말임

- Azure SQL Hyperscale을 80코어로 2주간 돌렸다는 부분이 흥미로움  
  이메일과 비밀번호만 관리하는데 SQL은 **과도한 선택**처럼 보임.  
  150억 건이라 해도 600GB 정도면 일반 서버로도 처리 가능할 것 같음
  - 실제로는 19억 개의 **SHA1 해시 업데이트**가 문제였다고 함  
    인플레이스 업데이트가 느려서 별도 테이블을 만들었고, 이메일 알림을 보낼 때는 **메일 제공자 제한**에도 걸렸다고 함
  - 나도 같은 생각임. Troy가 Microsoft와의 관계 덕분에 Azure를 쓴 듯함  
    “Microsoft Regional Director and MVP”라는 타이틀이 혼란스러움
  - Azure SQL은 확실히 잘못된 선택임. 단순히 해시 검색이라면 **이진 파일 기반 구조**가 훨씬 효율적임  
    SHA1 해시를 정렬한 20GB짜리 파일을 만들고, **바이너리 서치**나 해시 분포 기반 인덱스로 1회 I/O 조회가 가능함  
    65,536개 청크로 나눠 정렬하면 메모리 문제도 해결됨  
    이런 구조는 **Blob Storage**에서 Azure SQL보다 약 50배 저렴하게 운영 가능함

- HIBP 데이터에는 **만료 시점**이 있는 듯함. 예전엔 Dropbox 유출에 내 이메일이 포함됐는데 지금은 기록이 사라졌음  
  [Dropbox 유출 페이지](https://haveibeenpwned.com/breach/Dropbox)

- Bitwarden / 1Password / Proton Pass 중 어떤 게 좋은지 궁금함  
  Proton Pass는 아직 신뢰하기엔 이르고, “모든 걸 한 바구니에 담지 말라”는 말도 떠오름  
  오픈소스인 Bitwarden을 선택했는데, **무료 사용자 기반**이 커서 문제점이 빨리 드러나고 해결될 거라 기대함
  - 1Password를 사용 중인데 **UI와 기업 관리 기능**이 훨씬 편함  
    비즈니스 계정을 쓰면 가족용 계정이 무료로 제공되는 것도 장점임  
    다만 Bitwarden의 오픈소스 철학도 충분히 고려할 만함

- 이번 글의 제목은 “**13억 개의 비밀번호가 유출됨**”이 더 정확했을 것 같음  
  숫자는 조금 작지만 의미는 훨씬 큼
  - 실제 비밀번호 수는 아마 더 적을 것 같음 😉
