È possibile implementare un'implementazione sicura di ssl pinning senza la convalida lato server?

1

È noto infatti che in Android ci sono un paio di strumenti che possono aggirare il pin ssl come Justtrustme, Android-SSL-TrustKiller. In iOS ci sono ios-SSL-Killswitch.

Ho avuto 3 opzioni per implementare il pin ssl nella mia applicazione.

  1. Uso di un semplice HttpsURLConnection con un PinningTrustManager
  2. Uso di un semplice HttpClient con un PinningTrustManager
  3. Lavorare con PinningTrustManager e PinningSSLSocketFactory di più direttamente

Ho provato tutte e 3 le opzioni, tuttavia è stato possibile aggirare questo meccanismo. Ho trovato che l'ultima opzione era un po 'sicura rispetto ad altri due come pochi strumenti non erano in grado di bypassare, ma uno ha fatto.

Ecco il mio esempio di pseudo codice per il blocco.

           // Get an instance of the Bouncy Castle KeyStore format
           KeyStore trusted = KeyStore.getInstance("BKS");
           // Get the raw resource, which contains the keystore with
           // your trusted certificates (root and any intermediate certs)
           InputStream   in = getResources().openRawResource(R.raw.key);
           try {
               // Initialize the keystore with the provided trusted certificates
               // Provide the password of the keystore
               trusted.load(in, KEYSTORE_PASSWORD);
           } finally {
               in.close();
           }

           String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
           TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
           tmf.init(trusted);

Esiste una soluzione sicura almeno della migliore soluzione disponibile per l'implementazione?

    
posta FrOgY 06.09.2016 - 13:30
fonte

1 risposta

5

No, non esiste una soluzione sicura. Tutti gli strumenti menzionati che ignorano il blocco dei certificati SSL a seconda dell'accesso root.

Se il telefono è root / jailbroken non è possibile per un'applicazione applicare alcunché. Poiché la tua applicazione è solo un software in esecuzione su quel sistema, la persona che possiede il sistema (e che è l'utente su dispositivi jailbroken / rooted) può sempre aggirare i tuoi meccanismi di sicurezza. L'unica cosa che puoi fare è rendere più dura la vita della persona che vuole disabilitare il certificato SSL. Un modo è utilizzare un rilevamento jailbreak / root e bloccare i dispositivi jailbroken / rooted.

    
risposta data 06.09.2016 - 14:11
fonte

Leggi altre domande sui tag