Salut amis baugeurs,
Je recherche des testeurs pour une app que je suis en train de finir. Le but? Permettre l'émission de message réellement éphémère sécurisés entre deux terminaux.
- Protocole?
L'appli génère pour chaque terminal un couple clé public/clé privé basé sur RSA 2048. Quand vous envoyez un message, vous chiffrez avec la clé de votre correspondant. En lisant le message, il déchiffre avec sa clé privée >> bref RIEN de nouveau
- L'échange de clé?
L'échange de clé se fait actuellement par beam (le p2p nfc android) vers le terminal cible des informations suivantes de votre terminal :
- la clé publique
- un indentifiant unique long et aléatoire identifiant votre terminal sur le serveur (faille: même si la chaine fait 256 caractères sur 56 possibilités ; cette chaine est soumise à : ne pas avoir de MITM, ne pas la divulguer - enfin vous la voyez pas sauf dans un sharedpreferences)
- le serveur que vous utilisez pour récupérer les messages
- le nom de votre terminal
le tout sous la forme d'une url donc dans l'absolue, suffirait que l'appli gère SIMPLEMENT les requetes http://monhote/..../lesparamètres
- L'envoi de messages?
Pour envoyer un message, choisissez le terminal et saisissez le message. En validant,le message est chiffré puis il est poussé vers le serveur cible sous la forme serveur/service/emetteur/receveur/message (base64 sur chaque element)
- Récupération de messages?
Pour récupérer vos messages, depuis le menu : update des messages pour savoir si des messages sont présents ou non.
- failles?
le fait de récupérer les messages avec l'identifiant uniquement pose un soucis de securite - je mets d'ici peu un autre type de requete :
- création automatique d'une deuxieme infos cachee (type cle privee) enregistrée avec l'identifiant dans le sharedpreference qui a chaque requete de recuperation, authentifiera le terminal (evite donc qu'un ami pouvant lire votre identifiant perso puisse récupérer des messages pour vous meme si il lui faudra en plus votre cle privee... et sur 2048bits, ce sera tout de meme long
pourquoi je ne l'ai pas fait avant? A la base, je voulais faire en sorte que n'importe qui demande à utiliser un serveur, ne laisse jamais de traces autres que les messagesqui sont en attentes (anonymat) mais je me rend compte qu'il se pourrait qu'on utilise assez longtemps un serveur donné donc l'empreinte d'un terminal avec la demande peut rentrer en jeu mais le serveur devra se souvenir de celui-ci : moins d'anonymat!
- si vous en voyez d'autres, n'hesitez pas !
J'espère finir rapidement d'implémenter :
- le partage d'infos autrement que par nfc (je fais actuellement un filter sur data host/scheme/path ET nfc donc pas long à modifier)
- l'envoie de messages directement de pair à pair par sms (pourrait être lourd par contre! donc sms illimités seulement)
- virtualisation de réseau p2p2serveur (mélange de p2p et de serveurs d'information sur les noeuds) - ayant travaillé dessus, c'est faisable mais sera long à mettre en place
J'espère avoir quelques testeurs pour l'app, le code source sera dispo une fois tout terminé (comme d'habitude)
Kevin Le Perf