Decrittografia di offset arbitrario di file crittografato

6

Desidero memorizzare i file crittografati su un backend di archiviazione che mi consente di recuperare i byte da X a Y del file crittografato. Ovviamente posso decifrare localmente l'intero file e inviarlo al client.

Tuttavia, se il file è molto grande sarebbe bello poter decodificare arbitrariamente quell'intervallo di byte al volo. Se possibile, mi piacerebbe poter decifrare le parti da server diversi contemporaneamente (quindi non avrò necessariamente la catena di decodifica completa a portata di mano).

Esiste una modalità di cifratura a blocchi che consentirebbe qualcosa del genere, o qualsiasi modo possibile?

    
posta Anthony Kraft 16.12.2014 - 22:46
fonte

2 risposte

2

Se puoi richiedere che gli intervalli siano allineati a blocchi, le modalità di crittografia del disco (LRW, XEX, XTS, CTR, ecc.) Sembrano ideali per i tuoi scopi. La modalità ECB funziona anche con intervalli allineati a blocchi, ma è, beh, modalità ECB .

Se hai bisogno di un allineamento a livello di byte, l'unica modalità che sembra promettente è modalità OFB : calcoli un keytream che include l'intervallo che desideri decrittografare, quindi XOR la sezione appropriata del keystream con la sezione crittografata del file. Per un file di grandi dimensioni, questo può essere piuttosto inefficiente, in quanto potresti calcolare e scartare gigabyte di keystream prima di arrivare alla parte che utilizzerai.

    
risposta data 18.12.2014 - 05:07
fonte
0

Salsa20, almeno come implementato in libSodium , sembra l'ideale per questo:

Salsa20 is a stream cipher developed by Daniel J. Bernstein that expands a 256-bit key into 2^64 randomly accessible streams, each containing 2^64 randomly accessible 64-byte (512 bits) blocks.

...

The crypto_stream_salsa20_xor_ic() function is similar to crypto_stream_salsa20_xor() but adds the ability to set the initial value of the block counter to a non-zero value, ic.

This permits direct access to any block without having to compute the previous ones.

    
risposta data 27.07.2015 - 20:06
fonte

Leggi altre domande sui tag