0Pricing
Swift Academy · Lektion

Datenschutz und Verschlüsselung

Schützen Sie Dateien und lernen Sie die Grundlagen von CryptoKit kennen.

Datenschutz und Verschlüsselung ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Data Protection unter iOS

iOS verschlüsselt Dateien standardmäßig auf dem Datenträger. Mit den Klassen von Data Protection können Sie jedoch festlegen, wann die Inhalte einer Datei entschlüsselt werden können. Diese Klassen knüpfen den Dateizugriff an den Sperrstatus des Geräts, ähnlich wie die Zugriffsklassen des Keychain bei Geheimnissen.

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

Die Schutzklassen

Die wichtigsten Dateischutzstufen sind .complete (bei gesperrtem Gerät nicht lesbar), .completeUnlessOpen (bleibt lesbar, wenn die Datei beim Sperren bereits geöffnet ist), .completeUntilFirstUserAuthentication (nach dem ersten Entsperren lesbar) und .none.

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

Eine geschützte Datei schreiben

Übergeben Sie beim Schreiben .completeFileProtection in den Schreiboptionen, um eine Datei vollständig zu schützen. Bei gesperrtem Gerät macht das Betriebssystem ihre Inhalte unzugänglich, sogar für Ihre eigene App.

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

Den Schutz vorhandener Dateien festlegen

Sie können den Schutz einer Datei auch nach ihrer Erstellung ändern, indem Sie das Attribut FileAttributeKey.protectionKey über FileManager setzen. Das ist praktisch, wenn Sie den Schutz von empfangenen oder migrierten Dateien nachträglich verschärfen möchten.

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

CryptoKit für die Verschlüsselung innerhalb der App

Wenn Sie Daten selbst verschlüsseln müssen — etwa vor dem Hochladen oder um den Schutz auf dem Datenträger um eine zusätzliche Ebene zu ergänzen — verwenden Sie CryptoKit. Es bietet moderne, missbrauchsresistente Primitive mit sicheren Standardeinstellungen und macht bei AEAD-Chiffren keine manuelle Verwaltung von IVs erforderlich.

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

Hashing mit SHA-256

Für Integritätsprüfungen und Fingerabdrücke erzeugt SHA256 einen Digest mit fester Größe. Beachten Sie, dass Hashing eine Einwegoperation ist und keinen Ersatz für Verschlüsselung darstellt — hashen Sie ein Passwort niemals ohne Salt und eine langsame 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 Schlüssel

Bei symmetrischer Verschlüsselung wird ein gemeinsamer Schlüssel verwendet. SymmetricKey(size: .bits256) erzeugt einen starken zufälligen Schlüssel. Speichern Sie den Schlüssel im Keychain — niemals zusammen mit dem von ihm geschützten Chiffretext.

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

Mit AES-GCM verschlüsseln

AES.GCM ist eine authentifizierte Verschlüsselung: Sie verschlüsselt Daten und erkennt zugleich Manipulationen. seal gibt eine versiegelte Box zurück, die Chiffretext, Nonce und Authentifizierungs-Tag gemeinsam enthält.

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
}

Entschlüsseln und verifizieren

Zum Entschlüsseln erstellen Sie aus den kombinierten Daten eine SealedBox und rufen open auf. Wenn der Chiffretext oder das Tag verändert wurde, löst open einen Fehler aus — das Authentifizierungs-Tag garantiert die Integrität, sodass beschädigte Daten niemals unbemerkt entschlüsselt werden.

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)
}

Schlüssel aus Passwörtern ableiten

Verwenden Sie niemals ein unverändertes Passwort als Schlüssel. Leiten Sie stattdessen mit HKDF (für Eingaben mit hoher Entropie) oder einer passwortbasierten KDF einen Schlüssel ab. Die HKDF von CryptoKit streckt und salzt Schlüsselmaterial zu einem geeigneten symmetrischen Schlüssel.

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

Schutzmaßnahmen kombinieren

Starke Apps kombinieren mehrere Ebenen: Data Protection verschlüsselt Dateien im Ruhezustand und bindet den Zugriff an den Sperrstatus, der Keychain schützt Schlüssel mit biometrischer Authentifizierung, und CryptoKit ergänzt eine Verschlüsselung auf App-Ebene für Daten bei der Übertragung oder in der Cloud. Jede Ebene bleibt auch bei einem Ausfall für sich sicher.

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

Schnelltest

Rufen Sie sich ins Gedächtnis, warum AES-GCM für die Verschlüsselung auf App-Ebene bevorzugt wird.

Zusammenfassung

Sie haben Datenschutz und Verschlüsselung kennengelernt:

  • Die Data Protection-Klassen für Dateien (.complete, .completeUntilFirstUserAuthentication) verknüpfen die Entschlüsselung der Festplatte mit dem Sperrstatus.
  • CryptoKit bietet SHA-256-Hashing, die Erzeugung von SymmetricKey-Schlüsseln und authentifizierte AES-GCM-Verschlüsselung über seal/open.
  • Leiten Sie Schlüssel mit HKDF ab. Speichern Sie Schlüssel im Schlüsselbund, niemals zusammen mit dem Chiffretext.
  • Kombinieren Sie Data Protection, Keychain und CryptoKit für eine mehrschichtige Absicherung.

Häufig gestellte Fragen

Ist die Lektion „Datenschutz und Verschlüsselung“ kostenlos?

Ja — der vollständige Text von „Datenschutz und Verschlüsselung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Datenschutz und Verschlüsselung“?

Schützen Sie Dateien und lernen Sie die Grundlagen von CryptoKit kennen. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Datenschutz und Verschlüsselung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Geheimnisse im Keychain speichern
  2. Zugriffskontrolle für den Keychain
  3. Biometrische Authentifizierung
  4. Datenschutz und Verschlüsselung
← Zurück zu Swift Academy