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.