Full-Disk Encryption

Full-disk encryption is het proces van coderen van alle gebruikersgegevens op een Android toestel met behulp van een versleutelde sleutel. Zodra een apparaat is versleuteld, worden alle door de gebruiker gemaakte gegevens automatisch versleuteld voordat ze op schijf worden vastgelegd en alle gelezen gegevens worden automatisch ontsleuteld voordat ze worden teruggestuurd naar het aanroepende proces.

Volledige-schijfversleuteling werd geïntroduceerd in Android in 4.4, maar Android 5.0 introduceerde de volgende nieuwe functies:

  • Snelle versleuteling, die alleen gebruikte blokken op de gegevenspartitie versleutelt om te voorkomen dat het eerste opstarten veel tijd in beslag neemt. Alleen ext4 en f2fs bestandssystemen ondersteunen op dit moment snelle encryptie.
  • De forceencrypt fstab vlag is toegevoegd om te versleutelen bij de eerste boot.
  • Ondersteuning toegevoegd voor patronen en encryptie zonder wachtwoord.
  • Hardware-gebaseerde opslag van de versleutelingssleutel toegevoegd met behulp van de TEE (Trusted Execution Environment) ondertekeningsmogelijkheid (zoals in een TrustZone). Zie De gecodeerde sleutel opslaan voor meer details.

Voorzichtig: Apparaten die zijn geüpgraded naar Android 5.0 en vervolgens zijn geëncrypteerd, kunnen worden teruggezet naar een niet-geëncrypteerde staat door de fabrieksgegevens te resetten. Nieuwe Android 5.0-apparaten die bij de eerste keer opstarten zijn versleuteld, kunnen niet worden teruggezet naar een onversleutelde status.

Hoe Android full-disk encryptie werkt

Android full-disk encryptie is gebaseerd op dm-crypt, wat een kernelfeature is die werkt op de blokapparaatlaag. Hierdoor werkt versleuteling met Embedded MultiMediaCard (eMMC) en soortgelijke flash-apparaten die zich aan de kernel presenteren als blockdevices. Encryptie is niet mogelijk met YAFFS, die direct praat met een rawNAND flash chip.

Het versleutelingsalgoritme is 128 Advanced Encryption Standard (AES) met codeer-blok-ketting (CBC) en ESSIV:SHA256. De hoofdsleutel wordt versleuteld met128-bit AES via aanroepen naar de OpenSSL bibliotheek. U moet 128 bits of meer gebruiken voor de sleutel (256 is optioneel).

Note: OEM’s kunnen 128-bit of hoger gebruiken om de master key te versleutelen.

In de Android 5.0 release, zijn er vier soorten van encryptie staten:

  • default
  • PIN
  • password
  • pattern

Bij de eerste keer opstarten maakt het apparaat een willekeurig gegenereerde 128-bits hoofdsleutel en hashes deze vervolgens met een standaard wachtwoord en opgeslagen zout. Het standaard wachtwoord is: “default_password “Echter, de resulterende hash is ook ondertekend door een TEE (zoals TrustZone), die een hash van de handtekening gebruikt om de master key te versleutelen.

U kunt het standaard wachtwoord vinden gedefinieerd in het Android Open Source Project cryptfs.cppfile.

Wanneer de gebruiker de PIN/pass of wachtwoord op het apparaat instelt, wordt alleen de 128-bit sleutel opnieuw versleuteld en opgeslagen. (d.w.z.. PIN/wachtwoord/patroonwijzigingen van de gebruiker veroorzaken GEEN herversleuteling van de gebruikersgegevens.) Merk op dat het beheerde apparaat onderworpen kan zijn aan PIN-, patroon- of wachtwoordbeperkingen.

Encryptie wordt beheerd door init en vold.init roept vold aan, en vold stelt eigenschappen in om gebeurtenissen in init te triggeren. Andere delen van het systeem kijken ook naar de eigenschappen om taken uit te voeren zoals status melden, om een wachtwoord vragen, of vragen om een fabrieksreset in het geval van een fatale fout. Om encryptie-functies in vold aan te roepen, gebruikt het systeem de cryptfs-commando’s van het commandoregelprogrammavdc: checkpw,restart, enablecrypto, changepw,cryptocomplete, verifypw, setfield,getfield, mountdefaultencrypted, getpwtype,getpw, en clearpw.

