Puncte:12

Paradoxul hash într-un fișier imagine care conține text hash?

drapel cn

Este posibil să includeți în mod vizibil un hash digest într-o imagine, astfel încât hash-ul imaginii în sine să fie același digest?

Când desenăm textul hash-ului din imagine, desigur vom schimba hash-ul de imaginea în același timp, deoarece după cum știm, modificările mici ale intrării unei funcții hash produc modificări semnificative în ieșire.

De asemenea, sunt conștient de faptul că funcțiile hash sunt ireversibile.

M-am gândit la asta în timp ce învățam procesarea imaginilor. Vreau să pun text cu valoarea hash-ului în sine în partea de sus a imaginii.

Există vreo soluție pentru a-mi atinge scopul cumva?

introduceți descrierea imaginii aici

drapel xk
Din comentariile dvs. la răspunsul existent: „de fapt scopul meu nu este din motive de securitate, ci de a convinge oamenii care ghicesc despre ce vorbește această imagine. Dacă spun răspunsul „inima frântă” după ce se predau, desigur că nu mă cred, de aceea am pus hash în interiorul imaginii.” Dacă scopul este pur și simplu acela de a avea un angajament (față de textul „inima frântă”), de ce nu este suficient să includeți în imagine un hash cu ceea ce v-ați angajat? De ce *imaginea în sine* trebuie, de asemenea, să trimită la același lucru cu ceea ce v-ați angajat?
drapel cn
Toți algoritmii moderni de hashing sunt proiectați în mod intenționat pentru a atenua această posibilitate. Ceea ce cereți este să găsiți un algoritm de hashing care să nu aibă rezistență [preimage attack](https://en.wikipedia.org/wiki/Preimage_attack). Acesta este motivul pentru care, de exemplu, un mesaj semnat PGP include tot textul din e-mail *cu excepția* semnăturii. Ar fi imposibil de calculat semnătura care se include în text, cel puțin din câte știm.
Joseph Sible-Reinstate Monica avatar
drapel vn
https://news.ycombinator.com/item?id=13823704
Puncte:13
drapel in

Există o soluție cum să-mi ating scopul?

Vă putem re-formaliza întrebarea într-o formă generală ca;

Găsiți un text care conține hash-ul său. $$\text{valoare-resumare} = \operatorname{Hash}(\text{o parte| valoare-resumare | o altă parte)})$$

Când modificați textul, valoarea hash va fi modificată. Acest lucru nu este posibil cu funcțiile hash criptografice, deoarece căutarea este dincolo de orice.

Ce poti sa faci;

  • dacă textul hash este într-adevăr 16 valori hexadecimale, atunci încerci tot posibilul $2^{64}$ valori care să se potrivească. Putem presupune că utilizați SHA-256 și reduceți rezultatul. Dezavantajul este acesta; nu știm că SHA-256 tăiat atinge toate valorile.

    Dacă unul hashes $2^k$ valorile și ajustările la $k-biți$ apoi, din cauza așteptării coliziunii prin paradoxul zilei de naștere, nu ne așteptăm să apară toate valorile.

    Deci, este posibil să nu aibă o soluție pentru toate imaginile. Acest lucru necesită încă multă muncă.

    Dacă textul hash are dimensiunea reală, atunci cele de mai sus nu sunt posibile.

  • Utilizați o parte din imagine, aceasta a fost similară cu hârtie PUF. S-au extras suprafața hârtiei cu un extractor fuzzy, apoi hârtia este semnată pe partea în care nu se efectuează extracția.

    Utilizați o parte din imagine pentru a calcula valoarea hash, apoi imprimați valoarea hash pe partea care nu este calculată hash.

  • Utilizați imagini stratificate. Un strat conține imaginea că întreaga parte poate fi hashing, iar stratul superior poate conține valoarea are.

    Ar putea fi greu pentru un utilizator să proceseze straturile, în schimb, puteți folosi trucuri de programare, cum ar fi în paginile web, se poate adăuga text peste o imagine cu HTML și CSS.

Scopul meu a fost să ușuresc pe unii oameni să nu fie nevoie să-l hash manual.

