Delen via


Zwakke cryptografische algoritmen uitschakelen in certificaatvalidatie

In dit artikel wordt beschreven hoe u zwakke cryptografische algoritmen uitschakelt met behulp van beleid op Windows en Windows Server. Dit beleid is alleen van toepassing op X.509-certificaatvalidatie, wanneer Windows digitale certificaten controleert op TLS-verbindingen, ondertekening van programmacode en andere beveiligingsscenario's.

U kunt Windows configureren voor het weigeren van certificaten die gebruikmaken van verouderde algoritmen, zoals MD5 en SHA1, of RSA-sleutels die te kort zijn om te beveiligen. Het weigeren van zwakke certificaten helpt uw omgeving te beschermen tegen certificaten die gemakkelijk kunnen worden aangetast of vervalst. Met behulp van deze beleidsregels kunt u het volgende doen:

  • Opt-innen of opt-outen van elke beleidsregel afzonderlijk.

  • Logboekregistratie per beleid inschakelen (onafhankelijk van ander beleid). Logboekregistratie is standaard uitgeschakeld.

  • Geef een locatie op waarnaar uitgeschakelde certificaten worden gekopieerd.

  • Configureer beleidsregels voor zowel hash-algoritmen als asymmetrische algoritmen.

Beleidssyntaxis

Het cryptografische algoritmebeleid wordt gedefinieerd in het Windows-register en ingesteld met behulp van de registereditor of certutil. De beheerder stelt het beleid in de volgende registersleutel in:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CertDllCreateCertificateChainEngine\Config

Beleidsregels worden gedefinieerd met behulp van de volgende syntaxis:

Weak<CryptoAlg><ConfigType><ValueType>

CryptoAlg, ConfigTypeen ValueType zijn aanwezig in alle beleidsnamen.

Een voorbeeld hiervan is WeakMD5ThirdPartyFlags of WeakRSAAllMinBitLength.

Voor elk beleid kunnen de volgende waarden worden ingesteld:

  • CryptoAlg mogelijke waarden:

    • Md5 - MD5-hash-algoritme.
    • Sha1 - SHA1 hash-algoritme.
    • Rsa - RSA asymmetrisch algoritme.
    • Dsa - Asymmetrisch DSA-algoritme.
    • Ecdsa - ECDSA asymmetrisch algoritme.
  • ConfigType mogelijke waarden:

    • ThirdParty - Beleid wordt alleen toegepast op certificaten onder hoofdmappen van derden.
    • All - Beleid wordt toegepast op alle certificaten, zelfs onder bedrijfswortels.
  • ValueType mogelijke waarden:

    • Vlaggen - REG_DWORD gegevenstype dat kan worden ingesteld om het hash-algoritme uit te schakelen of een minimale sleutellengte in te schakelen. In de volgende sectie wordt uiteengezet hoe de vlaggen te berekenen.

    • MinBitLength - REG_DWORD gegevenstype dat de minimale lengte van de openbare sleutel in bits aangeeft. MinBitLength is alleen van toepassing op sleutelalgoritmenbeleid. Opgegeven als een decimale waarde van de minimale sleutellengte in bits. 1024 vertegenwoordigt bijvoorbeeld een minimale sleutellengte van 1024 bits.

    • AfterTime - REG_BINARY gegevenstype dat een 8-byte FILETIME bevat. De controle van het zwakke cryptoalgoritme is uitgeschakeld voor bestanden met een tijdstempel vóór deze tijd. Deze configuratiewaarde is niet van toepassing op tijdstempelketens.

    • Sha256Allow - REG_SZ of REG_MULTI_SZ het gegevenstype dat de lijst met SHA256-vingerafdrukken (ASCII_HEX opgemaakt) bevat die zwakke certificaten identificeren die expliciet moeten worden toegestaan. Niet-ASCII_HEX tekens in de tekenreeks worden overgeslagen, waardoor ingesloten spaties zijn toegestaan.

Markeringen voor waardetype

Als u de vlaggen voor een zwak cryptografisch algoritmebeleid wilt definiëren, kunt u de volgende REG_DWORD waarden gebruiken. Deze vlaggen worden gebruikt om specifiek gedrag voor het cryptografische algoritmebeleid in of uit te schakelen.

U kunt deze vlaggen combineren met behulp van een bitsgewijze OR-bewerking om een samengestelde vlagwaarde te maken die meerdere gedragingen vertegenwoordigt.

Als u bijvoorbeeld logboekregistratie wilt inschakelen en het algoritme voor alle EKU's wilt uitschakelen, kunt u de CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG en CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG vlaggen combineren. Als u deze vlaggen wilt combineren, stelt u de waarde in op 0x80010004 (wat 0x80000000 | 0x00010000 | 0x00000004 is).

