Swift Academy · Les

Gegevensbescherming en versleuteling

Bescherm bestanden en leer de basis van CryptoKit.

Les 4 van 413 stappen

Gegevensbescherming en versleuteling is een gratis Swift Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Swift Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Swift Academy bevat in totaal 4 lessen.

Data Protection op iOS

iOS versleutelt bestanden standaard op schijf, maar je kunt met Data Protection-klassen kiezen wanneer de inhoud van een bestand ontsleuteld kan worden. Deze koppelen toegang tot bestanden aan de vergrendelingsstatus van het apparaat, net zoals toegankelijkheidsklassen van de Keychain dat voor geheimen doen.

import Foundation
// File-level protection ties decryption to lock state.
// Set a protection class when writing sensitive files.

De beveiligingsklassen

De belangrijkste beveiligingsniveaus voor bestanden zijn .complete (onleesbaar terwijl het apparaat vergrendeld is), .completeUnlessOpen (blijft leesbaar als het al open was toen het apparaat werd vergrendeld), .completeUntilFirstUserAuthentication (leesbaar na de eerste ontgrendeling) en .none.

import Foundation
// FileProtectionType:
//   .complete
//   .completeUnlessOpen
//   .completeUntilFirstUserAuthentication (default)
//   .none
let level = FileProtectionType.complete
_ = level

Een beveiligd bestand schrijven

Geef .completeFileProtection door in de schrijfopties om een bestand als volledig beveiligd te markeren. Terwijl het apparaat vergrendeld is, maakt het besturingssysteem de inhoud ontoegankelijk, zelfs voor je eigen app.

import Foundation
func writeSecure(_ data: Data, to url: URL) throws {
    try data.write(
        to: url,
        options: [.completeFileProtection])
}

Beveiliging van bestaande bestanden instellen

Je kunt de beveiliging van een bestand na het aanmaken wijzigen door het attribuut FileAttributeKey.protectionKey in te stellen via FileManager. Dit is handig om de beveiliging aan te scherpen van bestanden die je ontvangt of overzet.

import Foundation
func protect(_ url: URL) throws {
    try FileManager.default.setAttributes(
        [.protectionKey: FileProtectionType.complete],
        ofItemAtPath: url.path)
}

CryptoKit voor versleuteling in de app

Wanneer je gegevens zelf moet versleutelen — vóór het uploaden of om een extra laag bovenop schijfbeveiliging toe te voegen — gebruik je CryptoKit. Het biedt moderne cryptografische bouwstenen die misbruik tegengaan, met veilige standaardinstellingen en zonder handmatig met IV's te hoeven schuiven voor AEAD-versleuteling.

import CryptoKit
// CryptoKit offers hashing, symmetric & public-key
// crypto with safe, hard-to-misuse APIs.

Hashen met SHA-256

Voor integriteitscontroles en vingerafdrukken produceert SHA256 een hashwaarde met vaste lengte. Let op: hashen is een eenrichtingsbewerking en geen vervanging voor versleuteling — hash een wachtwoord nooit zonder salt en een trage KDF.

import CryptoKit
import Foundation
func fingerprint(_ data: Data) -> String {
    let digest = SHA256.hash(data: data)
    return digest.map { String(format: "%02x", $0) }
        .joined()
}

Symmetrische sleutels

Symmetrische versleuteling gebruikt één gedeelde sleutel. SymmetricKey(size: .bits256) genereert een sterke willekeurige sleutel. Bewaar de sleutel in de Keychain — nooit naast de versleutelde gegevens die ermee worden beschermd.

import CryptoKit
let key = SymmetricKey(size: .bits256)
// Persist this key in the Keychain, not in a file.
_ = key

Versleutelen met AES-GCM

AES.GCM is geauthenticeerde versleuteling: het versleutelt gegevens en detecteert ook manipulatie. seal geeft een verzegelde container terug met de versleutelde gegevens, nonce en authenticatietag samengevoegd.

import CryptoKit
import Foundation
func encrypt(_ data: Data, key: SymmetricKey)
    throws -> Data {
    let sealed = try AES.GCM.seal(data, using: key)
    return sealed.combined! // nonce + ciphertext + tag
}

Ontsleutelen en verifiëren

Om te ontsleutelen reconstrueer je een SealedBox uit de gecombineerde gegevens en roep je open aan. Als de versleutelde gegevens of tag is gewijzigd, genereert open een fout — de authenticatietag garandeert de integriteit, dus beschadigde gegevens worden nooit stilzwijgend ontsleuteld.

import CryptoKit
import Foundation
func decrypt(_ combined: Data, key: SymmetricKey)
    throws -> Data {
    let box = try AES.GCM.SealedBox(combined: combined)
    return try AES.GCM.open(box, using: key)
}

Sleutels afleiden uit wachtwoorden

Gebruik nooit een onbewerkt wachtwoord als sleutel. Leid er een af met HKDF (voor invoer met hoge entropie) of een op wachtwoorden gebaseerde KDF. De HKDF van CryptoKit rekt sleutelmateriaal uit en voorziet het van salt om er een geschikte symmetrische sleutel van te maken.

import CryptoKit
import Foundation
func deriveKey(from secret: Data, salt: Data)
    -> SymmetricKey {
    return HKDF<SHA256>.deriveKey(
        inputKeyMaterial: SymmetricKey(data: secret),
        salt: salt,
        outputByteCount: 32)
}

Beveiligingslagen combineren

Sterke apps combineren lagen: Data Protection versleutelt opgeslagen bestanden en koppelt dat aan de vergrendelingsstatus, de Keychain beveiligt sleutels met biometrie en CryptoKit voegt versleuteling op appniveau toe voor gegevens tijdens transport of in de cloud. Elke laag faalt zelfstandig op een veilige manier.

import CryptoKit
import Foundation
// 1. Key lives in Keychain (biometric-gated)
// 2. Plaintext file written with .completeFileProtection
// 3. Uploads encrypted with AES.GCM before leaving device
let layers = "defense in depth"
_ = layers

Korte controle

Haal je weer voor de geest waarom AES-GCM de voorkeur heeft voor versleuteling op app-niveau.

Samenvatting

Je hebt geleerd hoe je gegevens beschermt en versleutelt:

  • De Data Protection-klassen voor bestanden (.complete, .completeUntilFirstUserAuthentication) koppelen ontsleuteling van de schijf aan de vergrendelingsstatus.
  • CryptoKit biedt het maken van SHA-256-hashes, het genereren van SymmetricKey en geauthenticeerde AES-GCM-versleuteling via seal/open.
  • Leid sleutels af met HKDF; bewaar sleutels in de Keychain, nooit naast de cijfertekst.
  • Combineer Data Protection, de Keychain en CryptoKit voor gelaagde beveiliging.
Gratis beginnen

Leer Swift met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
122
Lessen
409

Veelgestelde vragen

Is de les “Gegevensbescherming en versleuteling” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Swift Academy, waaronder “Gegevensbescherming en versleuteling”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Swift Academy bevat in totaal 4 lessen.

Wat leer ik in “Gegevensbescherming en versleuteling”?

Bescherm bestanden en leer de basis van CryptoKit. Je oefent met Swift Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Swift Academy te beginnen?

Ervaring vooraf is niet nodig. Swift Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Gegevensbescherming en versleuteling”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Swift Academy?

Ja. Elke les over Swift Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Geheimen opslaan in de Keychain
  2. Toegangsbeheer voor de Keychain
  3. Biometrische authenticatie
  4. Gegevensbescherming en versleuteling
← Terug naar Swift Academy