인증(authentication)은 시스템에서 식별된 사용자가 실제로 본인이 맞는지 검증하는 절차이다: 비밀번호, 스마트카드, 생체인증 등이 해당한다. 네트워크 리소스를 비인가된 사용자로부터 접근을 원천 차단하며, 인가된 사용자는 원격에서도 안전하게 접근할 수 있는 보안을 제공한다.
- 한편, 유사한 용어인 authorization은 인증이 완료된 사용자가 해당 리소스를 접근할 "권한"이 있는지 확인하는 것으로 별개의 절차임을 유의하도록 한다.
인증 프로토콜(authentication protocol)은 두 개체 간 인증 데이터를 전송하기 위해 설계된 통신 프로토콜이다.
커버로스(Kerberos)는 상호인증에 사용되는 인증 프로토콜 중 하나이다. 비밀번호를 노출시키지 않고 시한부 티켓을 사용하여, 네트워크 도청 및 재전송 공격으로부터 보호한다. 다만, DNS에 의존하기 때문에 호스트 접근을 IP 주소로 시도하면 커버로스 인증을 실패한다; 윈도우는 대안 인증 프로토콜로 NTLM을 시도한다.[참고]
커버로스 인증은 키 배포 센터(key distribution center; KDC)에서 두 가지의 에이전트로 나뉘어 동작한다.
인증 서버 (authentication server; AS) | 티켓 부여 서비스 (ticket-granting service; TGS) |
---|---|
사용자 인증을 담당하며, 클라이언트에게 발급하는 티켓(즉, ticket-granting ticket; TGT)은 시한부로 사용자 인증을 증명한다. 최초 TGT 발급은 사용자가 컴퓨터에 로그온 할 때이다. | 인증된 사용자의 TGT 유효성 및 요청한 서비스로의 접근 권한을 점검한다. 모두 충족할 경우, 클라이언트가 요청한 서비스에 한정된 티켓(즉, service ticket; ST)을 발급한다. |
커버로스 인증 중에서 AS로부터 인증된 사용자인지 여부를 살펴보는 단계가 먼저 진행된다.
- 컴퓨터 로그온에 사용된 사용자명과 커버로스 인증 요청을 AS로 전송한다.
- AS는 AD 데이터베이스에 해당 사용자 정보를 조회하여 (1) 비밀번호로 암호화된 TGS 세션 키와 (2) TGS만 열어볼 수 있는 TGT를 클라이언트로 회신한다.
- 클라이언트는 사용자 비밀번호로 TGS 세션 키를 복호화하며, 이는 차후 TGS와 세션을 구축하는데 사용된다.
만일 사용자가 도메인 리소스나 서비스를 접근해야 할 경우, TGS로부터 인증 유효성 및 권한을 점검받는다.
- 클라이언트는 (획득하였으나 열어볼 수 없던) TGT에 원하는 서비스로의 접근 요청을 동봉하여 TGS로 전송한다.
- TGS는 클라이언트로부터 전달 받은 TGT를 열어, 안에 포함된 정보들로 인증 유효성 또는 서비스 접근 권한을 검증한다.
- 모든 검증을 충족하였을 경우, TGS는 해당 서비스의 서버만 열어볼 수 있는 ST를 클라이언트로 회신한다.
마지막으로 클라이언트는 서비스 서버로 접근을 시도한다.
- 클라이언트는 (획득하였으나 열어볼 수 없던) ST를 서비스 서버로 전송한다.
- 서비스 서버는 클라이언트로 전달 받은 ST를 열어, 안에 포함된 정보들로 인증 유효성 또는 서비스 접근 권한을 검증한다.
- 모든 검증을 충족하였을 경우, 서비스 서버는 본격적으로 클라이언트가 요청한 서비스를 제공한다.
NT LAN 관리자(NT LAN Manager; NTLM)는 마이크로소프트에서 개발한 시도-응답 인증 프로토콜이다.