Krypterad lokal lagringsplats

Med klassen EncryptedLocalStore (ELS) får du ett lokalt lagringsutrymme som du kan använda som ett litet cache-minne för ett programs egna data. ELS-data kan inte delas mellan program. Syftet med ELS är att program enkelt ska kunna lagra återskapade objekt, såsom inloggningsuppgifter och annan privat information. ELS-data ska inte anses som permanenta. Se även "Begränsningar för den krypterade lokala lagringsplatsen" och "God praxis" nedan.

Obs! Förutom den krypterade lokala lagringsplatsen tillhandahåller AIR kryptering för innehåll som lagras i SQL-databaser. Mer information finns i avsnittet Använda kryptering med SQL-databaser .

Du bör använda den krypterade lokala lagringsplatsen för att cachelagra information som måste vara skyddad, till exempel inloggningsuppgifter för webbtjänster. Den krypterade lokala lagringsplatsen lämpar sig för att lagra information som måste hållas privat. Den skyddar emellertid inte data från processer som körs under samma användarkonto. Det lämpar sig således inte för att skydda hemliga programdata, som till exempel DRM- eller kryperingsnycklar.

På datorplattformar använder AIR DPAPI i Windows, KeyChain i Mac OS och KeyRing i Linux för att koppla den krypterade lokala lagringsplatsen till varje program och användare. På den krypterade lokala lagringsplatsen används AES-CBC 128-bitarskryptering.

På Android krypteras inte data lagrade med klassen EncryptedLocalStorage. I stället skyddas data av den användarsäkerhet som finns i operativsystemet. I operativsystemet Android tilldelas alla program ett separat användar-ID. Program har endast åtkomst till egna filer och filer skapade på publika platser (till exempel på utbytbara minneskort). Observera att på "öppna" Android-enheter HAR program som körs med rotprivilegier åtkomst till filer i andra program. På en "öppen" enhet kommer det krypterade lokala lagret inte att vara så skyddat som det är på en enhet som inte har "öppnats".

Informationen på den krypterade lokala lagringsplatsen är bara tillgänglig för AIR-programinnehåll i säkerhetssandlådan application.

Om du uppdaterar ett AIR-program kommer den uppdaterade versionen att få åtkomst till befintliga data i den krypterade lokala lagringsplatsen såvida inte:

  • objekten lades till med parametern stronglyBound satt till true

  • de befintliga och uppdaterade versionerna både är publicerade före AIR 1.5.3 och om uppdateringen är signerad med en migreringssignatur..

Begränsningar för den krypterade lokala lagringsplatsen

Data i den krypterade lokala lagringsplatsen skyddas av kontoinställningarna i användarens operativsystem. Andra kommer inte åt informationen på lagringsplatsen såvida de inte kan logga in som den aktuelle användaren. Informationen är emellertid inte skyddad från andra program som körs av en godkänd användare.

Eftersom användaren måste autentiseras för att de här attackerna ska kunna genomföras är användarens privata data fortfarande skyddade (om inte själva användarkontot har hackats). Data som programmet kan behöva hemlighålla för användaren, till exempel nyckelord för licensiering eller DRM, är dock inte skyddade. Den krypterade lokala lagringsplatsen är alltså inte rätt plats att spara den typen av information. Den lämpar sig bara för att lagra en användares privata data, till exempel lösenord.

Data kan av olika anledningar tas bort från den krypterade lokala lagringsplatsen. Användaren kan till exempel avinstallera programmet och ta bort den krypterade filen. Dessutom kan utgivar-ID ändras efter en uppdatering. Den krypterade lokala lagringsplatsen bör alltså behandlas som en privat cachelagringsplats och inte som en permanent datalagringsplats.

Parametern stronglyBound är föråldrad och ska inte sättas till true . Om du sätter parametern till true innebär det inte att du får något extra skydd för dina data. Samtidigt förlorar du åtkomsten till data när programmet uppdateras, även om du behåller utgivar-ID:t.

Den krypterade lokala lagringsplatsen kan prestera sämre om lagrade data överstiger 10 MB.

Om du avinstallerar ett AIR-program tas inte data som har lagrats på den krypterade lokala lagringsplatsen bort.

