Vizualizace kryptografického otisku (Hashe)

Vizualizace kryptografického otisku (Hashe)
« kdy: 16. 10. 2015, 16:19:12 »
Chtěl bych nějak vizualizovat kryptograficky otisk (hash) zprávy. Nějak pěkně graficky, aby uživatel snadno na první pohled dokázal porovnat dva otisky a snadno se přesvědčit, že jsou stejné. Neměl by někdo nějaký nápad? Třeba nějaké náhodné malování na canvas?

Příklad, když uživatel uvidí na obrazovce obrázek divného stromečku a na mobilu stejný obrázek divného stromečku (tedy vygenerovaný obrázek), pochopí, že na mobilu má stejný otisk jako na obrazovce počítače.

Ideálně by bylo, aby se jednalo o kresbu, nejlépe monochromatickou. S barvama je potíž, lidi bejvají barvoslepí.

Nějaké fraktály? Ale zase aby se to počítalo rychle, ideálně v JS


JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #1 kdy: 16. 10. 2015, 16:45:32 »
Tak nevim, jak by clovek na prvni pohled poznal rozdil mezi dvema divnymi stromecky, vygenerovanym podle hashu, ktere se lisi treba jen v par bitech. Ale co treba kdybyste vypocital tri kontrolni soucty hashu podle ruznych algoritmu a vysledek prevedl do prislusneho intervalu cisel (treba udelal modulo a pouzil zbytek) a zobrazil jako hodinky: vteriny, minuty, hodiny. Porovnanim pozic tri rucicek zjistite, jestli existuje rozdil. Ovsem pokud rozdil v pozici neexistuje, nemusi to nutne znamenat, ze jsou hashe stejne a ted je otazka, jaka je pravdepodobnost toho, ze takova situace nastane.

Alternativa: misto hodinek nadefinujte vetsi sadu obrazku a podle tech kontrolni souctu z ni vypichnete tri obrazky a zobrazte je ve stylu jednorukeho bandity. Takze kdyz uzivatel uvidi na obou displayich treba jablko, srdce a prase, muze doufat, ze hashe sedi. Zde by to slo rozsirit na vice obrazku, podle toho, kolik jste schopen vygooglovat algoritmu na vypocet kontrolniho souctu.

Kit

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #2 kdy: 16. 10. 2015, 16:51:41 »
První, co mne napadlo: Co bajt, to osm bodů vysoký sloupeček, 16 bajtů - obrázek 8×16 bodů, zvětšený 2-4×.

Druhý nápad: Každý bajt by byl azimutem pro úsečku, další bajt by na ni navazoval. Případně by to mohly být půlbajty (vždy 16 cest). Vznikl by zajímavý had.

Stromeček: Kmen by měl určitou délku a vystupoval pod určitým úhlem odvozeným z půlbajtu, Z něj by vystupovalo několik větví...

Stromečky by vyrůstaly ze všech 4 stran nebo z rohů.

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #3 kdy: 16. 10. 2015, 17:00:35 »
Stromeček byl jen příklad. Já samozřejmě dál prohledávám googla a našel jsem popis toho, co je v ssh, tedy algoritmus "ožralého kněze" který generuje ty známé obrázky v SSH

Kód: [Vybrat]
+--[ RSA 2048]----+
|             o . |
|         . .o.o .|
|        . o .+.. |
|       .   ...=o+|
|        S  . .+B+|
|            oo+o.|
|           o  o. |
|          .      |
|           E     |
+-----------------+

Blbý je, že je to definované pro asciiart a já mám k dispozici víc, minimálně canvas v javascriptu. Ale dalo by se to použít. Nebo z toho vyjít. Beru to jako poslední možnost. (další věcí je, že já používam SHA256, která má 32 bajtů - ale mohl bych ji zahashovat ještě třeba MD5 :)

Napadly mě nějaké fraktály, ale zrovna nemohu najít žádný rozumný. Taky je problém právě s tím, že by každý hash měl generovat opravdu jiný obrázek, na první pohled rozpoznatelný, že je jiný. A pokud to někde bude generovat podobné obrázky, aby nešly jednoduše forgnout, tedy aby útočník neměl možnost snadno vygenerovat takový otisk (třeba hrubou silou), který bude podobný tomu co uživatel vidí. Takže trošku i bezpečnostní problém

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #4 kdy: 16. 10. 2015, 17:15:39 »
QR kód hashe z hashe? Pokud ten telefon dokáže zobrazit "obrázek", tak má s největší pravděpodobností i foťák.


Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #5 kdy: 16. 10. 2015, 17:18:44 »
QR kód hashe z hashe? Pokud ten telefon dokáže zobrazit "obrázek", tak má s největší pravděpodobností i foťák.

