Authentication - Hashing

Verba volant, scripta manent·2021년 4월 14일
0

서론

만약 인증과정을 거치지 않는다면?

인증(Plain text)


금방 비번을 알게되어 해커의 표적이 될 수 있다!ㄷㄷㄷ...

암호화(Encryption)이란?

일련의 정보를 임의의 방식을 사용하여 다른 형태로 변환하여 해당 방식에 대한 정보를 소유한 사람을 제외하고 이해할 수 없도록 알고리즘을 이용해 정보를 관리하는 과정

ex)

암호화를 적용전과 적용후 plain text 인증 비교도


(before)

(after)

Hashing 이란?

어떠한 문자열에 임의의 연산을 적용하여 다른 문자열로 변환하는 것

Hashing의 조건

1 . 모든 값에 대해 해시 값을 계산하는데 오래걸리지 않아야 한다.
2 . 최대한 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가진다.
3 . 아주 작은 단위의 변경이라도 완전히 다른 해시 값을 가져야 한다.

ex)

인증(Hashing)

Salt란?

암호화해야 하는 값에 어떠한 별도의 값을 추가하여 결과를 변형하는 것

Salt의 특징

1 . 암호화만 해놓는다면 해시된 결과가 늘 동일하기 때문에 해시된 값과 원래 값을 레인보우 테이블로 만들어서 decoding 해버리는 경우도 생긴다.
2 . 원본값에 임의로 약속된 별도의 문자열을 추가하여 해시를 진행한다면 기존 해시값과 전혀 다른 해시값이 반환되어 알고리즘이 노출되더라도 원본값을 보호할 수 있도록 하는 안전 장치 역할을 한다.
3 . 기존에 (암호화 하려는 값) => (hash 값) 이라면
salt를 사용하면 (암호화 하려는 값) + (Salt 값) => (hash 값)이 되어 전혀 다른 hash 값이 된다.

Salt 사용 시 주의점

1 . 유저와 패스워드 별로 유일한 값을 가져야 한다.
2 . 사용자 계정을 생성할 때와 비밀번호를 변경할 때 마다 새로운 임의의 Salt를 사용해서 해싱해야 한다.
3 . 절대로 재사용 불가!
4 . DB의 유저 테이블에 값이 저장되어야 한다.

User마다 Salt를 다르게 했을 때 인증(Hashing)

profile
말은 사라지지만 기록은 남는다

0개의 댓글