{"id":1404,"date":"2013-11-08T14:58:38","date_gmt":"2013-11-08T12:58:38","guid":{"rendered":"http:\/\/stephane.weblog.starend.org\/?p=1404"},"modified":"2013-11-08T14:58:38","modified_gmt":"2013-11-08T12:58:38","slug":"systeme-bootable-sur-deux-cles-usb-dependantes","status":"publish","type":"post","link":"http:\/\/stephane.weblog.starend.org\/?p=1404","title":{"rendered":"Syst\u00e8me bootable chiffr\u00e9 sur deux cl\u00e9s USB interd\u00e9pendantes"},"content":{"rendered":"<p style=\"text-align: justify;\">Voici une base de syst\u00e8me qui n\u00e9cessite deux cl\u00e9s USB pour pouvoir fonctionner. Si l&rsquo;une manque, le syst\u00e8me ne peut d\u00e9marrer et, plus important encore, les donn\u00e9es sont ind\u00e9chiffrables.<\/p>\n<p style=\"text-align: justify;\">Le sch\u00e9ma de principe :<\/p>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/stephane\/2013\/11\/20131108-cryptsetup-sur-2-cles-usb1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1408\" alt=\"20131108 cryptsetup sur 2 cles usb\" src=\"\/wp-content\/uploads\/stephane\/2013\/11\/20131108-cryptsetup-sur-2-cles-usb1.png\" width=\"430\" height=\"478\" srcset=\"\/wp-content\/uploads\/stephane\/2013\/11\/20131108-cryptsetup-sur-2-cles-usb1.png 430w, \/wp-content\/uploads\/stephane\/2013\/11\/20131108-cryptsetup-sur-2-cles-usb1-405x450.png 405w\" sizes=\"(max-width: 430px) 100vw, 430px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">L&rsquo;exemple est r\u00e9alis\u00e9 \u00e0 partir de <a title=\"Debian Linux 7.0\" href=\"http:\/\/www.debian.org\/\" target=\"_blank\">Debian Linux 7.0<\/a>, mais \u00e7a n&rsquo;a pas de raison de ne pas fonctionner avec d&rsquo;autres distributions. \u00c7a marche aussi avec <a title=\"Ubuntu Linux\" href=\"http:\/\/www.ubuntu.com\/\" target=\"_blank\">Ubuntu Linux<\/a> par exemple. Il faut obligatoirement que <em>cryptsetup<\/em> soit disponible sur la distri. Il faut de pr\u00e9f\u00e9rence que l&rsquo;on puisse mettre en place le chiffrement d\u00e8s l&rsquo;installation du syst\u00e8me. Il faut aussi de pr\u00e9f\u00e9rence que le syst\u00e8me soit installable directement sur cl\u00e9 USB et sur une partition chiffr\u00e9e. Si ces deux derni\u00e8res conditions ne sont pas remplies, l&rsquo;exercice est r\u00e9alisable mais il est beaucoup plus complexe \u00e0 mettre en place.<\/p>\n<p><!--more--><\/p>\n<h2 style=\"text-align: justify;\">Les partitions<\/h2>\n<p style=\"text-align: justify;\">Les partitions en rouge sont en clair. Tout ce qui est enregistr\u00e9 dessus est lisible et\/ou modifiable par autrui.<br \/>\nLa seule partition rouge vraiment utile est celle qui contient le <code>\/boot<\/code> avec notamment le noyau Linux (kernel) \u00e0 l&rsquo;int\u00e9rieur, en clair. Les deux partitions en <em>fat32<\/em> permettent de stocker des donn\u00e9es en clair, et elles sont surtout lisible par beaucoup de syst\u00e8mes d&rsquo;exploitations. Elles sont surtout l\u00e0 comme mesure de d\u00e9ception, donner \u00e0 un intrus l&rsquo;impression qu&rsquo;il a acc\u00e8s au contenu de la cl\u00e9 sans lui montrer que l&rsquo;on cache le reste. C&rsquo;est le premier niveau de d\u00e9ception, et aussi le plus facile \u00e0 d\u00e9tecter.<\/p>\n<p style=\"text-align: justify;\">Les partitions en bleu sont int\u00e9gralement chiffr\u00e9es. Tout ce qui est \u00e0 l&rsquo;int\u00e9rieur n&rsquo;est ni lisible, ni modifiable. On ne peut pas non plus savoir ce qu&rsquo;il y a dedans ou m\u00eame estimer la quantit\u00e9 de donn\u00e9es.<br \/>\nIl est important qu&rsquo;elles soient au moins deux et que la racine <code>\/<\/code> ne soit pas sur la cl\u00e9 qui contient le <code>\/boot<\/code>. Ainsi plusieurs combinaisons sont possibles comme laisser le <code>\/home<\/code> avec la racine et cr\u00e9er un <code>\/data<\/code> par exemple. On peut aussi mettre les deux partitions chiffr\u00e9es sur la m\u00eame cl\u00e9 USB et laisser le <code>\/boot<\/code> sur une cl\u00e9 ind\u00e9pendante. On peut enfin juste garder la racine <code>\/<\/code> comme seule partition chiffr\u00e9e, on verra cela plus bas.<\/p>\n<h2 style=\"text-align: justify;\">Le principe<\/h2>\n<p style=\"text-align: justify;\">Le but est ici de montrer que l&rsquo;on peut combiner les disques chiffr\u00e9s de diff\u00e9rentes mani\u00e8res. Dans cet exemple, les donn\u00e9es sont sur une cl\u00e9 USB, le syst\u00e8me d&rsquo;exploitation est sur l&rsquo;autre cl\u00e9 USB, le tout d\u00e9marre sans demander de mot de passe. La cl\u00e9 USB contenant le syst\u00e8me d&rsquo;exploitation est physiquement (switch) verrouill\u00e9e en lecteur seule pour le prot\u00e9ger de toute modification logique. Et bien s\u00fcr, le syst\u00e8me peut tout \u00e0 fait \u00eatre &lsquo;user-friendly&rsquo; avec une belle interface graphique!<\/p>\n<p style=\"text-align: center;\"><a href=\"\/wp-content\/uploads\/stephane\/2013\/11\/Clef_USB.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1411\" alt=\"Clef_USB\" src=\"\/wp-content\/uploads\/stephane\/2013\/11\/Clef_USB.png\" width=\"200\" height=\"150\" \/><\/a> <a href=\"\/wp-content\/uploads\/stephane\/2013\/11\/kanguru.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1412\" alt=\"kanguru\" src=\"\/wp-content\/uploads\/stephane\/2013\/11\/kanguru.png\" width=\"200\" height=\"150\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">La s\u00e9paration du <code>\/home<\/code>, et donc des donn\u00e9es qu&rsquo;il contient par rapport au syst\u00e8me, permet au syst\u00e8me d&rsquo;exploitation d&rsquo;\u00eatre dispos\u00e9 sur une cl\u00e9 USB verrouill\u00e9e physiquement en lecture seule. Le syst\u00e8me est plus r\u00e9sistant \u00e0 une attaque virale qui essayerait de modifier le syst\u00e8me pour le contaminer ou pour s&rsquo;installer. Cette protection n&rsquo;est pas infaillible puisqu&rsquo;il faut pouvoir aussi maintenir \u00e0 jour le syst\u00e8me d&rsquo;exploitation et ses nombreux programmes pour qu&rsquo;il r\u00e9siste aux nouvelles attaques.<br \/>\nDans ce cas, \u00e9videment, la partition en <em>fat32<\/em> n&rsquo;a pas vraiment d&rsquo;int\u00e9r\u00eat.<\/p>\n<p style=\"text-align: justify;\">Si cette protection ne vous int\u00e9resse pas, il n&rsquo;est dans ce cas pas n\u00e9cessaire de s\u00e9parer la partition <code>\/home<\/code> de la partition racine <code>\/<\/code>.<\/p>\n<p style=\"text-align: justify;\">Chaque partition chiffr\u00e9e a sa cl\u00e9 de d\u00e9chiffrement qui se trouve stock\u00e9e sur l&rsquo;autre cl\u00e9 USB. Ainsi, bien que l&rsquo;une des cl\u00e9s de d\u00e9chiffrement soit en clair, la perte ou le vol d&rsquo;une des cl\u00e9s USB ne permet d&rsquo;acc\u00e9der ni au syst\u00e8me d&rsquo;exploitation ni aux donn\u00e9es.<\/p>\n<h2 style=\"text-align: justify;\">Mise en pratique<\/h2>\n<h3 style=\"text-align: justify;\">1\/ Installation du syst\u00e8me d&rsquo;exploitation<\/h3>\n<p style=\"text-align: justify;\">Sur la station qui sert \u00e0 l&rsquo;installation, d\u00e9brancher physiquement le disque dur interne le temps de l&rsquo;installation. Brancher les deux cl\u00e9s USB et ins\u00e9rer le <a title=\"CD Debian\" href=\"http:\/\/www.debian.org\/CD\/http-ftp\/#stable\" target=\"_blank\">CD-ROM d&rsquo;installation de Debian Linux<\/a>. Faire une installation en mode texte (par d\u00e9faut).<\/p>\n<p style=\"text-align: justify;\">L&rsquo;installation se passe normalement \u00e0 l&rsquo;exception de la partie concernant le partitionnement. Il faut cr\u00e9er d&rsquo;abord :<\/p>\n<ul>\n<li><code><strong>sda1<\/strong> fat32<\/code> <em>none<\/em><\/li>\n<li><code><strong>sda2<\/strong> ext4 \/boot<\/code><\/li>\n<li><code><strong>sda3<\/strong> <\/code>chiffrement<\/li>\n<li><code><strong>sdb1<\/strong> fat32 <\/code><em>none<\/em><\/li>\n<li><code><strong>sdb2<\/strong> <\/code>chiffrement<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Pour la partition <em>sda2<\/em>, lui donner comme label &lsquo;<code>boot<\/code>&lsquo;, c&rsquo;est plus simple pour la suite.<br \/>\nPuis aller dans la partie gestion des disques chiffr\u00e9s. Cr\u00e9er les partitions chiffr\u00e9es sur sda3 et sdb2, et le configurer comme cela :<\/p>\n<ul>\n<li><code><strong>sda3_crypt<\/strong> ext4 \/home<\/code><\/li>\n<li><code><strong>sdb2_crypt<\/strong> volume lvm<\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Chaque partition chiffr\u00e9e n\u00e9cessite son mot de passe propre, mais ce peut \u00eatre le m\u00eame. Choisir un mot de passe assez solide le temps de terminer l&rsquo;installation et le param\u00e9trage des mots de passes d\u00e9finitifs dans des fichiers.<br \/>\nPuis aller dans la partie gestion des volumes lvm. Cr\u00e9er un volume et des volumes logiques la racine et le swap (et plus encore si besoin) :<\/p>\n<ul>\n<li><code><strong>vlroot<\/strong> ext4 \/<\/code><\/li>\n<li><code><strong>vlswap<\/strong> swap<\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">L&rsquo;installation peut continuer normalement&#8230;<\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #ff0000;\"><strong>ATTENTION!!!<\/strong><\/span> Il est important, parce que nous travaillons sur des supports de stockage USB, de mettre des <span style=\"text-decoration: underline;\">mots de passes forts<\/span> sur les partitions chiffr\u00e9es. Et ceci m\u00eame si nous allons les supprimer dans quelques minutes. Pourquoi? Tout simplement parce que lors de la suppression du mot de passe, et donc de l&rsquo;\u00e9criture sur la cl\u00e9, on n&rsquo;est pas en mesure de savoir si l&rsquo;\u00e9lectronique de la cl\u00e9 USB ne va pas permuter le &lsquo;<em>secteur<\/em>&lsquo; contenant le mot de passe pour \u00e9crire la modification sur un autre secteur. Ce m\u00e9canisme est \u00e0 l&rsquo;origine destin\u00e9 \u00e0 \u00e9conomiser le nombre d&rsquo;\u00e9critures sur un secteur en particulier et de r\u00e9partir les \u00e9critures sur l&rsquo;ensemble des secteurs. Tout ceci \u00e0 l&rsquo;origine non pas pour voler des cl\u00e9s de chiffrement mais pour allonger la dur\u00e9e de vie des supports amovibles \u00e0 m\u00e9moires en technologie <em>FLASH<\/em>. Le probl\u00e8me est le m\u00eame avec un <em>SSD<\/em>.<\/p>\n<h3 style=\"text-align: justify;\">2\/ Premier d\u00e9marrage<\/h3>\n<p style=\"text-align: justify;\">Une fois le tout install\u00e9 et la machine red\u00e9marr\u00e9e, se reconnecter en <em>root<\/em>. Toutes les partitions doivent avoir \u00e9t\u00e9 mont\u00e9es normalement, chacune ayant n\u00e9cessit\u00e9 la saisie d&rsquo;un mot de passe au d\u00e9marrage.<\/p>\n<h3 style=\"text-align: justify;\">3\/ G\u00e9n\u00e9ration des mots de passes<\/h3>\n<p style=\"text-align: justify;\">G\u00e9n\u00e9rer deux cl\u00e9s de chiffrement de 128 caract\u00e8res en hexad\u00e9cimal (ou plus), une pour chaque partition chiffr\u00e9e :<br \/>\n<code># openssl rand -hex 64 &gt; \/boot\/boot.pwd<br \/>\n# openssl rand -hex 64 &gt; \/boot.pwd<br \/>\n# chmod 400 \/boot\/boot.pwd \/boot.pwd<\/code><br \/>\nL&rsquo;avantage des caract\u00e8res en hexad\u00e9cimal, c&rsquo;est qu&rsquo;ils peuvent \u00eatres recopi\u00e9s \u00e0 la main facilement. L&rsquo;inconv\u00e9nient, c&rsquo;est aussi qu&rsquo;ils peuvent \u00eatres recopi\u00e9s \u00e0 la main facilement (<em>arrggg&#8230;<\/em>). On peut tout aussi bien g\u00e9n\u00e9rer des cl\u00e9s non-<em>ASCII<\/em> (binaires), \u00e7a marche aussi. A noter que d&rsquo;un point de vue solidit\u00e9 du mot de passe, c&rsquo;est \u00e0 dire son entropie dans son espace de caract\u00e8res, c&rsquo;est exactement pareil d&rsquo;avoir 128 caract\u00e8res hexad\u00e9cimaux ou 64 caract\u00e8res binaires.<\/p>\n<h3 style=\"text-align: justify;\">4\/ Ajout des mots de passes aux partitions chiffr\u00e9es<\/h3>\n<p style=\"text-align: justify;\">Ajouter les nouvelles cl\u00e9s de chiffrement \u00e0 leurs partitions chiffr\u00e9es respectives :<br \/>\n<code># cryptsetup luksAddKey \/dev\/sdb2 \/boot\/boot.pwd<br \/>\n# cryptsetup luksAddKey \/dev\/sda3 \/boot.pwd<\/code><\/p>\n<p style=\"text-align: justify;\">A chaque fois, un mot de passe est demand\u00e9. C&rsquo;est le mot de passe cr\u00e9\u00e9 \u00e0 l&rsquo;installation pour la partition concern\u00e9e.<\/p>\n<h3 style=\"text-align: justify;\">5\/ Ajout des fichiers mots de passes \u00e0 la configuration<\/h3>\n<p style=\"text-align: justify;\">Il faut maintenant dire au syst\u00e8me, au d\u00e9marrage, d&rsquo;utiliser ces deux cl\u00e9s. Pour cela on modifie le fichier <code>\/etc\/crypttab<\/code>. On v\u00e9rifie que le label de la partition <code>\/boot<\/code> est bien pris en compte :<br \/>\n<code># ls -l \/dev\/disk\/by-label\/<\/code><\/p>\n<p style=\"padding-left: 30px;\"><code>lrwxrwxrwx 1 root root 10 nov.\u00c2\u00a0\u00c2\u00a0 9 10:50 boot -&gt; ..\/..\/sda2<br \/>\n<\/code><\/p>\n<p style=\"text-align: justify;\">Si il manque, c&rsquo;est que le label a \u00e9t\u00e9 oubli\u00e9 lors de l&rsquo;installation. Le seul vraiment utile c&rsquo;est <em>boot<\/em>, on ne se servira pas des autres ici. On doit dans ce cas utiliser <code>\/dev\/disk\/by-uuid\/78a4832d-a421-4dbd-8503-66106ef27129<\/code> au lieu de <code>\/dev\/disk\/by-label\/boot<\/code> (l&rsquo;<em>UUID<\/em> correspond \u00e0 mon disque \u00e0 moi). C&rsquo;est moins facile.<\/p>\n<p style=\"text-align: justify;\">Le fichier\u00c2\u00a0<code>\/etc\/crypttab<\/code> ressemble \u00e0 ceci (2 lignes) :<\/p>\n<p style=\"text-align: justify; padding-left: 30px;\"><code>sdb2_crypt UUID=d3c7791c-1989-47fe-bf31-e8996207dadf none luks<br \/>\nsda3_crypt UUID=598cf9d7-a9f3-4728-87e2-a0c90369d542 none luks<\/code><\/p>\n<p style=\"text-align: justify;\">Les valeurs des <em>UUID<\/em> sont ceux de mes essais, ils sont donc diff\u00e9rents \u00e0 chaque installation, \u00e0 adapter donc. Modifier le fichier comme cela (2 lignes) :<br \/>\n<code><\/code><\/p>\n<p style=\"text-align: justify; padding-left: 30px;\"><code>sdb2_crypt UUID=d3c7791c-1989-47fe-bf31-e8996207dadf \/dev\/disk\/by-label\/boot:boot.pwd luks,keyscript=\/lib\/cryptsetup\/scripts\/passdev<br \/>\nsda3_crypt UUID=598cf9d7-a9f3-4728-87e2-a0c90369d542 \/boot.pwd luks<\/code><\/p>\n<h3 style=\"text-align: justify;\">6\/ Modification du d\u00e9marrage<\/h3>\n<p style=\"text-align: justify;\">Pour que les fichiers mots de passes soient pris en compte au d\u00e9marrage, il faut r\u00e9g\u00e9n\u00e9rer le fichier <code>\/boot\/initrd.img-3.2.0-4-686-pae<\/code> (ou \u00e9quivalent) :<br \/>\n<code># update-initramfs -u<br \/>\n<\/code>\u00c9videment, si le fichier\u00c2\u00a0<code>\/etc\/crypttab<\/code> est pr\u00e9sent dans l&rsquo;image <em>initrd<\/em>, ce n&rsquo;est pas le cas des fichiers de cl\u00e9s de d\u00e9chiffrement!<\/p>\n<p style=\"text-align: justify;\">Red\u00e9marrer le syst\u00e8me pour voir si tout se passe bien&#8230;<\/p>\n<p style=\"text-align: justify;\">Si tout s&rsquo;est bien pass\u00e9, aucun mot de passe ne devrait \u00eatre demand\u00e9 cette fois-ci.<br \/>\nSi \u00e7a se passe mal, il y a toujours le mode <em>rescue<\/em> du CD-ROM d&rsquo;installation de <em>Debian<\/em>&#8230;<\/p>\n<h3 style=\"text-align: justify;\">7\/ Suppression des mots de passes d&rsquo;installation<\/h3>\n<p style=\"text-align: justify;\">Si tout se passe bien au d\u00e9marrage et que les deux partitions chiffr\u00e9es sont bien mont\u00e9es, on peut retirer les mots de passes d&rsquo;installation. Ce n&rsquo;est pas une obligation. lancer (2 lignes) :<br \/>\n<code># cryptsetup luksKillSlot \/dev\/sdb3 0 --keyfile \/boot.pwd<br \/>\n<code># cryptsetup luksKillSlot \/dev\/sda2 0 --keyfile \/boot\/boot.pwd<\/code><br \/>\n<\/code><\/p>\n<p style=\"text-align: justify;\">Pour v\u00e9rifier le nombre de cl\u00e9s, utiliser la commande :<br \/>\n<code># cryptsetup luksDump \/dev\/sdb3<br \/>\n<\/code>Le <code>Key Slot 0<\/code> doit maintenant \u00eatre marqu\u00e9 d\u00e9sactiv\u00e9.<\/p>\n<h3 style=\"text-align: justify;\">8\/ D\u00e9placement du <em>bootloader<\/em><\/h3>\n<p style=\"text-align: justify;\">Par d\u00e9faut, le <em>bootloader<\/em> devrait d\u00e9j\u00e0 \u00eatre sur la cl\u00e9 USB contenant la partition <code>\/boot<\/code>. Si ce n&rsquo;est pas le cas, il faut le d\u00e9placer puis l&rsquo;effacer de l&rsquo;ancienne cl\u00e9 (3 lignes) :<br \/>\n<code># grub-install \/dev\/sda<br \/>\n# update-grub<br \/>\n# dd if=\/dev\/zero of=\/dev\/sdb bs=446 count=1<\/code><br \/>\nCette derni\u00e8re ligne efface le chargeur de la deuxi\u00e8me cl\u00e9 USB.<\/p>\n<p style=\"text-align: justify;\">Le bon positionnement de <em>GRUB<\/em> peut \u00eatre v\u00e9rifi\u00e9 :<br \/>\n<code># debconf-show grub-pc<\/code><\/p>\n<h2 style=\"text-align: justify;\">Am\u00e9liorations<\/h2>\n<p style=\"text-align: justify;\">Si on ne s\u00e9pare pas \/home mais plut\u00f4t \/data par exemple sur la deuxi\u00e8me partition chiffr\u00e9e, l&rsquo;environnement utilisateur peut ainsi \u00eatre verrouill\u00e9 au m\u00eame titre que le syst\u00e8me d&rsquo;exploitation.<\/p>\n<p style=\"text-align: justify;\">On peut essayer de demander un mot de passe en plus au d\u00e9marrage. Plut\u00f4t que de simplement laisser le mot de passe de d\u00e9verrouillage de la racine, il est pr\u00e9f\u00e9rable d&rsquo;essayer de passer par une partition interm\u00e9diaire afin de conserver aussi le mot de passe dans un fichier. Juste garder \u00e0 l&rsquo;esprit qu&rsquo;un mot de passe peut se voler avec un simple <em>keylogger<\/em> ou \u00e0 distance si la machine n&rsquo;est pas <em>TEMPEST<\/em>.<\/p>\n<p style=\"text-align: justify;\">Si l&rsquo;on fait abstraction de l&rsquo;utilisation d&rsquo;une cl\u00e9 USB avec protection physique en lecture seule, il est possible de ne pas s\u00e9parer la partition <code>\/home<\/code> de la partition racine <code>\/<\/code>. On ne peut plus profiter de la protection en lecture seule du syst\u00e8me. Ce qu&rsquo;il reste sur la cl\u00e9 USB contenant la partition <code>\/boot<\/code> est minime. C&rsquo;est \u00e0 dire qu&rsquo;il ne reste que la partition <code>\/boot<\/code> avec son noyau Linux et la cl\u00e9 de d\u00e9chiffrement de la partition racine sur l&rsquo;autre cl\u00e9 USB.<br \/>\nOn peut m\u00eame imaginer dans ce cas laisser le <em>bootloader<\/em> et le noyau Linux sur la m\u00eame cl\u00e9 que la partition racine et de ne laisser que le fichier contenant le mot de passe de la partition racine seul sur une cl\u00e9 USB.<br \/>\nCela am\u00e8ne une r\u00e9flexion int\u00e9ressante, il n&rsquo;est nul besoin de garder avec soi la cl\u00e9 USB des donn\u00e9es. Le fichier avec le mot de passe du syst\u00e8me est le plus important et &lsquo;<em>cache<\/em>&lsquo; le syst\u00e8me et les donn\u00e9es. On a instinctivement tendance \u00e0 vouloir garder les donn\u00e9es avec soi par d\u00e9faut, mais sans la cl\u00e9 USB contenant le syst\u00e8me, c&rsquo;est compl\u00e8tement inutilisable. Autant finalement ne transporter que la cl\u00e9, garder le reste est superflu et sentimental&#8230;<\/p>\n<p style=\"text-align: justify;\">On peut, suite \u00e0 la r\u00e9flexion pr\u00e9c\u00e9dente, par exemple avoir trois cl\u00e9s USB et non deux. Une est en lecture seule pour le syst\u00e8me, le <em>bootloader<\/em> et le noyau. Une autre contient la partition chiffr\u00e9e des donn\u00e9es. Et la derni\u00e8re plus classique contient le fichier de mot de passe de d\u00e9verrouillage du syst\u00e8me. Le sch\u00e9ma de principe devient plus compliqu\u00e9 \u00e0 repr\u00e9senter.<\/p>\n<p style=\"text-align: justify;\">Nous pourrions mettre le <em>bootloader<\/em> (grub), qui est g\u00e9n\u00e9ralement associ\u00e9 au disque avec la partition <code>\/boot<\/code>, sur la m\u00eame cl\u00e9 que le syst\u00e8me d&rsquo;exploitation. Il profiterais ainsi de la protection physique en lecture seule.<br \/>\nCependant, on est plus dans un probl\u00e8me d&rsquo;usage qu&rsquo;un probl\u00e8me technique. Qu&rsquo;est ce qui vous garanti que la cl\u00e9 ne va pas \u00eatre d\u00e9verrouill\u00e9e par un intrus, le noyau Linux modifi\u00e9 par une version corrompue, et re-verrouill\u00e9e. En effet, le noyau Linux est stock\u00e9 en clair dans la partition <code>\/boot<\/code>. Il n&rsquo;y a aucun moyen facile de v\u00e9rifier l&rsquo;int\u00e9grit\u00e9 du noyau ou du <em>bootloader<\/em> avant le chargement de ceux-ci. On peut penser \u00e0 <em>TPM<\/em> et <em>SecureBoot<\/em> mais il faut que le <em>bootloader<\/em> soit reconnu sur toutes les machines qui sont susceptibles de devoir d\u00e9marrer avec celui-ci. Graver le tout sur un CD-ROM ne prot\u00e8ge pas plus des modifications parce que celui-ci peut \u00eatre re-grav\u00e9 modifi\u00e9. Une solution serait de v\u00e9rifier l&#8217;empreinte du <em>bootloader<\/em> ainsi que du noyau, mais il faut le faire sur une machine qui est potentiellement corrompue.<br \/>\nLa solution retenue est simplement organisationnelle, laisser le <em>bootloader<\/em> et le noyau sur la cl\u00e9 avec les donn\u00e9es et non avec le syst\u00e8me. Et garder la cl\u00e9 USB des donn\u00e9es avec soi en permanence. La cl\u00e9 du syst\u00e8me peut rester sans risque \u00e0 c\u00f4t\u00e9 de l&rsquo;ordinateur sur lequel elle sera utilis\u00e9e. Si la cl\u00e9 des donn\u00e9es est perdu ou vol\u00e9e, elle sera inutilisable. Si elle &lsquo;<em>r\u00e9appara\u00eet<\/em>&lsquo; apr\u00e8s une disparition non \u00e9lucid\u00e9e, elle ne doit plus \u00eatre utilis\u00e9e.<\/p>\n<p style=\"text-align: justify;\">On peut am\u00e9liorer la furtivit\u00e9 de l&rsquo;ensemble. Pr\u00e9senter une partition &lsquo;<em>normale<\/em>&lsquo; pour <em>M$ Windows<\/em> n&rsquo;est qu&rsquo;une premi\u00e8re \u00e9tape. Mais elle ne trompera pas un <em>Linux<\/em> qui demandera de saisir la cl\u00e9 de d\u00e9chiffrement. Si vous souhaitez vous rendre dans un pays totalitaire comme les USA, la Chine ou la Russie, il faudra faire mieux que \u00e7a.<br \/>\nIl est possible d&rsquo;am\u00e9liorer un peu \u00e7a en utilisant sur la partition des donn\u00e9es la m\u00e9thode <em>plain dm-crypt<\/em> \u00e0 la place de la m\u00e9thode <em>LUKS<\/em> qui est rep\u00e9rable \u00e0 son ent\u00eate. Mais cela laisse la trace de la partition inconnue avec son contenu \u00e0 tr\u00e8s forte entropie.<br \/>\nIl est aussi possible de bidouiller les partitions tout en trouvant un moyen de rendre la partition chiffr\u00e9e accessible au moment de d\u00e9marrer sur la cl\u00e9. on entre en plein dans la st\u00e9ganographie&#8230;<\/p>\n<h2 style=\"text-align: justify;\">R\u00e9f\u00e9rences<\/h2>\n<p style=\"text-align: justify;\">Liens :<br \/>\n&#8211; <a title=\"http:\/\/code.google.com\/p\/cryptsetup\/wiki\/FrequentlyAskedQuestions\" href=\"http:\/\/code.google.com\/p\/cryptsetup\/wiki\/FrequentlyAskedQuestions\" target=\"_blank\">http:\/\/code.google.com\/p\/cryptsetup\/wiki\/FrequentlyAskedQuestions<\/a><br \/>\n&#8211; <a title=\"http:\/\/www.debian.org\/\" href=\"http:\/\/www.debian.org\/\" target=\"_blank\">http:\/\/www.debian.org\/<\/a><br \/>\n&#8211; <a title=\"http:\/\/www.ubuntu.com\/\" href=\"http:\/\/www.ubuntu.com\/\" target=\"_blank\">http:\/\/www.ubuntu.com\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici une base de syst\u00e8me qui n\u00e9cessite deux cl\u00e9s USB pour pouvoir fonctionner. Si l&rsquo;une manque, le syst\u00e8me ne peut d\u00e9marrer et, plus important encore, les donn\u00e9es sont ind\u00e9chiffrables. Le sch\u00e9ma de principe : L&rsquo;exemple est r\u00e9alis\u00e9 \u00e0 partir de Debian Linux 7.0, mais \u00e7a n&rsquo;a pas de raison de ne pas fonctionner avec d&rsquo;autres &hellip; <a href=\"http:\/\/stephane.weblog.starend.org\/?p=1404\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Syst\u00e8me bootable chiffr\u00e9 sur deux cl\u00e9s USB interd\u00e9pendantes<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[42,43,48,10,11,26],"tags":[101,119,135,154,167,225,227,244,320,376,402],"_links":{"self":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/posts\/1404"}],"collection":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1404"}],"version-history":[{"count":0,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/posts\/1404\/revisions"}],"wp:attachment":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1404"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1404"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}