Om /data te versleutelen, te ontsleutelen of te wissen, moet /data niet zijn gemount. Echter, om een gebruikersinterface (UI) te tonen, moet het raamwerk starten en het raamwerk heeft /data nodig om te draaien. Om dit raadsel op te lossen, wordt een tijdelijk bestandssysteem aangekoppeld op /data. Dit laat Android toe om te vragen naar wachtwoorden, vooruitgang te tonen, of een datawipe voor te stellen indien nodig. Het legt wel de beperking op dat om over te schakelen van het tijdelijke bestandssysteem naar het echte /data bestandssysteem, het systeem elk proces met open bestanden op het tijdelijke bestandssysteem moet stoppen en deze processen opnieuw moet opstarten op het echte /data bestandssysteem. Om dit te doen, moeten alle services in een van de drie groepen zitten: core, main, enlate_start.

  • core: Nooit afsluiten na opstarten.
  • main: Afsluiten en dan opnieuw opstarten nadat het schijfwachtwoord is ingevoerd.
  • late_start: Start pas nadat /data is gedecodeerd en gemount.

Om deze acties te triggeren, is de vold.decrypt eigenschap ingesteld op verschillende strings.Om services te doden en opnieuw te starten, zijn de init commando’s:

  • class_reset: Stopt een service maar staat toe dat het opnieuw wordt gestart met class_start.
  • class_start: Start een service opnieuw op.
  • class_stop: Stopt een dienst en voegt een SVC_DISABLED vlag toe. Gestopte services reageren niet op class_start.

Flows

Er zijn vier flows voor een gecodeerd apparaat. Een apparaat wordt slechts eenmaal versleuteld en volgt daarna een normale boot flow.

  • Versleutel een apparaat dat nog niet versleuteld is:
    • Sleutel een nieuw apparaat met forceencrypt: Verplichte versleuteling bij eerste opstart (vanaf Android L).
    • Versleutel een bestaand apparaat: Door gebruiker geïnitieerde versleuteling (Android K en eerder).
  • Boot een gecodeerd apparaat:
    • Opstarten van een gecodeerd apparaat zonder wachtwoord: Opstarten van een gecodeerd apparaat waarvoor geen wachtwoord is ingesteld (relevant voor apparaten met Android 5.0 en later).
    • Opstarten van een gecodeerd apparaat met een wachtwoord: opstarten van een gecodeerd apparaat met een ingesteld wachtwoord.

Naast deze stromen kan het apparaat ook niet /data versleutelen.Elk van de stromen wordt hieronder in detail uitgelegd.

Encrypt een nieuw apparaat met forceencrypt

Dit is de normale eerste boot voor een Android 5.0 apparaat.

  1. Detecteer onversleuteld bestandssysteem met forceencrypt vlag

    /data is niet versleuteld maar moet dat zijn omdat forceencrypt het verplicht stelt.Unmount /data.

  2. Start encryptie /data

    vold.decrypt = "trigger_encryption" triggers init.rc, die vold zal veroorzaken om /data te encrypten zonder wachtwoord.(Geen is ingesteld omdat dit een nieuw apparaat moet zijn.)

  3. Mount tmpfs

    vold mount een tmpfs /data (met de tmpfs opties vanro.crypto.tmpfs_options) en stelt de eigenschap vold.encrypt_progress in op 0.vold prepeares de tmpfs /data voor het booten van een gecodeerd systeem en stelt de eigenschap vold.decrypt in op: trigger_restart_min_framework

  4. Toon kader om voortgang te tonen

    Omdat het apparaat vrijwel geen gegevens heeft om te versleutelen, zal de voortgangsbalk vaak niet echt verschijnen omdat het versleutelen zo snel gaat. Zie Een bestaand apparaat versleutelen voor meer details over de voortgangs UI.

  5. Wanneer /data is versleuteld, haalt u het framework

    vold naar beneden en zet vold.decrypt optrigger_default_encryption waardoor dedefaultcrypto service wordt gestart. (Dit start de onderstaande stroom voor het monteren van standaard gecodeerde gebruikersgegevens.) trigger_default_encryption controleert het coderingstype om te zien of /data is gecodeerd met of zonder wachtwoord. Omdat Android 5.0 apparaten versleuteld zijn bij de eerste keer opstarten, zou er geen wachtwoord ingesteld moeten zijn; daarom ontsleutelen en mounten we /data.

  6. Mount /data

    init mounten dan /data op een tmpfs RAMDisk met parameters die het oppikt van ro.crypto.tmpfs_options, die ingesteld is in init.rc.

  7. Start framework

    Stel vold in op trigger_restart_framework, die doorgaat met het gebruikelijke boot proces.

