Pregunta

Estoy escribiendo un cliente / servidor que permitirá a los clientes de datos sean compartidos entre la oficina central y en el lugar de mover gente de ventas dentro de la empresa.

Las descargas del servidor y escribe los datos del cliente en archivos XML, pero también mantiene los datos en la memoria para que pueda actuar como un cliente local por así decirlo.

Estoy planeando para serializar el ArrayList de manera que los datos de los clientes se pueden enviar fácilmente a través de internet. ¿Qué tan seguro es esto? Debería mirar en alguna forma de cifrado antes de transmitirle el objeto serializado?

¿Fue útil?

Solución

Yo no realizar el cifrado como parte de la serialización.

Hay dos cuestiones aquí:

  1. Poner el objeto en forma que puede ser transmitida, es decir, la serialización.
  2. Asegúrese de que la transmisión es segura.

1 y 2 son problemas separados y combinarlos en una sola solución, sólo creará problemas por sí mismo en el futuro.

Me gustaría utilizar fuera de la serialización caja y luego utilizar un canal de transmisión segura, como TLS .

Otros consejos

Mi conjetura, mira en HTTPS.

No se debe pensar en la parte de serialización. Al final del proceso de serialización, se obtiene los datos (binario o XML) y se debe tratar de que como no seguro.

Si su plan es transferir de forma segura que a través de Internet, usted debe buscar en HTTPS, pero si va a transferirlo sobre otros medios como el correo electrónico o transferencia de archivos o si necesita almacenar de forma segura o archivarla, probablemente debería mirar en PKCS # 7 y las normas relacionadas .

  

Estoy planeando para serializar el ArrayList de manera que los datos de los clientes se pueden enviar fácilmente a través de internet. ¿Qué tan seguro es esto?

Como seguro como la impresión de que en la postal y ponerlo en el correo. Cualquier cosa en la cadena entre el usuario y el receptor puede ver el contenido.

  

¿Debo buscar en alguna forma de cifrado antes de transmitirle el objeto serializado?

Este es el enfoque habitual. Cualquiera de seguridad de nivel de transporte, tales como Secure Sockets, el cual se codifica la conexión entre el cliente y el servidor, pero el mensaje aparece en 'texto plano' en cada extremo, o puede cifrar el mensaje en sí mismo, y luego descifrar en el cliente. Cifrar el mensaje más que el transporte es más complicado, ya que afecta más capas, pero le permite guardar los mensajes o cambiar desde un servidor de cliente a algo que permite el almacenamiento en caché. Si usted está preocupado por la información de que se pierde si la gente en-the-move pierden un ordenador portátil, a continuación, la encriptación de los mensajes y descifrado de ellos sólo en uso puede ser mejor. (La otra alternativa es cifrar la unidad ningún mensaje al cliente se guarda en, que protege todo, pero también afecta a todo el contenido del ordenador de manera requiere un cambio en la política de la empresa de TI).

Por supuesto, puede utilizar los tres a la vez.

  

Estoy pensando en la Serialice   ArrayList de manera que los datos del cliente   se pueden enviar fácilmente a través de la   Internet. ¿Qué tan seguro es esto? Debería   ver en algunos cifrado formulario antes   Transmito el objeto serializado?

El cifrado no debería ocurrir en la etapa de serialización. Para que quede claro: la serialización está tomando el objeto y convertirlo en una cadena de bytes. Toda su serialización debe hacerse en-el-clara sin ningún munging innecesaria allí a complicar las cosas.

Cifrado debería ocurrir una vez que el paquete de bits está listo para ser exportado. Si estás comunicando "en vivo" con el destino - como en la red, entonces usted debe utilizar SSL para proteger la línea. Afortunadamente, esto es tan simple fijación de un SslStream (MSDN) a su TcpClient. Tenga en cuenta que el cifrado de sólo un pequeño paquete de bits dentro de una corriente más grande (sin cifrar) es generalmente falso de seguridad. Para estar seguro, toda la conversación debe ser seguro.

Si, por el contrario, usted está almacenando los bits (es decir, en un archivo), entonces usted debe utilizar algún tipo de cifrado fuera de línea. Una vez más, el marco .NET maneja todos los detalles para usted; solo conectar un CryptoStream objeto a su FileStream y ya está.

Serialize, gzip, a continuación, enviar a través de HTTPS. Es importante mantener estos pasos en el orden correcto. La compresión de datos cifrados no funciona. El cifrado de datos sin comprimir toma más tiempo, y en teoría reduce la seguridad.

Utilice HTTPS o TCP a través de SSL depende de su canal de comunicación. Si se requiere desplegar de forma segura sus certificados en cada lado y todo lo que será segura.

Además, como usted ha dicho antes de cifrar la serialización hará el truco, se puede utilizar una clave secreta en ambos lados, es necesario almacenar las claves de forma segura y garantizar que no se puede llegar a ellos. Sin embargo esto no es grande porque es posible que desee para reemplazarlos después y gestión de claves puede ser un poco de dolor poco. Yo diría palo con HTTPS / SSL TCP +

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top