Vizualizace kryptografického otisku (Hashe)

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #15 kdy: 16. 10. 2015, 19:54:38 »
Rekl bych, ze cokoliv, co obrazky bude generovat podle jakehosi algoritmu, ztroskota na komplexnosti vysledku (viz tez Bystroushaak: Hash Visualization: a New Technique to improve Real-World Security). User bude drzet telefon vedle monitoru, cumet na to, jak puk a rikat: "Je to stejne, neni to stejne, that is the question". Krome toho by asi bylo dost tzke otestovat vysledek pro vsechny hashe a mohlo by se stat, ze pro spoustu hashu vyjde jakysi kompletne nevyrazny obrazek, ktery se bude podobat milionu jinych kompletne nevyrazny obrazku. Nebo naopak cmaranice, jak kdyz nekdo rozepisuje propisku, ktera se bude podobat milionu jinych cmaranic, jak kdyz nekdo rozepisuje propisku.


noname

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #16 kdy: 16. 10. 2015, 20:10:50 »
To je právě docela otázka. Pokud by se použil ten nápad s úhlem a délkou úsečky, tak by to mohlo podstatně změnit obrázek i v situaci, kdy se budou hashe lišit v jediném znaku (odstíny šedi by to mohly zvýraznit a přidat další odlišnost pro případ, že by byly využity na jednom místě dvě úsečky podobných délek). Sice by se dala najít kombinace znaků, kdy by si se úhly navzájem vyrušily a úsečky by díky tomu šly podobnými směry, ale musel by zde být nějaký rozdíl v ostrosti úhlů a ten bude při minimální odchylce 22,5° jednoznačně patrný. To je jeden z důvodů, proč se mi ten nápad líbí. Chtělo by to nějakého matematika, ale myslím si, že by teoreticky mohla vzniknout množina unikátních obrázků.

noname

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #17 kdy: 16. 10. 2015, 20:13:09 »
Jediný problém s podobností se bude týkat posledních znaků hashe. Ale to už se dá nějakým způsobem pohlídat (i kdyby se za obrázek měly ty dvě písmena pro kontrolu napsat, nemluvě o grafickém zapracování do obrázku).

noname

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #18 kdy: 16. 10. 2015, 20:30:26 »
Případně by se dal zvýšit pomyslný činitel rozlišitelnosti přidáním váhy průhlednosti jednotlivých gradientů podle pořadí čar, mezi kterými by byly vykreslovány.

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #19 kdy: 16. 10. 2015, 20:47:59 »
To mi vsechno pripada, jak reseni pro jine lidi, nez BFU. Osobne sazim na reseni ve stylu jednorukeho bandity: tri, az sest obrazku nejakym zpusobem vybranych podle hashe. I kdyz bude existovat sance shody dvou hashu, porad asi to bude pouzitelnejsi, nez nejaka algoritmicka vizualizace. Slo by to udela i uplne presne. Ovsem to by znamenalo 16 obrazku vybranych z mnoziny 2^16 a to bych chtel videt tazatele, jak to vsechno patla v Gimpu. A i kdyby to nekde nasel hotove, tak by to mozna zabralo moc mista, aby to cpal do telefonu.

Tady by to chtelo matematika, aby spocutal, jaka je pravdepodobnost omylu pro urcitou velikost mnoziny obrazku.


Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #20 kdy: 16. 10. 2015, 20:51:19 »
Když použijete jenom 256bitový hash a každá čárka bude reprezentovat jeden bajt (jak je popsáno v tom návrhu), bude to 32 čárek. I když ten hash změníte víc než jen v jednom písmenu, ty obrázky budou pořád podobné. Uživatel by je rozlišil jedině tehdy, pokud bude kontrolovat 32 čárek jednu po druhé.

noname

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #21 kdy: 16. 10. 2015, 21:02:41 »
Pro Jirsák: Jenže tím, že jednotlivé čáry navazují jedna na druhou, vznikají různé a v mnoha případech hodně odlišné tvary. Uživatel tedy v drtivé většině případů pouze zkontroluje, jestli se tvar podobný něčemu, jako je vánoční stromek podobá tvaru srovnatelnému s třiceticípou hvězdou na druhém obrázku. Je potřeba si uvědomit, že jediná změna úhlu kompletně vychýlí celý zbytek obrázku úplně jiným směrem. Tedy i kdyby byl jinak identický, je pro BFU naprosto odlišný od podobného hashe.

