모르는게 많은 개발자

[단방향 암호화]해시 함수 / Salt 본문

알아가는 개발

[단방향 암호화]해시 함수 / Salt

Awdsd 2020. 4. 21. 01:06
반응형

오늘은 단방향 암호화에 대해 알아보자.

 

단방향 암호화란?

메세지를 암호화할 순 있지만 암호화된 메세지를 복호화가 불가능한 암호화 기법


1. 해시(Hash) 함수

  • 임의 데이터를 고정된 길이의 데이터(해시값)로 바꿔주는 함수
  • 같은 데이터에 대해 항상 같은 해시값이 출력
  • 입력값이 비슷해도 전혀 다른 결과값이 나옴
  • SHA-1, SHA-3  SHA-256, SHA-512, MD5등이 있음

해시 충돌 : 서로 다른 데이터가 해시 함수를 통해 같은 해시값으로 출력되는 현상

MD5에서 해시 충돌 현상이 발생, 보편적으로 SHA-256, SHA-512를 많이 사용


단방향 암호화는 보통 비밀번호에서 많이 사용된다.

 

해시 함수로 암호화된 비밀번호를 DB에 저장하고, 로그인시 비밀번호를 해시 함수로 암호화해 DB의 비밀번호와 비교하여 로그인여부를 따지는 방법을 사용한다.

 

이렇게 했을 때 해커가 DB 데이터를 해킹한다해도 유저들의 비밀번호를 복호화 할 수 없다.

 

하지만 해시만 적용한 패스워드라면 만약 데이터를 해킹당했을 때 해커들이 임의의 패스워드를 만들어 해시를 적용하여 DB데이터와 대조하면 그 해시의 원본 값이 무엇인지 알아낼 위험이 있다.

그래서 보통 상용화된 사이트에서는 해시 함수만으로 암호화된 비밀번호를 DB에 저장하지 않고 Salt라는 방법을 이용한다.


2. Salt

위에서 해시 함수로만 암호화된 비밀번호는 해킹에 노출될 수 있다 말했다. 이것을 막기 위한것이 Salt이다.

소금이라는 무작위 문자열을 랜덤으로 생성해 비밀번호에  하드코딩을 통해 붙여넣어 해시함수를 적용하면 예측할 수 없는 비밀번호가 생겨난다.

Salt 방법을 사용할 때 Salt길이는 해시 값 길이 만큼 적용하고(SHA-256일 경우 256비트 길이만큼 Salt생성), 무작위로 소금값을 생성해야한다.

 

 

 

 

 

 

 

참고

https://starplatina.tistory.com/entry/%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%ED%95%B4%EC%8B%9C%EC%97%90-%EC%86%8C%EA%B8%88%EC%B9%98%EA%B8%B0-%EB%B0%94%EB%A5%B4%EA%B2%8C-%EC%93%B0%EA%B8%B0

https://ko.wikipedia.org/wiki/%ED%95%B4%EC%8B%9C_%EC%B6%A9%EB%8F%8C

반응형
Comments