hashing, salting

javascript·2022년 4월 21일
0

암호화와 hashing, salting 등의 개념을 이해할 수 있다.
HTTP와 HTTPS의 차이점을 이해할 수 있다.
권한 부여(Authorization)와 인증(Authentication)에 대해 이해할 수 있다.
쿠키의 작동 원리를 이해할 수 있다
세션 및 쿠키 / 토큰 / OAuth를 통해 인증 구현을 할 수 있다.
클라이언트, 서버, 데이터베이스의 전체 동작을 이해할 수 있다.
회원가입 및 로그인 등의 유저 인증에 대해 구현하고 이해한다.
서비스의 보안과 관련된 방법을 알아보고 원리 및 장점 및 단점을 이해한다.

hashing

임의의 길이를 갖는 임의의 데이터를 고정된 길이의 데이터로 매핑하는 단방향 함수를 말한다. 쉽게 말해, 아무리 큰 숫자를 넣더라도 정해진 크기의 숫자가 나오는 함수이다.
예를 들면 어떤 숫자를 10으로 나누었을 때 그 나머지를 구하는 함수도 해시 함수이다.
이러한 해시 함수를 적용하여 나온 고정된 길이의 값을 해시값이라고 한다.

해시함수의 문제점

1.인식 가능성
메시지가 같으면 해시값도 같으므로 다른 사용자랑 패스워드가 같으면 해시값도 같아서 한꺼번에 털릴 수 있다.
미리 해시해둔 패스워드를 잔뜩 가지고 있다가 훔쳐낸 패스워드와 비교하는 것이다.

2.속도
해시 함수의 처리 속도가 빠르기 때문에 무차별 대입 공격을 당할 수 있다.

salting

해시함수의 문제점 해결
솔팅의 가장 큰 목적은 salt를 이용해서 레인보우 테이블을 무의미하게 만드는 것이다.
솔팅은 패스워드에다가 임의의 문자열인 salt를 추가하여 해시값을 생성한다.
사용자마다 각자 다른 salt를 사용한다면 패스워드가 같더라도 해시값이 다르게 생성된다.

profile
JavaScript learner

0개의 댓글