SMailArchiver v0.4

26 janvier 2013

Il y a quelques semaines, j’avais présenté SMailArchiver, mon script de backup d’email sécurisés en python. Aujourd’hui un petit article pour les nouveautés de la nouvelle version 0.4.

Concernant les fonctionnalités, SMailArchiver permet désormais le stockage en clair si l’argument -e ou --encrypt n’est pas utilisé. Chaque email est toujours stocké individuellement pour faciliter l’incrémental mais la commande de restauration devient -r ou --restore pour plus de cohérence (précédemment -d ou --decrypt dans la version 0.3). Celle-ci se chargera de créer un seul fichier. Le format du fichier de configuration json a également légèrement été modifié en conséquence.

L’extension pour le stockage gagne également en cohérence. Un fichier anciennement nommé 42.gz.mbox deviendra désormais 42.mbox.gz.enc, ce qui indique : un email au format mbox compressé puis chiffré. Un mail non compressé et/ou non chiffré n’aura pas l’extension .gz et/ou .enc. La restauration se base sur ces extensions pour les manipulations à réaliser.

crowed

Un peu de patience, tout le monde aura sa mise à jour

Pour ceux ayant réalisé leurs backup avec la version 0.3, un script de migration a été créé pour régler le problème de changement de format. Renseignez le dossier contenant les mails (placez éventuellement le fichier de configuration dedans) ainsi que la version depuis laquelle vous arrivez (0.3 dans ce cas). Le script se chargera de renommer les fichiers et modifier le fichier de config.

$ python migrate.py -f backup_folder/ -v 0.3
Migration from 0.3 to 0.4…
1 valid config file migrated
42.gz.mbox -> 42.mbox.gz.enc

Done.

Le programme est désormais également accessible depuis github en plus de gitorious. En espérant que cela favorisera une éventuelle contribution (non ceci n’est pas du tout un appel caché).

Étant donné que je parle essentiellement de ce script sur un blog francophone, il me semblait normal de mettre les instructions en Français. Aux cotés du précédent README, se trouve maintenant un fichier LISEZMOI. Si des polyglottes me lisent, n’hésitez pas a me soumettre des traductions en Burgonde ou Klingon.

Last but not least, l’utilisation de la licence MIT. Jusqu’à présent il n’y avait pas de licence formelle ce qui était problématique pour l’utilisation du code dans d’autres programmes. Chose réglée, j’ai opté pour une licence permissive, je n’avais pas envie d’ennuyer avec les contraintes de la GPL pour un si petit bout de code, du code réutilisé est une reconnaissance en soit.

Mise à jour: le script a été mit à jour, les possibilités et commandes ont légèrement changé, lisez le README pour plus de détail ou suivez mes annonces avec le tag smailarchiver.

Faisant un peu le nettoyage dans mes boites à emails, j’ai voulu sauver tous mes vieux messages avant suppression. Cependant, je voulais un moyen de faire cela de manière automatisée (possible d’utiliser cron), incrémental (ne pas tout retélécharger à chaque fois), supportant la compression et surtout garder une certaine confidentialité (chiffrement).

J’ai trouvé des bouts de codes pour faire chaque partie séparément (ici et ici par exemple) mais pas de programme permettant de faire tout cela ensemble. A que cela ne tienne, j’ai donc créé un petit script python contentant mes besoins. Ainsi est né SMailArchiver (avec S pour Secured ou Suicide, question de point de vue) que je partage ici.

Ce petit bout de code (approchant des 400 lignes de python) permet facilement de faire des backup de plusieurs comptes emails avec toute une série d’option comme la compression des mails avant le chiffrement (une compression après le chiffrement pourrait également être utile mais est moins efficace) ou le choix d’une clef constituée uniquement de bytes aléatoires ou renforcée par un mot de passe de votre choix. Le chiffrement se fait avec AES 256 avec une signature HMAC-SHA256 histoire d’empêcher les manipulations. C’est pas Truecrypt mais ça suffit pour cacher les conversations avec votre maitresse des yeux indiscrets de madame votre femme (ou inversement).

big mess

Avant d’utiliser SMailArchiver, ma gestion des emails ressemblait à ça… et mes cheveux étaient secs et cassants.

Le programme peut recevoir les paramètres nécessaires par la console, via des arguments ou via un fichier de config (regardez le fichier d’exemple dans le dépot).

