Zapamatovatelné zaheslování souboru

Re:Zapamatovatelné zaheslování souboru
« Odpověď #30 kdy: 21. 07. 2021, 09:31:11 »


_Jenda

  • *****
  • 1 313
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Zapamatovatelné zaheslování souboru
« Odpověď #31 kdy: 21. 07. 2021, 15:02:54 »
Můj prototyp fungoval tak, že jsi udělal fotku, ta se rozsekala na bloky, které se náhodným způsobem promíchaly.
Číslo z generátoru pseudonáhodných čísel (RNG) určilo, které bloky se mají invertovat a které se mají obrátit .
Nad těmito bloky se spočítala sha2.
A proč se nemohla SHA-2 spočítat prostě nad tím vším bez téhle magie?

PanVP

Re:Zapamatovatelné zaheslování souboru
« Odpověď #32 kdy: 21. 07. 2021, 15:52:58 »
A proč se nemohla SHA-2 spočítat prostě nad tím vším bez téhle magie?

Důvod je selhání zdroje entropie, kdyby byl vstup 0 (například při absenci/selhání fotoaparátu), aby výstup nebyl jedno stejné číslo. A protože mezi RNG a vstupem neexistoval vztah, mohlo při selhání vstupu dojít ke snížení entropie, ale ne ke generování stejných čísel.

Důležitá je absence matematických funkcí. I když neznámý vstup promícháš známým způsobem, nezjistíš, jaký vstup to byl. Naopak, kdybys vstup prohnal nevhodnou matematickou funkcí, může dojít ke snížení kvality náhodných dat.
« Poslední změna: 21. 07. 2021, 15:58:29 od PanVP »

Re:Zapamatovatelné zaheslování souboru
« Odpověď #33 kdy: 21. 07. 2021, 16:47:42 »
Ano, můj projekt vypadal tak, že jsi vzal mobil, namířil na cokoliv a z té fotky se vygenerovalo náhodné číslo.
Vtip je v tom, že u foťáků s vyšším rozlišením (5mpx) a víc už vznikají takové šumy, že dohromady se skutečným obrazem vznikne zcela náhodná oblast.
To, že vy máte pocit, že je něco náhodné, vůbec nesouvisí s tím, zda je to skutečně náhodné.

Pro desetitisíce fotek oblohy nevznikl žádný stejný hash
Pro všechny fotky vyfocené na celé Zemi za celou dobu existence fotografie nevznikne stejný hash (pokud se bavíme o rozumných hashovacích funkcích, aspoň SHA-1). Což ovšem nevypovídá nic o entropii těch fotek.

A Jirsáka si nevšímej, když se nudí, je protivný.
Protivný jsem, když někdo mele nesmysly o věcech, o kterých vůbec nic neví.

I když neznámý vstup promícháš známým způsobem, nezjistíš, jaký vstup to byl.
Když je řeč o útoku hrubou silou na hesla, bavíme se o entropii vstupních dat. Entropie se nezvýší ani nenáhodným mícháním dat, ani hashováním.

Naopak, kdybys vstup prohnal nevhodnou matematickou funkcí, může dojít ke snížení kvality náhodných dat.
Přičemž reálně se těmi „nevhodnými matematickými funkcemi“ prohání obraz ještě před čipem fotoaparátu (filtry), pak je tou nevhodnou matematickou funkcí samotný čip, a následně surová data z čipu zpracovává procesor fotoaparátu, který vlastně nedělá nic jiného, než že aplikuje jednu za druhou takovéhle nevhodné matematické funkce. Protože účelem celého zpracování obrazu ve fotoaparátu je za a) odstranit/redukovat šum a za b) odstranit nepodstatné odchylky (a tím umožnit fotku lépe zkomprimovat). Fotoaparát tedy velmi důkladně pracuje na tom, aby zmenšil entropii fotky, o které vy si myslíte, že tam zůstává.

Fotka samozřejmě je určitý zdroj entropie, ale rozhodně ne tak, dobrý jak si myslíte.

Navíc celá tahle debata vůbec nesouvisí s původním tématem, protože pro zapamatovatelné heslo té entropie zase nepotřebujete tolik, a rozhodně ji není potřeba získávat nějak složitě, bohatě stačí generátor, který máte v OS.

