다음을 통해 공유


보안 지원 공급자 인터페이스 아키텍처

IT 전문가를 위한 이 참조 토픽에서는 SSPI(보안 지원 공급자 인터페이스) 아키텍처 내에서 사용되는 Windows 인증 프로토콜에 대해 설명합니다.

Microsoft SSPI(보안 지원 공급자 인터페이스)는 Windows 인증에 사용되는 기본 기능입니다. 인증이 필요한 애플리케이션 및 인프라 서비스는 SSPI를 사용하여 인증을 제공합니다.

SSPI는 Windows Server 운영 체제에서 GSSAPI(일반 보안 서비스 API)를 구현한 것입니다. GGSAPI에 대한 자세한 내용은 IETF RFC 데이터베이스에서 RFC 2743 및 2744를 참조하세요.

Windows에서 특정 인증 프로토콜을 호출하는 기본 SSP(보안 지원 공급자)는 DLL로 SSPI에 통합됩니다. 이러한 기본 SSP는 다음 섹션에서 설명합니다. 추가 SSP는 SSPI를 사용하여 작동할 수 있는 경우 통합할 수 있습니다.

다음 이미지에 표시된 대로 Windows의 SSPI는 클라이언트 컴퓨터와 서버 간의 기존 통신 채널을 통해 인증 토큰을 전달하는 메커니즘을 제공합니다. 안전하게 통신할 수 있도록 두 개의 컴퓨터 또는 디바이스를 인증해야 하면 인증 요청이 SSPI로 라우트되고, SSPI는 현재 사용 중인 네트워크 프로토콜과 관계없이 인증 프로세스를 완료합니다. SSPI는 투명한 BLOB(Binary Large Objects)를 반환합니다. 이는 애플리케이션 간에 전달되며 이 시점에서 SSPI 계층에 전달할 수 있습니다. 또한 SSPI를 통해 애플리케이션에서는 보안 시스템의 인터페이스를 변경하지 않고 컴퓨터 또는 네트워크에서 사용 가능한 다양한 보안 모델을 사용할 수 있습니다.

보안 지원 공급자 인터페이스 아키텍처를 보여주는 다이어그램

다음 섹션에서는 SSPI와 상호 작용하는 기본 SSP를 설명합니다. SSP는 안전하지 않은 네트워크 환경에서 보안 통신을 촉진하기 위해 Windows 운영 체제에서 다양한 방식으로 사용됩니다.

다음 토픽에도 포함되어 있습니다.

보안 지원 공급자 선택

Kerberos 보안 지원 공급자

이 SSP는 Microsoft에서 구현한대로 Kerberos 버전 5 프로토콜만 사용합니다. 이 프로토콜은 네트워크 작업 그룹의 RFC 4120 및 초안 수정 버전을 기반으로 합니다. 대화형 로그온을 위해 암호 또는 스마트 카드와 사용되는 업계 표준 프로토콜입니다. 또한 Windows의 서비스에 대한 기본 인증 방법이기도 합니다.

Kerberos 프로토콜은 Windows 2000 이상 버전에 해당하는 기본 인증 프로토콜이므로 모든 도메인 서비스는 Kerberos SSP를 지원합니다. 이러한 서비스는 다음과 같습니다.

  • LDAP(Lightweight Directory Access Protocol)를 사용하는 Active Directory 쿼리

  • 원격 프로시저 호출 서비스를 사용하는 원격 서버 또는 워크스테이션 관리

  • 인쇄 서비스

  • 클라이언트-서버 인증

  • SMB(서버 메시지 블록) 프로토콜(Common Internet File System 또는 CIFS라고도 함)을 사용하는 원격 파일 액세스

  • 분산 파일 시스템 관리 및 추천

  • 인트라넷 인증을 IIS(인터넷 정보 서비스)로

  • IPsec(인터넷 프로토콜 보안)에 대한 보안 기관 인증

  • 도메인 사용자 및 컴퓨터의 Active Directory 인증서 서비스에 대한 인증서 요청

위치: %Windir%\System32\kerberos.dll

이 공급자는 이 토픽의 시작 부분에 있는 적용 대상 목록에 지정된 버전과 Windows Server 2003 및 Windows XP에 기본적으로 포함됩니다.

Kerberos 프로토콜 및 Kerberos SSP에 대한 추가 리소스

NTLM 보안 지원 공급자

NTLM SSP(NTLM 보안 지원 공급자)는 NTLM 챌린지 응답 인증을 허용하고 무결성 및 기밀성 옵션을 협상하도록 SSPI(보안 지원 공급자 인터페이스)에서 사용하는 이진 메시징 프로토콜입니다. NTLM은 서버 메시지 블록 또는 CIFS 인증, HTTP 협상 인증(예: 인터넷 웹 인증) 및 원격 프로시저 호출 서비스를 포함하여 SSPI 인증이 사용된 모든 곳에서 사용됩니다. NTLM SSP에는 NTLM 및 NTLM 버전 2(NTLMv2) 인증 프로토콜이 포함되어 있습니다.

