비밀번호 인증의 근본적인 문제
전통적인 비밀번호 인증이 서버 측 공격 표면을 만드는 이유와 이를 해결하는 프로토콜을 살펴봅니다.
비밀번호 인증의 근본적인 문제은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
전통적인 비밀번호 모델
전통적인 비밀번호 인증에서는 클라이언트가 비밀번호 또는 그 해시를 서버로 보내고, 서버는 이를 저장된 값과 비교합니다. 이 모델은 단순하지만 서버에 막대한 위험을 집중시킵니다. 데이터베이스가 침해되면 모든 사용자 자격 증명이 동시에 노출되기 때문입니다.
서버 침해와 해시 크래킹
공격자가 서버를 침해하여 비밀번호 데이터베이스를 훔치면 속도 제한 없이 GPU의 최대 속도로 오프라인 사전 공격을 수행할 수 있습니다. 최신 GPU는 bcrypt 또는 SHA-256 해시에 대해 초당 수십억 개의 비밀번호를 추측할 수 있으므로, 취약하거나 흔한 비밀번호는 쉽게 복구됩니다.
비밀번호 재사용이 침해 피해를 키우는 방식
연구 결과에 따르면 대다수 사용자는 여러 사이트에서 비밀번호를 재사용합니다. 따라서 한 서버가 침해되면 다른 서비스에서도 사용할 수 있는 자격 증명이 유출됩니다. 자격 증명 대입 공격은 유출된 사용자 이름과 비밀번호 쌍을 인기 웹사이트에 자동으로 대입하여 확인하므로, 한 번의 침해가 여러 침해로 이어지게 합니다.
피싱은 서버 측 보호 기능을 우회합니다
서버 측 비밀번호 강화(강력한 해시 처리, 솔트 추가, 요청 빈도 제한)는 피싱에 대한 보호 기능을 제공하지 않습니다. 사용자가 가짜 사이트에 비밀번호를 입력하면, 정식 서버가 비밀번호를 아무리 잘 저장하더라도 공격자는 평문 비밀번호를 직접 얻습니다. 오늘날 피싱은 가장 주된 자격 증명 탈취 수단입니다.
대규모 자격 증명 대입 공격
과거 침해 사고에서 유출된 수십억 개의 사용자 이름과 비밀번호 조합 데이터베이스를 다크 웹에서 공개적으로 구할 수 있습니다. 공격자는 자동화 도구를 사용해 이러한 자격 증명을 금융 기관, 전자 상거래 사이트, 이메일 제공업체에 대규모로 시험하며, 사용자가 이전에 유출된 비밀번호를 재사용한 경우에 성공합니다.
서버는 비밀번호를 알게 됩니다
기존 비밀번호 인증에서는 로그인 과정에서 서버가 사용자의 평문 비밀번호를 반드시 알게 됩니다(해시 처리하기 전 잠시 동안만이라도 그렇습니다). 따라서 모든 서버 운영자가 자격 증명을 오용하거나 기록하거나 실수로 노출하지 않을 것이라고 전적으로 신뢰해야 하지만, 실제로 이를 보장하기는 거의 어렵습니다.
우리가 실제로 원하는 것
이상적인 인증 프로토콜에서는 사용자가 비밀번호를 서버에 전혀 공개하지 않고도 비밀번호를 알고 있음을 증명할 수 있어야 합니다. 또한 서버가 정식 서버임을 증명해야 하며(상호 인증), 이를 통해 피싱을 방지해야 합니다. 서버 데이터베이스가 침해되더라도 공격자에게 유용한 정보가 전혀 드러나지 않아야 합니다.
인증에 적용한 영지식 증명
영지식 증명은 이를 위한 이론적 체계를 제공합니다. 증명자는 비밀 자체를 공개하지 않고도 검증자에게 비밀이 유효함을 납득시킬 수 있습니다. SRP와 OPAQUE 같은 비밀번호 인증 프로토콜은 이러한 원리를 적용하여 비밀번호를 직접 전송하거나 서버 측에 비밀번호를 저장하지 않고도 인증을 수행합니다.
사전 공격 내성
강력한 비밀번호 인증 프로토콜은 서버에 저장된 데이터가 완전히 침해되더라도 오프라인 사전 공격에 견딜 수 있어야 합니다. 즉, 저장된 검증값을 사용해 사용자를 직접 사칭할 수 없어야 하며, 서버의 협조 없이 효율적으로 오프라인에서 비밀번호를 추측할 수 없어야 합니다.
대규모 환경에서의 신뢰 문제
인증을 요구하는 서비스가 수백 개에 이르면 기존 모델에서는 모든 서비스 운영자에게 다른 곳에서도 재사용될 수 있는 비밀값을 맡겨야 합니다. 해결책은 비밀번호 전송을 완전히 없애고, 재사용할 수 없는 검증값만 저장하며, 피싱을 방지하도록 인증을 특정 서버의 신원에 연결하는 것입니다.
앞으로 나아갈 방향
현대적인 해결책으로는 SRP(보안 원격 비밀번호), OPAQUE, FIDO2/패스키가 있습니다. 각각은 근본적인 문제의 서로 다른 측면을 해결합니다. SRP와 OPAQUE는 서버가 비밀번호를 알 필요를 없앱니다. FIDO2/패스키는 특정 출처에 연결된 공개 키 암호화를 사용하여 비밀번호를 완전히 없앱니다.
비밀번호 인증 취약점 확인
강력한 서버 측 비밀번호 해시 처리(예: bcrypt)로도 방지되지 않는 공격, 즉 NOT에 해당하는 공격은 무엇입니까?
학습 내용 복습: 비밀번호 문제
기존 비밀번호 인증에서는 서버가 자신이 알게 된 비밀값을 검증해야 하고, 침해 사고가 발생하면 오프라인 크래킹이 가능해지며, 피싱에 무너집니다. 비밀번호 재사용은 개별 침해 사고를 시스템 전체의 장애로 확대합니다. 이상적인 시스템은 비밀값을 전송하지 않고 상호 인증을 제공하며, 추측으로 풀 수 없는 검증값만 저장하고, 인증을 서버의 신원에 연결합니다.
자주 묻는 질문
“비밀번호 인증의 근본적인 문제” 강의는 무료인가요?
네 — “비밀번호 인증의 근본적인 문제” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“비밀번호 인증의 근본적인 문제”에서 뭘 배우나요?
전통적인 비밀번호 인증이 서버 측 공격 표면을 만드는 이유와 이를 해결하는 프로토콜을 살펴봅니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“비밀번호 인증의 근본적인 문제” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 비밀번호 인증의 근본적인 문제
- SRP: 보안 원격 비밀번호 프로토콜
- PAKE 프로토콜과 그 특성
- 비밀번호 없는 인증: WebAuthn과 FIDO2