Küsimus:
Kuidas ma saan luua parooli, kus on kiri "SALT ME!" millal räsitud?
Joel
2014-04-22 21:29:26 UTC
view on stackexchange narkive permalink

Kuidas luua parooli, mis md5-ga otse räsitud (ilma soolata) tagastab 8 tähemärki sisaldava stringi "SALT ME!" Lootus on, et naiivne arendaja, kes sirvib oma kasutajate andmebaasi, näeb "räsi", mõistab oma rakenduse ebakindlust ja muudab maailma lõpuks kõigile paremaks.

Md5 väljastab 128 bitti, mis on 16 baiti. Kui mul oleks 16-baidine sõnum, oleks originaalteksti parooli saamine võrdne eelpildiga, mis minu teada on praktiliselt võimatu. Kuid ma otsin oma räsist ainult 8 konkreetset baiti.

Kas sellise parooli hankimine on tavalises arvutis päevaste ajavahemike jooksul võimalik? Kui jah, siis kuidas ma saan sellise parooli arvutada?

Ma arvan kohe, et kui kasutate parooli räsimise algoritmina MD5, siis pole soola kasutamine (või mitte) teie suurim probleem.
-1, sest selle eesmärk ei ole mitte ainult absurdne, vaid isegi ei toimi. Ei kuulu ka sellele saidile: küsimus on sisuliselt konkreetsete räside arvutamise kohta ja sobib paremini StackOverflow või SuperUser.
või [CodeGolf] (http://codegolf.stackexchange.com/) ...
Peaaegu ükski administraator ei käi paroolide andmebaasis ja loeb need kõik läbi. Või oleks andmebaas pidanud olema ohustatud ja teie "Salt me" peaks eristuma muust ... Kõik allpool toodud näited tuginevad räside Base64-esitusele, samas kui enamik MD5-räsi on kujutatud kuueteistkümnendkohtadena
Punane heeringas kokku. [Soolamine ei salvesta teie tagakülge, kui te ei leevenda võrguühenduseta jõhkratest otsingutest.] (Http://web.archive.org/web/20130407190430/http://chargen.matasano.com/chargen/2007 /9/7/enough-the-rainbow-tables-what-you-need-to-know-about-s.html) Kasutage scrypt või bcrypt või midagi muud sarnast, no ifs ja buts.
Mis toimiks ilmselt paremini, on kasutada parooli "SALT & HASH-ME!" Hämmastav on see, mitu korda olen klõpsanud lingil * unustatud parool * ja saanud mulle parooli lihttekstina.
@MooingDuck CodeGolf ei anna tõenäoliselt kasulikku lahendust, kuna tehniliselt on see seotud ainult klahvivajutuste minimeerimisega. Kui tegeliku lahenduse leidmine võtab kauem kui eluiga, on see CodeGolfi vaatenurgast korras.
Mis siis, kui soolatud parool annab HashMele järele? Mida naiivne arendaja siis tegema hakkab?
@Rik. Code Golf SE on tegelikult mõistatuste programmeerimine üldiselt. (Vaadake nende populaarset märgistust "koodiga trollimine".)
Noh, mulle tundus idee meelelahutuslik. Inimesed teavad küll, et sellel pole nagunii mõtet ja räsialgoritmide õppimine ei kahjusta midagi, nii et naeratagem selle peale lihtsalt.
Kolm vastused:
Tom Leek
2014-04-22 21:59:35 UTC
view on stackexchange narkive permalink

MD5 väljund on binaarne: 128-bitine jada, mis on tavaliselt kodeeritud 16-baidiseks (tehniliselt 16 oktetti , kuid kasutagem baitide oktettide levinud kokkulepet).

Inimesed ei loe bitti ega baite. Nad loevad tähemärke . Seal on arvukalt koodilehti, mis näitavad, kuidas kodeerida märke baitidena, ja sarnaselt dekodeerida baidid märkideks. Peaaegu kõigi nende jaoks ( ASCII tõttu) on madala väärtusega baidid (0 kuni 31) "kontrollmärgid", seega pole neid tegelastena võimalik esindada. Nii et keegi ei loe MD5 väljundit otse. Kui keegi "loeb" räsiväärtusi, siis on need väärtused tõenäoliselt kodeeritud tähemärkidesse, kasutades selleks ühte vähestest levinud tavadest. Kaks levinumat tava on kuueteistkümnendkoht ja Base64.

Kuueteistkümnendkohaga on ainult numbrid ja tähed „a” kuni „f” (traditsiooniliselt räsi väärtuste väiketähed). Te ei saa "SALT ME!" kuueteistkümnendsüsteemis ...

Base64 puhul kasutab kodeerimine kõiki 26 ladestamata ladina tähte (nii väikseid kui ka väikesi), numbreid ning märke „+” ja „/”. Seega võiksite loota "SaltMe" või "SALTME". Nüüd on see teostatav, sest Base64 iga märk kodeerib 6 bitti, seega vastab kuuetäheline väljund ainult 36 bitile. Parooli otsimine, mis annab kas "SaltMe" või "SALTME", tehakse (keskmiselt) 235 proovide jooksul, st mõne minuti või tunni jooksul, kellest mõned saavad korralikult optimeeritud kood.

.

Ja see on tehtud: MD5-ga räsimisel kodeerib tulemus Base64:

  • infjfieq annab tulemuseks : SALTMEnBrODYbFY0c/tf+Q==
  • lakvqagi annab: SaltMe+neeRdUB6h99kOFQ==
Miski ei lõdvesta mind pärast pikka tööl veedetud päeva, näiteks klaasi veini võtmine ja mõne base64 kodeeritud räsiväärtuse lugemine.
Ma peaksin selle üles hääletama, isegi kui te ei leidnud kahte sisendit, mille esimese 6 tähemärgina saadakse `SALTME`; selle tegemine väärib rohkem kui +1, kuid paraku, see on kõik, mida ma võin anda. Fantastiline vastuse sõber!
Entsüüri jaoks, mis saab väärtusest, mille B64ed MD5 soolad algavad NoMD5, UsePbkdf2 või UseBCrypt?
"NoMD5" on ainult viis tähte; saame minna kuuele ja saada `NoMD5 +`, mis näeb parem välja. Ja tõepoolest, "pmcrsihh" annab tulemuseks "NoMD5 + pyhpe6Xxa3x93iGQ ==".
`UsePBKDF2` ja` UseBcrypt` on kumbki 9 tähte, keskmise maksumusega 2 ^ 54, mis ületab oluliselt seda, mida saan oma üksiku neljatuumalise serveriga teha. Nende suurepäraste GPU-massiividega, mis väidavad, et nad teevad 8 miljardit MD5 sekundis, saaks seda teha kuu jooksul (enam-vähem).
Kuidas need 2 parooli genereerisite?
Jõhkralt ... võtsin MD5 rakenduse [siit] (http://www.saphir2.com/sphlib/), siis käisin läbi palju 8-tähelisi paroole, kuni õige väljund saadi. Umbes 2 ^ 23 katset sekundis ja tuuma kohta minu 3,1 GHz serveris (ma arvan, et saaksin mõne SSE2-teadliku koodiga teha 2 ^ 24 - olin seda korraga teinud SHA-1 jaoks).
Tuleb märkida, et toodud kahes (vinge) näites on "soola mind" vaevu näha. Kui OP eesmärk on püüda pilku kelleltki, kes loeb andmebaasi, peaks räsi välja nägema nagu // // SALT + ME //// või midagi sarnast "silmapaistvat". Rakendamise ajaks oleks OP-i * tegelik * probleem siiski lahendatud ...
Kui nägin `SALTMEnBrODYbFY0c / tf + Q ==`, tuli esimesena meelde .... Ärge soolake mind Bro! LOL
Tunnistage ... lõite tahtlikult teise räsi, püüdes iseloomustada inimesi, kes kulutavad aega nende lugemisele! SaltMe + ** neeRd ** UB6h99kOFQ ==
Ma ei saa osa "Seega võite loota" SaltMe "või" SALTME "osale.Miks on need tõenäolisemad kui `saltme` või` saLTMe`?
LB2
2014-04-22 22:07:28 UTC
view on stackexchange narkive permalink

Puhtalt teoreetiliselt ...

On vikerkaarelaudade komplekte koos eelnevalt arvutatud räsidega. Saate seda otsida räsiväärtuse kohta, mis sisaldab sobivaid baitväärtusi (EDIT: see nõuaks täieliku räsimise eeltoodud ränka sundimist ja sondeerimist, mis muudaks selle palju raskemaks - vt bonsaivikingi kommentaari vastus), kui üks selline on olemas (nt selline, mis sisaldab 0xBADBAD). Kui see on olemas, siis saate vikerkaarest endalt tagasi selle teksti, millest see räsi tuletati (ja kui kasutate seda parooli, siis on see definitsiooni järgi ebakindel, kuna kõik, kes andmebaasi saavad, saavad selle ümber pöörata nii et ei soovitata).

Praktikas aga ....

Selles lähenemisviisis on palju eeldusi.

  • Mõistliku suurusega org, arendajatel puudub tavaliselt juurdepääs tootmise andmebaasile, välja arvatud võib-olla üksikud tõrkeotsingu juhtumid.
  • Oletate, et MD5 on salvestatud / kuvatud mõnes inimesele loetavas vormingus; ometi on see vaid 16-baidine baitide massiiv ja sõltuks tegelikult tarkvarast, mida arendaja / IT-inimene selle visualiseerimiseks kasutaks. Näiteks Visual Studios kuvas silur baidimassiivi tavaliselt numbri väärtuse järgi, nt. 87,45,34,67, ...
  • Oletate, et kasutatakse soolata MD5, kuid see võib olla mõni muu räsimisfunktsioon, mille räsi oleks ilmselt teistsugune ja seega teie nõue.
  • Ja nagu teised juba soovitasid, ei tea te, kuidas seda salvestatakse, kuna sellele võidakse rakendada mõningaid täiendavaid teisendusi (näiteks Base64), mis muudaksid selle teistsuguseks.

Kuid suurim eeldus on eelkõige see, et keegi vaatab läbi tuhandete / kümnendike / miljonite / kümne miljoni kasutaja / andmebaasi kasutajate andmebaasi ja tuvastaks hunniku räsimiste hulgast paaritu väärtuse ja isegi siis räsiosast välja.

Vikerkaarelauad ei salvesta kõiki räsi, nii et te ei saa neid lihtsalt "läbi otsida". Need on spetsiaalne tihendusformaat tekstteksti leidmiseks konkreetsete * tervete * sisendiräsi jaoks, nii et peate genereerima "rahuldavaid" räsi, kuni saate selle "päris" tavalise tekstiga.
@bonsaiviking Sul on õigus - ma ei saanud sellest isegi aru. Teeb selle palju raskemaks ...
"Arendajatel puudub tavaliselt juurdepääs tootmise andmebaasile, välja arvatud võib-olla üksikud tõrkeotsingu juhtumid". Ma arvan, et see on küsimusele ainus mõistlik vastus. Ma arvaksin, et on äärmiselt ebatõenäoline, et lõpptulemuse saamist nähakse ja isegi siis ei muuda see kellegi meelt.
"Pass2112127" räsitakse sõnaga "badbad3aad02eeb05be660c5bb30efe5".
"Pwd9383247" räsitakse sõnaga "bad7ca3eb9307233f790a9d4a4a0bbad", mille alguses ja lõpus on "halb".
Ma ei saa nõustuda väitega, et mõistliku suurusega organisatsioonidel on tootmise andmebaasis kontrollid olemas. Kindlasti on korrelatsioon organisatsioonide vahel, kes valesti salvestavad paroole, ja organisatsioonide vahel, mis lubavad arendajatele valesti juurdepääsu tootmise andmebaasile.
miniBill
2014-04-22 21:41:06 UTC
view on stackexchange narkive permalink

8 baiti on 64-bitine, mis ületab julmuse. Ma ei tea md5-le eelnevatest rünnakutest, seega on teil tõenäoliselt õnne.

Samuti põgenevad mõned veebisaidid või piiravad teie tähestikku SQLI-vastase (ebaefektiivse) meetmena

Kuna see ületab toore jõu, kas kasutate 64-bitiseid räsi ühe võimaluse kohta?
See ületab toore jõu, välja arvatud ülaltoodud vastus, milles seda julmalt sunniti.
@corsiKa Vastuvõetud jõhker "SaltMe" või "SALTME", mitte taotletud "SALT ME!" 6 ja 8 tähemärgi erinevus on siin äärmiselt märkimisväärne.
Ta suutis selle teha ühe tunniga vähem kui tunni jooksul, kaasa arvatud rakenduse seadistamine. Märgi lisamine võtaks aega umbes 2 päeva, mis on väga mõistlik. Arvestades, et optimeerimisi ei tehtud palju (vastaja hinnangul suudaks see heade optimeerimiste abil umbes kümnekordselt kiiremini teha) ja et kellelgi, kellel on lihtsalt midagi sellist kokku visanud, on arvatavasti paar masinat selle paralleelseks muutmiseks, näib, et parool võiks nädala või kahe pärast sunnitud olema julm. Kindlasti teostatav millegi jaoks, mida OP vajab ainult üks kord.
Välja arvatud see, et ta sundis jõhkralt kasutama 6 6-bitist tähemärki, 2 ^ 36, mis on * palju * vähem kui isegi 8-bitises "SALTME", mis oleks 2 ^ 48
Nüüd on 2 ^ 48 palju väiksem kui 2 ^ 64 ja see on tegelikult jõhker (Tomi masinal kuluks ~ 4096 tundi)
@KevinLi 64-bitine vähendaks teise eelpildi jaoks vajalikku barjääri märkimisväärselt. Samuti sünnipäeva paradoks.


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...