지원되는 Windows 운영 체제는 다음 항목에 대해 NTLM SSP를 사용할 수 있습니다.

  • 클라이언트/서버 인증

  • 인쇄 서비스

  • CIFS(SMB)를 사용하여 파일 액세스

  • 보안 원격 프로시저 호출 서비스 또는 DCOM 서비스

위치: %Windir%\System32\msv1_0.dll

이 공급자는 이 토픽의 시작 부분에 있는 적용 대상 목록에 지정된 버전과 Windows Server 2003 및 Windows XP에 기본적으로 포함됩니다.

NTLM 프로토콜 및 NTLM SSP의 추가 리소스

다이제스트 보안 지원 공급자

다이제스트 인증이란 LDAP(Lightweight Directory Access Protocol) 및 웹 인증에 사용되는 업계 표준입니다. 다이제스트 인증은 네트워크에서 자격 증명을 MD5 해시 또는 메시지 다이제스트로 전송합니다.

다이제스트 SSP(Wdigest.dll)는 다음과 같은 용도에 사용됩니다.

  • Internet Explorer 및 IIS(인터넷 정보 서비스) 액세스

  • LDAP 쿼리

위치: %Windir%\System32\Wdigest.dll

이 공급자는 이 토픽의 시작 부분에 있는 적용 대상 목록에 지정된 버전과 Windows Server 2003 및 Windows XP에 기본적으로 포함됩니다.

다이제스트 프로토콜 및 다이제스트 SSP의 추가 리소스

Schannel 보안 지원 공급자

보안 채널(Schannel)은 사용자가 보안 웹 서버에 액세스하려고 하는 경우와 같이 웹 기반 서버 인증에 사용됩니다.

TLS 프로토콜, SSL 프로토콜, PCT(Private Communications Transport) 프로토콜 및 DTLS(데이터그램 전송 계층) 프로토콜은 공개 키 암호화를 기반으로 합니다. Schannel은 이러한 모든 프로토콜을 제공합니다. 모든 Schannel 프로토콜에서는 클라이언트/서버 모델이 사용됩니다. Schannel SSP는 공개 키 인증서를 사용하여 당사자를 인증합니다. 파티 인증 시 Schannel SSP는 다음과 같은 기본 설정 순서로 프로토콜을 선택합니다.

  • TLS(전송 계층 보안) 버전 1.0

  • TLS(전송 계층 보안) 버전 1.1

  • TLS(전송 계층 보안) 버전 1.2

  • SSL(Secure Socket Layer) 버전 2.0

  • SSL(Secure Socket Layer) 버전 3.0

  • PCT(Private Communications Technology)

    참고 PCT는 기본적으로 사용하지 않도록 설정되어 있습니다.

선택한 프로토콜은 클라이언트 및 서버에서 지원할 수 있는 기본 인증 프로토콜입니다. 예를 들어 서버에서 모든 Schannel 프로토콜을 지원하고 클라이언트에서 SSL 3.0 및 SSL 2.0만 지원하는 경우 인증 프로세스는 SSL 3.0을 사용합니다.

DTLS는 애플리케이션에서 명시적으로 호출하는 경우 사용됩니다. DTLS 및 Schannel 공급자에서 사용하는 다른 프로토콜에 대한 자세한 내용은 Schannel 보안 지원 공급자 기술 참조를 참조하세요.

위치: %Windir%\System32\Schannel.dll

이 공급자는 이 토픽의 시작 부분에 있는 적용 대상 목록에 지정된 버전과 Windows Server 2003 및 Windows XP에 기본적으로 포함됩니다.

참고 항목

TLS 1.2는 Windows Server 2008 R2 및 Windows 7에서 이 공급자에게 도입되었습니다. DTLS는 Windows Server 2012 및 Windows 8에서 이 공급자에게 도입되었습니다.

TLS 및 SSL 프로토콜 및 Schannel SSP의 추가 리소스

협상 보안 지원 공급자

SPNEGO(Simple and Protected GSS-API Negotitation Mechanism)는 특정 인증 프로토콜을 협상하는 데 사용할 수 있는 협상 SSP의 기초를 형성합니다. 애플리케이션은 네트워크에 로그온하기 위해 SSPI를 호출할 때 요청을 처리할 SSP를 지정할 수 있습니다. 애플리케이션에서 협상 SSP를 지정하면 요청을 분석하고 고객이 구성한 보안 정책을 기반으로 요청을 처리하기 위해 적합한 공급자를 선택합니다.

