Skip to content

Latest commit

 

History

History
43 lines (27 loc) · 5.59 KB

Authentication.md

File metadata and controls

43 lines (27 loc) · 5.59 KB

인증

참고: Windows Authentication Overview | Microsoft Learn

인증(authentication)은 시스템에서 식별된 사용자가 실제로 본인이 맞는지 검증하는 절차이다: 비밀번호, 스마트카드, 생체인증 등이 해당한다. 네트워크 리소스를 비인가된 사용자로부터 접근을 원천 차단하며, 인가된 사용자는 원격에서도 안전하게 접근할 수 있는 보안을 제공한다.

  • 한편, 유사한 용어인 authorization은 인증이 완료된 사용자가 해당 리소스를 접근할 "권한"이 있는지 확인하는 것으로 별개의 절차임을 유의하도록 한다.

인증 프로토콜

인증 프로토콜(authentication protocol)은 두 개체 간 인증 데이터를 전송하기 위해 설계된 통신 프로토콜이다.

커버로스

참고: Kerberos Authentication Overview | Microsoft Learn

커버로스(Kerberos)는 상호인증에 사용되는 인증 프로토콜 중 하나이다. 비밀번호를 노출시키지 않고 시한부 티켓을 사용하여, 네트워크 도청재전송 공격으로부터 보호한다. 다만, DNS에 의존하기 때문에 호스트 접근을 IP 주소로 시도하면 커버로스 인증을 실패한다; 윈도우는 대안 인증 프로토콜로 NTLM을 시도한다.[참고]

커버로스 인증은 키 배포 센터(key distribution center; KDC)에서 두 가지의 에이전트로 나뉘어 동작한다.

커버로스 KDC 에이전트 및 발급 티켓
인증 서버 (authentication server; AS)티켓 부여 서비스 (ticket-granting service; TGS)
사용자 인증을 담당하며, 클라이언트에게 발급하는 티켓(즉, ticket-granting ticket; TGT)은 시한부로 사용자 인증을 증명한다. 최초 TGT 발급은 사용자가 컴퓨터에 로그온 할 때이다.인증된 사용자의 TGT 유효성 및 요청한 서비스로의 접근 권한을 점검한다. 모두 충족할 경우, 클라이언트가 요청한 서비스에 한정된 티켓(즉, service ticket; ST)을 발급한다.

커버로스 인증 흐름도

커버로스 인증 중에서 AS로부터 인증된 사용자인지 여부를 살펴보는 단계가 먼저 진행된다.

  1. 컴퓨터 로그온에 사용된 사용자명과 커버로스 인증 요청을 AS로 전송한다.
  2. AS는 AD 데이터베이스에 해당 사용자 정보를 조회하여 (1) 비밀번호로 암호화된 TGS 세션 키와 (2) TGS만 열어볼 수 있는 TGT를 클라이언트로 회신한다.
  3. 클라이언트는 사용자 비밀번호로 TGS 세션 키를 복호화하며, 이는 차후 TGS와 세션을 구축하는데 사용된다.

만일 사용자가 도메인 리소스나 서비스를 접근해야 할 경우, TGS로부터 인증 유효성 및 권한을 점검받는다.

  1. 클라이언트는 (획득하였으나 열어볼 수 없던) TGT에 원하는 서비스로의 접근 요청을 동봉하여 TGS로 전송한다.
  2. TGS는 클라이언트로부터 전달 받은 TGT를 열어, 안에 포함된 정보들로 인증 유효성 또는 서비스 접근 권한을 검증한다.
  3. 모든 검증을 충족하였을 경우, TGS는 해당 서비스의 서버만 열어볼 수 있는 ST를 클라이언트로 회신한다.

마지막으로 클라이언트는 서비스 서버로 접근을 시도한다.

  1. 클라이언트는 (획득하였으나 열어볼 수 없던) ST를 서비스 서버로 전송한다.
  2. 서비스 서버는 클라이언트로 전달 받은 ST를 열어, 안에 포함된 정보들로 인증 유효성 또는 서비스 접근 권한을 검증한다.
  3. 모든 검증을 충족하였을 경우, 서비스 서버는 본격적으로 클라이언트가 요청한 서비스를 제공한다.

NTLM

참고: NTLM Overview | Microsoft Learn

NT LAN 관리자(NT LAN Manager; NTLM)는 마이크로소프트에서 개발한 시도-응답 인증 프로토콜이다.