비밀번호와 엔트로피: 보안 이면의 과학

구식 비밀번호 규칙은 잊으세요. 섀넌의 엔트로피 이론, 그로버의 양자 위협, 그리고 접근을 보호하기 위한 진정한 OPSEC 팁을 알아보세요.

|

읽는 시간: 7 분

비밀번호와 엔트로피: 보안 이면의 과학

« 비밀번호는 8자 이상이어야 하며, 대문자, 소문자, 숫자 및 특수 문자를 포함해야 합니다. »

우리 모두 이 규칙을 알고 있습니다. 하지만 사이버 보안에서 이것은 “보안 극장(security theater)“이라고 불립니다. P@ssw0rd1!와 같은 비밀번호는 이러한 모든 규칙을 준수합니다. 그러나 이는 예측 가능한 치환을 거친 흔한 단어일 뿐이며, 크래킹 도구가 가장 먼저 시도하는 것이 바로 이런 형태입니다.

진정한 보안은 임의적인 시각적 규칙이 아니라 가차 없는 수학적 현실인 엔트로피(entropy)에 기반합니다.

클로드 섀넌에 따른 엔트로피

비밀번호의 강도를 이해하려면 정보 이론의 아버지인 클로드 섀넌을 살펴보아야 합니다. 엔트로피는 정보의 불확실성이나 예측 불가능성의 정도를 측정합니다.

비밀번호에 적용될 때 엔트로피는 비트(bits) 단위로 계산됩니다. 비트 수가 높을수록 컴퓨터가 비밀번호를 예측하기가 더 어려워집니다. 무작위로 생성된 비밀번호의 엔트로피(E)에 대한 단순화된 공식은 다음과 같습니다.

E = L × log2(R)

  • L은 비밀번호의 길이입니다.
  • R은 풀 크기(pool size)입니다 (소문자는 26, 대문자와 숫자를 포함하면 62, 출력 가능한 모든 기호를 포함하면 94). 저희 생성기의 네 가지 문자 종류를 합치면 91이 됩니다. 기호 종류가 29자이기 때문입니다.

풀 크기를 늘리면(기호 추가) 엔트로피가 증가하지만, 길이를 늘리면(문자 추가) 엔트로피가 훨씬 더 급격하게 증가합니다. 그러나 길이가 복잡성을 능가하려면 단 한 가지 조건이 있습니다. 비밀번호가 완전히 무작위로 생성되어야 한다는 것입니다.

무차별 대입(Brute Force) vs. 사전 공격(Dictionary Attack)

단어나 예측 가능한 구조를 사용하면 순수 길이의 법칙은 무너집니다.

해킹 소프트웨어는 모든 문자 조합을 하나씩 시도하지 않습니다(이를 무차별 대입(Brute Force)이라고 함). 그들은 과거 데이터 유출로 노출된 실제 비밀번호의 거대한 목록과, 흔히 쓰이는 단어 및 문구를 사용합니다. 이것이 사전 공격(Dictionary Attack)입니다.

비밀번호가 길더라도 사전의 단어나 예측 가능한 대체 문자로 구성되어 있다면, 실제 엔트로피는 이론적인 수학적 엔트로피보다 극적으로 낮아집니다.

아래 표는 하나의 규칙만 따릅니다. 초당 1000억 번의 시도로, 저희 생성기 페이지가 빠른 해시를 상대로 한 오프라인 공격에 가정하는 속도입니다. 시간은 평균값(전체 가능성의 절반)이며, 그 페이지와 같은 공식으로 내림 처리했습니다. 각 비밀번호에서 가장 빠른 경로는 굵게 표시했습니다.

비밀번호모든 문자가 무작위일 때의 엔트로피무차별 대입 (평균)사전 공격 (저희 추정치)
password12356비트 (11자, 소문자와 숫자)7일1초 미만
S3cr3t!9958비트 (9자, 네 종류 모두)24일1초 미만
correct horse battery staple133비트 (28자, 소문자와 공백)1조년 이상1분
gL7!pQ9z#vX278비트 (12자, 네 종류 모두)5.1만년지름길 없음

사전 공격 열은 추정치입니다. 공격자의 추측이 각 비밀번호의 구조를 따르고, 기본 단어가 가장 흔한 1,000개 단어 안에 있다고 가정합니다.

  • password123: 흔한 단어 하나와 숫자 세 개. 1,000 × 1,000, 약 100만 번의 추측입니다.
  • S3cr3t!99: 흔한 단어 하나를 대문자로 시작하거나 그대로 두고, 각 ’e’를 ‘3’으로 바꾸거나 그대로 둔 뒤, 임의의 세 글자 접미사를 붙인 형태입니다. 약 70억 번의 추측입니다.
  • correct horse battery staple: 흔한 단어 네 개. 이 문구를 유명하게 만든 xkcd 만화는 2,048개 단어 목록에서 고른 네 단어를 44비트로 계산합니다. 같은 속도라면 평균 88초이며, 내림하면 1분입니다.
  • gL7!pQ9z#vX2: 단어도 패턴도 없으므로 무차별 대입이 가장 빠른 경로입니다.