De ce nu trebuie să facă hash manual, atunci ce folos are hash-ul? Nu poate un atacator să trimită o imagine cu valoarea hash a fișierului său, astfel încât utilizatorul să creadă? Aceasta nu este deloc o practică de securitate bună, lăsați utilizatorii să calculeze hash-ul chiar și să verifice semnătura digitală că este semnată de dvs.

Maarten Bodewes avatar
drapel in
Comentariile nu sunt pentru discuții extinse; această conversație a fost [mutată în chat](https://chat.stackexchange.com/rooms/133668/discussion-on-answer-by-kelalaka-hash-paradox-in-an-image-file-that-contain- haș).
Puncte:9
drapel in

Au existat cel puțin două încercări reușite de a crea imagini GIF care afișează propriile hash-uri MD5:

hashquine de spq

Hashquine de spq

hashquine de Copyheart Rogdham

Hashquine de Copyheart Rogdham

Puteți descărca ambele fișiere și puteți verifica dacă md5sum hashurile sunt egale cu hashurile afișate în imagini.

Acestea se bazează pe faptul că coliziunile MD5 sunt ușor de produs în zilele noastre și pe faptul că formatul GIF este o secvență de cadre. Efectiv, GIF-urile constau din 32 de bucăți de date de animație. Fiecare bucată este calculată ca o multicoliziune MD5 cu 16 căi, adică există 16 bucăți diferite care produc același hash, dar afișează cifre hexazecimale diferite. Deci, GIF-ul este construit prin calculul și concatenarea tuturor celor 32 de coliziuni cu 16 direcții, calculând hashul rezultat al fișierului și apoi selectând bucățile care produc rezultatul dorit.Cu alte cuvinte, flexibilitatea formatului GIF și slăbiciunea MD5 permit ca hash-ul afișat să fie ales câte o cifră, fără a afecta hash-ul fișierului imagine.

În principiu, un rezultat similar ar putea fi obținut pentru orice altă funcție hash, atâta timp cât este ușor să se producă coliziuni. De exemplu, ar fi ușor să faceți acest lucru cu familia de hashe-uri CRC, deoarece este ușor să le ciocniți (doar să rezolvați o ecuație liniară). Cu toate acestea, pentru funcțiile hash care sunt în prezent rezistente la coliziuni, cum ar fi SHA-256, este imposibil din punct de vedere computațional.

Și alte formate de fișiere pot fi atacate în acest fel: de exemplu, numărul 14 al jurnalului PoC||GTFO arată propriul hash MD5 pe pagina de copertă a PDF-ului: https://www.alchemistowl.org/pocorgtfo/pocorgtfo14.pdf. PostScript și chiar și formatul NES ROM pot fi atacate în mod similar datorită trucurilor de format de fișiere; citiți jurnalul pentru mai multe detalii tehnice.

kelalaka avatar
drapel in
Da, aceasta necesită GIF care nu se aplică fișierelor imagine standard.
drapel in
Sunt destul de sigur că formatul GIF este un „fișier imagine standard”; este larg acceptat în browsere și instrumente de imagine și este foarte comun pe Internet. Da, acest lucru nu este generalizabil la toate formatele - BMP, de exemplu, foarte probabil nu ar funcționa - dar nu aș fi surprins dacă ați putea face ca tehnici similare să funcționeze mai mult decât doar GIF. (Există deja hashquine pentru PDF, PS etc.)
kelalaka avatar
drapel in
Ar fi trebuit să spun că non-animat este cheia atacului. M-am gândit, totuși, că nu pot găsi o modalitate de a aplica acest atac. Ar trebui să uităm de MD5 și SHA-1. Și, desigur, bine ați venit la [cryptography.se]
drapel in
PDF și PS nu sunt animate, dar atacul este încă aplicabil. Nu aș fi surprins dacă există o modalitate inteligentă de a aplica acest lucru la PNG sau JPEG cu un abuz foarte viclean al formatului.
kelalaka avatar
drapel in
Singurul dezavantaj, de fapt, OP a fost solicitarea unui hash specific, nu un hash aleatoriu produs cu coliziuni. Puteți vedea acest lucru în comentariile mutate în chat sub răspunsul meu sau în ultima parte a răspunsului meu citat.
kelalaka avatar
drapel in
Ori de câte ori formatul de date permite libertatea, acest atac va funcționa.
drapel ph
jpa
Acest lucru este probabil posibil în orice format bitmap în acest fel: generați două bucăți de 32x RGB32 pixeli, una pentru prim-plan și una pentru culoarea de fundal. Randomizați biții cei mai puțin sensibili ai fiecărui pixel până când găsiți o coliziune MD5 între prim-plan și fundal (există algoritmi specifici pentru a accelera acest lucru). Asamblați bucăți spate în spate pentru a obține imaginea dorită. Rezultă un text blocat cu rezoluție scăzută.
drapel in
@jpa: Este o idee bună. Cred că dacă ai * multă * răbdare, ai putea folosi o coliziune cu prefixul ales pentru a realiza acest lucru într-un mod ușor diferit. Atacul de coliziune ales de MD5 vă permite să luați două prefixe arbitrare, diferite și să calculeze două blocuri corespunzătoare de date aleatorii (în aproximativ 1 zi) care pot fi adăugate pentru a egala hashurile MD5. Acest lucru ar corespunde cu un rând sau două de gunoi între bucăți, din păcate, dar ar putea exista modalități de a ascunde/reduce perturbarea vizuală, de ex. cu trucuri de paletă.
Puncte:4
drapel cn

A fost o vreme când acest lucru a fost posibil. Internet Explorer (horrors) a acceptat fișierele WMF ca fișiere imagine. Datorită a ceva care a fost prin proiectare în format de fișier, acest lucru nu a fost niciodată sigur. Imaginea poate rula cod arbitrar ca parte a redării imaginii. Astfel, soluția este ca fișierul să-și calculeze propriul hash în timpul randării și să-l aranjeze deasupra restului imaginii.

https://en.wikipedia.org/wiki/Windows_Metafile_vulnerability

Știu că acesta nu este răspunsul pe care îl cauți, dar asta este. Un răspuns adevărat pentru un cripto hash va fi atât de dificil. Algoritmii cripto hash sunt proiectați astfel încât să nu puteți face acest lucru și acesta este ideea. Dacă ați putea face acest lucru cu date statice, hashurile nu ar putea face ceea ce au fost concepute pentru a face.

Având în vedere, destule lucrări asemănătoare Quine și s-ar putea să obțineți un postscript sau un fișier PDF care să facă acest lucru. Ar fi destul de deranjant pentru comunitatea de securitate până când își vor da seama de truc.

Puncte:3
drapel cn

Acesta este unul dintre acele cazuri în care răspunsul la matematică și răspunsul CS sunt destul de diferite. Având un hash sigur din punct de vedere criptografic:

Dintr-o perspectivă matematică, având în vedere un fișier f și un mod fix de a combina fișiere și hash-uri, ar trebui să ne așteptăm la o șansă de 1/e ca să existe cel puțin un hash h astfel încât hash-ul lui h combinat cu f să fie h. Dacă variam modalitățile de combinare (puneți în colțul absolut din stânga sus, puneți-l în colțul din dreapta sus, puneți-l în colțul din stânga sus, dar mutați un pixel la dreapta etc.), probabilitatea se apropie rapid de 1 .

Din punct de vedere CS, valoarea estimată a calculului este proporțională cu numărul de ieșiri hash posibile. Pentru orice hash de dimensiuni decente, aceasta este o cantitate nerealizabil de mare de calcul. Cantitatea de calcul necesară ar fi comparabilă cu suma necesară pentru a obține un fișier cu un hash egal cu un hash preselectat. Dacă ai fi capabil să faci asta, oamenii ar începe imediat să-și facă griji dacă ai spart hash-ul cumva.

drapel ru
O modalitate bună de a elimina o funcție hash care nu vă place - produceți un fișier imagine cu o parte hash a imaginii.
Puncte:1
drapel us

Utilizați numele fișierului

Deoarece hash-ul din imagine este de fapt conceput ca un sfat, puteți pur și simplu să denumiți fișierul 3e2c5b56e34f1979.jpg

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.