Newsgroup: it.comp.sicurezza.varie
Titolo: Approsimazione Funzione di HASH

Ciao Ragazzi,
avevo bisogno di una delucidazione sull' algoritmo cryptonote..
 
https://cryptonote.org/cns/cns008.txt
 
 
Se qualcuno ha voglia di darci un occhio...
Secondo voi è fattibile approssimare l'inizializzazione dello scratchpad?
Grazie.
 



https://en.wikipedia.org/wiki/SHA-3#Capacity_change_controversy
 
 
 


Fattibile è fattibile. Lo scratchpad deve contenere dati pseudorandom. Ma, a
quel punto, il calcolo finale darà risultati diversi: il tuo cryptonite darà
risultati che solo lui potrà riconoscere validi:
 
   First, the input is hashed using Keccak [KECCAK] with parameters b =
          ^^^^^^^^^
   1600 and c = 512.
 
Avere la stessa sequenza pseudorandom con un altro metodo la vedo dvrissima.
 
Inoltre, a seconda di che inizializzazione usi (perché a quel punto potresti
anche variare le caratteristiche dello SP), il risultato potrebbe essere più
vulnerabile, perché per esempio smette di essere memory-hard.
 
Leonardo
 
-- 
 
Ya se escucha sonar la metralla, ya el clarín toca fuego graneado:
ahora o nunca, muchachos arriba a acabar a estos hijos del diablo.

 memory-hard.
 
corretto, ma sembra che cryptonote abbia (avuto ??) altri "problemini"
 
https://getmonero.org/2017/05/17/disclosure-of-a-major-bug-in-cryptonote-based-currencies.html
 
 
 

 
https://getmonero.org/2017/05/17/disclosure-of-a-major-bug-in-cryptonote-based-currencies.html
 
 
Grazie,
Mi chiedevo infatti se ci fosse una possibilità di inizializzare lo scratchpad in maniera meno costosa in termini computazionali ma comunque che preservi le caratteristiche "pseudorandom".
Ovviamente nell'utilizzo che obiWan ha ben intuito...

 in maniera meno costosa in termini computazionali ma comunque che preservi le caratteristiche "pseudorandom".
 
Ma certo. Puoi usare, boh, il Mersenne Twister. O qualsiasi altro PRNG.
 
    /* Pseudocodice */
    md5hash(secret, strlen(secret), buffer, MD5_BINARY);
    mersenne_init_from_buffer(buffer, 16, MISSING_BYTES_ARE_ZERO);
    for (i = 0; i < sizeOfScratchPad; i++) {
        scratchpad[i] = mersenne_get_byte();
    }
 
(Ai possibili problemi di questo approccio, ne avevo accennato nel post
precedente).


 post precedente).
 
una buona alternativa al twister è ISAAC
 
https://rosettacode.org/wiki/The_ISAAC_Cipher
 
 
http://burtleburtle.net/bob/rand/isaacafa.html
 
 
https://en.wikipedia.org/wiki/ISAAC_(cipher)
 
 
per il resto, io preferisco un approccio differente per inizializzare
il PRNG; in breve, dato un "secret" inizio calcolandone l'hash (ad es.
lo SHA256) dopodichè eseguo una key derivation (pbkdf2) usando il
secret come key e l'hash come salt, l'operazione mi ritorna il numero
di bytes necessari per inizializzare il PRNG (ISAAC nel mio caso), ed a
quel punto si usa il PRNG per generare i dati casuali da utilizzare
per lo scratchpad
 
 
 



A proposito di key derivation
 
https://security.stackexchange.com/questions/133239/what-is-the-specific-reason-to-prefer-bcrypt-or-pbkdf2-over-sha256-crypt-in-pass
 
 
sembra proprio che mi convenga lasciar perdere PBKDF2 ed usare al suo
posto BCrypt ;-)
 
 

una buona alternativa al twister è ISAAC
 
Sì, ma su questa strada ci ritroviamo a riscaldare il caffè freddo [1][2].
 
La sicurezza contro il "brute forcing" si ottiene con la lentezza. ciclonite
ha chiesto un algoritmo più veloce, e gliel'ho dato. Per renderlo più sicuro
si possono reimplementare pezzi dell'algoritmo con altri pezzi più lenti, la
cosa è regolare e consequenziale, no problemo -- è che farlo non ha senso.
 
Leonardo
 
[1] un tizio entra in un bar e chiede quanto costa il caffè. "Una tazzina di
    caffè espresso caldo un euro e 30. Il caffè freddo, un euro e dieci", fa
    il barista.
    "Mi dia un caffè freddo", chiede il cliente, e, ricevutolo, aggiunge "Me
    lo può scaldare?".
 
    (In una versione della barzelletta, il barista porta il caffè freddo con
    la precisazione "Scaldarlo costa ottanta centesimi").
 
[2] è un possibile esempio di linguaggio Tamariano.


 
ah, Darmok :)
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
 
www.robyt.eu