Portál AbcLinuxu, 30. dubna 2025 17:37
Používání SSL, resp. dnes už spíše TLS patří k základním metodám zvýšení bezpečnosti komunikace. Ovšem jak bezpečná komunikace opravdu bude, záleží na tom, jak se klient a server dohodnou. Přináším pár informací o tom, jak k tomu různé prohlížeče přistupují.
Posílat jakékoli citlivé informace (přihlašovací hesla, citlivé osobní údaje, firemní know-how atd.) obyčejnými komunikačními prokololy je poměrně riskantní. Ucho přiložené na drátech je snadno odposlechne a následně je lze zneužít. V případě možnosti zasahovat do přenosové trasy lze data i pozměnit, aniž by to komunikující strny mohly zjistit. Proto je ve všech takových případech potřeba komunikaci náležitě chránit. Základní úroveň zabezpečení poskytuje TLS (případně starší technologie SSL), samozřejmě s patřičným ověřování certifikátů a s výběrem šifrovacích algoritmů.
Právě těchto algoritmů se buduou týkat následující řádky. Aby se dalo vůbec komunikovat šifrovaně, musí obě strany (tedy obvykle klient a server, ale u peer-to-peer komunikace je to obdobné) zvládat stejný šifrovací algoritmus. Totéž se týká i algoritmů pro výměnu klíčů. Obvykle má každá ze stran k dispozici poměrně širokou škálu algoritmů (kombinací šifrování a výměny klíčů) a volí se jak podle konfigurace, tak podle podpory u protistrany.
Proto je zajímavé se podívat, jak k tomu různé programy přistupují. Následující srovnání se bude týkat jen webových prohlížečů, a to ve verzi pro Windows. Serverovou protistranou bude vždy server Apache 2.2.16 s modulem GnuTLS (tedy nikoli OpenSSL, jak je běžné; historickým důvodem používání byla podpora TLS 1.1, která v době instalace nebyla u OpenSSL ještě k dispozici) a s nastavením GnuTLSPriorities SECURE
. Uvedené nastavení zajišťuje použití všech podporovaných algoritmů považovaných za bezpečné, a to v pořadí podle úrovně bezpečnosti. Jednotlivé prohlížeče jsou ve výchozím nastavení, jen u Opery si tím nejsem zcela jistý, protože nemohu vyloučit, že jsem někdy v minulosti s nastavením manipuloval.
TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff) TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (0x0088) TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA (0x0087) TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039) TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038) TLS_ECDH_RSA_WITH_AES_256_CBC_SHA (0xc00f) TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA (0xc005) TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (0x0084) TLS_RSA_WITH_AES_256_CBC_SHA (0x0035) TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007) TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011) TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (0x0045) TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA (0x0044) TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033) TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032) TLS_ECDH_RSA_WITH_RC4_128_SHA (0xc00c) TLS_ECDH_RSA_WITH_AES_128_CBC_SHA (0xc00e) TLS_ECDH_ECDSA_WITH_RC4_128_SHA (0xc002) TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA (0xc004) TLS_RSA_WITH_SEED_CBC_SHA (0x0096) TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (0x0041) TLS_RSA_WITH_RC4_128_SHA (0x0005) TLS_RSA_WITH_RC4_128_MD5 (0x0004) TLS_RSA_WITH_AES_128_CBC_SHA (0x002f) TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc008) TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012) TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (0x0016) TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013) TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA (0xc00d) TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc003) SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA (0xfeff) TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039) TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038) TLS_DH_RSA_WITH_AES_256_CBC_SHA (0x0037) TLS_DH_DSS_WITH_AES_256_CBC_SHA (0x0036) TLS_RSA_WITH_AES_256_CBC_SHA (0x0035) TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033) TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032) TLS_DH_RSA_WITH_AES_128_CBC_SHA (0x0031) TLS_DH_DSS_WITH_AES_128_CBC_SHA (0x0030) TLS_RSA_WITH_AES_128_CBC_SHA (0x002f) TLS_RSA_WITH_RC4_128_SHA (0x0005) TLS_RSA_WITH_RC4_128_MD5 (0x0004) TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013) TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA (0x000d) TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (0x0016) TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA (0x0010) TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (0x0088) TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA (0x0087) TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039) TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038) TLS_ECDH_RSA_WITH_AES_256_CBC_SHA (0xc00f) TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA (0xc005) TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (0x0084) TLS_RSA_WITH_AES_256_CBC_SHA (0x0035) TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007) TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011) TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (0x0045) TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA (0x0044) TLS_DHE_DSS_WITH_RC4_128_SHA (0x0066) TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033) TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032) TLS_ECDH_RSA_WITH_RC4_128_SHA (0xc00c) TLS_ECDH_RSA_WITH_AES_128_CBC_SHA (0xc00e) TLS_ECDH_ECDSA_WITH_RC4_128_SHA (0xc002) TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA (0xc004) TLS_RSA_WITH_SEED_CBC_SHA (0x0096) TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (0x0041) TLS_RSA_WITH_RC4_128_SHA (0x0005) TLS_RSA_WITH_RC4_128_MD5 (0x0004) TLS_RSA_WITH_AES_128_CBC_SHA (0x002f) TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc008) TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012) TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (0x0016) TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013) TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA (0xc00d) TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc003) SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA (0xfeff) TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
TLS_RSA_WITH_AES_128_CBC_SHA (0x002f) TLS_RSA_WITH_AES_256_CBC_SHA (0x0035) TLS_RSA_WITH_RC4_128_SHA (0x0005) TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a) TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032) TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038) TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013) TLS_RSA_WITH_RC4_128_MD5 (0x0004)
TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
Nebudu vynášet žádné velké soudy ohledně volby algoritmu. Nejsem specialista na šifrovací algoritmy, proto bych jen vařil z vody. Zmínil bych ale pár pozoruhodných věcí:
Více už to nebudu komentovat, přenechám to těm, kdo jsou větší odborníci...
Tiskni
Sdílej:
Opera will autorepair damage to the certificate repository, a missing Certificate Authority is considered damage. Opera ships with a list of frequently used certificates, and if any of these are missing they will be added the next time the repository is read from disk. Other certificates will be added from the online repository as needed.Můžete to někdo s Operou potvrdit?
TLS_RSA_WITH_RC4_128_MD5 (0x0004)To zní bezpečně…
256bitové algoritmy (tedy vyšší bezpečnost a vyšší zátěž procesoru)Co jsem kdysi měřil, tak minimálně AES je skoro stejně rychlý ve 128b i 256b verzi. Ale mohla to být domrvená implementace.
To zní bezpečně…Jo, to jo...
Co jsem kdysi měřil, tak minimálně AES je skoro stejně rychlý ve 128b i 256b verzi. Ale mohla to být domrvená implementace.Je to možné, jinak narazil jsem na tohle, docela zajímavé
TLS_RSA_WITH_RC4_128_MD5Kupodivu v kontextu TLS je to (resp. bylo to) bezpecnejsi nez AES nebo 3DES v CBC modu, viz BEAST, Lucky 13 nebo CRIME/BREACH.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.