2015-12-17 24 views
5

Il mio progetto richiede di mantenere tutti i dati crittografati, quindi MSMQ deve essere crittografato. Tuttavia, come noto dall'articolo (https://msdn.microsoft.com/en-us/library/ms704178(v=vs.85).aspx) i messaggi provenienti da code private vengono memorizzati per impostazione predefinita nel file ... \ MSMQ \ Storage \ p000000x.mq.MSMQ. Mantenere il corpo del messaggio crittografato mentre è memorizzato sull'unità

Quando configuro una coda privata, imposta il suo livello di privacy su "Corpo" e quando invio un messaggio crittografato a questa coda, apro il file ... \ MSMQ \ Storage \ p000000x.mq nel visualizzatore di testo (io uso Redactor esadecimale Far Manager), vedo un semplice messaggio di testo. Non è crittografato. Per inviare un messaggio che uso codice successivo:

message.UseEncryption = true; 
message.EncryptionAlgorithm = EncryptionAlgorithm.Rc2; 

Il messaggio ... \ MSMQ \ Storage \ p000000x.mq rimane pianura, nonostante la crittografia dei messaggi specificato. Guarda l'immagine qui sotto.

enter image description here Quindi la mia domanda: esiste uno strumento integrato per mantenere il messaggio crittografato sull'unità nel file ... \ MSMQ \ Storage \ p000000x.mq? O ho bisogno di crittografare il corpo del messaggio prima di inviarlo alla coda, e poi, quando sbircio dalla coda, devo decifrarlo?

Grazie mille!

risposta

4

Sì, sarà necessario crittografare i dati PRIMA di inserirlo in un messaggio e quindi decrittografare i dati DOPO aver letto il messaggio.

"Utilizzo della crittografia applicazione sul Data" http://blogs.msdn.com/b/johnbreakwell/archive/2008/09/12/sending-encrypted-msmq-messages.aspx

+1

Grazie, John. Ho letto l'articolo prima ma ho deciso di porre una domanda per assicurarmi ancora una volta che i dati dei messaggi debbano essere crittografati prima di msmq. Tutto questo viene fatto nell'ambito dell'implementazione della conformità FIPS del progetto. –

+0

Penso che lo storage crittografato sia una di quelle caratteristiche che sarebbe bello avere ma che comporta modifiche importanti (cioè costose) al design MSMQ. –

1

Poiché Microsoft Windows supporta codifica delle cartelle per più utenti † attraverso NTFS Encrypting File System (EFS), sono stato in grado di sfruttare questo meccanismo di crittografia trasparente per supportare la crittografia del MSMQ cartella di archiviazione e quindi ridurre al minimo la superficie di accesso dell'utente ai dati all'interno di file che comprendono corpi di messaggi e frammenti di testo altrimenti leggibile nei file * .mq.

Questa soluzione è un'alternativa ho ideato per le code private (senza integrazione dominio) deve essere trasparente criptate e senza ricorrere a Application-Encrypted Messages o per la cifratura su misura dall'applicazione. In realtà influisce su tutte le code sul sistema perché l'intera posizione di archiviazione per l'istanza MSMQ è crittografata.

Questa soluzione continua a consentire l'utilizzo dello snap-in MSMQ per visualizzare i messaggi nelle code per gli utenti a cui sono state assegnate le autorizzazioni per farlo, senza visualizzare testo ingarbugliato o crittografato nel visualizzatore.

Si noti che questa soluzione vi chiede di fare una nuova posizione di archiviazione su disco per il MSMQ perché ho avuto problemi quando si cerca di crittografare e convertire il percorso di archiviazione predefinito che è sotto Windows/System32. Se trovi un modo per far funzionare questa soluzione senza creare una nuova cartella , pubblica nei commenti.

Questi sono i passi che prendo per far funzionare la tecnologia EFS per una soluzione MSMQ in modo trasparente cifrato:
(Queste informazioni presuppongono si sa dove trovare la tua manager Message Queue per configurare il servizio con, e come effettuare alcune altre attività di base di amministrazione di Windows o per scoprire come fare)

  1. Accedere al computer come amministratore (assumendo che il servizio Accodamento messaggi è già installato, se non poi installarlo dal vento ows Programmi e funzionalità).

  2. Prendere nota dell'account utente in cui è in esecuzione il servizio Accodamento messaggi (ad esempio Servizio di rete). Questo sarà necessario nel seguente passaggio ...

  3. Creare una cartella di archiviazione alternativa su disco per msmq ad es. C: \ msmq-storage

  4. Assegna l'utente amministratore alla nuova cartella con autorizzazione Controllo completo.

  5. Assegnare l'account utente del servizio (indicato nel Passaggio 2 ad esempio Servizio di rete) anche l'autorizzazione Controllo completo alla cartella.
    (Questo è un passo molto importante perché dà l'account dell'utente del servizio MSMQ accesso ai contenuti cifrati dei file di messaggi.)

  6. crittografare la cartella andando alle sue proprietà e consentendo la casella di controllo Crittografa. La cartella è ora crittografata e potrebbe essere visualizzata in un altro colore.
    (È possibile verificare questo accedendo come utente diverso sulla macchina e cercando di accedere al contenuto dei file crittografati, con un conseguente 'accesso negato' messaggio.)

  7. Ora utilizzare il gestore di MSMQ per riposizionare le posizioni di archiviazione (tutte) nella nuova cartella crittografata appena creata sul disco (e lontano dalla posizione di archiviazione predefinita o corrente, ovunque sia). La modifica richiederà di riavviare il servizio. Dì di si.

Se si riscontrano problemi con questa soluzione, si prega di postare qui nei commenti. Grazie.

ho provato questa soluzione sia su Win 7 workstation & Windows 2008 R2 Server scrittura e la lettura dalla coda utilizzando un'applicazione .NET di base delineato nel this article about how to write a bare minimum message queue app.

+1

Questo approccio semplifica la sicurezza dei dati. Nella produzione, le prestazioni possono essere influenzate, quindi è consigliabile test di carico e test funzionali. –