Manuel du développeur: FileCrypter

Transcription

Manuel du développeur: FileCrypter
Manuel du développeur: FileCrypter
SOMMAIRE:
Introduction
Fonctions
I.Le BASH et les Scripts
-Le BASH
-Les Scripts
-Remarques générales
II.Les logiciels inclus
-Cygwin
-Sa fonction principale
-GnuPG
-FreeOTFE
-Scripts
-Le fichier de lancement
III.Le logiciel Setup2go
IV.Le logiciel Installer2go
V.Création d'un batch de lancement
VI.Les étapes de création
VII.Captures d'écran
Conclusion
Introduction
Nous allons vous détailler comment nous sommes arrivé à créer un programme
d'installation qui vous permet d'installer les applications nécessaires pour pouvoir
sécuriser vos données au maximum, mais aussi comment nous avons développé
des scripts qui rendrons le chiffrement symétrique et asymétrique accessible à tous.
Fonctions
Une fois installé, l'utilisateur disposera de tous les outils nécessaires à la création
d'un volume virtuel chiffré symétriquement, ainsi que de ceux nécessaires pour
chiffrer les fichier placés à l'intérieur de manière asymétrique.
-FreeOTFE pour la création du volume virtuel chiffré
-Scripts pour chiffrer les fichiers contenus dans son volume
-Cygwin pour exécuter Scripts et utiliser GPG
I.Le BASH et les Scripts
-Le BASH
Le bash étant le langage utilisé sous linux, beaucoup plus performant que l'exécuteur
de commande de windows, nous utiliserons donc une application nommée CYGWIN
qui nous permettra d'utiliser ce langage sur une plate forme windows. Ce logiciel très
simple et performant, ne nécessite pas une installation complète pour fonctionner, ce
qui le rend flexible au niveau de son utilisation. Pour notre part nous allons intégrer à
notre logiciel les commandes de base utiles à l'exécution de nos scripts. L'avantage
d'utiliser un tel langage est que notre logiciel pourra être utilisé aussi bien sur Linux
que sur Windows.
-Les Scripts
Ici nous allons vous expliquer comment nos scripts on été crées ainsi que leur
fonctionnement ligne par ligne. Pour commencer, nous allons faire un résumé de ce
que chaque script doit réaliser.
Le script de chiffrement:
-Ce script aura pour argument le fichier que l'on désire chiffrer
-Il devra extraire son extension et la sauvegarder
-Il chiffrera le fichier à l'aide de GnuPG
-Il manipulera l'extension sauvegardée afin de lui reconstruire une extension ayant
un rapport avec son extension d'origine
Remarques: Chiffrer un fichier ne nécessite par forcément un script et peut se faire
en une simple ligne de commande, mais le problème et qu'une fois tous les fichiers
d'un dossier chiffré, l'utilisateur se retrouve avec tous ses fichiers d'extension ''gpg'',
et le même icône sur tous ses fichiers. L'utilisateur se retrouverait donc avec ses
fichiers semblables et perdrait énormément de temps juste pour retrouver le fichier
dont il a besoin. Nous verrons plus tard que grâce a notre manipulation de l'extension
nous pourrons associer de nouveaux icônes à nos fichiers. L'utilisateur se retrouvera
donc face à des fichiers d'extension variés et d'icônes semblables a ceux qu'il a
l'habitude de voir.
Voici donc le script de chiffrement:
#!/bin/bash
PATH=$PATH":/bin"
#definition des variables
nom_du_fichier=$1
nom_du_fichier_sans_ext=abc
nom_du_fichier_ext=abc
extension=abc
nouvelle_ext=abc
ext=txt
nom_en_gpg=abc
#recuperation de l'extension
echo $1
extension=${nom_du_fichier#*.}
echo $extension
#definir la nouvelle extension
nouv_ext=${extension:1}
echo $nouv_ext
nouv_ext="3"$nouv_ext
#recupere que le nom du fichier
nom_du_fichier_sans_ext=${nom_du_fichier%.*}
echo $nom_du_fichier_sans_ext
#ajoute la nouv_ext
nom_du_fichier_ext=$nom_du_fichier_sans_ext"."$nouv_ext
echo $nom_du_fichier_ext
#gpgiser le fichier
gpg --encrypt $1
nom_en_gpg=$nom_du_fichier".gpg"
echo $nom_en_gpg
#renommer notre fichier
mv $nom_en_gpg $nom_du_fichier_ext
#efface le fichier original
rm $1
Le script de déchiffrement:
-Il prendra comme argument le fichier à déchiffrer
-Il va extraire l'extension et la comparer à celle connue
-Il va déchiffrer le fichier en demandant le mot de passe à l'utilisateur
-Il va recoller l'extension connue sur le nom du fichier
-Ouvrira ce fichier avec l'application associée
Remarques: L'utilisateur n'aura juste qu'à double cliquer pour que son mot de passe
soit demandé et que son fichier s'ouvre. Un utilisateur débutant ne se rendrait même
pas compte qu'en ouvrant un fichier ''texte.3xt'' il a lancé un script de déchiffrement, il
se verrait simplement taper un mot de passe qui protège le fichier.
Voici ce script qui permet de déchiffrer:
#!/bin/bash
PATH=$PATH":/bin"
#definition des variables
nom_du_fichier_sans_ext=abc
nom_du_fichier=$1
nom_en_gpg=abc
ext=abc
exte=abc
#definition de toutes les extensions
txt=xt
jpg=pg
mp3=p3
avi=vi
pdf=df
#recuperation de lextension
exte=${nom_du_fichier#*.}
#retirer le 3
exte=${exte:1}
#comparer pour retrouver lextension
if [ $exte = $txt ]
then
ext=txt
elif [ $exte = $jpg ]
then
ext=jpg
elif [ $exte = $mp3 ]
then
ext=mp3
elif [ $exte = $avi ]
then
ext=avi
else
ext=pdf
fi
#on recupere que le nom du fichier
nom_du_fichier_sans_ext=${nom_du_fichier%.*}
#recoller l'extension gpg
nom_en_gpg=$nom_du_fichier_sans_ext".gpg"
#renommer le fichier en gpg
mv $1 $nom_en_gpg
#degpgiser le fichier
gpg $nom_en_gpg
#reconstruire une extension connue
nom_du_fichier_ext=$nom_du_fichier_sans_ext"."$ext
#modifier le nom
mv $nom_du_fichier_sans_ext $nom_du_fichier_ext
#supprimer le fichier nomme gpg
rm $nom_en_gpg
if [ $ext = txt ]
then
/cygdrive/c/WINDOWS/system32/notepad.exe $nom_du_fichier_ext &
elif [ $ext = jpg ]
then
/cygdrive/c/WINDOWS/system32/mspaint.exe $nom_du_fichier_ext &
elif [ $ext = mp3 ]
then
/cygdrive/c/Program\ Files/Windows\ Media\ Player/wmplayer.exe
$nom_du_fichier_ext &
elif [ $ext = avi ]
then
/cygdrive/c/Program\ Files/Windows\ Media\ Player/wmplayer.exe
$nom_du_fichier_ext &
else
/cygdrive/c/Program\ Files/Adobe/Reader\ 8.0/Reader/AcroRd32.exe
$nom_du_fichier_ext &
fi
#fin du script
Le script de placement de clé par défaut:
-Celui ci devra Récupérer la clé de l'utilisateur
-Retrouver le nom de l'utilisateur pour accéder à son fichier de configuration
-La placer dans le fichier de configuration de GPG
Remarques: Lors du chiffrement GPG nécessite la clé de l'utilisateur pour lequel il
doit chiffrer le fichier. Dans le fichier de configuration il est possible de placer une clé
par défaut, ce qui évite à l'utilisateur de préciser à chaque chiffrement que c'est pour
lui qu'il veut le chiffrer. Ce fichier se nomme ''gpg.conf''
Voici donc ce script qui placera la clé:
#!/bin/bash
PATH=$PATH":/bin"
#notre variable qui contient notre ID
var=abc
conf=abc
rep=abc
#on recupere la cle totale dans var
gpg --list-key >> key.txt
var=$(cat key.txt)
rm key.txt
#on extrait juste les 8 chiffres qui nous interessent
var=${var#*/}
var=${var#*/}
var=${var#*/}
var=${var#*/}
var=${var#*/}
var=${var: 0:8}
#on retrouve le nom de l'user
cd /home/
ls >> /toto.txt
rep=$(cat /toto.txt)
rm /toto.txt
#on modifie l'emplacement de gpg.conf
conf=/home/$rep/.gnupg/gpg.conf
#on le place par defaut dans le GPG.CONF
var="default-recipient "$var
echo $var >> $conf
Le script de chiffrement d'un dossier:
-Il aura pour argument le dossier contenant les fichiers que l'on désire chiffrer
-Il fonctionnera de la même manière que GPGiser.bash
-Devra différencier les répertoires afin de ne pas les chiffrer
Remarques: Ce script permet à l'utilisateur de chiffrer tout les fichiers contenus dans
un dossier. En plus de pouvoir chiffrer juste un simple fichier, à l'aide de ce script il
pourra rendre beaucoup plus simple la tache très longue qu'aurait été de chiffrer des
dizaines de fichiers à la main.
Voici donc le script de chiffrement d'un dossier:
#!/bin/bash
PATH=$PATH":/bin"
repertoire=$1
cd $1
ls >> /home/fichiers.txt
fichiers=$(cat /home/fichiers.txt)
for file in $fichiers
do
#definition des variables
nom_du_fichier=$file
nom_du_fichier_sans_ext=abc
nom_du_fichier_ext=abc
extension=abc
nouvelle_ext=abc
ext=txt
nom_en_gpg=abc
#recuperation de l'extension
extension=${nom_du_fichier#*.}
nom_fich=${nom_du_fichier%.*}
if [ $nom_fich = $nom_du_fichier ]
then
echo "$nom_fich est un dossier..."
else
#récupérer la première lettre de l'extension pour le if
ext3=${extension: 0:1}
if [ $ext3 = 3 ]
then
echo "Le fichier $file est déja un fichier chiffré..."
else
#definir la nouvelle extension
nouv_ext=${extension:1}
nouv_ext="3"$nouv_ext
#recupere que le nom du fichier
nom_du_fichier_sans_ext=${nom_du_fichier%.*}
#ajoute la nouv_ext
nom_du_fichier_ext=$nom_du_fichier_sans_ext"."$nouv_ext
#gpgiser le fichier
gpg --encrypt $file
nom_en_gpg=$nom_du_fichier".gpg"
#renommer notre fichier
mv $nom_en_gpg $nom_du_fichier_ext
#efface le fichier original
rm $file
fi
fi
done
rm /home/fichiers.txt
Le script de Surveillance:
-Il se servira du script GPGiserDossier.bash
-Il travaillera dans le repertoire selectionné
-Toutes les 60 secondes il chiffrera les fichiers déchiffrés entre temps
Remarques: Si l'utilisateur travaille dans un dossier, il ouvrira ses fichiers
(déchiffrage), afin d'empêcher l'oubli, ou simplement pour renforcer la sécurité ce
script est indispensable.
Voici donc le script de surveillance:
#!/bin/bash
PATH=$PATH":/bin"
script="./GPGiserDossier.bash "$1
watch -n 60 $script
-Remarques générales
Le chiffrage nécessite de lancer ''bash.exe'' manuellement, contrairement au
déchiffrement qui se fait automatiquement à l'ouverture du fichier chiffré. Cette
automatisation est due aux associations d'icônes que nous allons vous expliquez
dans le chapitre sur la création du programme d'installation et plus précisément
setup2go.
Nous pouvons remarquer qu'à chaque début de script la commande
PATH=$PATH'':/bin'' est présente, cette commande sert à préciser que les
commandes Bash se trouvent dans le répertoire /bin, qui n'est pas entré par défaut
dans la variable PATH.
II.Les logiciels inclus
-Cygwin
-Sa fonction principale
Ce Logiciel est un interpréteur de commande Bash pour Windows. Celui ci nécessite
le téléchargement des modules lors de son installation. Une installation à partir d'un
dossier qui contiendrait ces modules est possible. Nous allons donc inclure à notre
programme d'installation les modules nécessaires à son utilisation (exécution de nos
scripts).
-GnuPG
Celui ci sert à la base, pour chiffrer vos mails, de façon asymétrique.
C'est à dire que chaque utilisateur aura sa clé privée qu'il gardera secrètement. Elle
servira à déchiffrer les mails que ceux qui lui enverrons auront chiffrés avec la clé
publique de la personne à qui il a envoyé le message.
Chaque utilisateur possédera donc 2 clés:
-Une publique que l'utilisateur diffusera et qui permettra à l'expéditeur de
chiffrer le message qu'il souhaite faire parvenir
-Une privée qui servira a déchiffrer les mails reçus.
Un utilisateur se trouve donc incapable de déchiffrer lui même les message qu'il
enverra étant donné que pour déchiffrer le message il aurait besoin de la clé privée
de son destinataire.
Cependant pour une utilisation personnelle de ce logiciel (dans notre cas) nous nous
servirons de notre propre clé publique afin de chiffrer nos document et d'être capable
de les déchiffrer. Nous ferons donc comme si nous voulions nous envoyer un mail.
-FreeOTFE
Le but de celui ci étant de permettre la création d'un volume chiffré à l'utilisateur. Il
pourra ainsi créer un volume qu'il pourra protéger simplement à l'aide d'une
passphrase ou à l'aide d'un keyfile (Utilisation sous linux impossible dans ce cas).
-Scripts
Ce logiciel se contente d'installer les différents scripts dans le répertoire de cygwin. Il
contient les scripts:
-GPGiser.bash
-deGPGiser.bash
-DefaultKey.bash
-GPGiserDossier.bash
-Surveillance.bash
Mais celui ci contient aussi les icônes des extensions qui seront créés lors de
l'installation de ce programme.
-Le fichier de lancement
Afin de rendre l'installation la plus simple possible, nous avons créé un batch de
lancement, nommé ''Launch.bat'', qui lancera les installation, et les lancera dans
l'ordre, car Cygwin nécessite d'être installé avant Scripts.
III.Le logiciel Setup2go
Ce logiciel permet à partir de n'importe quel fichier de créer un programme
d'installation. Il suffit d'indiquer à celui ci quels fichier il doit mettre dans le
programme d'installation, et où il doit les installer et celui ci créé à partir de ces
informations un programme nommé par défaut ''setup.exe''.
Ses fonctionnalités permettant de personnaliser au maximum notre programme
d'installation, l'une d'entre elle nous a particulièrement été utile. Il s'agit de
l'affectation d'icônes. Ce logiciel permet d'ajouter de nouveaux types de fichiers au
système, il suffit de lui indiquer l'extension, l'identifiant du type de fichier, le chemin
de l'icône et avec quel application l'ouvrir.
C'est donc grâce à cette fonctionnalité que nous associerons nos nouvelles
extensions à nos icônes et que nous indiquerons que les fichiers chiffrés doivent
s'ouvrir avec notre script de déchiffrement.
Ce logiciel est en téléchargement libre sur http://www.dev4pc.com/
IV.Le logiciel Installer2go
Ce logiciel du même développeur que setup2go, permet exactement de réaliser la
même chose que son frère si ce n'est que celui ci est encore plus complet et permet
de créer des programmes d'installation bien plus professionnels. L'aspect principal
qui nous a attiré et que celui ci permet d'inclure une licence au programme
d'installation, ainsi que des images dans les fenêtres pendant l'installation.
Ce logiciel est en téléchargement libre sur http://www.dev4pc.com/
V.Création d'un batch de lancement
Les installation des logiciels présents dans notre programme d'installation
nécessitant un ordre particulier, nous avons donc créé un batch qui lancera à la suite
les programmes d'installation. Celui ci facilitera l'installation à l'utilisateur qui n'aura à
lancer que ''Launch.bat'', au lieu de chaque programme d'installation séparément.
Voici ce batch:
@echo off
c:
cd c:\Program Files\FileCrypter\Data
setup.exe
C:
chdir C:\cygwin\bin
bash --login -i
c:
cd c:\Program Files\FileCrypter\Data
FreeOTFE_3_00.exe
Scripts.exe
VI.Les étapes de création
Afin de créer un simple programme d'installation qui contiendra les outils
nécessaires, les étapes du développement sont celles ci:
-Création des scripts
Supports: Documentation sur les commandes bash et GPG
-Création des icônes
Supports: Icônes vistas et logiciel IcoFX de modification d'icônes
-Téléchargement des modules de Cygwin
Support: http://www.cygwin.com/
-Téléchargement de FreeOTFE
Support: http://www.freeotfe.org/
-Création d'un batch
Supports: Documentation sur les scripts batch et commandes DOS
-Création d'un premier programme d'install ''Scripts''
Contenu: Les scripts et les icônes
-Création d'un deuxième programme d'install ''FileCrypter''
Contenu: Batch de lancement, freeOTFE, Cygwin, Scripts, Lisez-moi
VII.Captures d'écran
Surveillance.bash: surveillance du disque ''E:''
Setup2go: fichiers à placer dans le programme d'installation
Setup2go: Association des extensions aux icônes et aux programmes
Conclusion:
La seul chose que nous ne pouvons pas automatiser par un script et la génération de
la paire de clé du client. Ce problème mis à part, la création de ce logiciel nécessite
simplement la connaissance du BASH ainsi que quelques connaissances en DOS,
sachant qu'un script peut être créé à partir d'un simple éditeur de texte comme
NOTEPAD. La création d'un logiciel comme celui ci est possible par n'importe qui
avec un minimum de connaissances informatiques.