Versleutel een bestaand apparaat

Dit is wat er gebeurt wanneer u een niet-versleuteld Android K of ouder apparaat versleuteld dat is gemigreerd naar L.

Dit proces wordt door de gebruiker geïnitieerd en wordt aangeduid als “inplace encryptie” in de code. Wanneer een gebruiker kiest om een apparaat te coderen, zorgt de UI ervoor dat de batterij volledig is opgeladen en de AC-adapter is aangesloten, zodat er genoeg stroom is om het coderingsproces te voltooien.

Waarschuwing: Als het apparaat zonder stroom komt te zitten en wordt uitgeschakeld voordat het versleutelen is voltooid, blijven de bestandsgegevens in een gedeeltelijk versleutelde staat achter. Het apparaat moet in de fabriek worden gereset en alle gegevens zijn verloren.

Om inplace encryptie mogelijk te maken, start vold een lus om elke sector van het echte blok-apparaat te lezen en dan naar het cryptoblok-apparaat te schrijven. vold controleert of een sector in gebruik is alvorens het te lezen en te schrijven, wat encryptie veel sneller maakt op een nieuw apparaat dat weinig tot geen gegevens heeft.

Status van apparaat: Stel ro.crypto.state = "unencrypted" in en voer de on nonencrypted init trigger uit om door te gaan met booten.

  1. Controleer wachtwoord

    De UI roept vold op met het commando cryptfs enablecrypto inplacewaar passwd het vergrendelscherm-wachtwoord van de gebruiker is.

  2. Haal het framework neer

    vold controleert op fouten, geeft -1 terug als het niet kan coderen, en drukt een reden af in het logboek. Als het wel kan coderen, stelt het de eigenschap vold.decryptin op trigger_shutdown_framework. Dit zorgt ervoor dat init.rc stopt met de services in de klassen late_start en main.

  3. Maak een crypto-voet
  4. Maak een broodkruimelbestand
  5. Reboot
  6. Detecteer broodkruimelbestand
  7. Start met coderen /data

    vold zet vervolgens de crypto mapping op, waardoor een virtueel cryptoblok-apparaat wordt aangemaakt dat overeenkomt met het echte blok-apparaat, maar elke sector versleutelt wanneer deze wordt geschreven, en elke sector ontsleutelt wanneer deze wordt gelezen. vold maakt vervolgens de crypto metadata aan en schrijft deze weg.

  8. Terwijl het codeert, mount tmpfs

    vold mount een tmpfs /data (met de tmpfs opties van ro.crypto.tmpfs_options) en zet de propertyvold.encrypt_progress op 0. vold bereidt de tmpfs/data voor op het booten van een gecodeerd systeem en zet de propertyvold.decrypt op: trigger_restart_min_framework

  9. Breng framework naar boven om voortgang te tonen

    trigger_restart_min_framework zorgt ervoor dat init.rc de main klasse van services start. Wanneer het framework ziet datvold.encrypt_progress op 0 staat, wordt de voortgangsbalkUI opgestart, die deze eigenschap elke vijf seconden opvraagt en een voortgangsbalk bijwerkt. De encryptielus werkt vold.encrypt_progress bij elke keer dat er weer een procent van de partitie wordt versleuteld.

  10. Wanneer /data is versleuteld, werkt u de crypto-voettekst bij

    Wanneer /data met succes is versleuteld, wist vold de vlag ENCRYPTION_IN_PROGRESS in de metagegevens.

    Wanneer het apparaat met succes is ontgrendeld, wordt het wachtwoord vervolgens gebruikt om de hoofdsleutel te versleutelen en wordt de crypto voettekst bijgewerkt.

    Als de reboot om een of andere reden mislukt, stelt vold de eigenschapvold.encrypt_progress in op error_reboot_failed en de UI zou een bericht moeten tonen waarin de gebruiker wordt gevraagd om op een knop te drukken om te herstarten. Dit wordt niet verwacht ooit voor te komen.

Opstarten van een versleuteld apparaat met standaard encryptie

