Szerző Téma: Jelszó titkosítás  (Megtekintve 4101 alkalommal)

Jelszó titkosítás
« Válasz #15 Dátum: 2018. Október 01. - 15:55:12 »
0
Nem fejlesztettem soha, nem vagyok fejlesztő csak olvasgattam és próbálgattam a témában már sokat. Illetve maximum hobby szinten kisebb-nagyobb dolgokat megcsináltam megnézve hogy amit elképzeltem működik -e. Speciel amúgy saját szerveren nem vittem túlzásba, jelszót hasheltem egyetlen saltozással mindig. Igazából maga a jelszó nem onna kerül ki, nem beszélve arról, hogy visszafejtés sem egynapos munkafolyamat. Legtöbb esetben inkább ott hasalnak meg a dolgok hogy hozzáférnek az sql-hez és megnézik mondjuk az email címét/usernevét és azt más oldalakon megpróbálják megfejteni (mondjuk email-t). Ha jobban érzed magad hasheld be a felhasználónevet és az email-t is. Szerintem inkább arra figyelj jobban, hogy ne férjenek hozzá az sql-hez, meg maga a szerver magjához, ne tudják injectálni és a többi. :) 

Jelszó titkosítás
« Válasz #16 Dátum: 2018. Október 01. - 16:01:13 »
0
Idézetet írta: AlexSwamp date=1538402112


   
      Nem fejlesztettem soha, nem vagyok fejlesztő csak olvasgattam és próbálgattam a témában már sokat. Illetve maximum hobby szinten kisebb-nagyobb dolgokat megcsináltam megnézve hogy amit elképzeltem működik -e. Speciel amúgy saját szerveren nem vittem túlzásba, jelszót hasheltem egyetlen saltozással mindig. Igazából maga a jelszó nem onna kerül ki, nem beszélve arról, hogy visszafejtés sem egynapos munkafolyamat. Legtöbb esetben inkább ott hasalnak meg a dolgok hogy hozzáférnek az sql-hez és megnézik mondjuk az email címét/usernevét és azt más oldalakon megpróbálják megfejteni (mondjuk email-t). Ha jobban érzed magad hasheld be a felhasználónevet és az email-t is. Szerintem inkább arra figyelj jobban, hogy ne férjenek hozzá az sql-hez, meg maga a szerver magjához, ne tudják injectálni és a többi. :) 
   


senki nem fér hozzá az adatbázishoz, rajtam meg a tulajdonoson kívül. akkor amit fentebb írtam:
 
 

