개발일지/웹개발

Hashing, Salt

2022. 11. 22. 16:02
목차
  1. ✔️ Hashing
  2. ✔️ Salt
728x90

✔️ Hashing

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

  • 모든 값에 대해 해시 값을 계산하는데 오래 걸리지 않아야 한다. -> 변환이 한 시간 걸린다면 로그인도 한 시간 걸린다는 뜻
  • 최대한 같은 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가진다.
  • 아주 작은 단위의 변경이라도 완전히 다른 해시 값을 가져야 한다.

 

✅ 대표적인 해싱 알고리즘

  • MD(Message Digest) - MD4, MD5, MD6
  • SHA(Secure Hash Algorithm) - SHA-1, SHA-256, SHA-512
  • RIPEMD(RIPE Message Digest)
  • WhirlPool
❗️ 이미 보안이 뚫린 해시 함수가 존재하므로 주의하여 사용해야 한다. ex) MD5, SHA-1, HAS-180

✔️ Salt

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

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

❗️주의할 점

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

단순하게 해시만 이용하여 변환만 한다고 안전한 것은 아니다.

해커가 무차별적으로 임의의 값을 입력하며 비밀번호를 알아낼 수 있다. 이런 점을 보완하기 위해 비밀번호에 솔트 값을 넣고, 해시 함수를 사용한다.

또는 해시 함수를 여러 번 돌리는 방법도 있다.

 

해시함수는 태생이 암호화를 위한 것이 아니라 검색을 빨리하기 위한 것이라 속도가 굉장히 빠르다.

그래서 고성능 컴퓨터를 이용하여 무차별적으로 대입해보기를 시도하면 1초에 약 10억 번 이상도 대입이 가능하다.

이를 방지하기 위해 강제적으로 1회 대입에 걸리는 시간을 높이는 방법도 있다.

 

ex) 로그인에 걸리는 시간을 0.2초가 걸리게 해 놓을 경우 사용자 입장에서는 느리게 느껴지지 않지만 1회에는 0.2초지만 10억 번 반복한다면 많은 시간이 걸린다

728x90
저작자표시 비영리 변경금지 (새창열림)

'개발일지 > 웹개발' 카테고리의 다른 글

세션(session)이란?  (0) 2022.11.23
Cookie의 옵션들  (0) 2022.11.22
Transaction  (0) 2022.11.15
REST API  (0) 2022.10.05
HTTP 요청 메서드  (0) 2022.10.05
  1. ✔️ Hashing
  2. ✔️ Salt
'개발일지/웹개발' 카테고리의 다른 글
  • 세션(session)이란?
  • Cookie의 옵션들
  • Transaction
  • REST API
E-room
E-room
나의 성취 기록들
E-room
E-room Achievement Logs
E-room
전체
오늘
어제
  • 분류 전체보기
    • 개발일지
      • 돌픽
      • Spring
      • Algorithm
      • Java
      • Node.js
      • Python
      • DataBase
      • 웹개발
      • JavaScript
      • 컴퓨터지식
      • Django
    • 이것저것
    • 피드백 감사히 받겠습니다

블로그 메뉴

  • 태그
  • Github
  • 돌픽-이상형월드컵

인기 글

최근 글

최근 댓글

태그

  • 조합
  • 자바
  • 순열
  • 파이썬
  • Java
  • 알고리즘
  • 백준
  • SQL
  • 백트래킹
  • Spring
  • algorithm
  • 자료구조
  • 다이나믹
  • search
  • 수열
  • python
  • dp
  • javascript
  • 재귀
  • 완전탐색
  • 탐색
  • 프로그래밍
  • JPA
  • 생활코딩
  • boot
  • dfs
  • Django
  • mysql
  • 스파르타코딩클럽
  • API

공지사항

hELLO · Designed By 정상우.
E-room
Hashing, Salt
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.