Ellendhel's Blog

CryptographieIntroduction to Cryptography

I would like to thanks the people from NovaLUG (especially John and Peter) for organizing this month's meeting since I was invited as a speaker for an "Introduction to cryptography".

Thanks also to Ridgeline International for providing the space (and the last minute help for the setup) and to Suzie from SG2 Recruiting for the coffee and the snacks.

The presentation slides are available here, in the original LibreOffice format or in PDF format. The presentation was video-recorded and it is available on YouTube.

As mentioned during the meeting, here is a list of additional resources that could be of interest for some of you who want to learn more about cryptography.

Cryptography History

The Codebreakers by David Kahn is probably the best reference on the topic. All the details are just 1,000 pages away...

The Code Book by Simon Singh is an easier first step, and it covers all the most important subjects.

Secret Messages by W. S. Butler and L. D. Keeney is not really about cryptography history, it's more about techniques that have been used to conceal messages. A very easy read.

Mathematics and Cryptography

The Mathematics of Secrets by Joshua Holden presents all the various mathematical problems that are applied in cryptography, from historical ciphers to the new ideas in quantum cryptography and including of course chapters about public-key cryptography.

Practical Cryptography in Python by Seth Nielson and Christopher Monson is at the border between this category and the next. It includes a clear mathematical approach along with some Python code. That is probably the book that I would recommend first in this list.

The New York Times Book of Mathematics includes a chapter about cryptography. Do not expect any formula in there, as the articles are coming from the eponymous newspaper. Nevertheless, you will find information about breakthroughs in prime number factoring. Many articles are also reporting the legal issues between the academic community and the U.S. government.

Technical Books

Linux Hardening in Hostile Networks by Kyle Rankin is a good starting point if you are looking for using encryption (and other security measures) with your mail server, web server or other piece of Linux software.

PGP & GPG by M. W. Lucas is listed as "obsolete" by the author (and he's probably right about that). But you may want to get a copy to understand some of the principles (there is even an older O'Reilly book on that topic).

Videos

Information Security—Before & After Public-Key Cryptography is a video recording of Whitfield Diffie (one of the inventor of the public-key crypto-system) that I strongly recommend.

F5 DevCentral is the YouTube channel from F5 Networks, Inc. and there are doing a very good job at publishing short videos about various networking and security subjects, including few on cryptography, TLS/SSL and DNSSEC in particular (you may need to browse a little to find those).

The Spy Factory from PBS and Inside the NSA: America's Cyber Secrets from the National Geographic are two DVDs dedicated to the National Security Agency.

The Travelling Salesman is a good and original fiction movie about cryptography, exploring the subject of "crypto has been broken, and the government wants to keep the results".

Places

Because it is Washington DC, some of the organizations related to cryptography are just a few miles nearby. You will probably not get a chance to see the Kryptos sculpture on the CIA campus, but the Antipodes one, a pretty similar sculpture from the same artist is on the National Mall near the entrance of the Hirshhorn Museum.

The International Spy Museum is another place to visit downtown; I didn't get a chance to visit it at its new location (near L'Enfant Plaza) but the exhibits should probably be as good as the ones that were presented before.

And of course, the National Cryptologic Museum is the place that you want to go to learn about cryptography (mostly on the historical side). I strongly recommended a guided tour. And it's free.

There is more to list and to review about cryptography, I didn't even mention Bruce Schneier's books and blog. Some security vendors also have blogs with interesting content (Sophos has an old and a recent articles that you may want to have a look at).

Last but not the least; in the presentation slides 10 and 11 are about the "ANSSI Challenge". Since this is related to a French security agency, there is not resource that I know of about it in English. You should still be able to use Google Translate with the original article, this should at least give you some more details and context.

publié le 14 janvier 2020

lien direct

LinuxLe mystère de la clé SSH refusée

Parmi les recommandations les plus courantes lors de l'utilisation du protocole SSH, l'utilisation de clés est probablement la plus fréquente.

