Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

비밀번호 솔팅(Salting)이란? 정보 보안의 핵심 개념 완벽 정리

비밀번호 솔팅이란?

비밀번호 솔팅(password salting)은 주어진 사용자 이름에 비밀번호를 덧붙인 뒤, 새롭게 만들어진 문자열을 해싱(hash)하는 비밀번호 암호화 방식입니다. 이 과정은 일반적으로 MD5 해싱 알고리즘을 통해 수행됩니다.

솔팅은 주로 리눅스(Linux) 운영체제에서 활용되며, 여러 마이크로소프트 배포판에서 사용되는 일부 암호화 모델보다 더 안전한 비밀번호 보호 방식으로 평가받습니다.

솔팅의 작동 원리

사용자 계정이 생성되면 사용자는 해당 사용자 이름과 연결할 비밀번호를 설정합니다. 사용자가 솔팅을 지원하는 시스템에 비밀번호를 제출하면, 시스템은 비밀번호를 사용자 이름에 추가하고 새로운 문자열 전체를 해싱합니다.

이 방식은 매우 효율적인 암호화 기법입니다. 두 명의 사용자가 우연히 같은 비밀번호를 선택하더라도 사용자 이름은 거의 확실하게 다르기 때문에, 최종적으로 생성되는 해시 값 역시 서로 달라집니다.

솔팅은 비밀번호 해싱과 관련된 용어로, 비밀번호 끝에 삽입되어 고유한 해시 값을 만들어내는 고유한 값(솔트)을 의미합니다.

솔팅이 중요한 이유

무차별 대입 공격 방어

솔팅은 해싱 절차에 한 층의 보안을 더하며, 특히 무차별 대입 공격(brute force attack)에 대한 방어에 효과적입니다. 무차별 대입 공격이란 컴퓨터나 봇넷(botnet)이 가능한 모든 문자와 숫자 조합을 하나씩 시도해 비밀번호를 찾아내는 공격 방식입니다.

해시에 솔팅을 적용하면 공격자가 사전에 계산해 둔 비밀번호 목록을 활용하기 어려워지므로, 무차별 대입 공격으로부터 비밀번호 데이터를 효과적으로 보호할 수 있습니다.

저장된 비밀번호 보호

솔팅에는 기업이 비밀번호를 해싱하거나 암호학적으로 정보를 처리할 때 사용하는 무작위 정보가 포함됩니다. 저장된 비밀번호를 보호하는 관점에서 입력값이 많을수록 실질적인 보안 효과가 커집니다. 솔팅은 시스템의 사용자 비밀번호를 무단 열람으로부터 지키기 위해 개발된 안전장치 중 하나입니다.

솔트의 생성과 저장 방식

일반적인 환경에서는 비밀번호마다 고유한 솔트가 생성되어 암호화 해시 함수와 함께 처리됩니다. 이 방식에서 시스템은 출력된 해시 값과 솔트를 안전한 데이터베이스에 함께 저장합니다.

해싱 함수는 평문 비밀번호를 직접 다루지 않으면서도 인증 절차를 수행해야 하는 네트워크 및 시스템 관리자에게 특히 유용합니다.

솔트는 현재 날짜와 시간, 사용자 이름, 비밀 프로세스, 무작위 값 또는 이들의 조합 등 다양한 요소로부터 생성될 수 있습니다. 대표적인 예로 Bcrypt가 있는데, Bcrypt는 기본적으로 해시마다 고유한 솔트를 적용하는 해싱 알고리즘입니다.

솔트가 없다면 어떻게 될까?

솔트가 해시에 삽입되지 않으면 공격자가 특정 결론을 도출할 여지가 생깁니다. 예를 들어 일부 해시 값이 서로 동일하다면, 공격자는 해당 서버가 모든 신규 계정에 기본 비밀번호를 사용한다고 판단할 수 있습니다. 나아가 어떤 비밀번호가 특정 해시에 매핑되는지 예측해 그 계정들에 일괄적으로 접근할 위험도 있습니다.

결론적으로 솔팅은 단순하지만 강력한 보안 기법으로, 해시 값의 고유성을 보장함으로써 무차별 대입 공격과 패턴 분석 공격으로부터 사용자 계정을 지키는 데 필수적인 요소입니다.