Axes de développement



  • Désolé mais j’ai été déconnecté à plusieurs reprises de l’IRC (problème avec l’app que j’utilisais ou autres).
    J’avais suggéré un replica local de la base sur l’app pour éviter les requêtes (app id + bruit). Je vais jeter un coup d’oeil à ce lien https://github.com/Exodus-Privacy/exodus/blob/v1/exodus/restful_api/views.py#L202
    Je n’ai aucune connaissance en python, donc ça ne sera de mon côté qu’un survol et je risque de poser pas mal de questions.
    Dans ma réflexion, je m’étais basé sur une app que j’avais développée (browser qui bloquait les pubs et autres traqueurs) et se servait de la base ATS de hpHosts (classifications hpHosts). J’avais simplement développé côté serveur un replica qui permettait une mise à jour incrémentale via un service, l’app arrivait avec un numéro de version et le différentiel (données à enlever/ajouter) était fait avec la version actuellement en production.
    Je n’ai pas du tout le recul sur la faisabilité et surtout je ne veux pas débarquer avec mes gros sabots. L’idée pour moi est de cerner au mieux les problèmes pour aider de façon adéquate.


  • administrators

    Coucou !
    Il ne faut surtout pas hésiter à poser des questions et encore moins hésiter à documenter les échanges. En effet, EP ayant eu une actualité trop importante, nous n’avons malheureusement pas eu le temps de garder des traces de tout. Mais il n’est jamais trop tard pour “capitaliser”.

    Welcome here!



  • Je vais commencer avec mes questions 🙂
    J’ai vu dans l’api REST qu’il y avait la méthode get_all_applications
    Est-on sûr d’avoir les dernières données car je n’ai pas vu un filtrage par date pour le “distinct” ?
    Une date est-elle enregistrée pour chaque enregistrement ? Car on pourrait imaginer un système de pagination. L’application conserve la date de synchro avec la base et la requête suivante se fait avec la date pour ne récupérer que les nouvelles données. Ensuite côté client, il suffit de mettre à jour localement la base (création sqlite si l’app n’est pas connue ou un update).
    Un MCD de la base est-il disponible ?



  • Autre question :
    Application contient une référence unique (relation 1-1 à Rapport)
    Ne peut-on pas rajouter une référence à la date de mise à jour du rapport dans le filtrage ?


  • administrators


  • ag_2018

    La copie de la base complète n’est pas envisageable a terme. Même au format JSON quand on a basculé vers justement id + bruit c’était en raison de la taille des données à récupérer et du stockage inutile sur le téléphone. A l’époque: 1k rapport représentait environ 1Mo, là on est à 15k+ rapport donc 15Mo en JSON donc faut voir en terme sqlite derrière. Ça ne fera que gonfler.

    Perso une application qui a plein de donnée qui me semble inutile, je la vire. 15Mo de data pour 100 apps sur le téléphone par exemple ça me semble excessif.

    Si l’idée est d’anonymiser un peu mieux et non plus d’envoyé id + bruit. @CapsLock avait émis un temps l’idée de k-anonymity: https://en.wikipedia.org/wiki/K-anonymity et https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/ (Cloudflare, Privacy and k-Anonymity). On génère beaucoup plus de bruit car on récupèrera plus de rapport du moins pour un certain nombre d’app. Si on se base sur l’id pour chercher. si on prend admetons les 5 premiers caractères

    fr.tot
    com.g

    ça fera effectivement plus de bruit mais pour certaines apps elles seront peut être unique dans ce cas là si notamment il se base pas sur un nom de domaine pour constuire l’id. On pourra toujours en déduire des choses.



  • OK donc 1ko par app en moyenne pour sauvegarder ces champs https://github.com/Exodus-Privacy/exodus/blob/v1/exodus/reports/models.py#L19-L47

    Sinon, il est possible de faire un download complet la première fois et supprimer localement toutes les données inutilisées. Et si une application est installée par la suite (et précédemment effacée localement - donc inexistante en base locale), elle est envoyée avec du bruit. C’est peut être mieux que d’envoyer l’ensemble de ces app avec du bruit ?



  • Sinon, une autre piste serait de ne synchroniser en base que les ID des apps présents sur la base du serveur.

    • Cela permettrait de ne pas envoyer une application qui n’a pas été analysée.
    • De gérer le bruit :
      – Test sur le nombre d’app répondant à un critère - exemple : “fr.” => 853 , “fr.t” => 75, “fr.to” => 50, “fr.tot” => 2, en définissant un seuil on choisit à combien de caractères on tronque. Et on gère le bruit avec ce seuil (qui va varier d’une app à l’autre) ?
      – Peut être optimisé en fonction des app présentes sur le téléphone avant envoi (par regroupement) : fr.abcd et fr.abfk => fr.ab etc.

  • ag_2018

    C’est le cas en fait. Je n’envoie des demandes que pour ce qui a déjà été analysé par exodus. + du bruit issue de cette liste.
    C’est une vision très partiel du contenu réel du téléphone. Google Play et uniquement celle analysé par exodus. Mais oui on peut faire mieux sûrement.