해쉬(hash)와 솔트(salt)

JINSUNG LEE·2021년 10월 20일
0
post-thumbnail
post-custom-banner



평상시 웹 서비스 플랫폼을 즐겨 이용하기 위해선 해당 플랫폼의 계정을 보유하고 있어야 하며
플랫폼의 계정은 ID와 PW를 보유하고 있으므로 PW의 경우 보안이 철저해야한다.

만일 해커가 나의 정보를 탈취하여 PW까지 가로채 악의적 이용을 당할 수 있다.

그러므로 플랫폼 제공자들은 고객의 정보를 지키기 위해 어떤 수단을 써서라도 고객 정보를 보호해야한다.

이번 시간에는 기존 Password를 암호화하는 해쉬와 솔트에 대해 알아보자




해쉬(hash)

해쉬(hash)란?
기존 비밀번호 값을 다른 값에 치환 (비밀번호를 암호화)

해쉬라는 단어하면 어떤게 생각 나는가?

감자를 잘게 부수고 튀김가루에 적신 해쉬 브라운을 생각하면 된다.

처음보는 사람은 겉으로 생선 튀김이나 고로케로 볼수도 있으나 이는 순수 감자를 잘게 부숴서 만든 재료인것처럼 비밀번호도 해쉬 알고리즘을 통해 비밀번호 순수 형체를 못 알아보도록 하는 역할을 수행한다.

비밀번호도 암호인데 기존 암호를 암호화 한다는게 도대체 무슨소리인지 헷갈려할 수도 있다.

기존 비번을 암호화해주는 방법은 앞서 언급한 해쉬 알고리즘이며 이는 대표적으로 SHA-1, SHA-256, SHA-512 등등 있다.

앞자리는 비트를 의미하며 즉 숫자가 클수록 해쉬되는 문자열 숫자도 많아지는 셈이다.

문자열이 길수록 보안에도 안전하기 때문에 SHA-1은 비밀번호를 암호화하기에 위험하니 주의해야한다.

그렇다면 비밀번호를 SHA-512 알고리즘으로 암호화 해보자.



Password: hello1234

해쉬 알고리즘 결과: 79231C90E5FCC5090AC022DF341001256D00A06B675A82EBB642DEBCB8FD70921FF37F97E00F72EC958E85265116C39BCF91C22906D59B8D015B037B55303202

암호화한 결과 위의 복잡한 문자가 출력된다.

특히 해쉬의 보안성이 특출나게 뛰어난 점은 무엇보다 복호화가 안된다.



						크흐흐 해커 어쩌라구!!! 뚫어봐 이자식아 방끗 ^.^

그럼 복잡한 암호화된 문자를 해커가 해킹하기에는 어려울테니 이제 더이상 걱정할 필요가 없을까...?

나의 대답은.. Hmm



									정신차려 이새x야!!!!

혹시 군대를 나와본 행정병들은 공감할수도 있을텐데 중대 내무반에서 사용하는 계정 비밀번호가 1q2w3e4r
이런 형태로 키보드 자판 위치에 가까운 비밀번호를 사용했을것이다.

이는 아무리 해쉬 알고리즘으로 아무리 암호화하여도 키보드 자판 위치가 서로 가깝게 연관되어 있다면 복호화할 수가 있다......!!

Rainbow Table

이를 Rainbow Table 이라고 부른다.

위의 사진은 키보드 자판 위치와 매우 밀접한 비밀번호의 예시들이 MD5 해쉬 알고리즘을 복호화한 결과이다.

사실상 위 명단 리스트는 살생부라고 보면 좋으니 절대로 비밀번호에 쓰지말아야 한다.




솔트(Salt)

그러나 결국 레인보우 테이블을 사용한 사람은 고객이다.

고객한데 갑질할 수 없는 플랫폼 개발자들은 고객들의 정보 해킹을 방지하기 위해 나온 것이 바로 솔트(Salt)이다.

솔트는 말그대로 소금이며 음식을 요리하면서 간 맞추기 위해 뿌리듯 기존 비밀번호에 추가적인 문자열을 별도로 덧붙여주는 역할을 아래 예시와 같이 수행한다.

ex) hello1234 (Password) + chIfvf86 (Salt)

즉, chIfvf86 라는 솔트 문자까지 추가하여 해쉬 알고리즘에 암호화 한다.

여기서 주의해야할 점은 솔트는 절대로 재사용해서는 안되는 점을 명심해야한다.




profile
https://californialuv.github.io/Tech_Blog 이사 갔어용 🌎 🚀
post-custom-banner

0개의 댓글