암호(비밀번호)
암호 개요
암호(비밀번호)는 디지털 세상에서 나의 정체성을 증명하는 가장 기본적인 수단입니다. 계좌에 접근하고, 이메일을 읽고, 소셜 미디어를 사용하는 모든 순간에 암호가 관여합니다. 강력한 암호 관리는 프라이버시와 보안의 첫 번째 방어선이며, 모든 다른 보안 조치의 기반이 됩니다.
강력한 암호를 만드는 법
강력한 암호는 추측하거나 무차별 대입 공격(Brute Force Attack)으로 뚫기 어려운 암호입니다. 일반적으로 12자 이상의 길이에, 대소문자, 숫자, 특수문자가 섞여 있는 무작위 조합을 권장하고 각 계정마다 고유한 암호를 사용해야 하며, 개인 정보(생일, 이름 등)와 관련 없는 무작위성을 가져야 합니다. 이는 필수원칙입니다.
최근 트렌드에 따르면 아래와 같이 길이가 긴 문장을 이용하는 것이 외우기도 쉽고 침입 가능성도 더 적다고 합니다. "Wl%Aght!^^Sec" 같은 복잡해 보이는 암호보다 "correct-horse-battery-staple-st.101" 같은 연관 없는 단어를 나열한 문장이 더 안전할 수 있습니다. 일반적으로 5단어로 구성된 이러한 '문장형 암호'는 대부분의 공격자를 방어할 수 있고, 6단어로 구성된 암호는 정보 기관의 표적 공격 등에도 버틸 수 있는 것으로 알려져 있습니다.
이 글을 읽고 계시는 분들은 한국어 화자이기 때문에, 키보드 자판에서 한/영키를 눌러 영문 입력 모드로 바꾼 후 아래와 같이 한글을 기준으로 문장을 구성하는 방법도 좋습니다. 이렇게 하면 많은 수의 사전 대입식 공격을 피할 수 있고, QWERT(각각 ㅃㅉㄸㄲㅆ)를 사용할 때 대문자가 자연스럽게 들어갑니다. 의도적으로 말이 안되는 문장을 사용하면 더 좋고, 특수문자와 숫자가 끼어있게 작성해서 사전 대입식 공격을 피합니다. 비밀번호엔 공백(스페이스 바)을 사용할 수 있다는 점도 알고 계시고요.
권장되는 암호 구성 예:
- (qorghkwja)tkdvnarnjs 10000dnjsrnjs((백화점)상품권 10000원권)
- rPtksrl xjalsjf TkdTkdqk2ro dkfmaekqek qlqj(계산기 터미널 쌍쌍바2개 아름답다 비버)
암호 재사용의 위험
같은 암호를 여러 사이트에서 사용하는 것은 매우 위험합니다. 한 사이트에서 데이터 유출이 발생하면, 공격자는 같은 암호로 다른 모든 계정을 시도할 것입니다. 이를 크리덴셜 스터핑(Credential Stuffing) 공격이라고 하며, 실제로 매우 흔하게 발생합니다.
예를 들어, 작은 쇼핑몰에서 데이터 유출이 발생했다고 가정해봅시다. 그곳에서 사용한 암호를 이메일이나 은행 계정에도 사용했다면, 공격자는 즉시 그 계정들을 탈취할 수 있습니다. 한 번의 유출이 모든 디지털 자산을 위험에 빠뜨릴 수 있습니다.
아니, 그래서는 비밀번호를 다 못외우잖아요!
맞습니다. 모든 사이트에 의미없는 문자열로 비밀번호를 모두 다르게 만든다면, 아마 모두 외우지 못할 것입니다. 물론, 같은 암호를 여러 사이트에서 사용하는 것보단, 각기 다른 암호를 종이에 적어서 지갑이나 금고 등 물리적으로 안전한 장소에 비밀번호를 넣어두는 것이 차라리 안전할 것입니다. 그러나 그렇게 하면 공격 표면이 증가하기도 하고, 실제로 실천하기에도 불편합니다. 모든 집에 금고가 있는 것도 아니며, 지갑이야 언제든 분실할 수 있기 때문입니다.
그렇다면 어떻게 이 '긴 암호'를 사용할 수 있을까요?
암호 관리자를 사용합니다
수십, 수백 개의 계정마다 다른 강력한 암호를 기억하는 것은 현실적으로 불가능합니다. 이것이 암호 관리자가 필요한 이유입니다.
암호 관리자는 모든 암호를 안전하게 암호화하여 저장하고, 하나의 마스터 암호만 기억하면 됩니다. 암호 관리자는 무작위 강력한 암호를 생성해주고, 자동으로 입력해주며, 유출된 암호를 알려주는 등 다양한 기능을 제공합니다. Bitwarden 같은 신뢰할 수 있는 암호 관리자를 사용하는 것이 중요합니다. 추천하는 비밀번호 관리자에 대한 자세한 정보를 확인해보세요.
제가 "사람이 아닌 기술을 신뢰하라"고 말씀드렸습니다. 기술적으로 신뢰할 수 있는 암호 관리자는 E2EE(종단간 암호화)를 적용하여 그들의 클라우드 서버 내에서도 원본 암호를 유추할 수 없게 통신됩니다. 각 단말(즉, 우리가 암호 관리자를 설치한 기기)에서만 해독되어 보이는 것이죠.
암호 관리자를 사용하면 공격 표면이 하나 늘어납니다. 모든 공격자에게 '암호 관리자'는 최대의 목표이기 때문입니다. 이 암호 관리자의 마스터 비밀번호만 알면 모든 계정의 비밀번호에 접근 가능하니까요. 따라서, 여러분은 암호 관리자의 마스터 암호를 굉장히 구체적이고 강력하게 설정하고, 가능한 경우 2FA를 활성화해야 합니다.
2단계 인증(2FA)을 활성화합니다
2단계 인증(Two-Factor Authentication)은 암호에 추가적인 보호층을 더합니다. 암호(내가 아는 것)와 함께 휴대폰(내가 가진 것) 또는 생체 정보(나)를 요구하여 보안을 강화합니다. 암호가 유출되더라도 두 번째 인증 요소 없이는 계정에 접근할 수 없습니다.
2FA에는 여러 방식이 있으며, 보안 수준과 편의성이 각각 다릅니다. 아래는 주요 2FA 방식들을 보안 수준 순으로 정리한 것입니다. 상황에 맞는 방식을 선택하되, 가능한 한 보안 수준이 높은 방식을 사용하는 것이 좋습니다.
1. SMS 2FA (가장 낮은 보안)
로그인 시 휴대폰 문자로 전송된 코드를 입력하는 방식입니다. 별도 앱 설치가 필요 없어 가장 접근하기 쉽지만, 보안 수준은 가장 낮습니다. 공격자가 통신사를 속여 번호를 다른 SIM 카드로 옮기는 SIM 스와핑 공격에 취약합니다.
또한 SMS는 암호화되지 않아 중간자 공격에도 노출될 수 있으며, 휴대폰 번호를 서비스에 제공해야 하므로 개인정보가 추가로 노출됩니다. SMS 2FA는 아예 없는 것보다는 낫지만, 다른 방식을 사용할 수 없을 때만 선택하는 것이 좋습니다. 가능하다면 더 안전한 방식으로 전환하는 것을 권장합니다.
2. 인증 앱 (TOTP)
Tofu, Ente Auth와 같은 TOTP 앱에서 30초마다 새로운 6자리 코드를 생성하는 방식입니다. TOTP(Time-based One-Time Password)는 네트워크 연결이 필요 없고, SMS보다 훨씬 안전합니다. 공격자가 통신사를 속이거나 문자를 가로챌 수 없기 때문입니다. 추천하는 2단계 인증 도구에 대한 자세한 정보를 확인해보세요.
다만 휴대폰을 분실하면 백업 코드가 없는 한 계정에 접근할 수 없으므로, 백업 코드를 안전한 곳에 보관해야 합니다. 또한 매번 6자리 코드를 입력해야 하므로 약간의 불편함이 있습니다. 그럼에도 불구하고 보안과 편의성의 균형이 좋아 가장 널리 권장되는 방식입니다.
3. 하드웨어 보안 키 (FIDO U2F - 가장 높은 보안)
YubiKey 같은 물리적 USB나 NFC 기기를 연결하고 탭하여 인증하는 방식입니다. FIDO U2F(Universal 2nd Factor) 표준을 사용하며, 피싱에 가장 강력하게 대응할 수 있습니다. 하드웨어 키는 도메인을 확인하므로 가짜 사이트에서는 절대 작동하지 않습니다.
물리적 기기이므로 원격으로 해킹할 수 없으며, 분실 위험을 대비해 여분의 키를 등록해두는 것이 좋습니다. 초기 비용이 들지만, 높은 보안이 필요한 계정(이메일, 암호 관리자, 금융 등)에는 가장 안전한 선택입니다.
그래서, 어떤 2FA 도구를 써야하나요?
이러한 2FA 도구들에 대한 구체적인 추천은 별도 페이지에 정리해두었습니다. 보안 수준이 낮고 별도의 도구가 필요하지 않은 SMS 2FA를 제외하고, TOTP 앱 또는 하드웨어 보안 키에 대해 정리해두었습니다.
일반 주의 사항
피싱 공격에 주의합니다
아무리 강력한 암호와 2FA를 사용해도, 피싱 공격에 속아 직접 입력하면 무용지물입니다. 피싱은 가짜 웹사이트나 이메일로 사용자를 속여 암호를 입력하게 만드는 공격입니다. URL을 항상 확인하고, 의심스러운 링크는 클릭하지 않으며, 예상치 못한 로그인 요청은 의심해야 합니다.
암호 관리자는 피싱 방지에도 도움이 됩니다. 암호 관리자는 저장된 URL과 현재 사이트의 URL이 정확히 일치할 때만 자동 입력을 하므로, 가짜 사이트에서는 작동하지 않습니다. 사람의 눈으로는 구분하기 어려운 가짜 도메인(예: gooogle.com)도 암호 관리자는 정확히 구분합니다.
암호 변경 정책
과거에는 정기적으로 암호를 변경하는 것이 권장되었지만, 최근 보안 전문가들은 다른 입장을 취합니다. 무의미한 정기 변경은 오히려 사용자가 약한 암호를 선택하거나 패턴을 만들게 유도합니다. 강력하고 고유한 암호를 사용한다면, 유출 의심이 있을 때만 변경하는 것이 더 합리적입니다.
오해하지 마세요. 암호가 유출되었거나 유출 가능성이 있을 때는 즉시 변경해야 합니다.
암호 복구 옵션을 안전하게 관리합니다
암호를 잊어버렸을 때를 대비한 복구 옵션도 보안 취약점이 될 수 있습니다. "어머니와 아버지가 처음으로 만난 장소"같은 보안 질문은 쉽게 추측되거나 SNS 등에서 발견될 수 있습니다. 복구 이메일이나 전화번호도 안전하게 보호되어야 하며, 가능하면 장황한 거짓 답변을 암호 관리자에 저장하는 것이 좋습니다.
백업 코드가 제공된다면 반드시 안전한 곳에 보관해야 합니다. 암호 관리자 자체의 마스터 암호를 잊어버리면 모든 것을 잃을 수 있으므로, 마스터 암호는 별도로 안전하게 기록해두는 것이 좋습니다. 그냥 모니터에 붙여두는 것보다, 물리적으로 안전한 장소(금고 등)에 보관하는 등의 조치가 낫습니다.
패스키 - 암호를 대체하는 미래
패스키(Passkey)는 암호를 완전히 대체할 수 있는 새로운 인증 방식입니다. 패스키는 100-1400바이트의 무작위 데이터로, 특정 웹사이트에 로그인하기 위해 기기에서 생성됩니다. 비밀번호나 PIN이 아니며, 물리적 보안 키도 아닌, 공개키 암호화를 기반으로 한 새로운 형태의 인증 정보입니다.
패스키를 생성하면 웹사이트에 등록되고 암호 관리자나 기기의 안전한 저장소에 보관됩니다. 로그인할 때 "패스키로 로그인" 옵션을 선택하고 기기 잠금 해제(생체 인증 또는 PIN)만 하면 접속됩니다. 복잡한 암호를 기억하거나 입력할 필요가 없어 매우 편리합니다.
왜 패스키가 더 안전한가?
패스키는 각 패스키가 생성된 도메인 이름을 기록하고 있습니다. 따라서 피싱 공격에 매우 강력하게 대응할 수 있습니다. 가짜 웹사이트(예: gooogle.com)로 유도되어도 브라우저가 정확한 도메인 일치를 확인하므로 패스키가 절대 전송되지 않습니다.
또한 패스키는 서버에 비밀 정보를 저장하지 않습니다. 공개키만 서버에 저장되고 비밀키는 사용자 기기에만 보관되므로, 서버가 해킹당해도 사용자 인증 정보가 유출되지 않습니다. 비밀번호 데이터베이스 유출 같은 대규모 보안 사고에도 안전합니다.
마지막으로, 패스키는 로그인 시 기기 잠금 해제(PIN이나 생체 인증)를 요구하므로 2단계 인증이 내장되어 있습니다. 별도의 2FA 설정 없이도 강력한 보안을 제공하며, 암호와 2FA를 따로 관리할 필요가 없어 편리합니다. 비밀번호보다 안전하면서도 사용하기 더 쉬운 것입니다.
패스키의 한계
패스키는 아직 모든 서비스에서 지원되지 않습니다. Apple, Google, Microsoft 등 주요 플랫폼이 패스키를 지원하고 있으며 점점 더 많은 서비스가 도입하고 있지만, 아직은 전환 기간입니다. 당분간은 패스키와 기존 암호를 함께 사용해야 할 것입니다.
또한 패스키를 저장한 암호 관리자가 침해되면 모든 패스키에 접근할 수 있습니다. 따라서 암호 관리자의 마스터 암호를 강력하게 설정하고 2FA를 활성화하는 것이 여전히 중요합니다. 기기 간 패스키 동기화도 아직 플랫폼마다 다르게 구현되어 있어, 완벽하게 매끄럽지는 않을 수 있습니다.
암호 관리의 기본 원칙을 이해했다면, 이제 실제로 암호 관리자를 설정하고 사용하는 방법을 알아볼 차례입니다. 또한 2단계 인증 설정, 패스키 사용, 유출된 암호 확인 등 구체적인 실천 방법도 중요합니다. 작은 변화부터 시작하여 점진적으로 암호 보안을 강화해보세요.
이 페이지는 EFF(전자 프론티어 재단)의 Guide to Common Types of Two-Factor Authentication on the Web(eff.org)와 What the !#@% is a Passkey?(eff.org)를 참고하였습니다.