비밀번호 재사용은 매우 문제적입니다. 사람들이 계정과 데이터에 관련된 위험을 모른다는 것은 슬픈 일입니다. 공격자들은 이전에 유출된 이메일 주소와 비밀번호를 사용하여 다른 웹사이트에 접근하려고 합니다. 랜덤 비밀번호를 생성하는 비밀번호 관리자는 이러한 공격에 대항하는 완벽한 대책으로, 각 웹사이트마다 랜덤 비밀번호를 생성해 줍니다. 하지만 오래된 비밀번호는 어떻게 해야 할까요? 저희는 방금 사용자가 haveibeenpwned.com의 도움으로 방대한 데이터베이스와 비밀번호를 비교할 수 있는 새로운 기능을 출시했습니다. 이 새로운 도구를 통해 거의 50억 개 계정의 데이터 집합에서 비밀번호를 확인할 수 있습니다.
Pwned Passwords 서비스는 NIST가 사용자가 제공한 비밀번호를 기존 데이터 유출과 비교하도록 구체적으로 권고한 후 2017년 8월에 만들어졌습니다. 이 조언의 근거와 애플리케이션이 이 데이터를 활용할 수 있는 방법에 대한 제안은 306 Million Freely Downloadable Pwned Passwords라는 블로그 게시물에 자세히 설명되어 있습니다. 2018년 2월에는 서비스의 두 번째 버전이 릴리스되어 5억 개 이상의 비밀번호가 포함되어 있으며, 각 비밀번호가 몇 번 노출되었는지에 대한 카운트도 있습니다.
작동 방식을 더 잘 이해할 수 있게 해주는 작은 동영상입니다. API는 분석 진행 상황을 보여줍니다. 무료 서비스인 만큼 우리는 속도를 제한하고 피해를 주지 않기 위해 1.5초당 한 번씩 요청을 제한합니다.
첫 번째 단계에서는 서버에서 비밀번호가 포함된 모든 비밀이 다운로드됩니다. 두 번째 단계에서는 각 비밀이 브라우저에서 해독된 후 비밀번호의 sha1 해시가 생성됩니다. Sha1 해시는 160비트 길이 (16진수로 40자)입니다. Sha1 해시는 접두사 (5개의 16진수 문자)와 접미사 (35개의 16진수 문자)로 나뉩니다. 접두사는 haveibeenpwned.com API로 전송되어 데이터베이스를 확인하고 접미사 목록을 반환합니다. 클라이언트는 받은 접미사 목록과 비밀번호의 접미사를 비교하여 비밀번호가 유출되었는지 여부를 표시합니다. 이는 비밀번호 (또는 약한 파생물)를 실제로 전송하지 않고도 비밀번호 데이터베이스를 조회할 수 있는 효율적인 방법으로, k-익명성으로 알려져 있습니다.