Mobile Security René de Groot Sogeti
1
Inhoud • Mobile en nieuwe mogelijkheden • Nieuwe risico’s • Keten en spelers • Basic security • Scenario secure storage op een iPad • Scenario IRM op een iPad • Conclusie 2
Mobile en nieuwe mogelijkheden • Smartphones • Iedereen aan de corporate email • Overal • Altijd • Op een eigen device • Tablets • Al die werkpapieren binnen handbereik • De meeste recente gegevens • Toegang tot alle gegevens • Offline en online
3
Nieuwe risico’s • Onbekende apparaten • Openstaand kanaal naar binnen • Onbekende client software • Rondreizende kopies van alles • Anders dan het rustige vaarwater van een eigen netwerk
4
Keten • De bekende zwakste schakel • In elke onderdeel van de keten • In elk onderdeel het zwakste deel
5
Keten spelers • • • • • • • •
Storage Services Authenticatie Autorisatie Infrastructuur Processen en werkwijze Proxies Mobiele apparaten
• en dan ook nog eens de Mobile Apps zelf
6
Wie heb ik aan de lijn? • Proxies, 3G, WiFi, Hotspots, Captive Portals • Allemaal man in the middle kansen • SSL server certificaat controleren • via geïnstalleerde CA lijst • of zelfs direct
SSL certificaten controleren 7
Mobile gereedschap • App alleen beschikbaar maken • aan eigen medewerkers • aan up-to-date apparaten • aan managede apparaten • aan beveiligde apparaten • met sterke toegangcodes Eigen “App Store” met managed devices en actieve policies.
Mobile device management 8
Services met corporate data • Web services via het internet • Twee miljard nieuwe gebruikers • Shared secret tokens (API keys) • Private keys (2-way SSL) • Uitgeven, intrekken en replays
Tokens of private keys 9
Storage op een iPad • Algemeen toegankelijk
• Na unlock toegankelijk
• Tijdens app gebruik
• Tijdens document gebruik
10
Algemeen toegankelijk • Voor het gemak de keys toegankelijk • Remote wipe ontzegt toegang • • • •
HTTP cache Voorkeuren Documenten Apps zelf
256 bit AES encoding en toch zwak 11
Algemeen toegankelijk // Example HTTP caching NSURL *url = [NSURL URLWithString:requestString]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowed timeoutInterval:30.0]; // Example preference storage NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSData *persistentRef = [userDefaults objectForKey: kIdentityReference]; // Example data storage NSData *data = [self bundleApplicationData]; NSArray *sysPaths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES ); NSString *docDirectory = [sysPaths objectAtIndex:0]; NSFileManager *fileManager = [NSFileManager defaultManager]; [data writeToFile:dataFilePath atomically:YES];
12
Na unlock toegankelijk • Keychain data pas na device unlock • Device management • ≈1.7 jaar met een 6-teken alfanumeriek • ≈ 9 minutes voor de standaard 4 cijfers • Gewoon meekijken kan simpel
Gebruikers met makkelijke pin 13
Na unlock toegankelijk // Example store myIdentity into keychain const void *keys[] = { kSecReturnPersistentRef, kSecAttrAccessible, kSecValueRef }; const void *values[] = { kCFBooleanTrue, kSecAttrAccessibleWhenUnlockedThisDeviceOnly, myIdentity }; CFDictionaryRef dict = CFDictionaryCreate(NULL, keys, values, 3, NULL, NULL); NSData *persistentRef= nil; OSStatus status = SecItemAdd(dict, (CFTypeRef *)&persistentRef); CFRelease(deleteDict);
14
Tijdens app gebruik toegankelijk • Encrypted storage • SQLite3, OpenSSL en samen als SQLCipher • Database access token opslaan in Keychain • Inloggen app is token decrypten en db openen • Uitloggen is database sluiten
Data een stuk korter open 15
Tijdens app gebruik toegankelijk // Encrypted stored data NSData *encryptedData = [self readEncryptedData]; NSData *databaseKey = [encryptedData AES256DecryptWithKey:userCreds]; // Encrypted database access // using FMDatabase for query binding and result sets FMDatabase *db = [FMDatabase databaseWithPath:databasePath]; const char* key = [keyString UTF8String]; [db open:key];
16
Tijdens document gebruik toegankelijk • Storage in volatile memory en als beeld • Alles via services, altijd afsluitbaar • Mobile device is een “terminal” • Services implementeren IRM en de app is lijdzaam • One-time password per transaction
Niks opslaan is veilig 17
Conclusies • App security is nutteloos zonder keten aanpak • Mobile security niet voor nop • Keuzes en mogelijkheden • Zelf handelen of gebruikers handelen voor je • Verwen gebruikers: Good technology not good enough
18