Pro JardaP: V tom máte určitě pravdu. Na to, abychom to nějak jednoznačně rozlouskli, by bylo určitě matematika potřeba. Osobně si myslím, že by ve výše popisovaném případě vznikl jednoduchým způsobem využitelný obrázek, který by přes svou abstraktnost byl použitelný. Na druhou stranu je také pravda, že Vaše řešení má také něco do sebe, nicméně jak říkáte, bylo by docela zdlouhavé nakreslit větší množství takových obrázků. Sice by trošku mohlo pomoci zobrazovat stejné obrázky v jiné barvě, nicméně při požadavku na možnost využití barvoslepými by to asi byl skutečně problém.

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #22 kdy: 16. 10. 2015, 21:19:25 »
@jardaP
Obrázky už máme, říká se jim latinka :)

@Filip Jirsák
Je to zatím na vodě, to je jasné, chce to na tom zapracovat. Ale ten azimut je prostě super :)

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #23 kdy: 16. 10. 2015, 21:31:57 »
jednotlivé čáry navazují jedna na druhou, vznikají různé a v mnoha případech hodně odlišné tvary
Jo takhle, ty čáry na sebe mají navazovat. Takže to prostě bude změť čar přes sebe. Čemuž by se dalo zabránit tím, že se nebude dělit 360 stupňů, ale jen 180, takže rozdíl by byl jen  o něco víc než 10 stupňů. Nebo by zůstal 22,5 stupňů, ale čárek by bylo 64 (pro 256bitový hash).

To ale není podstatné. Podstatné je to, že sice v mnoha případech mohou existovat hodně odlišné tvary, ale zároveň v mnoha případech ty tvary budou podobné. A vzhledem k tomu, že to budou převážně hodně divné tvary, stačí útočníkovi ten tvar napodobit jen trochu.

Je to zatím na vodě, to je jasné, chce to na tom zapracovat. Ale ten azimut je prostě super :)
Na tom, že na první pohled odlišnými obrázky dokážete prezentovat jenom pár bitů informace, nezmění jakákoli práce vůbec nic. A víc bitů informace zase naopak znamená vznik obrázků, které jsou podobné. Pro člověka bude mnohem těžší najít změnu v něčem tak nejednoznačném, jako jsou nejasné tvary v obrázku, než najít změnu v nějakém znaku, na které je člověk zvyklý.

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #24 kdy: 16. 10. 2015, 22:34:22 »
Mezi námi, zkonstruovat hash tak, aby se lišil v jednom bajtu nebo dokonce bitu je docela obtížné, nebo nemožné. Princip hashe by měl být, že malá změna způsobí že vyjde naprosto jiný hash, který se nepodobá ničemu.

Když to vezmu do důsledků pokud předložím uživateli dva hashe, které se liší v jednom písmenku, většina si toho nevšimne. Nikdo nebude kontrolovat, že jsou všechna písmenka stejná. Když kontroluju správnost bitcoinové adresy, koukám jen na první čtyři a poslední čtyři znaky. Taky hlavně proto, že spoléhám na interní checksum, který by překlep v jednom znaku měl  odhalit (on by měl odhalit i překlep ve více znacích, když má vyhrazeny celé 4 bajty)

Když budu dělat podepisování tajným klíčem v dedikovaném zařízení, třeba v mobilu, nebo v Trezoru, mohu na display zařízení zobrazit celou zprávu, kterou podepisuju. To funguje do té doby, dokud jde o krátkou zprávu. Jak podepíšu dokument ve Wordu?

Smyslem ochrany má být, že uživatel nahraje dokument, zobrazí se mu hash a adekvátní obrázek. Měl by si samozřejmě spočítat hash bokem a ten obrázek taky vygenerovat. Věří webové stránce, že to udělá správně. Pokud ale technika podpisu probíhá přes třetí stranu, chce mít uživatel pocit, že to so v zařízení odsouhlasí je skutečně ten dokument, který na stránku uploadoval. Bez zobrazení samotného dokumentu mu zbývá zobrazit otisk, tedy celý hash a porovnat jej s tím co mu vyšlo při vkládání dokumentu. Tak má jistotu, že nedošlo k pozměnění požadavku cestou. Má to pokrýt nejjednoduší způsoby hacknutí. Těžko někdo bude k právě vloženému dokumentu provádět hledání hodně podobného hashe, když je to mnohdy operace na několik let či staletí.

Mimochodem, když člověk nahrává dokument do nějakého systému veřejné nebo poloveřejné zprávy (třeba pojišťovna) mnohdy tam sedí Active X, podepisuje privátním klíčem certifikátu a zobrazuje SHA-1 Hash místo obsahu dokumentu a čeká, aby to uživatel odbouchnul. Tomu nic nezbude a doufá, že podepsal opravdu ten dokument, který chtěl podepsat,

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #25 kdy: 16. 10. 2015, 22:50:01 »
@jardaP
Obrázky už máme, říká se jim latinka :)

Ano, to sice mame, ale kdyz budu chtit reseni ve stylu, ze kazde dva bajty hashe prevedu prave na jeden znak a budu tak mit skupinu sestnaci znaku, coz porovnam snaze, nez 64 znaku hexa vypisu tech 32 bajty sha256, budu muset sahnout po cinske abecede, abych ziskal 65526 znaku, a tu zase neporovnam, protoze ji neumim cist.

