[인증/보안] 기초
- 회원 가입 및 로그인, 로그아웃과 같은 기능을 구현하게 됩니다. 이와 더불어 큰 개념인 인증(authentication)에 대해서 알아봅니다.
- 인증(Authentication)은 요청이 왔을 때 그 요청을 보낸 사람이 누구인지를 증명하고, 그 요청에 대한 답(정보)를 줄 것인지 결정할 때 확인하는 절차를 말한다.
- 권한(Authorization)은 인증(Authentication)을 통해 증명된 누군가가, 어떤 권한을 가지고 있어서, 어떠한 액션을 허용하는지 확인한는 절차를 말한다.
- 클라이언트, 서버, 데이터베이스 모두를 다루면서, Full Stack 개발 환경에서의 전체적 흐름 및 작동을 직접 확인합니다.
- 암호화와 hashing, salting 등의 개념을 이해할 수 있다.
- 암호화: 데이터를 암호화하여 중요한 데이터가 유출될 가능성을 낮춤
- hashing: 임의의 연산을 적용하여 다른 문자열로 전환하는 것
- salting: 별도의 값을 추가하여 해싱하는 것
- 암호화와 hashing, salting 등의 개념을 이해할 수 있다
- https: HTTP 통신을 하는 과정에서 내용을 암호화하여 데이터를 전송하는 방법
- 권한 부여(Authorization)와 인증(Authentiacation)에 대해 이해 할 수 있다.
- 쿠키의 작동 원리를 이해 할 수 있다.
- HTTP의 Stateless(무상태성)을 거슬러 정보를 유지하기 위해 사용
- 서버가 클라이언트에 전달하는 데이터
- 클라이언트에서 서버로 쿠키를 전송하는 것도 포함
- 세션 및 쿠키 / 토큰 / oAuth를 통해 인증 구현을 할 수 있다.
- 세션 및 쿠키
- 서버에서 세션 아이디를 만들고 암호화하여 쿠키에 담아 전송한다. DB에 저장된 세션 아이디와 일치하는지 확인한 후 인증
- 토큰
- 주로 JWT(JSON Web Token)을 사용 서버에 요청할 때 헤더로 토큰을 담아서 서버에 요청하여 인증
- OAuth
- Authoization code와 Access token을 이용하여 인증
- 클라이언트, 서버, 데이터베이스의 전체 동작을 이해할 수 있다.
- 회원가입 및 로그인 등의 유저 인증에 대해 구현하고 이해한다.
- 서비스의 보안과 관련된 방법을 알아보고 원리 및 장점 및 단점을 이해한다.
- 세션 및 쿠키
HTTPS 프로토콜
HTTPS는 Hyper Text Transfer Protocol Secure Socket layer 의 약자입니다.
HTTPS는 HTTP 요청을 SSL 혹은 TLS라는 알고리즘을 이용해, HTTP 통신을 하는 과정에서 내용을 암호화하여 데이터를 전송하는 방법입니다.
- 질문: SSL, TLS는 무엇인가요? SSL과 인증기관(CA)은 어떤 관계가 있나요?
HTTPS 란 무엇입니까? -SSL.com
HTTPS (Hypertext Transfer Protocol Secure)는 SSL을 사용하는 HTTP 프로토콜의 보안 버전입니다.TLS 웹 브라우저와 웹 사이트간에 전송되는 데이터를 암호화하는 프로토콜입니다.
www.ssl.com
https에서 꼭 기억할 것!
1) https는 웹사이트의 무결성을 보호한다.
-전송 중에 외부로부터 데이터가 변조되지 않는다.
2) 사용자의 개인정보를 보호한다.(기밀성)
https의 암호화 방법
1) 대칭키 암호화 방법 => hash
2) 비대칭키 암호화 방법 => https에서 많이 사용되고, 서로가 서로를 풀 수 있다.
2-1)공개키(Public key)
사용자들에게 노출되는 키이다. 클라이언트가 가지고 있다.
브라우저에 저장, 인증서 저장 공간이 있다.
cert.pem
2-2) 개인키(private key)
서버에서 주는 키 이다
key.pem
hash
우리의 비밀번호를 그대로 노출시키지 않기위해서 비빌번호를 암호화해서
디비와 서버에 가진다.
어떠한 문자열에 '임의의 연산'을 적용하여 다른 문자열로 변환하는 것
1. 모든 값에 대해 해시 값을 계산하는데 오래걸리지 않아야 한다.
2. 최대한 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가진다.
3. 아주 작은 단위의 변경이라도 완전히 다른 해시 값을 가져야 한다.

salt
암호화해야 하는 값에 어떤 '별도의 값'을 추가하여 결과를 변형하는 것
1)암호화만 해놓는다면 해시된 결과가 늘 동일
2)암호화된 해시 값과 salt(공개키) 를 추가하여 해쉬를 진행한다면 더욱 강력해진 암호가 된다.
Key Derivation Function : salt와 hash를 여러번 해서 복잡도를 늘리는 방식

'백엔드 > session' 카테고리의 다른 글
| checkpoint- session (0) | 2021.11.27 |
|---|---|
| session (0) | 2021.11.23 |
| 쿠키(Cookie), 쿠키를 이용한 Client와 Server (0) | 2021.11.22 |