Va bene inviare la chiave privata dell'utente, anche se protetta con un canale SSL? [duplicare]

0

Sto sviluppando un server web che esegue firme digitali di documenti (xml, pdf e office) e quindi convalida tali firme.

La mia idea è: un utente mette la sua SmartCard e attraverso un PIN, ottiene la sua chiave privata. Quindi, la chiave privata deve essere inviata al server, in modo che il server possa firmare il documento con quella chiave.

Anche se la chiave privata viene trasmessa attraverso un canale SSL (HTTPS), è una buona idea inviare la chiave privata lontano dall'utente? Qual è la tua opinione? Sto cercando di evitare di eseguire le firme sul lato client, in modo che sia possibile accedere al servizio di firma da ogni dispositivo.

Saluti, William.

    
posta user3411342 12.03.2014 - 16:21
fonte

4 risposte

3

No. Non è mai, mai OK, inviare la chiave del cliente a qualcun altro. Si chiama una chiave "privata" per un motivo.

    
risposta data 12.03.2014 - 16:41
fonte
3

È certamente una cattiva pratica, e può anche essere un importante problema legale.

Poiché sia l'utente che il tuo servizio tecnicamente hanno avuto accesso alla chiave privata, non è più possibile garantire chi fosse il firmatario effettivo verso terzi.

    
risposta data 12.03.2014 - 16:50
fonte
0

Sono d'accordo con i sentimenti qui, che è pessima pratica inviare la chiave privata e sarebbe quasi impossibile fare quello che vuoi.

Perché?

Perché generi la chiave privata su una smartcard . È molto difficile contrassegnare le chiavi private come esportabili su dispositivi con smart card. Richiede specifiche conoscenze di basso livello dell'API della smart card, che vengono chiamate tramite unità di dati del protocollo dell'applicazione . Il modo in cui la maggior parte della crittografia viene eseguita sui dispositivi è tramite CAPI su windows o PKCS#11 su tutte le piattaforme. Nella maggior parte delle implementazioni di dispositivi CAPI, l'API consente di esportare le chiavi private. PKCS # 11 è più di basso livello e potrebbe supportarlo, ma dipenderà da dispositivo a dispositivo.

La tua domanda richiede anche un'altra domanda. Perché il server vuole firmare il documento? Sicuramente l'utente vuole firmare il documento. Quindi basta inviare il documento all'utente tramite HTTPS, l'utente può firmare con la smartcard e caricare la firma sul server (il documento è già sul server). In effetti, per aumentare l'efficienza basta inviare l'hash del documento all'utente tramite HTTPS. Questo è in realtà ciò che verrà crittografato con la chiave privata.

    
risposta data 26.03.2014 - 05:30
fonte
-1

@mki è corretto. È infatti la carta che firma. Pertanto, il tuo progetto non è solo insicuro nel concetto e legalmente vuoto, ma assolutamente irrealizzabile nella pratica.

    
risposta data 12.03.2014 - 21:13
fonte