Armazenamento local criptografadoO tempo de execução do Adobe® AIR® fornece um armazenamento local criptografado (ELS) persistente para cada aplicativo AIR instalado no computador de um usuário. Isto permite que você salve e recupere dados armazenados no disco local do usuário em formato criptografado que não pode ser facilmente decifrado por outros usuários. Um armazenamento local criptografado separado é usado para cada aplicativo AIR, e cada aplicativo AIR usa um armazenamento local criptografado separado para cada usuário. Nota: Além do armazenamento local criptografado, o AIR também fornece criptografia para conteúdo armazenado em bancos de dados do SQL. Para obter detalhes, consulte Uso da criptografia com bancos de dados SQL.
Você pode querer utilizar o armazenamento local criptografado para colocar em cache informações que precisam ser protegidas como, por exemplo, credenciais de login para serviços web. O ELS é apropriado para armazenar informações que precisam ser mantidas e forma particular. No entanto, ele não protege os dados contra outros processos executados da mesma conta de usuário. Por esse motivo, ele não é apropriado para proteger dados secretos de aplicativos como, por exemplo, informações de DRM e chaves de criptografia. O AIR usa o DPAPI no Windows, o KeyChain no Mac OS e o KeyRing ou KWallet no Linux para associar o armazenamento local criptografado a cada aplicativo e usuário. O armazenamento local criptografado usa a criptografia AES-CBC de 128 bits. As informações no armazenamento local criptografado estão disponíveis apenas a conteúdo de aplicativos AIR na caixa de proteção de segurança do aplicativo. Se você atualizar um aplicativo AIR, a versão atualizada mantém o acesso dos dados existentes no armazenamento local criptografado, a não ser que:
Limitações do armazenamento local criptografadoOs dados no armazenamento local criptografado são protegidos pelas credenciais da conta de sistema operacional do usuário. Outras entidades não podem acessar os dados no armazenamento a menos que possam fazer login como aquele usuário. No entanto, os dados não ficam protegidos contra o acesso de outros aplicativos executados por um usuário autenticado. Como o usuário deve ser autenticado para que esses ataques funcionem, os dados privados do usuário ainda estão protegidos (a menos que a própria conta do usuário esteja comprometida). No entanto, os dados que o seu aplicativo deseja manter em segredo, como as chaves usadas para licenciamento ou o gerenciamento de direitos digitais, não estão seguros. Assim, o ELS não é um local adequado para armazenar essas informações. Isto é somente um local apropriado para armazenar dados particulares do usuário como, por exemplo, senhas. Os dados no ELS podem ser perdidos por diversos motivos. Por exemplo, o usuário pode desinstalar o aplicativo e excluir o arquivo criptografado. Ou o ID do publicador pode ser alterado como resultado de uma atualização. Dessa forma, o ELS deve ser tratado como um cache particular e não um armazenamento de dados permanente. O parâmetro stronglyBound foi descontinuado e não deve ser definido como true. Nenhuma proteção adicional é fornecida aos dados se o parâmetro for definido como true. Ao mesmo tempo, o acesso aos dados é perdido sempre que um aplicativo é atualizado — mesmo se o ID do publicador permanecer o mesmo. O armazenamento local criptografado poderá ficar mais lento se os dados armazenados excederem 10 MB. Quando você desinstala um aplicativo AIR, o desinstalador não exclui os dados armazenados no armazenamento local criptografado. Entre as práticas recomendadas para usar o ELS estão:
Inclusão de dados no armazenamento local criptografadoUse o método estático setItem() da classe EncryptedLocalStore para armazenar os dados no armazenamento local. Os dados são armazenados em uma tabela de hash, usando seqüências de caracteres como chaves, com os dados armazenados como matrizes de bytes. Por exemplo, o código a seguir armazena uma seqüência de caracteres no armazenamento local criptografado: var str:String = "Bob"; var bytes:ByteArray = new ByteArray(); bytes.writeUTFBytes(str); EncryptedLocalStore.setItem("firstName", bytes); O terceiro parâmetro do método setItem(), o parâmetro stronglyBound, é opcional. Quando este parâmetro está definido em true, o armazenamento local criptografado associa o item armazenado ao aplicativo aos bits e à assinatura do aplicativo AIR: var str:String = "Bob"; var bytes:ByteArray = new ByteArray(); bytes.writeUTFBytes(str); EncryptedLocalStore.setItem("firstName", bytes, false); Para um item armazenado com stronglyBound definido como true, as chamadas subseqüentes a getItem() apenas são bem-sucedidas se o aplicativo AIR de chamada for idêntico ao aplicativo de armazenamento (se nenhum dado nos arquivos do diretório do aplicativo tiver sido alterado). Se o aplicativo AIR de chamada for diferente do aplicativo de armazenamento, o aplicativo lançará uma exceção de erro quando você chamar getItem() para um item fortemente ligado. Se você atualizar seu aplicativo, ele não será capaz de ler os dados fortemente ligados previamente gravados no armazenamento local criptografado. Se o parâmetro stronglyBound estiver definido como false (o padrão), só o ID da editora precisa se manter igual para que o aplicativo leia os dados. Os bits do aplicativo podem mudar (e precisam ser atribuídos pelo mesmo editor), mas não precisam ser exatamente os mesmos bits que eram no aplicativo que armazenou os dados. Aplicativos atualizados com o mesmo ID do publicado do original podem continuar a acessar os dados. Nota: Na prática, configurar stronglyBound para true não adiciona nenhuma proteção adicional aos dados. Um usuário mal intencionado ainda pode alterar um aplicativo para obter acesso a itens gravados no ELS. Além disso, os dados são protegidos de ameaças externas, mesmo se stronglyBound estiver definiddo em true ou false. Por esses motivos, não encorajamos definir stronglyBound em true.
Acesso aos dados no armazenamento local criptografadoVocê pode recuperar um valor do armazenamento local criptografado usando o método EncryptedLocalStore.getItem(), como no seguinte exemplo: var storedValue:ByteArray = EncryptedLocalStore.getItem("firstName"); trace(storedValue.readUTFBytes(storedValue.length)); // "Bob" Remoção de dados do armazenamento local criptografadoVocê pode excluir um valor do armazenamento local criptografado usando o método EncryptedLocalStore.removeItem(), como no seguinte exemplo: EncryptedLocalStore.removeItem("firstName"); Você pode limpar todos os dados do armazenamento local criptografado chamando o método EncryptedLocalStore.reset(), como no seguinte exemplo: EncryptedLocalStore.reset(); |
![]() |