Utiliser une paire de clés (publique et privée) en lieu et place d'un mot de passe améliore la sécurité lors de l'authentification et permet d'automatiser les connections et transferts de fichiers vers une machine distante.

Et donc par défaut, je génère une paire de clés pour tout nouveau système auquel je dois me connecter régulièrement.

Le problème auquel je me suis confronté est le suivant : ayant accès à un nouveau serveur, je crée les clés nécessaires, effectue l'installation initiale et teste le tout. Aucun souci.

Puis quelque jours suivants, ayant besoin de me connecter à un de mes serveurs habituels (et non pas le nouveau), ma connexion SSH échoue avec le message "Too many authentication failures".

Mon premier réflexe est de vérifier que mon fichier de configuration SSH est correct (ce qui est le cas) puis de tenter la même opération en augmentant la verbosité des messages d'erreurs. Pas de solution, le message d'erreur demeure identique.

Ayant accès direct au serveur en question je vérifie les fichiers journaux qui confirment que trois tentatives d'authentification ont effectivement échoué, ce qui est étrange, car je n'effectue qu'une connexion à chaque fois.

Je tente alors d'effectuer une connexion SSH "pure" en utilisant un mot de passe et non pas de clé. Succès. Puis une autre connexion en ne chargeant uniquement la clé destinée à ce serveur avec ssh-agent. Succès à nouveau.

Il semble donc que le problème soit lié à l'utilisation de la clé avec ssh-agent ; non pas que la clé ne soit pas chargée correctement, mais qu'une "mauvaise" clé soit utilisée à la place. En continuant sur cette piste je réalise qu'à partir du moment où ma clé SSH est listée en quatrième position ou plus avec ssh-agent, l'accès est refusé. Ce qui correspond aux erreurs vues précédemment dans les fichiers journaux.

En vérifiant le fichier de configuration d'OpenSSH sur le serveur cible, je vois qu'une des directives est "MaxAuthTries" avec une valeur de "3". La page de manuel est assez claire, indiquant que cette valeur est le nombre d'essais maximum autorisés, la valeur par défaut étant "6".

Et c'est là que je comprend où se trouve la source du problème : ssh-agent charge un certain nombre de clés lors de l'ouverture de ma session, clés chargées dans l'ordre alphabétique des noms de fichiers.

