Mi az a kriptográfia, és mire használjuk?
A kriptográfia matematikai módszerekkel védi az adatok bizalmasságát, sértetlenségét és hitelességét. Ismerd meg a titkosítás, hash, digitális aláírás és kulcskezelés közti különbséget.
Röviden
A kriptográfia olyan matematikai és informatikai módszerek összessége, amelyekkel adatot titkosíthatunk, módosítást észlelhetünk, személyazonosságot vagy eredetet igazolhatunk, és biztonságos kommunikációt építhetünk nem megbízható hálózaton is.
Mit véd valójában a kriptográfia?
A kriptográfia nem egyetlen technológia, hanem több különböző célra használt eszközcsalád. A bizalmasság azt jelenti, hogy az adat tartalmát csak az arra jogosult fél tudja elolvasni. A sértetlenség azt jelzi, ha az adat útközben megváltozott. A hitelesség pedig azt segít bizonyítani, hogy valóban attól a féltől származik, akitől várjuk.
Egy HTTPS-kapcsolatban ezek egyszerre jelennek meg: a böngésző ellenőrzi a szerver tanúsítványát, kulcsot egyeztet, majd titkosított és integritásvédett csatornán kommunikál. Emiatt a „titkosítás” csak a teljes kép egyik része.
- Bizalmasság: illetéktelen ne olvassa az adatot.
- Sértetlenség: észrevehető legyen a módosítás.
- Hitelesség: ellenőrizhető legyen a fél vagy az adat eredete.
- Letagadhatatlanság: bizonyos helyzetekben bizonyítható legyen egy aláírás eredete.
A kriptográfia négy alapvető célja
01
Bizalmasság
Ki olvashatja?
02
Sértetlenség
Változott-e?
03
Hitelesség
Kitől jött?
04
Aláírás
Bizonyítható-e?
A négy fő építőkocka
A hash függvény egy tetszőleges hosszúságú bemenetből rögzített hosszúságú lenyomatot készít. A szimmetrikus titkosítás ugyanazt a titkos kulcsot használja a titkosításhoz és visszafejtéshez. Az aszimmetrikus kriptográfia kulcspárt használ: publikus és privát kulcsot. A digitális aláírás a privát kulccsal létrehozott, publikus kulccsal ellenőrizhető bizonyíték.
Ezeket nem érdemes összekeverni. A Base64 például egy kódolás, nem kriptográfiai védelem; a SHA-256 hash pedig nem visszafejthető titkosítás.
A legfontosabb első lépés: mindig azt kérdezd, milyen biztonsági tulajdonságot akarsz elérni. Más eszköz kell titkosításhoz, jelszótároláshoz és aláíráshoz.
Hol találkozol vele a mindennapi weben?
HTTPS, jelszótárolás, bejelentkezési tokenek aláírása, szoftverfrissítések ellenőrzése, end-to-end üzenetküldés és digitális tanúsítványok mind kriptográfiára épülnek. A legtöbb felhasználó úgy használ több kriptográfiai protokollt naponta, hogy ebből szinte semmit nem lát.
Webfejlesztőként ezért nem az a cél, hogy saját titkosítót tervezz, hanem hogy megértsd a primitívek szerepét, biztonságos könyvtárakat használj, és ne keverd össze a különböző fogalmakat.
Mit ne csinálj saját rendszerben?
A saját kriptográfiai algoritmus tervezése szinte mindig rossz ötlet. Egy algoritmus lehet matematikailag ötletes, mégis sérülékeny a kulcskezelés, nonce-újrahasználat, véletlenszám-generálás, implementációs részletek vagy side-channel támadások miatt.
Használj széles körben vizsgált szabványokat és karbantartott könyvtárakat. Jelszónál Argon2id, scrypt vagy bcrypt jellegű jelszóhash függvény kell, általános adat titkosításánál pedig hitelesített titkosítási mód, például AES-GCM vagy ChaCha20-Poly1305.
Gyakori kérdések
A kriptográfia ugyanaz, mint a titkosítás?
Nem. A titkosítás a kriptográfia egyik területe. A kriptográfia hash függvényeket, digitális aláírást, kulcscserét, hitelesítést és más primitíveket is magában foglal.
A kriptográfia feltörhetetlen?
Nincs abszolút garancia. A biztonság algoritmustól, kulcshossztól, protokolltól, implementációtól és kulcskezeléstől is függ. A modern rendszerek célja, hogy a támadás ésszerű erőforrással gyakorlatilag kivitelezhetetlen legyen.
Források és szabványok
Biztonsági témánál az elsődleges szabvány és a karbantartott szakmai útmutató fontosabb, mint egy véletlen implementációs példa. Az alábbi forrásokból érdemes továbbmenni.
Kapcsolódó ByBence