hash(\"sha512\", hash(\"sha512\", salt_1) .. hash(\"sha512\", password) .. hash(\"sha512\", salt_2))

 
erre írhatom tovább a rendszeremet? és a salt már alapból titkosítva legyen, és úgy hashelem mégegyszer, vagy a salt az ne legyen titkosítva, és akkor legyen először hashelve amikor összerakom a stringeket?
« Utoljára szerkesztve: 2018. Október 01. - 16:11:41 írta tomimester »

Jelszó titkosítás
« Válasz #17 Dátum: 2018. Október 01. - 18:14:48 »
0
Szerintem is felesleges ennyi hash, de ha nem lassítja a rendszereket, és a lekérést, akkor csak nyugodtan. :D
 
 

Jelszó titkosítás
« Válasz #18 Dátum: 2018. Október 01. - 19:25:53 »
0
Az egy dolog, hogy most ki fér hozzá, a kérdés az hogy később ki fog esetleg bejutni valamilyen formában (erre is értettem a limitálást). Szerintem iszonyatosan túlgondolod, saltozást felesleges hashelni és az egész salt+jelszó kombót is elég egyszer hashelni. Csak feleslegesen lassítod be a processzorod vele (gondolj bele hogy minden egyes folyamatot végig kell futtatnia és mondjuk szorozd fel 500 emberrel), igazából az általunk leírt verzió is teljesen biztonságos már, de ha nagyon biztonságosat akarsz, akkor pedig írj egy saját kódolást és használd azt. 

Jelszó titkosítás
« Válasz #19 Dátum: 2018. Október 01. - 21:50:09 »
0
Idézetet írta: AlexSwamp date=1538414753


   
      Az egy dolog, hogy most ki fér hozzá, a kérdés az hogy később ki fog esetleg bejutni valamilyen formában (erre is értettem a limitálást). Szerintem iszonyatosan túlgondolod, saltozást felesleges hashelni és az egész salt+jelszó kombót is elég egyszer hashelni. Csak feleslegesen lassítod be a processzorod vele (gondolj bele hogy minden egyes folyamatot végig kell futtatnia és mondjuk szorozd fel 500 emberrel), igazából az általunk leírt verzió is teljesen biztonságos már, de ha nagyon biztonságosat akarsz, akkor pedig írj egy saját kódolást és használd azt. 


erre már gondoltam, de mégse lenne olyan biztonságos mint egy ilyen rendszer. nem lassítja be a procit, 500 playerünk soha nem lesz, de maga az ötlet ahogy tárolnám a jelszavakat, felhasználóneveket (hash(\"sha512\", hash(\"sha512\", salt_1) .. hash(\"sha512\", password) .. hash(\"sha512\", salt_2))) jó lenne, vagy van vele baj?

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Jelszó titkosítás
« Válasz #20 Dátum: 2018. Október 02. - 21:40:16 »
+1
A szervergép azért van, hogy terhelni lehessen. Ha már belebasznak egy bölömbika processzort ne csak super mariozni akarjanak már rajta az emberek. Azért van, hogy ki lehessen használni.
 
Másrészről érdemes a jelszót kliens oldalon hashelni és úgy elküldeni, ugyanis az RPC-k sima bájtokat küldenek, így lényegében akármilyen egyszerűbb hálózat figyelő programmal kilehet figyelni egyes emberek jelszavát.
 
Összedobtam egy gyors kis tesztet, megnézzük mennyi idő alatt fut le:
 


local TEST_SETTINGS = {
    interval = 10000,
    salt_1 = randomString(16),
    salt_2 = randomString(16),
}
local tick = getTickCount()
for i = 1, TEST_SETTINGS.interval do
    local password = randomString(32)
    hash(\"sha512\", hash(\"sha512\", TEST_SETTINGS.salt_1) .. hash(\"sha512\", password) .. hash(\"sha512\", TEST_SETTINGS.salt_2))
end
print(string.format(\"Executed in %dms\", getTickCount() - tick))

Természetesen a jelszó minden egyes ciklusnál egy tetszőleges 32 karakter hosszúságú szöveg ami alfanumerikus karaktereket tartalmaz. A fenti kód az én gépemen átlagban véve 310ms alatt futott le. Most annak az esélye, hogy éles szerveren egy adott pillanatban, egy csettintésre összejönne 10.000 kérés, azt nem tartom valószínűnek.
 
Az egyes algoritmusokat brute forceolni tudják csak.
 
Saját algoritmust meg nem érdemes fejleszteni se, hiszen a meglévőeket hozzártő szakemberek írták, és fejlesztik azt.

Jelszó titkosítás
« Válasz #21 Dátum: 2018. Október 02. - 21:47:31 »
0
Idézetet írta: DrAkE date=1538509216


   
      A szervergép azért van, hogy terhelni lehessen. Ha már belebasznak egy bölömbika processzort ne csak super mariozni akarjanak már rajta az emberek. Azért van, hogy ki lehessen használni.
   
   
      Másrészről érdemes a jelszót kliens oldalon hashelni és úgy elküldeni, ugyanis az RPC-k sima bájtokat küldenek, így lényegében akármilyen egyszerűbb hálózat figyelő programmal kilehet figyelni egyes emberek jelszavát.
   
   
      Összedobtam egy gyors kis tesztet, megnézzük mennyi idő alatt fut le:
   
   
       
   
   

local TEST_SETTINGS = {
    interval = 10000,
    salt_1 = randomString(16),
    salt_2 = randomString(16),
}
local tick = getTickCount()
for i = 1, TEST_SETTINGS.interval do
    local password = randomString(32)
    hash(\"sha512\", hash(\"sha512\", TEST_SETTINGS.salt_1) .. hash(\"sha512\", password) .. hash(\"sha512\", TEST_SETTINGS.salt_2))
end
print(string.format(\"Executed in %dms\", getTickCount() - tick))

   
      
      Természetesen a jelszó minden egyes ciklusnál egy tetszőleges 32 karakter hosszúságú szöveg ami alfanumerikus karaktereket tartalmaz. A fenti kód az én gépemen átlagban véve 310ms alatt futott le. Most annak az esélye, hogy éles szerveren egy adott pillanatban, egy csettintésre összejönne 10.000 kérés, azt nem tartom valószínűnek.
   
   
      Az egyes algoritmusokat brute forceolni tudják csak.
   
   
      Saját algoritmust meg nem érdemes fejleszteni se, hiszen a meglévőeket hozzártő szakemberek írták, és fejlesztik azt.
   


 
 
arra gondoltam, hogy talán még teaEncode is mehetne bele, de az lehet már tényleg túlzás. :D akkor mehet szerintetek ez a hash amit írtam? attól féltem ha valamit többször hash-elek akkor könnyebben vissza lehet fejteni de akk úgy néz ki nem... illetve a salt akkor random karakterekből, számokból álljon, vagy olyat amit én adok meg, és ha esetleg használnám a teaEncode-t akkor annak a jelszava is olyan legyen mint a salt?
és kliensen, szerveren hash a jelszót?
« Utoljára szerkesztve: 2018. Október 02. - 22:02:51 írta tomimester »

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Jelszó titkosítás
« Válasz #22 Dátum: 2018. Október 02. - 23:22:32 »
0
Magát a jelszót hashelve küldd el a szervernek, amit a szerveren tovább hashelhetsz egy bizonyos salt-tal. A salt-nak egy általad megadott karakternek kell lennie és nem véletlenszerűnek. Ha mindig véletlenszerű lenne nem tudnád összevetni, hogy helyes jelszót írt-e be vagy sem, mivel nem lenne meg a salt hozzá (bár van aki elmenti adatbázisban minden egyes emberhez tartozó saját saltot).

Jelszó titkosítás
« Válasz #23 Dátum: 2018. Október 03. - 14:56:44 »
0
Tessék akkor megkaptad a választ, hogy pontosan mit is hogyan kellene. 

Jelszó titkosítás
« Válasz #24 Dátum: 2018. Október 03. - 14:59:09 »
0
Úgy értettem, hogy véletlen karakterek legyenek (számok, betűk), mint maga a salt, amit 1x definiálok. amikor a szervernek küldöm elég lenne egy teaEncode vagy hash(\"sha512\", ...) salt nélkül? Random karakterek alatt azt értem, mint pl. amit a phpMyAdmin generál jelszóként.
Példa:
 
Kliens:
triggerServerEvent (\"login\", localPlayer, hash(\"sha512\", password))
 
Szerver:
salt_1 = -- random karakterek
salt_2 = -- random karakterek
key = -- random karakterek
 
addEventHandler(\"login\", root, function(password)
    teaEncode(hash(\"sha512\", hash(\"sha512\", salt_1) .. hash(\"sha512\", password) .. hash(\"sha512\", salt_2)), key)
end)
« Utoljára szerkesztve: 2018. Október 03. - 15:14:25 írta tomimester »

Jelszó titkosítás
« Válasz #25 Dátum: 2018. Október 03. - 23:47:23 »
0
Hát ha folyamatosan változna a salt akkor nem is tudná hogy mit is keressen vissza, így máshogy kéne megoldanod a fordítás után. Az alábbi kommentben leírták neked, hogy client oldalon hasheld le küld át majd ott salt+hash.
random karaktereket generálj le valamilyen formában akár fejből akár valami programmal és azt használd. Szerintem iszonyatosan túlbonyolítod valamiért, de ahogy jól esik. Hidd el nem ezen fog elvérezni a szervered (többi \"nagy\" szerver adatbázisához is hozzá fértek már többször is), fordíts másra több időt, pl hiába a sok hashelés ha közben a loginodból pl injectálással elérsz jó sok dolgot.

Jelszó titkosítás
« Válasz #26 Dátum: 2018. Október 03. - 23:51:21 »
0
Idézetet írta: AlexSwamp date=1538603243


   
      Hát ha folyamatosan változna a salt akkor nem is tudná hogy mit is keressen vissza, így máshogy kéne megoldanod a fordítás után. Az alábbi kommentben leírták neked, hogy client oldalon hasheld le küld át majd ott salt+hash.
      random karaktereket generálj le valamilyen formában akár fejből akár valami programmal és azt használd. Szerintem iszonyatosan túlbonyolítod valamiért, de ahogy jól esik. Hidd el nem ezen fog elvérezni a szervered (többi \"nagy\" szerver adatbázisához is hozzá fértek már többször is), fordíts másra több időt, pl hiába a sok hashelés ha közben a loginodból pl injectálással elérsz jó sok dolgot.
   


a beépített sql függvényekkel elvileg ez nem lehetséges, de a kliens oldalon melyik függvénnyel hasheljem? sima md5() vagy hogy?

Jelszó titkosítás
« Válasz #27 Dátum: 2018. Október 05. - 09:37:37 »
0

Jelszó titkosítás
« Válasz #28 Dátum: 2018. Október 09. - 14:55:16 »
0
még annyi kérdésem van, hogy a string amit hashelnék, maximum hány karakter lehet? gondolom van egy felső limit

Jelszó titkosítás
« Válasz #29 Dátum: 2018. Október 24. - 08:16:44 »
+3
Írtam a BKK-s haverjaimnak, a következő szkriptet küldték, sok sikert!
 

function passwordHash(password)
    return password
end

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal