Hiérarchisation des suites de chiffrement Schannel

API de chiffrement : Next Generation (CNG) fournit des fonctions qui interrogent, ajoutent, suppriment et hiérarchisent les suites de chiffrement qu’un fournisseur prend en charge. Les modifications apportées à l’aide de ces fonctions prennent effet immédiatement et ne nécessitent pas de redémarrage d’un serveur actif.

Notes

Vous pouvez également modifier la liste des suites de chiffrement en configurant les paramètres de stratégie de groupe de commandes de la suite de chiffrement SSL à l’aide du composant logiciel enfichable objet stratégie de groupe dans la console de gestion Microsoft.

Pour configurer le paramètre de stratégie de groupe de commandes de la suite de chiffrement SSL

  1. À l’invite de commandes, entrez gpedit.msc. L’éditeur d’objets stratégie de groupe s’affiche.
  2. Développez la configuration de l’ordinateur, les modèles d’administration, le réseau, puis cliquez sur Configuration SSL Paramètres.
  3. Sous Configuration SSL Paramètres, cliquez sur le paramètre Ordre de la suite de chiffrement SSL.
  4. Dans le volet Ordre de la suite de chiffrement SSL , faites défiler vers le bas du volet.
  5. Suivez les instructions étiquetées Comment modifier ce paramètre.

Il est nécessaire de redémarrer l’ordinateur après avoir modifié ce paramètre pour que les modifications prennent effet.

 

La liste des suites de chiffrement est limitée à 1023 caractères.

Pour hiérarchiser les suites de chiffrement Schannel, consultez les exemples suivants.

Liste des suites de chiffrement prises en charge

Appelez la fonction BCryptEnumContextFunctions pour répertorier les suites de chiffrement qu’un fournisseur prend en charge dans l’ordre de priorité.

L’exemple suivant montre comment utiliser la fonction BCryptEnumContextFunctions pour répertorier les suites de chiffrement prises en charge.

#include <stdio.h>
#include <windows.h>
#include <bcrypt.h>


void main()
{

   HRESULT Status = ERROR_SUCCESS;
   DWORD   cbBuffer = 0;
   PCRYPT_CONTEXT_FUNCTIONS pBuffer = NULL;

    Status = BCryptEnumContextFunctions(
        CRYPT_LOCAL,
        L"SSL",
        NCRYPT_SCHANNEL_INTERFACE,
        &cbBuffer,
        &pBuffer);
    if(FAILED(Status))
    {
        printf_s("\n**** Error 0x%x returned by BCryptEnumContextFunctions\n", Status);
        goto Cleanup;
    }
                
    if(pBuffer == NULL)
    {
        printf_s("\n**** Error pBuffer returned from BCryptEnumContextFunctions is null");
        goto Cleanup;
    }

    printf_s("\n\n Listing Cipher Suites ");
    for(UINT index = 0; index < pBuffer->cFunctions; ++index)
    {
        printf_s("\n%S", pBuffer->rgpszFunctions[index]);
    }

Cleanup:
    if (pBuffer != NULL)
    {
        BCryptFreeBuffer(pBuffer);
    }
}


Ajout, suppression et hiérarchisation des suites de chiffrement

Appelez les fonctions BCryptAddContextFunction et BCryptRemoveContextFunction pour ajouter et supprimer des suites de chiffrement dans la liste des suites de chiffrement prises en charge.

Lors de l’ajout d’une suite de chiffrement, définissez la valeur du paramètre dwPosition de la fonction BCryptAddContextFunction sur CRYPT_PRIORITY_TOP pour l’ajouter en haut de la liste hiérarchisée ou pour CRYPT_PRIORITY_BOTTOM l’ajouter au bas de la liste.

Pour hiérarchiser la liste des suites de chiffrement, supprimez toutes les suites de chiffrement de la liste, puis ajoutez des suites de chiffrement à la liste dans l’ordre souhaité.

L’exemple suivant montre comment ajouter une suite de chiffrement en haut de la liste hiérarchisée du fournisseur Microsoft Schannel par défaut.

#include <stdio.h>
#include <windows.h>
#include <bcrypt.h>


void main()
{
    
    SECURITY_STATUS Status = ERROR_SUCCESS;
    LPWSTR wszCipher = (L"RSA_EXPORT1024_DES_CBC_SHA");
       
    Status = BCryptAddContextFunction(
                CRYPT_LOCAL,
                L"SSL",
                NCRYPT_SCHANNEL_INTERFACE,
                wszCipher,
                CRYPT_PRIORITY_TOP);
}


L’exemple suivant montre comment supprimer une suite de chiffrement de la liste hiérarchisée du fournisseur Microsoft Schannel par défaut.

#include <stdio.h>
#include <windows.h>
#include <bcrypt.h>


void main()
{
    
    SECURITY_STATUS Status = ERROR_SUCCESS;
      LPWSTR wszCipher = (L"TLS_RSA_WITH_RC4_128_SHA");
       
    Status = BCryptRemoveContextFunction(
                CRYPT_LOCAL,
                L"SSL",
                NCRYPT_SCHANNEL_INTERFACE,
                wszCipher);
}