DXGKDDI_OPM_SET_SIGNING_KEY_AND_SEQUENCE_NUMBERS 콜백 함수(dispmprt.h)

DxgkDdiOPMSetSigningKeyAndSequenceNumbers 함수는 지정된 보호된 출력 개체의 서명 키와 두 개의 시퀀스 번호를 설정합니다.

구문

DXGKDDI_OPM_SET_SIGNING_KEY_AND_SEQUENCE_NUMBERS DxgkddiOpmSetSigningKeyAndSequenceNumbers;

NTSTATUS DxgkddiOpmSetSigningKeyAndSequenceNumbers(
  [in] PVOID MiniportDeviceContext,
  [in] HANDLE ProtectedOutputHandle,
  [in] const DXGKMDT_OPM_ENCRYPTED_PARAMETERS *EncryptedParameters
)
{...}

매개 변수

[in] MiniportDeviceContext

디스플레이 어댑터와 연결된 컨텍스트 블록에 대한 핸들입니다. 이전에는 디스플레이 미니포트 드라이버의 DxgkDdiAddDevice 함수가 DirectX 그래픽 커널 하위 시스템에 이 핸들을 제공했습니다.

[in] ProtectedOutputHandle

보호된 출력 개체에 대한 핸들입니다. DxgkDdiOPMCreateProtectedOutput 함수는 보호된 출력 개체를 만들고 개체에 대한 핸들을 반환합니다.

[in] EncryptedParameters

256 바이트 배열을 포함하는 DXGKMDT_OPM_ENCRYPTED_PARAMETERS 구조체에 대한 포인터입니다. 배열에는 적절한 인증서의 공개 키로 암호화된 40~256바이트의 데이터가 포함됩니다. 공개 키에 대한 자세한 내용은 Output Protection Manager 지원에서 출력 콘텐츠 보호 문서를 다운로드하세요. 보호된 출력에 OPM 의미 체계가 있는 경우 데이터는 디스플레이 미니포트 드라이버의 OPM 인증서에서 공개 키로 암호화됩니다. 보호된 출력에 COPP(Certified Output Protection Protocol) 의미 체계가 있는 경우 데이터는 디스플레이 미니포트 드라이버의 COPP 인증서에서 공개 키로 암호화됩니다.

디스플레이 미니포트 드라이버가 배열의 데이터 암호를 해독하는 데 사용해야 하는 알고리즘은 보호된 출력의 의미 체계에 따라 달라집니다. OPM 의미 체계를 사용하는 보호된 출력은 RSAES-OAEP 암호화 체계를 사용하여 데이터의 암호를 해독합니다. RSAES-OAEP에 대한 자세한 내용은 RSA Labies 웹 사이트를 참조하세요. COPP 의미 체계를 사용하는 보호된 출력은 표준 RSA 암호화 알고리즘을 사용하여 암호화된 데이터의 암호를 해독합니다.

디스플레이 미니포트 드라이버가 데이터의 암호를 해독한 후 데이터의 처음 40바이트만 현재 유용합니다. 암호 해독된 데이터의 처음 16바이트에는 ProtectedOutputHandle 매개 변수의 핸들이 전달될 때 디스플레이 미니포트 드라이버의 DxgkDdiOPMGetRandomNumber 함수가 반환한 난수가 포함됩니다. 다음 16바이트에는 128비트 AES 서명 키가 포함됩니다. 다음 4바이트에는 DxgkDdiOPMGetInformation 또는 DxgkDdiOPMGetCOPPCompatibleInformation에서 사용하는 시퀀스 번호가 포함됩니다. 마지막 4바이트에는 DxgkDdiOPMConfigureProtectedOutput에서 사용하는 시퀀스 번호가 포함됩니다. 암호 해독된 데이터의 나머지가 있는 경우 무시해야 합니다.

반환 값

DxgkDdiOPMSetSigningKeyAndSequenceNumbers는 함수가 서명 키와 두 개의 시퀀스 번호를 성공적으로 설정하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 다음 이유 중 하나로 STATUS_OPM_INVALID_ENCRYPTED_PARAMETERS 반환할 수 있습니다.

  • 보호된 출력에 OPM 의미 체계가 있는 경우 디스플레이 미니포트 드라이버가 암호 해독한 데이터는 RSAES-OAEP 인코딩 알고리즘으로 인코딩되지 않았습니다. RSAES-OAEP에 대한 자세한 내용은 RSA Labies 웹 사이트의 PKCS #1 v2.1: RSA 암호화 표준의 섹션 7.1.2를 참조하세요.
  • 적절한 공개 키를 사용하여 호출자가 데이터를 암호화하지 않았습니다. 출력에 OPM 의미 체계가 있는 경우 호출자는 디스플레이 미니포트 드라이버의 OPM 인증서에서 공개 키로 데이터를 암호화해야 합니다. 출력에 COPP 의미 체계가 있는 경우 호출자는 디스플레이 미니포트 드라이버의 COPP 인증서에서 공개 키로 데이터를 암호화해야 합니다.
  • 호출자가 40바이트 이상의 데이터를 암호화하지 않았습니다.
  • 디스플레이 미니포트 드라이버가 암호 해독한 데이터의 16바이트 난수는 DxgkDdiOPMGetRandomNumber 함수가 반환한 16바이트 난수와 일치하지 않습니다.

