JPEG obrázek s vodoznakem

JPEG obrázek s vodoznakem
« kdy: 13. 09. 2021, 07:20:11 »
Je možné vytvořit jpeg obrázek, který by obsahoval kromě vlastních obrazových dat i vodoznak s MD5 součtem toho obrázku? Tím součtem myslím z obrázku, který již má ten vodoznak. 
« Poslední změna: 13. 09. 2021, 08:37:35 od Petr Krčmář »


Re:JPEG obráze s vodoznakem
« Odpověď #1 kdy: 13. 09. 2021, 07:42:34 »
jpeg format umoznuje prikladat metadata, tak do nich to zkusit vlozit.

Re:JPEG obráze s vodoznakem
« Odpověď #2 kdy: 13. 09. 2021, 07:44:05 »
akorat nevim jak ti tam MD5 k cemukoliv pomuze?

kdyz ti ten obrazek nekdo ukradne, nejak odstrani vodoznak, tak muze zaroven vymazat i metadata s MD5.

Re:JPEG obráze s vodoznakem
« Odpověď #3 kdy: 13. 09. 2021, 08:39:48 »
Pokud chcete, aby si uživatel pomocí MD5 zkontroloval, že nebylo s obrázkem manipulováno, musíte buď

  • udělat součet pouze obrazových dat a poskytnout software, který tento součet ověří
  • udělat součet celého souboru a md5 šířit v nezávislém souboru (jak je běžné)

Re:JPEG obrázek s vodoznakem
« Odpověď #4 kdy: 13. 09. 2021, 09:22:46 »
Z vašeho dotazu vůbec není jasné, o co se vlastně snažíte.

Udělat vodoznak vytvořený z dat s tím vodoznakem samozřejmě není možné – abyste mohl vodoznak vytvořit, potřebujete obrázek s tím vodoznakem, který máte vytvořit.

Navíc k používání MD5 dnes není žádný důvod, ta hashovací funkce je dávno prolomená.

A počítejte s tím, že JPEG je ztrátová komprese, takže když uložíte obrázek jako JPEG, pak ho načtete a beze změny znovu uložíte jako JPEG, dostanete jiná binární data, takže i případný kontrolní součet bude jiný.


RDa

  • *****
  • 1 727
    • Zobrazit profil
    • E-mail
Re:JPEG obrázek s vodoznakem
« Odpověď #5 kdy: 13. 09. 2021, 10:04:54 »
Je možné vytvořit jpeg obrázek, který by obsahoval kromě vlastních obrazových dat i vodoznak s MD5 součtem toho obrázku? Tím součtem myslím z obrázku, který již má ten vodoznak.

Pokud jde o ztratovou JPEG kompresi, tak prvni co me napadlo po pameti je, ze muzes pouzit kontejner typu TIFF, kde se v cDNG rozsireni (od verze 1.2) nachazi definice metadat pro MD5, vcetne upraveneho algoritmu ktery umi lepe vyuzit vicejadrove vypocty (jinak je md5 neparalelizovatelny).

Pro kontejner/format JFIF (coz jsou ony jpeg soubory) neexistuji takove metadata nativne, ale zas v JFIF souboru byva typicky EXIF ostruvek, ktery pak checksum nest muze.

Samozrejme to slouzi jen na ochranu vuci bitovym chybam pri kopirovani/prenosu po siti, protoze pokud to editor umi, tak pri kazdem ulozeni prepocita checksum :)

Ale pokud do obrazku chcete vyrenderovat ono MD5 - tak hodne stesti s exploitaci algoritmu - ne, ze by to neslo.. ale nad obrazkem stravite celou vecnost :))
« Poslední změna: 13. 09. 2021, 10:09:28 od RDa »

Re:JPEG obrázek s vodoznakem
« Odpověď #6 kdy: 14. 09. 2021, 09:28:57 »
mozne to je, tady mas napriklad GIF a PDF, ktere zobrazuji svuj vlastni MD5 hash:

https://shells.aachen.ccc.de/~spq/md5.gif

https://www.makomk.com/~aidan/selfmd5-try2.pdf

Re:JPEG obrázek s vodoznakem
« Odpověď #7 kdy: 14. 09. 2021, 11:10:47 »
mozne to je, tady mas napriklad GIF a PDF, ktere zobrazuji svuj vlastni MD5 hash:
To je ale jen důkaz toho, že MD5 je dávno prolomená a nemá smysl ji k čemukoli používat. S neprolomenou hashovací funkcí tohle neuděláte.

Re:JPEG obrázek s vodoznakem
« Odpověď #8 kdy: 14. 09. 2021, 11:21:08 »
To je ale jen důkaz toho, že MD5 je dávno prolomená a nemá smysl ji k čemukoli používat. S neprolomenou hashovací funkcí tohle neuděláte.

