A TLS 1.0 problémájának megoldása, 2. kiadás

Ez a dokumentum naprakész útmutatást nyújt a Transport Layer Security (TLS) protokoll 1.0-s verziója függőségeinek gyors azonosításához és eltávolításához a Microsoft operációs rendszereire épülő szoftverekben, illetve részletes információkat tartalmaz a Microsoft által bevezetett termékmódosításokról és új funkciókról saját ügyfelei és online szolgáltatásai védelmének biztosításához. Ez a dokumentum azért készült, hogy kiindulópontként szolgáljon a TLS 1.2+ hálózati környezet migrálási tervének létrehozásához. Bár az itt tárgyalt megoldások hasznosak lehetnek a TLS 1.0 eltávolításához a nem Microsoft operációs rendszerek vagy titkosítási kódtárak esetében, a jelen dokumentum elsősorban nem ezekkel foglalkozik.

A TLS 1.0 egy biztonsági protokoll, amelyet 1999-ben mutattak be a számítógépes hálózatok titkosítási csatornáinak létrehozásához. A Microsoft a Windows XP/Server 2003 bemutatása óta támogatja ezt a protokollt. Bár a modern operációs rendszerekben már nem ez az alapértelmezett biztonsági protokoll, a TLS 1.0 a visszamenőleges kompatibilitás miatt továbbra is támogatott. A jogszabályi követelmények változása és a TLS 1.0 újonnan felfedezett biztonsági rései miatt a vállalatoknak érdemes a TLS 1.0-t teljeskörűen letiltani.

A Microsoft azt javasolja az ügyfeleinek, hogy előzzék meg ezt a problémát azzal, hogy eltávolítják a TLS 1.0 függőségeit a környezeteikben, és ahol ez lehetséges, az operációs rendszer szintjén letiltják a TLS 1.0-t. Mivel a szoftveripar hosszú ideig támogatta a TLS 1.0-t, határozottan ajánlott, hogy a TLS 1.0 kivezetési terve a következőket magába foglalja:

  • Kódanalízis a TLS 1.0 vagy régebbi biztonsági protokollok szoftveresen kötött előfordulásai kereséséhez/kijavításához.

  • Hálózativégpont-vizsgálat és forgalomelemzés a TLS 1.0 vagy régebbi protokollt használó operációs rendszerek azonosításához.

  • A TLS 1.0 letiltását követően teljes regressziós teszt futtatása az alkalmazáskészleten.

  • A régi operációs rendszerek és fejlesztési kódtárak/keretrendszerek migrálása olyan verzióra, amelyek alapértelmezés szerint kompatibilisek a TLS 1.2-vel.

  • A vállalata által használt operációs rendszerek kompatibilitásvizsgálata, hogy a TLS 1.2 esetleges támogatási problémáinak azonosításához.

  • Együttműködés üzleti partnereivel és ügyfeleivel, hogy értesüljenek a TLS 1.0 kivezetésére irányuló tevékenységéről.

  • Annak feltérképezése, hogy esetlegesen mely kliensek nem tudnak majd csatlakozni a kiszolgálóihoz, ha letiltja a TLS 1.0-t.

E dokumentum célja olyan javaslatok megfogalmazása, amelyek segíthetnek kiküszöbölni a TLS 1.0 letiltását megakadályozó műszaki problémákat, miközben átláthatóbbá is teszik a módosítás hatását a saját ügyfelei számára. E vizsgálatok elvégzése segíthet csökkenteni a TLS 1.0 következőkben ismertetett biztonsági réseinek üzleti tevékenységre gyakorolt hatását. Ez a dokumentum úgy lett összeállítva, hogy a TLS 1.0 kivezetésére vonatkozó hivatkozások a TLS 1.1-re is érvényesek legyenek.

