Domanda

Ho bisogno di stabilire una connessione SSL HTTPS 2 vie dalla mia applicazione iPhone al server del cliente. Tuttavia non vedo alcun modo sicuro per fornire i certificati lato client per l'applicazione (si tratta di un e-banking app, per cui la sicurezza è davvero un problema). Da quello che ho trovato finora l'unico modo in cui l'applicazione sarebbe in grado di accedere al certificato è quello di fornire pre-bundeled con l'applicazione stessa, o esporre un URL da cui è possibile recuperare (IPhone app con certs client SSL ).

Il fatto è che nessuno di questi due modi prevenire alcuni di terze parti per ottenere il certificato, che se accettata come un rischio elimina la necessità di 2-way SSL (dal momento che chiunque può avere il certificato client).

Il protocollo di protezione intero dovrebbe essere simile a questo:
- HTTPS a 2 vie SSL per autenticare l'applicazione
- (coppia di chiavi lato client generato in questa fase) OTP (token) di registrazione utente basata
- SOAP / XML WSS-Signature (richieste firmate dai le chiavi generate in precedenza)

Qualche idea su come stabilire il primo strato di sicurezza (HTTPS)?

È stato utile?

Soluzione

Ok, quindi a rispondere alla mia domanda ...

Si è scoperto che la sicurezza non ha fissato scala di misura. I requisiti di sicurezza sono soddisfatti fino a quando il prezzo per la frenatura del sistema è significativamente al di sopra del premio che si potrebbe ottenere per farlo.

Nella mia situazione stiamo parlando di sistema di e-banking, ma con un po 'bassi limiti mensili (paio di migliaia di dollari). Come ho detto nella mia interrogazione non ci sarebbe un ulteriore livello di sicurezza al di sopra del protocollo HTTPS che sarà caratterizzato da WSS XML-firme. Il processo di registrare l'utente e accettando la sua chiave pubblica è anche fatto in più fasi. Nella prima fase l'utente invia il suo numero di telefono insieme con un merluzzo recuperate in qualche modo dal mio cliente. Poi uno SMS viene inviato per l'utente con un codice di conferma. L'utente inserisce il codice di conferma in un calcolatore OTP che produrrebbe codice OTP che identificherà l'utente. Quindi la chiave pubblica viene inviata al server di insieme con il codice OTP. Da qui in poi ogni richiesta sarebbe stato firmato dalla controparte privata della chiave pubblica inviata al server precedente.

Quindi, la più grande debolezza per l'intero processo è quella di qualcuno ingegneri inversa l'applicazione e recupera il certificato client utilizzato per la SLL. L'unico problema derivante da questo è che qualcuno potrebbe osservare le transazioni degli utenti. Tuttavia, al fine di qualcuno per fare una transazione che avrebbe bisogno di chiave privata dell'utente, che è generato, crittografato e memorizzato nel portachiavi. E il prezzo per la frenatura questo livello di sicurezza è molto alto.

sarà inoltre pensare a come proteggere i dati degli utenti su un livello più alto (per esempio usando WSS Encryption), ma per la cosa partenza ho ci sono buone con la soluzione attuale.

qualsiasi opinione?

Per quanto riguarda

Altri suggerimenti

https in realtà non funziona in questo modo. In poche parole, si collega ad un server sicuro in cui i certificati sono firmati da un'autorità ben noto.

Se si utilizza Mele (iPhone) classi per questo, sono disposti ad accettare solo i certificati di 'buoni'. Con buona, voglio dire quello che Apple ritiene accettabile. Se non vengono utilizzati (ci sono alternative nel SDK), non sarà in grado di connettersi (ad eccezione, forse, nel caso in cui si dispone di sviluppatori un 'Enterprise' licenza - ma non posso dire che con certezza al 100%, come non ho guardato abbastanza in questa licenza per essere sicuri)

Per continuare, utilizzare la connessione https al tuo sito web correttamente firmato e poi istituire una sorta di login con un costruito in username / password, o challenge / response basati su l'ID univoco di iPhone (per esempio) e le chiavi di scambio con tale connessione.

Si noti che questo significa che l'applicazione dovrà query per nuovi certificati (ogni connessione / ogni X connessioni / ogni mese / applicazione specificata intervalli) per tenerli aggiornati. È quindi possibile utilizzare questi certificati per la connessione al server più sicuro.

[modifica]

questo post - possono avere ulteriori informazioni su ciò che sei chiedendo di fare

[/ modifica]

[EDIT2]

Si prega di notare che la richiesta è iphone, non OSX - applicazione approvazione negozio è un problema

[/ EDIT2]

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