_Jenda

  • *****
  • 1 313
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Zapamatovatelné zaheslování souboru
« Odpověď #34 kdy: 21. 07. 2021, 18:24:48 »
Důvod je selhání zdroje entropie, kdyby byl vstup 0 (například při absenci/selhání fotoaparátu), aby výstup nebyl jedno stejné číslo.
Když selžou zdroje entropie, vyprodukuje i tvůj algoritmus na přehazování stejný výstup. A pokud máš víc zdrojů entropie (což se přesně dělá), tak se to normálně dělá tak, že je do SHA2 nacpeš po sobě. Přehazování a podobné předzpracování je zbytečné a případně může uškodit když si nedáš pozor.


Re:Zapamatovatelné zaheslování souboru
« Odpověď #35 kdy: 21. 07. 2021, 19:17:39 »

Fakticky to je stejné jako má CloudFlare...stejně tak by pomohla kamera namířená třeba na hladinu moře.
Takže jsem měl dobrý nápad (proč by to CloudFlare používali, kdyby to byl blbý nápad), ale nejde to komerčně využít.

Nie je to rovnako dobry napad. Tie lava lampy neobmedzuje hmla, ktora je na vodnej hladine vcelku casty jav a foto hmly bude mat vcelku mizivu entropiu. Co tak radsej foto vodnej pary cez mikroskop s velmi velkym zvedsenim, detail na molekuly vody v tej pare by dal dostatocnu entropiu :D

Ta entropia je tam naozaj dolezita. Cim mensia entropia, tym je mensia mnozina udajov pre bruteforce utok. Ak je entropia vysoka tak sa bruteforce neoplati.

PanVP

Re:Zapamatovatelné zaheslování souboru
« Odpověď #36 kdy: 21. 07. 2021, 20:15:57 »
Když selžou zdroje entropie, vyprodukuje i tvůj algoritmus na přehazování stejný výstup.

Víš, na kolik bloků musíš rozložit takový 5mpx obrázek, abys nad ním mohl provést sha2 (256)?
Já z hlavy ne, ale je to velký číslo!
I když budeš mít zdroj čisté 0, promícháním získáš naprosto náhodné číslo.
Nemudruj a vyzkoušej si to!

Rozsekej si 5mpx obrázek na bloky, které zpracuješ SHA2 / 256.
Bloky, jejichž součet je 0, nahraď celým vygenerovaným číslem 64 bitů (stačí vygenerovat na začátku jedno).
Tím jsem původně končil, ale pak jsem přidal mixování.
Pro každý blok jsou tyto operace, case 0-9
case 0, nedělej nic
case 1, rotuj doleva
case 2, rotuj doprava
case 3, xor
case 4, xor a rotace doleva
case 5, xor a rotace doprava
case 6, bitový posun o 1 (násobení 2)
case 7, bitový posun o 1 (dělení 2)
case 8, nedělej nic
case 9, blok nahraď aktuálním časem
MÁŠ?
Nad výsledkem spočítej  SHA2 256

Kód pro SHA2 256 si stáhni, vyplatí se to modifikovat "za letu", tj. při zpracování.
Pokud budeš schopný generovat stejné výsledky SHA2 256 a doložíš to, bude to odpovídat zadání a budu to schopný replikovat, UZNÁM CHYBU a dám ti ČTYŘI LITRY. Naplnil jsem 2 TB SSD výsledky, ale ani po měsíci nenašel shodu...divný co?
« Poslední změna: 21. 07. 2021, 20:20:36 od PanVP »

PanVP

Re:Zapamatovatelné zaheslování souboru
« Odpověď #37 kdy: 21. 07. 2021, 22:30:14 »
Doplním, že sha2 to rozsekání na bloky dělá sama.
Tyto bloky se kontrolují na "obsah", jestli nejsou prázdné.

Re:Zapamatovatelné zaheslování souboru
« Odpověď #38 kdy: 21. 07. 2021, 23:08:17 »
Víš, na kolik bloků musíš rozložit takový 5mpx obrázek, abys nad ním mohl provést sha2 (256)?
Nemusíte je rozkládat na žádné bloky. Vezměte ten soubor a spusťte na něm sha256sum. To je základní vlastnost  hashovacích funkcí, že mohou mít libovolně velký vstup.

Já z hlavy ne, ale je to velký číslo!
To je přesně váš problém. Nic nevíte, ale máte pocit, že je to velké číslo.

I když budeš mít zdroj čisté 0, promícháním získáš naprosto náhodné číslo.
Nikoli. Promícháváním samých nul nezískáte nic jiného, než samé nuly. Jedinou nulu ani promíchat nemůžete. Takže vaše tvrzení je nepravdivé, ať jste tím „čisté 0“ myslel cokoli. A jak už jsem psal výše, pokud míchání není náhodné, entropii tím nezvýšíte.