A vállalati szoftverfejlesztők esetében stratégiai igény mutatkozik a jövőben is biztonságosan használható és rugalmas megoldásokra való átállásra (ez titkosítási rugalmasság néven is ismert), hogy így felkészülhessenek a biztonsági protokollokkal kapcsolatos jövőbeli problémákra. Bár ez a dokumentum rugalmas megoldásokat javasol a TLS szoftveres kötöttségének megszüntetésére, a szélesebb körű titkosítási rugalmassági megoldásokat nem tárgyalja.

A Microsoft TLS 1.0-s implementációjának aktuális állapota

A Microsoft TLS 1.0-s implementációja esetében nincsenek ismert biztonsági rések. A potenciális jövőbeli protokoll-leminősítési támadások és egyéb, nem kizárólag a Microsoft implementációjára vonatkozó TLS 1.0 biztonsági rések miatt javasolt a TLS 1.2-nél régebbi biztonsági protokollok függőségeinek eltávolítása, ahol lehetséges (TLS 1.1/1.0/ SSLv3/SSLv2).

A TLS 1.2+ protokollra való migrálás tervezése során a fejlesztőknek és a rendszergazdáknak tisztában kell lenniük a protokollverzió lehetséges szoftveres kötöttségeivel a saját alkalmazottaik és partnereik által fejlesztett alkalmazások esetében. Ebben az esetben a szoftveres kötöttség azt jelenti, hogy a használt TLS-verzió elavult és kevésbé biztonságos, mint az új verziók. A szoftveresen kötött verzióknál újabb TLS-verziók nem használhatók a kérdéses program módosítása nélkül. Az ilyen jellegű problémákat nem lehet kezelni forráskód-módosítás és szoftverfrissítés üzembe helyezése nélkül. A tesztelési és támogatási célból szoftveresen kötött protokollverzió bevett megoldás volt a múltban, mivel a különböző böngészők és operációs rendszerek eltérő szintű TLS-támogatással rendelkeztek.

A TLS támogatott verziói a Windowsban

Számos operációs rendszer alapértelmezés szerint elavult TLS-verziót használ, vagy olyan felső határokat támogat, amelyek figyelmet igényelnek.

1. ábra: Biztonsági protokoll támogatása operációsrendszer-verzió szerint

Windows operációs rendszer SSLv2 SSLv3 TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3
Windows Vista Engedélyezve Engedélyezve Engedélyezve Nem támogatott Nem támogatott Nem támogatott
Windows Server 2008 Engedélyezve Engedélyezve Engedélyezve Letiltva* Letiltva* Nem támogatott
Windows 7 (WS2008 R2) Engedélyezve Engedélyezve Engedélyezve Letiltva* Letiltva* Nem támogatott
Windows 8 (WS2012) Disabled (Letiltva) Engedélyezve Engedélyezve Engedélyezve Engedélyezve Nem támogatott
Windows 8.1 (WS2012 R2) Disabled (Letiltva) Engedélyezve Engedélyezve Engedélyezve Engedélyezve Nem támogatott
Windows 10 Disabled (Letiltva) Engedélyezve Engedélyezve Engedélyezve Engedélyezve Nem támogatott
Windows 11 Disabled (Letiltva) Engedélyezve Engedélyezve Engedélyezve Engedélyezve Engedélyezve
Windows Server 2016 Nem támogatott Disabled (Letiltva) Engedélyezve Engedélyezve Engedélyezve Nem támogatott
Windows Server 2016 Nem támogatott Disabled (Letiltva) Engedélyezve Engedélyezve Engedélyezve Nem támogatott
Windows Server 2019 Nem támogatott Disabled (Letiltva) Engedélyezve Engedélyezve Engedélyezve Nem támogatott
Windows Server 2019 GS kiadás Nem támogatott Disabled (Letiltva) Disabled (Letiltva) Disabled (Letiltva) Engedélyezve Nem támogatott
Windows Server 2022 Nem támogatott Disabled (Letiltva) Disabled (Letiltva) Disabled (Letiltva) Engedélyezve Engedélyezve

A Windows Server 2019 GS kiadás Microsoft SDL-kompatibilis, a TLS 1.2 csak korlátozott titkosítási csomagokkal rendelkezik.

