A TLS 1.0 probléma megoldása, 2. kiadás

Ez a dokumentum bemutatja a Legújabb útmutatást a Transport Layer Security (TLS) protokoll 1.0-s verziójának függőségeinek a Microsoft operációs rendszerekre épülő szoftvereiben való gyors azonosításához és eltávolításához, a Microsoft által a saját ügyfelek és online szolgáltatások védelme érdekében biztosított termékmódosításokkal és új funkciókkal kapcsolatos részleteket követve. Kiindulási pontként szolgál egy TLS 1.2+-os hálózati környezetbe történő migrálási terv létrehozásához. Bár az itt tárgyalt megoldások átvihetik és segíthetnek a TLS 1.0 használatának eltávolításában nem Microsoft operációs rendszerekben vagy kriptográfiai kódtárakban, ezek nem a dokumentum középpontjában állnak.

A TLS 1.0 egy 1999-ben definiált biztonsági protokoll, amely a számítógépes hálózatokon keresztüli titkosítási csatornák létrehozására használható. A Microsoft a Windows XP/Server 2003 óta támogatja ezt a protokollt. Bár a modern operációs rendszerek már nem használják az alapértelmezett biztonsági protokollt, a TLS 1.0 továbbra is támogatott a visszamenőleges kompatibilitás érdekében. A változó szabályozási követelmények és a TLS 1.0 új biztonsági rései arra ösztönzik a vállalatokat, hogy teljes mértékben letiltják a TLS 1.0-t.

A Microsoft azt javasolja az ügyfeleknek, hogy ha lehetséges, távolítsák el a TLS 1.0-függőségeket a környezetükben, és tiltsák le a TLS 1.0-t az operációs rendszer szintjén. Tekintettel arra, hogy a szoftveripar mennyi ideig támogatja a TLS 1.0-t, minden TLS 1.0-s elavulással kapcsolatos tervnek a következőket kell tartalmaznia:

  • Kódelemzés a TLS 1.0 vagy régebbi biztonsági protokollok merevlemezes példányainak megkereséséhez/javításához.

  • Hálózati végpontok vizsgálata és forgalomelemzés az operációs rendszerek TLS 1.0-s vagy régebbi protokollok használatával történő azonosításához.

  • Teljes regressziós tesztelés a teljes alkalmazásveremen a TLS 1.0 letiltásával.

  • Régi operációs rendszerek és fejlesztői kódtárak/keretrendszerek áttelepítése alapértelmezés szerint a TLS 1.2 egyeztetésére képes verziókra.

  • A vállalat által a TLS 1.2 támogatási problémáinak azonosítására használt operációs rendszerek kompatibilitási tesztelése.

  • Saját üzleti partnereivel és ügyfeleivel való egyeztetés, hogy értesítsék őket a TLS 1.0 elavultra váltásáról.

  • Annak megértése, hogy mely ügyfelek nem tudnak többé csatlakozni a kiszolgálókhoz, ha a TLS 1.0 le van tiltva.

A dokumentum célja, hogy olyan javaslatokat nyújtson, amelyek segítenek eltávolítani a TLS 1.0 letiltásához szükséges technikai blokkolókat, ugyanakkor növelik a változás hatásainak láthatóságát a saját ügyfelei számára. Az ilyen vizsgálatok elvégzése segíthet csökkenteni a TLS 1.0 következő biztonsági résének üzleti hatását. E dokumentum alkalmazásában a TLS 1.0 elavulására vonatkozó hivatkozások a TLS 1.1-et is tartalmazzák.

A nagyvállalati szoftverfejlesztőknek stratégiai igényük van arra, hogy biztonságosabb és agilisabb megoldásokat (más néven Crypto Agility) alkalmazzanak a jövőbeli biztonsági protokollok feltöréséhez. Bár ez a dokumentum a TLS keménykódolásának megszüntetésére irányuló agilis megoldásokat javasol, a szélesebb körű Crypto Agility-megoldások nem tartoznak a jelen dokumentum hatókörébe.

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

