보안·2026-04-15·FunAppBox 편집팀

안전한 비밀번호 만드는 7가지 원칙 — 해킹 피해를 막는 법

암호학적 안전 난수, 비밀번호 길이·복잡도, 비밀번호 매니저 활용 등 실전 비밀번호 보안 가이드.

Have I Been Pwned 통계에 따르면 매년 수억 건의 비밀번호가 유출되고 있습니다. 이런 환경에서 본인의 계정을 지키려면 단순히 ‘복잡한 비밀번호’가 아니라 체계적인 비밀번호 전략이 필요합니다. 이 글에서는 보안 전문가들이 권장하는 7가지 실전 원칙을 정리하고, 비밀번호의 강도를 숫자로 계산하는 방법(엔트로피), 기억하기 쉬운 패스프레이즈 만드는 법, 비밀번호 관리자를 고르는 기준, 2단계 인증의 종류별 차이, 그리고 유출이 확인됐을 때 해야 할 일까지 함께 다룹니다.

원칙 1. 최소 12자 이상

해커의 무차별 대입 공격(Brute-force) 속도가 매년 빨라지고 있어, 과거 8자가 안전했다면 지금은 12자도 위태롭습니다. 가능하면 16자 이상을 권장합니다.

  • 8자 영문 대소문자+숫자: 약 218조 가지 → 빠른 해시라면 GPU 장비로 수 시간 내 크랙 가능
  • 12자 영문 대소문자+숫자+특수문자: 약 5×10²³ 가지 → 같은 조건에서도 수백만 년
  • 16자 모든 문자: 약 4×10³¹ 가지 → 사실상 무한대

길이가 한 글자 늘어날 때마다 경우의 수는 문자 종류 수만큼(62종이면 62배) 곱해집니다. 특수문자를 추가하는 것보다 길이를 4자 늘리는 쪽이 훨씬 효과가 큰 이유입니다. 자세한 계산은 아래 ‘비밀번호 강도 평가법’에서 다룹니다.

원칙 2. 사이트마다 다른 비밀번호 사용

한 사이트에서 비밀번호가 유출되면 그 비밀번호로 다른 모든 사이트에 로그인을 시도하는 크리덴셜 스터핑(Credential Stuffing)이 가장 흔한 해킹 패턴입니다. 절대로 비밀번호를 재사용하지 마세요.

‘기본 비밀번호 + 사이트 이름’처럼 규칙적으로 변형하는 방식도 안전하지 않습니다. 한 곳에서 ‘Sunny2024!naver’가 유출되면 공격자는 ‘Sunny2024!google’을 바로 시도합니다. 진짜 의미의 ‘다른 비밀번호’는 서로 아무 연관이 없는 무작위 문자열이어야 합니다.

원칙 3. 비밀번호 매니저 사용

모든 사이트에 다른 16자 비밀번호를 외울 수는 없습니다. 1Password, Bitwarden, Apple Keychain, Google Password Manager 같은 비밀번호 매니저를 사용하세요. 하나의 마스터 비밀번호만 외우면 됩니다.

Bitwarden은 오픈소스이며 개인용은 무료입니다. 부담 없이 시작할 수 있는 추천 매니저입니다.

비밀번호 관리자를 고르는 기준

  • 제로 지식(zero-knowledge) 구조: 저장된 데이터가 내 기기에서 암호화되어 서비스 회사조차 내용을 볼 수 없어야 합니다. 마스터 비밀번호를 서버로 보내지 않는지 확인하세요.
  • 독립적인 보안 감사: 외부 기관의 감사 보고서를 공개하는 서비스가 신뢰할 만합니다. 오픈소스라면 코드 자체를 검증받을 수 있습니다.
  • 기기 간 동기화와 브라우저 확장: 스마트폰과 PC에서 모두 쓸 수 있고, 로그인 창에서 자동으로 채워 주어야 실제로 쓰게 됩니다.
  • 유출 모니터링과 재사용 경고: 저장된 비밀번호 중 유출된 것, 다른 사이트와 같은 것을 알려 주는 기능이 있으면 점검이 쉽습니다.
  • 비상 접근과 내보내기: 마스터 비밀번호를 잊었을 때의 복구 키, 가족에게 넘길 수 있는 비상 접근, 다른 서비스로 옮길 수 있는 내보내기 기능을 확인하세요.