SPNEGO는 RFC 2478에서 지정됩니다.

지원되는 Windows 운영 체제 버전에서 협상 보안 지원 공급자는 Kerberos 프로토콜 및 NTLM 중에서 선택합니다. 협상은 인증과 관련된 시스템 중 하나에서 프로토콜을 사용할 수 없거나 호출 애플리케이션이 Kerberos 프로토콜을 사용하기에 충분한 정보를 제공하지 않는 한 Kerberos 프로토콜을 기본적으로 선택합니다.

위치: %Windir%\System32\lsasrv.dll

이 공급자는 이 토픽의 시작 부분에 있는 적용 대상 목록에 지정된 버전과 Windows Server 2003 및 Windows XP에 기본적으로 포함됩니다.

협상 SSP의 추가 리소스

자격 증명 보안 지원 공급자

CredSSP(자격 증명 보안 서비스 공급자)는 새 터미널 서비스 및 원격 데스크톱 서비스 세션을 시작하는 경우 SSO(Single Sign-On) 사용자 환경을 제공합니다. CredSSP를 사용하면 애플리케이션이 클라이언트의 정책에 따라 클라이언트 컴퓨터에서(클라이언트 측 SSP를 사용하여) 대상 서버(서버 측 SSP를 통해)에 사용자의 자격 증명을 위임할 수 있습니다. CredSSP 정책은 그룹 정책을 사용하여 구성되고 자격 증명 위임은 기본적으로 해제됩니다.

위치: %Windir%\System32\credssp.dll

이 공급자는 이 토픽의 시작 부분에 있는 적용 대상 목록에 지정된 버전에 기본적으로 포함됩니다.

자격 증명 SSP의 추가 리소스

협상 확장 보안 지원 공급자

NegoExts(Negotiate Extensions)는 Microsoft 및 기타 소프트웨어 회사에서 구현한 애플리케이션과 시나리오에 대해 NTLM 또는 Kerberos 프로토콜 이외의 SSP 사용을 협상하는 인증 패키지입니다.

Negotiate 패키지에 대한 이 확장은 다음 시나리오를 허용합니다.

  • 페더레이션된 시스템 내에서의 풍부한 클라이언트 가용성. SharePoint 사이트에서 문서에 액세스할 수 있으며 전체 기능을 갖춘 Microsoft Office 애플리케이션을 사용하여 문서를 편집할 수 있습니다.

  • Microsoft Office 서비스에 대한 풍부한 클라이언트 지원. 사용자는 Microsoft Office 서비스에 로그인하고 완전한 기능을 갖춘 Microsoft Office 애플리케이션을 사용할 수 있습니다.

  • 호스트된 Microsoft Exchange Server 및 Outlook. Exchange Server가 웹에서 호스트되므로 도메인 트러스트는 설정되지 않습니다. Outlook은 Windows Live 서비스를 사용하여 사용자를 인증합니다.

  • 클라이언트 컴퓨터 및 서버 간의 풍부한 클라이언트 가용성. 운영 체제의 네트워킹과 인증 구성 요소가 사용됩니다.

Windows Negotiate 패키지는 Kerberos 및 NTLM과 같은 방식으로 NegoExts SSP를 처리합니다. 시작 시 NegoExts.dll은 LSA(로컬 시스템 기관)에 로드됩니다. 인증 요청이 수신되면 요청 원본에 따라 NegoExts는 지원되는 SSP 간에 협상합니다. 자격 증명과 정책을 수집하고, 암호화하고, 해당 정보를 보안 토큰이 만들어지는 적절한 SSP로 보냅니다.

NegoExts에서 지원하는 SSP는 Kerberos 및 NTLM 등의 독립 실행형 SSP가 아닙니다. 따라서 NegoExts SSP 내에서 어떤 이유로든 인증 방법에 실패하면 인증 실패 메시지가 표시되거나 기록됩니다. 재협상 또는 대체 인증 방법은 가능하지 않습니다.

위치: %Windir%\System32\negoexts.dll

이 공급자는 이 토픽의 시작 부분에 있는 적용 대상 목록에 지정된 버전과 Windows Server 2008 및 Windows Vista를 제외하고 기본적으로 포함됩니다.

PKU2U 보안 지원 공급자

PKU2U 프로토콜은 Windows 7 및 Windows Server 2008 R2에서 SSP로 도입 및 구현되었습니다. 이 SSP를 사용하면 특히 Windows 7에 도입된 HomeGroup이라는 미디어 및 파일 공유 기능을 통해 피어 투 피어 인증을 사용할 수 있습니다. 이 기능은 도메인의 구성원이 아닌 컴퓨터 간 공유를 허용합니다.

