대부분의 사람들은 비밀번호의 '강도'를 문자 종류의 다양성으로 판단합니다. 회원가입 폼은 복잡성이 곧 보안이라고 여기지만, 공격자들의 생각은 다릅니다. 복잡성만으로는 현대적인 위협 모델을 막을 수 없습니다. 그렇다면 진정으로 강력한 비밀번호란 무엇일까요? 먼저 일반 사용자가 실제로 직면하는 위협부터 살펴봐야 합니다.
비밀번호 복잡성은 핵심을 놓치고 있다
비밀번호 '강도'는 흔히 복잡성, 즉 기호·숫자·영문 대소문자 사용량으로 측정되는 무작위성의 함수로 정의됩니다. 하지만 몇 가지 문자를 추가한다고 해서 비밀번호가 의미 있게 강해지지는 않습니다. 입력창 옆에 뜨는 녹색 '강도' 게이지가 주는 착각에 속아선 안 됩니다. 복잡성은 무차별 대입(brute force) 공격의 난이도를 높일 뿐인데, 사실 이런 공격 자체가 드물기 때문입니다.
실제로 자격 증명 탈취는 대규모 데이터 유출이나 대형 조직의 해킹 사고를 통해 일어납니다. 공격자가 이미 평문 형태로 여러분의 비밀번호를 손에 넣었다면, 아무리 '강한' 비밀번호라도 소용이 없습니다.
고유한 비밀번호를 사용하세요
많은 사용자가 '크리덴셜 스터핑(credential stuffing)' 공격에 극도로 취약합니다. 이 공격은 유출된 계정 정보를 널리 쓰이는 플랫폼에 대량으로 시도하면서, 사람들이 비밀번호를 재사용하는 습관을 악용합니다. '약한' 비밀번호보다 훨씬 큰 위협인 셈입니다. 실제로 완전히 무작위적이고 초강력한 비밀번호 하나를 모든 사이트에 재사용한다면, 단 한 번의 유출만으로 모든 계정이 연쇄적으로 위험해집니다.
따라서 비밀번호 강도를 개별 속성이 아니라 인증 시스템 전체의 강도로 바라봐야 합니다. 현대의 비밀번호는 그 시스템의 일부이며, 그렇게 관리되어야 합니다. 고유한 비밀번호를 매번 만들어 기억하는 일은 비밀번호 관리자를 사용하면 훨씬 수월해집니다. 아직 사용하지 않았다면 오늘 시작해 보세요.
복잡성보다 길이가 더 중요합니다
오랫동안 우리는 복잡성이 비밀번호의 가장 중요한 요소라고 교육받아 왔습니다. 무차별 대입 공격이 드물다는 점을 감안하더라도, 복잡성은 그마저도 최선의 방어책이 아닙니다. 길이가 실제로 훨씬 더 중요합니다.
비밀번호 길이는 해킹 소요 시간과 지수 관계에 있습니다. 길이를 조금만 늘려도 해킹 시간이 기하급수적으로 늘어나는 반면, 복잡성은 해킹 시간과 거의 선형적인 관계에 불과합니다.
예를 들어 보겠습니다. 고성능 크래킹 장비는 *nRyU86)처럼 복잡해 보이는 8자리 비밀번호를 단 80분 만에 깰 수 있습니다. 그런데 같은 비밀번호에 대문자 한 글자만 추가해 길이를 늘리면 해킹 시간이 약 36시간으로 늘어나지만, 문자 하나를 기호로 바꾸는 것은 해킹 시간에 의미 있는 변화를 주지 못합니다.
길이의 지수적 효과를 극대화해 봅시다. 익숙한 사전 용어 네 개를 조합해 총 16자가 되는 '패스프레이즈(passphrase)'는 어떨까요? 사전 공격(무작위 조합 대신 알려진 단어 데이터베이스를 이용해 추측하는 공격)까지 감안하더라도, 이 비밀번호를 깨는 데는 무려 900억 년이 걸립니다.
복잡성은 잊으세요. 최고의 비밀번호는 사실 '패스프레이즈'입니다. 비슷한 강도의 복잡한 비밀번호는 도저히 외울 수 없지만, 우리 뇌는 우스꽝스러운 이야기와 기발한 이미지를 잘 기억합니다. 무작위로 생성된 문구에 터무니없이 생생한 이야기를 입히면 잊어버리기 오히려 어렵습니다.
단, 진정한 무작위성이 핵심입니다. 출생 월처럼 자신과 관련된 단어를 직접 고르면 패스프레이즈가 추측당하기 쉬워집니다. EFF의 'Password Dice' 같은 도구를 활용하면 안전하게 무작위 패스프레이즈를 생성할 수 있습니다.
모든 2단계 인증(2FA)을 활성화하세요
어떤 시스템이든 결국 유출될 수 있습니다. 비밀번호 강도만으로는 여러분을 지켜주지 못합니다. 그렇다면 어떻게 방어해야 할까요? 2단계 인증(2FA)이 추가적인 보안층을 제공합니다. 2FA는 두 종류의 자격 증명, 즉 알고 있는 것(비밀번호)과 가지고 있는 것(휴대폰 등)을 동시에 요구합니다. 대부분의 2FA 시스템에서 인증 코드는 원격 서버가 생성하며, 로그인 시점에 사용자에게 전송됩니다.
안타깝게도 공격자는 SIM 카드 복제를 통해 SMS 인증 코드를 비교적 쉽게 가로챌 수 있습니다. 이런 도청을 막으려면 Authy, Google Authenticator 같은 2FA 앱이나 1Password처럼 2FA를 지원하는 비밀번호 관리자를 이용해 모바일 기기에서 직접 코드를 생성하는 것이 좋습니다.
결론
개별 비밀번호의 '강도'는 본질과 거리가 먼 문제입니다. 더 중요한 것은 견고한 인증 시스템입니다. 유출과 데이터 탈취는 언제든 일어날 수 있으며, 고유한 비밀번호가 피해 확산을 막아줍니다. 여기에 2단계 인증까지 더하면 탈취된 자격 증명으로 인한 피해를 사실상 0으로 줄일 수 있습니다.