어떤 관리자를 쓰든 두 가지는 반드시 지켜야 합니다. 마스터 비밀번호는 아래에서 설명할 패스프레이즈 방식으로 길게 만들고, 관리자 계정 자체에 2단계 인증을 켜 두는 것입니다. 모든 열쇠가 든 금고이니 그 금고의 문은 가장 튼튼해야 합니다.

원칙 4. 2단계 인증(2FA) 활성화

비밀번호가 유출되어도 두 번째 인증 단계가 있으면 침입을 막을 수 있습니다. SMS보다 Authenticator 앱(Google Authenticator, Authy)이나 물리적 보안 키(YubiKey)가 안전합니다.

  • 가장 좋음: 하드웨어 보안키 (YubiKey, FIDO2)
  • 좋음: TOTP 앱 (Google Authenticator, Authy)
  • 보통: SMS 인증 (SIM swap 공격 위험)

2단계 인증 방식별 비교

방식장점약점피싱 저항
SMS·이메일 인증번호설정이 쉽고 별도 앱 불필요SIM 스와핑, 피싱 사이트에 번호 입력 시 탈취낮음
TOTP 앱 (Google Authenticator 등)오프라인 생성, 통신사 무관피싱 사이트에 코드 입력 시 탈취, 기기 분실 시 복구 번거로움중간
푸시 승인 (앱 알림에서 승인)편리함반복 알림에 지쳐 무심코 승인하는 공격에 취약중간
하드웨어 보안 키 (FIDO2, YubiKey 등)도메인을 검증해 피싱 사이트에서는 작동하지 않음구매 비용, 분실 대비 예비 키 필요매우 높음
패스키 (기기 생체인증)비밀번호 자체가 없고 피싱 저항지원 사이트가 아직 제한적매우 높음

SMS 인증이 가장 약한 이유는 두 가지입니다. 통신사를 속여 내 전화번호를 다른 SIM으로 옮기는 SIM 스와핑이 가능하고, 가짜 로그인 페이지가 비밀번호와 인증번호를 동시에 받아 실시간으로 진짜 사이트에 입력하는 중계 피싱에도 그대로 뚫립니다. TOTP 앱도 두 번째 약점은 공유합니다. 하드웨어 키와 패스키는 사이트의 도메인을 함께 검증하기 때문에 가짜 도메인에서는 인증 자체가 이루어지지 않습니다. 어떤 방식을 쓰든 백업 코드는 반드시 별도로 보관하세요. 기기를 잃었을 때 계정에 다시 들어갈 유일한 열쇠입니다.

원칙 5. 암호학적 안전 난수 사용

직접 만든 비밀번호는 패턴이 있기 마련입니다. 좋은 비밀번호는 완전히 무작위여야 합니다. Math.random() 같은 의사 난수 대신 Web Crypto API의 crypto.getRandomValues()로 생성된 비밀번호를 사용하세요.

FunAppBox의 비밀번호 생성기는 Web Crypto API 기반으로 암호학적으로 안전한 비밀번호를 즉시 생성해줍니다. 길이는 4자에서 64자까지 조절할 수 있고, 소문자·대문자·숫자·특수문자 네 종류를 켜고 끌 수 있습니다. 생성 과정은 전부 브라우저 안에서 이루어지며 어디에도 전송되지 않습니다.

원칙 6. 정기 점검 (Have I Been Pwned)

본인의 이메일·비밀번호가 유출된 적이 있는지 정기적으로 확인하세요. haveibeenpwned.com에서 이메일로 무료 조회 가능합니다. 유출된 비밀번호는 즉시 변경하세요.

