단어 조합 vs 무작위 문자, 어느 쪽을 써야 할까
단어 조합 비밀번호는 서로 무관한 단어 여러 개를 이어 붙인 것입니다 — sapling-sierra-cliff-dapper-widget-53. 무작위 비밀번호는 아무 구조도 없는 문자열입니다. 둘 다 강할 수 있습니다. 실패하는 방식이 다르고, 고를 때 기준이 되어야 할 건 바로 그 차이입니다.
강도 비교, 솔직하게
엔트로피는 후보 집합의 크기와 뽑는 횟수에서 나옵니다. 약 700개 목록에서 무작위로 뽑은 단어 하나는 약 9.4비트, 70종 문자 집합에서 뽑은 글자 하나는 약 6.1비트입니다. 그래서 여섯 단어는 약 57비트이고, 두 자리 숫자를 붙이면 약 63비트가 됩니다. 무작위 20자는 약 122비트입니다.
숫자만 보면 무작위 쪽이 크게 앞섭니다. 하지만 실제로는 둘 다 누가 맞힐 수 있는 영역을 한참 넘어서 있어서, 숫자가 이야기의 전부는 아닙니다.
비트가 낮아도 더 안전할 수 있는 이유
강한 비밀번호의 현실적인 실패는 누가 맞혀서가 아닙니다. 외우지 못해서 메모지에 적었거나, 이미 아는 걸 재사용했거나, 다음번엔 불편해서 더 약한 걸 골랐기 때문입니다. 실제로 떠올릴 수 있는 비밀번호는 이 셋을 한꺼번에 없앱니다.
63비트는 약한 비밀번호가 아닙니다. 횟수 제한과 잠금이 있는 온라인 로그인 앞에서는 손댈 수 없는 수준이고, 유출된 데이터베이스를 오프라인으로 공격해도 만만치 않은 작업량입니다. 63과 122의 차이는 어느 쪽도 현실적으로 뚫리지 않는 상황에서만 의미가 있습니다.
단어 조합이 실패하는 지점
- 길이 제한. 여섯 단어면 30자 남짓입니다. 16자로 자르는 사이트는 받아주지 않습니다.
- 문자 종류 요구. 대문자·숫자·기호를 반드시 요구하는 사이트가 많습니다. 구분자와 끝의 숫자가 일부는 메워 주지만 전부는 아닙니다.
- 직접 고른 단어. 내가 떠올린 문구는 무작위가 아닙니다. 노래 가사, 속담, 이름+연도 조합은 크래킹 사전에 그대로 들어 있는 것들입니다. 단어는 생성기가 뽑아야 합니다.
- TV 리모컨으로 입력하기. 방향키로 긴 문자열을 넣는 건 고역입니다. 무작위 문자가 더 나쁘긴 하지만, 짧은 PIN 이나 짧은 무작위가 나을 수 있습니다.
무작위 문자가 실패하는 지점
- 눈으로 읽어 옮겨야 할 때. 무작위 20자를 다른 기기에 눈으로 옮기는 순간
l,I,1,O,0이 진짜 오류를 만듭니다. 헷갈리는 글자를 빼면 대부분 사라집니다. - 외울 수 없다는 것. 비밀번호 관리자가 들고 있으면 문제가 아니지만, 그 관리자의 마스터 비밀번호이거나 휴대폰 잠금이거나 아직 설정하지 않은 기기에서 들어가야 할 계정이라면 문제가 됩니다.
계정별로 고르기
- 비밀번호 관리자가 들고 있을 것: 무작위 16~20자. 직접 입력할 일이 없으니 외우기 쉬움과 강도를 맞바꿀 이유가 없습니다.
- 머리로 알고 있어야 하는 몇 개: 단어 조합. 기기 잠금, 비밀번호 관리자의 마스터 비밀번호, 빌린 컴퓨터에서도 들어가야 하는 주 메일 계정.
- 와이파이: 단어 조합이 잘 맞습니다. 손님에게 소리 내어 불러주고 TV·콘솔에 입력하게 됩니다. 단어는 그걸 견디고 무작위 문자는 못 견딥니다.
- 규칙이 엄한 사이트: 무작위, 그 규칙을 프리셋으로 저장.
선택보다 더 중요한 두 가지
어느 쪽이든 여러 사이트에 돌려쓰지 마세요. 그리고 재사용할 수도 있는 시드에서 파생한 값을 주는 생성기는 피하세요. 생성된 비밀번호는 그 뒤에 있는 난수원만큼만 예측 불가능합니다 — 시계로 시드를 준 셔플이 아니라 플랫폼의 암호학적 난수 생성기여야 합니다.
Lockmint
Lockmint 는 한 화면에서 둘 다 만듭니다. 권장 프리셋은 무작위 문자를, '외우기 쉬움'은 오프라인 단어장에서 여섯 단어를 뽑아 원하는 구분자와 선택적인 끝 숫자를 붙여 줍니다. 결과마다 강도를 비트와 함께 평이한 문장으로 보여주어, 무엇을 맞바꾸는 중인지 짐작이 아니라 눈으로 확인할 수 있습니다.