프로그래밍/General

암호학에서 Salt란? 소금이 필요한 이유

Lou Park 2022. 2. 2. 02:09

# 솔트 (Salt)

해시 함수를 사용하여 단방향 암호화를 했을때, 언제나 같은 값을 같게 된다. 해커는 잘 알려진 해시값의 원문을 저장해두고 쉽게 원문을 유추할 수 있다. (이렇게 해시함수를 사용하여 만들어낼 수 있는 값들을 저장해둔 테이블을 레인보우 테이블이라고 한다.)

 

솔트는 이러한 꼼수를 피하기 위해 해시된 값에 추가적으로 들어가는 랜덤 데이터다. 

 


비밀번호 "qwerty1234"를 SHA-256으로 해싱하면 아래와 같은 값이 나온다.

17F80754644D33AC685B0842A402229ADBB43FC9312F7BDF36BA24237A1F1FFB

 

 

이제 안전하겠지?

 

떡하니 적힌 qwerty1234

안타깝게도 Hash값을 RainbowTable에 넣어보면 순식간에 풀려버림 0ㅇ0

 

 

그래서 해시하기전에 임의의 랜덤 데이터 "LOU"를 더해서 해싱해볼 것이다. "qwerty1234LOU" 

C556DC7BF3122C4AB228892A4DE67A1896F1CB0B32A1CEB667513F057ED6AA14

 

임의의 SALT를 쳤기때문에 이제는 원래값을 찾아내지 못한다!

 

*참고: 위 사이트는 https://crackstation.net/