iOS Security Tools
Apple uygulamaları için keychain, şifreleme, pinning, tek kullanımlık kodlar ve bütünlük kontrolleri.
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ıç
1import SwiftUI2import iOSSecurityTools3 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.localizedDescription20 }21 }22 .buttonStyle(.borderedProminent)23 }24 .padding()25 .privacyShield()26 }27}Kurulum
Swift Package Manager
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
1https://github.com/muhittincamdali/iOSSecurityTools.gitEkran Görüntüleri






Zaman Çizelgesi
Repo, AES ve RSA şifreleme yardımcılarıyla açıldı
v1.0.0 yayımlandı; bugünkü paketten farklı bir kod tabanıydı
Sadeleştirme: 1.0.0 kaynakları placeholder kodla değiştirildi
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ı
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