Mtc2011 enterprise class security für android-apps-fujita
-
Upload
zuehlke -
Category
Technology
-
view
643 -
download
0
description
Transcript of Mtc2011 enterprise class security für android-apps-fujita
© Zühlke 2011
Masanori Fujita
Masanori Fujita
Enterprise-class Security für Android-Apps
© Zühlke 2011
Softwarelösungen, Produktinnovationund Managementberatung
Wir beraten, entwickeln und integrieren aufgabengerecht –mit überzeugender Qualität und Wirtschaftlichkeit.
• Mehr als 7000 Projekte in Europa realisiert
• 50 Mio. EUR Umsatz (2010)
• 400 Mitarbeiter (Ende 2010)
• In Deutschland, Grossbritannien, Österreich und in der Schweiz
• Gründung 1968, im Besitz von Partnern
• ISO 9001 und 13485 zertifiziert
Eine Idee mehr. Und Zühlke. 4. März 2011 Folie 2
© Zühlke 2011
Consulting – Development – Integration
Softwarelösungen
• Realisieren von Individuallösungen
• Entwicklungsunterstützung
• Methodische Beratung
Fokus-Themen
• M2M-Lösungen
• Enterprise Integration
• Mobile Anwendungen
• Software-Entwicklungsprozesse
• Projektmanagement
Eine Idee mehr. Und Zühlke. 4. März 2011 Folie 3
© Zühlke 2011
Unsere Protagonisten
• Tätig als Vertreter für zwei sehr unterschiedliche Versicherungen
•Mobile Vertriebsplattformen sind ein Thema
Foto von Hans
Enterprise-class Security für Android-Apps | Masanori Fujita 13. September 2011 Folie 4
Image: Ambro / FreeDigitalPhotos.net
Image: photostock / FreeDigitalPhotos.net
Hans
Peter
© Zühlke 2011
Die Aufnummersicher Versicherung
• Setzt auf traditionelle Werte und Seriosität
• Zielgruppe: Familien und Senioren in ländlichen Regionen
• Persönliche Beratung beim Kunden zu Hause
• Konservative IT-Politik
•Mobile Lösungen werden sehr kritisch beobachtet. Bisher nur Konzepte.
Enterprise-class Security für Android-Apps | Masanori Fujita 13. September 2011 Folie 5
Foto von Hans
Image: photostock / FreeDigitalPhotos.net
Image: xedos4 / FreeDigitalPhotos.net
© Zühlke 2011
Die Einfachsicher Versicherung
• Setzt auf einfache, klare Produkte
• Zielgruppe: junge Arbeitnehmer in Städten
• Beratung in der Kaffeepause beim Starbucks in der Stadt
• Das Tablet wird als zeitgemäßes Instrument für den Vertrieb gesehen.
Enterprise-class Security für Android-Apps | Masanori Fujita 13. September 2011 Folie 6
Image: Ambro / FreeDigitalPhotos.net
Image: Salvatore Vuono / FreeDigitalPhotos.net
© Zühlke 2011
Lösungsarchitektur der Einfachsicher
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 7
HTTPS
� Peters Kunden� Verträge von Peters Kunden� Alle Tarife der Gesellschaft
Authentifizierung mit User + Passwort
Web-Service für die mobile Anwendung
Backendsystem Bestandsverwaltung
Gerät loggt sich automatisch ein
© Zühlke 2011
HTTPS korrekt nutzen
• Automatische Verifikation der Zertifikate bei bekannten Ausstellern
• Bei selbst-signierten Server-Zertifikaten „not trusted server“-Fehler
• Manueller Import von Zertifikaten
• Man bringt Android dazu, jedes Zertifikat zu akzeptieren (X509TrustManager-Hack)
• Zertifikat als Ressource in die App einbinden
Enterprise-class Security für Android-Apps | Masanori Fujita 13. September 2011 Folie 8
Image: twobee / FreeDigitalPhotos.net
Peter verliert das Gerät.
Image: Sura Nualpradid / FreeDigitalPhotos.net
© Zühlke 2011
Aufnummersicher will es besser machen.
„Wir wollen den Vertrieb modernisieren. Trotzdem gilt für die Vertriebsinstrumente die gleiche Devise wie auch für unsere Produkte: Wir gehen auf Nummer sicher.“
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 10
Der IT-Vorstand
© Zühlke 2011
Security-Aspekte
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 11
Confidentiality
Availability
Authenticity
Utility
Control
Integrity
Vertraulichkeit wahren, d.h. Unbefugten den Zugriff
verweigern
Unverfälschtheit von Informationen sicherstellen
Kontrolle über die zu schützende Information
behalten
Nutzbarkeit der Information sicherstellen
Verfügbarkeit der Information sicherstellen
Quelle der Information verifizieren
© Zühlke 2011
Problemanalyse EinfachSicher
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita
Confidentiality
Availability
Authenticity
Utility
Control
Integrity
Folie 12
© Zühlke 2011
Gerät vor unbefugtem Zugriff schützenVerfügbare Produkte
Google Apps Device Policy
• Passwortabfrage erzwingen
• Komplexer Passwörter erzwingen
• Remote Wiping
• PIN zurücksetzen
• Gerät klingeln lassen
• Gerät sperren
• Gerät orten
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 13
Confidentiality
Availability
Authenticity
Utility
Control
Integrity
© Zühlke 2011
Gerät vor unbefugtem Zugriff schützenAndere Mobile Device Management Produkte
• Zenprise Mobile Manager
• Symantec Mobile Management
• Sybase Afaria
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 14
Confidentiality
Availability
Authenticity
Utility
Control
Integrity
© Zühlke 2011
Gerät vor unbefugtem Zugriff schützenEinfacher, aber wirksamer Schutz
Gelegenheit macht Diebe…
…aber noch lange keine Datenspione.
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 15
Image: digitalart / FreeDigitalPhotos.net
© Zühlke 2011
Security Modell von Android
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 16
Kernel
ProzessApp 1
ProzessApp 2
ProzessApp 3
Dalvik VM Dalvik VM Dalvik VM
Internal Storage Content Provider
SD-Karte
App Code App Code App Code
Native Code
UID A UID B UID C
© Zühlke 2011
Anwendungen richtig designenIntents für IPC
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 17
App 1 App 2
Activity 1
Activity 2
Activity 3
App 3
Activity 4
Service
App 4
Activity 5
Broadcast
?
© Zühlke 2011
Anwendungen richtig designenPermissions und Protection Levels
Protection Levels:
• normal
• dangerous
• signature
• signatureOrSystem
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 18
<permissionxmlns:android="http://schemas.android.com/apk/res/android"android:name="com.zuehlke.ACCESS_CUSTOMER_DATA"android:description="@string/access_customer_data_desc"android:protectionLevel="normal" android:label="@string/access_customer_data_label"></permission>
<uses-permissionandroid:name="com.zuehlke.ACCESS_CUSTOMER_DATA "></uses-permission>
Permissions definieren
Permissions nutzen
Image: nuttakit / FreeDigitalPhotos.net
© Zühlke 2011
Anwendungen richtig designenPermissions richtig einsetzen
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita
App 1 App 2
Activity 1
Activity 2
Activity 3
App 3
Activity 4
Service
App 4
Activity 5
Broadcastexportiert
Intent-Filter, aber keine Permission
keine Signaturprüfung
keine Empfänger-Permission
?
Folie 19
enthält sensible Daten
Confidentiality
Availability
Authenticity
Utility
Control
Integrity
© Zühlke 2011
Rooting – Security ausgehebelt
• OS ist Open Source
• viele OSS 3rd-Party-Bibliotheken
• Freundlicher Bootloader
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 20
Freier Zugriff auf:
• Internal Storage
• Content Provider
• PasswörterImage: Jomphong / FreeDigitalPhotos.net
© Zühlke 2011
Daten verschlüsselt ablegen
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 21
Persistenzschicht
Internal Storage / SD Card
Vers-/Entschlüsselung
Algorithmen:AES, 3DES, DES
ABC DEFGHI JKL
### $$$??? %%%
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encrypted = cipher.doFinal(clearBytes);
© Zühlke 2011
Verschlüsselte Datenbanken
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita
ID Feld 2 Feld 3
1 A B
2 C D
3 E F
Persistenzschicht
ID Feld 2 Feld 3
1 ### ###
2 ### ###
3 ### ###
Vers-/Entschlüsselung
Folie 22
Probleme:
• Komplexe Abfragen nicht mehr möglich
• Großer Performance-Overhead
© Zühlke 2011
Verschlüsselte Datenbanken
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 23
ID Feld 2 Feld 3
1 A B
2 C D
3 E F
Persistenzschicht
ID Feld 2 Feld 3
1 ### ###
2 ### ###
3 ### ###
Vers-/Entschlüsselung
Internal Storage / SD Card
### $$$??? %%%
### $$$??? %%%
### $$$??? %%%
Und wohin mit dem Schlüssel?
Image: jannoon028 / FreeDigitalPhotos.net
© Zühlke 2011
Passwortabfrage beim Öffnen der App
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 25
Image: Nutdanai Apikhomboonwaroot / FreeDigitalPhotos.net
Achtung:Usability-Killer!
© Zühlke 2011
Schlüssel in einem Service vorhalten
• fragt Passwort bei Bedarf ab
• hält Schlüssel innerhalb des Services als Variable
• Service vor unbefugtem Zugriff absichern!
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 26
Service
Anfrage
Prompt bei Bedarf
Schlüssel
Activity
Activity
Activity
© Zühlke 2011
Überlassen wir es doch dem GerätDevice Level Encryption
Ab Android 3.0:
Transparente Verschlüsselungmit dm-crypt
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 27
Droid Pro
Galaxy S II
Vor Android 3.0:
Hersteller-spezifische Lösungen
z.B. Motorola, Samsung
© Zühlke 2011
Auf lokale Persistenz verzichten
Daten immer vom Server abrufen
Mobile Web-App
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 28
Datenhaltung im Speicher
Confidentiality
Availability
Authenticity
Utility
Control
Integrity
© Zühlke 2011
Die Welt von der anderen Seite
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 29
Confidentiality
Availability
Authenticity
Utility
Control
Integrity
© Zühlke 2011
Einloggen über den AccountManager
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 30
Sehr praktisch, aber…• Credentials werden in Plaintext in einer SQLite-Datenbank gespeichert
• Nach Rooten sind die Credentialszugreifbar
� Mit Auth-Tokens arbeiten!
Confidentiality
Availability
Authenticity
Utility
Control
Integrity
© Zühlke 2011
Client-Zertifikate
• SSL-Verbindungen mit Client-Zertifikat möglich
• Private/Public-Key im Keystore nötig
• Private-Key mit Passwort schützen
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 31
Confidentiality
Availability
Authenticity
Utility
Control
Integrity
Wirklich sicherer?
© Zühlke 2011
VPN
Out-of-the-box werden unterstützt:
• PPTP
• L2TP
• L2TP mit IPSec und Shared Key
• L2TP mit IPSec und Zertifikaten
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 32
Confidentiality
Availability
Authenticity
Utility
Control
Integrity
© Zühlke 2011
Die neue Lösung von EinfachSicher
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 33
SSL
� Peters Kunden� Verträge von Peters Kunden� Alle Tarife der Gesellschaft
Passwortschutzper Policy erzwungen,
Bildschirmsperre nach 3 min MDM,Authentifizierungmit User + Passwort,Auth-Token-Verwaltung
Web-Service für die mobile Anwendung
Backendsystem Bestandsverwaltung
Auth-Token Verschlüsselte Datenhaltung
© Zühlke 2011
Die Lösung von Aufnummersicher
13. September 2011Enterprise-class Security für Android-Apps | Masanori Fujita Folie 34
VPN (L2TP, IPSec m. CRT)
Einheitliche Geräte,Dev. Level Encryption, Passwortschutzper Policy erzwungen,Bildschirmsperre sofort MDM, mobile Web-App
Authentifizierungmit User + Passwort
Mobile Web-App
Backendsystem Bestandsverwaltung
Keine lokale Datenhaltung
Wer hat also Recht?
Image: renjith krishnan / FreeDigitalPhotos.net
Security ist mit Trade-Offs verbunden.Image: Danilo Rizzuti / FreeDigitalPhotos.net
Confidentiality
Usability
Performance
AvailabilityIntegrity
AuthenticityUtility