A Microsoft TLS 1.0-s implementációja nem tartalmaz ismert biztonsági réseket. A jövőbeni protokollleminősítési támadások és a Microsoft implementációjára nem jellemző egyéb TLS 1.0-s 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 (TLS 1.1/1.0/ SSLv3/SSLv2).

A TLS 1.2+-ra való migrálás tervezésekor a fejlesztőknek és a rendszergazdáknak tisztában kell lenniük azzal, hogy az alkalmazottak és partnereik által kifejlesztett alkalmazásokban milyen lehetséges a protokollverziók keménykódolása. A hardcoding itt azt jelenti, hogy a TLS-verzió elavult és kevésbé biztonságos, mint az újabb verziók. A merevlemezes verziónál újabb TLS-verziók nem használhatók a szóban forgó program módosítása nélkül. Ez a problémaosztály a forráskód módosítása és a szoftverfrissítés üzembe helyezése nélkül nem oldható meg. A protokollverzió keménykódolása a múltban gyakori volt tesztelési és támogatási célokra, mivel számos különböző böngésző és operációs rendszer különböző TLS-támogatással rendelkezett.

A TLS támogatott verziói a Windowsban

Számos operációs rendszer elavult TLS-verzió alapértelmezett vagy támogatási plafonokkal rendelkezik, amelyekről el kell számolni.

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élyezett Engedélyezett Engedélyezett Nem támogatott Nem támogatott Nem támogatott
Windows Server 2008 Engedélyezett Engedélyezett Engedélyezett Tiltva* Tiltva* Nem támogatott
Windows 7 (WS2008 R2) Engedélyezett Engedélyezett Engedélyezett Tiltva* Tiltva* Nem támogatott
Windows 8 (WS2012) Disabled Engedélyezett Engedélyezett Engedélyezett Engedélyezett Nem támogatott
Windows 8.1 (WS2012 R2) Disabled Engedélyezett Engedélyezett Engedélyezett Engedélyezett Nem támogatott
Windows 10 Disabled Engedélyezett Engedélyezett Engedélyezett Engedélyezett Nem támogatott
Windows 11 Disabled Engedélyezett Engedélyezett Engedélyezett Engedélyezett Engedélyezett
Windows Server 2016 Nem támogatott Disabled Engedélyezett Engedélyezett Engedélyezett Nem támogatott
Windows Server 2016 Nem támogatott Disabled Engedélyezett Engedélyezett Engedélyezett Nem támogatott
Windows Server 2019 Nem támogatott Disabled Engedélyezett Engedélyezett Engedélyezett Nem támogatott
Windows Server 2019 GS kiadás Nem támogatott Disabled Disabled Disabled Engedélyezett Nem támogatott
Windows Server 2022 Nem támogatott Disabled Disabled Disabled Engedélyezett Engedélyezett

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-alapú elavulásáról további információt a Microsoft Edge és az Internet Explorer 11 TLS-kapcsolatainak modernizálása, a Microsoft Edge webhelykompatibilitást befolyásoló változásai, valamint a TLS/1.0 és a TLS/1.1 letiltása az új Edge Böngészőben című témakörben talál.

A Qualys SSL Labs kézfogási szimulációjára hivatkozva gyorsan megállapíthatja, hogy a különböző ügyfelek milyen TLS-verziót kérnek az online szolgáltatásokhoz való csatlakozáskor. Ez a szimuláció az ügyfél operációs rendszerének/böngészőkombinációinak gyártóira terjed ki. A dokumentum végén található A függelékben talál egy részletes példát, amely a különböző szimulált ügyfél operációs rendszer/böngésző kombinációk által tárgyalt TLS protokollverziókat mutatja be awww.microsoft.comvaló csatlakozáskor.

Ha még nem történt meg, erősen ajánlott, hogy készítsen leltárt a vállalat, az ügyfelek és a partnerek által használt operációs rendszerekről (az utóbbi kettő esetében a tájékoztatáson és kommunikáción keresztül, vagy legalább a HTTP User-Agent sztringek gyűjtésével). Ezt a leltárt tovább kiegészítheti a vállalati hálózat peremhálózatán található forgalomelemzéssel. Ilyen esetben a forgalomelemzés a szolgáltatásokhoz csatlakozó ügyfelek/partnerek által sikeresen tárgyalt TLS-verziókat eredményezi, de maga a forgalom titkosítva marad.

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

