Tüm açık kaynak paketler
AraçlarSwift

iOSSecurityTools

Apple uygulamaları için keychain, şifreleme, pinning, tek kullanımlık kodlar ve bütünlük kontrolleri.

5YıldızSon Sürüm: v2.1.0 · Güncellendi: 21 Ekim 2026
Platformlar:iOS 17macOS 14tvOS 17watchOS 10visionOS 1

Lisans: MIT

Testler: 589Ölçüm:

Nasıl ölçüldü

swift test at PR #25 head 5b71c19 (the planned v2.1.0, not yet tagged) on macOS 27.0.1, Apple Swift 6.4: "Test run with 589 tests in 101 suites passed after 370.336 seconds". Re-run at the v2.1.0 tag before publishing.

Özet

  • Beş Apple platformu için keychain, şifreleme, Secure Enclave, pinning, tek kullanımlık parola, bütünlük ve log redaction yapı taşları sunan bağımlılıksız bir Swift paketi.
  • 2.0.0'daki log redactor benzer harfler, escape'ler ve değer olarak yazılmış gizli adlarla atlatılabiliyordu; bu yüzden loglar için 2.0.0'a güvenilmemeli.
  • 2.1.0'da gizli adlarla yalnız düz ASCII anahtarlar karşılaştırılıyor, diğer her anahtarın değeri varsayılan olarak gizleniyor.
  • JSON, form ve multipart body'ler parser ile okunuyor; tam parse edilemeyen ya da 256 KiB'ı aşan body yazılmıyor, yerine boyutu ve türü yazılıyor.
  • Redaction, yanlışlıkla loglanan sırlara karşı bir güvenlik ağıdır; bir sırrı bilerek gizleyen birine karşı garanti değildir.

iOS, macOS, tvOS, watchOS ve visionOS uygulamaları için güvenlik yapı taşlarından oluşan bir Swift paketi: keychain'de saklama, doğrulanmış şifreleme, PIN hash'leri, Secure Enclave anahtarları, sertifika pinning'i, tek kullanımlık parolalar, cihaz bütünlüğü kontrolleri ve log redaction. Her tip aldığı değeri doğrular ve çökmek yerine typed error fırlatır; böylece QR koddan, sunucudan ya da dosyadan gelen bir değer uygulamayı çökertemez. Apple'ın framework'lerini doğrudan çağırır, bağımlılığı yok.

Özellikler

  • Keychain; data, string ve Codable değerleri saklar, 256-bit anahtarı ilk kullanımda üretir ve Face ID, Touch ID ya da parola şartını keychain'in kendisine uygulatır
  • DataCipher, sürümünü, algoritmasını ve nonce'unu taşıyan AES-256-GCM ya da ChaCha20-Poly1305 zarfları yazar; değişmiş bir byte, yanlış anahtar ya da yanlış associated data çözmeyi başarısız kılar
  • HKDF, PBKDF2 ve PHC biçiminde PIN hash'leri; iterasyon sayısı sınırlı olduğu için değiştirilmiş bir hash doğrulamayı saatlerce sürdüremez
  • PinningPolicy yedek pin ister; alt alan adlarını, son kullanma tarihlerini ve report-only modunu destekler, sistemin kendi trust değerlendirmesinin geçmesini de şart koşar
  • otpauth:// okuma ve yazmayla HOTP ve TOTP; hesabı cihaza bağlamak için Secure Enclave P-256 anahtarları
  • IntegrityInspector; jailbreak dosyalarını, debugger'ı, simülatörü, hooking kütüphanelerini ve sistem proxy'sini kanıt olarak değil, Codable bir rapordaki sinyaller olarak bildirir
  • SensitiveDataRedactor yalnız düz ASCII anahtarları gizli adlarla karşılaştırır, diğer her anahtarın değerini gizler; JSON, form ve multipart body'ler ile URL'ler parser'la okunur, parse edilemeyen atlanır
  • @Redacted açıklamalarda <redacted> yazar; .privacyShield() ise görünümleri uygulama değiştiricide ve ekran kaydı sırasında örter

Hızlı Başlangıç

swift
1import SwiftUI
2import iOSSecurityTools
3 
4struct ContentView: View {
5 @State private var status = "Nothing stored yet"
6 
7 var body: some View {
8 VStack(spacing: 16) {
9 Text(status)
10 Button("Encrypt and store a note") {
11 do {
12 let keychain = Keychain(service: "QuickStart")
13 let cipher = try DataCipher(key: keychain.symmetricKey(forKey: "notes-key"))
14 try keychain.set(cipher.encrypt("Meet at 7 pm"), forKey: "note")
15 
16 let stored = try keychain.data(forKey: "note") ?? Data()
17 status = "Decrypted: \(try cipher.decryptString(stored))"
18 } catch {
19 status = error.localizedDescription
20 }
21 }
22 .buttonStyle(.borderedProminent)
23 }
24 .padding()
25 .privacyShield()
26 }
27}

Kurulum

Swift Package Manager

swift
1dependencies: [
2 .package(url: "https://github.com/muhittincamdali/iOSSecurityTools.git", from: "2.1.0")
3],
4targets: [
5 .target(name: "YourApp", dependencies: [
6 .product(name: "iOSSecurityTools", package: "iOSSecurityTools")
7 ])
8]

Xcode

text
1https://github.com/muhittincamdali/iOSSecurityTools.git

Ekran Görüntüleri

E-posta, parola, bearer token ve kart numarası içeren bir log metni ve altında redakte edilmiş hali
E-posta, parola, bearer token ve kart numarası içeren bir log metni ve altında redakte edilmiş hali, koyu tema
Keychain'e 46 byte olarak şifrelenip geri okunan bir not ve saklanan hash'ine karşı kontrol edilen bir PIN
Simülatörde bütünlük raporu: jailbreak kontrolü uygulanamaz, simülatör bulundu; debugger, enjekte kütüphane ve proxy temiz
otpauth URI'sinden altı haneli bir TOTP kodu ve kalan saniyeleri sayan bir halka
Kilit simgeli privacy shield ile örtülmüş bir kart ayrıntıları görünümü

Zaman Çizelgesi

  1. Repo, AES ve RSA şifreleme yardımcılarıyla açıldı

  2. v1.0.0 yayımlandı; bugünkü paketten farklı bir kod tabanıydı

  3. Sadeleştirme: 1.0.0 kaynakları placeholder kodla değiştirildi

  4. Sıfırdan 2.0.0 olarak yeniden kuruldu: keychain, şifreleme, Secure Enclave anahtarları, biometrics, pinning, tek kullanımlık parolalar, bütünlük kontrolleri ve log redaction; 1.0.0 API'sinden hiçbir şey korunmadı

  5. 2.1.0: 2.0.0'daki log redactor'ın atlatılabildiği görülünce yeniden tasarlandı; düz ASCII olmayan anahtarlar varsayılan olarak gizleniyor, body ve URL'ler parser ile okunuyor

Bağlantılar

İlgili Yazı

Yazıyı Oku