God praxis

De bästa sätten att använda den krypterade lokala lagringsplatsen är:

  • Använd den krypterade lokala lagringsplatsen för att spara känsliga användardata, som lösenord (ange stronglyBound som false).

  • Använd inte den krypterade lokala lagringsplatsen för att spara programhemligheter, som DRM-nycklar eller licensieringstokens.

  • Erbjud ett sätt för programmet att återskapa data lagrade på lagringsplatsen om dessa data tas bort, till exempel genom att uppmana användaren att ange kontouppgifterna på nytt om det skulle behövas.

  • Använd inte parametern stronglyBound .

  • Migrera inte lagrade objekt under en uppdatering om du anger att stronglyBound ska vara true . Återskapa i stället data efter en uppdatering.

  • Spara endast små mängder data. Använd en AIR SQL-databas med kryptering för större datamängder.

Lägga till data på den krypterade lokala lagringsplatsen

Använd den statiska metoden setItem() i klassen EncryptedLocalStore för att spara data på den krypterade lokala lagringsplatsen. Data lagras i en hashtabell, med strängar som nycklar, där data lagras som bytearrayer.

Följande kod lagrar en sträng på den krypterade lokala lagringsplatsen:

var str:String = "Bob"; 
var bytes:ByteArray = new ByteArray(); 
bytes.writeUTFBytes(str); 
EncryptedLocalStore.setItem("firstName", bytes);

Den tredje parametern för metoden setItem() , parametern stronglyBound , är valfri. När den här parametern är inställd på true binds det lagrade objektet av den krypterade lokala lagringsplatsen till det lagrade AIR-programmets digitala signatur och bitar:

var str:String = "Bob"; 
var bytes:ByteArray = new ByteArray(); 
bytes.writeUTFBytes(str); 
EncryptedLocalStore.setItem("firstName", bytes, false); 

För ett objekt som lagras med stronglyBound inställt på true lyckas efterföljande anrop till getItem() bara om det anropande AIR-programmet är identiskt med det lagrande programmet (om inga datafiler i programkatalogen har ändrats). Om det anropande AIR-programmet inte är identiskt med det lagrande programmet, returneras ett Error-undantag när du anropar getItem() för ett starkt bundet objekt. Om du uppdaterar programmet går det inte att läsa starkt bundna data som tidigare har skrivits till den krypterade lokala lagringsplatsen. Att ställa in true för stronglyBound på mobila enheter ignoreras eftersom parametern alltid hanteras som false .

Om parametern stronglyBound anges som false (standard) behöver bara utgivar-ID:t förbli oförändrat för att programmet ska kunna läsa data. Bitarna i programmet kan ändras (och de måste signeras av samma utgivare), men de behöver inte vara exakt samma bitar som i det program som sparade informationen. Uppdaterade program med samma utgivar-ID som originalet har fortfarande åtkomst till informationen.

Obs! I praktiken innebär det inget ökat dataskydd om du ställer in stronglyBound true . En illvillig användare kan fortfarande göra ändringar i ett program för att få åtkomst till objekt som lagrats på den krypterade lokala lagringsplatsen. Data skyddas dessutom från externa, icke användarrelaterade hot lika effektivt oavsett om stronglyBound är inställt på true eller false . Därför bör du inte ställa in stronglyBound true .

Komma åt data på den krypterade lokala lagringsplatsen

Du kan hämta ett värde från den krypterade lokala lagringsplatsen genom att använda metoden EncryptedLocalStore.getItem() , som i följande exempel:

var storedValue:ByteArray = EncryptedLocalStore.getItem("firstName"); 
trace(storedValue.readUTFBytes(storedValue.length)); // "Bob" 

Ta bort data från den krypterade lokala lagringsplatsen

Du kan ta bort ett värde från det krypterade lokala arkivet genom att använda metoden EncryptedLocalStore.removeItem() , som i följande exempel:

EncryptedLocalStore.removeItem("firstName"); 

Du kan radera alla data från den krypterade lokala lagringsplatsen genom att anropa metoden EncryptedLocalStore.reset() , som i följande exempel:

EncryptedLocalStore.reset();