Come verificare l'integrità dei file trasferiti in un protocollo server client

0

Come implementare la verifica dell'integrità utilizzando il checksum dei file in un protocollo client-server in cui il client invia più file al server. Sto usando i seguenti passaggi:

  1. Il client si connette al server e invia i file.
  2. Nel lato server, quando il server riceve i file, ho calcolato il checksum ( using this ) dei file client e server.
  3. Quindi, confrontando il checksum dei file client e server, viene eseguita la verifica dell'integrità.

Il mio processo è ok? Il calcolo del checksum sarà lo stesso se devo calcolare il checksum dei file video?

    
posta Shamminuj Aktar 28.11.2018 - 05:10
fonte

2 risposte

1

Il tuo processo non è OK. Come si può essere sicuri che il checksum sia stato trasferito correttamente o non sia stato manomesso lungo il percorso?
Hai bisogno di una sorta di autenticazione prima di trasferire file, una stretta di mano! Tutto questo può essere risolto usando SSL. Non dovrai preoccuparti di nulla.

    
risposta data 28.11.2018 - 06:35
fonte
1

Dato il chiarimento nel commento (dovrebbe essere in discussione, la parte più importante delle informazioni!), la risposta è sì.

La modifica accidentale è qualcosa che in teoria dovrebbe essere alquanto improbabile in quanto esistono CRC a livello di collegamento e checksum nello stack TCP / IP. La possibilità teorica di un pacchetto accidentalmente modificato che passa inosservato lo strato di collegamento è di uno su quattro miliardi, che suona quasi come "non accadrà mai", ma in realtà accade non così raramente. Considera che ci sono parecchi pacchetti che vanno oltre il filo, non solo uno o due. Quindi lo stack TCP / IP dovrebbe quasi certamente catturare quelli che lo superano. Giusto?
Beh sì, in teoria. In pratica, la ricerca mostra che circa uno su 16 milioni di pacchetti lo supera, anche se non dovrebbe (Stone, J., Partridge, C. SIGCOMM 2000).

Anche se non puoi mai ridurre a zero la probabilità di fallimento, lanciando un checksum SHA-1 il tuo suggerimento ridurrà il rischio fino a contare come "non importa". Tecnicamente è una bugia dire così, ma puoi considerare questo "garantito" con tutti i mezzi pratici.

Sebbene la modificazione dannosa possa essere una preoccupazione valida (sebbene non sia per te come affermato), l'aspettativa di incontrare accidentalmente una collisione su SHA-1 è del tutto ridicola. Questo non accadrà durante la vita dei tuoi figli o dei tuoi nipoti.

Tuttavia, tieni presente che la creazione di un socket che utilizza TLS è di circa 5-6 linee di codice in Java (incluse le istruzioni import ), che non è molto più laborioso della creazione di un semplice socket di vaniglia, e anche rendere più difficili le modifiche malevoli di diversi ordini di grandezza. L'overhead di TLS non è così male , quindi di solito è una cosa accettabile da fare.

    
risposta data 28.12.2018 - 14:16
fonte

Leggi altre domande sui tag