A Windows Server 2022 kiadás a Microsoft SDL-kompatibilis, a TLS 1.2 és a TLS 1.3 csak korlátozott titkosítási csomagokkal rendelkezik.

A TLS 1.1/1.2 engedélyezhető a Windows Server 2008-on ezen az opcionális Windows Update-csomagon keresztül .

A TLS 1.0/1.1 IE/Edge platformon való kivezetésével kapcsolatban tekintse meg a TLS-kapcsolatok Microsoft Edge és Internet Explorer 11 platformos korszerűsítését ismertető, a Microsoft Edge helykompatibilitási módosításaival foglalkozó és a TLS/1.0 és TLS/1.1 az új Edge böngészőben történő letiltását ismertető cikkeket

Az online szolgáltatásokhoz történő kapcsolódáskor a különböző ügyfelek által igényelt TLS-verzió gyors meghatározásához tekintse meg a kézfogás-szimulációval foglalkozó részt a Qualys SSL Labs webhelyén. Ez a szimuláció magában foglalja az egyes gyártók ügyfél operációs rendszer/böngésző kombinációit. Részletes példát a dokumentum végén található A függelékben talál, amely ismerteti a TLS protokollverziókat a különböző szimulált ügyfél operációs rendszer/böngésző kombinációk esetében a www.microsoft.com webhelyhez történő csatlakozáskor.

Ha még nem tette meg, határozottan javasolt a vállalata, az ügyfelei és a partnerei által használt operációs rendszerek feltérképezése (az utóbbi kettőt felkeresés/kommunikáció révén, vagy legalább HTTP-felhasználó/ügynök sztringgyűjtemény formában). Ezt tovább bővítheti a vállalati hálózat peremén végrehajtott forgalmi elemzésekkel. Ebben az esetben a forgalmi elemzés azokat a TLS-verziókat adja vissza, amelyeket sikeresen egyeztettek a szolgáltatásaihoz csatlakozó ügyfelek/partnerek, de maga a forgalom titkosított marad.

A Microsoft mérnöki fejlesztései a TLS 1.0-függőségek megszüntetéséhez

A jelen dokumentum v1 verziójának kiadása óta a Microsoft számos szoftverfrissítést és új funkciót implementált a TLS 1.0 kivezetésének támogatásához. Ezek közé tartoznak:

  • IIS egyéni naplózás: az ügyfél IP-cím/felhasználói ügynök sztring, a szolgáltatási URI, a TLS protokollverzió és a titkosítócsomag egyeztetéséhez.

    • Ezzel a naplózási megoldással a rendszergazdák végre kvantifikálhatják az ügyfeleik kitettségét a gyenge TLS-eknek.
  • SecureScore – A SecureScore portál létrehozásának célja, hogy olyan információt szolgáltasson, amellyel segíti az Office 365 bérlői rendszergazdákat az alacsony szintű TLS-használatuk azonosításában, mivel a TLS 1.0 2018 októbere óta nem támogatott az Office 365-ben.

    • Ez a portál az Office 365 bérlői rendszergazdák számára nyújt hasznos információkat arról, hogyan érjék el azon ügyfeleiket, akik esetleg nincsenek tisztában saját TLS 1.0-függőségeikkel.

    • További információért látogasson el ide: https://securescore.microsoft.com/.

  • A .NET-keretrendszer frissítései az alkalmazásszintű szoftveres kötöttség megszüntetéséhez és a keretrendszerből örökölt TLS 1.0-függőségek létesítésének megakadályozásához.

  • Fejlesztői útmutató és szoftverfrissítések jelentek meg, amelyek segítenek az ügyfeleknek azonosítani és megszüntetni a gyenge TLS:Transport Layer Security (TLS) ajánlott eljárásait a .NET-keretrendszer

    • FYI: A .NET 4.5 vagy újabb verziót célzó összes alkalmazást valószínűleg módosítani kell a TLS 1.2 támogatásához.
  • A TLS 1.2-t elérhetővé lett téve Windows Server 2008 SP2 és XP POSReady 2009 rendszereken is, az örökölt kötelezettségekkel rendelkező ügyfelek számára.

  • A 2019 elején megtett további bejelentésekkel a jelen dokumentum soron következő frissítési foglalkoznak.

