Μοντέλο privacy
Σύνοψη αρχιτεκτονικής
Το μοντέλο privacy του Notification Guard βασίζεται σε τρεις δομικές ιδιότητες:
- Μόνο τοπικά δεδομένα. Όλα αποθηκεύονται στην ιδιωτική SQLite βάση δεδομένων της εφαρμογής. Καμία cloud συγχρόνιση, καμία κατάσταση στον server, κανένας λογαριασμός.
- Καμία άδεια δικτύου στο manifest. Το
android.permission.INTERNETδεν είναι δηλωμένο στο AndroidManifest. Η εφαρμογή δεν μπορεί να κάνει network calls — τελεία. Αυτό είναι επαληθεύσιμο μέσωaapt dump badging. - Pre-filter privacy. Οι ευαίσθητες κατηγορίες εφαρμογών (τραπεζική, 2FA/authenticator, υγειονομικά, δημόσιες υπηρεσίες) διαχωρίζονται πριν η μηχανή κανόνων δει τις ειδοποιήσεις τους. Το περιεχόμενό τους δεν εισέρχεται ποτέ στη βάση.
Τι αποθηκεύεται
Όταν μια ειδοποίηση συλλαμβάνεται για αξιολόγηση, γράφονται τα ακόλουθα στην τοπική SQLite βάση:
- Το όνομα πακέτου της εφαρμογής προέλευσης (π.χ.
com.whatsapp). - Ένα timestamp.
- Η κατηγορία που έχει εκχωρηθεί (Κοινωνικά, Παιχνίδια, Ειδήσεις, Αγορές, Streaming κλπ.).
- Η απόφαση του κανόνα: allow, snooze ή block.
- Αν είναι blocked: ο τίτλος και το κείμενο σώματος της ειδοποίησης (ώστε ο χρήστης να μπορεί να δει τι κατασταλεί).
Για τις blocked ειδοποιήσεις, ο τίτλος και το σώμα υπόκεινται επίσης σε καθαρισμό TTL — εξ ορισμού, 24 ώρες μετά τη σύλληψη. Το «Διαγραφή όλων» καθαρίζει τα πάντα άμεσα.
Τι δεν αποθηκεύεται ποτέ
Για ειδοποιήσεις από οποιαδήποτε εφαρμογή των ευαίσθητων κατηγοριών:
- Το πακέτο αναγνωρίζεται στο όριο της υπηρεσίας listener.
- Η ειδοποίηση περνά αμέσως, χωρίς αξιολόγηση ή αποθήκευση.
- Κανένας τίτλος, κανένα σώμα, κανένα μεταδεδομένο σχετικά με αυτή την ειδοποίηση δεν φτάνει ποτέ στη βάση.
Η λίστα ευαίσθητων κατηγοριών είναι hardcoded στη μηχανή κανόνων. Περιλαμβάνει (μη εξαντλητικά):
- Τραπεζικές εφαρμογές (DKB, PayPal, ταμιευτήρια, …)
- Εφαρμογές 2FA / authenticator (Google Authenticator, Authy, …)
- Εφαρμογές ασφαλιστικών ταμείων (TK, AOK, Barmer, …)
- Εφαρμογές δημοσίων υπηρεσιών (ομοσπονδιακές υπηρεσίες, Elster, …)
Αυτή η λίστα μπορεί να επεκταθεί μέσω διαμόρφωσης στο build — για αναπτύξεις που χρειάζονται προσθήκη επιπλέον ευαίσθητων κατηγοριών (π.χ. εσωτερικές εταιρικές εφαρμογές που δεν πρέπει ποτέ να φιλτραριστούν).
Περιορισμοί συμμόρφωσης Google Play
Η αρχιτεκτονική δομείται γύρω από έξι σκληρούς περιορισμούς συμμόρφωσης που πηγάζουν από τις τρέχουσες πολιτικές Google Play:
| ID | Περιορισμός | Πώς τον πληροί η εφαρμογή |
|---|---|---|
| C1 | Σαφής γνωστοποίηση και συγκατάθεση | Οδηγός onboarding 4 βημάτων πριν την ενεργοποίηση άδειας listener. |
| C2 | Κανένα SYSTEM_ALERT_WINDOW | Επαναειδοποιήσεις μέσω NotificationManager, χωρίς overlay παράθυρο. |
| C3 | TTL διατήρησης δεδομένων | Ρυθμιζόμενη διατήρηση (24h εξ ορισμού), περιοδική εργασία καθαρισμού, χειροκίνητη διαγραφή. |
| C4 | Contact Picker αντί για READ_CONTACTS | Η πλήρης άδεια READ_CONTACTS δεν χρησιμοποιείται. Μελλοντικοί κανόνες με επίγνωση επαφών θα χρησιμοποιήσουν τον Android Contact Picker. |
| C5 | Φίλτρο privacy (blocklist ευαίσθητων κατηγοριών) | Hardcoded pre-filter στην είσοδο της μηχανής. |
| C6 | Καμία στρώση δικτύου | android.permission.INTERNET εκτός manifest. Καμία εξάρτηση HTTP client σε κανένα Cargo.toml. |
Αυτές δεν είναι προθέσεις — είναι δομικές. Η αφαίρεση κάποιας από αυτές θα απαιτούσε αλλαγή αρχιτεκτονικής, όχι απλώς αλλαγή configuration.
Άδειες manifest
Τέσσερις δηλωμένες άδειες, η καθεμία δεμένη σε συγκεκριμένη λειτουργία:
BIND_NOTIFICATION_LISTENER_SERVICE— Κεντρική λειτουργία. Χωρίς αυτή, η εφαρμογή δεν μπορεί να διαβάσει ή να φιλτράρει ειδοποιήσεις. Ενεργοποιείται από τον χρήστη μέσω ρυθμίσεων συστήματος.RECEIVE_BOOT_COMPLETED— Επανασυνδέει τον listener μετά από επανεκκίνηση συσκευής.WAKE_LOCK— Πυροδοτεί snooze timers αξιόπιστα από λειτουργία Doze (προγραμματισμένο για φάση 2).POST_NOTIFICATIONS— Εμφανίζει τις δικές μας επαναειδοποιήσεις (released ή snoozed) χωρίς overlay παράθυρο (βλ. C2).
Καμία runtime άδεια, καμία περιορισμένη ειδική πρόσβαση πέραν του listener ειδοποιήσεων.
Πώς να επαληθεύσεις
Αν αξιολογείς να αναπτύξεις αυτό στον οργανισμό σου:
Επιθεώρηση APK manifest.
aapt dump badging notification-guard.apk | grep -i permissionΕπιβεβαίωσε ότι το
android.permission.INTERNETδεν εμφανίζεται.Επιθεώρηση συμπεριφοράς δικτύου.
Τρέξε την εφαρμογή σε συσκευή test με πλήρη σύλληψη κυκλοφορίας (PCAP, διαφανές proxy). Επιβεβαίωσε ότι δεν υπάρχουν εξερχόμενες συνδέσεις.
Επιθεώρηση βάσης δεδομένων.
Το αρχείο SQLite ζει σε ιδιωτικό χώρο αποθήκευσης της εφαρμογής. Σε rooted συσκευή test, αντίγραψέ το έξω και επιβεβαίωσε ότι δεν εμφανίζονται ειδοποιήσεις από εφαρμογές ευαίσθητων κατηγοριών.
Αν κάποιος από αυτούς τους ελέγχους επιστρέψει αποτέλεσμα που δεν περίμενες, παρακαλώ στείλε λεπτομέρειες μέσω της σελίδας Επικοινωνία. Όλο το προϊόν εξαρτάται από το να είναι αυτές οι εγγυήσεις επαληθεύσιμες.