위치: %Windir%\System32\pku2u.dll

이 공급자는 이 토픽의 시작 부분에 있는 적용 대상 목록에 지정된 버전과 Windows Server 2008 및 Windows Vista를 제외하고 기본적으로 포함됩니다.

PKU2U 프로토콜 및 PKU2U SSP에 대한 추가 리소스

보안 지원 공급자 선택

Windows SSPI는 설치된 보안 지원 공급자를 통해 지원되는 프로토콜을 모두 사용할 수 있습니다. 하지만 모든 운영 체제가 Windows Server를 실행하는 지정된 컴퓨터와 동일한 SSP 패키지를 지원하는 것은 아니므로 클라이언트와 서버는 둘 다 지원하는 프로토콜을 사용하기 위해 협상해야 합니다. Windows Server는 클라이언트 컴퓨터와 애플리케이션이 가능한 경우 강력한 표준 기반 프로토콜인 Kerberos 프로토콜 사용을 선호하지만 운영 체제는 Kerberos 프로토콜을 지원하지 않는 클라이언트 컴퓨터 및 클라이언트 애플리케이션이 인증할 수 있도록 계속 허용합니다.

인증이 이루어지기 전에 통신하는 두 개의 컴퓨터는 둘 모두를 지원할 수 있는 프로토콜에 동의해야 합니다. SSPI를 통해 모든 프로토콜을 사용할 수 있도록 하려면 각 컴퓨터에 적절한 SSP가 있어야 합니다. 예를 들어 클라이언트 컴퓨터와 서버가 Kerberos 인증 프로토콜을 사용하려면 둘 모두 Kerberos v5를 지원해야 합니다. Windows Server는 EnumerateSecurityPackages 함수를 사용하여 컴퓨터에서 지원되는 SSP와 해당 SSP의 기능을 식별합니다.

인증 프로토콜 선택은 다음 두 가지 방법 중 하나를 사용하여 처리할 수 있습니다.

  1. 단일 인증 프로토콜

  2. 협상 옵션

단일 인증 프로토콜

서버에서 허용하는 단일 프로토콜을 지정하는 경우 클라이언트 컴퓨터는 지정된 프로토콜을 지원해야 합니다. 그렇지 않으면 통신이 실패합니다. 허용되는 단일 프로토콜을 지정하는 경우 다음과 같이 인증 교환이 수행됩니다.

  1. 클라이언트 컴퓨터가 서비스에 대해 액세스를 요청합니다.

  2. 서버는 해당 요청에 회신하고 사용할 프로토콜을 지정합니다.

  3. 클라이언트 컴퓨터는 회신 내용을 검사하며 지정된 프로토콜을 지원하는지 여부를 확인합니다. 클라이언트 컴퓨터가 지정된 프로토콜을 지원하는 경우 인증은 계속됩니다. 클라이언트 컴퓨터가 프로토콜을 지원하지 않는 경우 클라이언트 컴퓨터가 리소스에 액세스할 수 있는 권한이 있는지 여부와 관계없이 인증이 실패합니다.

협상 옵션

협상 옵션을 사용하여 클라이언트 및 서버가 허용 가능한 프로토콜을 찾으려고 시도할 수 있습니다. 이는 SPNEGO(Simple and Protected GSS-API Negotiation Mechanism)를 기반으로 합니다. 인증 프로토콜에 대한 협상 옵션으로 인증이 시작되면 SPNEGO 교환이 다음과 같이 수행됩니다.

  1. 클라이언트 컴퓨터가 서비스에 대해 액세스를 요청합니다.

  2. 서버는 지원할 수 있는 인증 프로토콜 목록 및 첫 번째 선택 프로토콜에 따라 인증 과제 또는 응답으로 응답합니다. 예를 들어 서버에서는 Kerberos 프로토콜 및 NTLM을 나열하고 Kerberos 인증 응답을 보낼 수 있습니다.

  3. 클라이언트 컴퓨터는 회신 내용을 검사하고 지정된 프로토콜을 지원하는지 여부를 확인합니다.

    • 클라이언트 컴퓨터가 기본 프로토콜을 지원하면 인증이 진행됩니다.

    • 클라이언트 컴퓨터가 기본 프로토콜을 지원하지 않지만 서버에서 나열한 다른 프로토콜 중 하나를 지원하면 클라이언트 컴퓨터는 서버에서 지원하는 인증 프로토콜을 알려주고 인증이 진행됩니다.

    • 클라이언트 컴퓨터가 나열된 프로토콜을 지원하지 않는 경우 인증 교환은 실패합니다.

추가 참조

Windows 인증 아키텍처