유출이 확인됐을 때의 대응 순서

  1. 이메일 계정부터 확인합니다. 대부분의 서비스가 비밀번호 재설정 링크를 이메일로 보내므로, 이메일이 뚫리면 나머지 계정도 모두 위험합니다. 이메일 비밀번호를 먼저 바꾸고 2단계 인증을 켭니다.
  2. 유출된 사이트의 비밀번호를 바꿉니다. 새 비밀번호는 생성기로 만든 무작위 문자열로 정합니다.
  3. 같은 비밀번호를 쓴 곳을 전부 바꿉니다. 비밀번호 관리자의 재사용 검색 기능을 쓰면 빠릅니다. 기억이 나지 않으면 주요 계정(금융, 쇼핑, SNS)을 우선 점검합니다.
  4. 활성 세션과 연결된 앱을 정리합니다. 계정 설정에서 ‘모든 기기에서 로그아웃’을 실행하고, 낯선 기기나 모르는 서드파티 앱 연결을 해제합니다.
  5. 복구 정보를 확인합니다. 공격자가 복구 이메일이나 전화번호를 자기 것으로 바꿔 두었는지 확인합니다.
  6. 금융 계정은 거래 내역을 확인합니다. 모르는 결제나 이체가 있으면 즉시 금융사에 신고합니다.

원칙 7. 의심스러운 링크 클릭 금지 (피싱 방지)

아무리 강한 비밀번호라도 본인이 직접 가짜 사이트에 입력하면 무용지물입니다.

  • 이메일·문자의 링크를 클릭하기 전 URL을 확인 (특히 도메인 철자)
  • 은행·결제는 즐겨찾기 또는 직접 입력으로 접속
  • 비밀번호 매니저는 가짜 사이트에서 자동완성을 거부하므로 추가 보호 효과

피해야 할 비밀번호 패턴

  • 이름·생일·전화번호 (홍길동1985, 0101234)
  • 키보드 순서 (qwerty, 123456, asdf1234)
  • 사전에 있는 단어 + 숫자 (password123)
  • 사이트 이름이 들어간 비밀번호 (instagram_pw1)
  • 흔한 치환 (P@ssw0rd, l3tm31n)

이런 패턴이 위험한 이유는 공격자가 무작위로 시도하지 않기 때문입니다. 유출된 수십억 개의 실제 비밀번호 목록과 ‘a를 @로, o를 0으로’ 같은 치환 규칙, 뒤에 연도나 느낌표를 붙이는 습관까지 학습한 사전 공격 도구는 ‘P@ssw0rd2024!’ 같은 비밀번호를 겉보기 복잡도와 상관없이 순식간에 찾아냅니다.

비밀번호 강도 평가법

비밀번호의 안전성은 엔트로피(Entropy, bits)로 측정합니다. 각 문자당 가능한 경우의 수의 log₂값을 더한 값입니다.

  • 약함: 50 bits 미만 (즉시 크랙 가능)
  • 보통: 50~80 bits
  • 강함: 80~100 bits
  • 매우 강함: 100 bits 이상

예: 16자 영문대소문자+숫자+특수문자 = 약 103~105 bits → 매우 안전. (특수문자 26종을 쓰는 생성기 기준 약 103비트, 출력 가능한 ASCII 94종 기준 약 105비트)

엔트로피 계산 공식

무작위로 생성된 비밀번호의 엔트로피는 다음 식으로 구합니다.

엔트로피(bits) = 길이 × log₂(문자 종류 수)

문자 종류가 많을수록 한 글자가 담는 정보량(비트)이 커지고, 길이가 길수록 그 값이 여러 번 더해집니다. 문자 집합별로 한 글자가 담는 비트 수는 다음과 같습니다.

문자 집합종류 수글자당 비트
숫자만103.32
영문 소문자264.70
영문 대소문자525.70
영문 대소문자 + 숫자625.95
대소문자 + 숫자 + 특수문자 26종 (생성기 기본)886.46
출력 가능한 ASCII 전체946.55

