0Pricing
Swift Academy · Ders

Veri Koruma ve Şifreleme

Dosyaları koruyun ve CryptoKit temellerini öğrenin.

Veri Koruma ve Şifreleme, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

iOS'ta Veri Koruması

iOS, diskteki dosyaları varsayılan olarak şifreler; ancak Veri Koruması sınıflarını kullanarak bir dosyanın içeriğinin ne zaman çözülebileceğini seçebilirsiniz. Bu sınıflar, Anahtar Zinciri erişilebilirlik sınıflarının gizli bilgiler için yaptığı gibi, dosya erişimini cihazın kilit durumuna bağlar.

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

Koruma Sınıfları

Temel dosya koruma düzeyleri şunlardır: .complete (kilitliyken okunamaz), .completeUnlessOpen (kilitlendiğinde zaten açıksa okunabilir kalır), .completeUntilFirstUserAuthentication (ilk kilit açma işleminden sonra okunabilir) ve .none.

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

Korumalı Dosya Yazma

Bir dosyayı tamamen korumalı olarak işaretlemek için yazma seçeneklerinde .completeFileProtection değerini geçirin. Cihaz kilitliyken OS, içeriğini kendi uygulamanızın bile erişemeyeceği şekilde kullanılamaz hâle getirir.

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

Mevcut Dosyalarda Korumayı Ayarlama

Oluşturulduktan sonra bir dosyanın korumasını, FileManager aracılığıyla FileAttributeKey.protectionKey özniteliğini ayarlayarak değiştirebilirsiniz. Bu, aldığınız veya taşıdığınız dosyalarda korumayı sıkılaştırmak için kullanışlıdır.

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

Uygulama İçi Şifreleme için CryptoKit

Verileri kendiniz şifrelemeniz gerektiğinde (yüklemeden önce veya disk korumasının üzerine bir katman eklemek için) CryptoKit kullanın. CryptoKit, AEAD şifreleri için güvenli varsayılanlarla ve IV değerlerini elle yönetme gereği olmadan, modern ve yanlış kullanıma dayanıklı temel yapı taşları sağlar.

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

SHA-256 ile Özetleme

Bütünlük denetimleri ve parmak izleri için SHA256 sabit boyutlu bir özet üretir. Özetlemenin tek yönlü olduğunu ve şifrelemenin yerine geçmediğini unutmayın; parolaları tuz ve yavaş bir KDF olmadan asla özetlemeyin.

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

Simetrik Anahtarlar

Simetrik şifreleme tek bir ortak anahtar kullanır. SymmetricKey(size: .bits256) güçlü ve rastgele bir anahtar oluşturur. Anahtarı Anahtar Zinciri'nde saklayın; onu koruduğu şifreli metnin yanında asla saklamayın.

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

AES-GCM ile Şifreleme

AES.GCM kimlik doğrulamalı şifrelemedir: hem şifreleme yapar hem de üzerinde değişiklik yapıldığını algılar. seal, şifreli metni, nonce değerini ve kimlik doğrulama etiketini birlikte içeren mühürlü bir kutu döndürür.

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
}

Şifreyi Çözme ve Doğrulama

Şifreyi çözmek için birleşik verilerden bir SealedBox yeniden oluşturun ve open çağrısını yapın. Şifreli metin veya etiket değiştirilmişse open hata verir; kimlik doğrulama etiketi bütünlüğü garanti ettiğinden bozulmuş verilerin şifresi sessizce çözülmez.

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

Parolalardan Anahtar Türetme

Ham bir parolayı asla anahtar olarak kullanmayın. Yüksek entropili girdiler için HKDF veya parola tabanlı bir KDF kullanarak anahtar türetin. CryptoKit'in HKDF yapısı, anahtar malzemesini genişletip tuzlayarak uygun bir simetrik anahtara dönüştürür.

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

Savunmaları Katmanlandırma

Güçlü uygulamalar birden çok katmanı birleştirir: Veri Koruması, kilit durumuna bağlı olarak bekleyen dosyaları şifreler; Anahtar Zinciri, anahtarları biyometrinin arkasında korur; CryptoKit ise aktarım hâlindeki veya buluttaki veriler için uygulama düzeyinde şifreleme ekler. Her katman kendi başına güvenli biçimde başarısız olur.

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

Hızlı Kontrol

AES-GCM'nin uygulama düzeyinde şifreleme için neden tercih edildiğini hatırlayın.

Özet

Veri koruma ve şifrelemeyi öğrendiniz:

  • Dosya Veri Koruma sınıfları (.complete, .completeUntilFirstUserAuthentication), diskin şifresinin çözülmesini kilit durumuna bağlar.
  • CryptoKit, SHA-256 karması oluşturma, SymmetricKey üretme ve seal/open aracılığıyla AES-GCM kimlik doğrulamalı şifreleme olanağı sağlar.
  • Anahtarları HKDF ile türetin; anahtarları hiçbir zaman şifreli metnin yanına değil, Anahtar Zinciri'ne kaydedin.
  • Derinlemesine savunma için Veri Koruma, Anahtar Zinciri ve CryptoKit'i katmanlı biçimde kullanın.

Sıkça Sorulan Sorular

“Veri Koruma ve Şifreleme” dersi ücretsiz mi?

Evet — “Veri Koruma ve Şifreleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“Veri Koruma ve Şifreleme” dersinde ne öğreneceğim?

Dosyaları koruyun ve CryptoKit temellerini öğrenin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Veri Koruma ve Şifreleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Gizli Bilgileri Keychain'de Saklama
  2. Keychain Erişim Denetimi
  3. Biyometrik Kimlik Doğrulama
  4. Veri Koruma ve Şifreleme
← Swift Academy Sayfasına Dön