Hashing

진성·2022년 7월 31일
0
post-thumbnail

웹사이트에서 가장 중요한 부분 중 하나가 보안이다.
물론 어떤 서비스인지 또는 최적화가 잘 되어있는지 물론 모두 중요하다.
하지만 이전에 보안이 잘 되어있지 않다면 유저들의 개인정보들이 위험해지게 되고 유저들은 불안감에 서비스를 이용하지 않을 것이다.
그렇기에 보안은 매우 중요하다고 볼 수 있다.

Hashing

해싱(Hashing)이란 데이터를 해시 함수를 통해 원본을 알아볼 수 없게 만드는 것을 의미한다.
그러면 암호화와 뭐가 다른가 하는 의문점이 생길 것이다.

암호화와 해싱의 가장 큰 차이는 방향성에 있다.
암호화는 양방향이기에 복호화를 진해하여 원본 데이터를 확인 할 수 있는 반면에, 해싱은 단방향이기에 복호화가 블가능해 원본 데이터를 확인 할 수 없다.

최근 웹사이트를 확인 해보면 비밀번호를 찾을때 이전 비밀번호가 나오는 것이 아닌 비밀번호를 새로 만들라고 나온다.
이 또한 해싱한 데이터이기에 본인을 제외하고는 아무도 비밀번호를 모르기 때문에 비밀번호를 새로 설정하는 것이다.

만약 이전 비밀번호를 알려주는 웹사이트라면 그 사이트는 절대 안전하지 못한 사이트이다.

Salt

복호화가 불가능하다고 했지만 그럼에도 해커들의 기술 또한 계속 발전을 한다.
대표적인 방법으로 무차별 대입 공격이 있다.

해커들에게는 레인보우 테이블이라는 정보를 저장하고 있는 저장공간 있다.
해커들이 무작위의 데이터들을 계속 대입하여 얻은 정보들을 저장하는 곳이다.

그렇기에 해싱을 한 데이터라 하여도 완벽하게 안전한 것은 아니다.

이를 방지하기 위해 솔트(Salt)가 나왔다.

솔트는 해시함수를 돌리기 전에 원본에 임의의 문자열 또는 숫자를 덧붙이는 것을 말한다.

이렇게 하면 설령 레인보우 테이블에 정보가 있다 하여도 원본을 알아내기에 더욱 어려워진다.
만약 사용자마다 다른 솔트를 사용하다면 모두 다르게 나올 것이기에 해커는 더욱더 알아내기 힘들어 지게 되는 것이다.

참고 : 패스워드의 암호화와 저장

profile
풀스택 진행중...

0개의 댓글