Domanda

Sto scrivendo un client/server che consentirà la condivisione dei dati dei clienti tra la nostra sede centrale e gli addetti alle vendite in movimento all'interno dell'azienda.

Il server scarica e scrive i dati del cliente in file XML ma mantiene anche i dati in memoria in modo che possa agire come un client locale per così dire.

Ho intenzione di serializzare l'ArrayList in modo che i dati del cliente possano essere facilmente inviati su Internet.Quanto è sicuro?Dovrei esaminare qualche forma di crittografia prima di trasmettere l'oggetto serializzato?

È stato utile?

Soluzione

Non vorrei eseguire la crittografia come parte della serializzazione.

Ci sono due problemi qui:

  1. Mettere l'oggetto in forma che può essere trasmessa, cioè la serializzazione.
  2. Assicurandosi la trasmissione è sicura.

1 e 2 sono problemi diversi e la loro combinazione in un'unica soluzione creerà solo problemi per se stessi in futuro.

Vorrei usare fuori dalla scatola serializzazione e quindi utilizzare un canale di trasmissione sicura, come TLS .

Altri suggerimenti

La mia ipotesi, guardare in HTTPS.

Non si dovrebbe pensare alla parte serializzazione. Al termine del processo di serializzazione, si ottiene i dati (sia binari o XML) e si dovrebbe trattare che, come non protetta.

Se il piano è quello di trasferire in modo sicuro che attraverso il web, si dovrebbe guardare in HTTPS, ma se avete intenzione di trasferirlo su altri mezzi come la posta elettronica o il trasferimento di file o avete bisogno di memorizzare in modo sicuro o archiviarlo, probabilmente si dovrebbe guardare in PKCS # 7 e gli standard relativi .

  

Sto pensando di serializzare l'ArrayList in modo che i dati dei clienti possono essere facilmente inviati attraverso la rete internet. Quanto è sicuro questo?

Per quanto sicuro come la stampa su cartolina e la messa nella mail. Tutto ciò che nella catena tra voi e il ricevitore può vedere il contenuto.

  

Devo guardare in qualche crittografia forma prima che io trasmetto l'oggetto serializzato?

Questo è l'approccio al solito. Sia la sicurezza dei trasporti di livello, come ad esempio Secure Sockets, dove la connessione tra client e server sono crittografati, ma il messaggio appare 'solo testo' alle due estremità, oppure è possibile crittografare il messaggio stesso, e poi decifrare nel client. Cifrare il messaggio, piuttosto che il trasporto è più complicato, come esso effettua più strati, ma permette di salvare i messaggi o cambiare da un server client a qualcosa che consente di caching. Se siete preoccupati per le informazioni diventando persa se la gente on-the-move perdono un computer portatile, poi la crittografia dei messaggi e li decifrare solo uso può essere migliore. (L'altra alternativa è quella di crittografare l'unità qualsiasi messaggio cliente viene salvato sul, che protegge tutto, ma gli effetti anche tutto il contenuto del computer in modo richiede un cambiamento nella politica aziendale IT).

Ovviamente si può utilizzare tutti e tre in una volta.

  

ho intenzione di serializzare il   ArrayList in modo che i dati dei clienti   possono essere facilmente inviati attraverso la   Internet. Quanto è sicuro questo? Dovrei   guardare in qualche crittografia modulo prima   Trasmetto l'oggetto serializzato?

La crittografia non dovrebbe accadere nella fase di serializzazione. Per essere chiari: serializzazione sta prendendo l'oggetto e trasformandolo in una stringa di byte. Tutta la vostra serializzazione dovrebbe essere fatto in-the-chiaro, senza alcuna munging inutili in là a complicare le cose.

La crittografia dovrebbe accadere una volta che il pacchetto di bit è pronto per essere esportato. Se stai comunicando "dal vivo" con la destinazione - come ad esempio attraverso la rete, quindi si dovrebbe utilizzare SSL per proteggere la linea. Fortunatamente, questo è semplice collegare un SslStream (MSDN) al vostro TcpClient. Si noti che la crittografia solo un piccolo pacchetto di bit all'interno di un più ampio flusso (in chiaro) è generalmente falsa sicurezza. Per essere sicuri, l'intera conversazione dovrebbe essere sicuro.

Se, d'altra parte, si sta memorizzare i bit (vale a dire in un file), allora si dovrebbe utilizzare una sorta di crittografia non in linea. Anche in questo caso, il framework .NET gestisce tutti i dettagli per voi; basta collegare un CryptoStream oggetto al vostro FileStream e il gioco è fatto.

Serialize, gzip, quindi inviare su HTTPS. E 'importante tenere questi passaggi nell'ordine corretto. La compressione dei dati crittografati non funziona. Crittografia dei dati non compressi richiede più tempo, e in teoria riduce la sicurezza.

L'utilizzo di HTTPS o TCP su SSL dipende dal canale di comunicazione.Se è necessario, distribuisci in modo sicuro i tuoi certificati su ciascun lato e tutto ciò che contiene sarà sicuro.

Inoltre, come hai detto, la crittografia prima della serializzazione farà il trucco, puoi utilizzare una chiave segreta su entrambi i lati, devi archiviare le chiavi in ​​modo sicuro e assicurarti che nessuno possa raggiungerle.Tuttavia questo non è eccezionale perché potresti voler sostituirli in seguito e la gestione delle chiavi può essere un po' fastidiosa.Direi di restare con HTTPS/TCP + SSL

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top