비밀번호 정책과 다중 요소 인증
강력한 비밀번호 요구 사항과 MFA 요소(알고 있는 것·가지고 있는 것·본인 자체)를 이해하고, 여러 요소를 계층적으로 적용하면 계정 탈취 위험이 크게 줄어드는 이유를 학습합니다.
비밀번호 정책과 다중 요소 인증은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
비밀번호: 가장 취약한 연결 고리
비밀번호는 가장 자주 침해되는 인증 수단임에도 여전히 가장 일반적인 인증 방식입니다. 공격자는 피싱, 자격 증명 대입(유출된 자격 증명을 재사용하는 방식), 무차별 대입 공격, 키로거를 통해 비밀번호를 탈취합니다. 공격자가 비밀번호를 들키지 않고 가로챌 수 있다면, '강력한' 비밀번호라도 보호 효과는 제한적입니다. 비밀번호 정책은 위험을 줄이기 위해 복잡성과 변경 주기에 대한 최소 요구 사항을 정하지만, 가장 효과적인 보안 개선 방법은 두 번째 요소를 추가하는 것입니다. 비밀번호를 알고 있는 것만으로는 더 이상 접근 권한을 얻기에 충분하지 않기 때문입니다.
비밀번호 복잡성 요구 사항
효과적인 비밀번호 복잡성 정책은 비밀번호를 해독하기 어렵게 만드는 최소 기준을 정의합니다. 전통적인 요구 사항에는 최소 길이(최소 12~16자, 복잡성보다 길이가 더 중요함), 필수 문자 유형(대문자, 소문자, 숫자, 기호), 흔한 비밀번호 사용 금지(비밀번호 사전), 비밀번호에 사용자 이름이나 조직 이름을 포함하지 않도록 하는 규칙이 있습니다. 2017년에 업데이트된 NIST SP 800-63B 지침은 임의적인 복잡성 규칙보다 길이를 우선하고, 잦은 변경을 요구하기보다 유출된 자격 증명 데이터베이스와 대조하여 비밀번호를 확인할 것을 권장합니다.
# Check if a password appears in known breach databases
# NIST recommends this approach vs forced periodic rotation
# Example: Using Have I Been Pwned (HIBP) API
# Hash the password first (k-anonymity model - sends only first 5 chars of SHA-1)
echo -n 'mysecretpassword' | sha1sum
# Returns: e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4 -
# Send first 5 chars to HIBP API:
# GET https://api.pwnedpasswords.com/range/E5E9F
# Response includes suffix of any matching hashes
# If found: this password is compromised - reject itNIST SP 800-63B의 최신 비밀번호 지침
NIST SP 800-63B(디지털 신원 지침)는 비밀번호 모범 사례를 크게 개정했습니다. 주요 업데이트는 다음과 같습니다. 침해의 증거가 없는 한 주기적인 변경을 요구하지 않습니다. 강제 변경은 사용자가 예측 가능한 변경을 하게 만들기 때문입니다(Password1! → Password2!). 비밀번호를 만들 때 유출 데이터베이스와 대조하여 확인하고 입력하는 동안 사용자가 비밀번호를 볼 수 있도록 합니다. 최대 64자의 긴 암호 문구를 허용합니다. 예측 가능한 패턴을 만드는 임의적인 복잡성 규칙을 제거합니다. 복잡성에만 의존하지 않고 무차별 대입 공격을 방지하기 위해 계정 잠금 또는 시도 횟수 제한을 구현합니다.
세 가지 인증 요소
인증은 세 가지 요소 유형 중 하나 이상을 사용합니다. 알고 있는 것(지식 요소): 비밀번호, PIN, 보안 질문, 암호 문구입니다. 가지고 있는 것(소유 요소): 물리적 토큰, 인증 앱이 설치된 스마트폰, 스마트 카드, 하드웨어 키(YubiKey)입니다. 자신인 것(고유 요소): 지문, 망막 스캔, 얼굴 인식, 음성 패턴, 행동 생체 정보입니다. 네 번째 범주인 있는 장소(위치)가 추가되기도 합니다. 두 개 이상의 범주에서 요소를 사용하는 것이 다중 요소 인증(MFA)입니다. 같은 범주에 속하는 두 요소(예: 비밀번호 두 개)를 사용하는 것은 MFA가 아닙니다.
MFA가 매우 효과적인 이유
다중 요소 인증(MFA)은 사용할 수 있는 보안 통제 중 가장 효과적인 방법 중 하나입니다. Microsoft의 연구에 따르면 MFA는 계정 탈취 공격의 99.9%를 차단합니다. 그 이유는 피싱이나 자격 증명 탈취로 공격자가 '알고 있는 것'(비밀번호)을 얻더라도, 일반적으로 두 번째 요소(스마트폰 일회용 코드나 하드웨어 키)까지 얻지는 못하기 때문입니다. 사용자의 비밀번호가 유출 데이터베이스에 공개되어 있더라도 MFA가 활성화되어 있으면 계정은 보호됩니다. MFA를 구현한 조직은 자격 증명 기반 계정 탈취가 관련된 침해 보고서에 거의 등장하지 않습니다.
SMS OTP와 그 취약점
SMS 일회용 비밀번호(OTP)는 가장 널리 배포된 MFA 방식으로, 문자 메시지로 전송되는 6자리 코드입니다. MFA를 사용하지 않는 것보다는 낫지만, 잘 알려진 취약점이 있습니다. SIM 교체 공격: 공격자가 피해자인 것처럼 이동통신사에 사칭하여 전화번호를 자신의 SIM으로 이전하고, 이후의 OTP 코드를 가로챕니다. SS7 프로토콜 취약점: 전화 네트워크의 신호 프로토콜에는 SMS를 가로챌 수 있는 알려진 결함이 있습니다. 실시간 피싱: 정교한 피싱 프록시가 OTP를 실시간으로 전달하여 이를 우회합니다. NIST SP 800-63B는 SMS OTP를 '제한된 인증자' 상태로 제한했습니다. 인증 앱이나 하드웨어 토큰을 사용하는 것이 선호됩니다.
TOTP: 시간 기반 일회용 비밀번호
TOTP(시간 기반 일회용 비밀번호)는 RFC 6238에서 표준화되었으며, 공유 비밀과 현재 시각으로 6자리 코드를 생성합니다. Google Authenticator, Authy, Microsoft Authenticator와 같은 앱은 TOTP를 구현합니다. 코드는 30초마다 바뀌며 한 번의 인증 시도에만 유효합니다. SMS OTP와 달리 TOTP는 전화 네트워크를 통과하지 않으므로 SIM 교체 및 SS7 공격에 영향을 받지 않습니다. 공유 비밀은 한 번(설정 중 QR 코드를 통해) 교환되고 인증 앱에 저장되므로, 코드를 생성하려면 등록된 기기에 물리적으로 접근해야 합니다.
# TOTP algorithm (RFC 6238) conceptual implementation
import hmac, hashlib, time, struct, base64
def totp(secret_b32, digits=6, interval=30):
# Decode the base32 secret
secret = base64.b32decode(secret_b32, True)
# Time counter: number of 30-second intervals since epoch
counter = int(time.time()) // interval
# HMAC-SHA1 of counter with secret
msg = struct.pack('>Q', counter)
digest = hmac.new(secret, msg, hashlib.sha1).digest()
# Dynamic truncation to get 6 digits
offset = digest[-1] & 0xf
code = struct.unpack('>I', digest[offset:offset+4])[0] & 0x7fffffff
return str(code % (10**digits)).zfill(digits)FIDO2 및 WebAuthn: 피싱에 강한 MFA
FIDO2(Fast Identity Online 2)와 웹 구현인 WebAuthn은 현재 사용할 수 있는 인증 표준 중 피싱에 가장 강한 방식입니다. FIDO2는 기기 수준에서 공개 키 암호화를 사용합니다. 인증자( YubiKey와 같은 하드웨어 키 또는 Windows Hello와 같은 기기 생체 인증)는 기기를 떠나지 않는 개인 키를 저장합니다. 인증은 특정 출처(웹사이트)에 암호학적으로绑定되므로 피싱의 영향을 받지 않습니다. 사용자가 가짜 사이트를 방문하도록 속더라도 출처가 일치하지 않아 인증 문제가 실패합니다. FIDO2는 높은 보안이 필요한 인증의 표준으로 여겨집니다.
하드웨어 토큰: HOTP와 스마트 카드
물리적 하드웨어 토큰은 스마트폰과 독립적으로 '가지고 있는 것'을 제공합니다. HOTP(HMAC 기반 OTP)는 RFC 4226에서 표준화되었으며, 카운터와 공유 비밀로 코드를 생성합니다. 버튼을 누를 때마다 카운터가 증가합니다. TOTP와 달리 HOTP 코드는 시간에 따라 만료되지 않지만 순서대로 사용해야 합니다. 스마트 카드(US 정부 직원이 사용하는 PIV 카드 등)는 변조 방지 하드웨어에 개인 키를 저장하고 잠금을 해제하려면 PIN이 필요하므로, '가지고 있는 것'(카드)과 '알고 있는 것'(PIN)을 결합합니다. 스마트 카드 인증은 높은 보안이 필요한 환경에서 권한이 높은 접근을 위한 표준입니다.
비밀번호 관리자: 사람의 문제 해결
비밀번호 관리자는 모든 사이트에 대해 고유하고 무작위적인 비밀번호를 생성하고 저장하여 비밀번호를 재사용하려는 사람의 경향을 해결합니다. 주 비밀번호로 모든 자격 증명이 들어 있는 암호화된 보관함의 잠금을 해제합니다. 기업용 비밀번호 관리자(1Password Teams, Bitwarden Business, CyberArk)는 중앙 집중식 정책 적용, 감사 로그, 안전한 공유, 긴급 접근과 같은 기능을 추가합니다. 보안 팀은 비밀번호 관리자 도입을 적극적으로 권장하거나 의무화해야 합니다. 보안(모든 곳에서 고유한 비밀번호 사용)과 사용 편의성(수십 개의 비밀번호를 기억할 필요가 없음)을 모두 향상시키는 보안 통제는 드물기 때문입니다. MFA와 함께 사용하면 비밀번호 관리자는 자격 증명 기반 계정 탈취를 크게 줄입니다.
계정 잠금 및 시도 횟수 제한
계정 잠금은 정의된 횟수만큼 로그인에 실패하면 계정을 비활성화하여 무차별 대입 공격을 방지합니다. 일반적인 정책은 3~10회 로그인 실패 후 계정을 잠그며, 잠금 기간은 일정 시간(30분)으로 정하는 방식부터 관리자가 잠금을 해제해야 하는 방식까지 다양합니다. 시도 횟수 제한은 더 완화된 대안입니다. 계정을 잠그는 대신 로그인 시도 사이의 지연 시간을 점진적으로 늘려, 잠금으로 인한 사용자 경험 저하 없이 무차별 대입 공격에 수분이 아니라 수년이 걸리게 합니다. 웹 애플리케이션은 자동화된 자격 증명 공격을 방지하기 위해 API 수준의 속도 제한과 계정 수준의 시도 횟수 제한을 모두 구현해야 합니다.
# Configure account lockout policy via Windows Group Policy
# Computer Configuration > Windows Settings > Security Settings
# > Account Policies > Account Lockout Policy
#
# Account lockout threshold: 5 invalid logon attempts
# Account lockout duration: 30 minutes
# Reset account lockout after: 30 minutes
# Linux PAM-based lockout (/etc/pam.d/common-auth)
# auth required pam_tally2.so deny=5 unlock_time=1800
# auth required pam_faillock.so preauth deny=5 unlock_time=1800빠른 확인
이 수업에서 다룬 CompTIA Security+(SY0-701) 개념에 대한 이해도를 확인해 보세요.
수업 요약
이 수업에서는 다음을 배웠습니다. NIST SP 800-63B는 복잡한 변경 정책보다 긴 암호 문구와 유출 여부 확인을 권장합니다. 세 가지 MFA 요소는 알고 있는 것, 가지고 있는 것, 자신인 것입니다. TOTP 앱은 SMS OTP보다 안전합니다. FIDO2/WebAuthn은 피싱에 강합니다. 계정 잠금은 무차별 대입 공격을 방지합니다. 다음에서는 생체 인증과 토큰 기반 인증을 살펴봅니다.
자주 묻는 질문
“비밀번호 정책과 다중 요소 인증” 강의는 무료인가요?
네 — “비밀번호 정책과 다중 요소 인증” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
“비밀번호 정책과 다중 요소 인증”에서 뭘 배우나요?
강력한 비밀번호 요구 사항과 MFA 요소(알고 있는 것·가지고 있는 것·본인 자체)를 이해하고, 여러 요소를 계층적으로 적용하면 계정 탈취 위험이 크게 줄어드는 이유를 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“비밀번호 정책과 다중 요소 인증” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.