Puncte:0

algoritm hash criptografic aditiv nereversibil

drapel in

Am nevoie de o funcție hash criptografică ușoară, care este aditivă, dar nu reversibilă, totuși nu sunt sigur că există o astfel de funcție! (ar fi mai bine dacă funcționează și în mai multe seturi)

Prin aditiv mă refer la: dat o astfel de funcție f, o altă funcție g trebuie să existe, având proprietatea g(f(X),f(Y))=f(X||Y), Unde || denotă concatenarea șirurilor X și Y.

Am găsit o funcție hash homomorfă din Facebook care este aditiv dar este și reversibil.


EDITAȚI | ×:

Prin nereversibil, nu mă refer la rezistența pre-imagine, chiar dacă vreau să am această proprietate în funcția generală.

nereversibilitate: Daca stim f(X||Y) și asta Y este un element folosit ca intrare, ar fi imposibil să se calculeze g-1(f(X||Y),f(Y)) pentru a obține f(X)

PS.Încerc să găsesc o soluție care să fie rezistentă cuantică și suficient de ușoară pentru a funcționa în dispozitive IoT

poncho avatar
drapel my
Poate doriți să adăugați ce alte proprietăți aveți nevoie; pentru aditiv și nereversibil, avem funcția $f(x) = 0$ și $g(0, 0) = 0$; care satisface ambele cerințe, dar mă îndoiesc că ar fi util pentru cazul dvs. de utilizare (oricare ar fi acesta). Unele oarecum mai puțin banale pot fi derivate prin xor’ing octeții șirului de intrare împreună...
drapel in
@poncho ai dreptate! Mă refeream la unul criptografic
poncho avatar
drapel my
Prin criptografic, vrei să spui rezistent la preimagine (răspunsul lui baro77 face asta), rezistent la a doua preimagine sau rezistent la coliziuni?
poncho avatar
drapel my
Dacă aveți nevoie de a doua preimagine sau de rezistență la coliziune, vedeți comentariul meu către baro77, care explorează o idee (care trebuie să fie concretizată...)
drapel in
@poncho Vă citesc comentariile utile! Și a actualizat corect întrebarea. Multumesc amandurora :)
poncho avatar
drapel my
QR face acest lucru dificil - o soluție în stil baro77 ar fi bazată pe un grup, iar algoritmul lui Shor rezolvă majoritatea problemelor dificile bazate pe grupuri...
Puncte:1
drapel gd

Mă grăbesc acum, dar vreau să vă împărtășesc câteva idei (pe care dacă va fi nevoie le voi detalia zilele următoare):

  • concatenarea poate fi văzută ca $x||y = xk+y$ Unde $k=2^{|y|}$
  • asa de $f(x||y) = f(xk+y)$
  • dacă presupunem $f$ fiind multiplicarea pentru un generator EC $G$ (setarea comună EC privkey/pubkey) obținem:

$f(x) = Gx$

$f(y) = Gy$

$f(x||y) = G(xk+y) = G(xk) + Gy = G(x+x+...+x) + Gy = (Gx + Gx + ... + Gx) + Gy = kGx + Gy$

  • ultimul pasaj vă oferă $g$ (o relație simbolic egală cu concatenarea, dar care acționează acum asupra punctelor EC)

$f(x) = Gx$ desigur, nu este un hash, dar nu este inversabil (este problema comună a logaritmului discret), iar cu definițiile de mai sus pare (dacă nu greșesc) aditiv așa cum ați cerut


EDIT: GENERALIZARE

După cum a subliniat cu atenție @poncho, ideile anterioare funcționează numai atunci când toate $y$ au o dimensiune pre-cunoscută fixă, pentru că asta garantează că $k$ este constantă și poate fi folosită în $g$ (care nu are „vizibilitate directă” a $y$ pentru a-i calcula dimensiunea). Soluția inteligentă sugerată de @poncho este de a lăsa $f$ treceți dimensiunea de intrare la „etapa următoare”. Deci definițiile anterioare sunt generalizate în acest fel:

  • $x||y = xk+y$ Unde $k=2^{|y|}$ oricare ar fi dimensiunea $y$ este
  • $f(x) = (Gx, |x|) = (X, |x|)$
  • $f(x||y) = f(xk+y) = (kX+Y,|x|+|y|) = (2^{|y|}X+Y,|x|+|y|) $
  • $g((X,s_x),(Y,s_y)) = (2^{s_y}X+Y, s_x+s_y)$

Încă $f$ nu este un hash, dar, după cum s-a spus anterior, este aditiv în aroma ta și nu este inversabil (prima preimagine rezistentă în terminologia hashes).

poncho avatar
drapel my
O problemă cu aceasta este modul în care funcționează $g$ depinde de lungimea lui $y$. Acum, acest lucru poate fi abordat prin includerea lungimii șirului hash în ieșirea lui $f$, adică $f(x) = (xG, |x|)...
baro77 avatar
drapel gd
@poncho ai dreptate, in mintea mea ma gandeam ca lungimea corzilor sa fie fixata si precunoscuta
poncho avatar
drapel my
„includerea dimensiunii de intrare în ieșirea sa evită, de asemenea, a doua preimagine și atacurile de coliziune”; nu (cu excepția atacurilor a doua preimagine pe intrări scurte); adăugarea ordinului generatorului nu va modifica înmulțirea punctelor; dacă această adăugare nu modifică lungimea (deoarece valoarea hash-ului este deja mai mare decât lungimea, iar adăugarea nu provoacă o „depășire”), atunci rezultatul hash va fi același.
poncho avatar
drapel my
Pe de altă parte, dacă OP are nevoie de a doua preimagine sau rezistență la coliziune, puteți folosi aceeași idee, dar în loc să utilizați un grup EC, faceți-o pe un inel multiplicativ modulo un compus de factorizare secretă ("un modul RSA"); acolo, a doua preimagine/coliziune este la fel de sigură ca factoring (presupunând un generator bine ales și cu avertismentul că există o ușă din spate pentru cineva care cunoaște factorizarea)
baro77 avatar
drapel gd
uhmm @poncho .. Nu vă înțeleg acum punctul de vedere... sigur dacă $l$ este ordinea EC $Gx = G(x+l)$, dar $|x| != |x+l|$ . Mi se pare că presupui că dimensiunea intrării în ieșire va fi trunchiată... de ce? Din punctul meu de vedere, nu este, așa că rezultatul global $f(x)$ diferă de unul $f(x+l)$: deci găsirea unei a doua preimagine sau a unei coliziuni nu este atât de ușoară decât adăugarea unei ordini de grup
poncho avatar
drapel my
De fapt, dacă $x > l$, atunci este posibil ca $|x| = |x +l|$
baro77 avatar
drapel gd
@poncho la naiba ai dreptate :) Acum înțeleg ideea: dacă $x$ este deja suficient de mare, se poate întâmpla ca dimensiunea sa pe biți să nu fie afectată de adăugarea $l$. Mulțumesc pentru corectarea pacientului!

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.