Hashing, Salt

주형(Jureamer)·2022년 1월 13일
0
post-custom-banner

해시란?

해시(함수)는 임의의 길이를 갖는 임의의 데이터를 고정된 길이의 데이터로 매핑하는 함수를 말하며, 이러한 해시 함수를 적용하여 나온 고정된 길이의 값을 해시값이라고 한다. 주로 비밀번호 등 암호화에 많이 쓰인다.(sha1, sha256 등)

이 값은 또한 해시 코드, 해시섬(sum), 체크섬 등으로도 불린다.

<암호화 없이 text로 전달 시>

해시의 특징

1. 모든 값에 대해 해시 값을 계산하는데 오래 걸리지 않아야 한다.

2. 최대한 해시 값을 피해야하며 모든 값은 고유한 해시 값을 가진다.
=> 비둘기집의 원리로 인해 입력값의 범위가 출력값의 범위보다 크기 때문에 간혹 해시 값이 같아 충돌이 생길 수 있다고 한다.

3. 아주 작은 단위의 변경이라도 완전한 다른 해시 값을 가져야 한다.

Salt란?

암호학에서의 솔트(salt)는 데이터, 비밀번호, 통과암호를 해시 처리하는 단방향 함수의 추가 입력으로 사용되는 랜덤 데이터이다. (요리 할 때 쓰는 소금과 같이 암호화에 추가적인 조미료를 뿌리는 것)

솔트는 스토리지에서 비밀번호를 보호하기 위해 사용되며, 레인보우 테이블과 같은 미리 계산된 테이블을 사용하는 공격을 방어한다.

Salt 사용 시 주의점

  1. Salt는 유저와 패스워드 별로 유일한 값을 가져야한다.

  2. 사용자 계정을 생성할 때와 비밀번호를 변경할 때마다 새로운 임의의 Salt를 사용해서 해싱해야 한다.

  3. Salt는 절대 재사용하지 말아야 한다.

  4. Salt는 DB의 유저 테이블에 같이 저장되어있어야 한다.

Reference

profile
작게라도 꾸준히 성장하는게 목표입니다.
post-custom-banner

0개의 댓글