Android System
Entwickler oberste Schicht Android Anwendungsschicht
Linux Kernel
Native deamons and libraies
Hal
Android runtime
System Services
Android Framework
Device manufacturer apps und android api
Privileged apps
Android apps
Alle Anwendung werden hier ausgeführt
Bietet zwei Umgebungsfunktionen einmal virtuellen Ausführungsbereich und Dateisystem
Android profitiert von den Sicherheitsfunktionen
Hat Kernel Module oder Treiber die die Möglichkeit bieten die Hardware auf Erfordernisse der mobilen Nutzung anzupassen
Was ist mit den Android Kerbel Verbunden
Wakelocks im power Management
Binder driver
Native c c++ bibs
Hardware abstraction Layer hal
Wakelocks
Energieversorgung für je Leistungsaufnahme des Gerätes zu steuern ( Ruhezustand)
Durch flag-wert machbar sowas wie Schalter
Um vor angriffen zu schützen ist nicht direkt mit der App verbunden, seit 2010 auf suspend Blockern ist Standard von linux
Gibt auch von Android voreingestellt das das Handy nicht automatisch in den ruhemodus geht
Zb bei Downloads mit dem Downloadmanager
Serverkomemunikation mit dem Sync Adapter
Hintergrunddienste mit dem Jobscheduler und firebase cloud messaging
Kommunikation mit anderen Geräten mittels companion decice manager
Interprozess Kommunikationsytem IPC verwaltet Art u wiese wie mit vollen Speicher und wakelocks umgegangen wird
Apps müssen System auf wakelocks anfragen das geht mit den binders
Teil des kernels dadurch Zugriff auf Informationen
Android Systeme arbeiten mit flash Speicher, ist platzsparend aber wenn zu viele apps sich den Speicher teilen könnte er knapp werden
Native bib
Api des java Frameworks nutzt Funktionen von nativen bibs in der laufenden App
Open Gl:plattformübergreifende api für 2d 3d Grafiken
Webkit: Webbrowser Engine zur korrekten Darstellung von webinhalten
Media Framework: Ermöglichen Wiedergabe von Audio und Video
Secure socket Layer ssl: verantwortlich Sicherheit
Sqlite: in android eingebaute Datenbank, schnelle datenbankfunktion ermöglicht
Hardwareabstraktionsschicht Besteht aus bibsmodulen die eine Schnittstelle für hardwarekomponeten des Geräts implementieren
Definiert api für verschiedene Kategorien der Hardware
Liegt zw Hardwarekompoente (kamaera bluetooth) und java api Framework
Bs
Wenn Aufruf auf Zugriff auf Hardware erfolgt ruft Android die bib für diese Hardware auf
Meist in c oder cc* und besteht aus einer Reihe von header dateien
Hal bietet Möglichkeit das code in den schichten oberhalb von hal Geräteunspezifsch ist dadurch Portabel und anpassungsfähig an jedes neue Gerät
Vorteile
Eine Schicht von nativen Code zw java Code und dem c/c++ code der treiber
Abstraktionssicht für die Funktion des Geräts
Android Laufzeitumgebung (android runtime Art)
System das code von komplexen Hochsprachen in binär Maschine code
Ab Version 5 läuft jede App mit eigener Instanz der Art
Java Klassen werden zunächst in dex bytecode umgewandelt und mit der art in Maschinecode
Funktionen
Ahead of time Kompilierung: App wird schon bei Installation in low Level Maschinecode kompiliert
Garbage collection: reduziert die Speichernutzung im im Hintergrund
Bei fehlersuche gibt es Verbesserung
Was gehört zur android api und android Framework
View System
Notifikation Manager
Location manager
Activity manager
Content Provider
Ressource manager
System-apps
View System und notification manager und Location manager
1. Erstellung von Benutzeroberflächen, bietet ui Komponenten sog. View Objects wie Schlatfächen Bilder und Listen
2.benutzerdefinierten Warnungen oder Hinweisen, visuelle akustische Signale bsp wenig Akku
3 Zugriff auf Informationen ermöglicht die von gnss Empfängern gesammelten werden, Standortabhänge Funktion
Acitivty manager
Resource manager
1 verwaltet Lebenszyklus der App
Interaktion zw Nutzern und Anwendung
Zb Drehung von Handy, eingehende Telefonanruf der die MusikWiedergabe pausiert
Vollbildfenster mit ui Elementen
2 Möglichkeit Information mkt anderen apps zuzugreifen
3 Ressourcen umgehen die nicht unmittelbar Bestandteil des App codes sind sowas wie Audio Video Animation die Kontext abhängig nach eingestellter Systemsoraxhe oder Bildschirmgröße angezeigt werden müssen
Kann bei Handhabung verschiedener Bildschirmgrößen und Auflösung helfen
System-Apps
E Mail Kalender Internetbrowser Kontakte
Entwickelter können diese benutzen um auf verschiedene Funktionen in ihrer App zuzugreifen ohne sie diese neu erfinden müssen
Unter der höheren Abstraktionschicht und nur von google
Sicherheit
Verschlüsslungen Zugriffsbeschränkungen beginnen schon an der Basis der Android Plattform linux Kernel
Drei hauptkategorien
Hardwaresicherheit
Betriebssicherheit
Schutz personenbezogener Daten
Seit 7.0 verified boot, eine Technik zu Gewährleistung der Sicherheit
Hauptzweck: sicherzustellen dass der Kernel und Android System aus vertrauenswürdigen Quellen stammen
Im chipsatz wegen kryptografische Techniken verwendet um Sicherheit des bootvorgang zu gewährleisten
Speicher auch anfällig deswegen weichen benutzen der rowhammer Angriffe nicht zu lässt
Seit 9.0 Funktion strongbox keymaster
Ist sicherheitsmodul das eine manipulationssicheren hardware implementiert ist um krypzografische Schlüssel zu verwalten
Hardwareebene Sicherheit kann je nach Hersteller des soc von gerät zu gerät unterscheiden
Qualcomm snapdragon bietet mehrere ebenen der Hardwaresicherheit
Betriebssichheit
Hauptquelle für Sicherheit ist der Kernel, Art keine
Wichtigste mechanismen zur Gewährleistung sind Prozess sandbox, se linux für Android und Kryptografische Funktionen von Android
Prozess sandbox
Alle apps werden innerhalb eines eigenen Prozesses mit eigenen Speicherbereich und einem Abschnitt des Dateisystems auf den ohne weiteres keine andere App zugreifen können isoliert =app sandboxing
Befindet sich im Kernel, basiert auf unix Systemen angebotenen Trennung von Prozessen
Um einen Angriff zu machen muss der Kernel selbst kompromittiert werden
Se linux für Android
Steht für Security enhanced
Eine reihe von Richtlinien mit Zulassungsbeschränkungen (allow, deny)
Vorteile wie datenlecks und das umgehen von Sicherheitsvorkehrungen zw verschiedenen Prozessen
Schwachstellen wurden minimierte, sodass jedes Gerät es nun braucht
Aosp bietet Reihe von Basisrichtlinien für Apps und Services die auf Android Geräten laufen
Können speziell für ein Gerät angepasst werden
Kryptografische Funktionen von Android
Relevante basiert auf jca java cryptography architecture)
Wichtigesten Kryptografische Komponenten sind security Provider, keystore und Keychain
Keystore klasse dient als Speicher für alle kryptografischen Zertifikate und Schlüssel
Kann als Container mit Schlüsseln und Zertifikate angesehen werden der angesehen aber nicht exportiert werden kann
Die Klasse Wird von keychain api und Security Library verwendet
Api kann für anmeldeinformation verwendet werden die Systemweit gelten
Schutz vor Daten
Seit 10.0 dateibasierte Verschlüsselung ( file-based encryption fbe)
Meisten Sicherheitsangriffe entstehen durch nachlässige Nutzer deswegen muss man:
App Berechtigung kontrollieren
=am besten nur einmalig oder während der Nutzung
Google Play Prozent verwenden
=systemeigene Android-Sicherheitskontrolle die missbräuchliche oder bösartige Apps scannt
Sichereres Surfen erzwingen
Safe browsing gibt Warnung wenn verdächtige Website geöffnet wird
Zwei Faktor Authentifizierung
=sicherheitsfrage oder Fingerabdruck
Bildschirmsperre und Smart lock
=smart lock kann Orte definieren wo man keine Bildschirmsperre brauch
Standort Einstellung
=kann über wifi Mobilfunknetz oder gps ermittelt werden, nur für vertrauenswürdige Apps oder nur während der Nutzung
Verschlüsslung
=persönliche Daten durch Passwort
SoftwareAktualisierung
Neue Updates bieten mehr Sicherheit
Unsichere Verbindung
=kostenlose und öffentliche wlan vermeiden weil man in the middle Angriffe, können Daten zugreifen und malware runterladen, vpn kann es vermeiden
Zusätzliche sicherheitsapps runterladen
Kommunikation mit Netzwerken
Netzwerk ist Gruppe von Geräten oder Computer die verbunden sind
Api und Netzwerkprotole werden verwendet um Pakete weiterzuleiten und die Kommunikation zu ermöglichen
Es ist eine Abstraktionsschicht damit man kein Detailwissen benötigt
Aufpassen bei Übertragung von sensiblen Daten, Zugangsbeschränkungen, Datenverkehr einer app über Tls leiten
Netzwerkstatus
Konnektivität mit Netzwerken wird mit der ConnectivityManager gesteuert.
Hat Methoden um zu prüfen ob Netzwerk verfügbar ist oder verbunden ist
Connected
Connecting
Disconnected
Disconnecting
3 Arten
TYPEWIFI, TYPEMOBILE TYPBLUETOOTH
Netzbetrieb
Verschiedene Möglichkeiten Apps mit anderen Systemen zu verbinden wie http oder Datenformat wie json xml
Http Verbindung
Http mit Webserver
Http Anfrage (request) an http Server
Java.net api wird als Standard bib zum abrufen von Daten über http verwendet
Web Services
Damit kann man App in eine Lage versetzen die mit anderen Apps oder Server kommunizieren
Mit web Services daten kann man über das Internet senden und empfangen
Zum Beispiel Information zu bekommen, aus einem anderen Server
Merkmale
Standardisierte Datenaustausch wie xml oder json
Nicjt an bestimmtes Betriebssystem oder eine bestimmte Programmiersprache gebunden
Können synchron oder asynchron sein
Synrcon wird bei Funktionsaufruf die benutzerinteraktion angehalten bis eine Rückmeldung erfolgt, bei asynchron wird nichts unterbrochen
Bieten Möglichkeit viele verschiedene Arten von Dateien auszutauschen
Web api
Mit Externe Services zu interagieren
Social Media Plattform api um Information zu bekommen
Telefoniefunktionen
TelephonyManager und PhoneStateListener sind zwei Android Klassen
SMSManager
Zuletzt geändertvor 22 Tagen