Dit is wat er gebeurt als u een versleuteld apparaat opstart zonder wachtwoord.Omdat Android 5.0 apparaten bij de eerste keer opstarten worden versleuteld, zou er geen wachtwoord moeten worden ingesteld en daarom is dit de standaard encryptie toestand.

  1. Detecteer versleuteld /data zonder wachtwoord

    Detecteer dat het Android-apparaat is versleuteld omdat /data niet kan worden gemount en een van de vlaggen encryptable offorceencrypt is ingesteld.

    vold stelt vold.decrypt in optrigger_default_encryption, waarmee dedefaultcrypto-service wordt gestart. trigger_default_encryption controleert het encryptie type om te zien of /data is gecodeerd met of zonder een wachtwoord.

  2. Decrypt /data

    Creëert het dm-crypt apparaat over het block apparaat zodat het apparaat klaar is voor gebruik.

  3. Mount /data

    vold mounteert dan de gedecodeerde echte /data partitie en bereidt dan de nieuwe partitie voor. Het stelt de eigenschapvold.post_fs_data_done in op 0 en stelt vervolgens vold.decrypt in op trigger_post_fs_data. Dit zorgt ervoor dat init.rc zijn post-fs-data commando’s uitvoert. Deze maken de nodige directories of links aan en stellen vold.post_fs_data_done in op 1.

    Wanneer vold de 1 in die eigenschap ziet, stelt het de eigenschapvold.decrypt in op: trigger_restart_framework. Hierdoor start init.rc opnieuw services in klasse main en start ook services in klasse late_start voor het eerst sinds het opstarten.

  4. Start framework

    Nu start het framework al zijn services op met de gedecodeerde /data, en het systeem is klaar voor gebruik.

Opstarten van een versleuteld apparaat zonder standaard encryptie

Dit is wat er gebeurt als u een versleuteld apparaat opstart dat een ingesteld wachtwoord heeft. Het wachtwoord van het apparaat kan een pin, patroon of wachtwoord zijn.

  1. Gecodeerd apparaat met wachtwoord detecteren

    Detecteer dat het Android-apparaat is gecodeerd omdat de vlagro.crypto.state = "encrypted"

    vold vold.decrypt optrigger_restart_min_framework zet omdat /data is gecodeerd met een wachtwoord.

  2. Mount tmpfs

    init stelt vijf eigenschappen in om de aanvankelijke mount-opties op te slaan die zijn gegeven voor /data met parameters die zijn doorgegeven vanuit init.rc.vold gebruikt deze eigenschappen om de crypto mapping in te stellen:

    1. ro.crypto.fs_type
    2. ro.crypto.fs_real_blkdev
    3. ro.crypto.fs_mnt_point
    4. ro.crypto.fs_options
    5. ro.crypto.fs_flags (ASCII 8-cijferig hex-nummer voorafgegaan door 0x)
  3. Start framework om te vragen om wachtwoord

    Het framework start op en ziet dat vold.decrypt is ingesteld optrigger_restart_min_framework. Dit vertelt het framework dat het opstart op een tmpfs /data schijf en dat het het gebruikerswachtwoord moet krijgen.

    Het moet echter eerst zeker weten dat de schijf goed versleuteld is. Het stuurt het commando cryptfs cryptocomplete naar vold.vold retourneert 0 als de encryptie succesvol is voltooid, -1 bij een interne fout, of-2 als de encryptie niet succesvol is voltooid. vold bepaalt dit door in de crypto metadata te zoeken naar de CRYPTO_ENCRYPTION_IN_PROGRESSflag. Als deze is ingesteld, werd het encryptie proces onderbroken, en zijn er nousable data op het apparaat. Als vold een foutmelding geeft, moet de UI een bericht aan de gebruiker tonen om het apparaat opnieuw op te starten en een fabrieksreset te geven, en de gebruiker een knop geven om dit te doen.

  4. Decodeer data met wachtwoord

    Als cryptfs cryptocomplete succesvol is, toont het framework een UI die vraagt om het schijfwachtwoord. De UI controleert het wachtwoord door het commando cryptfs checkpw naar vold te sturen. Als het wachtwoord correct is (wat wordt bepaald door de ontsleutelde /data succesvol te mounten op een tijdelijke locatie, en dan te unmounten), slaat vold de naam van het ontsleutelde block device op in de propertyro.crypto.fs_crypto_blkdev en retourneert status 0 aan de UI. Als het wachtwoord onjuist is, retourneert het -1 aan de UI.

  5. Stop framework

    De UI toont een crypto boot afbeelding en roept dan vold aan met het commando cryptfs restart. vold zet de propertyvold.decrypt op trigger_reset_main, waardoorinit.rc class_reset main doet. Dit stopt alle services in de hoofdklasse, waardoor de tmpfs /data kan worden ontkoppeld.

  6. Mount /data

    vold mount vervolgens de gedecodeerde echte /data partitie en bereidt de nieuwe partitie voor (die mogelijk nooit is voorbereid als deze was gecodeerd met de wipe optie, welke niet wordt ondersteund op de eerste release). Het zet de eigenschap vold.post_fs_data_done op 0 en stelt vold.decrypt in op trigger_post_fs_data. Dit zorgt ervoor datinit.rc zijn post-fs-data commando’s uitvoert. Zij zullen alle benodigde directories of links aanmaken en vervolgens vold.post_fs_data_done op 1 zetten. Zodra vold de 1 in die eigenschap ziet, stelt het de eigenschap vold.decrypt in optrigger_restart_framework. Dit zorgt ervoor dat init.rc weer services start in klasse main en ook services start in klasselate_start voor de eerste keer sinds het opstarten.

  7. Start full framework

    Nu start het framework al zijn services op met het gedecodeerde /datafilesysteem, en het systeem is klaar voor gebruik.