$ python smailarchiver.py 
Enter your email username: foo@bar.com
Enter your imap server: imap.bar.com
Enter your password: 
Enc key: 6MIiWqNiJ4h1qDmp5Z4OpWKRLst7eAbirWOPHIm9zqk=
Sig key: 9JmR0593CWwtnJhRWqdLHk7tXvX/h6l6A2GLKA4iVq4=
$ python smailarchiver.py --user foo@bar.com --imap imap.bar.com --passwd monkey1 --key foo@bar.com.keys --promp --compress
Enter your encryption/signature password: 
Enc salt: KNwhv7kuNs0/iCZZTUyd05IuOylzG/n2oBALj1UMJ0c=
Sig salt: A99CxfzwRbU4P4lse6eN5O+g2wethRzL4gMH7xqFkgE=
Hash: oNcX7GAyHsS+bNOT8UCYAYM/ltCmx34E9Gmmpky02AE=
$ python2 smailarchiver.py -c config.json
Enter your encryption/signature password: 
Enc salt: m87TeE9fmr5XPf7yvN0w3PYOv3ivlNKpKGp35hC+N/k=
Sig salt: 2k9Wu5HBEo7G0J0EzlglOqV0Zko1LmhfiGnxD2QEzhE=
Hash: FA3TdkhWNZqy9BjGOk2UVZ6AeqgHSrparH3ynHdvj38=
$ python2 smailarchiver.py --decrypt foo@bar.com/ --key foo@bar.com.keys --promp
Enter your encryption/signature password: 
Decrypting 16.gz.mbox
Decrypting 11.gz.mbox
Decrypting 45.gz.mbox
...

Code évidement open source que vous pouvez trouver le code sur mon dépot gitorious. C’est compatible python 2.7 et plus (python 3 c’est l’avenir !) et nécessite pycrypto (qui est compatible python 2.1 et 3.2, j’imagine même pas le bordel que ça doit être). Mes tests très scientifiques type àvuedenezçapasse montrent que le programme fonctionne mais on est jamais à une erreur prêt, n’hésitez pas à me communiquer vos idées d’améliorations ou corrections.

PS: fait amusant concernant AES 256, saviez vous que l’énergie contenue dans une supernova ne suffirait pas rien que pour énumérer les 2²⁵⁶ états possibles (calcul non compris donc). A moins de trouver une faille de sécurité, il est donc impossible, avec les notions de la physique actuelle, de faire un brute force sur une clef AES 256. Source: Applied Cryptography, Bruce Schneier (extrait en question).

Ce weekend, un de mes amis s’est fait volé ordi et disque dur externe. Sur le coup, j’ai un peu réfléchi à ce qui se passerait si cela m’arriverait. Mes seuls backups complets se trouvent sur le disque dur donc seraient perdu. J’essaye de mettre les documents les plus importants dans mon dossier dropbox mais je reste peu appliqué (et puis de toute façon avec 4Gb je vais pas hyper loin).

Si l’on passe le problème de perte de données (toutes les choses en cours, les photos,…), il y a le problème de ce qui arrive avec ma machine. Toute une série de mot de passe sont stockés dans mon firefox, thunderbird et autres fichiers de config. En plus de toutes les autres données personnelles qui, j’aimerais, le reste.

Face à cela, il y a deux moyens : chiffrer intégralement la machine ou mettre des outils de protections contre le vol (localiser l’utilisation du pc à distance, commander la webcam et autre série de joyeusetés). Les deux ont leurs avantages et inconvénients.

Du coté du chiffrement intégral, on est certain que le voleur n’aura rien, pas de soucis de ce coté là (à moins de se faire voler par le FBI peut être). Cependant il n’y a aucune chance de le retrouver, il passera par la case formatage. Si ce n’était pas un vol mais une perte, il est possible qu’il soit trouvé par quelqu’un d’honnête qui voudrait me le rendre mais il ne le pourrait pas (écrire un petit mot sur le pc ?).
Bien sur il ne faut pas oublier de chiffrer également le disque dur (entièrement ou les fichiers uniquement style archive truecrypt).

Pour les outils de protection, la question est de savoir s’ils seront efficace. Le mot de passe n’est pas si compliqué que ça à contourner (livecd, mode sans échec,…) mais d’un autre coté si la personne ne connait pas Linux (j’imagine que la proportion de libriste chez les voleurs n’est pas forcement énorme), elle risque de ne même pas essayer et le formater direct. Tout cela dépend de la connaissance de la personne en informatique. Le fait que ma machine soit en néerlandais n’est sans doute pas un cadeau non plus.
Finalement, aussi ingénieux ces outils soient ils, ça reste quand même un gros coup de bol si ça marche. Coup de bol mais cela fonctionne de temps à autres, comme on peut le voir sur la vidéo assez drôle d’un hacker expliquant comment il a retrouvé sa machine lors du dernier def con.

En fin de compte je pense que la prochaines fois que j’ai du temps de libre je reformaterai ma machine. Reste le problème de la perte du disque dur externe. Une fois que je me trouve un petit job d’étudiant, je m’achèterai sans doute un second disque dur pour stocker tout ça (règle de sécurité : 2 backups fait avec 2 méthodes différentes stockés à deux endroits différents).

Backup avec rdup

22 mai 2010

Perdre ses données a toujours été une grande crainte pour moi mais aussi paradoxal que ça puisse paraitre, je ne faisais pratiquement jamais de backup. Pourquoi ? Simplement parce que je ne trouvais pas de soft qui me convenait. J’ai découvert il y a peu rdup qui m’a fait changer ma sale habitude.

Lire la suite… »

css.php