FunAppBox 생성기가 쓰는 특수문자는 !@#$%^&*()_+-=[]{}|;:,.<>?의 26종이므로 네 종류를 모두 켜면 문자 집합은 88종, 글자당 약 6.46비트입니다. 이 값을 길이에 곱하면 아래처럼 됩니다.

비밀번호종류 수엔트로피경우의 수
6자리 숫자 (PIN)10약 20비트약 100만
8자 소문자26약 38비트약 2,090억
8자 대소문자+숫자62약 48비트약 218조
12자 대소문자+숫자62약 71비트약 3.2×10²¹
12자 네 종류 모두 (88종)88약 78비트약 2.2×10²³
16자 대소문자+숫자62약 95비트약 4.8×10²⁸
16자 네 종류 모두 (88종)88약 103비트약 1.3×10³¹
20자 네 종류 모두 (88종)88약 129비트약 7.8×10³⁸

표에서 보듯 16자 대소문자+숫자(약 95비트)가 12자 네 종류 모두(약 78비트)보다 훨씬 강합니다. 특수문자를 못 쓰는 사이트라면 길이를 늘리면 됩니다. 반대로 은행 앱의 6자리 숫자 PIN은 20비트 남짓이라 그 자체로는 매우 약하며, 입력 횟수 제한과 기기 인증이 함께 있어야만 의미가 있습니다.

크랙 시간을 감각적으로 이해하려면 공격 속도를 가정해야 합니다. 예를 들어 공격자가 초당 100억(10¹⁰) 번을 시도할 수 있다고 가정하면, 40비트는 약 2분, 50비트는 약 1.3일, 60비트는 약 3.7년, 70비트는 약 3,700년, 80비트는 약 380만 년이 걸립니다. 실제 속도는 사이트가 비밀번호를 어떤 해시 함수로 저장하는지에 따라 수천 배 이상 차이가 나는데, 사용자는 그것을 알 수 없으므로 가장 빠른 공격을 가정하고 여유 있게 80비트 이상을 목표로 삼는 것이 안전합니다.

한 가지 중요한 전제가 있습니다. 이 공식은 모든 글자가 무작위로 뽑혔을 때만 성립합니다. 사람이 만든 ‘P@ssw0rd’는 8자 88종으로 계산하면 52비트 같지만, 실제로는 사전 단어 하나에 흔한 치환 규칙을 적용한 것이라 공격자 입장에서 경우의 수는 수천 가지에 불과합니다. 강도 측정기가 초록색을 보여 주더라도 사람이 만든 비밀번호의 실제 엔트로피는 표시된 값보다 훨씬 낮다고 봐야 합니다.

외워야 하는 비밀번호는 패스프레이즈로

비밀번호 관리자의 마스터 비밀번호나 PC 로그인 비밀번호처럼 직접 외워야 하는 것은 무작위 문자열이 부담스럽습니다. 이럴 때는 패스프레이즈(passphrase), 즉 무작위로 고른 단어 여러 개를 이어 붙이는 방식이 좋습니다. 대표적인 방법인 다이스웨어(Diceware)는 주사위 다섯 개를 굴려 7,776개 단어 목록에서 한 단어를 고르는 식으로 무작위성을 확보합니다.

단어 하나의 엔트로피는 log₂(7776) ≈ 12.9비트입니다. 따라서 4단어면 약 52비트, 5단어면 약 65비트, 6단어면 약 78비트, 7단어면 약 90비트가 됩니다. ‘등불-바구니-외투-수레-창문-소금’처럼 여섯 단어를 이으면 무작위 12자 비밀번호와 비슷한 강도를 가지면서도 몇 번만 입력하면 외워집니다. 한국어 사용자라면 영어 단어 목록 대신 한글 단어를 로마자로 적거나, 한글 입력이 가능한 곳에서는 한글 그대로 써도 됩니다.

  • 단어는 내가 고르지 말고 무작위로 뽑습니다. 좋아하는 노래 가사나 명언은 공격자의 사전에도 들어 있습니다.
  • 최소 5단어, 중요한 계정은 6단어 이상을 권장합니다.
  • 단어 사이에 구분자(하이픈, 공백)를 넣으면 외우기와 입력이 쉬워지고 경우의 수도 조금 늘어납니다.
  • 패스프레이즈는 외워야 하는 소수의 계정에만 쓰고, 나머지는 관리자가 만든 무작위 비밀번호를 씁니다.

