커버로스란?
- 커버로스는 티켓 기반의 컴퓨터 네트워크 인증 암호화 프로토콜이다.
- 커버로스를 이용하면 티켓을 가진 유저만 서버에 접속할 수 있도록 제어할 수 있으므로 서버 접근 권한 관리가 편해진다.
티켓 기반?
커버로스에서 사용하는 티켓은 아래 정보들을 안전하게 전달하는데 사용되는 정보 패킷이다. 티켓을 발급할 때 secrey key로 정보들을 암호화한다.
- 유저 아이디
- 유저 호스트 IP주소
- timestamp
- 티켓 수명
- 세션키
암호화된 위 정보들을 통해서 서버와 유저(클라이언트)는 서로 믿을 수 있는 대상인지를 몇가지 과정을 거치며 확인한다.
커버로스 동작 과정
동작 과정을 이해하기 위한 사전 지식
- 커버로스는 대칭키 암호화 방법으로 암호화화 복호화에 사용하는 키가 같다. 즉, 암호화할 때 쓰인 key를 알고있다면 누구나 복호화할 수 있다.
- AS = 인증 서버
- TGS = 티켓 발급 서버
- SS = 서비스 서버 (유저가 통신하고 싶어하는 서버!)
- 유저는 유저 아이디를 인증서버(AS)로 전송한다. (로그인 요청)
- 인증서버(AS)는 전송받은 아이디가 데이터베이스에 있는지 확있하고 있다면 암호화된 TGS와 TGT를 생성해서 유저에게 보낸다.
- TGS 세션키는 데이터베이스 안에 있는 유저의 패스워드를 키로해서 암호화한다.
- TGT(Tiket Granting Tiket) : 티켓을 받기 위한 티켓 - 유저는 인증서버(AS)로부터 받은 정보를 이용해 TGS 세션키를 얻고, Authenticator를 만들어 TGT와 함께 TGS에 보낸다.
- TGS 세션키는 유저의 패스워드를 통해 만들었기 때문에 복호화 가능하다.
- Authenticator는 유저 아이디와 타임스탬프를 TGS 세션키로 암호화한 데이터이다. - TGS는 유저로부터 받은 TGT와 Autenticator를 복호화하여 유저 아이디가 일치하는지 확인하고, 일치한다면 유저에게 티켓과 SS 세션키를 발급해준다.
- TGS는 유저에게 SS와 통신할 권한을 주기 위해서 SS세션키와 티켓을 발급해준다.
- SS 세션키는 TGS세션키로 암호화한다.
- 티켓은 유저 아이디와 SS세션키 등을 SS secret key로 암호화하여 만든다. - (이제 SS와..) 유저는 TGS로 부터 받은 SS세션키를 복호화하여 또다른 Authenticator를 만들고 티켓과 함께 SS에 보낸다.
- 유저는 TGS 세션키가 있으므로 SS세션키를 복호화할 수 있다.
- Authenticator는 유저 아이디와 타임스탬프를 SS 세션키로 암호화한 데이터다. - SS는 유저로 부터 받은 Autehenticator와 티켓을 복호화하여 유저 아이디가 일치하는지 확인한 후, 일치한다면 Authenticator에 들어있던 타임스탬프를 SS 세션키로 암호화하여 유저에게 보낸다.
- 유저는 받은 데이터를 SS 세션키로 복호화하여 5번에서 SS에게 보낸 타임스탬프와 일치하는지 여부를 확인한다.
여기까지 성공했다면 유저와 SS는 서로 신뢰하는 통신이 가능해진다.
kinit
kinit은 커버로스가 적용된 시스템에 로그인할 때 사용하는 명령어이다.
$ kinit
kinit 명령어 실행 후 비밀번호 입력시, 인증이 요청된다.
$ kinit -kt ~/sample-keytab.keytab user-id
-kt옵션을 붙여서 비밀번호가 아닌 키탭으로 인증을 요청할 수 있다.
반응형
'서버' 카테고리의 다른 글
파이프라인, CI/CD, 젠킨스 개념 (0) | 2022.07.09 |
---|---|
[Nginx] putty에서 Nginx 설치 부터 실행, pm2 gitHub연결까지 (0) | 2021.03.31 |