본문 바로가기
Web

[Web] 암호화 해시함수에 대한 이해

by DuncanKim 2022. 7. 2.
728x90

[Web] 암호화 해시함수에 대한 이해

 

 

 

이전에 해시 테이블 포스팅에서 해시 함수에 대해 다루어 본 적이 있다.

 

2022.05.15 - [프로그래밍/자료구조] - [자료구조] hash table(해시 테이블) python class 구현하기

 

[자료구조] hash table(해시 테이블) python class 구현하기

[자료구조] hash table(해시 테이블) python class 구현하기 살펴볼 주요 개념: 더보기 - 해시 테이블의 개념, 특징, 용도 - 해시 함수 - 해시 충돌 회피 - 해시 테이블 클래스 구현(python) 1. 해시 테이.

masterpiece-programming.tistory.com

 

해시는 자료구조에만 쓰이는 것이 아니라, 보안이 필요한 통신에서도 사용이 된다.

해시 함수는 입력값이 바뀌지 않으면 출력값도 바뀌지 않는 x -> f(x) - y 의 형식을 갖추고 있는데,

한 방향으로만 움직이며, 따라서 결과값에서 입력값을 역추적할 수 없는 구조를 가지고 있다.

 

 

비대칭키 방식에서 이를 활용하는데, 평문을 암호화하여 전송하는 때에 해시함수가 사용된다.

 

 

사용자가 로그인을 하기 위해 비밀번호를 입력하면, 입력받은 비밀번호를 해싱하여 해시값을 구하고, 이 값이 데이터베이스에 있는 해시값이랑 동일한 지 맞춰보면 사용자의 비밀번호를 그대로 저장하지 않고도 로그인을 처리할 수 있다. 만약 네이버에 로그인 한다면, 내가 입력한 비밀번호는 암호화되어 전송이 되는데, 네이버는 이를 복호화하여 대조를 하는 것이 아니라 암호화된 해시값을 가지고 있으면서 들어온 값과 일치하는 지를 보고 로그인에 대한 판단을 하는 것이다. 

 

해쉬값은 암호화가 되어 비밀번호를 알 수 없지만, 레인보우 테이블은 해쉬값이랑 입력값을 연결시켜놓았는데, 이것을 활용해서 해시함수를 다시 입력값으로 바꾸어놓을 수 있다. 

 

그래서 salt 라는 것이 생겼다. 랜덤 텍스트를 보안을 유지해야 할 텍스트에 덧붙여서 해시 함수를 적용하는 것이다. 그렇게 되면 다시 복호화를 해도, 원문이 다시 추적을 할 수 없는 암호화 된 텍스트가 나오게 되는 것이다.

 

이외에도 해시를 두 번 이상 돌린다던지 하는 방식으로 보안성을 높이는 방법 등이 있다.

 

728x90

댓글