A dokumentum 1. verziójának megjelenése óta a Microsoft számos szoftverfrissítést és új funkciót szállított a TLS 1.0 elavulásához. Ezek közé tartoznak:

  • Egyéni IIS-naplózás az ügyfél IP-/felhasználói ügynök sztringjének, a szolgáltatás URI-jének, a TLS protokoll verziójának és a titkosítási csomagnak a korrelációjához.

    • Ezzel a naplózással a rendszergazdák végre számszerűsíthetik ügyfeleik gyenge TLS-nek való kitettségét.
  • SecureScore – Annak érdekében, hogy az Office 365-bérlő rendszergazdái azonosíthassák saját gyenge TLS-használatukat, a SecureScore portál azért lett létrehozva, hogy megossza ezeket az információkat, mivel 2018 októberében a TLS 1.0 kilépett az Office 365 támogatásból.

    • Ez a portál az Office 365-ös bérlői rendszergazdák számára biztosítja azokat az értékes információkat, amelyekre szükségük van ahhoz, hogy kapcsolatba léphessenek saját ügyfeleikkel, akik esetleg nem tudnak a saját TLS 1.0-függőségeikről.

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

  • A .Net-keretrendszer frissítései az alkalmazásszintű keménykódolás megszüntetéséhez és a keretrendszer által örökölt TLS 1.0-függőségek megelőzéséhez.

  • Fejlesztői útmutató és szoftverfrissítések jelentek meg annak érdekében, hogy segítsenek az ügyfeleknek azonosítani és megszüntetni a gyenge TLS-re vonatkozó .Net függőségeket: Transport Layer Security (TLS) ajánlott gyakorlatai a .NET-keretrendszerrel

    • 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 vissza lett adva a Windows Server 2008 SP2-be és az XP POSReady 2009-be , hogy segítse az örökölt kötelezettségekkel rendelkező ügyfeleket.

  • További bejelentések 2019 elején lesznek közzé téve, és a dokumentum későbbi frissítései is megjelennek.

TLS 1.0-függőségek keresése és javí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ítenek azonosítani az alkalmazásokban a merevlemezes TLS 1.0-s használatát:

  1. A AcquireCredentialsHandle() összes példányának azonosítása. Ez segít a véleményezőknek közelebb kerülni az olyan kódblokkokhoz, amelyekben a TLS kódolt lehet.

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

  3. Natív kódban állítsa nullára a grbitEnabledProtocols bármely nem nulla értékű hozzárendelését. Ez lehetővé teszi, hogy az operációs rendszer az alapértelmezett TLS-verziót használja.

  4. Tiltsa le a FIPS módot , ha az engedélyezve van, mert ütközés lehetséges a jelen dokumentumban a TLS 1.0/1.1 explicit letiltásához szükséges beállításokkal. További információt a B függelékben talál.

  5. Frissítse és újrafordítja a WinHTTP-t használó alkalmazásokat, amelyeket a Server 2012-n vagy régebbi kiszolgálón üzemeltetnek.

    1. Felügyelt alkalmazások – újraépítés és célzás a .NET-keretrendszer legújabb verziójára

    2. Az alkalmazásoknak kóddal kell támogatniuk a TLS 1.2-t a WinHttpSetOption használatával

  6. Az összes alap lefedéséhez vizsgálja meg a forráskódot és az online szolgáltatás konfigurációs fájljait az alábbi mintákhoz, amelyek megfelelnek a TLS-keménykódolásban gyakran használt számba vett típusértékeknek:

    1. BiztonságiProtokollTípus

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

    3. WINHTTP_FLAG_SECURE_PROTOCOL_

    4. SP_PROT_

    5. NSStreamSocketSecurityLevel

    6. PROTOCOL_SSL vagy PROTOCOL_TLS

