컴퓨터 보안 - [Kerberos]

윤형·2024년 12월 1일

Security

목록 보기
8/14

Kerberos?
: 컴퓨터 네트워크 사용자 인증 프로토콜, 인터넷을 통해 암호가 전송되지 않도록 하면서 사용자를 인증하는 기법이다.

  • 대칭키 기반 분산 인증 시스템

Kerberos 디자인

  • 사용자는 로그인을 한번만 하자
  • 암호는 인터넷을 통해 실제로 각 서버에 전송하지 말자
  • 각 서버가 사용자 정보를 바꾸지 않는다.(저장하지 않는다.)

등장인물 소개

  • User, Server
  • TGS(Ticket Granting Server)
    서버는 ticket만 받는다.
    서비스 요청시, user는 server에 ticket을 제시
    server에 제시할 ticket을 발급하는 역할
  • AS(Authentication Server)
    모든 user/server들의 password를 알고있다.
    TGS에 제시할 ticket을 발급한다.

Protocol

  • User/TGS는 AS에, Server는 TGS에 등록되어 있다.
  • User가 서비스 필요
  • 서비스 제공할 server를 찾는다.
  • 해당 server 관리하는 TGS를 찾는다.
  • AS에 보낼 ticket요청을 한다.

1) User는 AS에게 UserID, TGS이름을 K(user-as)로 암호화 해서 보낸다.
2) AS는 User와 TGS간의 통신을 위한 세션키1 K(user-tgs)를 생성한다.
세션키1, UserID를 K(as-tgs)로 암호화해 User에게 발급할 Ticket을 생성한다.
세션키1과 Ticket을 K(user-as)로 암호화 해서 보낸다.

Ticket = K(as-tgs)(UserID, K(user-tgs))

3) 받은 (2)를 K(user-as) 대칭키로 복호화를 해서 세션키 K(user-tgs)와 Ticket을 얻는다. UserID는 세션키 1로 암호화해서 Ticket과 함께 TGS로 보낸다.

4) TGS는 받은 3)에서 Ticket을 K(as-tgs)로 연다. 그 안에 있는 K(user-tgs)와 UserID와 요구내용을 확인한다. TGS는 User와 Server간의 통신을 위한 세션키2 K(user-server)를 생성하고 세션키2, UserID를 K(tgs-server)로 암호화 해서 User에게 발급할 Ticket을 생성하고 세션키2와 Ticket을 K(user-tgs)로 암호화 해서 보낸다.

5) User는 받은 4)를 K(user-tgs)로 복호화해서 세션키2와 Ticket을 얻는다. 그리고 server에게 K(user-server)로 암호화한 UserID와 Ticket을 전송한다.

6) Server는 받은 5)의 Ticket을 K(tgs-server)로 복호화 해서 세션키2 K(user-server)를 얻는다. 이걸로 UserID를 복호화 해서 사용자 확인을 한다.

다음은 커버로스의 AS-TGS-User간의 관계이다. 이를 한번 더 Server와 진행하면 되는것이다.

profile
제가 관심있고 공부하고 싶은걸 정리하는 저만의 노트입니다.

0개의 댓글