# Μοντέλο privacyΤι αποθηκεύεται, τι όχι, και οι ευαίσθητες κατηγορίες που η μηχανή δεν βλέπει ποτέ.

## Σύνοψη αρχιτεκτονικής

Το μοντέλο privacy του Notification Guard βασίζεται σε τρεις
δομικές ιδιότητες:

1. **Μόνο τοπικά δεδομένα.** Όλα αποθηκεύονται στην ιδιωτική
   SQLite βάση δεδομένων της εφαρμογής. Καμία cloud συγχρόνιση,
   καμία κατάσταση στον server, κανένας λογαριασμός.
2. **Καμία άδεια δικτύου στο manifest.** Το
   `android.permission.INTERNET` **δεν είναι δηλωμένο** στο
   AndroidManifest. Η εφαρμογή δεν μπορεί να κάνει network
   calls — τελεία. Αυτό είναι επαληθεύσιμο μέσω
   `aapt dump badging`.
3. **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 ειδοποιήσεων.

## Πώς να επαληθεύσεις

Αν αξιολογείς να αναπτύξεις αυτό στον οργανισμό σου:

1. **Επιθεώρηση APK manifest.**

   ```sh
   aapt dump badging notification-guard.apk | grep -i permission
   ```

   Επιβεβαίωσε ότι το `android.permission.INTERNET` δεν
   εμφανίζεται.

2. **Επιθεώρηση συμπεριφοράς δικτύου.**

   Τρέξε την εφαρμογή σε συσκευή test με πλήρη σύλληψη
   κυκλοφορίας (PCAP, διαφανές proxy). Επιβεβαίωσε ότι δεν
   υπάρχουν εξερχόμενες συνδέσεις.

3. **Επιθεώρηση βάσης δεδομένων.**

   Το αρχείο SQLite ζει σε ιδιωτικό χώρο αποθήκευσης της
   εφαρμογής. Σε rooted συσκευή test, αντίγραψέ το έξω και
   επιβεβαίωσε ότι δεν εμφανίζονται ειδοποιήσεις από εφαρμογές
   ευαίσθητων κατηγοριών.

Αν κάποιος από αυτούς τους ελέγχους επιστρέψει αποτέλεσμα που
δεν περίμενες, παρακαλώ στείλε λεπτομέρειες μέσω της σελίδας
[Επικοινωνία](/el/contact/). Όλο το προϊόν εξαρτάται από το να
είναι αυτές οι εγγυήσεις επαληθεύσιμες.