패스키(Passkey) — 미래의 표준

Apple, Google, Microsoft가 공동으로 추진하는 패스키는 비밀번호를 완전히 대체하는 새로운 인증 방식입니다. 기기의 생체인증으로 로그인하며 피싱이 불가능합니다. 점차 도입되고 있으니 패스키를 지원하는 사이트에서는 적극 활용하세요.

패스키는 공개키 암호 방식으로 작동합니다. 사이트에는 공개키만 저장되고 비밀키는 내 기기에서 나가지 않기 때문에, 사이트가 해킹되어도 내 로그인 정보가 유출되지 않습니다. 패스키는 Apple, Google, Microsoft 계정이나 비밀번호 관리자를 통해 기기 간에 동기화되므로 기기를 잃어도 다른 기기에서 복구할 수 있습니다. 다만 아직 모든 사이트가 지원하는 것은 아니므로, 당분간은 강한 비밀번호와 2단계 인증을 기본으로 두고 패스키를 지원하는 곳부터 하나씩 전환하는 것이 현실적입니다.

자주 묻는 질문

Q. 비밀번호를 3개월마다 바꿔야 하나요?

유출 정황이 없다면 주기적으로 바꿀 필요는 없습니다. 미국 NIST의 최신 디지털 신원 지침도 주기적 강제 변경을 권하지 않습니다. 강제로 바꾸게 하면 사람들은 끝의 숫자만 바꾸는 식으로 대응해 오히려 약해지기 때문입니다. 대신 길고 무작위인 비밀번호를 쓰고, 유출이 확인되면 그때 즉시 바꾸는 것이 원칙입니다.

Q. 특수문자를 꼭 넣어야 하나요?

길이가 더 중요합니다. 위 표에서 본 것처럼 16자 대소문자+숫자(약 95비트)가 12자 네 종류 모두(약 78비트)보다 강합니다. 사이트가 특수문자를 요구하면 넣되, 특수문자를 넣었다고 길이를 줄여도 된다고 생각하면 안 됩니다.

Q. 브라우저에 비밀번호를 저장하는 것은 안전한가요?

같은 비밀번호를 여러 곳에 쓰는 것보다는 훨씬 안전합니다. 다만 브라우저 프로필에 로그인한 상태로 PC를 다른 사람과 공유하거나, 운영체제 계정에 비밀번호가 없다면 저장된 비밀번호가 노출될 수 있습니다. 기기 잠금을 설정하고, 가능하면 전용 비밀번호 관리자로 옮기는 것을 권장합니다.

Q. 비밀번호 생성기가 만든 비밀번호는 어디에 저장되나요?

FunAppBox 생성기는 브라우저의 crypto.getRandomValues()로 기기 안에서 비밀번호를 만들고, 서버로 전송하거나 기록하지 않습니다. 화면의 ‘최근 생성’ 목록도 페이지를 벗어나면 사라집니다. 생성한 비밀번호는 바로 비밀번호 관리자에 저장해 두세요.

마치며

본인의 비밀번호가 약하다면 지금 당장 바꾸세요. FunAppBox의 비밀번호 생성기로 안전한 16자 비밀번호를 즉시 생성하고, 비밀번호 매니저에 저장하는 것을 권장합니다. 입력값은 어디에도 전송되지 않으니 안심하세요. 오늘 할 일을 세 가지로 줄이면 이렇습니다. 이메일 계정에 2단계 인증을 켜고, 비밀번호 관리자를 설치해 마스터 비밀번호를 패스프레이즈로 만들고, 가장 중요한 계정 세 곳의 비밀번호를 생성기로 새로 만드는 것입니다.

함께 읽으면 좋은 글

← 다른 글 더 보기