[개발 일기]Salt를 이용한 암호화

Posted by 열정보이
2019. 5. 26. 21:56 개발 일기

 

최근에 항공사 프로젝트에 지원을 나갔을 때, 신입인 내게 주어진 미션은 암호화를 할 때, "SALT를 이용해서 암호화 할 수 있게 프로그램을 구성해라." 였다..!!

 

그렇다면 SALT란 무엇인가...

 

 

 

SALT

 

SALT는 Password를 암호화 하는 과정에서, Random 값을 Password에 붙여 암호화 하기 위해 사용되는 KEY라고 생각하면 되겠다.

 

그럼 이게 SALT라면 "왜 이걸 사용해야 하지?" 가 가장 중요할것이다.

 

 

 

SALT를 사용해야 되는 이유

 

SALT를 왜 사용해야 되는지 이해하기 위해서는, 'Dictionary Attack' 방식에 대해 알 필요가 있다.

 

우리는 보통 암호화를 하기 위해 SHA 기법을 많이 사용한다.

또한 '열정보이' 를 SHA로 암호화 하게 되는 값은 고정된 해쉬 값 일 것 이다.

 

그럼 누군가 Password를 '우리가 흔히 아는 지갑' 으로 했을 경우, 지갑에 대한 해쉬 값을 Password로 입력하는 순간, Dictionary Attack 공격에 피해를 받게 될 것이다.

 

하지만

'지갑' + 임의 값 을 암호화 하여 저장한다면 어떻게 될까?

임의 값을 알지 않는 한, 해당 값에 대한 해쉬 값을 찾기는 어려울 것이다.

 

그래서 우리는 위와 같은 Dictionary Attack 기법을 회피하기 위해 SALT를 사용한다.

 

 

 

 

느낀점

 

그래서 결국 만들었던 구조는 위와 같았다.

정말 끝 없이 공부하고, 기록하자...!!