비밀번호 해싱: bcrypt, Argon2, PBKDF2
평문 저장이 위험한 이유와 솔트가 적용된 해싱이 비밀번호를 보호하는 방식을 배워보세요.
비밀번호 해싱: bcrypt, Argon2, PBKDF2은(는) CoddyKit의 무료 Cyber Security Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cyber Security Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
비밀번호를 평문으로 저장하면 안 되는 이유
비밀번호를 평문으로 저장하는 것은 치명적입니다. 데이터베이스가 한 번 침해되면 모든 계정이 노출되기 때문입니다. 비밀번호는 저장하기 전에 단방향 함수로 처리해야 하므로 데이터베이스에 접근하더라도 원래 비밀번호가 드러나지 않습니다.
해싱이란 무엇인가요
해시 함수는 길이에 관계없이 모든 입력을 고정된 길이의 출력으로 변환합니다. 같은 입력은 항상 같은 출력을 만들지만 해시에서 원래 입력을 복원할 수는 없습니다. 예로 SHA-256, bcrypt, Argon2가 있습니다.
비밀번호에 SHA-256을 사용하면 안 되는 이유
SHA-256과 같은 범용 해시 함수는 빠르게 동작하도록 설계되었습니다. 공격자는 GPU에서 초당 수십억 개의 SHA-256 해시를 계산할 수 있으므로 무차별 대입 해독이 가능해집니다.
비밀번호 해싱에는 느리고 비용이 큰 함수가 필요합니다.
솔팅
솔트는 해싱하기 전에 각 비밀번호에 추가하는 무작위 값입니다. 솔트는 같은 비밀번호를 사용하는 두 사용자의 해시를 서로 다르게 만들어 레인보 테이블 공격과 일괄 해독 공격을 방지합니다. 솔트는 해시와 함께 저장하며 비밀이 아닙니다.
# Conceptual salt example
hash = bcrypt("password" + random_salt)bcrypt
bcrypt는 1999년에 비밀번호 해싱을 위해 특별히 설계되었습니다. 해싱 속도를 얼마나 느리게 할지 제어하는 구성 가능한 비용 계수가 있습니다. 하드웨어가 발전하면 비용 계수를 높여 보안 수준을 유지하세요.
현재는 비용 계수 12가 일반적이며, 최신 CPU에서 해시 하나를 계산하는 데 약 250ms가 걸립니다.
PBKDF2
PBKDF2(비밀번호 기반 키 파생 함수 2)는 해시 함수(예: HMAC-SHA256)를 여러 번(반복) 적용합니다. 반복 횟수가 많을수록 속도가 느려지고 보안성이 높아집니다. NIST가 권장하며 Wi-Fi 비밀번호에 WPA2가 사용합니다.
Argon2
Argon2는 2015년 비밀번호 해싱 대회에서 우승했습니다. 현재의 표준입니다. 다음 항목을 구성할 수 있습니다.
- 시간 비용 — 반복 횟수
- 메모리 비용 — 필요한 RAM(GPU 가속을 제한함)
- 병렬성 — 스레드 수
대부분의 애플리케이션에는 Argon2id를 사용하세요.
레인보 테이블
레인보 테이블은 미리 계산해 둔 해시 → 평문 조회표입니다. 솔팅하지 않으면 해시를 가진 공격자가 조회표에서 즉시 찾아낼 수 있습니다. 솔팅을 적용하면 각 해시가 고유해지므로 레인보 테이블을 무용지물로 만들 수 있습니다.
비밀번호 해독 기법
일반적인 오프라인 해독 방식:
- 사전 공격 — 흔한 비밀번호와 변형을 시도함
- 무차별 대입 — 모든 문자 조합을 시도함
- 규칙 기반 공격 — 사전에 변형 규칙을 적용함(연도 추가, 첫 글자 대문자화, 리트 표기)
- 도구: Hashcat, John the Ripper
적절한 알고리즘 선택
새 애플리케이션에 권장하는 우선순위:
- Argon2id — GPU/ASIC 해독에 대한 저항성이 가장 높음
- bcrypt — 폭넓게 지원되며 검증된 기록을 보유함
- PBKDF2 — NIST가 승인했으며 일부 규정 준수 환경에서 필요함
사용하지 마세요: 비밀번호에 MD5, SHA-1 또는 솔트 없는 SHA-256 사용
검증 과정
사용자가 로그인할 때:
- 사용자에게 저장된 해시와 솔트를 가져옵니다
- 동일한 솔트와 알고리즘으로 제출된 비밀번호를 해시합니다
- 생성된 해시를 저장된 해시와 비교합니다(일정한 시간의 비교)
- 절대 복호화하지 않습니다 — 비교만 수행합니다
빠른 확인: 비밀번호 해싱
현재 모범 사례로 간주되며 Password Hashing Competition의 우승 알고리즘인 비밀번호 해시 알고리즘은 무엇입니까?
학습 내용 요약
비밀번호는 평문이 아니라 해시로 저장해야 합니다. SHA-256과 같은 빠른 알고리즘은 적합하지 않으므로 느린 비밀번호 해싱 함수를 사용해야 합니다. Argon2id(권장), bcrypt 또는 PBKDF2를 사용하십시오. 레인보 테이블 공격을 방지하려면 비밀번호마다 항상 무작위 솔트를 사용해야 합니다. 직접 암호화를 구현하지 말고 검증된 라이브러리를 사용하십시오.
자주 묻는 질문
“비밀번호 해싱: bcrypt, Argon2, PBKDF2” 강의는 무료인가요?
네 — “비밀번호 해싱: bcrypt, Argon2, PBKDF2” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cyber Security Academy 강의 전체를 잠금 해제할 수 있습니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“비밀번호 해싱: bcrypt, Argon2, PBKDF2”에서 뭘 배우나요?
평문 저장이 위험한 이유와 솔트가 적용된 해싱이 비밀번호를 보호하는 방식을 배워보세요. 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cyber Security Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cyber Security Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“비밀번호 해싱: bcrypt, Argon2, PBKDF2” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cyber Security Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cyber Security Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 비밀번호 강도와 정책
- 비밀번호 해싱: bcrypt, Argon2, PBKDF2
- 다중 요소 인증
- 자격 증명 대입과 비밀번호 스프레이