보안 서비스 공급자
SSPI(보안 서비스 공급자 인터페이스)는 보안 분산 애플리케이션을 위한 범용 업계 표준 인터페이스를 제공합니다. 피어 그래프 API는 SSPI 인터페이스를 구현하는 DLL인 SSP(보안 서비스 공급자)를 지정하여 애플리케이션이 그래프의 링크를 보호하는 방법을 제공합니다. 애플리케이션은 PeerGraphCreate사용하여 그래프를 만들 때 SSP를 지정합니다.
사용자 고유의 SSP를 만드는 방법에 대한 자세한 내용은 그래프 참조 링크목록에서 SSPI 설명서 링크를 참조하세요.
SSP 구현을 위한 프로그래밍 고려 사항
SSP 내에서 애플리케이션을 호출할 때는 주의해야 합니다. 다음 고려 사항은 SSP 콜백에 적용됩니다.
- 콜백은 연결 협상 중에 호출되므로 반환하는 데 시간이 오래 걸리지 않습니다. 연결을 설정하는 데 시간이 너무 오래 걸리면 연결을 끊을 수 있습니다.
- 피어 그래프 API는 시스템의 실제 부하에 따라 연결 시간 제한 값을 동적으로 조정합니다. 가장 낮은 제한 시간 값은 20초입니다.
- 잠재적인 교착 상태를 방지하기 위해 애플리케이션은 콜백에서 피어 그래프 데이터베이스에 액세스해서는 안 됩니다. 애플리케이션에 그래프 데이터베이스의 정보가 필요한 경우 애플리케이션은 필요한 정보를 캐시한 다음 콜백 내에서 캐시를 참조할 수 있습니다. 캐싱은 연결 시간을 줄이는 데도 도움이 될 수 있습니다.
SSPI 진입점을 호출할 때 피어 그래프 인프라에는 5(5) 함수의 특정 매개 변수에 대한 특정 값이 필요합니다. SSP에 제공된 이러한 매개 변수 값을 변경할 수 없으며 SSP는 5개 매개 변수에 대한 값을 무시하거나 정상적으로 처리할 수 있습니다. 다음 목록에서는 이러한 특정 매개 변수 및 필수 값을 식별합니다.
-
pvGetKeyArgument 매개 변수에 대해 하나(1)를 지정합니다. pszPrincipal, pvLogonID및 pGetKeyFn 매개 변수에 대한 NULL 지정합니다.
-
fContextReq 매개 변수에 대해 다음 플래그를 지정합니다. ISC_REQ_MUTUAL_AUTH | ISC_REQ_CONFIDENTIALITY | ISC_REQ_INTEGRITY | ISC_REQ_SEQUENCE_DETECT | ISC_REQ_STREAM | ISC_REQ_ALLOCATE_MEMORY.
-
fContextReq 매개 변수에 다음 플래그를 지정합니다. ASC_REQ_MUTUAL_AUTH | ASC_REQ_CONFIDENTIALITY | ASC_REQ_INTEGRITY | ASC_REQ_SEQUENCE_DETECT | ASC_REQ_STREAM | ASC_REQ_ALLOCATE_MEMORY.
-
fQOP 및 MessageSeqNo 매개 변수에 0을 지정합니다.
-
MessageSeqNo 매개 변수에 0을 지정하고 pfQOP 매개 변수에 NULL .
EncryptMessage호출할 때 SecBufferDesc 구조에 4개의 버퍼가 전달됩니다. 다음 표에서는 버퍼를 전달하는 순서를 식별합니다.
SSP 관련 구조체 | 묘사 |
---|---|
SECBUFFER_STREAM_HEADER | 보안 헤더 데이터를 포함합니다. 헤더 버퍼의 크기는 QueryContextAttributes 호출하고 SECPKG_ATTR_STREAM_SIZES 특성을 지정하여 가져옵니다. |
SECBUFFER_DATA | 암호화할 일반 텍스트 메시지를 포함합니다. |
SECBUFFER_STREAM_TRAILER | 보안 트레일러 데이터를 포함합니다. 헤더 버퍼의 크기는 QueryContextAttributes 호출하고 SECPKG_ATTR_STREAM_SIZES 특성을 지정하여 가져옵니다. |
SECBUFFER_EMPTY | 초기화되지 않았습니다. 이 버퍼의 크기는 0입니다. |
DecryptMessage호출할 때 피어 그래프 API는 정확히 4개의 SecBuffer 구조를 전달합니다. 첫 번째 버퍼는 SECBUFFER_DATA암호화된 메시지를 포함합니다. 나머지 버퍼는 출력에 사용되며 SECBUFFER_EMPTY형식입니다.
SSP는 한 번의 호출에서 크기가 16K 이상인 사용자 데이터 버퍼 암호화 및 암호 해독을 지원해야 합니다.