-
Notifications
You must be signed in to change notification settings - Fork 0
Security
Bal Masqué is designed as a privacy-first tool. The core principle is that no data ever leaves the device:
- ❌ No internet permission — the app cannot make network connections
- ❌ No analytics or telemetry
- ❌ No cloud services
- ✅ All processing happens locally on-device
- ✅ Temporary files are overwritten with zeros before deletion
- ✅ Image arrays are zeroed-out in memory on app pause/stop
| Permission | Purpose | Android version |
|---|---|---|
READ_EXTERNAL_STORAGE |
Read images from gallery | Android 5–12 |
WRITE_EXTERNAL_STORAGE |
Save processed images | Android 5–9 |
READ_MEDIA_IMAGES |
Read images from gallery | Android 13+ |
Note: On Android 10+, the app uses the MediaStore API (scoped storage) for saving images, so WRITE_EXTERNAL_STORAGE is not used on modern devices.
| Data type | Handling |
|---|---|
| Original images | Read-only, never modified |
| Processed images | Saved to Pictures/BalMasque/ via MediaStore |
| Temporary files | Overwritten with zeros, then deleted |
| Metadata (EXIF, GPS, XMP) | Stripped completely before saving |
| App state | Not persisted, not backed up |
| Setting | Value | Purpose |
|---|---|---|
android:allowBackup |
false |
Prevents cloud backup of app data |
android:usesCleartextTraffic |
N/A | No INTERNET permission, not needed |
android:targetSdkVersion |
34 |
Android 14 compliance |
android:minSdkVersion |
21 |
Android 5.0 Lollipop minimum |
The APK is safe to sideload (install from outside the Play Store):
- No dangerous permissions: No access to contacts, camera, microphone, location, or internet
- Minimal attack surface: Image processing only, no web views or dynamic code loading
- Open source: Full source code available for audit (GPL-3.0)
- Signed APK: Release builds are signed with a consistent key
If you find a security vulnerability, please open a private issue or contact the maintainer directly.
Bal Masqué est conçu comme un outil axé sur la vie privée. Le principe fondamental est qu'aucune donnée ne quitte jamais l'appareil :
- ❌ Aucune permission internet — l'application ne peut pas établir de connexion réseau
- ❌ Aucune analyse ni télémétrie
- ❌ Aucun service cloud
- ✅ Tout le traitement se fait localement sur l'appareil
- ✅ Les fichiers temporaires sont écrasés avec des zéros avant suppression
- ✅ Les tableaux d'images sont remis à zéro en mémoire lors de la pause/arrêt de l'application
| Permission | Usage | Version Android |
|---|---|---|
READ_EXTERNAL_STORAGE |
Lire les images de la galerie | Android 5–12 |
WRITE_EXTERNAL_STORAGE |
Sauvegarder les images traitées | Android 5–9 |
READ_MEDIA_IMAGES |
Lire les images de la galerie | Android 13+ |
Note : Sur Android 10+, l'application utilise l'API MediaStore (stockage scopé) pour sauvegarder les images, WRITE_EXTERNAL_STORAGE n'est donc pas utilisé sur les appareils modernes.
| Type de données | Traitement |
|---|---|
| Images originales | Lecture seule, jamais modifiées |
| Images traitées | Sauvegardées dans Pictures/BalMasque/ via MediaStore |
| Fichiers temporaires | Écrasés avec des zéros, puis supprimés |
| Métadonnées (EXIF, GPS, XMP) | Supprimées intégralement avant sauvegarde |
| État de l'application | Non persisté, non sauvegardé |
| Paramètre | Valeur | Objectif |
|---|---|---|
android:allowBackup |
false |
Empêche la sauvegarde cloud des données de l'application |
android:usesCleartextTraffic |
N/A | Pas de permission INTERNET, pas nécessaire |
android:targetSdkVersion |
34 |
Conformité Android 14 |
android:minSdkVersion |
21 |
Minimum Android 5.0 Lollipop |
L'APK est sûr à installer en sideloading (hors Play Store) :
- Pas de permissions dangereuses : Pas d'accès aux contacts, caméra, microphone, localisation ou internet
- Surface d'attaque minimale : Traitement d'images uniquement, pas de vues web ni de chargement dynamique de code
- Open source : Code source complet disponible pour audit (GPL-3.0)
- APK signé : Les builds release sont signés avec une clé cohérente
Si vous trouvez une vulnérabilité de sécurité, veuillez ouvrir un ticket privé ou contacter le mainteneur directement.