Aggiunta della propria implementazione di crittografia su Android

2

Poiché Android consente l'implementazione della crittografia Java e nativa, vorrei sapere come fornire una particolare implementazione di algoritmi crittografici (ad esempio, ad esempio, solo RSA). Quale sarebbe il modo migliore (in termini di facilità di sviluppo, facilità di integrazione, facilità d'uso) per fornirlo?

È un pacchetto Java Crypto Provider (JCE)? O è un motore OpenSSL?

Il codice nativo ha il vantaggio di essere più veloce. Cosa parla di JCE?

    
posta user907810 28.08.2013 - 15:28
fonte

1 risposta

2

Generalmente non vorresti aggiungere la tua implementazione crittografica di nessun protocollo o algoritmo sicuro. Ci sono alcuni motivi per questo:

  1. È improbabile che codifichi un'implementazione corretta al primo tentativo.
  2. Il tuo codice non è stato esaminato per anni come molte librerie di crittografia open source.
  3. Molto probabilmente il tuo codice sarà più lento indipendentemente dal motore JCE o OpenSSL perché altre librerie sono già state ottimizzate per la velocità.

Android fornisce un'API per interagire con la libreria OpenSSL che è già presente. Questo è chiamato Spongy Castle , che è una versione modificata di Bouncy Castle. Gli algoritmi supportati dovrebbero già soddisfare le tue esigenze. Ecco alcuni codice di esempio che utilizzano l'API.

Detto questo, e ti incoraggio a non utilizzare la tua implementazione , ci sono due percorsi che puoi percorrere.

JCE personalizzato
Questo probabilmente è più alto nel tuo vicolo e cosa vuoi fare. Ecco un link a Come implementare un provider . Qui vengono fornite le classi per ciascun servizio di crittografia che si desidera implementare. Molto probabilmente dovrai firmare il tuo provider e fornire alla tua applicazione la chiave pubblica per verificarlo.

Aggiunta di una libreria condivisa
Un modo più divertente (secondo me comunque) è creare la tua crittografia-implementazione aggiungendo una crittografia condivisa ad Android e fornire un JNI per la tua applicazione per usarlo. La libreria principale dovrebbe essere scritta in C e cross-compiled per ARM utilizzando NDK di Android. Dovrai quindi scrivere un Java Provider (JNI) che possa essere registrato con Dalvik affinché la tua applicazione possa eseguirlo. Ecco un esempio di installazione di una diversa libreria crittografica sul tuo telefono.

Questo ha lo svantaggio di dover ricostruire Android e far lampeggiare il tuo dispositivo. Non ideale per l'installazione di un'applicazione da Google Play.

    
risposta data 07.10.2014 - 16:57
fonte

Leggi altre domande sui tag