2020. március 17., kedd

Titkosítás és tanusítványok használata

A tanúsítványok arra szolgálnak, hogy létrejöhessen egy biztonságos, titkosított csatorna a kliens és a szerver között. Bizonyos információknak, mint a hitelkártya adatok, fiókbelépéshez szükséges adatok és egyéb kényes információk átvitelének titkosítás alatt kell történnie, hogy kizárjuk az adatok kiszivárgását. A tanúsítvánnyal adataink titkosításon esnek át, mielőtt azok Interneten keresztül átvitelre kerülnének. A titkosított adatot csak a célszerver képes lefordítani. Ez biztosítja, hogy a weboldalon megadott adatainkat nem tulajdoníthatják el.Az SSL tanúsítványt szerveroldalon kell elhelyezni. Az olyan weboldalak esetében, amelyek biztonságát egy SSL tanúsítvány garantálja, https:// előtaggal fog kezdődni az URL. A hitelesítés fajtájától függően a böngésző lakat ikonnal, illetve a szervezet nevével is jelezheti a biztonságos kapcsolat meglétét.

Az SSL tanúsítványok fajtái

Az SSL tanúsítványokat három hitelesítési csoportra oszthatjuk:

Domain hitelesítő tanúsítvány

A kérelmezőnek igazolnia kell a domain név fölötti rendelkezését. A kibocsátott tanúsítvány tartalmazza a domain nevet, amihez igényelték a tanúsítványt és a kérelmet a tanúsítvány kiállításáról.

Szervezet hitelesítő tanúsítvány

A tanúsítványt kérelmezőnek bizonyítania kell, hogy cége regisztrált és legálisan elszámolható üzletet bonyolít, hogy át tudjon esni a domain hitelesítésen. A kibocsátott tanúsítvány tartalmazza a domaint és a tanúsítványt igénylő szervezet nevét.

Kiterjesztett hitelesítő tanúsítvány

Ez tartalmazza az előbb leírt hitelesítési követelményeket és további feltételeket is. A kibocsátott tanúsítvány tartalmazza a domain és az igénylő szervezet nevét. Fontos megjegyezni, hogy csak a kiterjesztett hitelesítő tanúsítvánnyal rendelkező weboldalak URL sávjában jelenik meg zöld csíkban a szervezet neve.Szimmetrikus és aszimmetrikus kriptográfia

SSL és TLS protokollok esetén két kriptográfiát különböztetünk meg: a szimmetrikusat és az aszimmetrikusat.

A szimmetrikus kriptográfia (tömegkriptográfiának is nevezik) ugyanazt a kulcsot használja a titkosításhoz, mint a feloldáshoz. SSL/TLS esetén a szimmetrikus titkosítást általában alkalmazásadatok titkosítására használják.

Szimmetrikus titkosításokra néhány példa : AES, RC4, DES

Az aszimmetrikus kriptográfia (publikus kulcs kriptográfiának is nevezik) más kulcsot alkalmaz a titkosítás elkészítéséhez, mint amivel feloldja azt. A publikus kulcs egy CSR-ben tárolódik, ezáltal pedig az SSL tanúsítványban is. Titkosítás készítésére és aláírás hitelesítésre használják. A privát kulcs -ami többnyire a szerveren található-, is használható a „kézfogáskor” megállapított titkosítókészlettől függően, az elő-mesterkulcs dekódolásához, hogy a mesterkulcs létrehozható legyen, vagy a mesterkulcs létrehozásához szükséges paraméterek aláírásához. Leegyszerűsítve, az SSL/TLS protokollok kontextusában, az aszimmetrikus titkosítás biztosítja a szimmetrikus titkosítás lefutását mindkét fél számára (kliens/szerver).

Aszimmetrikus titkosítórendszerekből: RSA, DHE,

Kétkulcsos titkosítás

A https alapja a kétkulcsos titkosítás. A kulcspár két összetartozó, nagyon nagy (több száz jegyű) szám. A titkosítandó szöveget az egyik szám segítségével, egy nyilvános eljárással rejtjelezzük. Az így kapott üzenet ugyanazzal az eljárással, de a kulcspár másik tagjának segítségével fejthető csak vissza.