Nemudruj a vyzkoušej si to!
Abyste to mohl vyzkoušet, potřebovla byste k tomu nějaké znalosti. To, jak je nějaký výstup náhodný, totiž nezjistíte jen tak pohledem. A nezzjistíte to ani na jednom vzorku.


Naplnil jsem 2 TB SSD výsledky, ale ani po měsíci nenašel shodu...divný co?
Není na tom vůbec nic divného. Prostě jenom netušíte vůbec nic o hashování.

Než zase začnete machrovat tím, že jste v pár bajtech nenašel shodu SHA-256 hashe, zjistěte si, kolik je celosvětově známo kolizí SHA-256, tj. kolik je hashů SHA-256, pro které existují alespoň dva různé známé vstupy, které na ně vedou. Pokud byste měl pocit, že vám dávám hrozně těžký úkol, a jak máte všechny ty kolize spočítat, nebojte se – je to podstatně jednodušší, než si myslíte.

PanVP

Re:Zapamatovatelné zaheslování souboru
« Odpověď #39 kdy: 22. 07. 2021, 08:41:38 »
Nemusíte je rozkládat na žádné bloky. Vezměte ten soubor a spusťte na něm sha256sum. To je základní vlastnost  hashovacích funkcí, že mohou mít libovolně velký vstup.

A proč asi mluvím o rozdělení na bloky? No protože ta funkce sha2 to sama na ty bloky dělí.
Dál jsem to už nečetl... ::)


Re:Zapamatovatelné zaheslování souboru
« Odpověď #40 kdy: 22. 07. 2021, 08:53:45 »
A proč asi mluvím o rozdělení na bloky? No protože ta funkce sha2 to sama na ty bloky dělí.
Takže programátor, který SHA-256 používá, nic na bloky nedělí. Navíc to, na kolik bloků dělíte vstup, je z hlediska entropie zcela irelevantní.

Dál jsem to už nečetl... ::)
Jasně, dozvědět se, co děláte špatně, tomu se chcete vyhnout.

To vaše „zadání“ po jehož implementaci jste ochoten uznat chybu, asi také nebudete ochoten napsat tak, aby to bylo skutečné zadání a dalo se podle toho něco implementovat. Respektive alespoň vám prozradit, co je v tom vašem algoritmu skutečně náhodný vstup a co je jen placebo, které tam je jenom pro ukojení vaší představy, že když je to pro vás složité, musí to zlepšovat bezpečnost.

_Jenda

  • *****
  • 1 313
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Zapamatovatelné zaheslování souboru
« Odpověď #41 kdy: 22. 07. 2021, 12:50:24 »
Pro každý blok jsou tyto operace, case 0-9
case 0, nedělej nic
case 1, rotuj doleva
case 2, rotuj doprava
case 3, xor
case 4, xor a rotace doleva
case 5, xor a rotace doprava
case 6, bitový posun o 1 (násobení 2)
case 7, bitový posun o 1 (dělení 2)
case 8, nedělej nic
case 9, blok nahraď aktuálním časem
MÁŠ?
Nad výsledkem spočítej  SHA2 256
Tohle se normálně dělá tak, že neděláš nějaké divné bitové posuny (kterými můžeš o entropii přijít, protože ti třeba něco vyteče doleva nebo doprava, resp. přeteče), ale máš zjevně náhodné číslo od 0 do 9, super, tak ho prostě přidáš (appendneš, nebo radši padding+append, podle konkrétní aplikace) ke vstupu do SHA256 a ona se o to postará a do výsledného hashe ho zamixuje.

Kód pro SHA2 256 si stáhni, vyplatí se to modifikovat "za letu", tj. při zpracování.
Pokud budeš schopný generovat stejné výsledky SHA2 256 a doložíš to, bude to odpovídat zadání a budu to schopný replikovat, UZNÁM CHYBU a dám ti ČTYŘI LITRY. Naplnil jsem 2 TB SSD výsledky, ale ani po měsíci nenašel shodu...divný co?
Nenapsal jsi žádné zadání a já neříkám že to je tak špatně že by na to šel udělat útok atd., ale že to je nesmyslně složité a nic to nepřináší oproti současným postupům.