Lors d'une nouvelle connexion ssh-agent envoie au serveur toutes les clés listées dans l'ordre où elles ont été chargées (ce que l'on peut vérifier avec la commande ssh-add -l) jusqu'à ce qu'une des conditions suivantes soit remplie : 1) la clé appropriée est disponible et la session SSH est établie ou 2) le serveur ayant refusé plus de "mauvaises clés" que la valeur de la directive "MaxAuthTries" le message d'erreur "Too many authentication failures" est retourné.

La solution consiste donc simplement à augmenter la valeur de la directive "MaxAuthTries" sur le serveur, de manière à ce que la clé appropriée puisse être chargée et utilisée automatiquement.

Au final quelques recommandations pour l'utilisation de clés SSH :

- Ne pas charger toutes les clés existantes avec ssh-agent, limitez-vous au nécessaire, quitte à ajouter de nouvelles clés en cours de session.

Je n'ai pas effectué de test avec PuTTY et Pageant mais il est probable que la situation soit identique.

- Ne pas définir de valeur trop faible pour la directive "MaxAuthTries" ; elle n'est pas utilisée uniquement pour l'authentification par mot de passe, mais pour toute forme d’authentification.

publié le 21 août 2019

lien direct

LinuxGestion de comptes utilisateurs sous Linux

Parmi les tâches assignées à un administrateur système se trouve la gestion des comptes utilisateurs. C'est à dire permettre à plusieurs personnes d'accéder à des ressources, de manière sécurisée, en tenant compte des besoins de chacun et si possible, simple à mettre en œuvre.

Lorsqu'il s'agit d'une ou deux personnes à ajouter, de manière ponctuelle, la création d'un compte sur le système peut se faire manuellement en utilisant adduser (qui fonctionne de manière interactive) ou useradd (qui nécessite plusieurs paramètres). Évidemment les choses deviennent plus compliquée dès que plus de personnes sont concernées ("Two is company, three's a crowd").

adduser est une solution à exclure, useradd peut-être utile pour écrire votre propre script, qui est généralement la solution préconisée.

Une autre solution existe : la commande newusers ; cette commande est effectivement destinée à ajouter des utilisateurs en masse. Le principe est de préparer un fichier équivalent à /etc/passwd, à ce détail que le mot de passe est conservé en clair, et de l'utiliser comme argument pour cette commande. Tous les utilisateurs listés seront crées, ainsi que leur répertoires personnels.

Admettons que vous ayez une série de nouveaux utilisateurs à créer, votre fichier d'import ressemblera à ceci :

ash:o+uykC49Hw:2001:500:Ash:/home/ash:/bin/bash
ava:ct2yYGu2o*:2002:500:Ava:/home/ava:/bin/bash
bender:sF8\guswB1:2003:500:Bender:/home/bender:/bin/bash
ed-209:tko+8Cj1Kk:2004:500:ED-209:/home/ed-209:/bin/bash
glados:hn3+qep4EO:2005:500:GLaDOS:/home/glados:/bin/bash
hal:Oya4uF8sj{:2006:500:HAL:/home/hal:/bin/bash
jarvis:a%bfi2ID1t:2007:500:Jarvis:/home/jarvis:/bin/bash
joshua:udH}8Gmzq4:2008:500:Joshua:/home/joshua:/bin/bash
optimus:po8uh#M5oZ:2009:500:Optimus Prime:/home/optimus:/bin/bash
r2-d2:9@lIh3inQa:2010:500:R2-D2:/home/r2-d2:/bin/bash
t-800:z5flLDw=1z:2011:500:T-800:/home/t-800:/bin/bash
wall-e:e5q%3NMfut:2012:500:Wall-E:/home/wall-e:/bin/bash

Générer ce fichier requiert quelques étapes préliminaires :

- Définir les comptes utilisateurs. Notre exemple ne comporte pas vraiment de cas particulier, mais vous pouvez vous retrouver à à gérer des noms particulièrement longs, ou avec des caractères spéciaux (espace, apostrophe, accents, ...). Ces identifiants seront probablement aussi ceux que vous utiliserez pour le répertoire personnel de chacun, vous devez donc vous assurer qu'ils n'engendreront pas de problème au niveau du système de fichiers.

Une règle que vous pouvez choisir d'appliquer est normaliser tous les identifiants en n'acceptant que certains caractères (de a à z, minuscules uniquement, chiffres et le symbole tiret). La gestion des collisions (deux personnes ayant un identifiant potentiellement identique) doit aussi être préparée à l'avance. La lecture du chapitre 8 "Namespaces" du livre "The Practice of System and Network Administration" à ce sujet est recommandée.

- Générer des mots de passe. Vous pouvez assigner un mot de passe unique à chaque utilisateur avec l'aide de la commande mkpasswd. Vous pouvez facilement contrôler l'utilisation de chiffres, caractères spéciaux et la longueur du mot de passe.

La première chose à s'assurer est que ce fichier est proprement sécurisé (droits d'accès minimum, une seule copie de travail, ...). Vous devrez conserver au moins une copie après utilisation pour founir le mot de passe initial à chaque utilisateur, après cela le fichier pourra être supprimé.

Une fois votre fichier d'import préparé, il est fortement recommandé de le tester avant utilisation. Là encore, une commande existe pour cette tâche en particulier : pwck. Utilisez cette commande avec les options -q et -r sur votre liste pour repérer les possibles erreurs.

Si votre liste d'utilisateurs est facilement accessible en consultation (base de données, annuaire, ...) la mise en place d'une solution automatique pour ajouter de nouveaux utilisateurs peut se faire aisément.

publié le 20 juin 2016

lien direct