to make sure data is kept secret or private and only people with proper privileges can access secure information. • Integrity: it involves making sure your data is trustworthy and free from tampering. • Availability: it involves making sure that people with access to specific information must be able to consume it when they need to. The CIA Triad
app handles Financial Information. • Your app stores Medical Records. • Your server depends on input from the app. • Your app contains important algorithms. Why protect at App level?
'https://cdn.cocoapods.org/' platform :ios, '13.0' target 'InsecureApp' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Internal Pods (Private) pod 'MyCompanySDK', '~>1.0' # Pods for InsecureApp pod 'Firebase/Core', '~>7.4' pod 'Firebase/Analytics', '~>7.4' pod 'Firebase/Crashlytics', '~>7.4' end
source 'https://cdn.cocoapods.org/' source 'https://github.com/itaybre/PrivateRepo' platform :ios, '13.0' target 'InsecureApp' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Internal Pods (Private) pod 'MyCompanySDK', '~>1.0' # Pods for InsecureApp pod 'Firebase/Core', '~>7.4' pod 'Firebase/Analytics', '~>7.4' pod 'Firebase/Crashlytics', '~>7.4' end
source 'https://github.com/itaybre/PrivateRepo' source 'https://github.com/itaybre/VendoredRepo' platform :ios, '13.0' target 'InsecureApp' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Internal Pods pod 'InternalSDK', '~>1.0' # Pods for InsecureApp pod 'Firebase/Core', '~>7.4' pod 'Firebase/Analytics', '~>7.4' pod 'Firebase/Crashlytics', '~>7.4' end
from your server. #> let hash = Data(SHA256.hash(data: challenge)) service.attestKey(keyId, clientDataHash: hash) { attestation, error in guard error == nil else { /* Handle error and return. */ } // Send the attestation object to your server for verification. } App Redistribution - Key Attestation
• Validate the certificate was generated using our challenge. • Validate the the certificate and the attestation object match. • Validate the attestation is for our app and for production environment. • Validate the attestation request is new and has not been used before. Key Attestation (Server Side) 33 App Redistribution - Key Attestation (Server Side)