Failure

Een apparaat dat er niet in slaagt te decoderen, kan om een paar redenen niet in orde zijn. Het apparaat start met de normale reeks stappen om op te starten:

  1. Detect encrypted device with a password
  2. Mount tmpfs
  3. Start framework to prompt for password

Maar nadat het framework is geopend, kan het apparaat op een aantal fouten stuiten:

  • Wachtwoord komt overeen, maar kan gegevens niet decoderen
  • Gebruiker voert 30 keer verkeerd wachtwoord in

Als deze fouten niet worden opgelost, vraagt u de gebruiker om de fabriek te wissen:

Als vold een fout ontdekt tijdens het encryptieproces, en als er nog geen gegevens zijn vernietigd en het framework is opgestart, stelt vold de eigenschap vold.encrypt_progress in op error_not_encrypted.De UI vraagt de gebruiker om opnieuw op te starten en waarschuwt hen dat het encryptie proces nooit is gestart. Als de fout optreedt nadat het raamwerk is afgebroken, maar voordat de voortgangsbalk UI is opgestart, zal vold het systeem opnieuw opstarten. Als de reboot mislukt, stelt het vold.encrypt_progress in operror_shutting_down en geeft -1 terug; maar er zal niets zijn om de fout op te vangen. Dit wordt niet verwacht.

Als vold een fout ontdekt tijdens het encryptie proces, stelt hetvold.encrypt_progress in op error_partially_encrypted en geeft -1 terug. De UI moet dan een bericht tonen dat de encryptie is mislukt en de gebruiker een knop geven om de fabrieksinstellingen van het apparaat te herstellen.

Opslaan van de versleutelde sleutel

De versleutelde sleutel wordt opgeslagen in de crypto metadata. Voorheen versleutelden we de hoofdsleutel met een sleutel die werd gegenereerd door scrypt toe te passen op het wachtwoord van de gebruiker en het opgeslagen zout. Om de sleutel bestand te maken tegen off-box aanvallen, breiden we dit algoritme uit door de resulterende sleutel te ondertekenen met een opgeslagen TEE sleutel. De resulterende handtekening wordt dan omgezet in een sleutel van de juiste lengte door nog een toepassing van scrypt. Deze sleutel wordt dan gebruikt om de hoofdsleutel te versleutelen en te ontsleutelen. Om deze sleutel op te slaan:

  1. Genereer een willekeurige 16-byte disk encryption key (DEK) en 16-byte salt.
  2. Toepassing van scrypt op het gebruikerswachtwoord en het zout om 32-byte intermediatekey 1 (IK1) te produceren.
  3. Pad IK1 met nul bytes tot de grootte van de hardware-gebonden prive-sleutel (HBK).Specifiek, we pad als: 00 | IK1 || 00..00; een zero byte, 32 IK1 bytes, 223zero bytes.
  4. Onderteken IK1 opgevuld met HBK om 256-byte IK2 te produceren.
  5. Toepassen scrypt op IK2 en zout (hetzelfde zout als stap 2) om 32-byte IK3 te produceren.
  6. Gebruik de eerste 16 bytes van IK3 als KEK en de laatste 16 bytes als IV.
  7. Versleutel DEK met AES_CBC, met sleutel KEK, en initialisatievector IV.

