# MASTRPass Android — Sicherheits-Beta 0.4.0

MASTRPass ist ein nativer, lokaler Tresor für Seed-Phrasen, Passwörter,
sichere Notizen und vertrauliche Bilder auf Android. Die App besitzt
bewusst **keine Internetberechtigung**, kein Backend, kein Konto, keine Werbung
und keine Telemetrie. Der kryptografische Core ist in Rust implementiert; die
Oberfläche und der verschlüsselte Zusatzspeicher verwenden Kotlin und Jetpack
Compose.

> **Sicherheits-Beta / nicht auditiert:** Diese Version ist funktional, aber noch
> nicht extern geprüft. Nutze sie nur als zusätzliche verschlüsselte Kopie,
> niemals als einziges Backup und zunächst nicht für hochpreisige Wallets.

## Was diese Version kann

- Sprachauswahl als allererste Ansicht, danach die erklärte Wahl der
  Entsperrmethode und ein vollständig übersetztes fünfstufiges Onboarding
- zwei zu Beginn erklärte Entsperrmodelle: automatischer biometrischer
  Schnellzugriff oder drei Schritte für seltene Nutzung
- manuelle Notfall-Entsperrung nur mit Masterpasswort **und** vollständigem,
  separatem 256-Bit-Recovery-Key
- 14 sichtbare, nummerierte Recovery-Key-Felder mit Verteilung eines
  vollständig eingefügten Keys
- automatischer biometrischer Schnellzugriff über Android Keystore für häufige
  Nutzung; dabei wird im Normalfall kein Recovery-Key abgefragt
- im strikten Modus Masterpasswort, vollständiger Recovery-Key und danach starke
  Biometrie als gerätegebundene dritte Zugangsprüfung
- lokales Prüfen und Verschlüsseln von BIP39-Phrasen
- Wallet-Einträge wahlweise als Phrase, Bild oder beides
- Passwort-Einträge mit Titel, Benutzername, Passwort, URL und Notizen sowie
  lokalem kryptografischem Passwortgenerator
- verschlüsselte sichere Notizen und optionale verschlüsselte Bildanhänge
- System-Fotoauswahl ohne Speicherberechtigung; deutlicher Hinweis, das Original
  unmittelbar überall ausserhalb von MASTRPass zu löschen
- sensible Zwischenablageeinträge werden markiert und nach 30 Sekunden nach
  bestem Bemühen gelöscht
- einzelne Wörter nur per Gedrückthalten anzeigen; automatische Ausblendung
- verschlüsselter Gesamtexport und bestätigungspflichtiger Import; alte
  `MASTRP01`-Vault-Dateien bleiben importierbar
- 40 vorkonfigurierte Chain-Profile und sieben vollständige UI-Sprachen ohne
  englischen Fallback
- gut sichtbare SOL-/USDC-Spendenseite für Solana Mainnet
- nur vier Hauptziele: Vault, Hinzufügen, Sicherheit und Mehr
- adaptives Launcher-Icon mit dem offiziellen MASTR-Logo, schwarzem Hintergrund
  und monochromer Android-Variante

Nicht enthalten oder bewusst gesperrt: Cloud-Synchronisierung, Address
Derivation, TOTP/PIN als Vault-Faktor, FIDO2-Passkeys, SLIP-39, Monero-25-Wort-
Seeds und ein eigener Netzwerk-Stack.

## Zwei Entsperrvarianten

- **Seltene Nutzung / strikter Modus:** Bei jedem Entsperren sind
  Masterpasswort, der vollständige Recovery-Key und danach starke Biometrie
  nötig. Biometrie ist hier eine dritte gerätegebundene Zugangsprüfung, aber
  kein dritter portabler kryptografischer Wiederherstellungsfaktor. Auf einem
  neuen Gerät erfolgt die Wiederherstellung weiterhin mit Passwort und
  Recovery-Key.
- **Häufige Nutzung:** Die Einrichtung benötigt weiterhin beide vollständigen
  Faktoren. Danach kann starke Biometrie einen gerätegebundenen, mit Android
  Keystore geschützten Tresor-Datenschlüssel freigeben. Der biometrische Dialog
  startet beim Öffnen automatisch. Ändert sich die Biometrie oder
  Gerätesicherheit, wird dieser Schnellzugriff ungültig und beide vollständigen
  Faktoren sind wieder nötig.