No právě že já nemám problém přenést ten hash do telefonu právě pomocí QR kodu. Ja to potřebuju proto, aby uživatel měl jistotu, že oskenoval správný kód, že tedy podepisuje (ano, jde o DSA, přesněji o ECDSA, napřiklad bitcoinovou transakci, nebo nějaký kritický příkaz na webové aplikaci, třeba smaž všechny fotky v galerii) to co vidí na obrazovce

Pavel Tisnovsky

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #6 kdy: 16. 10. 2015, 17:26:08 »
Napadly mě nějaké fraktály, ale zrovna nemohu najít žádný rozumný. Taky je problém právě s tím, že by každý hash měl generovat opravdu jiný obrázek, na první pohled rozpoznatelný, že je jiný. A pokud to někde bude generovat podobné obrázky, aby nešly jednoduše forgnout, tedy aby útočník neměl možnost snadno vygenerovat takový otisk (třeba hrubou silou), který bude podobný tomu co uživatel vidí. Takže trošku i bezpečnostní problém

S temi fraktaly je to docela problem. Sice muzes napriklad z prvnich x bitu ziskat napriklad vzorecek (typ fraktalu), dalsim obarvovaci metodu atd. atd., jenze spousta parametru asi povede bud ke konstantni barve nebo k nejakemu nahodnemu vzorku. Skutecne by asi byla lepsi ta metoda, co nabizi predrecnici - mit rekneme 256 jednoduse rozpoznatelnych obrazku (kytka, prase, flaska piva, dopravni znacky, panacek...) a pro kazdych 8 bitu hashe to nasazet vedle sebe popr. jeste par bitu na barvu (ale fakt par, urcite ne 24 bitove barvy, spis 8 peknych barev, ne RGB).



Pavel Tisnovsky

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #9 kdy: 16. 10. 2015, 18:39:45 »
Napadly mě nějaké fraktály, ale zrovna nemohu najít žádný rozumný. Taky je problém právě s tím, že by každý hash měl generovat opravdu jiný obrázek, na první pohled rozpoznatelný, že je jiný. A pokud to někde bude generovat podobné obrázky, aby nešly jednoduše forgnout, tedy aby útočník neměl možnost snadno vygenerovat takový otisk (třeba hrubou silou), který bude podobný tomu co uživatel vidí. Takže trošku i bezpečnostní problém

S temi fraktaly je to docela problem. Sice muzes napriklad z prvnich x bitu ziskat napriklad vzorecek (typ fraktalu), dalsim obarvovaci metodu atd. atd., jenze spousta parametru asi povede bud ke konstantni barve nebo k nejakemu nahodnemu vzorku. Skutecne by asi byla lepsi ta metoda, co nabizi predrecnici - mit rekneme 256 jednoduse rozpoznatelnych obrazku (kytka, prase, flaska piva, dopravni znacky, panacek...) a pro kazdych 8 bitu hashe to nasazet vedle sebe popr. jeste par bitu na barvu (ale fakt par, urcite ne 24 bitove barvy, spis 8 peknych barev, ne RGB).

Ale kdybys na fraktalech trval, tak asi nejjednodussi bude pouzit: http://www.root.cz/clanky/markus-ljapunovovy-fraktaly/
Zajimat Te budou kapitoly 5 a vys.

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #10 kdy: 16. 10. 2015, 19:26:06 »
Co takhle vzít hash v hex, stripnout po dvou znacích. Z prvního udělat azimut (360/16), z druhého délku. Vykreslovat od středu canvasu.

S tím by nemuselo být marné si pohrát. Už vím, co budu dělat dnes večer :)

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #11 kdy: 16. 10. 2015, 19:39:55 »
Vypište ten hash hexadecimálně třeba po čtyřech číslicích třeba čtyři skupiny na řádku. Nebo nějak podobně, prostě hexadecimální výpis zformátovaný pro snadné čtení.

Porovnáním nějakých obrázků ten hash efektivně zmenšíte na pár bitů, protože kdyby byl delší, začnou si ty obrázky být podobné a útočník může relativně snadno vygenerovat vstup, který bude dávat jiný hash ale podobný obrázek. Třeba pokud byste dal dohromady 256 různých obrázků (fotek), budete mít s výběrem dost práce, a přitom byste takhle dokázal odlišit jen osmibitové hashe.

noname

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #12 kdy: 16. 10. 2015, 19:40:08 »
To je pěkný nápad, ještě mě napadlo to stripnout po trojicích, ze třetího udělat odstín čáry a mezi sousedními čarami udělat černobílé gradienty. To by mohlo dokonce i hezky vypadat.

noname

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #13 kdy: 16. 10. 2015, 19:42:08 »
Reakce byla míněna na M. Tanečka.

noname

Re:Vizualizace kryptografického otisku (Hashe)
« Odpověď #14 kdy: 16. 10. 2015, 19:48:28 »
Lepší by bylo vzít hodnotu odstínu z dvojice znaků - 255 odstínů šedi :-) (po trojicích to byl docela hloupý nápad).