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:
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.
Tekintse át a SecPkgContext_SupportedProtocols és SecPkgContext_Csatlakozás ionInfo struktúrák minden példányát a merevlemezes TLS-hez.
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.
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.
Frissítse és fordítsa le újból a Server 2012 vagy régebbi rendszeren üzemeltetett, WinHTTP-t használó alkalmazásokat.
Felügyelt alkalmazások – hozza létre újra őket, és módosítsa a célt a legfrissebb .NET-keretrendszerverzióra
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
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:
SecurityProtocolType
SSLv2, SSLv23, SSLv3, TLS1, TLS 10, TLS11
WINHTTP_FLAG_Standard kiadás CURE_PROTOCOL_
SP_PROT_
NSStreamSocketSecurityLevel
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-szkriptek vagy a kapcsolódó beállításjegyzék-beállítások frissítése
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:
Módosítsa a szóban forgó szkriptet úgy, hogy az tartalmazza a következőket:
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
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.
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:
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.
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
Szükség esetén frissítse vagy fordítsa le újra az alkalmazásokat:
Felügyelt alkalmazások
Hozza létre újra a legfrissebb .NET-keretrendszerverziónak megfelelően.
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.
WinHTTP-alkalmazások – hozza létre újra a WinHttpSetOption segítségével, hogy a TLS 1.2 támogatott legyen
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.
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
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:
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.
Tiltsa le a Curve 25519 (csak Server 2016 esetén) beállítást a csoportházirendben.
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