인증인가

DevSmiler·2020년 2월 19일
0

백엔드

목록 보기
1/1

인증

유저의 Identifiation을 확인한다.

비밀번호를 압호화해야한다.

비밀번호 암호화

단방향 헤쉬를 사용해서 암호화 한다. 한번 암호화를 하면 돌이킬 수 없는것을 의미한다. 즉 One Way 한쪽으로 암호화를 하기 때문에, 비밀번호를 비교할때는, 원래 비밀번호의 헤쉬와 입력값의 헤쉬가 같으면 같은 비밀번호로 보면 됩니다.

양방향을 하게 된다면 복호화가 가능하기 때문에, 내부에서는 비밀번호를 확인할수 있기 때문에, 민감한 정보가 유출이 될 수 있다. 그렇기 때문에 비밀번호 같은것은 양방향 대신 단방향 암호화를 사용한다.

그러나 일반적인 Hash알고리즘을 쓰면 레인보우어택(브루트포스 공격)을 방어하기가 어렵다. 그렇기 때문에 Bcrypt를 사용한다.

Bcrypt란?

일반적인 Salting(랜덤값을 추가하는 것) 암호화를 한번 더해서 해쉬값을 다르게 만든다. Salting은 랜덤인데, 해쉬값에 설팅값이 있기때문에 비밀번호 마다, salting은 다르지만, 값을 비교할수있다.

salt가 노출되도 되는 이유는 BruteForce Atk에서 값을 여러개를 넣게 해서 경우의 수를 늘리기 위한것입니다.

keystrecthing

암호화를 할때 딜레이를 준다.

bcrypt img

JWT(Json Web Token)

HTTP에서 State를 저장을 하지 않는다 즉, 값을 저장하기 위해서 인증인가 정보를 주고 받기 위해서 나온것이 TOKEN 이다 .
서버에서 복호화 할 수 있는 유저정보를 보낸다. 즉 Token이 이에 해당 된다.Json을 기반으로 하는 토큰입니다.

	//js 문법 복호화 했을때 값을 가지고 올 수 있다 .Primary Key같은것 
{
	"user id":"1",
}

Authorization

인증된 사용자가 특정한 기능에 접근할 수 있는 권한을 부여하는 것

profile
A ship is always safe at the shore, but that is not what it is built for - Albert Einstein

0개의 댓글