Utilisation de la DDI OPM

Le sous-système du noyau graphique Microsoft DirectX (Dxgkrnl.sys) utilise le DDI OPM pour créer des sorties protégées par OPM, détruire les sorties protégées par OPM, obtenir des certificats, configurer des sorties protégées, obtenir des informations sur les sorties protégées et obtenir des informations sur la carte graphique. Le sous-système du noyau graphique DirectX obtient des pointeurs vers les fonctions DDI OPM lorsqu’il appelle la fonction DxgkDdiQueryInterface du pilote miniport d’affichage pour interroger l’interface identifiée par GUID_DEVINTERFACE_OPM et DXGK_OPM_INTERFACE_VERSION_1. La séquence suivante décrit comment le DDI OPM est généralement utilisé pour créer, manipuler et détruire des sorties protégées par OPM :

  1. Le sous-système du noyau graphique DirectX appelle la fonction DxgkDdiOPMCreateProtectedOutput pour créer une sortie protégée OPM. Une sortie protégée OPM correspond toujours à une seule sortie vidéo physique. DxgkDdiOPMCreateProtectedOutput retourne un handle à la sortie nouvellement créée.

  2. Le sous-système du noyau graphique DirectX appelle les fonctions DxgkDdiOPMGetCertificateSize et DxgkDdiOPMGetCertificate pour obtenir le certificat OPM ou le certificat COPP du pilote miniport d’affichage et sa taille.

    Notes

    DxgkDdiOPMCreateProtectedOutput, DxgkDdiOPMGetCertificateSize et DxgkDdiOPMGetCertificate sont les seules fonctions DDI OPM auxquelles le sous-système du noyau graphique DirectX ne passe pas de handle de sortie protégée.

  3. Le sous-système du noyau graphique DirectX appelle la fonction DxgkDdiOPMGetRandomNumber pour obtenir le nombre aléatoire de la sortie protégée.

  4. Le sous-système du noyau graphique DirectX transmet une mémoire tampon de 256 octets dans un appel à la fonction DxgkDdiOPMSetSigningKeyAndSequenceNumbers . La mémoire tampon contient des données chiffrées avec l’une des clés publiques du pilote miniport d’affichage. Pour plus d’informations sur les clés publiques, téléchargez le document Protection du contenu de sortie à partir du site web Protection du contenu de sortie et Windows Vista . La clé publique utilisée dépend de la sémantique de la sortie protégée. La clé publique dans le certificat OPM du pilote miniport d’affichage est utilisée si la sortie protégée a la sémantique OPM. La clé publique dans le certificat COPP du pilote miniport d’affichage est utilisée si la sortie protégée a la sémantique COPP. Le schéma de chiffrement utilisé pour chiffrer les données dépend également de la sémantique de la sortie protégée. Les données sont chiffrées avec l’algorithme RSA standard si la sortie protégée a la sémantique COPP et avec le schéma de chiffrement RSAES-OAEP si la sortie protégée a une sémantique OPM. Pour plus d’informations sur RSA, AES et RSAES-OAEP, consultez le site web rsa Laboratories . Le pilote miniport d’affichage utilise la clé privée et la méthode de déchiffrement appropriées pour déchiffrer les données. Un nombre aléatoire, deux numéros de séquence aléatoires et une clé AES 128 bits se trouvent dans les données déchiffrées. Le lecteur miniport d’affichage garantit que le nombre aléatoire correspond au nombre aléatoire retourné par le pilote lors de l’appel de sa fonction DxgkDdiDdiOPMGetRandomNumber . Le pilote stocke ensuite les deux numéros de séquence et la clé AES 128 bits.

  5. Le sous-système du noyau graphique DirectX peut désormais appeler la fonction DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation pour obtenir des informations à partir d’une sortie protégée. Le sous-système du noyau graphique DirectX peut également appeler DxgkDdiOPMConfigureProtectedOutput pour configurer une sortie protégée. DxgkDdiOPMGetInformation ne peut être appelé que si la sortie a une sémantique OPM et si DxgkDdiOPMGetCOPPCompatibleInformation peut être appelé uniquement si la sortie a une sémantique COPP. En règle générale, le sous-système du noyau graphique DirectX appelle DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation pour obtenir des informations sur la sortie, puis appelle DxgkDdiOPMConfigureProtectedOutput une ou plusieurs fois pour configurer la sortie. Ensuite, le sous-système du noyau graphique DirectX appelle à nouveau DxgkDdiDdiOPMGetInformation ou DxgkKDdiOPMGetCOPPCompatibleInformation . Le sous-système du noyau graphique DirectX peut obtenir les types d’informations suivants en appelant DxgkDdiOPMGetInformation ou DxgkDdiOPMGetCOPPCompatibleInformation :

    Le sous-système du noyau graphique DirectX peut modifier les paramètres suivants en appelant DxgkDdiOPMConfigureProtectedOutput :

    • Niveau de protection actuel de l’un des types de protection de la sortie. Par exemple, DxgkDdiOPMConfigureProtectedOutput peut activer ou désactiver HDCP et peut désactiver la protection ACP ou modifier le niveau de protection ACP actuel.
    • SRM HDCP actuel utilisé par la sortie protégée.
    • Norme de signalisation actuelle que la sortie protégée utilise. Cette modification ne peut être effectuée que si la sortie a une sémantique COPP.
  6. Le sous-système du noyau graphique DirectX appelle DxgkDdiOPMDestroyProtectedOutput lorsqu’il termine l’utilisation de l’objet de sortie protégé.