Der Recovery-Key muss in beiden Varianten offline und getrennt aufbewahrt
werden. Es gibt keinen Reset, keine Cloud-Wiederherstellung und keine
Support-Hintertür.

## Sicherheitsmodell in Kürze

- Argon2id: 128 MiB, 4 Iterationen, Parallelität 2
- HKDF-SHA-256 mischt Passwortableitung und Recovery-Key
- XChaCha20-Poly1305 verschlüsselt und authentifiziert DEK, primären Vault und
  Seed-Phrase-Einträge
- AES-256-GCM mit aus dem DEK abgeleiteten, domänengetrennten Schlüsseln schützt
  Zusatzmetadaten, Zugangsdaten, Notizen und Bilder in getrennten, aufgefüllten
  Dateien
- zufälliger 256-Bit-DEK; Vault-Datei auf feste Größenklassen aufgefüllt
- Metadaten liegen im verschlüsselten Payload
- `FLAG_SECURE`, 60-Sekunden-Autosperre und Sperre beim Verlassen der App
- kein `android.permission.INTERNET`; externe offizielle Links öffnen im Browser
- Android-Backups und Klartextverkehr sind deaktiviert

Details: [SECURITY.md](SECURITY.md), [THREAT_MODEL.md](THREAT_MODEL.md) und
[VAULT_FORMAT.md](VAULT_FORMAT.md).

## APK installieren

1. Die SHA-256-Prüfsumme aus `dist/MASTRPass-Security-Beta-v0.4.0-SHA256SUMS.txt`
   mit der APK vergleichen.
2. Android 9 (API 28) oder neuer verwenden.
3. Installation aus der gewählten Dateiquelle einmalig erlauben und die APK
   öffnen.
4. Recovery-Key während der Einrichtung **offline auf Papier** sichern.

Die beigelegte APK ist mit einem einmaligen Beta-Schlüssel signiert. Eine später
mit dem endgültigen MASTRlabs-/Play-Schlüssel signierte Ausgabe kann eine vorherige
Deinstallation erfordern. Vorher immer einen verifizierten verschlüsselten Export
und den Recovery-Key sichern.

Diese 0.4.0-APK verwendet einen neuen einmaligen Beta-Schlüssel.
Eine bereits installierte frühere Sicherheits-Beta muss deshalb in der Regel
zuerst deinstalliert werden. Falls dort bereits ein Tresor liegt, diesen vorher
verschlüsselt exportieren und beide Entsperrfaktoren getrennt sichern.

## Reproduzierbar bauen

Voraussetzungen: JDK 17, Android SDK 35, Build Tools 35.0.0, Android NDK r28c,
Rust stable und `cargo-ndk`.

```bash
export ANDROID_HOME=/path/to/android-sdk
export ANDROID_NDK_HOME=/path/to/android-ndk-r28c
cargo install cargo-ndk --locked
./scripts/build-android.sh
```

Ohne Signaturvariablen entsteht eine unsigned Release-APK. Für einen signierten
Build werden ausschließlich Umgebungsvariablen verwendet:

```bash
export MASTRPASS_KEYSTORE_PATH=/secure/path/release.jks
export MASTRPASS_KEYSTORE_PASSWORD='...'
export MASTRPASS_KEY_ALIAS='...'
export MASTRPASS_KEY_PASSWORD='...'
./scripts/build-android.sh
```

Keystore und Passwörter dürfen niemals ins Repository gelangen. Der Gradle
Wrapper prüft die Gradle-Distribution per SHA-256.

## Offizielle Angaben

- Website: https://askmastr.xyz/
- X: https://x.com/MASTRlabs
- Linktree: https://linktr.ee/askmastr.xyz
- Gebaut von MASTRlabs
- Spendenadresse (Solana Mainnet, **nur SOL oder USDC als SPL-Token**):
  `6ELa36JmfYL8RFFu5i6WfRAQAykkyVNRqBtpoaTaEwNq`

Sende niemals EVM-/ERC-20-Token oder Assets eines anderen Netzwerks an diese
Adresse.

## Lizenz und Marken

Der eigene Quellcode ist mit `AGPL-3.0-only` gekennzeichnet. Drittanbieter-
Abhängigkeiten behalten ihre jeweiligen Lizenzen. Logo und MASTR-/MASTRlabs-
Marken sind offizielle Markenassets und werden nicht durch die Code-Lizenz
freigegeben. Siehe [NOTICE.md](NOTICE.md).