Vouw de volgende secties uit om een beschrijving te zien van de vlaggen die kunnen worden ingesteld voor zwak cryptografisch algoritmebeleid:

Zwakke cryptografische instellingen inschakelen

De CERT_CHAIN_ENABLE_WEAK_SETTINGS_FLAG vlag wordt gebruikt om zwakke instellingen voor cryptografische algoritmen in of uit te schakelen voor een specifiek cryptografisch algoritmebeleid. Deze vlag is essentieel voor het beheren van de manier waarop zwakke algoritmen worden verwerkt in het bouwproces van de certificaatketen.

Hexadecimale waarde: 0x80000000

Hier volgen enkele voorbeelden om te laten zien hoe de CERT_CHAIN_ENABLE_WEAK_SETTINGS_FLAG vlag (0x80000000) van invloed is op het gedrag van het beleid:

  • Als deze vlag niet is ingesteld voor een bepaald Weak<CryptoAlg><ConfigType>Flags beleid, worden alle andere vlaggen en registerwaarden voor dat beleid genegeerd. Als u bijvoorbeeld andere vlaggen configureert voor WeakMD5ThirdPartyFlags maar niet instelt 0x80000000, hebben deze instellingen geen effect.

  • Wanneer een beheerder deze vlag instelt voor een specifiek Weak<CryptoAlg><ConfigType>Flags beleid, overschrijven de beleidsinstellingen die zijn gedefinieerd in het register het standaardgedrag van het besturingssysteem voor dat cryptografische algoritme en dat configuratietype.

  • Als de vlag is ingesteld in Weak<CryptoAlg>AllFlags beleid, is het resultaat Weak<CryptoAlg>ThirdPartyFlags een combinatie van de waarden die zijn gedefinieerd in beide Weak<CryptoAlg>ThirdPartyFlags en Weak<CryptoAlg>AllFlags, met uitzondering van aan logboekregistratie gerelateerde vlaggen, die niet worden gecombineerd. De effectieve vlaggen van derden worden bijvoorbeeld berekend als:
    ThirdPartyFlags |= AllFlags & ~(CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG | CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG);

  • Voor instellingen voor tijd- en sleutellengte is de resulterende Weak<CryptoAlg>ThirdPartyAfterTime waarde de vroegste waarde tussen Weak<CryptoAlg>AllAfterTime en Weak<CryptoAlg>ThirdPartyAfterTime (als beide zijn gedefinieerd en niet-nul). Op dezelfde manier is de resulterende Weak<KeyCryptoAlg>ThirdPartyMinBitLength waarde de grootste waarde tussen Weak<KeyCryptoAlg>AllMinBitLength en Weak<KeyCryptoAlg>ThirdPartyMinBitLength.

Deze voorbeelden laten zien hoe de vlag bepaalt of aangepaste beleidsinstellingen worden toegepast. In het voorbeeld wordt ook uitgelegd hoe gecombineerde waarden worden berekend wanneer configuraties 'Alle' en 'ThirdParty' worden gedefinieerd.

Logboekregistratie inschakelen

Wanneer deze vlag is ingesteld, worden zwakke certificaten die tijdens het bouwproces van de certificaatketen worden geïdentificeerd, vastgelegd in de map die is opgegeven door de CERT_CHAIN_WEAK_SIGNATURE_LOG_DIR_VALUE_NAME registerwaarde. Met logboekregistratie kunnen beheerders zwakke certificaten controleren en er actie op ondernemen die mogelijk beveiligingsrisico's vormen.

Hexadecimale waarde: 0x00000004

Alleen audit-logboekregistratie

Wanneer de CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG vlag is ingesteld, worden alleen zwakke handtekeningfouten vastgelegd en worden er geen ketenbouwfouten geretourneerd. In deze modus worden zwakke handtekeningfouten niet geretourneerd, waardoor een audit-modus mogelijk is waarbij zwakke certificaten worden geregistreerd zonder dat dit invloed heeft op het ketenbouwproces.

Hexadecimale waarde: 0x00000008

Alle EKU's uitschakelen

De CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG vlag wordt gebruikt om het algoritme dat overeenkomt met het beleid voor alle Enhanced Key Usages (EKU's) uit te schakelen. Dit betekent dat het opgegeven cryptografische algoritme niet wordt gebruikt voor certificaten, ongeacht hun EKU.

Hexadecimale waarde: 0x00010000

Serververificatie-EKUs voor Opt-In uitschakelen

De CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG vlag wordt gebruikt om het algoritme dat overeenkomt met het beleid voor serververificatie-EKU's uit te schakelen, maar alleen voor toepassingen die zich voor deze wijziging aanmelden met behulp van de CERT_CHAIN_OPT_IN_WEAK_SIGNATURE instelling. Met het zwakke handtekeningbeleid kunnen beheerders gedetailleerdere controle uitoefenen over de betrokken toepassingen.

Hexadecimale waarde: 0x00040000

Uitgeschakelde serververificatie-EKU's

De CERT_CHAIN_DISABLE_SERVER_AUTH_WEAK_FLAG vlag wordt gebruikt om het algoritme dat overeenkomt met het beleid voor serververificatie-EK's uit te schakelen. Dit betekent dat het opgegeven cryptografische algoritme niet wordt gebruikt voor certificaten met EKU's voor serververificatie, ongeacht of toepassingen zich aanmelden of niet.

Hexadecimale waarde: 0x00100000

EKU's voor code-ondertekening uitschakelen

De CERT_CHAIN_DISABLE_CODE_SIGNING_WEAK_FLAG-vlag wordt gebruikt om het algoritme uit te schakelen dat overeenkomt met het beleid voor Code Signing Enhanced Key Usages (EKU's). Dit betekent dat het opgegeven cryptografische algoritme niet wordt gebruikt voor codeondertekeningscertificaten.

Hexadecimale waarde: 0x00400000

Schakel Code Signing EKU's uit voor binaries die van het web zijn gedownload

De CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG vlag wordt gebruikt om het algoritme uit te schakelen dat overeenkomt met het beleid voor het ondertekenen van code-EKU's, maar alleen wanneer het binaire bestand wordt gedownload van het web.

Hexadecimale waarde: 0x00800000

Tijdstempel-EKU's uitschakelen

De CERT_CHAIN_DISABLE_TIMESTAMP_WEAK_FLAG vlag wordt gebruikt om het algoritme dat overeenkomt met het beleid voor timestamp Enhanced Key Usages (EKUs) uit te schakelen. Dit betekent dat het opgegeven cryptografische algoritme niet wordt gebruikt voor tijdstempelcertificaten.

Hexadecimale waarde: 0x04000000

Tijdstempel-EKU's uitschakelen voor binaire bestanden die zijn gedownload van het web

De CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG vlag wordt gebruikt om het algoritme dat overeenkomt met het beleid voor tijdstempel-EKU's uit te schakelen, maar alleen wanneer het binaire bestand wordt gedownload van het web.

Hexadecimale waarde: 0x08000000

Vereiste voorwaarden

Voor het configureren van zwak cryptografisch algoritmebeleid hebt u de volgende vereisten nodig:

  • Lokale beheerderstoegang om registerinstellingen te wijzigen.

  • (Optioneel) Een specifieke logboekmap als logboekregistratie is geactiveerd voor zwakke certificaatdetectie.

U moet ook de volgende informatie gereed hebben om het beleid te configureren:

  • De naam van het cryptografische algoritme (bijvoorbeeld MD5, SHA256, RSA, DSA, ECDSA).

  • Voor asymmetrische algoritmen is de minimale sleutelgrootte vereist (bijvoorbeeld 1024 bits voor RSA).

  • Of het beleid van toepassing moet zijn op certificaten die zijn afgeleid van externe rootcertificeringsautoriteiten of op alle certificaten.

  • De tijd voordat de beleidscontrole is uitgeschakeld (voor certificaten voor ondertekening van programmacode die worden gebruikt in binaire bestanden met een tijdstempel).

  • De typen certificaten of Enhanced Key Usages (EKU's) waar het beleid op van toepassing is, zoals:

    • Alle certificaten

    • Serververificatie-EKU

    • EKU voor ondertekening van code

    • Tijdstempeling EKU

  • Of het beleid alleen van toepassing is op binaire bestanden die zijn gedownload van internet of op alle binaire bestanden.

  • Eventuele uitzonderingen voor specifieke certificaten voor ondertekening van code of tijdstempels, geïdentificeerd door hun SHA2-vingerafdruk.

Een zwak cryptografisch algoritmebeleid configureren

Als u een zwak cryptografisch algoritmebeleid wilt configureren, kunt u het certutil opdrachtregelprogramma gebruiken of het Windows-register rechtstreeks wijzigen. Selecteer de methode die het beste bij uw behoeften past.

Als u een zwak cryptografisch algoritmebeleid wilt configureren, kunt u het certutil -setreg chain opdrachtregelprogramma gebruiken. Met dit hulpprogramma kunt u beleidsinstellingen voor zwakke cryptografische algoritmen weergeven, configureren en verwijderen. Zie certutil voor meer informatie over het opdrachtregelprogramma.

Voer de volgende stappen uit om een zwak cryptografisch algoritmebeleid te configureren:

  1. Bepaal het cryptografische algoritme dat u wilt uitschakelen en het configuratietype (bijvoorbeeld derden of alle) met behulp van de vlaggen en waarden die worden beschreven in de sectie Beleidssyntaxis . Voer een bitsgewijze OR-bewerking uit om de vlaggen naar behoefte te combineren en de resulterende waarde vast te leggen.

  2. Open een opdrachtprompt met beheerdersbevoegdheden.

  3. Gebruik de volgende opdracht om een nieuw, zwak cryptografisch algoritme vlaggebasd beleid te maken:

    certutil -setreg chain\Weak<CryptoAlg><ConfigType>Flags <value>
    

    Vervang <CryptoAlg>, <ConfigType>en <value> door de juiste waarden voor uw beleid.

    Als u bijvoorbeeld MD5 wilt uitschakelen voor alle SSL-serververificatiecertificaten onder ca's van derden, kunt u de volgende opdrachten gebruiken:

    certutil -setreg chain\WeakMD5ThirdPartyFlags 0x80100000
    
  4. Gebruik de volgende opdracht om een nieuw asymmetrisch algoritmebeleid te maken:

    certutil -setreg chain\Weak<CryptoAlg><ConfigType>MinBitLength <value>
    

    Vervang <CryptoAlg>, <ConfigType>en <value> door de juiste waarden voor uw beleid.

    Als u bijvoorbeeld RSA 1024 wilt uitschakelen onder hoofd-CA's van derden, kunt u de volgende opdrachten gebruiken:

    certutil -setreg chain\WeakRSAThirdPartyMinBitLength 1024
    
  5. Gebruik de volgende opdracht om een nieuw beleid op basis van tijd te maken:

    certutil -setreg chain\Weak<CryptoAlg><ConfigType>AfterTime <value>
    

    Vervang <CryptoAlg>, <ConfigType>en <value> door de juiste waarden voor uw beleid.

    Als u bijvoorbeeld MD5 wilt uitschakelen voor alle SSL-serververificatiecertificaten onder ca's van derden vóór 1 maart 2009, kunt u de volgende opdrachten gebruiken:

    certutil -setreg chain\WeakMD5ThirdPartyAfterTime @03/01/2009
    

Geconfigureerde beleidsregels weergeven

Als u het momenteel geconfigureerde zwakke cryptografische algoritmebeleid wilt weergeven, kunt u het certutil opdrachtregelprogramma of de Windows-registereditor gebruiken. Selecteer de methode die het beste bij uw behoeften past.

Voer de volgende stappen uit om het momenteel geconfigureerde zwakke cryptografische algoritmebeleid weer te geven met behulp van het certutil opdrachtregelprogramma:

  1. Open een opdrachtprompt met beheerdersbevoegdheden.

  2. Voer de volgende opdracht uit om het standaardgedrag van het besturingssysteem voor zwakke cryptografische algoritmen te zien:

    certutil -getreg chain\default
    
  3. Voer de volgende opdracht uit om het momenteel geconfigureerde zwakke cryptografische algoritmebeleid weer te geven:

    certutil -getreg chain\Weak<CryptoAlg><ConfigType>Flags
    

    Vervang <CryptoAlg> en <ConfigType> door de juiste waarden voor uw beleid.

    Als u bijvoorbeeld de MD5-vlaggen van derden wilt weergeven, kunt u de volgende opdracht gebruiken:

    certutil -getreg chain\WeakMD5ThirdPartyFlags
    
  4. Als u alle geconfigureerde beleidsregels voor zwakke cryptografische algoritmen wilt weergeven, kunt u de volgende opdracht uitvoeren:

    certutil -getreg chain
    

Logboekregistratie inschakelen

Het Zwakke Crypto-framework in Windows biedt een mechanisme voor het registreren van zwakke cryptografische certificaten. Met dit mechanisme kunnen beheerders certificaten bewaken en uitvoeren die als zwak worden beschouwd volgens de geconfigureerde instellingen.

U kunt logboekregistratie inschakelen met behulp van het certutil opdrachtregelprogramma of door het Windows-register rechtstreeks te wijzigen. Selecteer de methode die het beste bij uw behoeften past.

Voer de volgende stappen uit om logboekregistratie in te schakelen voor zwakke cryptografische certificaten met behulp van het certutil opdrachtregelprogramma:

  1. Maak een logboekmap waarin de zwakke certificaten worden vastgelegd. Maak bijvoorbeeld een map op C:\Log en zorg ervoor dat deze over de juiste machtigingen beschikt.

  2. Gebruik de volgende opdracht om de logboekmap in te stellen:

    certutil -setreg chain\WeakSignatureLogDir c:\log
    
  3. Als u logboekregistratie wilt inschakelen, stelt u de logboekregistratievlag in voor een bestaand zwak cryptobeleid. Combineer de CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG (0x00000004) of CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG (0x00000008) met de bestaande vlaggen voor het beleid. Als u bijvoorbeeld logboekregistratie wilt inschakelen voor alle EKU-zwakke MD5-certificaten van derden, kunt u de volgende opdracht gebruiken:

    certutil -setreg chain\WeakMD5ThirdPartyFlags 0x80010004