IT Toolkit
v7.83
2026-09-28
Síť · Kryptografie · Identita · Nástroje – Ctrl+K rychlé hledání
ℹ
↑↓ navigace Enter otevřít Esc zavřít Ctrl+K
IP adresa
IPv4
–
🔍 ARIN RDAP 🔍 RIPE NCC 🔍 whois.com

IPv6
–
Pro evropské IP adresy doporučujeme RIPE NCC.
Prohlížeč & systém
Navigator / Headers
Obrazovka & prostředí
Zdroj certifikátu
Nebo vložte PEM text
PEM vstup
📂
Přetáhněte soubor sem nebo klikněte pro výběr
.req · .csr · .pem · .txt
Parametry hesla
Počet hesel
Vygenerovaná hesla
Analýza entropie
Vstupní text
Převod velikosti písmen
Najít a nahradit
Čištění textu
Transformace
Výstup
Porovnání vstup ↔ výstup
Proveďte operaci pro zobrazení rozdílů.
Extrakce řádků
IPv4 CIDR
Obsah QR kódu
Nastavení
Náhled
QR kód se zobrazí zde
Vstup ASN.1 / DER
Příklady
Legenda tagů
SEQUENCE (0x30) – uspořádaný kontejner položek
SET (0x31) – neuspořádaný kontejner
INTEGER (0x02) – celé číslo (sériové číslo, modulus…)
BIT STRING (0x03) – bitová sekvence (podpis, veřejný klíč)
OCTET STRING (0x04) – bajtová sekvence
NULL (0x05) – žádná hodnota (parametr algoritmu)
OID (0x06) – identifikátor objektu (algoritmus, extenze…)
UTF8String (0x0C) – textový řetězec UTF-8
PrintableString (0x13) – ASCII text (CN, O, C…)
IA5String (0x16) – ASCII (e-mail, URL)
UTCTime (0x17) – datum a čas (platnost certifikátu)
GeneralizedTime (0x18) – datum a čas (rozšířený formát)
BOOLEAN (0x01) – true/false (CA flag…)
[0]–[9] (0xA0–0xA9) – kontextové (context-specific) tagy
Informace
ASN.1 (Abstract Syntax Notation One) je standardní formát pro serializaci strukturovaných dat, definovaný v ITU-T X.680. Kódování DER (Distinguished Encoding Rules, X.690) se používá v certifikátech X.509, CSR (PKCS#10), klíčích a CRL. Každý prvek má strukturu Tag–Length–Value (TLV). BER indefinite length (0x80) je podporováno heuristicky – u složitějších nested BER struktur může být výstup nepřesný.
Dekódovaná struktura
Vložte data a klikněte Dekódovat.
Vstup – soubor
📂
Přetáhněte soubor(y) sem nebo klikněte pro výběr
Libovolný typ souboru · více souborů najednou · < 500 MB přímý výpočet · ≥ 500 MB streamovaný výpočet
Vstup – text
Algoritmy
Informace
Soubory pod 500 MB: přímý výpočet přes crypto.subtle.digest() (W3C Web Crypto API) a vlastní JS implementaci MD5. Soubory ≥ 500 MB: streamovaný výpočet v blocích po 64 MB přes knihovnu hash-wasm – integrována přímo v tomto souboru, bez externích požadavků.
Ověření hashe
Výsledky
IPv6 CIDR
Generátor UUID / GUID
Analýza UUID
Přehled verzí UUID
UUID v4 doporučený
128 bitů, z toho 122 náhodných (6 bitů rezervováno pro verzi/variantu). Generován pomocí crypto.getRandomValues() (CSPRNG). Pravděpodobnost kolize při generování 1 miliardy UUID je ~9.4×10⁻²⁰ (birthday approximation). Definován v RFC 9562 (dříve RFC 4122).
UUID v7 nový (2024)
Časový identifikátor – prvních 48 bitů je Unix timestamp v milisekundách, zbývajících 74 bitů (rand_a 12 b + rand_b 62 b) slouží k zajištění unikátnosti a mohou být dle implementace náhodná nebo částečně counter/monotonicity-based. Lexikograficky řaditelný (sortable). Ideální pro databázové primární klíče (B-tree friendly). Definován v RFC 9562.
UUID v1 zastaralý
Založený na MAC adrese a čase. Únik MAC adresy = bezpečnostní riziko. Pro nové návrhy je doporučen UUID v7.
UUID v3 / v5
Deterministický – hash (MD5 / SHA-1) ze jmenného prostoru + názvu. Vždy stejný vstup = stejný UUID.
GUID
Microsoft terminologie pro UUID. Technicky identický formát, liší se pouze konvencí zápisu (velká písmena, složené závorky).
Běžné použití UUID
• Databázové primární klíče – distribuované systémy bez centrální sekvence
• API identifikátory – resources, session tokens, correlation IDs
• Active Directory – objectGUID, GPO GUID, schemaIDGUID
• Entra ID (Azure AD) – tenant ID, application ID, object ID
• COM/DCOM – CLSID, IID, LIBID (Windows registry)
• Diskové oddíly – GPT partition GUID, EFI system partition
• Messaging – message ID, idempotency key
IANA Private Enterprise Numbers (PEN)
PEN je identifikátor přidělovaný organizaci od IANA (Internet Assigned Numbers Authority) pod OID prefixem 1.3.6.1.4.1.{číslo}. Registrace je bezplatná a řídí se politikou „First Come First Served“ dle RFC 9371.
Použití PEN:
• SNMP MIB – identifikace vendora v OID stromu
• RADIUS – Vendor-Specific Attributes (VSA, RFC 2865)
• Diameter – Vendor-ID (RFC 6733)
• LDAP – vlastní atributy a objektové třídy v private OID arc
• Syslog – structured data SD-ID (RFC 5424)
• DHCP – vendor-specific suboptions
• Certifikáty X.509 – vlastní OID pro politiky a extenze
📋 Registr IANA PEN 📝 Žádost o PEN 📄 RFC 9371
Otevře IANA registr v novém tabu a v podporujících prohlížečích skočí na první výskyt (IANA nemá serverové vyhledávání – jinak použijte Ctrl+F). Příklady: 9 = Cisco, 311 = Microsoft, 2312 = Check Point

FIDO2 / WebAuthn diagnostika

Čistě statická demo stránka. Umí capability check browseru, testovací registraci a vyčtení základních údajů z credentialu včetně AAGUID. Mapování AAGUID na vendor/model využívá pouze lokální data (bez MDS dotazů a ověření).

Funguje v HTTPS nebo na localhost. Přes file:// bude WebAuthn ve většině browserů blokovaný.

Omezení
  • Bez backendu není validace attestation ani práce s FIDO Metadata Service.
  • AAGUID lookup je pouze orientační best-effort mapování.
  • Neumí firmware, sériové číslo ani spolehlivý inventory všech tokenů.

Strukturovaný výstup

čitelné shrnutí

Zatím bez výsledků.

Debug log

raw průběh a chyby

Lokální AAGUID mapa

čte se z lokálního zdroje, ne z MDS

Načítám dostupná data…

Raw JSON

export posledního běhu
{}
Passkey profile planner – Entra ID

Generuje výchozí návrh konfigurace passkey profilů v authentication method policy (max. 3 sloty) na základě zadaných požadavků. Upozorňuje na kombinace vstupů, které vedou ke konfliktu nebo k uzamčení uživatelů.

Nástroj se nepřipojuje k Entra ID ani k žádnému API a nezná stav vašeho tenantu. Výstup je doporučení k posouzení, ne auditovaná konfigurace; před nasazením ověřte proti aktuální dokumentaci Microsoftu a vlastnímu prostředí.

Než začnete utahovat. Passkey profily svádějí k tomu postavit pro každou populaci vlastní pravidlo. Tři sloty, OR-logika mezi profily a to, že se attestation vynucuje jen při registraci, zatímco key restriction platí i pro přihlášení, ale spolu hrají tak, že každé další zpřísnění zvyšuje šanci na uzamčení víc než na bezpečnost. Volnější profil tiše ruší přísnější, allow-list odřízne i dříve zaregistrované klíče, vyloučení populace se pozná až v okamžiku, kdy se někdo nemůže přihlásit – a čtvrtý profil, kterým by to šlo dorovnat, neexistuje.

Tento nástroj kombinace kontroluje a konflikty pojmenuje, ale nemůže jich pokrýt všechny: samotné odpovědi ve formuláři dávají přes 15 000 kombinací a skutečné prostředí jich přidává mnohem víc (stav tenantu, platformy zařízení, hosté, federace, stávající metody). Nejpřísnější nastavení, které jde v tomto formuláři zadat, vygeneruje 13 upozornění najednou – to není známka pečlivé konfigurace, ale signál, že návrh je složitější, než kolik toho jde spolehlivě ověřit. Doporučený postup je opačný: začít jednoduše (návrh MS ze Q2 = synced + device-bound), nasadit v report-only a zpřísňovat teprve podle toho, co ukážou sign-in logy.

Totéž platí o vrstvě, která vypadá jako bezpečné rozšíření mimo tři sloty: Conditional Access passkey profily nenahrazuje. Profil řídí registraci i přihlášení, CA jen přihlášení a jen na cílené zdroje – takže AAGUID seznam v custom síle ověření je tak silný, jak přesné je cílení profilů, a nad hosty z cizího tenantu nevynutí nic. Co která vrstva doopravdy drží, rozebírá pod návrhem CA politiky.

Návrh je psaný jako na zelené louce, ale tenant na ní typicky nestojí. Po opt-inu na passkey profily se do Default profilu přenesla původní globální nastavení Passkey (FIDO2), takže Profil 1 níže je zpravidla editace existujícího profilu, ne založení nového – a opt-in je podle MS nevratný. Pokud tenant na profily zatím nepřešel a nevynucuje attestation, jsou synced passkeys už dnes povolené bez zásahu administrátora. Stav si ověřte dřív, než podle návrhu začnete konfigurovat.

Default
–
Privileged
–
Synced / rezerva
–

Vstupy

Q1. Povolit synced passkeys?
iCloud Keychain, Google Password Manager a další cloud provideři
Q2. Baseline (Default) – omezení autentizátoru
Q3. Existuje desktop-only populace bez telefonu?
Q4. Privilegovaní – Authenticator povolen, nebo jen HW klíč?
Q5. Jsou HW FIDO2 klíče distribuovány privilegovaným?
Q6. Je nakonfigurovaný break-glass účet vyloučený z CA?
Týká se výhradně Conditional Access. Rozsah passkey profilu je samostatná věc – CA výjimka před uzamčením passkey profilem nechrání, to řeší Q6b.
Q6b. Cílení break-glass účtů na passkey profily
Break-glass účet je v OR-logice běžný uživatel – passkey mu projde jen tehdy, když vyhoví některému profilu v jeho rozsahu.
Q7. Režim vynucení přes Conditional Access
Q8. Role v privilegované skupině
Výchozí výběr = kompletní seznam z MS Learn – policy-admin-phish-resistant-mfa, doporučeno jako „at least“ baseline – role lze podle potřeby odebrat i doplnit
Q9. Povolit Microsoft Entra passkey on Windows?
Windows Hello jako FIDO2 passkey provider (preview) – jiná věc než Windows Hello for Business. Pozor na rozlišování v reportech: podle MC1450134 se od 10/2026 i samotný WHfB a macOS Platform SSO zobrazí v My Security Info jako automaticky registrovaný passkey – dotaz „kdo má passkey“ pak přestane vracet jen to, co jste nasadili tímto plánem.

Upozornění a konflikty

Navrhované profily

Jak Entra pole profilu vynucuje

Co Entra při Enforce attestation ověřuje

Attestation je v profilu přepínač se dvěma stavy, ale stojí za ním celý ověřovací řetězec. Se zapnutým Enforce attestation musí autentizátor při registraci vrátit attestation statement ve formátu packed a k němu úplný certifikační řetězec, který se dá navázat na attestation root certifikáty vytažené z FIDO Alliance Metadata Service (MDS). Entra tedy neověřuje proti vlastnímu ručně udržovanému seznamu modelů, ale proti metadatům z MDS – a zveřejnit tam své root certifikáty je odpovědnost výrobce. Když to neudělá, ověření selže, i když je klíč jinak v pořádku.

Platný řetězec sám o sobě nestačí. Metadata v MDS musí pro daný AAGUID navíc deklarovat FIDO2 certifikaci (stačí libovolná úroveň, i L1), FIDO 2.0 nebo vyšší, user verification nebo client PIN (Entra vyžaduje ověření uživatele biometrikou nebo PINem u každého pokusu), resident keys (discoverable credentials, kvůli přihlášení bez zadání uživatelského jména) a rozšíření hmac-secret nebo PRF (kvůli odemykání Windows offline). Klíč, který v MDS je, ale některou z těchto položek nedeklaruje, atestací neprojde.

Časování je vlastní zdroj překvapení: Microsoft ingestuje MDS jednou měsíčně, takže od okamžiku, kdy se model objeví v MDS, může trvat až čtyři týdny, než ho Entra začne uznávat. Čerstvě vydaný klíč proto v prostředí s Enforce attestation nemusí jít zaregistrovat, přestože je certifikovaný. Tabulka FIDO2 security keys eligible for attestation na stránce MS (aktuálně sestavená z MDS verze 275) je odvozený výstup tohoto procesu, ne autoritativní whitelist – model, který v ní chybí, je spíš „zatím ne“ než „nikdy“. Pro nákup hardwaru je to praktické vodítko: pořizovat model, který se v tabulce ještě neobjevil, znamená počítat s čekáním.

Opačný stav není „slabší ověření“, ale žádné: s Attestation = Disabled přijme Entra i statement typu none, tpm, packed (AttCA) nebo vlastní formát do 32 znaků. Odtud plyne to, co návrh říká na jiných místech – bez attestation nelze o passkey zaručit žádnou vlastnost, protože AAGUID i typ klíče jsou v takovém případě jen tvrzením autentizátoru o sobě samém.

Zdroj: Microsoft Entra ID attestation for passkey (FIDO2) vendors – stránka je psaná pro výrobce klíčů, ale požadavky na ní jsou přesně to, co Entra při registraci kontroluje.

Conditional Access

Proč a kde vést hranici

Co CA vrstva řeší a co ne

Passkey profil a Conditional Access nejsou dvě verze téhož. Profil je provisioning gate: rozhoduje, co si uživatel smí zaregistrovat, a přes key restriction a Passkey types i to, čím se smí přihlásit. Custom authentication strength je authorization gate: řeší jen přihlášení a jen na zdroje, které politika cílí. Praktický důsledek je, že CA nezabrání registraci neschváleného klíče – uživatel ho zaregistruje, všude jinde s ním projde a naráz na něj narazí až ve chvíli, kdy potřebuje chráněnou aplikaci. Chybu tedy neodhalí registrace, ale provoz.

Druhý důsledek je pro AAGUID seznam. Ověřitelný je jen díky tomu, že profil, pod kterým klíč vznikl, vynucoval attestation – CA sama původ klíče ověřit neumí. Záruka proto stojí a padá s cílením profilů, ne se samotnou CA politikou, a platí jen o klíčích zaregistrovaných pod tímto návrhem: attestation je registrační kontrola, takže dříve zaregistrovaný klíč si svůj nezaručený AAGUID ponechá.

Hosté jsou mimo dosah obou vrstev. Passkey profil řídí registraci ve vašem tenantu, ale host se autentizuje v domovském tenantu a jeho credential podléhá jejich profilu. CA na hosta platí, jenže phishing-resistant metody (FIDO2, Windows Hello for Business, certificate-based auth) smějí podle MS splnit sílu ověření pouze v domovském tenantu; ve vašem je host odkázaný na SMS, hovor, Authenticator push nebo OATH software token. Rozhodují tedy dvě osy najednou:

GrantMFA trust vypnutýMFA trust zapnutý
Require MFA Host projde slabou metodou u vás. FIDO2 klíč z domovského tenantu použít nemůže. Host projde tvrzením z domovského tenantu, i slabou metodou.
Phishing-resistant MFA Neprojde nikdo – žádná metoda použitelná ve vašem tenantu tuto sílu nesplní. Projde jen FIDO2 / WHfB / CBA z domovského tenantu, jehož kvalitu neřídíte.

U hosta tedy nelze mít současně kontrolu nad credentialem a phishing-resistant ověření. Pozor na jeden konkrétní důsledek pro politiku výše: pokud některou z vybraných rolí drží guest účet a MFA trust je vypnutý, politika ho nezpřísní, ale zablokuje – a protože nemá exclude jako break-glass účty, pozná se to až prvním přihlášením dodavatelského správce. Doporučení je proto řešit to o patro výš: privilegovanou roli nedržet na guest identitě a pro externí správce zakládat dedikovaný cloud-only účet ve vašem tenantu, kde platí obě vrstvy. MS tento argument uvádí pro účty synchronizované z on-premises; na hosty ho nevztahuje, ale mechanismus je stejný.

Zbývá cílení. Návrh výše cílí Privileged profil na skupinu, zatímco CA politika používá Directory roles – a to nejsou tytéž lidé. Directory roles pokrývají jen vestavěné role a podle MS uživatele aktivně přiřazené, takže custom role, přiřazení omezená administrative unitem a držitelé eligible přiřazení v PIM před aktivací zůstávají mimo rozsah CA, přestože do profilu spadají. Nejjednodušší náprava je cílit obě vrstvy na tutéž spravovanou (ideálně role-assignable) skupinu.

Kdy tedy omezení do CA přesunout má smysl: CA umí report-only a nativní exclude, což passkey profil neumí ani jedno, a neplýtvá jedním ze tří slotů. Přesun je proto legitimní ústup tam, kde limit tří profilů jinak nevychází – za podmínky, že baseline profil vynucuje attestation, že CA cílí na skupinu, a že registrace nové metody u privilegovaných účtů má alert v audit logu. Náhradou profilového omezení ale přesun není: prevenci vymění za detekci.

Kde vést hranici podle modelu autentizátoru

Governance checklist

    Zdroje

    Logika plánovače vychází z níže uvedené dokumentace Microsoftu. Chování Entra ID se mění – před nasazením ověřte proti aktuální verzi těchto stránek.

    Připravované změny (Message Center) – oficiální oznámení Microsoftu z Microsoft 365 Message Center. Odkazy vedou na mc.merill.net, veřejný archiv Message Center; samotný Message Center je dostupný jen přihlášenému administrátorovi tenantu, proto na něj nejde odkázat přímo. Do MS Learn tato oznámení zatím promítnuta nejsou – dokumentace stále popisuje dnešní chování, a proto na nich nestojí logika plánovače; jsou zapracována jen jako upozornění v checklistu a v textech výše. Před nasazením ověřte, jestli už v tenantu naběhla.
    • MC1450134 – Windows Hello for Business a macOS Platform SSO jako samostatné MFA faktory GA 10/2026 → 11/2026, worldwide + GCC. Bez konfigurace. Credentialy se zobrazí v My Security Info jako automaticky registrované passkeye; uživatel, který má jen je, je vyhodnocen jako MFA-capable a nedostane výzvu k registraci další metody. MS doporučuje projít custom authentication strength politiky.
    • MC1459133 – Passkeye pro B2B uživatele v Microsoft Entra ID Interní hosté 10/2026 včetně passkeys v Microsoft Authenticatoru; externí uživatelé bez uvedeného termínu a bez podpory Authenticatoru („supported for internal guest users but not for external users“); dokončení 2/2027. Zapne se automaticky, bez zásahu administrátora; hosté už zahrnutí v passkey politikách mohou dostat výzvu k registraci při přihlášení.
    Vstup
    Právě teď – –
    Jak se časová razítka liší – a kde na ně narazíte
    Unix epoch
    • Počítá se od 1970-01-01 00:00:00 UTC. Rozlišení se liší podle zdroje: sekundy (JWT exp/iat, syslog), milisekundy (JavaScript, Java), mikro/nanosekundy (Prometheus, Go, databázové logy).
    • Automatická detekce se řídí počtem číslic: ≤11 = sekundy, 12–14 = ms, 15–17 = µs, 18 = FILETIME, 19+ = ns. U hodnot mimo dnešní řády přepni formát ručně.
    Windows FILETIME (Active Directory)
    • Počet 100ns intervalů od 1601-01-01 UTC. Najdete ho v atributech pwdLastSet, lastLogonTimestamp, accountExpires.
    • Hodnota přesahuje Number.MAX_SAFE_INTEGER, proto se počítá v BigInt – zaokrouhlení na běžném čísle by ustřelilo o stovky sekund.
    • 0 a 9223372036854775807 v accountExpires neznamenají datum, ale „nikdy nevyprší“.
    Zóny a letní čas
    • Epoch je vždy UTC – zóna je jen věc zobrazení, žádná informace se převodem neztrácí.
    • Opačný směr je nejednoznačný: při přechodu na zimní čas existuje jedna hodina dvakrát, na letní vůbec. Textový vstup proto ber jako spolehlivý jen s explicitním offsetem (Z, +02:00) – bez něj ho prohlížeč čte v lokální zóně.
    • ISO 8601 týden patří roku, do kterého spadá jeho čtvrtek – proto může 1. leden ležet v týdnu W52/W53 předchozího roku.
    Vstup
    Přijímá 10.0.0.0/24, 10.0.0.5-10.0.3.200, samotnou adresu i zápis s maskou 10.0.0.0 255.255.252.0. Komentáře za #, ; nebo // a koncové čárky se ignorují.
    K čemu to je – a proč CIDR bloků vyjde víc, než čekáte
    Rozsah × CIDR
    • CIDR blok umí popsat jen rozsah, který je zarovnaný na svou velikost a velký jako mocnina dvojky. Libovolný rozsah se proto rozpadne na několik bloků: 10.0.0.5–10.0.0.10 potřebuje čtyři (/32, /31, /31, /32).
    • Naopak souvislé sousední podsítě se slučují: 10.0.0.0/24 + 10.0.1.0/24 + 10.0.2.0–10.0.3.255 je dohromady jediné 10.0.0.0/22. To je hlavní důvod, proč tento nástroj existuje – zkrácení seznamu pravidel na firewallu.
    Kde se to hodí
    • Agregace pravidel v NSG / security group / ACL, kde bývá limit na počet záznamů.
    • A minus B – „povol celou síť kromě DMZ“ tam, kde pravidlo neumí výjimku a musí se vyjmenovat zbytek.
    • Průnik – ověření, že se dvě alokace nebo dva peering rozsahy skutečně nepotkávají.
    • Překryvy se hledají v nesloučeném vstupu: dvě pravidla pokrývající tutéž adresu jsou obvykle chyba, kterou by sloučení schovalo.
    Meze nástroje
    • Pouze IPv4. Pro rozbor jednoho prefixu včetně masky, broadcastu a bitmapy použijte IPv4 Subnet Calc; pro IPv6 IPv6 Subnet Calc.
    • Rozsahy se počítají nad celými čísly, ne bitovými operacemi – celý adresní prostor (0.0.0.0/0, 2³² adres) se do 32bitového intu nevejde a bitový výpočet by přetekl.
    • Zpracuje se nejvýš 5 000 řádků na vstup; tabulka ukazuje prvních 200 rozsahů, CIDR seznam je vždy úplný.
    Token
    Token se neukládá do URL ani do localStorage a zavřením záložky zmizí. Nástroj neověřuje podpis: obsah přečte, ale netvrdí, že je pravý.
    Co dekodér říká – a co ne
    Base64url není šifra
    • Hlavička i payload jsou jen zakódované, ne zašifrované – kdokoli s tokenem si je přečte stejně jako tento nástroj. Do JWT proto nepatří nic tajného.
    • Podepsaný token je neměnný, ne skrytý: podpis brání úpravě obsahu, ne jeho přečtení.
    Proč se tu podpis neověřuje
    • K ověření je potřeba veřejný klíč vydavatele – u OIDC se stahuje z jwks_uri v /.well-known/openid-configuration a vybírá se podle kid z hlavičky. To je síťové volání, a tento toolkit je záměrně offline.
    • Skutečná validace má pořadí: podpis → iss → aud → exp/nbf → nonce. Cokoli přečtené z payloadu před ověřením podpisu je tvrzení útočníka, ne fakt.
    • Nikdy nevolit klíč podle alg z hlavičky – algoritmus musí být daný konfigurací ověřovatele. Právě na tom stojí útoky alg:none a záměna RS256 za HS256 (RFC 8725).
    Access token vs. ID token
    • ID token je určen klientovi – ten ho validuje a čte z něj identitu uživatele.
    • Access token patří API, pro které byl vydán. Microsoft výslovně uvádí, že klient do access tokenu nemá koukat ani na něm stavět logiku: formát není smluvní a může se změnit – pro Microsoft Graph může být dokonce šifrovaný (JWE).
    • Pětidílný token je JWE – payload je zašifrovaný a bez klíče z něj nepřečtete nic; čitelná zůstane jen hlavička.
    Hygiena
    • Token je živý přihlašovací údaj až do svého exp – vložit ho do ticketu, chatu nebo online dekodéru znamená předat ho dál. Tady zůstává v prohlížeči, ale reflex „vložím to do JWT dekodéru“ stojí za promyšlení pokaždé.
    • Zobrazený čas platnosti je čas vašeho počítače. Nepřesně jdoucí hodiny klienta jsou běžná příčina hlášky „token není ještě platný“.
    Zdroje
    O tomto nástroji
    Orientační příručka TLS cipher suites, Perfect Forward Secrecy a post-kvantové kryptografie – pro rychlé zorientování v pojmech, ne učebnice kryptografie. Co od jednotlivých částí čekat:
    • Parser (sekce 10) rozebere zadané názvy suit na jednotlivé části a označí, které jsou doporučené, zastaralé nebo rozbité – proti ručně vybranému katalogu – suit, ne celému IANA registru.
    • Audit skript (sekce 11) jen čte – vypíše, co má daný Windows nastavené teď, a nic nemění.
    • Generátor (sekce 12) skládá konfiguraci pro Windows Schannel, nginx, Apache a obecný OpenSSL – vždy jako návrh k projití, ne hotové řešení.
    • Doporučené profily jsou zjednodušená orientační syntéza veřejných zdrojů (viz sekce Zdroje) – pro produkční nasazení vždy ověřte aktuální verzi u původního zdroje.

    Zdůvodnění, která nejsou potřeba k použití nástroje, jsou složená do rozbalovacích bloků. Ctrl+F je najde i sbalené v Chrome, Edge, Firefoxu 139+ a Safari 26.2+; ve starším prohlížeči je nejdřív rozbalte – .

    Jak TLS funguje – v kostce

    Než se pustíte do názvů cipher suit: TLS řeší tři věci najednou a pro každou z nich se použije jiný algoritmus. Právě proto má cipher suite tak dlouhé jméno – je to zápis všech těch voleb v jednom řetězci.

    Co TLS zajišťujeNa jakou otázku odpovídá
    DůvěrnostPřečte někdo po cestě, co si se serverem posíláme? Řeší šifrování provozu.
    IntegritaMohl někdo po cestě data nepozorovaně změnit? Řeší kontrolní součet, který nejde zfalšovat.
    AutenticitaMluvím opravdu se serverem, na který jsem se chtěl připojit? Řeší certifikát a podpis.

    Všechno se domlouvá na začátku spojení, při tzv. handshake. Proběhne jednou, pak už se jen šifruje domluvenými klíči. Tyto čtyři kroky jsou kostra, do které zapadá zbytek stránky:

    KrokCo se v něm staneDetail
    1 · Domluva verzeKlient řekne, které verze TLS a které cipher suity umí; server z nich vybere. Stará verze = stará (a často rozbitá) kryptografie, proto se řeší jako první.
    2 · Výměna klíčeObě strany se dohodnou na společném tajemství, ze kterého vznikne session klíč – aniž by ho kdokoli po cestě odposlechl.
    3 · Ověření identityServer pošle certifikát a podepíše jím data z handshake. Tím dokáže, že k certifikátu opravdu vlastní privátní klíč.
    4 · Šifrovaný provozTeprve teď tečou data – symetricky zašifrovaná session klíčem, s kontrolou integrity u každé zprávy.
    Kde jsou v tom hashe? Nejsou samostatný krok – používají se napříč všemi čtyřmi (odvození klíčů z domluveného tajemství, kontrola integrity, podpisy). Proto mají vlastní mimo číslování kroků.
    TL;DR – co mám nastavit

    Pokud vás zajímá jen výsledek a ne proč: toto je stejná rozhodovací tabulka jako v sekci 9, jen nahoře.

    ScénářDoporučení

    Co ta jména profilů znamenají, rozebírá ; konfiguraci pro Windows, nginx, Apache i OpenSSL vygeneruje .

    Slovníček zkratek

    Referenční bod pro zbytek stránky – nemusíte si nic pamatovat dopředu, jen se sem vracejte. Zkratky použité v textu mají navíc bublinu po najetí myší.

    Cipher suite
    Pojmenovaná sada algoritmů, na které se klient se serverem domluví pro jedno spojení – výměna klíče, autentizace, šifra, hash.
    Handshake
    Úvodní výměna zpráv, ve které domluva proběhne. Jednou na začátku spojení, než poteče první byte dat.
    Session klíč
    Jednorázový symetrický klíč jen pro dané spojení; po jeho skončení se zahazuje.
    PFS
    Perfect Forward Secrecy – viz sekce 3.
    AEAD
    Authenticated Encryption with Associated Data – šifrování + integrita v jednom kroku.
    ECDHE / DHE
    (Elliptic Curve) Diffie-Hellman Ephemeral – efemérní key exchange s PFS.
    HKDF
    HMAC-based Key Derivation Function – odvození klíčů ze sdíleného tajemství (TLS 1.3).
    KEM
    Key Encapsulation Mechanism – obecný mechanismus výměny klíče, používá ho i ML-KEM.
    MAC
    Message Authentication Code – kontrola integrity zprávy.
    PRF
    Pseudo-Random Function – odvozuje klíčový materiál z master secretu (TLS 1.2).
    0-RTT
    Zero Round-Trip Time – TLS 1.3 volitelně pošle data hned v prvním paketu; má replay riziko.
    HTTP/2
    Verze HTTP nad jedním multiplexovaným TLS spojením (RFC 9113) – u TLS 1.2 povoluje jen PFS + AEAD suity (příloha A); RFC nechává reakci na endpointu, prohlížeče takové spojení odmítají (viz sekce 11).
    1 · Anatomie cipher suite

    TLS 1.2 a starší – plný název

    Tento řetězec je zápis výsledku kroků 2–4 handshake do jednoho identifikátoru – co si klient se serverem domluvili. Řetězec TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 popisuje čtyři nezávislé volby najednou:

    SegmentVýznam
    ECDHEKey exchange – jak se domluví session klíč (krok 2, viz sekce 3).
    RSAAutentizace – jaký klíč/podpis dokazuje identitu serveru (krok 3, sekce 4).
    AES_128_GCMBulk cipher a mód – čím a jak se šifruje samotný provoz (krok 4, sekce 5).
    SHA256Hash pro PRF/HMAC – odvození klíčů, u CBC suit i integrita (sekce 6).

    TLS 1.3 – jen cipher a hash

    TLS 1.3 zredukoval jméno na TLS_AES_128_GCM_SHA256 – jen bulk cipher + hash. Key exchange (vždy efemérní – ECDHE/X25519) a autentizace (podpisový algoritmus certifikátu) se vyjednávají samostatně přes rozšíření key_share a signature_algorithms, protože v TLS 1.3 je autentizace oddělená od volby šifry – RSA key transport (bez PFS) byl úplně odstraněn, takže už není co jménem rozlišovat.

    IANA vs. OpenSSL název: IANA registr (a Windows Schannel) používá tvar TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, OpenSSL (openssl ciphers -v, Apache/nginx configy) tvar ECDHE-RSA-AES128-GCM-SHA256 – stejná suita, jiná konvence zápisu. Parser v sekci 10 přijímá oba tvary.
    2 · Krok 1 – Domluva verze protokolu

    První, na čem se klient se serverem musí shodnout, je verze protokolu. Rozhoduje o všem dalším: starší verze nabízejí slabší algoritmy a mají známé útoky na samotný handshake, takže žádná volba cipher suity je nezachrání.

    VerzeStavPoznámkaKde to funguje (orientačně)
    SSL 2.0 / 3.0mrtvéProlomené (DROWN, POODLE). Moderní OS je už nepodporují vůbec.Nikde, kde je co ztratit – prohlížeče, mobilní OS i knihovny to odmítají.
    TLS 1.0 / 1.1deprecatedFormálně vyřazeno v RFC 8996 (2021). Prohlížeče a hlavní certifikační autority je dál nepodporují.Windows XP SP3 / IE8, Android 4.0–4.3, staré appliance a průmyslová zařízení bez update.
    TLS 1.2minimumRFC 5246, dnešní praktické minimum – musí být správně nakonfigurované (jen ECDHE/DHE + AEAD suity, viz sekce 7).Prakticky vše od ~2013: Windows 7+ (na 7/8 nutno zapnout), Android 4.4+, Java 8, OpenSSL 1.0.1+, všechny dnešní prohlížeče.
    TLS 1.3cílRFC 8446 – zjednodušený 1-RTT handshake, odstraněný statický RSA i CBC, jen AEAD suity. Volitelné 0-RTT (early data) má replay riziko – použít jen pro idempotentní požadavky.Windows 11 / Server 2022+, OpenSSL 1.1.1+, Chrome 70+, Firefox 63+, Safari 12.1+, Android 10+, Java 11+.
    Sloupec „kde to funguje“ je rychlá orientace, ne vyčerpávající matice – jde o to, koho zapnutí či vypnutí verze odřízne. Autoritativní zdroj pro konkrétní klienta je jeho vlastní dokumentace.
    3 · Krok 2 – Výměna klíče a Perfect Forward Secrecy

    Jak se dvě strany přes odposlouchávanou linku domluví na společném tajném klíči? A co se stane s dřív zachyceným provozem, když někdo ten klíč později získá?

    Perfect Forward Secrecy (PFS): i když někdo později získá dlouhodobý privátní klíč serveru (kompromitace, soudní příkaz, chyba), nedokáže dešifrovat dřív zachycený provoz – protože session klíč nebyl z dlouhodobého klíče odvozen, ale vygenerován efemérně (jednorázově, jen pro dané spojení) a po skončení spojení zahozen.

    Key exchangePFSPoznámka
    ECDHEanoEfemérní Diffie-Hellman na eliptické křivce (X25519, P-256/P-384) – dnešní standard.
    DHEanoEfemérní Diffie-Hellman nad konečným polem – stejná záruka, výpočetně dražší; fallback pro klienty bez podpory křivek.
    RSA (statický)neKlient zašifruje session klíč přímo veřejným klíčem certifikátu – žádná efemérní výměna. V TLS 1.3 odstraněno úplně.
    „Harvest now, decrypt later“: bez PFS stačí útočníkovi zachytit šifrovaný provoz dnes a počkat na kompromitaci klíče (nebo na kvantový počítač, viz sekce 8) – dřívější provoz padne zpětně celý. S PFS je zachycený provoz bezcenný, i kdyby dlouhodobý klíč unikl hned zítra.
    4 · Krok 3 – Ověření identity serveru

    Jak server dokáže, že je to opravdu on, a ne někdo, kdo se za něj vydává? Podepíše data z handshake privátním klíčem, ke kterému má certifikát – a klient podpis ověří veřejným klíčem z certifikátu. Podpisový algoritmus je ta druhá zkratka v názvu suity.

    AlgoritmusPopis
    RSAServer dokazuje vlastnictví privátního klíče RSA certifikátu podpisem handshake dat. Nejrozšířenější, ale delší klíče/podpisy než ECDSA při srovnatelné síle.
    ECDSAPodpis na eliptické křivce – kratší klíče a rychlejší operace než RSA. Vyžaduje ECDSA certifikát (ne každá CA/PKI ho běžně vydává).
    EdDSA (Ed25519/Ed448)Moderní podpisové schéma z RFC 8032 – v TLS 1.3 přes signature_algorithms. Rychlé, odolné vůči řadě implementačních chyb (deterministické podpisy), zatím méně rozšířené CA podpory.
    5 · Krok 4 – Šifrování provozu

    Klíč je domluvený, identita ověřená – čím se tedy šifrují samotná data? Symetrickou šifrou, a hlavně: v jakém módu, protože ten rozhoduje, jestli se spolu se šifrováním řeší i integrita.

    AEAD (Authenticated Encryption with Associated Data) šifruje a autentizuje v jednom kroku – dnešní standard. Starší CBC mód dělá šifrování a integritu (HMAC) odděleně (MAC-then-Encrypt), což historicky vedlo k padding-oracle útokům (Lucky13, POODLE, BEAST u TLS 1.0) a je i bez konkrétní zranitelnosti komplikovanější implementovat bezpečně.

    Šifra / módAEADPoznámka
    AES-GCManoStandard pro AES v TLS. Nejrychlejší na CPU s AES-NI (většina serverů/desktopů od ~2011).
    ChaCha20-Poly1305anoProudová šifra + Poly1305 AEAD. Rychlejší než AES bez hardwarové akcelerace (mobily, IoT, starší CPU) – proto ji preferují mobilní klienti.
    AES-CBCneFunkční, ale bez AEAD záruk – v TLS 1.2 zmírněno (record splitting, konstantní čas), v TLS 1.3 úplně odstraněno.
    RC4 / DES / 3DES–Prolomené nebo zranitelné (RC4 bias, DES hrubá síla, 3DES Sweet32 na 64bit bloku) – vyřadit bez výjimky.
    6 · Hashe – napříč všemi kroky

    Hash není samostatný krok handshake – je to nástroj, který se používá ve všech. V názvu cipher suite hraje hash dvojí roli: u AEAD suit (GCM, ChaCha20-Poly1305) jde jen o PRF/HKDF hash pro odvození klíčů; u starších CBC suit navíc o HMAC pro integritu zprávy. To je jiná role než hash v podpisu certifikátu – tam je SHA-1 dnes zakázaný (kolize), zatímco jako HMAC uvnitř CBC suity zůstává SHA-1 prakticky bezpečný. MD5 nepoužívat v žádné roli. Baseline dnes: SHA-256/384 (nikdy samotné jako podpis, vždy jako PRF/HMAC součást cipher suite).

    7 · Srovnání doporučených baseline profilů

    Orientační přehled, ne přepis originálu – vždy ověřte aktuální verzi u zdroje, doporučení se v čase posouvají (naposledy výrazně kvůli PQC hybridům, sekce 8).

    ZdrojProfilJádro doporučení
    Mozilla SSL ConfigModernJen TLS 1.3, jen AEAD (3 suity), žádný TLS 1.2 fallback – pro klienty, u kterých je jistá podpora TLS 1.3.
    Mozilla SSL ConfigIntermediateTLS 1.2 + 1.3, jen ECDHE/DHE + AEAD, žádné CBC/3DES/RC4 – obecně doporučený default pro veřejné služby.
    Mozilla SSL ConfigOldPovoluje TLS 1.0+ a CBC kvůli starým klientům – jen pro nutnou zpětnou kompatibilitu, ne jako výchozí volba.
    NIST SP 800-52r2–TLS 1.2 povinné minimum pro federální systémy, TLS 1.3 doporučeno; jen AEAD suity s (EC)DHE.
    BSI TR-02102-2–Německé BSI – obdobně TLS 1.2/1.3, AEAD-only, konkrétní seznam povolených křivek a délek klíčů.
    NSA CNSA 2.0–Cílí na PQC algoritmy (sekce 8) s mandátem přechodu do 2030–2033 pro systémy národní bezpečnosti.
    Generátor v sekci 12 nabízí zjednodušené Modern/Intermediate profily inspirované touto tabulkou (ne doslovný přepis) pro Windows Schannel.
    8 · Post-Quantum Cryptography (PQC)

    „Harvest now, decrypt later“: útočník zachytává šifrovaný provoz už dnes a čeká, až kvantový počítač zvládne prolomit klasický key exchange (RSA, ECDHE). Riziko se týká dat, která musí zůstat důvěrná roky (zdravotní záznamy, státní tajemství, dlouhodobé smlouvy) – ne krátkodobých relací.

    NIST standardÚčelPoznámka
    ML-KEM (FIPS 203, dříve Kyber)Key exchangeŘeší se první – TLS už dnes běžně nasazuje hybridní key exchange (klasický ECDHE + ML-KEM současně), takže spojení je bezpečné, i kdyby jeden z algoritmů později padl.
    ML-DSA (FIPS 204, dříve Dilithium)PodpisyNahrazuje RSA/ECDSA v certifikátech – nasazení v PKI je pomalejší (řetězce důvěry, revokace, délky podpisů).
    SLH-DSA (FIPS 205, dříve SPHINCS+)Podpisy (stateless hash-based)Konzervativnější, hash-based alternativa k ML-DSA – větší podpisy, ale méně nových matematických předpokladů.

    Hybridní key exchange X25519MLKEM768 je už dnes výchozí v Chrome a podporovaný v OpenSSH – je to key exchange, ne cipher suite, takže se do generátoru v sekci 12 (SCHANNEL cipher suite pořadí) nepromítá; jde o samostatnou vrstvu konfigurace TLS stacku. Orientační timeline: NSA CNSA 2.0 žádá přechod na PQC algoritmy do 2030–2033 pro systémy národní bezpečnosti, NIST obdobně doporučuje útlum klasických algoritmů do roku 2030/2035.

    Terminologie: od Windows 11 24H2 přejmenoval Microsoft koncept „TLS Elliptic Curves“ na „TLS Supported Groups“ – stejný mechanismus v registru (EccCurves, GPO Configure ECC Curve Order, Enable-TlsEccCurve) teď nese i ne-eliptické skupiny podle IANA TLS Supported Groups registru – nevznikl žádný nový nástroj ani klíč v registru.
    Supported Group (Schannel)Co to jeProtokolVýchozí zapnutoFIPS (legacy)Dostupnost
    Zapnutí jde stejnou cestou jako u ECC křivek dnes: GPO Configure ECC Curve Order, nebo Enable-TlsEccCurve – žádný nový cmdlet nepřibyl. Nejsou to alternativy, ze kterých se vybírá jedna: EccCurves je úplný seznam, takže skupina, která v něm není, se nepoužije, a klient, který umí jen tu chybějící, se tiše vrátí ke klasické výměně klíče. Vypsat všechny tři na serveru nic nestojí – skupina se uplatní jen tehdy, když ji klient nabídne. Zadarmo naopak není samotný hybridní handshake, jakmile se použije: výměna klíče má u ML-KEM-768 zhruba 1200 B, u secp384r1_mlkem1024 skoro 1700 B a ten je i výrazně náročnější na CPU (kvůli P-384). Na straně klienta pak větší ClientHello nemusí padnout do jednoho TCP segmentu – OpenSSL to má v dokumentaci jako známý případ, kdy handshake přeruší chybně implementovaný firewall. Rozdíl mezi nimi je v parametru ML-KEM: secp384r1_mlkem1024 je jediná s ML-KEM-1024, zbylé dvě používají ML-KEM-768. Vedle těchto tří hybridů přibyl v KB5120998 (build 26100.9267, GA 27. 8. 2026) i samostatný, nehybridní ML-KEM jako TLS skupina; v tabulce skupin na začátku této sekce není proto, že pro něj MS Learn zatím nezveřejnil řetězec skupiny, který by se dal zapsat do EccCurves.
    Neplést s browser stackem: Chrome a Edge nejedou přes Schannel
    Chrome a Edge (Chromium) vyjednávají TLS přes vlastní BoringSSL, ne přes Schannel – že je hybrid výchozí v prohlížeči, neznamená nic o stavu Schannelu. Ten se týká jen toho, co TLS řeší přes Windows Schannel (IIS, RDP, .NET SslStream…). Browser stack je taky připomínka, že se kódové body PQC skupin před standardizací měnily: Edge 131 (listopad 2024) přešel z draftu Kyber na finální ML-KEM a s ním ztratil kompatibilitu se servery nastavenými na tu starší hodnotu. Proto se skupina zapisuje jménem z aktuální MS Learn tabulky, ne opsaným z návodu.

    Jak to zapnout

    Enable-TlsEccCurve -Name x25519_mlkem768     -Position 0
    Enable-TlsEccCurve -Name secp256r1_mlkem768  -Position 1
    Enable-TlsEccCurve -Name secp384r1_mlkem1024 -Position 2
    
    # Pozice jsou vypsane zamerne: tri volani s -Position 0 za sebou by
    # hybridy zaradila v obracenem poradi, nez v jakem je tu napsany.
    #
    # Jsou to tri kroky, ne tri nezavisle prikazy: kazda pozice se vztahuje ke
    # stavu PO tom predchozim. Pustit je v jinem poradi se stejnymi cisly da jiny
    # vysledek - proto je zapis hodnoty nize bezpecnejsi forma: uvadi rovnou
    # vysledny seznam a da se pustit opakovane se stejnym vysledkem. Rozdil neni
    # v tom, ze jedno je cmdlet a druhe registr, ale v tom, ze Enable-TlsEccCurve
    # odvozuje vysledek ze stavu stroje, kdezto zapis hodnoty ho urcuje cely.
    
    # nebo primo pres registr (stejny klic, ktery cte i audit skript v sekci 11).
    # EccCurves je REG_MULTI_SZ, ne REG_SZ - proto New-ItemProperty s -PropertyType
    # MultiString a ne .reg soubor: multi-string se v nem zapisuje jako hex(7) a je
    # necitelny. Pozor na rozdil proti sousedni hodnote Functions v tomtez klici,
    # ta REG_SZ s polozkami oddelenymi carkou je. Overeno merenim na Windows 11
    # build 26200.9168: tataz hodnota zapsana jako REG_SZ se po restartu
    # neprojevila vubec, jako REG_MULTI_SZ se projevila presne.
    New-ItemProperty -Force -PropertyType MultiString `
      -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002' `
      -Name EccCurves `
      -Value ('x25519_mlkem768,secp256r1_mlkem768,secp384r1_mlkem1024,curve25519,NistP256,NistP384' -split ',')
    
    # GPO: Computer Configuration > Administrative Templates > Network >
    # SSL Configuration Settings > ECC Curve Order > Enabled >
    # x25519_mlkem768,secp256r1_mlkem768,secp384r1_mlkem1024,curve25519,NistP256,NistP384
    #
    # Vsechny tri hybridy, ne jen prvni. EccCurves je uplny seznam a skupina,
    # ktera v nem neni, se nepouzije - klient, ktery umi jen secp256r1_mlkem768,
    # by tise spadl na klasickou vymenu klice. Vypsat je na serveru nic nestoji:
    # skupina se uplatni jen tehdy, kdyz ji klient nabidne. Samotny hybridni
    # handshake uz zadarmo neni - vymena klice ma u ML-KEM-768 asi 1200 B,
    # u secp384r1_mlkem1024 skoro 1700 B a ten je i narocnejsi na CPU.
    #
    # Poradi mezi hybridy: x25519_mlkem768 prvni, protoze je to jedina skupina,
    # kterou klienti nabizeji ve vychozim nastaveni (prohlizece pres BoringSSL/NSS,
    # Go, DEFAULT seznam OpenSSL 3.5). Silnejsi parametr ML-KEM-1024 tim neprichazi zkratka - je
    # v seznamu, takze klient, ktery si o nej rekne, ho dostane. Poradi
    # rozhoduje az tam, kde klient nabidne vic skupin nez jednu.
    #
    # EccCurves je uplny seznam: klasicke krivky se musi vypsat taky, jinak
    # je tento zapis zahodi.
    Proč není nejsilnější skupina první
    Pořadí rozhoduje jen mezi skupinami, které klient nabídne najednou. secp384r1_mlkem1024 je v seznamu, takže klient, který si o ML-KEM-1024 řekne, ho dostane bez ohledu na to, že je třetí – tím, že není první, o nic nepřicházíte.

    x25519_mlkem768 je vepředu ze dvou důvodů. Je to jediný ze tří, který klienti nabízejí ve výchozím nastavení: prohlížeče přes BoringSSL/NSS, Go, a OpenSSL 3.5 ho má jako jedinou hybridní skupinu ve svém DEFAULT seznamu – zbylé dvě umí, ale sám je nenabízí. (Stav k 09/2026. Je to údaj o klientském ekosystému, ne o Schannelu, takže se může změnit dřív než cokoliv jiného na této stránce.) A druhý důvod je výkonový: v TLS 1.3 posílá klient key share jen pro několik skupin, které odhadne. Když server preferuje skupinu, kterou klient sice inzeruje v supported_groups, ale key share pro ni neposlal, odpoví server HelloRetryRequest a handshake stojí jedno kolo navíc. Prohlížeče posílají share právě pro X25519MLKEM768, takže toto pořadí je zároveň to, které se s nimi domluví na první pokus.

    Kdy to obrátit: pod CNSA 2.0. NSA v něm pro national security systems předepisuje ML-KEM-1024, a ten z těch tří nese jedině secp384r1_mlkem1024 – pod tímto režimem patří na první místo, případně jako jediný hybrid. Odkaz je v . Mimo něj je ML-KEM-768 (NIST kategorie 3) považovaný za dostatečný.
    Po zapnutí ověřte Get-TlsEccCurve, nebo rovnou audit skript v sekci 11 – ten PQC skupinu v nastaveném pořadí rozezná a řekne, jestli ji OS opravdu aplikoval, nebo ji tiše zahodil: kvůli staršímu buildu, protože jde o Windows Server, nebo protože je zapnutý legacy FIPS režim.
    9 · Rychlá rozhodovací tabulka
    ScénářDoporučení
    10 · Parser cipher suite
    Katalog obsahuje – nejběžnějších suit napříč TLS 1.2/1.3 (od doporučených po zastaralé/rozbité) – ne celý ~350položkový IANA registr. Pokrývá ale celé výchozí pořadí Schannelu na Windows Serveru 2019/2022, takže výstup Get-TlsCipherSuite nebo obsah GPO seznamu se rozparsuje beze zbytku. Nenalezená suita nemusí být špatně, jen mimo tento ručně vybraný katalog; pro vyčerpávající seznam viz IANA TLS Cipher Suites registry.
    11 · Výchozí stav bez zásahu

    Než začnete něco měnit, stojí za to vědět, co server nabízí už teď. Žádný systém není „nenakonfigurovaný“ – jen běží na cizím rozhodnutí. A ta výchozí rozhodnutí se mezi Windows, RHEL, Debianem, nginxem i verzemi OpenSSL liší natolik, že „nic jsme nenastavovali“ neznamená na dvou strojích totéž.

    Podstatné je, že výchozí stav nedrží jedna vrstva, ale tři – a generátor v zapisuje pokaždé do jiné z nich:

    VrstvaKdo ji držíKam píše generátor
    1 · OS / krypto-politikaRegistr Schannelu, crypto-policies na RHEL, openssl.cnf na Debianu a Ubuntu.Windows – výstup generátoru je zásah přímo do této vrstvy.
    2 · Default aplikaceCo nginx, Apache nebo libovolná aplikace nad OpenSSL použije, když jí nic neřeknete.nginx, Apache, OpenSSL – generátor přepisuje jen tuto vrstvu.
    3 · Vaše konfiguraceTo, co do konfiguračního souboru napíšete ručně.—
    Vrstva 1 je výchozí stav, ne horní hranice – aplikace, která si nastaví vlastní seznam, z politiky vystoupí. Na RHEL to má praktický důsledek: jakmile v nginxu nahradíte PROFILE=SYSTEM vlastním ssl_ciphers, přestane pro něj platit update-crypto-policies a údržbu si berete na sebe.

    Výchozí stav podle systému

    Doporučení, které jde proti tomuto nástroji: pokud je výchozí pořadí suit na daném systému v pořádku, nenahrazujte ho pevným seznamem. Ručně zapsaný seznam stárne – přesně tento mechanismus dřív bránil nasazení ChaCha20 a stejně tak zabrání hybridnímu PQC key exchange (). Nejlevnější trvalý zásah je vypnout staré verze protokolu a řazení nechat na OS; celý řetězec přepisujte až tehdy, když z něj potřebujete něco konkrétního odstranit.
    Přehled Výchozí stav podle systému popisuje dokumentovaný stav, ne ten váš. Group policy, image od dodavatele, hardeningový skript nebo distribuční ssl.conf ho mohly dávno změnit. Jediný spolehlivý zdroj pravdy je sken běžící služby (testssl.sh, sslscan, nmap --script ssl-enum-ciphers) – dokumentace říká, co má být, sken co je.

    Audit skript – co má tento stroj teď

    Přehled popisuje stav dokumentovaný. Tento skript zjistí ten váš: přečte registr Schannelu, projde protokoly, pořadí cipher suit, křivky i .NET klíče a vypíše nálezy ve třech úrovních plus samostatná doporučení. Je statický – nezávisí na ničem, co nastavíte v generátoru v . Co která kontrola znamená, rozebírají a pod náhledem.

    Jen čte. Nezapisuje do registru, nerestartuje služby a nikam nevolá, takže se dá pustit i na produkci. Nepotřebuje ani administrátorská práva – bez nich může nanejvýš pár položek chybět. Běží na PowerShellu 2.0 a novějším, tedy od Windows 7 / Serveru 2008 R2 výš; na jiném systému než Windows se odmítne spustit, aby nevypisoval zavádějící výsledky.
    
        
    Skript hlásí, co je v registru – ne to, co server ve skutečnosti vyjedná na síti. Rozdíl dělá aplikace, která si protokol vynutí sama, a čekající restart. Pohled zvenku dá jen sken: testssl.sh, sslscan, nmap --script ssl-enum-ciphers.

    Co skript projde

    Sekce reportu odpovídají tomuto pořadí. Napříč všemi platí jedna věc, kterou one-liner nad registrem neumí: skript rozliší „klíč není nastaven“ od „je vypnuto“ – chybějící klíč znamená výchozí stav OS, což je nejčastější chybné čtení celého registru Schannelu.

    Sekce reportuCo v ní zjistíte
    SystemVerzi Windows z CurrentBuildNumber a DisplayVersion (ProductName na Windows 11 hlásí „Windows 10“, skript to opraví a řekne, že opravil) a zapnutý FIPS režim.
    ProtokolySSL 2.0 až TLS 1.3, zvlášť v roli serveru a v roli klienta. Pozná i hodnotu 0xFFFFFFFF a řekne, že funguje, ale neodpovídá dokumentaci.
    Pořadí cipher suitesPorovná nakonfigurovaný Functions proti tomu, co OS opravdu aplikoval – tedy odhalí tiše ignorované položky, které posouvají prioritu zbytku. Každou suitu ohodnotí a zkontroluje jejich pořadí.
    Legacy klíčePer-algoritmus klíče Ciphers\, Hashes\ a KeyExchangeAlgorithms\ – a jejich rozpor s aktivním pořadím suit.
    Délka klíče pro DHEServerMinKeyBitLength a ClientMinKeyBitLength, jejichž výchozí hodnoty se liší podle role.
    .NET FrameworkSystemDefaultTlsVersions a SchUseStrongCrypto ve všech čtyřech klíčích, které generátor umí zapsat.
    Křivky a PQC hybridyVlastní pořadí EccCurves z policy i lokálního klíče proti Get-TlsEccCurve. Stejným porovnáním odhalí tiše zahozené x25519 i PQC hybrid nastavený v GPO, který OS neaplikoval (starší build, Windows Server, nebo FIPS režim).
    Nálezy · DoporučeníSouhrn na konci; s přepínačem -Json totéž strojově, s -OutFile do souboru. Přidáte-li k němu -Markdown, vznikne .md se souhrnnou tabulkou a nálezy po úrovních – tělo sekcí zůstává v blocích kódu, protože jde o zarovnaná data, ne o věty.

    Úrovně nálezů a návratový kód

    ÚroveňKdy ji skript použijeKód
    CRITProlomená kryptografie, kterou stroj v této konfiguraci opravdu vyjedná.2
    WARNNěco k nápravě: vyřazený protokol, slabší suita nad silnější, ignorované položky seznamu.1
    INFOStav, který stojí za vědomí, ale sám o sobě defekt není – nebo nález, u kterého platí podmínka, již skript z registru neověří.0
    DoporučeníCo jde přidat. Není to defekt, proto má vlastní sekci vedle nálezů.nemění
    Návratový kód dává smysl v monitoringu, proto doporučení nezvedají ani jedničku. Cenou za to je, že sekce Doporučení bývá neprázdná i na úplně zdravém stroji – schopný build s vypnutými PQC skupinami si tip vyslouží vždycky. Není to šum, je to význam té sekce.

    Proč skript hodnotí zrovna takhle

    Rozhodnutí, která z reportu nejsou vidět, ale mění, co v něm najdete. Pro použití skriptu je číst nemusíte – hodí se, když se s nějakým nálezem nebo naopak s jeho nepřítomností potřebujete přít.

    Protokoly se hodnotí v obou rolích – a zapnutý protokol bez suity je taky nález

    Serverová strana nabízí zastaralý protokol komukoli na síti, takže je přísnější; klientská ho jen nabídne protistraně, kterou si stroj vybral sám, a jde tedy o stupeň níž – SSL 2.0/3.0 je na serveru CRIT a na klientu WARN, TLS 1.0/1.1 WARN a INFO. Chybějící moderní protokol je ale stejně vážný v obou: vypnuté TLS 1.2 i 1.3 na klientské straně znamená, že se odsud nenaváže odchozí spojení. Na pracovní stanici rozhoduje právě tato polovina – serverová tam neposlouchá nic.

    Protokolová a suitová část se navíc porovnávají navzájem. Seznam ve Functions je úplný, takže zapnutý protokol, pro který v něm není ani jedna vyjednatelná suita, je zapnutý jen v tabulce protokolů – na síti na něm Schannel nedomluví nic. Suity, které potřebují opt-in aplikace, se za vyjednatelné nepočítají; jinak by TLS_RSA_WITH_NULL_SHA „pokryla“ všechny staré protokoly naráz, což je přesně ten stav, kvůli kterému kontrola vznikla. U vyřazených protokolů je to INFO (zbytek po předchůdci, ne expozice), u TLS 1.2 WARN – tam se nepřipojí klient, který neumí TLS 1.3.

    Pořadí suit: dvě kontroly, každá zvlášť pro TLS 1.3 a pro TLS 1.2

    Pořadí se hodnotí jen tam, kde nějaký Functions existuje – bez něj platí výchozí pořadí OS a není co soudit. Kontroly jsou dvě: slabší suita nad silnější a HTTP/2-nekompatibilní TLS 1.2 suita v čele TLS 1.2 části (RFC 9113, příloha A – jen PFS + AEAD). Obojí je otázka výběru ze společně podporovaných suit a v každé roli znamená něco jiného. V roli serveru pořadí přímo rozhoduje: Schannel vybere vždy nejvýše prioritní suitu, kterou protistrana také umí, takže slabší nebo HTTP/2-nekompatibilní suitu dostane ten, kdo ji umí, přesně když je nastavená výš než ta lepší. V roli klienta stejné pořadí jen určuje preferenci, se kterou tento stroj suity nabídne – o výsledku rozhoduje server na druhé straně.

    Obě kontroly běží zvlášť pro TLS 1.3 a zvlášť pro TLS 1.2 suity, protože verze protokolu se vyjednává dřív a nezávisle na pořadí ve Functions – klient s TLS 1.3 dostane TLS 1.3 suitu, ať je v seznamu kdekoli, a klient bez TLS 1.3 na ni nedosáhne vůbec. Má to dva důsledky, které jdou proti intuici: TLS 1.2 suita nad TLS 1.3 suitou není chyba pořadí (ty dvě se v jednom handshaku nikdy nepotkají), zatímco CBC suita v čele TLS 1.2 části je nález i tehdy, když jsou nad ní TLS 1.3 suity – klient, který TLS 1.3 neumí, dostane právě ji.

    Dvě věci, které jako chyba pořadí vypadají a záměrně se nehodnotí: AES-128 nad AES-256 (Mozilla dává 128 první schválně) a RSA nad ECDSA (závisí na certifikátu navázaném na službu, ten skript nevidí).

    Vedle pořadí umí skript i co doplnit – nejčastější nález této poloviny je hardeningová GPO starší než TLS 1.3: protokol je zapnutý, jenže seznam ve Functions je úplný – co v něm není, se nepoužije – takže TLS 1.3 nemá čím vyjednávat.

    Závažnost: vyjedná se ta suita sama od sebe – a kdo ji do pořadí dal?

    Dvě rodiny suit Schannel nabídne jen aplikaci, která si o ně řekne: PSK přes SCH_USE_PRESHAREDKEY_ONLY a NULL suity přes dwMinimumCipherStrength = -1 (MS Learn je ve výchozím pořadí uvádí přímo s poznámkou „Only used when application explicitly requests“ a SCH_USE_STRONG_CRYPTO je odfiltruje). Bez tohoto rozlišení by stroj s nedotčenými Windows 11 skončil na CRIT kvůli TLS_PSK_WITH_NULL_SHA384 a oběma TLS_RSA_WITH_NULL_* ve výchozím pořadí – tedy na alarmu, se kterým nejde nic dělat, protože odebrat je znamená zmrazit celé Functions.

    Snížení úrovně se proto váže na to, kdo tu suitu do pořadí dal, ne na opt-in samotný. A tuto otázku zodpoví jen policy klíč: ten začíná prázdný a zapisuje se celý najednou (GPO, MDM, generátor v sekci 12), takže každá položka v něm je něčí volba. Lokální klíč …\Cryptography\Configuration\Local\SSL\00010002 je naopak úložiště CNG a výchozí pořadí OS v něm leží taky – MS na něj posílá diagnostiku „jaké suity ten stroj má“ a Azure Arc do něj nechává suitu přidat do seznamu, tedy do už existujícího. Jeho existence proto nedokazuje volbu, nanejvýš to, že z něj nikdo nic neubral (CNG cmdlety umí jen odebírat).

    Rozdíl je vidět na téže suitě: TLS_RSA_WITH_NULL_SHA256 ve výchozím pořadí je WARN, tatáž suita dopsaná do GPO je CRIT. A rodina, která opt-in nepotřebuje, neklesá vůbec – proto nedotčený Server 2022 na CRIT končí, kvůli TLS_RSA_WITH_3DES_EDE_CBC_SHA ve svém výchozím pořadí.

    Nález ale nikdy nezmizí a podmínku vždycky pojmenuje. Opt-in není nic, co by šlo vyjednat po síti – je to lokální volba aplikace při získávání credentialu, takže ho protistrana nezapne. Riziko je lokální: vývojářský kód, který se dostal do produkce, nebo SDK dodavatele. A právě to skript z registru nevidí. Neověřená podmínka se proto napíše do textu nálezu, neodmávne: pokud taková aplikace běží, jde u NULL suity opravdu o nešifrované spojení a nález platí v plné váze.

    Pořadí se naproti tomu soudí u každého existujícího seznamu, i toho lokálního: ruční úprava lokálního klíče je dokumentovaný postup a vázat hodnocení pořadí na policy klíč by ho na takovém stroji vyplo. Jsou to dvě různé otázky – kdo seznam vybral a je vůbec co hodnotit.

    Minimální délka DH klíče má vlastní sekci – a výchozí hodnoty se liší podle role

    Podklíč SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman nenese Enabled, takže do smyčky nad legacy klíči nespadne a bez vlastní sekce by po něm v reportu nezůstal řádek. Přitom je pod minimem právě jedna z jeho výchozích hodnot: ServerMinKeyBitLength je od Windows 10 / Serveru 2016 2048 (advisory 3174644), ale ClientMinKeyBitLength je 1024 bez ohledu na verzi – a RFC 9325 §4.5 žádá „at least 2048 bits“ jako REQUIRED.

    Výsledek řídí dvě nezávislé osy – stejná dvojice jako u závažnosti suit: kdo hodnotu nastavil (to je závažnost) a uplatní se teď (to je expozice, tedy jestli je v aktivním pořadí nějaká TLS_DHE_* suita).

    Hodnota pod 2048DHE suita v pořadíBez DHE suity
    Někdo ji zapsalWARN – uplatní se, přepsat na 2048 je jednořádková úprava.INFO – platí na papíře, ne na síti. Uplatní se ve chvíli, kdy se DHE do pořadí dostane.
    Nenastavená (výchozí stav Windows)Doporučení – nezvedá návratový kód komukoli, kdo skript pouští z monitoringu.Mlčí – rada, kterou by dostal každý stroj při každém běhu, je přesně ten šum, kvůli kterému sekce doporučení vznikla.

    Zapsaná hodnota nižší než výchozí hodnota daného Windows se navíc pojmenuje jako oslabení proti tomu, co OS dělá sám – bez té věty vypadá zápis jako potvrzení výchozího stavu.

    Víc než 2048 se nedoporučuje záměrně: DHE je záloha pro klienty bez eliptických křivek a právě ti na delším modulu spíš spadnou – kdo chce 128 bitů, má sáhnout po ECDHE, ne po větším modulu. RFC 9325 ostatně doporučuje TLS_DHE_* nevyjednávat vůbec.

    Legacy per-algoritmus klíče: report hlásí rozpor, ale závažnost na ně neváže

    Když Ciphers\NULL nebo Ciphers\RC4 128/128 algoritmus vypíná, ale tatáž rodina je pořád v aktivním pořadí suit, řekne to skript jedním INFO. Závažnost tím nesnižuje – MS dnes u AD FS uvádí, že řízení ciphers přes registr „isn't supported“, a odkazuje na pořadí cipher suit, takže na tento klíč nejde vázat úroveň nálezu. Bez toho ale jeden report na jedné stránce tvrdil obojí naráz a nic ty dva řádky nespojovalo.

    Totéž platí pro výměnu klíče, a tam na tom záleží nejvíc: KeyExchangeAlgorithms\ECDH vypnutá proti dvanácti TLS_ECDHE_* suitám v pořadí je stroj, který nejspíš vyjedná už jen statickou RSA. WARN o tom říká, že klíč přebíjí výběr suit; INFO vyjmenuje, kterých suit se to týká. Jsou to dvě různé věty, ne dvakrát táž.

    Opačný směr – algoritmus někdo výslovně zapnul – se hlásí jen u prolomených šifer (NULL, RC4, Triple DES) a jen tehdy, když v aktivním pořadí žádná taková suita není. Functions je úplný seznam, takže zapnutý algoritmus sám o sobě žádnou suitu nevrátí do hry – zbývá případ „někdo to zapnul a nic to nepoužívá“, tedy zbytek po starší konfiguraci, který se dá smazat. Když ta suita v pořadí je, mluví o ní nález u cipher suit a druhý řádek by opakoval totéž. Plošně se to ozvat nemůže: na nedotčeném stroji tyto podklíče neexistují.

    Hashes\MD5 ani Hashes\SHA mezi ně nepatří – MS sám u Hashes odkazuje na pořadí cipher suit a tam je to pokryté: _MD5 je CRIT, _CBC_SHA WARN.

    Doporučení berou v potaz verzi OS – a u PQC rozhoduje revize, ne major build

    Minimální sada suit se řídí buildem, takže TLS 1.3 se nedoporučí Serveru 2019, který ho neumí. U PQC hybridů rozhoduje revize: tentýž build 26100 bez revize 8514 skupiny nezná a na Windows Serveru zatím v GA nejsou. Skript proto vypisuje Build : 26200.8514 včetně UBR.

    Čísla 8514 a 8524 odpovídají na dvě různé otázky a pletou se: 8514 je minimum, které uvádí MS Learn pro to, aby build skupiny znal – a přesně na to se audit ptá. 26100.8524 z KB5089573 je až GA build, tedy odpověď na „je to obecně dostupné“, kterou řeší . Kdyby se audit ptal na GA, odpověděl by „nezná“ i strojům z release preview, které skupiny mají.

    Co skript záměrně nekontroluje: čím je podepsaný certifikát. Jestli stroj přijme certifikát podepsaný MD5 nebo SHA-1, neřídí klíč SCHANNEL\Hashes – ten je o MAC v cipher suitě – ale samostatná politika ověřování řetězce v HKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CertDllCreateCertificateChainEngine\Config: hodnoty WeakMd5ThirdPartyFlags, WeakSha1ThirdPartyFlags, WeakRsaAllMinBitLength a další ve tvaru Weak<Alg><All|ThirdParty><Flags|MinBitLength|AfterTime>. Vypíšete je příkazem certutil -getreg chain, výchozí chování OS pak certutil -getreg chain\default. Je to jiná vrstva než vyjednávání spojení – rozhoduje o tom, co se ověří, ne o tom, co se domluví – proto ji tento skript nečte. Na hardenovaném stroji ale stojí za samostatnou kontrolu: silné suity a slabě podepsaný certifikát jsou dva nezávislé problémy.
    12 · Generátor konfigurace TLS

    Vyberete platformu, cílovou generaci systému a profil – nástroj z toho složí konfiguraci a než ji nabídne, zkontroluje, že kombinace vůbec dává smysl (protokol bez použitelné suity, suita bez protokolu, suita, kterou daná platforma nezná).

    Cílová platforma

    Pro Windows generátor zapisuje jen moderní podobu konfigurace: klíče protokolů a jeden seřazený seznam cipher suit (Server 2016 / Windows 10 1607 a novější). Legacy per-algoritmus klíče Ciphers\, Hashes\ a KeyExchangeAlgorithms\, kterými se konfigurují starší systémy, negeneruje. Co z toho plyne, rozebírají .

    Cílový systém

    Profil

    Doplňky pro .NET Framework

    Tyto klíče nekonfigurují Schannel – říkají .NET Frameworku, aby si výběr protokolu nedělal po svém a nechal ho na OS. SystemDefaultTlsVersions=1 předá rozhodnutí systému, SchUseStrongCrypto=1 zapne příznak SCH_USE_STRONG_CRYPTO, kterým Schannel odfiltruje známé slabé algoritmy. Bez nich může aplikace nad starším target frameworkem chodit na TLS 1.0, i když máte registr Schannelu nastavený správně.

    Dvě omezení, která je potřeba vzít v potaz: obě hodnoty ovlivňují jen klientská (odchozí) spojení aplikace, takže hardening serveru nenahrazují – ten dělá zbytek této konfigurace. A platí pro všechny .NET aplikace na stroji, ne jen pro tu vaši. Pro aplikace cílící na .NET Framework 4.7+ jsou obě hodnoty už výchozí; smysl mají hlavně tam, kde běží něco staršího. Klíče v2.0.50727 pokrývají .NET 3.5, WOW6432Node 32bitové aplikace na 64bitových Windows – proto všechny čtyři.

    Post-quantum Supported Groups

    Výsledná konfigurace

    
    
        

    Náhled:

    
    
        

    Proč generátor zapisuje zrovna takhle

    Rozhodnutí za výstupem pro Windows. Ke spuštění je číst nemusíte – hodí se, když se někdo ptá, proč je v jednom .reg souboru vidět dvakrát jiná větev registru, nebo proč v něm není hodnota, na kterou je zvyklý z hardeningové baseline.

    Dva způsoby konfigurace Schannelu – generátor umí jen ten novější

    Windows Schannel se konfiguruje dvěma způsoby, které se v praxi mísí podle stáří systému:

    PřístupKdeKdy
    Legacy (per-algoritmus)Jednotlivé klíče ...SCHANNEL\Ciphers\, \Hashes\, \KeyExchangeAlgorithms\ – enable/disable po jednotlivých algoritmech, žádné řazení preferencí.Server 2012 R2, Windows 7/8.1 a starší.
    Moderní (řetězec + protokoly)SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\<verze>\{Client,Server}\Enabled pro zapnutí/vypnutí verze protokolu, a SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002\Functions jako jeden seřazený řetězec cipher suite (ekvivalent Get/Enable/Disable-TlsCipherSuite).Server 2016/2019/2022/2025, Windows 10 1607+ / 11.
    Proč se zapisuje do dvou různých větví registru
    Protokoly jdou do HKLM\SYSTEM\…\SCHANNEL\Protocols\, pořadí cipher suit do HKLM\SOFTWARE\Policies\Microsoft\…\SSL\00010002. Není to nedůslednost – každá polovina je na svém jediném dokumentovaném místě.

    Pro zapnutí a vypnutí verze protokolu žádná zásada skupiny neexistuje: uzel Network → SSL Configuration Settings obsahuje jen SSL Cipher Suite Order a ECC Curve Order, takže registr je jediná cesta. U pořadí suit je to obráceně – klíč pod Policies je úložiště té zásady, Microsoft nastavování suit směruje přes GPO, MDM nebo PowerShell a zápis do lokálního klíče (…\Cryptography\Configuration\Local\SSL\00010002) výslovně označuje za nepodporovaný: ten drží výchozí pořadí OS a servisní aktualizace ho může přepsat.

    Praktický důsledek: hodnota pod Policies je přesně ta, kterou na doménovém stroji přepíše policy refresh, pokud tutéž zásadu řídí GPO – proto skript na konci připomíná dvoukrokové ověření. Audit v naopak čte oba klíče, protože cmdlety Enable-TlsCipherSuite a Enable-TlsEccCurve zapisují do toho lokálního.
    Seznam suit má limit 1023 znaků
    Platí pro hodnotu Functions i pro pole SSL Cipher Suites v GPO – Microsoft ho uvádí na obou místech. Nejdelší seznam, který tento generátor umí vydat, má 916 znaků (Custom se vším zaškrtnutým), takže se do limitu vejde; hlídá to i selftest, protože rezerva jsou zhruba dvě jména suit a katalog roste.
    Enabled = 1, nebo 0xFFFFFFFF?
    Schannel bere jako zapnuto jakoukoli nenulovou hodnotu, takže obě varianty fungují stejně. 0xFFFFFFFF pochází z hardeningových baseline a starších návodů a rozšířila se jejich kopírováním; aktuální dokumentace Microsoftu ale u obou hodnot – Enabled i DisabledByDefault – uvádí výhradně 0 nebo 1. Generátor proto zapisuje 1: chová se identicky a je to tvar, který Microsoft dokumentuje. Compliance baseline se v tom ale neshodují mezi sebou – DISA STIG požaduje Enabled = 1 a DisabledByDefault = 0, kdežto CIS benchmarky pro IIS předepisují 0xFFFFFFFF. Sken, který porovnává literál, tedy jednu z těch dvou hodnot označí za odchylku vždycky; kterou, záleží na tom, jakou baseline používáte. Obě hodnoty zapisuje explicitně (ne jen mazáním klíče), aby výsledný stav nezávisel na tom, co na stroji nastavil někdo před vámi.

    13 · Zdroje
    RFC 8446 – TLS 1.3 · RFC 9325 – BCP 195, TLS Recommendations · RFC 8996 – Deprecating TLS 1.0/1.1 · RFC 9113 – HTTP/2, příloha A (zakázané suity)
    NIST SP 800-52r2 – Guidelines for TLS · FIPS 203 – ML-KEM · FIPS 204 – ML-DSA · FIPS 205 – SLH-DSA
    Mozilla SSL Configuration Generator · BSI TR-02102-2 · NSA CNSA 2.0 · SSL Labs – SSL/TLS Deployment Best Practices · IIS Crypto – FAQ
    MS Learn – TLS/SSL (Schannel SSP) Technical Reference · MS Learn – Manage TLS · MS Learn – Cipher Suites in TLS/SSL · MS Learn – Enable-TlsCipherSuite · MS Learn – TLS Elliptic Curves (výchozí pořadí křivek, do Windows 10/Server 2022) · MS Learn – TLS Supported Groups (Windows 11 24H2+, PQC hybridy) · MS Learn – Enable-TlsEccCurve · MS Learn – Configure TLS ECC Curve Order (GPO) · MS Learn – Edge 131: přechod Kyber → ML-KEM (změna kódového bodu)
    MS Learn – Protocols in TLS/SSL (výchozí stav verzí) · MS Learn – Cipher Suites in Windows 10 v1809 / Server 2019 · MS Learn – … Windows Server 2022 · MS Learn – … Windows Server 2025 · MS Learn – Disable weak cryptographic algorithms in certificate validation (jiná vrstva: podpis certifikátu, ne suita) · MS Security Advisory 3174644 – délka DHE modulu (jediný zdroj pro ServerMinKeyBitLength)
    nginx – ngx_http_ssl_module · Apache – SSLCipherSuite · OpenSSL – openssl-ciphers · OpenSSL – SSL_CTX_set_security_level (@SECLEVEL)
    crypto-policies(7) – RHEL / Fedora system-wide policy · Ubuntu Server docs – OpenSSL defaults