일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- generate entity
- header setting
- SpringBoot
- docker 설치
- jvm
- docker
- MySQL
- Java
- generate pojos
- dto valid
- java8
- Next.js 14
- ollama langflow
- spring boot
- JavaScript
- CentOS6
- swagger
- 리눅스
- spring
- 도커
- java9
- custom valid
- NextJS
- JPA
- memcached
- jpa entity자동
- 초기 구축
- React
- 헤더 설정
- 초기 세팅
Archives
- Today
- Total
개발자의 길
커버로스 프로토콜(Kerberos Protocol)이란? 본문
커버로스 프로토콜이란?
- 커버로스는 티켓(ticket) 기반의 컴퓨터 네트워크 인증 프로토콜이다.
- 보안이 보장되지 않은 네트워크 환경에서 요청을 보내는 유저와 요청을 받는 서버가 서로의 신뢰성을 확보하기위해 사용된다.
티켓이 뭔가요? 왜 쓰는거죠?
- 커버로스에서 사용하는 티켓은 유저 아이디를 안전하게 전달하는 데 사용되는 정보 패킷이다.
- 티켓에 포함하는 대표적인 정보들은 다음과 같다.
- 이러한 정보들을 담고 있는 티켓은 티켓을 발급하는 서버의 비밀 키(secret key)로 암호화(encrypt)된다.
커버로스 프로토콜의 동작 과정
[그림] 커버로스 프로토콜의 동작 과정
- AS(Authentication Server)는 요청을 보내는 유저의 아이디와 패스워드를 인증하고, TGS(Ticket Granting Service)와 통신하기 위한 티켓을 유저에게 발급해주는 서버이다.
- TGS는 SS(Service Server, =Resource Server)와 통신하기 위한 티켓을 유저에게 발급해주는 서비스이다.
- SS는 유저가 최종적으로 통신하고자 하는 목적지 서버이다.
- AS와 TGS, SS를 순차적으로 거치는 과정을 통해 유저와 서버가 서로를 신뢰할 수 있게 된다.
- 세션 키는 비밀 키와 다른 개념이다.
- 세션 키는 유저와 서비스 간의 통신에 필요한 키이다.
- 커버로스에서 유저는 TGS, SS와 통신을 하게 되므로, 두 개의 세션 키를 필요로 한다.
- 비밀 키는 서비스가 유저에게 만들어서 보내줄 티켓을 암호화하거나, 서비스가 유저로부터 전달받은 티켓의 복호화를 위해 가지고 있는 키이다.
- 티켓의 복호화를 위해 TGS는 TGS 비밀 키를 가지고 있고, SS는 SS 비밀 키를 가지고 있다.
- 티켓의 암호화를 위해 AS는 TGS 비밀 키를 가지고 있고, TGS는 SS 비밀 키를 가지고 있다.
- 또한 세션 키는 티켓 안에 들어갈 데이터 중 하나이기 때문에 AS는 TGS 세션 키를 가지고 있고, TGS는 SS 세션 키를 가지고 있다.
커버로스 프로토콜의 동작 과정 상세
- 유저는 자신의 아이디를 AS에 보내서 TGT을 요청한다.
- AS는 전송받은 아이디가 AS의 데이터베이스에 있는지 확인하고, 있다면 두 가지 정보를 생성해 유저에게 보내준다.
- 유저는 AS로부터 받은 두 가지 정보를 통해 TGS 세션 키를 얻고, Authenticator를 만들어 TGT와 함께 TGS에 보내준다.
- TGS는 유저로부터 받은 TGT와 Authenticator를 복호화하여 유저 아이디가 일치하는지 확인하고, 일치한다면 유저에게 티켓과 SS 세션 키를 발급해준다.
- 유저는 TGS로부터 암호화된 SS 세션 키와 티켓을 받고, 암호화된 SS 세션 키를 복호화하여 또 다른 Authenticator를 만들어 티켓과 함께 SS에게 보내준다.
- SS는 유저로부터 받은 Authenticator와 티켓을 복호화하여 유저 아이디가 일치하는지 확인한 후, 일치한다면 Authenticator에 들어 있던 타임 스탬프를 SS 세션 키로 암호화하여 유저에게 보내준다.
- 유저는 답신받은 데이터를 SS 세션 키로 복호화하여 앞서 SS에게 보낸 타임 스탬프와 일치하는지의 여부를 체크한다.
커버로스 프로토콜의 단점
- 커버로스 서버는 하나이기 때문에 서버가 다운될 경우, 새로운 유저는 로그인할 수가 없다. 따라서 여러 개의 서버를 운용하는 등 서버가 작동하지 않을 때를 대비할 수 있는 메커니즘을 구현해야 한다.
- 요청 시간에 대한 요구가 엄격하다(통상적으로 5분). 만약 요청을 주고받는 호스트들 간에 시간 동기화가 되어있지 않을 경우 통신이 불가능하다.
참고한 자료
https://en.wikipedia.org/wiki/Kerberos_(protocol)
https://docs.oracle.com/cd/E26925_01/html/E25888/refer-11.html
'6. 리눅스' 카테고리의 다른 글
Vault 란? 무엇인가. 소개 및 확인 (0) | 2023.02.07 |
---|---|
WSL - Rocky 8.6 및 node 설치 (0) | 2022.09.29 |
CentOs7 / Rocky8 에서 redis6 설치 (0) | 2022.06.17 |
ubuntu (우분투) 20.04.x LTS - nginx 설치 (0) | 2022.03.08 |
ubuntu docker 설치 (0) | 2022.03.04 |
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Comments