이 추정치는 공격자가 각 비밀번호를 모른다고 가정합니다. 이 글의 모든 비밀번호는 이제 공개되었으므로, 모두 사전에 포함된 것으로 봐야 합니다. 공개된 비밀번호는 더 이상 쓸 수 없는 비밀번호입니다.

Leetspeak의 환상과 변형 규칙

S3cr3t!99를 예로 들어보겠습니다. 시각적으로 이것은 복잡하고 강력해 보입니다. 그러나 이것은 단순히 사전 단어 “secret"에서 ’e’를 ‘3’으로 바꾸고 매우 일반적인 접미사(!99)를 추가한 것입니다. 이를 leetspeak(리트스피크)라고 합니다.

사전 공격에 대해 이 비밀번호는 길이로 짐작되는 24일이 아니라 1초도 채 버티지 못합니다. 최신 크래킹 소프트웨어(Hashcat 등)는 정적 단어 목록만 테스트하는 데 그치지 않고 자동으로 변형 규칙(mutation rules)을 적용합니다. 그들은 사전의 모든 단어를 가져와 가능한 모든 leetspeak 조합을 테스트하고, 대문자를 바꾸고, 연도나 기호를 추가합니다. Leetspeak는 잘못된 보안 감각을 제공합니다.

키보드 시프트 트릭 (Keyboard Shift)

기억하기 쉬운 문구를 복잡하게 만들기 위해 키보드 레이아웃 시프트 트릭을 사용하는 사람들이 있습니다. 예를 들어, my-cat과 같은 문구를 기억합니다. 하지만 타이핑할 때 운영 체제를 AZERTY(프랑스어)로 설정한 상태에서 물리적 QWERTY 키보드에 손가락을 올려놓습니다.

  • 생각한 단어: my-cat
  • 타이핑된 결과: ,y)cqt (’m’ 키는 ‘,‘가 되고, ‘-‘는 ‘)‘가 되며, ‘a’는 ‘q’가 됩니다).

OPSEC에서 좋은 아이디어입니까? 아니요, 이 방법을 단독으로 사용하면 충분하지 않습니다. leetspeak과 마찬가지로 키보드 레이아웃 시프트는 고정된 치환입니다. 이를 의심하는 공격자는 모든 추측에 같은 매핑을 적용합니다. OPSEC에서 이것은 모호함을 통한 보안(security by obscurity)입니다. 아마추어 공격자를 지연시킬 수는 있지만, 표적이 명확하고 장비를 갖춘 공격은 막지 못합니다.

이미 강력한 비밀번호(긴 무작위 패스프레이즈 등)와 결합해도 추가되는 것은 거의 없습니다. 공격자가 레이아웃 조합 1,000가지를 시도하더라도 log2(1,000) ≈ 9.97이므로 10비트도 늘지 않습니다. 강도는 여전히 그 아래의 패스프레이즈에서 나옵니다.

마스터 비밀번호 만들기 (~250 비트)

단어 목록, leetspeak 및 타이핑 트릭에 한계가 있다면 오래 버티는 마스터 비밀번호는 어떻게 만들까요? 저희 생성기는 이미 80비트를 “강력함”, 100비트를 “매우 강력함"으로 평가합니다. 수십 년 동안 쓸 마스터 비밀번호를 위해 이 글은 훨씬 높은 목표를 잡습니다: 약 250비트의 엔트로피입니다. 그 이유와 이 여유가 보장하지 않는 것은 아래 양자 섹션에서 설명합니다.

필요에 따라 이를 달성하는 두 가지 방법이 있습니다.

1. 무작위 문자 (비밀번호 관리자용)

기계가 이용할 패턴이 전혀 없도록 완전히 무작위로 생성한 문자열입니다. 8}8,_$-p)M&n,XvUCT0o+.5hDE6P^w6b@U-evS0 저희 생성기의 91개 문자에서 무작위로 뽑은 39자: ≈ 253비트. 이 글을 위해 뽑은 것이므로 이제 공개되었습니다. 절대 사용하지 마세요.

2. 무작위 패스프레이즈 (외워서 쓰는 비밀번호용)

무작위 단어는 무작위 문자보다 기억하기 쉽습니다. EFF 롱 워드 리스트의 7,776개 단어에서 뽑은 단어 하나는 약 12.9비트를 더하므로, 엔트로피는 단어 수가 결정합니다. 12개 단어는 ≈ 155비트로, 저희 생성기의 “매우 강력함” 기준을 훨씬 넘습니다. 일반 단어만으로는 20개가 되어야 250비트를 넘습니다.

