Je n’apprécie pas la totalité de la production du groupe System Of A Down, mais une écoute de Toxicity ou de Lonely Day de temps à autre ne fait pas de mal.

Pensées Libres dans un Monde Binaire
Quelques notes concernant deux commandes qui m’ont été bien utiles en travaillant avec Microsoft SQL Server.
Soit l’arborescence de fichiers suivante pour un dossier livraison-sql donné :
Soit un fichier main.sql de la forme :
USE databaseName; PRINT 'Exécution des scritps SQL' PRINT 'Exécution: script1.sql' :r .\scripts\script1.sql PRINT 'Exécution: script2.sql' :r .\scripts\script2.sql
Voici la commande à utiliser pour réaliser les opérations contenues dans notre main.sql, à savoir, l’exécution des scripts du dossier scripts :
sqlcmd -S "<nom de domaine>\<instance>" -U <utilisateur> -C -i main.sql -P<mot de passe>
Voir aussi la documentation Microsoft pour sqlcmd.
Après la restauration d’une sauvegarde de base de donnée, il peut être nécessaire de refaire la liaison entre les utilisateurs de la base de données et les identifiants mssql. On utilisera alors la commande suivante pour un utilisateur donné :
EXEC sp_change_users_login 'Auto_Fix', '<user>';
J’ai décidé de m’intéresser plus sérieusement à la cryptographie et plus particulièrement au standard PGP (Pretty Good Privacy) et à son implémentation GNU Privacy Guard (GnuPG ou GPG). Voici donc certains points à considérer; en vrac, pour commencer à défricher le sujet.
Les clés viennent par paire, une privée, l’autre publique. La clé privée est à « protéger » car celle-ci sert aux opérations de déchiffrement et de signature (Maj: Incorrect, voir commentaire).
Il existe plusieurs types de clés, en particulier, la clé de signature (signing key) et la clé de chiffrement (encryption key), la première servant à signer un mail (ou un contenu) et la seconde, à le chiffrer.
Afin de s’assurer au maximum de la sureté de ses clés, l’idéal est de générer les clés sur une machine n’ayant jamais été connectée au réseau et sur un système d’exploitation dédié, à jour et dont on aura au préalable vérifié la somme de hashage du fichier iso utilisé pour installer l’OS (il me semble que le point faible se situe alors dans le média utilisé pour réaliser l’installation de l’OS, clé USB, CD, carte SD. CD et carte SD me semble moins susceptible d’être compromis en amont, ou lors d’une utilisation sur un PC vérolé.). Il est indispensable de vérifier les sommes de hashage après écriture de l’OS sur le support. Sur cette machine isolée du réseau, il convient alors de générer un ensemble de clé et plusieurs sous-clés (subkey). La clé maîtresse sera sauvegardée sur plusieurs supports chiffrés. Seul les sous-clés seront utilisées. Enfin, l’idéal semble être d’exporter les sous-clés sur une smartcard telle qu’une YubiKey. A défaut d’une machine dédiée à la génération des clés, on pourra se limiter à un système live chargé en RAM et coupé du réseau.
A priori, il semble envisageable et possible d’exporter les clés sur 2 smartcard : les sous-clés sur l’une des smartcards et la clé maîtresse sur l’autre. Cela pourrait peut-être permettre de simplifier la signature de clés (implications en termes de sécurité de la clé maître ?). Néanmoins, je n’ai pas été en mesure de trouver un témoignage de l’utilisation d’une telle configuration lors de mes recherches.
Après lecture de plusieurs articles sur le sujet, je commence à avoir une vue d’ensemble du fonctionnement et de l’utilisation des clefs GPG. Il me reste donc à passer à la phase d’expérimentation et de mise en place afin de valider ma compréhension du sujet et de vérifier que rien n’a été oublié.
Aux lecteurs avisés et spécialistes du sujet, n’hésitez pas à pointer d’éventuelles erreurs ou zones d’ombre qui m’aurait échappé, et à partager les ressources incontournables sur le sujet.
GPG : comment créer une paire de clefs presque parfaite – NextInpact
Clefs GPG : comment les stocker et les utiliser via une clef USB OpenPGP Card ? – NextInpact
Offline GnuPG Master Key and Subkeys on Yubikey NEO Smartcard – Simon Josefsson
Guide to using YubiKey as a SmartCard for GPG and SSH – drduh
Email Encryption with the Yubikey-NEO, GPG and Linux (Part 1, Part 2) – ankitrasto
Je réfléchis ces derniers temps à ma résilience numérique. C’est un thème qui me tient à cœur, mais que je n’ai pas ou peu développé pour l’instant. Je me suis cantonné à y penser de temps à autre, sans faire beaucoup plus que m’assurer d’avoir un double de mes fichiers importants. J’ai néanmoins amélioré la partie service au premier semestre 2018, en automatisant le déploiement de mon nuage de service à partir de la dernière sauvegarde disponible. La solution fonctionne et a le mérite d’être une première étape pouvant servir de base pour des améliorations ultérieures. Plus récemment, je me suis donc intéressé à mes données locales, à commencer par ce que l’on pourra nommer les « fichiers critiques »: base de données de mot de passe, copie de documents administratifs, … Pour ces données, il convient de les sauvegarder sur de multiples supports qui pourront ensuite être stockés en des lieux différents. Ces supports ne doivent bien sûr pas être lisible, c’est pourquoi je fais le choix de les chiffrer. C’est cette opération que je vais documenter ci-dessous.
Le support sera chiffré avec la combinaison LUKS/dm-crypt. Une fois l’emplacement du support identifié (/dev/sdx), on pourra effectuer l’opération de chiffrement avec cryptsetup :
sudo cryptsetup --cipher aes-xts-plain64 --key-size 512 --hash sha512 luksFormat /dev/sdx
Attention, cette commande effacera toutes les données sur le support concerné ! Par ailleurs, en ce qui concerne le choix de la phrase secrète, la documentation de cryptsetup conseille de se limiter aux 95 caractères imprimables des premiers 128 caractères de la table ASCII; pour des raisons d’encodage. Au revoir donc caractères accentués et autres caractères particuliers propres à la langue française.
Une fois le support chiffré, nous allons pouvoir l’ouvrir.
sudo cryptsetup luksOpen /dev/sdx nomDuDisque_crypt
Avant de formater, certaines sources préconisent de remplir le support de zéro. Avec le programme dd et une indication de la progression :
dd if=/dev/zero of=/dev/mapper/nomDuDisque_crypt status=progress
Attention, cette opération n’est pas des plus rapides et peut durer plusieurs heures.
Et enfin formater le support.
sudo mkfs.ext4 -L nomDuDisque /dev/mapper/nomDuDisque_crypt
On peut vérifier le statut du support :
sudo cryptsetup -v status nomDuDisque
Qui nous donnera :
/dev/mapper/nomDuDisque is active. type: LUKS1 cipher: aes-xts-plain64 keysize: 512 bits key location: dm-crypt device: /dev/sdx sector size: 512 offset: 4096 sectors size: 30229492 sectors mode: read/write Opération réussie.
Pour fermer le support chiffré :
sudo cryptsetup luksClose /dev/mapper/nomDuDisque_crypt
Étant donné que toute corruption, altération ou destruction du header LUKS entraîne l’impossibilité d’accéder à l’ensemble du support chiffré, il convient d’en effectuer une sauvegarde :
cryptsetup luksHeaderBackup --header-backup-file /chemin/vers/header /dev/sdx
Il faut renouveler la sauvegarde du header en cas de changement des phrases secrètes (un support chiffré peut avoir jusqu’à 8 phrases secrètes différentes).
En cas de tentative de restauration d’un header, il est possible de vérifier que le header que l’on souhaite restaurer est le bon :
sudo cryptsetup -v --header /chemin/vers/header open /dev/sdx test
Qui doit renvoyer :
Key slot 0 unlocked. Command successful.
Avec le support fermé, on peut effectuer la restauration du header à partir de son fichier de sauvegarde :
sudo cryptsetup luksHeaderRestore /dev/sdx --header-backup-file /chemin/vers/header
Pour ajouter un mot de passe au support ou en supprimer un existant, on utilisera l’une des commandes :
$ sudo cryptsetup luksAddKey /dev/sdx $ sudo cryptsetup luksRemoveKey /dev/sdx
Petit point technique relatif au système de fichier avant de conclure. Il faut noter que par défaut, suite au formatage, le propriétaire de la racine du support chiffré est root. En l’état, impossible sur mon système de déplacer un fichier vers le support chiffré sans passer par un sudo cp. Pour y remédier, on peut au besoin changer le propriétaire :
sudo chown -R user /run/media/user/nomDuDisque
Il est également possible de donner les droits à l’utilisateur exécutant la commande de formatage via sudo avec :
sudo mkfs.ext4 -E root_owner=$UID:$GID /dev/sdx
Ou encore :
sudo mkfs.ext4 -E root_owner=$UID:$GID -L nomDisque /dev/mapper/nomDuDisque
Source: Format ext4 filesystem to be owned by regular user
À la suite de cet article, je dispose désormais d’un lot de clés USB chiffrées sur lesquelles je vais pouvoir stocker mes fichiers importants à sauvegarder. Afin de boucler la boucle, chaque header fera évidemment partie de la sauvegarde. Il me reste à définir la fréquence de rotation de ces sauvegardes froides, celle-ci sera certainement semestrielle, éventuellement trimestrielle. Chaque lieu de sauvegarde prévu disposant de deux clés dédiés, il suffira de générer la « nouvelle » clé, puis de l’échanger avec « l’ancienne ». Pour la suite, je souhaite conduire une réflexion sur mes données locales: définir clairement les fichiers critiques, définir une arborescence générale pour l’organisation de mes données. Il sera également nécessaire de s’interroger sur la pertinence des données (données à garder ?) et de définir quelles données constituent éventuellement une perte acceptable, afin de choisir le disque externe à privilégier (en fonction de son âge principalement).
Source :
Lors de l’installation et du test de udiskie, j’ai constaté l’apparition de l’erreur suivante dans mon terminal:
Failed to show notification: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Notifications was not provided by any .service files
Après une recherche rapide, il semble que je ne possède pas de gestionnaire de notification installé sur mon système. Je me suis donc tourné vers dunst :
sudo pacman -S dunst
Il ne reste plus qu’à copier le fichier de configuration par défaut vers mon .config :
mkdir -p ~/.config/dunst
sudo cp /usr/share/dunst/dunstrc ~/.config/dunst
sudo chown <user>:<group> .config/dunst/dunstrc
Puis à s’assurer du démarrage automatique de dunst au lancement de mon gestionnaire de fenêtre i3 en modifiant le fichier ~/.config/i3/config et en y ajoutant:
exec --no-startup-id dunst -config ~/.config/dunst/dunstrc
Et voilà !