Citace
Doplním, že sha2 to rozsekání na bloky dělá sama.
Tyto bloky se kontrolují na "obsah", jestli nejsou prázdné.
Přidáním libovolného množství nul do výpočtu SHA256 nijak neoslabíš sílu použitého generátoru. Dokonce ji neoslabíš ani když bys tam přidával hodnoty co ti nadiktoval útočník - i proti tomu musí být hashovací funkce odolná.

PanVP

Re:Zapamatovatelné zaheslování souboru
« Odpověď #42 kdy: 22. 07. 2021, 14:25:39 »
Ad 1 - pleteš se.
Ad 2 - zdroj je obrázek, pokud selže fotoaparát, pořád můžeš generoval klíče, sic oslabené.
Ad 3 - Evidentně nerozumíš sha2. Pokud máš zdroj o fixní velikosti a celý obsah bude prázdný, bude jeho obsah prázdný = vždy by z toho vypadl stejný hash. Doplňování je důležité z hlediska ošetření vstup, protože pokud by ti fotící funkce vrátila místo obrázku string "camera not found", tak vstup sice není prázdný, ale bude zase existovat jeden výstup.
Mixování je důležité, protože 64bitové číslo je "kupodivu" tak malé, že by se na něj dalo útočit hrubou silou.

Buď v tom máte sám zmatek a problematice nerozumíte, nebo nerozumíte mému popisu. V každém případě to už pro nikoho nemá smysl, ať si to autor udělá podle svého.

Doplním, že jsem si nakonec přečetl několik dokumentů o implementaci fotografie jako zdroji entropie a potěšilo mě, že to mnoho lidí dělá podobně, jak jsem chtěl dělat já. Většina bez mixování, pouze prázdné bloky nahrazují vygenerovaným číslem. Což je možná i lepší řešení, ale oni dokola generují náhodná čísla.

Re:Zapamatovatelné zaheslování souboru
« Odpověď #43 kdy: 22. 07. 2021, 14:58:10 »
Ad 1 - pleteš se.

Ad 2 - zdroj je obrázek, pokud selže fotoaparát, pořád můžeš generoval klíče, sic oslabené.
Zdorj entropie je v tom případě to 64bitové číslo? Takže něco jako 11znakové heslo z malých a velkých písmen a číslic? To je tedy terno.

Evidentně nerozumíš sha2.
Ne, prokazatelně mu nerozumíte vy.


Mixování je důležité, protože 64bitové číslo je "kupodivu" tak malé, že by se na něj dalo útočit hrubou silou.
Nenáhodným mixováním entropie nevzniká. Opište to stokrát – pochopit to je evidentně nad vaše síly, tak si to prostě zapamatujte jako fakt. Ano, na 64bitové číslo se dá útočit hrubou silou, a mixováním 64bitového čísla zase získáte jen 64bitové číslo.

Buď v tom máte sám zmatek a problematice nerozumíte, nebo nerozumíte mému popisu. V každém případě to už pro nikoho nemá smysl, ať si to autor udělá podle svého.
Problematice nerozumíte vy. Pro autora vaše příspěvky nemají smysl dávno – autor potřeboval vytvořit silné zapamatovatelné heslo, ne strašně složitě vyrábět 64bitový klíč.

Doplním, že jsem si nakonec přečetl několik dokumentů o implementaci fotografie jako zdroji entropie a potěšilo mě, že to mnoho lidí dělá podobně, jak jsem chtěl dělat já.
Ne, nedělají to podobně, jako vy. Jenže vy nechápete, co je podstatné a co jsou nepodstatné detaily nebo dokonce zbytečnosti. Takže nemůžete posoudit, zda v tom podstatném dělají věci stejně nebo jinak.

většina bez mixování
Samozřejmě, protože vaše mixování je zhola zbytečné.

Což je možná i lepší řešení, ale oni dokola generují náhodná čísla.
To je princip generátoru náhodných čísel. Je mi záhadou, co jste teda vlastně chtěl vyrábět vy.

PanVP

Re:Zapamatovatelné zaheslování souboru
« Odpověď #44 kdy: 22. 07. 2021, 15:15:01 »

Nezlob se, ale už to ani nečtu.
Jednak byla diskuze z mého pohledu zcela vyčerpána.
A jednak na to nemám ani chuť ani náladu se přít.
Rád si poslechnu tvé rady ohledně webu.

PS/EDIT: Děkuji autorům postů za ty lávové lampy, potěšilo mě, že jsem přišel na stejnou věc, na kterou přišel i někdo jiný, podobně chytrý a šikovný.  ;D
« Poslední změna: 22. 07. 2021, 15:17:53 od PanVP »