Wachtwoord veranderen

Wanneer een gebruiker ervoor kiest om zijn wachtwoord in de instellingen te veranderen of te verwijderen, stuurt de UI het commando cryptfs changepw naar vold, envold versleutelt de hoofdsleutel van de schijf opnieuw met het nieuwe wachtwoord.

Encryptie-eigenschappen

vold en init communiceren met elkaar door eigenschappen in te stellen. Hier is een lijst met beschikbare eigenschappen voor encryptie.

Voldoende eigenschappen

init.rc of init.rc net na het voltooien van de taak post-fs-data.

Eigenschap Beschrijving
vold.decrypt trigger_encryption Encrypteer de schijf zonder wachtwoord.
vold.decrypt trigger_default_encryption Controleer de schijf om te zien of deze is gecodeerd zonder wachtwoord. Als dit het geval is, decodeer en koppel de schijf aan, anders stelt u vold.decrypt in op trigger_restart_min_framework.
vold.decrypt trigger_reset_main Ingesteld door vold om de UI af te sluiten die vraagt om het schijfwachtwoord.
vold.decrypt trigger_post_fs_data Ingesteld door vold om /data voor te bereiden met de nodige directories, enzovoort.
vold.decrypt trigger_restart_framework Ingesteld door vold om het echte framework en alle services te starten.
vold.decrypt trigger_shutdown_framework Ingesteld door vold om het volledige framework af te sluiten om de encryptie te starten.
vold.decrypt trigger_restart_min_framework Ingesteld door vold om de voortgangsbalk UI voor encryptie te starten of om om een wachtwoord te vragen, afhankelijk van de waarde van ro.crypto.state.
vold.encrypt_progress Wanneer het framework opstart, als deze eigenschap is ingesteld, start de voortgangsbalk UI modus.
vold.encrypt_progress 0 to 100 De voortgangsbalk UI moet de ingestelde percentage waarde tonen.
vold.encrypt_progress error_partially_encrypted De UI van de voortgangsbalk moet een bericht weergeven dat de versleuteling is mislukt, en de gebruiker een optie geven om het apparaat een fabrieksreset te geven.
vold.encrypt_progress error_reboot_failed De UI van de voortgangsbalk moet een bericht weergeven dat de versleuteling is voltooid, en de gebruiker een knop geven om het apparaat opnieuw op te starten. Deze fout wordt niet verwacht.
vold.encrypt_progress error_not_encrypted De voortgangsbalk UI moet een bericht weergeven dat er een fout is opgetreden, maar dat er geen gegevens zijn gecodeerd of verloren, en de gebruiker een knop geven om het systeem opnieuw op te starten.
vold.encrypt_progress error_shutting_down De voortgangsbalk UI wordt niet uitgevoerd, dus het is onduidelijk wie er op deze fout zal reageren. En het zou sowieso nooit mogen gebeuren.
vold.post_fs_data_done 0 Ingesteld door vold net voor het instellen van vold.decrypt op trigger_post_fs_data.
vold.post_fs_data_done 1 vold.post_fs_data_done 1 vold.post_fs_data_done 0

init properties

Property Description
ro.crypto.fs_crypto_blkdev Ingesteld door het vold-commando checkpw voor later gebruik door het vold-commando restart.
ro.crypto.state unencrypted Ingesteld door init om aan te geven dat dit systeem draait met een niet-gecodeerde /data ro.crypto.state encrypted. Ingesteld door init om aan te geven dat dit systeem draait met een versleutelde /data.

ro.crypto.fs_type
ro.crypto.fs_real_blkdev
ro.crypto.fs_mnt_point
ro.crypto.fs_options
ro.crypto.fs_flags

Deze vijf eigenschappen worden ingesteld door init wanneer het probeert /data te mounten met parameters die zijn doorgegeven vanuit init.rc. vold gebruikt deze om de crypto mapping in te stellen.
ro.crypto.tmpfs_options Ingesteld door init.rc met de opties die init moet gebruiken bij het mounten van het tmpfs /data bestandssysteem.

Init acties

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.