Pass-Secure est un gestionnaire de mots de passe TCP offrant des fonctionnalités de gestion de mots de passe dans un environnement client-serveur. Il permet d'interagir avec un serveur via des commandes pour enregistrer, récupérer, stocker ou supprimer des mots de passe. Pass-Secure permet une encryption coté client des mot de passe envoyés au serveur avec un autre mot de passe, ce qui ajoute un niveau de sécurité majeur. Le serveur n'a pas connaissance des mots de passe décryptés.
Les fichiers sont stockés sur le serveur selon l'arborescence suivante :
Pour plus de détail sur le protocole de communication utilisé cf. RFC
- Enregistrement et Connexion des Utilisateurs : Les utilisateurs peuvent créer un compte protégé par un mot de passe maître.
- Stockage Sécurisé : Les mots de passe sont chiffrés par le client et sauvegardés dans un coffre sur le serveur.
- Récupération de Mots de Passe : Permet aux utilisateurs d'accéder à leurs mots de passe stockés.
- Suppression de Mots de Passe : Les entrées inutiles peuvent être supprimées du coffre.
- Déconnexion et Fermeture : Permet de mettre fin à la session.
- Pull l'image docker
docker pull ghcr.io/leonardjouve/pass-secure
- Lancer le serveur
docker run -p <port>:6433 ghcr.io/leonardjouve/pass-secure server --vault <vault> --thread <amount>
- Lancer le client
docker run -it ghcr.io/leonardjouve/pass-secure client --host <host> --port <port>
- Lancer le serveur
docker run -p 6433:6433 ghcr.io/leonardjouve/pass-secure server
- Réccupérer son ip locale
ifconfig
eth0: ...
inet 172.25.198.170 ...
...
- Lancer le client
docker run -it ghcr.io/leonardjouve/pass-secure client --host 172.25.198.170
- Compilez le projet :
chmod +x ./mvnw
./mvnw spotless:apply spotless:check dependency:go-offline clean compile package
- Créer une image docker
docker build -t pass-secure .
- Connexion à la Github Container Registry
docker login ghcr.io -u <username>
- Tag l'image
docker tag pass-secure ghcr.io/<username>/pass-secure:latest
- Publier l'image
docker push ghcr.io/<username>/pass-secure
L'image docker créée peut ensuite être réccupérée par la commande
docker pull ghcr.io/<username>/pass-secure
-
Clonez le dépôt :
git clone https://github.com/LeonardJouve/DAI-labo-02.git cd DAI-labo-02
-
Compilez le projet :
chmod +x ./mvnw ./mvnw spotless:apply spotless:check dependency:go-offline clean compile package
-
Lancez le serveur :
java -jar target/pass-secure-1.0.jar server --vault ./serverVault/ --port 9765 --thread 5
-
Lancez le client :
java -jar target/pass-secure-1.0.jar client --host localhost --port 9765
-
Obtenez de l'aide ou affichez la version :
java -jar target/pass-secure-1.0.jar --help java -jar target/pass-secure-1.0.jar --version
L'application fonctionne avec un protocole TCP personnalisé. Voici les commandes supportées côté client :
Usage : <COMMAND> --<argument> <value>
Commande | Description |
---|---|
REGISTER |
Enregistrer un nouvel utilisateur (requiert --username et --password ). |
LOGIN |
Connecter un utilisateur existant (requiert --username et --password ). |
ADD |
Ajouter un mot de passe au coffre (requiert --name et --password ) (local --encryptionPassword ) (optionnel --overwrite ). |
GET |
Récupérer un mot de passe du coffre (requiert --name ) (local --decryptionPassword ). |
REMOVE |
Supprimer un mot de passe du coffre (requiert --name ). |
DISCONNECT |
Déconnecter l'utilisateur du serveur. |
PING |
Vérifier la connectivité avec le serveur. |
QUIT |
Fermer la connexion (client uniquement). |
GENERATE |
Creer un mot de passe sécurisé. (requiert --length et --name si --store est spécifié) (optionnel --special , --store et --overwrite si --store est spécifié). |
HELP |
Affiche un message d'aide (client uniquement) |
- Enregistrer un utilisateur
- Connecter l'utilisateur
- Ajouter un mot de passe
- Récupérer un mot de passe
- Déconnecter l'utilisateur
Client → REGISTER --username alice --password 1234
Serveur → OK
Client → ADD --name github --password securePass123 --encryptionPassword 1234
Serveur → OK
Client → GET --name github
Serveur → OK
Serveur → rFMQGZ5LWQUCpCmNjmgrHYNPZrGktjm5dxZbmNg2hfs
Client → GET --name github --decryptionPassword 1234
Serveur → OK
Serveur → securePass123
Client → DISCONNECT
Serveur → OK
Client → GENERATE --name twitter --length 12 --special true --store true
Client → rFMQ$Z5*WQ-C
Serveur → OK
- Sécurité : Les mots de passe sont chiffrés localement avec un mot de passe d'encryption pour chaque entrée.
- Configuration : Le serveur utilise par défaut le port
6433
. Assurez-vous qu'il est ouvert sur votre machine. - Dossier par défaut : Les coffres-forts sont sauvegardés dans le répertoire spécifié ou, par défaut, dans le répertoire courant.
Pour signaler un bug ou proposer des améliorations, veuillez soumettre une issue sur le dépôt GitHub.