Index Labels

Cómo almacenar de forma segura, información sensible utilizando Android

. .



La seguridad en Android es uno de los temas principales de preocupación para usuarios y desarrolladores, y uno de los asuntos en los que más ha trabajado Google en los últimos años. Concretamente, nos preocupa el hecho de cómo almacenar información sensible en nuestros dispositivos móviles.


Android keystore como almacenamiento seguro


El ejemplo vivo de ello es precisamente el Android keystore, un sistema de almacenamiento de credenciales seguros a nivel de sistema operativo. De esta forma, podremos crear un nuevo par de claves privada y pública y utilizarla para encriptar claves de aplicaciones de forma segura.

Pero el keystore no es precisamente un mecanismo para guardar claves directamente. Se trata de un contenedor seguro, que puede ser utilizado por las aplicaciones para almacenar claves privadas. Y lo interesante aquí es que cada aplicación sólo podrá conseguir las claves asociadas a sí misma, no las de otras aplicaciones.

Además, la propia pantalla de bloqueo del usuario es utilizada para encriptar la Keystore, por lo que cuando la pantalla está desbloqueada, dicha información está inaccesible, lo que debería llevarnos a pensar como desarrolladores en que esta información no estaría accesible en servicios en segundo plano.

Este mecanismo fue introducido en Android 4.3 (API 18), aunque el concepto de Keystore ya fue introducido desde el origen de Android, aunque por entonces restringido a VPN y WiFis.

Utilizando la Keystore de Android

La mejor manera de entender este mecanismo es sabiendo utilizar dicha Keystore como programadores.

Para ello, debemos tener claro en primer lugar que debemos conseguir una referencia a la Keystore, la cual inicializamos:


Keystore.getInstance("AndroidKeyStore"); keystore.load(null)


Una vez hecho esto, ya podríamos empezar por ejemplo a listar las claves, para lo cual podríamos utilizar un método como el siguiente:

private void refreshKeys() { keyAliases = new ArrayList<>(); try { Enumeration<String> aliases = keyStore.aliases(); while (aliases.hasMoreElements()) { keyAliases.add(aliases.nextElement()); } } catch(Exception e) {} if(listAdapter != null) listAdapter.notifyDataSetChanged(); }


Aunque también podríamos añadir nuevas claves, para lo que necesitaríamos utilizar un KeyPairGenerator, el cual nos permite crear nuevos pares de claves:



CODIGO ---------------------------------------------------------------------------


public void createNewKeys(View view) { String alias = aliasText.getText().toString(); try { // Create new key if needed if (!keyStore.containsAlias(alias)) { Calendar start = Calendar.getInstance(); Calendar end = Calendar.getInstance(); end.add(Calendar.YEAR, 1); KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(this) .setAlias(alias) .setSubject(new X500Principal("CN=Sample Name, O=Android Authority")) .setSerialNumber(BigInteger.ONE) .setStartDate(start.getTime()) .setEndDate(end.getTime()) .build(); KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore"); generator.initialize(spec); KeyPair keyPair = generator.generateKeyPair(); } } catch (Exception e) { Toast.makeText(this, "Exception " + e.getMessage() + " occured", Toast.LENGTH_LONG).show(); Log.e(TAG, Log.getStackTraceString(e)); } refreshKeys(); }
------------------------------------------------------------------------------------------



También podríamos eliminar claves con tan sólo llamar al método delete Entry. Además podemos encriptar y desencriptar texto utilizando la clave pública, entre otras opciones.

Pero si quieres entrar a fondo en este tema, lo mejor que puedes hacer es acudir a este completo ejemplo de código para utilizar la KeyStore de Android:


¿A qué esperas para empezar a jugar con el código y aprender sobre este mecanismo de seguridad que tantas posibilidades ofrece?


Fuente:Androidauthority

Si te gusto este artículo, no olvides darle Like, comentar, y compartir el tus redes sociales.

TecnoInfoRD:
Instagram

También puedes descargar nuestra Aplicación para Android...
Opciones de descarga:
1.- Android Creator: 
http://bit.ly/TecnoInfoRD-App
 2.- MEGA: 
http://bit.ly/TecnoInfoRD-V2

Translate - Traductor

TecnoInfoRD-Radio

----------------------------------------

SUSCRIBETE AL CANAL EN YOUTUBE

TecnoInfoRD en Amazon

Visitantes Totales

Noticias Anteriores

Entrada destacada

Noticias sobre el nuevo Samsung Galaxy S8

TecnoInfoRD en Ivoox

TecnoInfoRD - RSS

TecnoInfoRD - YouTube

Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación para mostrarle publicidad personalizada y realizar análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. OK Más información | Y más