Ha a kulcspár egyik tagját titokban tartjuk, a másik kulcsot nyilvánosságra hozzuk, és valaki egy üzenetet a nyilvános kulcsunkkal rejtjelez, akkor azt csak mi fogjuk tudni elolvasni. A titkosítás mindig a nyilvános kulccsal történik.

A nyilvános kulccsal visszafejthetők lesznek azok az üzenetek, amelyeket mi rejtjeleztünk. A visszafejthetőség igazolja, hogy a titkos üzenetet mi írtuk (hiszen a titkosító kulcsot csak mi ismerjük), ezért ezt az eljárást digitális aláírásnak nevezzük. A digitális aláírás tehát mindig titkos kulccsal történő rejtjelezést jelent.
Tanúsítóhely

Ha egy webszerver nyilvános kulcsát le tudjuk kérdezni, és azzal titkosítunk, akkor az üzenetünket csak a webszerver fogja tudni elolvasni. Az üzenet titkosságával tehát már nincs baj, abban viszont még nem lehetünk biztosak, hogy a titkosított üzenetünk ahhoz jutott, akinek szántuk, hiszen titkosító kulcspárt bárki tud csinálni. Más szóval: a webszerver hitelessége még nincs biztosítva.

A hitelesség biztosításának egyik módja a tanúsítvány. Ez egy igazolás arról, hogy a webszerver nyilvános kulcsa hiteles. Az igazolás kiadója egy tanúsítóhely (Certificate Authority), az igazolás hitelességét az ő digitális aláírása biztosítja, valamint az a tény, hogy a tanúsítóhelyet a böngésző írói felvették a böngészőben a hiteles tanúsítóhelyek listájába.

A tanúsítóhelynek tehát hasonló szerepe van a digitális hitelesítésben, mint a közjegyzőnek a papír alapúban. Fontos különbség viszont, hogy a tanúsítóhelyet nem hatóság, hanem a böngésző „nevezi ki”.
Kulcs generálása

A webszerver tulajdonosa generál egy titkosításra alkalmas kulcspárt. Erre számos szoftver van, pl. a nyílt forráskódú openssl. A kulcs hossza a példában 2048 bit.

openssl genrsa -out név.key 2048             # titkos kulcs
openssl rsa -in név.key -pubout >név.pub     # publikus kulcs

Egy másik nyílt forrású eszköz a certtool. A publikus kulcs a fentihez hasonlóan állítható elő.

certtool -p --bits=2048 --outfile név.key

Tanúsítványkérelem előállítása

A tanúsítványkérelem a szerver adatainak (URL, IP-cím, szervezet neve, stb.) a szerver titkos kulcsával aláírt alakja. A kérelem része a nyilvános kulcs, de nem része a titkos kulcs. A titkos kulcsot egyedül a webszerver tulajdonosa tudja, még a tanúsítóhely sem.

A tanúsítványkérelem előállítása pl. az előbb már említett certtool-lal (de openssl-lel is lehet):

certtool -q --load-privkey név.key --outfile név.csr

A certool felteszi a kérelemhez szükséges kérdéseket, majd megfelelő formában eltárolja kérelmet. A kérelem aláírásához szüksége van a szerver titkos kulcsára.

A kérelem nemcsak egy szerverre, hanem egy egész szervezetre, vagy akár egy egész domainre vonatkozhat.
Tanúsítvány

A tanúsítvány az aláírt tanúsítványkérelem. A kérelem aláírható a szerver (titkos) kulcsával: ez az önmagával aláírt (self-signed) tanúsítvány. Ha ilyen tanúsítványú webszerverre tévedünk, a böngésző figyelmeztet, hogy a tanúsítvány nem megbízható. Csak akkor szabad elfogadni, ha a szerver nyilvános kulcsához megbízható forrásból jutottunk hozzá, nem az internetről.

