Porovnanie rýchlosti načítania webu s použitím RSA/ECC certifikátu a rôznych verzií HTTP protokolu
21.6.2024 | Jindřich Zechmeister
ECC certifikáty sú alternatívou k RSA certifikátom. Poskytujú rovnakú bezpečnosť pri kratšej dĺžke kľúča, čo urýchľuje prácu a znižuje zaťaženie servera. Na rýchlosť načítania webu má vplyv aj prenosový protokol; HTTP/2 a najnovšie HTTP/3 výrazne zlepšujú prácu s otvoreným spojením a zrýchľujú načítanie stránok. V tomto článku overíme, či má na rýchlosť načítania webu väčší vplyv certifikát alebo verzia HTTP protokolu.
ECC certifikáty používajú kratší kľúč pri rovnakej miere zabezpečenia
ECC certifikáty sú už mnoho rokov dostupné ako alternatíva certifikátov s RSA algoritmom. ECC kľúč (kryptografia eliptických kriviek) dosahuje rovnakú bezpečnosť ako RSA kľúč s niekoľkonásobnou bitovou dĺžkou (256b ECC kľúč = 3072b RSA); vďaka kratšej dĺžke je práca s ním rýchlejšia a berie serveru menej procesorového výkonu. Keď meriame, akou veľkou rýchlosťou sa načíta web, musíme vziať do úvahy aj protokol prenosu dát. Už niekoľko rokov môžeme využiť rýchly protokol HTTP/2 av posledných rokoch dokonca jeho tretiu verziu. Modernejšia verzia už prekonaného HTTP/1.1 ponúka výrazne lepšiu prácu s otvoreným spojením (každý súbor sa nemusí prenášať zvlášť) a veľmi zrýchľuje načítanie stránok. Poďme sa pozrieť, či má na rýchlosť načítania webu väčší vplyv certifikát s menším verejným kľúčom, alebo modernejší protokol prenosu dát.
Metodika merania
Pre testovanie bol použitý redakčný systém Wordpress bez ďalších úprav, bez obsahu as predvolenou šablónou.
Pre meranie výsledkov boli zvolené dve služby - PageSpeed Insights, čo je nástroj od Google, a nástroj GTmetrix.com. Pre meranie GTmetrix bol vybraný server v Nemecku a pri každom meraní je uvedený simulovaný prehliadač (a zariadenia) + simulovaná rýchlosť pripojenia.
Voľba padla na výkonný ZonerCloud server VPS s Apache/2.4.59 (Debian); pre test HTTP/3 poslúžil namiesto Apache webový server OpenLiteSpeed verzie 1.7.19.
Vysvetlenie použitých pojmov
Google svojím nástrojom Lighthouse stanovil najpoužívanejší referenčný benchmark benchmark rýchlosti, s akou sa weby načítajú. Lighthouse môžete použiť v každom prehliadači Chrome, ale hlavne pomocou služby PageSpeed Insights. Tá slúži vývojárom webov a odborníkom na SEO na ladenie rýchlosti webu a jeho odozvy.
Google Lighthouse používa niekoľko termínov, ktoré treba vysvetliť.
- FCP (First Contentful Paint) je metrika, ktorá meria čas od začiatku načítania stránky do doby, kedy sa na obrazovke užívateľa zobrazí prvý kus obsahu (napr. text, obrázok, canvas render). Hodnota by mala byť do 1,8 sekundy.
- LCP (Largest Contentful Paint) je metrika, ktorá meria čas od začiatku načítania stránky do doby, kedy je na obrazovke používateľa vykreslený najväčší viditeľný obsahový prvok. Dobrý výsledok je do 2,5 sekundy.
- Speed Index - meria ako rýchlo sa obsah vašej stránky viditeľne zaplní. Dobrý výsledok je 1,3s alebo menej.
Vo výsledkoch testu GTmetrix.com uvádzam hodnotu SSL (waterfall), ktorá udáva, ako dlho pri načítaní stránky trval TLS handshake, teda zriadenie komunikácie pomocou HTTPS.
Protokol HTTP/1.1
Táto verzia HTTP protokolu je prastará - pochádza už z roku 1997. Každému je určite jasné, že vtedajšie weby vyzerali obsahovo aj technicky inak. Tento protokol sa nehodí na použitie v dnešnej dobe, keď sú webové stránky obsiahle, komplexné a plné obrázkov s javascriptom. Stále však slúži ako "záložný" (fallback) protokol pre starších klientov a stále teda prežíva.
PageSpeed Insights
Certifikát | Výkon | FCP | LCP | Speed Index |
---|---|---|---|---|
ECC | 94 (desktop) | 0.5s | 0.9s | 0.9s |
ECC | 94 (mobil) | 1.7s | 2.7s | 3s |
RSA | 92 (desktop) | 0.5s | 0.8s | 1.8s |
RSA | 94 (mobil) | 1.6s | 3.0s | 1.8s |
GTM – server Frankfurt Germany
Nastavenia: Apple iPhone 6/6S/7/8/SE (2nd/3rd Gen) LTE (15/10 Mbps. 100ms)
Certifikát | Výkon | FCP | LCP | Speed Index | SSL (waterfall) |
---|---|---|---|---|---|
ECC | A – 95 % | 888ms | 1.3s | 1.2s | 123ms |
RSA | A – 95 % | 896ms | 1.3s | 1.2s | 128ms |
Nastavenia: Apple iPhone 6/6S/7/8/SE (2nd/3rd Gen) 3G (1.6 Mbps/768 Kbps 200ms)
Certifikát | Výkon | FCP | LCP | Speed Index | SSL (waterfall) |
---|---|---|---|---|---|
ECC | C – 62 % | 1.4s | 6.7s | 4.1s | 241ms |
RSA | C – 62 % | 1.4s | 6.8s | 4.3s | 245ms |
Nastavenia: Desktop Chrome Unthrottled Connection
Certifikát | Výkon | FCP | LCP | Speed Index | SSL (waterfall) |
---|---|---|---|---|---|
ECC | A – 99 % | 314ms | 395ms | 395ms | 23ms |
RSA | A – 99 % | 335ms | 417ms | 410ms | 22ms |
Výsledky merania protokolu HTTP 1.1 ukazujú, že algoritmus verejného kľúča v certifikáte (a jeho dĺžka) prakticky nemajú na načítanie webu vplyv a jeho rýchlosť je v oboch prípadoch rovnaká. Dôležitá je rýchlosť siete - pokiaľ simulujeme neobmedzenú rýchlosť pripojenia, tak handshake trvá desatinu času ako na pomalšom 4G/LTE s menej rýchlou odozvou.
Protokol HTTP/2
Modernejšia verzia HTTP protokolu prináša niekoľko zásadných vylepšení, ktoré prispievajú k rýchlejším načítaniu stránky. Najviac je rozdiel medzi HTTP 1.1 a HTTP/2 zrejmý pri stránkach s viacerými obrázkami, kde modernejší protokol nesťahuje každý z nich samostatne naviazaným spojením, ale načíta ich spoločne. HTTP/2 znamená malú revolúciu v používaní webov.
PageSpeed Insights
Certifikát | Výkon | FCP | LCP | Speed Index |
---|---|---|---|---|
ECC | 94 (desktop) | 0.7s | 1.1s | 0.7s |
ECC | 94 (mobil) | 1.1s | 6s | 1.1s |
RSA | 93 (desktop) | 0.4s | 1.1s | 0.4s |
RSA | 94 (mobil) | 1.0s | 5.4s | 1.0s |
GTM – server Frankfurt Germany
Nastavenia: Apple iPhone 6/6S/7/8/SE (2nd/3rd Gen) LTE (15/10 Mbps. 100ms)
Certifikát | Výkon | FCP | LCP | Speed Index | SSL (waterfall) |
---|---|---|---|---|---|
ECC | A – 96 % | 860ms | 1.2s | 1.1s | 123ms |
RSA | A – 96 % | 997ms | 1.2s | 1.1s | 126ms |
Nastavenia: Apple iPhone 6/6S/7/8/SE (2nd/3rd Gen) 3G (1.6 Mbps/768 Kbps 200ms)
Certifikát | Výkon | FCP | LCP | Speed Index | SSL (waterfall) |
---|---|---|---|---|---|
ECC | B – 76 % | 1.5s | 2.7s | 2.3s | 241ms |
RSA | B – 76 % | 1.5s | 2.7s | 2.3s | 245ms |
Nastavenia: Desktop Chrome Unthrottled Connection
Certifikát | Výkon | FCP | LCP | Speed Index | SSL (waterfall) |
---|---|---|---|---|---|
ECC | A – 99 % perf | 376ms | 471ms | 452ms | 24ms |
RSA | A – 97 % | 674ms | 985ms | 756ms | 22ms |
Výsledky protokolu HTTP/2 opäť svedčia o rýchlosti, ale tu sa už začína prejavovať prínos ECC certifikátu na svižnosti načítania. V poslednom prípade neobmedzenej rýchlosti siete bol čas načítania webov polovičný, čo možno prisudzovať kombinácii HTTP/2 protokolu a ECC certifikátu.
Protokol HTTP/3
Tretia generácia HTTP protokolu je stále veľmi mladá a presadzuje sa pomaly. Implementácie na hlavné webové servery prebiehajú zhruba tri roky: Apache túto verziu podporuje od verzie 2.4.51 a Microsoft vo Windows Server 2022 a IIS 10.0. HTTP/3 neprináša oproti predchodcovi takú revolúciu, ako HTTP/2 vo svojej dobe, ale je ešte rýchlejší a bezpečnejší ako HTTP/2.
Oba protokoly sú veľmi podobné, ale medzi hlavné rozdiely patrí fakt, že HTTP/3 nepoužíva TCP protokol. Využíva nový QUIC (Quick UDP Internet Connections), ktorý je založený na UDP. Z pohľadu šifrovania HTTP/3 integruje TLS 1.3 priamo do protokolu a vie šifrované spojenie so serverom nadviazať ešte rýchlejšie. Pri HTTP/2 nebolo šifrovanie spojenia striktne povinné, ale všetky implementácie protokolu v prehliadačoch šifrovanie striktne používali.
PageSpeed Insights
Certifikát | Výkon | FCP | LCP | Speed Index |
---|---|---|---|---|
ECC | 93 (desktop) | 0.6s | 1.1s | 0.6s |
ECC | 89 (mobil) | 1.5s | 3.6s | 1.6s |
RSA | 98 (desktop) | 0.7s | 1s | 0.7s |
RSA | 77 (mobil) | 1.1s | 5.9s | 1.1s |
GTM – server Frankfurt Germany
Nastavenia: Apple iPhone 6/6S/7/8/SE (2nd/3rd Gen) LTE (15/10 Mbps. 100ms)
Certifikát | Výkon | FCP | LCP | Speed Index | SSL (waterfall) |
---|---|---|---|---|---|
ECC | A – 92 % | 818ms | 1.7s | 1.3s | 122ms |
RSA | A – 94 % | 1s | 1.3s | 1.3s | 134ms |
Nastavenia: Apple iPhone 6/6S/7/8/SE (2nd/3rd Gen) 3G (1.6 Mbps/768 Kbps 200ms)
Certifikát | Výkon | FCP | LCP | Speed Index | SSL (waterfall) |
---|---|---|---|---|---|
ECC | C – 66 % | 1.4s | 5.4s | 2.9s | 239ms |
RSA | C – 65 % | 1.4s | 5.7s | 3.2s | 246ms |
Nastavenia: Desktop Chrome Unthrottled Connection
Certifikát | Výkon | FCP | LCP | Speed Index | SSL (waterfall) |
---|---|---|---|---|---|
ECC | A – 99 % | 339ms | 532ms | 431ms | 21ms |
RSA | A – 99 % | 394ms | 551ms | 487ms | 22ms |
Pri prvom meraní cez PageSpeed Insights sú výsledky nejasné, avšak užívateľ by videl celý web vykreslený skôr (menšia hodnota LCP). Rozdielnosť výsledkov môže byť daná aj metodikou merania, pretože Google neumožňuje zvoliť napevno parametre testu a tie občas kolíšu. Ďalšie výsledky sú prakticky rovnaké.
Závery testu
Čo z celého testu vyplýva? Stále platí, že najdôležitejšia je rýchlosť siete - to nie je nič prekvapujúce. Platí to pre server aj návštevníka. Pri bežnej práci doma či v kancelárii nemáme obvykle s rýchlosťou internetu problém a stránky sa načítajú bleskovo. Treba však myslieť aj na situácie, v ktorých je rýchlosť webu obmedzená, čo sa stáva typicky pri surfovaní na smartfóne s využitím mobilnej siete. Pamätajte teda na optimalizáciu webových stránok pre mobilné zariadenia a podporte ich použitím protokolu HTTP/2. Pokiaľ chcete mať rýchly web, umiestnite ho na dobrý hosting s podporou moderného HTTP/2, akým je Slovakia.com, alebo využite vlastný server od ZonerCloud.
Výsledky testu ukazujú, že z pohľadu rýchlosti webu na algoritme kľúča certifikátu nezáleží, ale ECC kľúče sú kratšie a ušetria serveru námahu pri šifrovaní. RSA je dnes už na konci života, pretože sa rýchlo blížia kvantovo-odolné algoritmy (PQC). Som presvedčený o tom, že v nasledujúcich niekoľkých rokoch začne RSA na serveroch ustupovať ustupovať moderným algoritmom. Všeobecne neexistuje dôvod, prečo nepoužívať ECC certifikáty namiesto starého RSA. Ak chcete mať paranoidnú úroveň kompatibility, môžete použiť duálnu konfiguráciu webového servera. Ten použije preferovaný certifikát ako hlavný. Ak by si s ním prehliadač návštevníka nerozumel, má k dispozícii certifikát s kompatibilným algoritmom.
Rýchlosť webu s RSA alebo ECC certifikátom sa prakticky nelíši. Web s ECC certifikátom sa načítal väčšinou rýchlejšie ako web s RSA certifikátom. To však nie je nutné preceňovať - rozdiel v rýchlosti načítania webu s použitím RSA alebo ECC certifikátu je minimálny (jednotky percent), často menej ako chyba merania. Prínos ECC certifikátu je poznať najmä v prípade, že máte pomalšie dátové pripojenie a využívate protokol HTTP/2.
Protokol HTTP/2 a novší sú dôležité pre užívateľov s pomalšou odozvou a sieťou, teda typicky pre smartfóny využívajúce 3G/4G/LTE sieť. Je to vďaka spomínanému agregovaniu načítanie viacerých prvkov do jedného; pri HTTP/1.1 sa načítajú všetky prvky zvlášť a vďaka pomalšej sieti to o to viac trvá. Ak stránku načítate na počítači s dnes bežným internetovým pripojením, pravdepodobne rozdiel medzi protokolmi nespoznáte (ak stránka nemá napríklad veľké množstvo obrázkov).
Z pohľadu bezpečnosti jednoznačne odporúčam novšie HTTP protokoly, pretože šifrovanie je priamo integrované do HTTP/2 a HTTP/3 protokolu, čo je skvelá správa. Bez HTTPS protokoly fungovať nebudú, spojenie musí byť vždy šifrované.