저희 생성기는 최대 12개 단어까지만 만듭니다. 더 적은 단어로 250비트를 넘기려면 “각 단어 뒤 무작위 숫자"를 체크하고 구분자로 “숫자 + 기호"를 선택하세요. 그러면 11개 단어로 ≈ 260비트가 됩니다. depletion78$sporting14~overlap11>macaw86>paced95,paramedic41}blot41$flagstone07;uncanny92/broadways77#say2 이 글을 위해 정확히 위 설정으로 무작위로 뽑은 것입니다. 공개된 비밀번호는 더 이상 쓸 수 없는 비밀번호입니다. 이 예시도, 어디서 읽은 어떤 예시도 절대 사용하지 마세요. 무작위로 뽑은 것만 엔트로피에 들어갑니다. 모든 단어를 대문자로 시작해도 늘어나는 것은 없고, 직접 고른 단어는 무작위 단어보다 훨씬 약합니다.

양자 위협: 그로버 알고리즘 (Grover’s Algorithm)

128비트가 이미 오늘날의 슈퍼컴퓨터를 차단하는데 왜 250비트를 목표로 해야 할까요? 대답은 대규모 양자 컴퓨터가 등장할 가능성에 있습니다.

암호학에서 그로버 알고리즘을 사용하면 양자 컴퓨터가 고전 컴퓨터보다 훨씬 빠르게 정렬되지 않은 데이터베이스를 검색할 수 있습니다. 구체적으로, 그로버는 대칭 키 또는 비밀번호의 효과적인 보안 수준을 반으로 줄입니다.

그로버 알고리즘을 실행하는 양자 컴퓨터에 맞서 128비트의 엔트로피를 가진 비밀번호는 이론상 64비트에 해당하는 저항력만 제공합니다. 여유가 훨씬 줄어드는 것입니다.

엔트로피를 두 배로 늘리면 여유가 유지됩니다: 약 256비트라면 그로버 알고리즘에 맞서도 약 128비트가 남습니다. 이 글의 250비트 목표는 여기서 나옵니다. 이는 이 글이 선택한 예방 조치이며, 어떤 표준에서 가져온 수치가 아닙니다.

이 여유에도 한계가 있습니다. 그로버 알고리즘의 속도 향상은 제곱 수준이며, 무제한이 아닙니다. 각 단계마다 여전히 해당 사이트의 비밀번호 해시를 계산해야 하며, 그것도 이를 실행할 수 있을 만큼 큰 양자 컴퓨터에서 해야 합니다. 비교하자면, 저희 생성기 페이지가 가정하는 초당 1000억 번의 시도로도 100비트의 평균 탐색에는 이미 적어도 2000억년이 걸립니다.

이 논리는 Harvest Now, Decrypt Later (HNDL)과 비슷합니다: 도난당한 비밀번호 해시 데이터베이스는 오늘 보관해 두었다가 나중에 더 나은 기계로 공격할 수 있습니다. 더 큰 여유는 이에 맞서는 보안 수준을 끌어올립니다. 영구적인 보장은 아닙니다.

Arpokrat Password Generator: 직접 만들어 보세요

액세스 보안을 운에 맡기지 마세요. 저희 무료 생성기는 무작위 비밀번호와 패스프레이즈를 만듭니다. 각각에 대해 비트 단위의 엔트로피와 탐색에 걸리는 평균 시간을 보여 줍니다.

생성만 할 뿐, 이미 사용 중인 비밀번호를 평가하지는 않습니다. 위의 250비트 목표를 위해서는 네 종류의 문자를 모두 포함한 39자 비밀번호를 선택하세요. 생성기는 이를 “≈ 253비트"로 표시합니다.

👉 Arpokrat Password Generator

브라우저에서 실행됩니다. 생성된 내용은 절대 전송되거나 저장되지 않습니다.

마지막 약점: 재사용 및 액세스 관리

수학적 엔트로피는 인간의 실수로부터 보호하지 않습니다. 250비트 비밀번호도 한 번 유출되면 그 가치를 잃습니다. 여러 사이트에서 재사용하거나(Credential Stuffing이라는 공격), 이중 인증(2FA)으로 보호하지 않으면 마찬가지입니다.

디지털 위생의 황금률은 단 하나의 비밀번호, 즉 250비트 마스터 비밀번호(위에서 설명한 무작위 패스프레이즈)만 기억하면 된다는 것입니다. 다른 모든 액세스(은행, 소셜 네트워크, 서버)는 각각을 위해 특별히 생성된 고유한 무작위 비밀번호를 사용해야 합니다.

기억할 수 없는 이 모든 비밀번호를 저장하려면 비밀번호 관리자를 사용하세요. 기기에서 금고를 암호화한 뒤에 동기화하는 관리자를 고르세요. 이런 방식을 흔히 영지식(Zero-Knowledge)이라고 합니다. 가능하면 오픈소스이고 독립적인 감사를 받은 것으로 고르세요.