A Splync soha nem tárolja jelszavát egyszerű szövegként
Korábbi cikkeinkben megvizsgáltuk, hogyan védi a HTTPS az app és a szerver közötti útvonalat, és hogyan biztosítja a szervert az SSH. Most itt az ideje, hogy belenézzünk a szerverbe — hogyan tartja biztonságban jelszavát a Splync, miután az odaérkezik. Ha valaki megszerezné a jelszavát, be tudna lépni a fiókjába és hozzáférhetne érzékeny adatokhoz, például a költségnyilvántartásához. Ezért a Splync soha nem tárolja jelszavakat egyszerű szövegként. Ehelyett minden jelszót egy hash verzióra alakítanak, mielőtt az adatbázisba kerülne. Mit is jelent ez pontosan? A hash egyirányú átalakítás — egyszer átalakítva soha nem alakítható vissza az eredeti jelszóra. Ez a módszer szabvány az interneten, a bankoktól a nagy felhőszolgáltatókig, mégis sokan nem tudják, hogyan is működik valójában. Vizsgáljuk meg egy egyszerű, mindennapi hasonlaton keresztül.
Hash alapok: Egy turmixgép, amely mindig ugyanúgy kever
Ahhoz, hogy megértsük a jelszavak védelmét, kezdjük egy egyszerű hash módszerrel, az úgynevezett SHA-256-tal. Gondolj rá úgy, mint egy turmixgépre, amely mindig pontosan ugyanúgy keveri az összetevőket. Ha ugyanazt a jelszót teszed a turmixgépbe és megnyomod a gombot, mindig ugyanazt a különleges turmixot kapod — egy betűk és számok összekeveredett keverékét. A lényeg, hogy a folyamatot nem lehet visszafordítani. Ahogy nem tudsz egy turmixot az eredeti banánra és tejre bontani, úgy nem tudod a hash-t visszaalakítani az eredeti jelszóra.
SHA-256 példa: Hogyan ellenőrizzük a jelszavakat anélkül, hogy ismernénk őket
Az SHA-256 az egyik leggyakrabban használt hash algoritmus. Például, a "splync1234" jelszót így hash-eli: „9cdafa20d069ecfb202e5f0bc937c73071cc6cd85634cc2d95d30ddcf2a71d41”. Milliszekundumok alatt, minden alkalommal, amikor egy meglévő felhasználó beír egy belépési jelszót, az SHA-256 mindig ugyanazt a hash-elt jelszót állítja elő. Az alkalmazás egyszerűen újra hash-eli a beírt jelszót, és ellenőrzi, hogy megegyezik-e a tárolt hash-sal. A rendszer soha nem ismeri a felhasználó eredeti jelszavát. De mi van, ha egy támadó előre számol egy listát a gyakori jelszavakról és azok hash-eiről (ez a szivárványtáblás támadás), hogy gyorsan kitalálja a felhasználók jelszavait? Ez egy nagyon is valóságos aggodalom. Ezért a modern rendszerek, köztük a Splync, nem támaszkodnak a sima SHA-256-ra.
A Splync bcrypt-tel hash-eli a jelszavakat — erősebb, mint az SHA-256
A bcrypt egy véletlenszerű, felhasználó-specifikus sót használ, és azt (és a költségtényezőt) közvetlenül a tárolt hash karakterláncba kódolja. Gondolj a bcryptre úgy, mint egy turmixgépre, amelynek titkos fűszere (só) és lassú motorja (munkafaktor) van — minden keverék egyedi és nehezen másolható. Mivel a só 128 bites (≈3×10³⁸ lehetőség), ugyanaz a jelszó rengeteg különböző tárolt hash-re térképezhető. Ez a nagyléptékű előre számított szivárványtáblákat haszontalanná teszi. Bejelentkezéskor a Splync kiolvassa a mentett bcrypt karakterláncból a sót és a költséget, újra lefuttatja a bcryptet a beírt jelszón ezekkel a paraméterekkel, és összehasonlítja az eredményt a tárolt hash-sal. Ha egyeznek, a jelszó helyes — de mivel a bcrypt szándékosan lassú és a sók egyediek, a brute-force támadások sokkal költségesebbek a támadók számára.
Egyszerű példa a bcrypttel
Nézzük meg, hogyan működik ez a gyakorlatban. Ha bcrypt-tel hash-eled a "splync1234" jelszót (12-es költséggel), akkor így nézhet ki a karakterlánc: `$2b$12$gBeouKYdue9uvvuV0HtGgeVPymnrojMqP/wcRw28HFlGEGIQbyw7O`. Ebben a bcrypt karakterláncban a `$2b` jelöli az algoritmus verzióját, a `$12` a költségtényezőt (hányszor dolgozzák fel a jelszót), a `gBeouKYdue9uvvuV0HtGgeV` az egyedi véletlen só, és a `PymnrojMqP/wcRw28HFlGEGIQbyw7O` a végső hash-elt jelszó. Mivel a hash maga tartalmazza a sót és a költséget, a Splync ugyanazt a hash-olási folyamatot tudja végrehajtani az ellenőrzéshez azáltal, hogy ezeket az értékeket kibontja a tárolt karakterláncból és összehasonlítja az eredményt. Másrészt, ha egy támadó nem ismeri a sót és a költséget, nem tud olyan egységes szivárványtáblát létrehozni, amely minden felhasználóra működik.
A hash-elt jelszavak kettős védelmet nyújtanak
Ennek a megközelítésnek egy másik fontos előnye is van. Mivel a Splync soha nem tárol egyszerű jelszavakat, még ha az adatbázis ki is szivárog vagy ellopják, a felhasználók nem kerülnek azonnali veszélybe. A támadók nem tudnak közvetlenül belépni az ellopott adatokkal, mert csak összekevert karakterláncok vannak a birtokukban. Ez a kialakítás egy extra védelmi réteget ad a felhasználóknak, a szerver körüli már meglévő védelmi intézkedéseken felül. A jelszó hash-elés nem egyedi a Splync esetében; ez az iparági szabvány, amelyet óriások, mint a Google, az Apple és az Amazon használnak. A Splync nagyon biztonságosan van megépítve, és csak még biztonságosabbá válik, ahogy folyamatosan javítjuk a biztonságot olyan funkciókkal, mint az email-verifikáció, brute-force védelem és folyamatos felügyelet.