보안 · 중급
비밀번호를 안전하게 저장하는 방법에 대해 설명해주세요.
힌트 · 단순 MD5/SHA 해싱의 문제점, Salt, bcrypt/Argon2의 작동 원리를 설명해보세요.
솔트해싱bcryptPBKDF2암호화
모범답안
비밀번호를 안전하게 저장하는 것은 매우 중요합니다. 단순히 비밀번호를 해싱해서 저장하는 것은 위험합니다. 왜냐하면 레인보우 테이블 공격이나 사전 공격에 취약하기 때문입니다.
그래서 솔트(Salt)를 사용해야 합니다. 솔트는 각 비밀번호마다 임의의 문자열을 추가하여 해싱하는 방식입니다. 이렇게 하면 동일한 비밀번호라도 해시 결과가 달라져서 공격이 어려워집니다.
더 안전하게 하려면 bcrypt나 Argon2와 같은 키 스트레칭(Key stretching) 함수를 사용하는 것이 좋습니다. 이 함수들은 해싱을 여러 번 반복하여 연산량을 늘려 공격자가 해독하는 데 더 많은 시간을 소요하도록 만듭니다. bcrypt는 솔트 생성과 해싱을 내장하고 있고, Argon2는 더 현대적인 알고리즘으로 메모리 사용량까지 조절하여 공격을 방어합니다.
암호화는 비밀번호 저장에 적합하지 않습니다. 암호화는 복호화가 가능해야 하는데, 비밀번호는 복호화할 필요 없이 인증 시에만 비교하면 되기 때문입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.