TLS 1.0-függőségek keresése és kijavítása a kódban

A Windows operációs rendszer által biztosított titkosítási kódtárakat és biztonsági protokollokat használó termékek esetében az alábbi lépések segíthetnek azonosítani a szoftveresen kötött TLS 1.0 előfordulását az alkalmazásokban:

  1. Keresse meg az AcquireCredentialsHandle() összes előfordulását. Ezzel átláthatóbbá teszi a felülvizsgálatot végzők számára azokat a kódblokkokat, amelyek esetében a TLS szoftveresen kötött lehet.

  2. Tekintse át a SecPkgContext_SupportedProtocols és SecPkgContext_Csatlakozás ionInfo struktúrák minden példányát a merevlemezes TLS-hez.

  3. A natív kódban adjon meg a grbitEnabledProtocols minden nem nulla értékű hozzárendelése esetében nulla értéket. Ez lehetővé teszi az operációs rendszer számára az alapértelmezett TLS-verzió használatát.

  4. Ha engedélyezve van, tiltsa le a FIPS-módot, mivel az ütközést okozhat a jelen dokumentumban ismertetett, kifejezetten a TLS 1.0/1.1 letiltására szolgáló beállításokkal. További információkat a B függelékben talál.

  5. Frissítse és fordítsa le újból a Server 2012 vagy régebbi rendszeren üzemeltetett, WinHTTP-t használó alkalmazásokat.

    1. Felügyelt alkalmazások – hozza létre újra őket, és módosítsa a célt a legfrissebb .NET-keretrendszerverzióra

    2. Az alkalmazások esetében kód hozzáadására van szükség a WinHttpSetOption segítségével a TLS 1.2 támogatásához

  6. Vizsgálja meg a forráskódot és az online szolgáltatáskonfigurációs fájlokat is az alábbi minták alapján, a szoftveresen kötött TLS esetében gyakran használt számozott típusértékeknek megfelelően:

    1. SecurityProtocolType

    2. SSLv2, SSLv23, SSLv3, TLS1, TLS 10, TLS11

    3. WINHTTP_FLAG_Standard kiadás CURE_PROTOCOL_

    4. SP_PROT_

    5. NSStreamSocketSecurityLevel

    6. PROTOCOL_SSL vagy PROTOCOL_TLS

A fenti esetekben a javasolt megoldás a szoftveresen kötött protokollverzió kiválasztásának megszüntetése, illetve az operációs rendszer alapértelmezett beállításának használata. DevSkim használata esetén kattintson ide a fentiekben ismertetett ellenőrzésekhez kapcsolódó szabályok megtekintéséhez, amelyeket a saját kódja esetében alkalmazhat.

A Windows PowerShell a .NET-keretrendszer 4.5-ös verzióját használja, amely nem tartalmazza a TLS 1.2-t választható protokollként. Megkerülő megoldásként két lehetőség áll rendelkezésre:

  1. Módosítsa a szóban forgó szkriptet úgy, hogy az tartalmazza a következőket:

    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
    
  2. Adjon hozzá egy, a teljes rendszerre érvényes beállításkulcsot (például csoportszabályzaton keresztül) minden olyan géphez, amelynek TLS 1.2-kapcsolatot kell létesítenie egy .NET-alkalmazásból. Ezt követően a .NET a rendszer alapértelmezett TLS-verzióját használja, amely elérhetővé teszi a TLS 1.2 protokollt, TOVÁBBÁ lehetővé teszi a szkriptek számára a jövőben kiadott TLS-verziók használatát, ha az operációs rendszer támogatja azokat. (például TLS 1.3)

    reg add HKLM\SOFTWARE\Microsoft.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64

    reg add HKLM\SOFTWARE\Microsoft.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32

Az (1) és (2) megoldások kölcsönösen kizáróak, így nincs szükség azok együttes implementálására.

