BLAKE2b 256 o 512?

0

Mi piacerebbe utilizzare una funzione di hash per il controllo dell'integrità dei file e sono influenzato dalla scelta di BLAKE2b come la funzione di hash predefinita in sodio . La mia libreria mi offre la possibilità di scegliere digesti compresi tra 8 e 512 bit. Suppongo che 256 o 512 bit andrebbero bene ma, dato che ho la possibilità di scegliere, quali fattori dovrei prendere in considerazione? C'è qualche ragione per non scegliere 512?

    
posta David Braun 20.09.2016 - 22:02
fonte

2 risposte

1

In pratica si tratta di due parametri, rendimento e sicurezza .

  • Sicurezza: da RFC 7693 , puoi vedere la differenza di difesa dalla collisione come segue:

            Algorithm | Target | Collision | Hash | Hash ASN.1 |
           Identifier |  Arch  |  Security |  nn  | OID Suffix |
       ---------------+--------+-----------+------+------------+
        id-blake2b160 | 64-bit |   2**80   |  20  |   x.1.5    |
        id-blake2b256 | 64-bit |   2**128  |  32  |   x.1.8    |
        id-blake2b384 | 64-bit |   2**192  |  48  |   x.1.12   |
        id-blake2b512 | 64-bit |   2**256  |  64  |   x.1.16   |
       ---------------+--------+-----------+------+------------+
        id-blake2s128 | 32-bit |   2**64   |  16  |   x.2.4    |
        id-blake2s160 | 32-bit |   2**80   |  20  |   x.2.5    |
        id-blake2s224 | 32-bit |   2**112  |  28  |   x.2.7    |
        id-blake2s256 | 32-bit |   2**128  |  32  |   x.2.8    |
       ---------------+--------+-----------+------+------------+
    
  • Prestazioni: è necessario confrontarsi con molti altri algoritmi per scoprire quanto questo fattore influirà sulle prestazioni del dispositivo. qui puoi trovare il sito di benchmarking con quasi ogni algoritmo e tipi di CPU.

Dopo tutto, si consiglia sempre di utilizzare formati più grandi e l'unico scenario che potrebbe influire sulle prestazioni è se si sta installando questo su un chip hardware CPU molto limitato. "FPGA per esempio"

PS : potresti dover controllare questo per il problema di configurazione di Blake2.

    
risposta data 21.09.2016 - 10:00
fonte
1

La dimensione del blocco BLAKE2 è costante indipendentemente dalla dimensione dell'output. Lo stato finale viene semplicemente troncato alla dimensione di output desiderata. Pertanto, le dimensioni dell'output non influiscono sulle prestazioni.

Qualsiasi dimensione di output > = 160 bit garantirà la resistenza alle collisioni. 256 bit è una scelta prudente, che aggiunge anche un comodo margine di sicurezza se la funzione ha sempre un piccolo bias.

Sono disponibili dimensioni di output più grandi; la derivazione della chiave è un caso di uso comune. Ma non sono necessari per la resistenza alle collisioni.

Con libsodium, puoi semplicemente scrivere crypto_generichash_BYTES per fare riferimento alla dimensione di output consigliata.

    
risposta data 01.02.2018 - 10:04
fonte

Leggi altre domande sui tag