Una stringa casuale personalizzata farebbe ciò che voglio?

1

In anticipo, per favore trascuri la mia ingenuità. Ho un'app di servizio che parla con un web API. Voglio solo che il servizio parli con il web API, nient'altro. Significa che devo proteggerlo e sto cercando di capire perché dovrei usare un certificato client piuttosto che una chiave / stringa condivisa a caso sufficientemente lungo.

Il modo in cui ci sto pensando è; Vivo in una casa e uso una chiave per aprire la porta principale. Ho fatto una copia della chiave e l'ho consegnata a un membro della famiglia in modo che possano sbloccare anche la porta d'ingresso. Ora tornando allo scenario digitale, se creo una chiave / stringa casuale, autorizzo solo quelli che passano quella chiave con le richieste alla mia web API, e chiedo alla mia app di servizio di includere quella chiave in tutte le richieste alla web API, non sono io raggiungere il mio obiettivo di consentire solo all'app di servizio di accedere alla mia web API? Perché dovrei aver bisogno delle complessità extra di creare e installare un certificato client?

Grazie

    
posta Steve 22.04.2017 - 10:13
fonte

1 risposta

1

Contrariamente a dare una chiave hardware ad alcuni membri della famiglia, la stringa casuale che proponi è solo dati e può essere facilmente copiata senza preavviso. E mentre potresti sentire che il trasporto della chiave hardware nella tasca è sufficiente per proteggere la situazione è diversa con i dati solo come chiave.

Tuttavia, se proteggi bene la tua chiave dati, potrebbe essere abbastanza sicura nel tuo ambiente, anche se gli esatti requisiti di sicurezza di questo ambiente sono sconosciuti. Proteggere la chiave significa almeno utilizzare HTTPS in modo che nessuno tra client e server possa annusare la chiave.

Ma anche con HTTPS è sufficiente che uno solo dei sistemi che hanno la chiave venga compromesso. In questo caso, la chiave può essere semplicemente copiata e utilizzata in modo improprio perché tutti i sistemi utilizzano la stessa chiave. Supponendo che l'uso improprio di questa chiave condivisa sia notato, l'unica opzione è revocare questa singola chiave condivisa, il che significa che una nuova chiave condivisa deve essere distribuita a tutti i sistemi. In questo caso sarebbe già un miglioramento se si utilizza una chiave diversa per ciascun sistema da allora l'impatto dell'abuso è limitato e si ha solo bisogno di revocare e aggiornare la chiave per un singolo client. Questo schema di avere una chiave diversa per ogni cliente potrebbe essere semplificato utilizzando i certificati client con la propria autorità di certificazione e fidandosi semplicemente di qualsiasi certificato rilasciato da questa autorità.

I certificati client hanno anche il vantaggio di poter essere supportati dall'hardware utilizzando una smart card o simili. In questo modo un utente malintenzionato deve avere accesso fisico al sistema per rubare la chiave. Compromettere il sistema da remoto non è sufficiente, ma è possibile utilizzare in modo errato la chiave esistente da remoto se non è richiesta alcuna interazione locale per l'utilizzo della chiave (ad esempio, sempre nella smart card senza PIN). E anche se l'hacker riesce a ottenere l'accesso fisico alla chiave hardware, probabilmente non sarà in grado di copiarlo con costi accettabili, quindi la perdita della chiave verrà notata e l'accesso alla chiave potrebbe essere revocato.

    
risposta data 22.04.2017 - 10:31
fonte

Leggi altre domande sui tag