A megbízható tanúsítványhoz a kérelmet a böngészők által elfogadott tanúsítóhelyek egyikével kell aláíratni. Az így kapható tanúsítványnak biztonsági szempontból két fokozata van:

    Egyszerűsített. A tanúsítóhely igazolja, hogy a tanúsítvány tulajdonosa valóban birtokolja a szervert, de arról nem mond semmit, hogy az-e, akinek állítja magát a tanúsítványban. Előnye, hogy ilyen, a böngészők által is elfogadott tanúsítványt papír nélkül, online is lehet szerezni, akár ingyen is, bár úgy csak rövid lejáratra.
    Kiterjesztett. A regisztráló a kérelem benyújtásakor személyesen, papír alapú dokumentumokkal igazolja, hogy jogosan képviseli a kérelemben megnevezett tulajdonost. A legtöbb bank ilyen tanúsítványt használ, akárcsak a Wikipédia szerverei.

Az aláírás előtt a tanúsítóhely felveszi az adatok közé az érvényesség időintervallumát.

A böngésző ellenőrzi a tanúsítvány aláíróját a saját tanúsítóhely-adatbázisa alapján. Felkeresi a tanúsítóhelyet, és ellenőrzi azt is, hogy időközben visszavonták-e a tanúsítványt. Az ellenőrzés eredménye az URL előtt látható zöld vagy sárga háromszöggel megjelölt lakat formájában. A lakatra kattintva meg lehet nézni a tanúsítványt.

Biztonsági beállítások https protokollban

A https protokoll ugyan jóval biztonságosabb a http-nél, de maradtak benne biztonsági problémák, melyek újabb védekezést igényelnek.

Tanúsítvány visszavonása

A kompromittálódott tanúsítványt vissza kell vonni. A kapcsolatfelvételkor ellenőrizni kell a kapott nyilvános kulcs, a kibocsátó tanúsítóhely és a teljes tanúsítványlánc kulcsainak érvényességét. (Volt már rá példa, hogy tanúsítóhely kompromittálódott.[1][2]) A tanúsítvány érvényességének ellenőrzésére szolgál a Online Certificate Status Protocol(en).
A tanúsítóhely hitelesítése

A tanúsítványnak biztosítania kellene, hogy a böngésző a szándékaink szerinti szerverhez kapcsolódik. Van azonban egy gyenge pont: a tanúsítóhelyek nem kommunikálnak egymással, így elképzelhető, hogy egy másik tanúsítóhelytől egy kalóz tud szerezni egy (majdnem) azonos nevű szervezethez tartozó tanúsítványt egy másik szerverhez. A felhasználók nem fogják észrevenni a tanúsítóhely változását, ha a kalóznak sikerül magára irányítania a kapcsolatot: a böngésző nem figyelmeztet, hiszen ez a tanúsítvány is megbízható.

Ennek elkerülésére a névszerverek rekordtípusai közé felvettek egy új típust CAA(en) betűnévvel, mely megadja az ahhoz a bejegyzéshez tartozó tanúsítóhelyet.
HPKP

A veszély hasonlít a CAA-nál leírtakra, de annál nagyobb. Volt már rá példa, hogy tanúsítóhelyet törtek fel, és adtak ki a nevében hamisított tanúsítványokat.[1][2]

Védekezni úgy lehet, hogy a webszerver elküldi az aktuális tanúsítványának és a tanúsítványkérelmének az ujjlenyomatát (nem hamisítható kivonatát) a kliensnek, amely azt – a HSTS-hez hasonlóan – megjegyzi, és a továbbiakban csak azt a tanúsítványt fogadja el az oldaltól. Ha a tanúsítvány kompromittálódik, a kérelemmel új tanúsítványt szerez, melyet a kliens a korábbi kérelem-ujjlenyomat alapján fogad el.

Az ujjlenyomat használata azért fontos, hogy a tanúsítványkérelmet ne kelljen a szerveren tartani. A kérelmet új, nem az interneten tartott kulccsal célszerű aláírni (arra az esetre, ha a titkos kulcsot a szerverről megszereznék a támadók).
HSTS
A HSTS(en) azt jelenti, hogy a webszerver a https-válaszok fejlécébe olyan információt tesz, ami jelzi a böngészőnek, hogy ehhez a laphoz a fejlécben megadott ideig mindig https-sel kell fordulni. Ez akkor hasznos, ha a webszerver egyes URL-jei még mindig http protokollt tartalmaznak. 

Nincsenek megjegyzések:

Megjegyzés küldése