나는 내가하고있는 일이 실제로 암호에 소금을 뿌리는 것이 아니라 후추를 뿌리는 것이라는 것을 알게 된 토론을 보았습니다.
hash_function($salt.hash_function($pepper.$password)) [multiple iterations]
선택한 해시 알고리즘을 무시합니다 (이것은 소금과 후추에 대한 토론이며 특정 알고리즘은 아니지만 안전한 알고리즘을 사용하고 싶습니다), 이것은 안전한 옵션입니까 아니면 다른 일을해야합니까? 용어에 익숙하지 않은 사람들을 위해 :
소금은 보통 불가능 암호를 해독하기 위해 해시 테이블을 사용 할 수 있도록 설계 데이터베이스의 문자열로 저장 무작위로 생성 된 값입니다. 각 암호에는 고유 한 소금이 있으므로 암호를 해독하려면 모두 개별적으로 무차별 적으로 시행해야합니다. 그러나 소금이 암호 해시와 함께 데이터베이스에 저장되므로 데이터베이스 손상은 두 가지를 모두 잃는 것을 의미합니다.
고추는 비밀하기위한 것입니다 (일반적으로 응용 프로그램의 소스 코드에 하드 코딩) 데이터베이스에 별도로 저장 사이트 전체 정적 값입니다. 데이터베이스가 손상되어 전체 응용 프로그램의 암호 테이블이 무차별 화되지 않도록 사용됩니다.
내가 잃어버린 것이 있습니까? 비밀번호를 소금에 절인 후 후추 칠하는 것이 사용자의 보안을 보호하는 가장 좋은 옵션입니까? 이 방법으로 수행 할 수있는 잠재적 인 보안 결함이 있습니까?
참고 : 토론의 목적으로 응용 프로그램 및 데이터베이스가 별도의 컴퓨터에 저장되어 있고 암호 등을 공유하지 않아야하므로 데이터베이스 서버의 위반이 자동으로 응용 프로그램 서버의 위반을 의미하지는 않습니다.