Mennyire számít szakszerűtlennek ha hash használata nélkül tárolok jelszót adatbázisban?
"Ha meg annyira le akartok védeni valamit, akkor én tuti nem md5-öznék meg hash-elgetnék, hanem kitalálnék egy "saját" algoritmust, hogy milyen módon titkosítom a szöveget."
Tipikus amatőr hiba, majdnem rosszabb, mint a cleartext.
Soha nem találunk ki saját titkosítást!
Te tényleg hatalmas amatőr gyányoló vagy.
Durva, hogy tényleg ehhez a 0 tudáshoz van ekkora arcod.
"Pl. Caesar és legyen 3x eltolású a magyar ÁBC-n, ezután AND-eld be karakterenként 0xDE-vel, és még cseréld fel a páros és a páratlan karaktereket, és még ragozhatnám... (pl. legyen még egy kulcsszó is, ami X karakter hosszú és annak karaktereivel OR-oljuk a titkosítandó szöveget) :-) ...aztán a visszafejtéshez ennek az ellentetjét..."
Ez még csak nem is hash... Még rosszabb ötlet, mint amit eleve gondoltam. Tragikus.
"...némelyik fontosabbnak hitt programomban eljátszadoztam már hasonlókkal, de hogy őszinte legyek, le se szarták, de nekem plussz feladat volt, hálistennek szeretem amit csinálok, szóval ez nem panaszkodás... :-) "
Fú, neked ezért fizetnek is?
"Már ne haragudj meg, de ha az adatbázishoz hozzáférnek, miért tudnák meg az algoritmust, hiszen azt nem ott tároljuk..."
Mert ha az adatbázishoz hozzáférnek, akkor akár kódhoz is hozzáférhetnek.
"Vagy attól félsz hogy a weboldalad teljes tartalmát elérik így az algoritmusod is meglesz? Milyen weboldalt üzemeltetsz te, hogy arra valaki is felfigyelne??? :-)"
Ez nem így megy, ha adatokat tárolsz mindig ügyelni kell a biztonságra. Ezek alapelvek, amit aki nem követ az több kárt okoz, mint hasznot.
"Mellesleg a forráskódodat is értelmezhetetlenül kuszává teheted, máramit feltöltesz a weboldalra, pl nem kell azt a nevet adni az algoritmusnak, hogy "PasswordDecoder"... :-) ...hanem legyen "c"... ...és abból legyen még 25 másik (c2, c3, stb. és az egyik hívja meg a másikat), ami látszólag csinál valamit... ...az isten nem fogja keresgetni a helyeset... :-)"
Ez csak lassítja a támadást, de semmilyen körülmények között nem állítja meg.
Sokan assemblyt is visszafejtenek, ott meg azért nem csak az a nehezítés, hogy át kell nevezni néhány függvényt meg változót...
Tulajdonképpen miért is irkálsz te ide amúgy?
Nem nagyon értem, hogyan nem hallhattál ilyenről.
Rengeteg helyen használják. VPN-nél, remote sessionöknél, ügyféladatokat tároló alkalmazásoknál.
Növeli a biztonságot, ha új jelszót kell kitalálnod és nem kettőt váltogatsz.
Azért szépen lassan minden itteni "nagyszájú" névről kiderül, hogy nem sok köze van a szakmához.
Igaz Mondó:
Őszintén remélem, hogy te soha az életben nem fogsz nagyobb látogatottságú rendszereket programozni! Plain textben tárolni a jelszót hatalmas biztonsági hiba. Aztán jössz itt azzal, hogy te majd írsz egy saját titkosító eljárást... mégis miből gondolod, hogy jobban értesz ehhez, mint azok a matematikusok, akik a mai algoritmusokat kidolgozták? Minden épkézláb, titkosítással foglalkozó oldalon leírják, hogy NE, ismétlem NE akarj saját eljárást írni, mert tuti, hogy - kellő tudás híjján - sérülékeny algoritmus lesz a vége.
Innentől sajnos kénytelen vagyok téged kontárnak tekinteni.
WoW, micsoda nagy válaszok születtek, erre igazán nem számítottam... ...mindig elfelejtem, hogy magyar emberekkel beszélek, akik mindenkinél mindent jobban tudnak... :-)
Én veletek ellentétben nem süllyedek arra a szintre, hogy bizonygassam a hozzáértésemet, csak finoman megjegyezném, hogy:
1.: én nem sértegettem senkit!
2.: ha egy gondolkozó ember (ami egyre ritkább) összehasonlítja a ti hozzászólásotokat az enyémekkel, rájöhet, hogy veletek ellentétben én legalább mondtam is valamit, nem csak a szart pakolgatom... :-)
De nézzük részletesebben...
#21: "Tipikus amatőr hiba, majdnem rosszabb, mint a cleartext."
Kérnék valami jól megalapozott okfejtést, mert így ez csak azt bizonyítja, hogy a hiba te vagy! :-)
#21: "Soha nem találunk ki saját titkosítást!"
Hááát tudod vannak kreatív elmék, nem mind clear-head... :-)
#21: "Te tényleg hatalmas amatőr gyányoló vagy."
(elsőbb tanulj meg írni) ...és akkor írjunk egy kicsit rólad, meséld már el mindenkinek hogy honnan jöttél, mivel foglalkozol, ha lehet akkor a címed is írd már le... :-)
#21: "Durva, hogy tényleg ehhez a 0 tudáshoz van ekkora arcod."
Hmmm, neked miért is van ekkora arcod??? :-)
#22: "Ez még csak nem is hash... még rosszabb ötlet, mint amit eleve gondoltam. Tragikus."
Mire gondoltál eleve? :-) ...szeretek új dolgokat tanulni!
#22: "Fú, neked ezért fizetnek is?"
Hááát ja.
#22: "Ezek alapelvek, amit aki nem követ az több kárt okoz, mint hasznot."
A politikusok is hoznak törvényeket, amelyeket csak azok nem tartanak be, a mentelmi jogukra hivatkozva.
#22: "Tulajdonképpen miért is irkálsz te ide amúgy?"
Pont ezen gondolkoztam, miközben olvastam a "teljesen jóindulatú", de semmitmondó hozzászólásaidat... :-)
#25: "Őszintén remélem... ...blablabla..."
Nos hogy őszinte legyek én is... ...én a kérdésre próbáltam válaszolni, de már megszoktam, hogy mindig van pár szájhős-okostojás, akik ismétlem: SEMMIT SEM MONDANAK, CSAK MIVEL NEM ÉRTENEK SEMMIHEZ, ÍGY BELESZÓLNAK MINDENBE... ...jó politikus lenne belőletek! :-)
Kívánok nektek sok szépet, és őrízzétek meg magatokban ezt a magávalragadó stílusotokat... :-)
Tetszik, hogy csak kiragadtál szövegrészleteket a neked intézett válaszokból, és az eredeti kontextusuk nélkül reagáltál rájuk, úgy én is könnyen nyerek vitát, ha én döntöm el, mit mondott a másik :D
Amúgy a hozzáértésed már csak azért is megkérdőjelezhető, mert kétirányú kódolást akarsz alkalmazni jelszavak lementésére. A jelszavakat nincs miért dekódolni, egy invertálható algoritmussal meg csak a biztonsági kockázatot növeled. A hashelésnek vannak jól bevált metodikái, amik kicsit hatékonyabbak, mint pár eltolás, meg csere. Ezt egy hozzáértő elég gyorsan visszafejti, és akkor bármelyik jelszót azonnal visszakapja. Még a legbutább hash függvény is hatékonyabb abból a szempontból, hogy az algoritmus nem megfordítható. Fejts vissza egy jelszót, és uralkodsz valakin. Fejtsd vissza az algoritmust, és királlyá válsz. Ha csak tized olyan okos vagy, mint amilyennek állítod magad, ezzel nem szállsz szembe.
Igaz Mondó:
"...és ezt nem fogják 1-2 óra alatt feltörni! :-) (mert nem egy ismert md5 vagy SH, vagy bármi amiről van egy kokrét leírás)"
Nem, de feltörik. Előbb-utóbb rájönnek az algoritmusra, mert, mint tudjuk, a hackerek egyik tulajdonsága, hogy egy lépéssel előbbre vannak. Tegyük fel, hogy mondjuk 50 óra alatt. Ezután viszont már sokkal könnyebben tudják törögetni a jelszavakat, mert az algoritmusod nem hashelés, hanem titkosítás. Ezzel szemben a bycrypt elég nehezen törhető ahhoz, hogy hosszútávon sokkal kifizetődőbb legyen a használata. Az alábbi cikkből kiindulva (kb. két éves, és feltételezem, hogy ahogy a számítástechnika ereje nőtt azóta, úgy a bcrypt iterációk száma is megnőtt, tehár az arány kb. most is ugyanaz, mint akkor; az első választ vettem a számításaim alapjául):
mindössze 100 jelszót lehet egy másodperc alatt feltörni, ha bcrypt-el vannak hashelve.
Szemben a te algoritmusoddal titkosított jelszavakat, ha egyszer megvan az algoritmus, nyugisan állíthatjuk, hogy másodpercenként százmilliós rátával törik (ismét a fenti cikk már megjelölt válasza szerint az md5 százmilliószor gyengébb, mint a bcrypt, szóval kényelmes a becslésem).
Kis matek következik, amiben összehasonlítjuk Igaz Mondó algoritmusát a bcrypttel. Tegyük fel, hogy két cég gyárt egy-egy Facebook nagyságú oldalt (vagyis kb. százmillió-százmilliárd felhasználó, a lényeg, hogy rengeteg), és egy-egy hacker mindkettőt megpróbálja feltörni. MEgszerzik a jelszavakat, egyik esetben hashelve, másik esetben titkosítva. Az első észreveszi, hogy az első oldal bcrypttel van hashelve, és elkezdi törni. A második nem érti, hogy mi a fene ez a hashelés, de elkezd rajta dolgozni, még meg is örül, mikor rájön, titkosítás. Az eredmények a következők:
51 óra menetidő alatt:
bycrypt: Dolgozott 51 órát, feltört 51*3600*100 = 18 360 000(1,8*10^6) darab jelszót. Ez (őszintén) elég sok.
Igaz Mondó algoritmusa (a továbbiakban: IMA): Feltörték 50 óra alatt, után dolgozott egy órát, így feltört 1*3600*100000000 = 3,6*10^11 jelszót (lehet 10^10, mert elnéztem egy nagyságrendet).
Látható, hogy IMA sokkal gyengébben muzsikált, mint a bcrypt, de a nagy gond nem is ez. Tegyük fel, hogy a weboldalkészítők nem is vették észre a fenti elméleti támadást, és gyártanak még egy-egy oldalt, ugyanezen biztonsági eljárásokkal.
Hacker 1 megint észreveszi, hogy az oldal bcrypt-el van hashelve, és nekiesik. Hacker 2 kipróbálja, hogy véletlenül nem IMA-val van-e titiosítva, és örömmel konstatálja, hogy de.
1 óra múlva:
bcrypt: Dolgozott 1 órát, feltört 1*3600*100 = 3,6*10^5 jelszót. Nem kevés.
IMA: Dolgozott 1 órát (nem kellett töréssel időt vesztegetni), feltört 1*3600*100000000 = 3,6*10^11 jelszót.
Ezúttal már nagy a gond, még nagyobb, mint az előbb, mert az IMA-val titkosított oldal hat teljes nagyságrenddel több adatot szolgáltatott ki mindössze egy óra alatt. Arról nem is beszélve, hogy valószínűleg nincs is ennyi felhasználója az oldalnak, ti. egy gyors guglizás szerint a Facebook is csak 10^9 nagyságrendű felhasználóval rendelkezik(ennél többet nem találtam).
Az elírásokért elnézést a fenti irományban, kissé fáradt vagyok. Remélem, azért egy átfogó és érthető képet adott arról, hogy miért rossz ötlet titkosító algoritmusokat használni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!