Almacenamiento local cifradoEl motor de ejecución de Adobe® AIR® ofrece un almacén local cifrado (ELS)persistente para cada aplicación de AIR instalada en el ordenador del usuario. Esto permite que usted pueda guardar y recuperar datos guardados en el disco duro local del usuario en un formato cifrado que no puedan descifrar fácilmente otros usuarios. Se utiliza un almacén local cifrado e independiente para cada aplicación de AIR, y cada aplicación de AIR usa un almacén local cifrado e independiente para cada usuario. Nota: además del almacén local cifrado, AIR también proporciona cifrado para el contenido almacenado en bases de datos SQL. Para obtener más información, consulte Uso del cifrado con bases de datos SQL.
El almacén local cifrado resulta práctico para guardar información que debe estar protegida, como los datos de inicio de sesión para servicios web. EL ELS está indicado para almacenar información que deba permanecer privada para otros usuarios. Sin embargo, no protege los datos de otros procesos ejecutados en la misma cuenta de usuario. Por esto, no está indicado para proteger datos secretos de aplicaciones, como DRM o claves de cifrado. AIR utiliza DPAPI en Windows, KeyChain en Mac OS y KeyRing o KWallet en Linux para asociar el almacén local cifrado a todas las aplicaciones y usuarios. El almacén local cifrado utiliza cifrado AES-CBC de 128 bits. La información en el almacén local cifrado sólo está disponible para contenido de aplicaciones de AIR en el entorno limitado de seguridad de la aplicación. Si actualiza una aplicación de AIR, la versión actualizada conserva el acceso a todos los datos existentes en el almacén local cifrado a no ser que:
Limitaciones del almacén local cifradoLos datos del almacén local cifrado se protegen con las credenciales de la cuenta en el sistema operativo del usuario. Otras entidades no pueden acceder a los datos del almacén a menos que puedan iniciar la sesión como usuario. Sin embargo, los datos no están seguros frente al acceso de otras aplicaciones ejecutadas por un usuario autenticado. El usuario debe autenticarse para que funcionen estos ataques, por lo que los datos privados del usuario aún están protegidos (a no ser que la propia cuenta de usuario sea vulnerable). Sin embargo, la información que la aplicación pueda desear mantener en secreto para los usuarios, como las claves utilizadas para la administración de derechos digitales o de licencia, no está segura. Por lo tanto, el almacén local cifrado no es la ubicación adecuada para almacenar este tipo de información. Sólo resulta un lugar apropiado para almacenar datos privados del usuario como, por ejemplo, contraseñas. Los datos del ELS se pueden perder por muchos motivos. Por ejemplo, el usuario puede desinstalar la aplicación y eliminar el archivo cifrado. O el ID de edición podría cambiarse como resultado de la actualización. Por ello, el ELS debe tratarse como una memoria caché privada, no como espacio de almacenamiento de datos permanente. El parámetro stronglyBound ya no se utiliza y no debe establecerse en true. Establecer el parámetro como true no aporta protección adicional a los datos. Al mismo tiempo, se pierde el acceso a los datos cada vez que se actualiza la aplicación, incluso si el ID de edición permanece invariable. Es posible que el almacén local cifrado funcione más lento si los datos guardados superan los 10 MB. Al desinstalar una aplicación de AIR, el programa de desinstalación no elimina los datos que tenga guardados el almacén local cifrado. Entre las mejores prácticas para el uso del almacén local cifrado (ELS) se incluyen:
Cómo añadir datos al almacén local cifradoUtilice el método estático setItem() de la clase EncryptedLocalStore para guardar datos en el almacén local. Los datos se guardan en una tabla hash, utilizando cadenas como claves, con los datos guardados en forma de conjuntos de bytes. El código del ejemplo siguiente guarda una cadena en el almacén local cifrado: var str:String = "Bob";
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(str);
EncryptedLocalStore.setItem("firstName", bytes);
El tercer parámetro del método setItem(), el parámetro stronglyBound, es opcional. Cuando este parámetro se establece como true, el almacén local cifrado vincula el elemento guardado con los bits y la firma digital de la aplicación de AIR: var str:String = "Bob";
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(str);
EncryptedLocalStore.setItem("firstName", bytes, false);
Para un elemento guardado con stronglyBound definido en true, las llamadas posteriores a getItem() sólo tendrán éxito si la aplicación de AIR que llama es idéntica a la aplicación de almacenamiento (si no se ha cambiado ningún dato en los archivos del directorio de la aplicación). Si la aplicación de AIR que llama no es la misma que la que realiza el almacenamiento, la aplicación emite una excepción Error cuando se llama a getItem() para un elemento fuertemente vinculado. Si se actualiza la aplicación, ésta no podrá leer datos fuertemente vinculados que se habían escrito en el almacén local cifrado. Si el parámetro stronglyBound es establece en false (valor predeterminado), únicamente el ID de editor debe ser el mismo para que la aplicación lea los datos. Los bits de la aplicación pueden cambiar (y debe firmarlos el mismo editor), pero no es necesario que sean exactamente los mismos bits que estaban en la aplicación que almacenó los datos. Las aplicaciones actualizadas con el mismo ID de edición que el original pueden seguir accediendo a los datos. Nota: en la práctica, establecer stronglyBound como true no añade ninguna protección adicional a los datos. Un usuario “malintencionado” podría alterar la aplicación para tener acceso a los elementos guardados en el ELS. Además, los datos tienen el mismo nivel de protección frente a amenazas externas de usuarios ajenos si se establece stronglyBound como true o como false. Por estos motivos, establecer stronglyBound como true no se recomienda.
Acceso a los datos del almacén local cifradoSe puede recuperar un valor del almacén local cifrado utilizando el método EncryptedLocalStore.getItem(), como en el siguiente ejemplo: var storedValue:ByteArray = EncryptedLocalStore.getItem("firstName");
trace(storedValue.readUTFBytes(storedValue.length)); // "Bob"
Eliminación de los datos del almacén local cifradoSe puede eliminar un valor del almacén local cifrado utilizando el método EncryptedLocalStore.removeItem(), como en el siguiente ejemplo: EncryptedLocalStore.removeItem("firstName");
Para borrar todos los datos del almacén local cifrado, llame al método EncryptedLocalStore.removeItem(), como en el siguiente ejemplo: EncryptedLocalStore.reset(); |
|