Cómo verificar la integridad de los archivos transferidos en un protocolo de servidor de cliente

0

¿Cómo implemento la verificación de integridad utilizando la suma de comprobación de archivos en un protocolo cliente-servidor donde el cliente envía múltiples archivos al servidor? Estoy usando los siguientes pasos:

  1. El cliente se conecta al servidor y envía archivos.
  2. En el lado del servidor, cuando el servidor recibe los archivos, he calculado la suma de verificación ( usando este ) de los archivos de cliente y servidor.
  3. Luego, al comparar la suma de comprobación de los archivos de cliente y servidor, se realiza la verificación de integridad.

¿Mi proceso está bien? ¿El cálculo de la suma de comprobación será el mismo si necesito calcular la suma de comprobación de los archivos de video?

    
pregunta Shamminuj Aktar 28.11.2018 - 05:10
fuente

2 respuestas

1

Su proceso no está bien. ¿Cómo puede asegurarse de que la suma de comprobación se transfiera correctamente o no se haya alterado en el camino?
Necesitas algún tipo de autenticación antes de transferir el archivo, ¡un apretón de manos! Todo esto se puede resolver mediante SSL. No tendrás que preocuparte por nada.

    
respondido por el daygoor 28.11.2018 - 06:35
fuente
1

Dada la aclaración en el comentario (¡debería estar en cuestión, la información más importante!), la respuesta es sí.

La modificación accidental es algo que, en teoría, debería ser bastante improbable, ya que existen CRC a nivel de enlace, así como sumas de comprobación en la pila TCP / IP. La posibilidad teórica de que un paquete modificado accidentalmente pase la capa de enlace sin ser detectado es de uno en cuatro mil millones, lo que parece casi "nunca va a suceder", pero en realidad no sucede muy raramente. Tenga en cuenta que hay bastantes paquetes por el cable, no solo uno o dos. Por lo tanto, la pila TCP / IP casi seguramente debe atrapar a los que lo hacen. ¿Verdad?
Pues sí, en teoría. En la práctica, las investigaciones muestran que aproximadamente uno de cada 16 millones de paquetes lo logra, aunque no debería (Stone, J., Partridge, C. SIGCOMM 2000).

Aunque nunca puede reducir a cero la probabilidad de falla, lanzar una suma de comprobación SHA-1 de la forma que sugiere disminuirá el riesgo hasta el punto de que cuente como "no importa". Técnicamente es una mentira decirlo, pero puedes considerarlo "garantizado" por todos los medios prácticos.

Si bien la modificación maliciosa puede ser una preocupación válida (aunque no es para usted como se indica), la expectativa de encontrar una colisión accidental en SHA-1 es absolutamente ridícula. Esto no va a suceder durante su vida o la de sus hijos o nietos.

Sin embargo, tenga en cuenta que crear un socket que use TLS es de aproximadamente 5 a 6 líneas de código en Java (incluidas las declaraciones import ), que no es realmente más trabajo que crear un socket de vainilla simple, y será también hace que la modificación maliciosa sea más difícil en varios órdenes de magnitud. La sobrecarga de TLS tampoco es tan mala , por lo que generalmente es algo aceptable.

    
respondido por el Damon 28.12.2018 - 14:16
fuente

Lea otras preguntas en las etiquetas