I kdybych zvolil to, co jsem puvodne narhl a napriklad spocital tri az ctyri ruzne kontrolni soucty podle ruznych algoritmu a podle vysledku vybral nejaky znak z mnoziny, tak pri pouziti pouhych 26 znaku latinky, by rozptyl byl prilis velky. Tady by prave byl potreba matematik se znalosti statistiky, ktery by dokazal spocitat/odhadnout pravdepodobnost chyby pri pouziti mnoziny o X znacich a tech nekolika ruznych typu kontrolnich souctu. Tipoval bych ale, ze 26 je malo.

Kurva, jak by se vlastne pocitala takovat pravdepodobnost kolize?

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #26 kdy: 17. 10. 2015, 09:00:27 »
Mezi námi, zkonstruovat hash tak, aby se lišil v jednom bajtu nebo dokonce bitu je docela obtížné, nebo nemožné.
U hashovacích funkcí, které dnes považujeme za bezpečné, to můžeme považovat za nemožné. Jenže úplně něco jiného je zkonstruovat hash, který povede na obrázek, který bude na první pohled podobný. To je podle mého názoru velmi snadné, protože stačí vytvořit (podle mého názoru) pár desítek nebo stovek libovolných hashů a jeden z nich povede na podobný obrázek. No a ty náhodné hashe jednoduše vytvoříte tak, že vytvoříte tolik vstupů, které vyhovují vašim potřebám (tj. jsou tam potřebné údaje a ostatní údaje se mění) a klasicky je zahashujete.

Těžko někdo bude k právě vloženému dokumentu provádět hledání hodně podobného hashe, když je to mnohdy operace na několik let či staletí.
No právě. Jenže vy to celé chcete oslabit k nepoužitelnosti tím, že místo aby útočník roky (se započtením rozvoje techniky a prolamování hashovacích funkcí) vytvářel dokument s podobným hashem, bude pár sekund vytvářet dokument s podobným obrázkem.

Stačí si uvědomit jednoduchou věc. Hashe fungují na tom principu, že prostor možných hashů je nepředstavitelně obrovský. Naproti tomu prostor obrázků, které jsou na první pohled nezaměnitelné, je malinký. Ty obrázky můžete nahradit krátkým hashem, který bude mít zhruba stejně velký prostor hodnot, jako ty obrázky. I takové CRC-32, což ani není hash, vám dá řádově víc výstupů, než kolik dokážete vytvořit obrázků, které budou na první pohled různé. Pokud chcete to zabezpečení postavit na obrázcích, představujte si, že to  místo toho zabezpečujete CRC-32. Stačí vám to?

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #27 kdy: 17. 10. 2015, 13:01:50 »
V obrázkovém řešení vidím jediný smysl - WOW efekt. Jinak mi přijde lepší vypsat prostě ten hash, což jsou přeci právě obrázky poskládané vedle sebe, nic jiného. Záměnou za obrázek se nic neřeší, jen vynálézá kolo (alespoň mi to tak přijde). Pokud trváte na obrázku, stačí použít obrázkový font.

Pokud si pamatuju dobře, tak https://en.wikipedia.org/wiki/SHA-3 umí variabilní délku hashe, takže si můžete vybrat kompromis mezi rizikem kolize a délkou textu, který musí uživatel číst. A řešení je hotové. Nebo se pletu?

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #28 kdy: 17. 10. 2015, 14:46:31 »
Abych nebyl špatně pochopen - jde mi o to, že písmo samo o sobě už jsou snadno rozpoznatelné obrázky, navíc je jich dost a jsou na ně lidé adaptovaní. Takže mi přijde přímočará cesta použít.

Ale ještě mě napadlo, že by bylo dobré, pokud by se hash nějak přeložil na slova, která mají význam. Těch slov je v běžném jazyce snad dost a rozhodně snáze poznám rozdíl mezi dvěma souslovíma než mezi dvěma podobnými obrázky. Jedině, že by byly ty obrázky navrstvené přes sebe...

Takže co třeba vypisovat citáty ze Shakespeara? :-)

Jenda

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #29 kdy: 17. 10. 2015, 15:50:36 »
Pokud si pamatuju dobře, tak https://en.wikipedia.org/wiki/SHA-3 umí variabilní délku hashe, takže si můžete vybrat kompromis mezi rizikem kolize a délkou textu, který musí uživatel číst.
Nestačí u libovolné „rozumné“ hashovací funkce prostě část výstupu zahodit?

Takhle se dělají taková ta divná čísla jako SHA-224.

Jinak jak píše Filip Jirsák - myslím, že vygenerovat kolizi nebude náročné.