A legfrissebb .NET-keretrendszerverziót használó, felügyelt alkalmazások újbóli létrehozása/átirányítása

A .NET-keretrendszer 4.7-esnél korábbi verzióját használó alkalmazások olyan korlátokba ütközhetnek, amelyek legfeljebb TLS 1.0-s támogatást tesznek lehetővé, függetlenül a mögöttes operációs rendszer alapértelmezett beállításaitól. További információért tekintse meg az alábbi diagramot és a Transport Layer Security (TLS) ajánlott eljárásait a .NET-keretrendszer.

Felügyelt alkalmazások újraépítése

A SystemDefaultTLSVersion elsőbbséget élvez a TLS-verziók alkalmazásszintű irányításával szemben. Az ajánlott eljárás minden esetben az operációs rendszer alapértelmezett TLS-verziójának használata. Ez ráadásul az egyetlen olyan titkosítási rugalmassággal rendelkező megoldás, amely lehetővé teszi az alkalmazások számára a jövőbeli TLS 1.3-támogatás igénybevételét.

Ha a .NET-keretrendszer régebbi verzióit (például 4.5.2 vagy 3.5) célozza meg, akkor az alkalmazás alapértelmezés szerint a régebbi és nem ajánlott protokollokat, például az SSL 3.0-t vagy a TLS 1.0-t fogja használni. Erősen ajánlott, hogy a .NET-keretrendszer újabb verzióira, például a .NET-keretrendszer 4.6-ra frissítsen, vagy állítsa be a megfelelő beállításkulcsokat „UseStrongCrypto” értékre.

Tesztelés TLS 1.2+ használatával

A fenti szakaszban javasolt javítások alkalmazását követően a termékeket regresszióvizsgálatnak kell alávetni a protokollegyeztetési és -kompatibilitási hibákat azonosításához a vállalata által használt többi operációs rendszer esetében.

  • A regressziós teszt esetében felmerülő leggyakoribb probléma a TLS-egyeztetési hiba, ha az ügyfél olyan operációs rendszerből vagy böngészőből próbál csatlakozni, amely nem támogatja a TLS 1.2-t.

    • Például a Vista-ügyfelek esetében TLS-egyeztetés meghiúsul a TLS 1.2+ verziókhoz konfigurált kiszolgálók esetében, mivel a Vista által támogatott legmagasabb TLS-verzió az 1.0. Az ügyfelet frissíteni kell, vagy le kell szerelni TLS 1.2+ környezetben.
  • A tanúsítványalapú TLS kölcsönös hitelesítést használó termékek esetében további regressziós tesztelésre lehet szükség, mivel a TLS 1.0 tanúsítványválasztási kódja kevésbé volt kifejező, mint a TLS 1.2-é.

    • Ha az adott termék nem szabványos helyről (a Windows szabványos nevesített tanúsítványtárán kívülről) származó tanúsítvány alapján egyeztet MTLS-t, akkor előfordulhat, hogy a kódot frissíteni kell a tanúsítvány megfelelő beszerzéséhez.
  • A szolgáltatás keresztfüggőségeit meg kell vizsgálni a problémás pontok azonosításához.

    • Minden olyan szolgáltatás esetében, amely külső szolgáltatásokkal működik együtt, további együttműködési tesztelést kell végezni a külső felek bevonásával.

    • Az összes használatban lévő nem windowsos alkalmazás vagy kiszolgálóoldali operációs rendszer esetében vizsgálatra/megerősítésre van szükség a tekintetben, hogy azok támogatják-e a TLS 1.2-t. Ennek legegyszerűbb módja a vizsgálat.