이 함수는 Ntstatus.h에 정의된 다른 오류 코드를 반환할 수도 있습니다.

설명

서명 키는 DxgkDdiOPMConfigureProtectedOutputDxgkDdiOPMGetInformation 함수에 전달되는 데이터가 보호된 출력을 간접적으로 사용하는 애플리케이션에서 제공되는지 확인하는 데 사용됩니다. 서명 키는 DxgkDdiOPMGetInformationDxgkDdiOPMGetCOPPCompatibleInformation 함수에서 반환되는 데이터에 서명하는 데도 사용됩니다. 시퀀스 번호 중 하나는 DxgkDdiOPMConfigureProtectedOutput에서 사용됩니다. 다른 시퀀스 번호는 DxgkDdiOPMGetInformation 또는 DxgkDdiOPMGetCOPPCompatibleInformation에서 사용됩니다.

DxgkDdiOPMSetSigningKeyAndSequenceNumbers는 오류가 발생하거나 EncryptedParameters 매개 변수가 가리키는 DXGKMDT_OPM_ENCRYPTED_PARAMETERS 구조의 데이터가 필요한 형식이 아닌 경우 오류 코드를 반환해야 합니다. 그렇지 않으면 DxgkDdiOPMSetSigningKeyAndSequenceNumbers 는 다음 일련의 작업을 수행해야 합니다.

  1. 적절한 프라이빗 키 및 암호화 체계를 사용하여 EncryptedParameters 가 가리키는 데이터의 암호를 해독합니다. 출력에 OPM 의미 체계가 있는 경우 디스플레이 미니포트 드라이버는 OPM 프라이빗 키를 사용하여 데이터의 암호를 해독해야 합니다. 출력에 COPP 의미 체계가 있는 경우 디스플레이 미니포트 드라이버는 COPP 프라이빗 키를 사용하여 데이터의 암호를 해독해야 합니다.
  2. 출력에 OPM 의미 체계가 있는 경우 암호 해독된 데이터가 RSAES-OAEP 인코딩 알고리즘으로 인코딩되었는지 확인합니다.
  3. 적어도 40바이트의 데이터가 암호 해독되었는지 확인합니다.
  4. 암호 해독된 데이터의 처음 16바이트에 포함된 난수가 ProtectedOutputHandle 매개 변수의 핸들이 전달되었을 때 디스플레이 미니포트 드라이버의 DxgkDdiOPMGetRandomNumber가 반환된 난수와 일치하는지 확인합니다.
  5. 128비트 AES 서명 키와 두 개의 32비트 시퀀스 번호를 캐시합니다.

보호된 출력 개체의 핸들이 DxgkDdiOPMSetSigningKeyAndSequenceNumbers에 전달되기 전에 DxgkDdiOPMGetRandomNumber에 전달됩니다. 보호된 각 출력 개체 핸들은 DxgkDdiOPMSetSigningKeyAndSequenceNumbers에 한 번만 전달됩니다.

DxgkDdiOPMSetSigningKeyAndSequenceNumbers를 페이징 가능으로 만들어야 합니다.

RSAES-OAEP 및 MGF1 매개 변수

RSAES-OAEP는 매개 변수가 있는 암호화 체계이며 MGF1은 매개 변수가 있는 마스크 생성 함수입니다. 다음은 OPM이 RSAES-OAEP 및 MGF1을 사용할 때 사용하는 매개 변수입니다. 다음 용어 및 RSA 암호화 표준에 대한 자세한 내용은 RSA 연구소보안 해시 웹 사이트를 참조하세요.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 dispmprt.h(Dispmprt.h 포함)
IRQL PASSIVE_LEVEL(설명 섹션 참조)

추가 정보

DxgkDdiOPMGetCOPPCompatibleInformation

DxgkDdiOPMCreateProtectedOutput

DXGKMDT_OPM_ENCRYPTED_PARAMETERS

DxgkDdiAddDevice

DxgkDdiOPMGetRandomNumber

DxgkDdiOPMGetInformation

DxgkDdiOPMConfigureProtectedOutput