autor se ptal, zda je to mozne, bohuzel neuvedl proc. napadlo me, ze by mohl chtit na blockchainu prodavat NFT ve forme jpeg obrazku, ktery by zobrazoval svuj vlastni MD5 hash. urcite by se nasel blazen, ktery by to povazoval za cool vec a koupil to za $5m v ETH  :D

RDa

  • *****
  • 1 727
    • Zobrazit profil
    • E-mail
Re:JPEG obrázek s vodoznakem
« Odpověď #9 kdy: 14. 09. 2021, 12:26:36 »
mozne to je, tady mas napriklad GIF a PDF, ktere zobrazuji svuj vlastni MD5 hash:
To je ale jen důkaz toho, že MD5 je dávno prolomená a nemá smysl ji k čemukoli používat. S neprolomenou hashovací funkcí tohle neuděláte.

Pouziti v obrazcich je ochrana vuci bitovym chybam pri prenosu a zalohovani - coz je hlavni naplni prace pozice DIT u filmariny.

Jenom blazen by pouzival volne upravitelny checksum (at uz crc, nebo hash) na kontrolu originality v roli digitalniho podpisu - takze nesejde na tom, zda je funkce prolomena ci nikoliv, ale zda je dostatecne funkcni k primarnimu ucelu. Tvurcum standardu se zdalo crc16/crc32 zrejme slabe, takze se zvolilo md5.

Takze o co vam jde?

Re:JPEG obrázek s vodoznakem
« Odpověď #10 kdy: 14. 09. 2021, 14:36:21 »
Takze o co vam jde?
Já jsem se snažil poradit tazateli s jeho problémem.

Pouziti v obrazcich je ochrana vuci bitovym chybam pri prenosu a zalohovani
Prima. Jenže když se chci chránit před chybami v přenosu a zálohování, nebudu přece kvůli tomu ničit obraz vodoznakem.

Jenom blazen by pouzival volne upravitelny checksum (at uz crc, nebo hash) na kontrolu originality v roli digitalniho podpisu
Když ke vstupním datům připojíte klíč, který znáte jenom vy, výsledný kryptografický hash nikdo napodobit nedokáže. Takže to jako digitální podpis slouží. Běžně se to používá, hledejte termín „HMAC“ (hash-based message authentication code).

Re:JPEG obrázek s vodoznakem
« Odpověď #11 kdy: 14. 09. 2021, 15:52:14 »
Původní tazatel moc nekomunikuje, takže se možná ani nedozvíme, o co mu šlo  :)

Gtor

Re:JPEG obrázek s vodoznakem
« Odpověď #12 kdy: 16. 10. 2021, 22:21:40 »
Neco takoveho samo od sebe nejde, pokud ta samotna hashovaci funkce neni prolomena. Obecne u neprolomene hashovaci funkce neni mozne mit soubor, ktery bude obsahovat hodnotu sveho vlastniho hashu, at uz jako text, vodoznak, ci cokoliv jineho. Pridanim hodnoty hashu se totiz meni soubor a tim i jeho hash.

JPG, JPEG je ztratova komprese, takze ulozenim obrazku pozmeneneho, tim se zmeni ne jen binarne soubor, ale i barevna hodnota nekterych pixelu, i mimo text (vodoznak). Takze nunte pouzit bezstratovou kompresi - napr PNG nebo TIFF.

Pseudo reseni - jak vytvorit obrazek obsahujici text sveho vlastniho hashu:

Mam obrazek A v bmp, barevna hloubka 24 bit. Ten obrazek obsahuje obdelnik (pole pro text), jez je totalne cerne. Spocitam hash toho obrazku A, ten hash pridam jako text do cerneho pole obrazku, a obrazek ulozim jako PNG, bode se jednat o soubor B. Obrazek B (v png) obsahuje hash obrazku A (v bmp), tedy pseudo svuj vlastni hash. Prijemce obrazku B (v png) si muze overit, ze obrazek B obsahuje pseudo-svuj vlastni hash (Jako obrazek A ve formatu BMP a bez hodnoty hashu v cernem poli). Prijemce si muze cerne pole z hashem znovu zacernit, ulozit do BMP a spocitat hash - mel by dostat hodnotu, co je na obrazku B (png) v cernem poli.

Na obrazku A jsou krome cerneho pole pro hash dalsi informace mimo toto pole, ktere prijemce dostane a zkontroluje pravost podle hashu. Mimo cerneho pole pro hash se totiz musi zcela pixely shodovat v obrazku A i B. Obrazek A je jako BMP z jednoho duvodu - komprese PNG je bezstratova, ale algoritmy (a tim i vysledny binarni soubor) se lisi i pri stejne barevne hodnote pixelu. Jedine se s prijemcem domluvit na pouziti presneho konkretniho algoritmu komprese do PNG. Pole pro hash bez hashu musi byt zcela cerne a mimo toto pole se musi pixely zcela shodovat.

Ale nevime, jaky ucel ma tazatel na mysli, proc se pta. Tak tezko radit, treba existuje lepsi reseni jinou cestou.