E módosítások online szolgáltatásokban történő tesztelésének terve a következőket foglalja magába:

  1. Vizsgálat futtatása az éles környezetbeli rendszereken azon operációs rendszerek azonosításához, amelyek nem támogatják a TLS 1.2-t.

  2. Szoftveresen kötött TLS keresése a forráskódban és az online szolgáltatáskonfigurációs fájlokban, a „TLS 1.0-függőségek keresése és kijavítása a kódban” részben leírtak szerint

  3. Szükség esetén frissítse vagy fordítsa le újra az alkalmazásokat:

    1. Felügyelt alkalmazások

      1. Hozza létre újra a legfrissebb .NET-keretrendszerverziónak megfelelően.

      2. Győződjön meg arról, hogy az SSLProtocols-enumerálás beállítása minden esetben SSLProtocols.None, hogy az operációs rendszer alapértelmezett beállításait használja.

    2. WinHTTP-alkalmazások – hozza létre újra a WinHttpSetOption segítségével, hogy a TLS 1.2 támogatott legyen

  4. A tesztelést éles üzem előtti vagy átmeneti környezetben kezdje, ahol minden TLS 1.2-nél régebbi biztonsági protokoll le van tiltva a beállításjegyzékben.

  5. Javítsa ki a szoftveresen kötött TLS további példányait is a tesztelés során. Helyezze ismét üzembe a szoftvert, és futtasson egy újabb regressziós tesztet.

A partnerek értesítése a TLS 1.0 kivezetésének tervéről

Ha a szoftveresen kötött TLS javítását és az operációs rendszer/fejlesztési keretrendszer frissítését követően a TLS 1.0 kivezetése mellett dönt, arról egyeztetnie kell ügyfeleivel és partnereivel:

  • A partnerek és ügyfelek időben történő értesítése elengedhetetlen a TLS 1.0 kivezetésének sikeres végrehajtásához. Ezt legalább blogbejegyzések, tanulmányok vagy egyéb webes tartalom formájában kell megtenni.

  • A partnereknek ki kell értékelniük saját TLS 1.2-kompatibilitásukat a fenti szakaszokban ismertetett megoldásokkal (operációsrendszer-/kódvizsgálat/regressziós tesztelés).

Összegzés

A TLS 1.0-függőségek teljes körű megszüntetése összetett feladat. A Microsoft és iparági partnerei már ma intézkednek ezzel kapcsolatban, így biztosítva, hogy a teljes termékcsomag eleve biztonságosabb legyen, az operációs rendszerek összetevőitől és a fejlesztési keretrendszerektől kezdve az ezekre épülő alkalmazásokig/szolgáltatásokig terjedően. A dokumentumban ismertetett javaslatok követésével vállalata feltérképezheti a helyes utat, illetve megismerkedhet a várható kihívásokkal. Segítséget nyújt továbbá az ügyfelek számára is, hogy jobban felkészülhessenek a váltásra.

A függelék: Kézfogásos szimuláció a www.microsoft.com csatlakozó különböző ügyfelek számára, udvariasan SSLLabs.com

A kézfogás-szimuláció eredményei

B függelék: A TLS 1.0/1.1 elavulása a FIPS mód megőrzése mellett

Kövesse az alábbi lépéseket, ha a hálózata esetében szükség van a FIPS-módra, de ki szeretné vezetni a TLS 1.0/1.1 protokollt:

  1. Konfigurálja úgy a TLS-verziókat a beállításjegyzékben, hogy az „Engedélyezve” beállítás értékét nullára állítja a nem kívánt TLS-verziók esetében.

  2. Tiltsa le a Curve 25519 (csak Server 2016 esetén) beállítást a csoportházirendben.

  3. Tiltsa le mindazokat a titkosítócsomagokat, amelyek a vonatkozó FIPS-közlemény által nem engedélyezett algoritmusokat használnak. A Server 2016 esetében (feltéve, hogy az alapértelmezett beállítások vannak érvényben) ez azt jelenti, hogy letiltja az RC4, a PSK és a NULL titkosításokat.

Közreműködők/külön köszönet:

Mark Cartwright
Bryan Sullivan
Patrick Jungles
Michael Scovetta
Tony Rice
David LeBlanc
Mortimer Cook
Daniel Sommerfeld
Andrei Popov
Michiko Short
Justin Burke
Gov Maharaj
Brad Turner
Sean Stevenson