솔트 (암호학)

위키백과, 우리 모두의 백과사전.

암호학에서 솔트(salt)는 데이터, 비밀번호, 통과암호를 해시 처리하는 단방향 함수의 추가 입력으로 사용되는 랜덤 데이터이다. 솔트는 스토리지에서 비밀번호를 보호하기 위해 사용된다. 역사적으로 비밀번호는 시스템에 평문으로 저장되지만 시간이 지남에 따라 추가적인 보호 방법이 개발되어 시스템으로부터 사용자의 비밀번호 읽기를 보호한다. 솔트는 이러한 방식의 하나이다.

솔트는 레인보 테이블과 같은 미리 계산된 테이블을 사용하는 공격을 방어한다.[1]

사용 예시[편집]

비밀번호 저장을 위한 솔트 값의 불완전한 예시이다. 최초 테이블은 2개의 사용자 이름과 비밀번호 조합을 갖는다. 비밀번호는 저장되지 않는다.

사용자 이름 비밀번호
user1 password123
user2 password123

솔트값은 랜덤으로 생성되며 길이는 어느 것이든 될 수 있다. 이 경우 솔트값은 8바이트 길이이다. 솔트값은 평문 암호에 추가되며 여기서 결과는 해시 처리되는데 이를 해시된 값으로 부른다. 솔트값과 해시된 값 모두 저장된다.

사용자 이름 솔트값 해시될 문자열 해시된 값 = SHA256 (비밀번호 + 솔트값)
user1 E1F53135E559C253 password123E1F53135E559C253 72AE25495A7981C40622D49F9A52E4F1565C90F048F59027BD9C8C8900D5C3D8
user2 84B03D034B409D4E password12384B03D034B409D4E B4B6603ABC670967E99C7E7F1389E40CD16E78AD38EB1468EC2AA1E62B8BED3A

위 표에서 각기 다른 솔트값들은 완전히 다른 해시 처리된 값을 만들어내며 이는 평문 비밀번호가 완전히 동일하더라도 마찬가지이다.

각주[편집]

  1. “Passwords Matter”. 2016년 12월 9일에 확인함. 

외부 링크[편집]