Az ajánlott megoldás minden fenti esetben az, hogy távolítsa el a rögzített protokoll verzióválasztását, és halasztsa az operációs rendszer alapértelmezett beállítására. Ha DevSkim-et használ, kattintson ide a fenti ellenőrzésekre vonatkozó szabályok megtekintéséhez, amelyeket saját kódjával használhat.

A Windows PowerShell a .NET Framework 4.5-öt használja, amely nem tartalmazza a TLS 1.2-t elérhető protokollként. Ennek megoldásához két megoldás érhető el:

  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 rendszerszintű beállításkulcsot (például csoportházirenden keresztül) minden olyan géphez, amelynek TLS 1.2-kapcsolatokat kell létrehoznia egy .NET-alkalmazásból. Ez azt eredményezi, hogy a .NET a "System Default" TLS-verziót használja, amely a TLS 1.2-t adja hozzá elérhető protokollként, és lehetővé teszi, hogy a szkriptek a jövőbeli TLS-verziókat használják, amikor az operációs rendszer támogatja őket. (pl. 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árják egymást, ami azt jelenti, hogy nem kell őket együtt megvalósítani.

Felügyelt alkalmazások újraépítése/újratelepítése a .Net-keretrendszer legújabb verziójával

A .NET-keretrendszer 4.7 előtti verzióit használó alkalmazások esetében a támogatás hatékonyan a TLS 1.0 verzióra korlátozódhat, 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-keretrendszerben .

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

A SystemDefaultTLSVersion elsőbbséget élvez a TLS-verziók alkalmazásszintű célzásával szemben. Az ajánlott eljárás az, ha mindig az operációs rendszer alapértelmezett TLS-verziójára halaszt. Emellett ez az egyetlen kripto-agilis megoldás, amellyel az alkalmazások kihasználhatják a jövőbeli TLS 1.3-támogatás előnyeit.

Ha a .NET-keretrendszer régebbi verzióit, például a 4.5.2-t vagy a 3.5-öt célozza meg, akkor az alkalmazás alapértelmezés szerint a régebbi és nem ajánlott protokollokat fogja használni, például az SSL 3.0-t vagy a TLS 1.0-t. Javasoljuk, hogy frissítsen a .NET-keretrendszer újabb verzióira, például a .NET Framework 4.6-ra, vagy állítsa be a "UseStrongCrypto" beállításkulcsait.

Tesztelés a TLS 1.2+ használatával

A fenti szakaszban javasolt javításokat követve a termékeket regressziós tesztekkel kell tesztelni a protokollal való egyeztetési hibák és a vállalat más operációs rendszereivel való kompatibilitás szempontjából.

  • A regressziós tesztelés leggyakoribb problémája egy TLS-egyeztetési hiba lesz, amely egy olyan operációs rendszerből vagy böngészőből érkező ügyfélkapcsolati kísérlet miatt történik, amely nem támogatja a TLS 1.2-t.

    • Egy Vista-ügyfél például nem tud tárgyalni a TLS-ről egy TLS 1.2+-ra konfigurált kiszolgálóval, mivel a Vista maximális támogatott TLS-verziója 1.0. Ezt az ügyfelet TLS 1.2+ környezetben kell frissíteni vagy leszerelni.
  • A tanúsítványalapú kölcsönös TLS-hitelesítést használó termékek további regressziós tesztelést igényelhetnek, mivel a TLS 1.0-hoz társított tanúsítványkiválasztási kód kevésbé volt kifejező, mint a TLS 1.2 esetében.

    • Ha egy termék az MTLS-t nem szabványos helyről származó tanúsítvánnyal egyezteti (a Windowsban a standard névvel ellátott tanúsítványtárolókon kívül), akkor előfordulhat, hogy a kódnak frissítenie kell a tanúsítvány megfelelő beszerzésének biztosításához.
  • A szolgáltatásközi eltéréseket felül kell vizsgálni a problémás pontok miatt.

    • Minden olyan szolgáltatásnak, amely harmadik féltől származó szolgáltatással működik együtt, további interoperabilitás tesztelést kell végeznie a harmadik féllel.

    • A használatban lévő nem Windows-alkalmazásokhoz vagy kiszolgálói operációs rendszerekhez vizsgálatra/ megerősítésre van szükség, hogy támogatják-e a TLS 1.2-t. Ennek meghatározásához a vizsgálat a legegyszerűbb módszer.

A módosítások online szolgáltatásban való tesztelésére szolgáló egyszerű terv a következőkből áll:

  1. Vizsgálja meg az éles környezet rendszereit, hogy azonosítsa azokat az operációs rendszereket, amelyek nem támogatják a TLS 1.2-t.

  2. A "TLS 1.0-függőségek keresése és javítása a kódban" című cikkben leírtak szerint vizsgálja meg a forráskód- és online szolgáltatáskonfigurációs fájlokat a merevlemezes TLS-hez

  3. Frissítse/fordítsa újra az alkalmazásokat szükség szerint.

    1. Felügyelt alkalmazások

      1. Újraépítés a .NET-keretrendszer legújabb verziójával.

      2. Ellenőrizze, hogy az SSLProtocols enumerálás használata SSLProtocols.None értékre van-e állítva az operációs rendszer alapértelmezett beállításainak használatához.

    2. WinHTTP-alkalmazások – újraépítés a WinHttpSetOption használatával a TLS 1.2 támogatásához

  4. A tesztelést éles üzem előtti vagy előkészítési környezetben kezdheti el, a TLS 1.2-nél régebbi biztonsági protokollok beállításjegyzéken keresztüli letiltásával.

  5. Javítson ki minden fennmaradó TLS kézi kódolást a tesztelés során. Telepítse újra a szoftvert, és végezzen el egy új regressziós tesztfuttatást.

Partnerek értesítése a TLS 1.0-s elavulási terveiről

A TLS hardcoding kezelése és az operációs rendszer/fejlesztési keretrendszer frissítéseinek befejezése után, ha a TLS 1.0 elavultatása mellett dönt, az ügyfelekkel és partnerekkel való egyeztetés szükséges:

  • A partnerek és ügyfelek korai megkeresése elengedhetetlen a TLS 1.0 kivezetésének sikeres bevezetéséhez. Ennek legalább blogbejegyzésekből, whitepapersekből vagy más webes tartalmakból kell állnia.

  • A partnereknek a fenti szakaszokban ismertetett operációs rendszer-/kódvizsgálati/regressziós tesztelési kezdeményezéseken keresztül ki kell értékelniük a saját TLS 1.2-felkészültségüket.

Conclusion

A TLS 1.0-függőségek eltávolítása bonyolult folyamat az elejétől a végéig történő irányítás szempontjából. A Microsoft és az iparági partnerek ezen a napon műveletet hajtanak végre annak érdekében, hogy a teljes termékkészlet alapértelmezés szerint biztonságosabb legyen az operációs rendszer összetevőitől és fejlesztési keretrendszereitől kezdve az ezekre épülő alkalmazásokig/szolgáltatásokig. A dokumentumban foglalt ajánlások követése segíti vállalkozását a helyes irány kijelölésében és abban, hogy tisztában legyen a várható kihívásokkal. Emellett segít a saját ügyfeleinek is felkészülni az átállásra.

Függelék A: Kézfogásszimuláció különböző ügyfelek csatlakozása a www.microsoft.com webhelyhez, az SSLLabs.com jóvoltából

Kézfogásos 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ózat fips üzemmódot igényel, de a TLS 1.0/1.1-et is el szeretné elavultni:

  1. Konfigurálja a TLS-verziókat a beállításjegyzéken keresztül úgy, hogy az "Engedélyezve" beállítást nullára állítja a nem kívánt TLS-verziók esetében.

  2. Tiltsa le a Curve 25519-et (csak server 2016) csoportházirenddel.

  3. Tiltsa le a titkosítási csomagokat olyan algoritmusokkal, amelyeket a megfelelő FIPS-kiadvány nem engedélyez. A Server 2016 esetében (feltételezve, hogy az alapértelmezett beállítások érvényben vannak) ez az RC4, a PSK és a NULL titkosítás letiltását jelenti.

Közreműködők/Köszönet a

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